欢迎关注同名微信公众号,更多文章推送:
01问题分析
最近在做入库的时候遇到个问题,图斑不允许存在弧线段,这对城规人来说可是个大麻烦,毕竟之前画的用地图存在着大量类似道路转弯半径的弧线段:
现在的问题是要怎么将这些弧线段找出来。
02解决方法
这里不需要写python脚本或二次开发(当然其实用代码会更有效率,更准确),就单纯使用地理处理工具来解决这个问题。
核心思路:
弧线段的首末点的直线距离要小于弧线段本身的长度。
这个看图应该很容易理解:
因此我们只要计算并比较一下这2个值就行了。
方法步骤:
1、使用【在折点处分割线】工具将图斑转成段线:
2、使用【计算几何属性】算出线段的起点、终点xy坐标:
生成结果:
3、添加一个字段,并计算线段首末点的直线距离:
这里的计算代码:
math.sqrt(math.pow(!起点x! - !终点x!,2 )+math.pow(!起点y! -!终点y!,2 ) )
字段名不一样的话,注意把几个字段参数替换掉。
4、比较直线距离和线段长度的大小,并添加一个文本字段作标记:
结果框代码,还是要注意字段名不一样的话,要替换掉:
ss(!直线距离!,!Shape_Length!)
代码块中的代码:
def ss(a,b):
if a==b:
return ""
else:
return "弧线段"
5、筛选出标记了【弧线段】的线段:
至此,整个工作流程就结束了,查看一下筛选出来的弧线段:
完美。
03模型工具
以上流程已经整理成模型构建器,可以当作独立的工具来使用:
需要的小伙伴可以自行下载:
https://pan.baidu.com/s/10c__mpeCt1WTaXrZZAQn3g?pwd=ubz3
04弧线段的处理方法
以上是查找弧线段的方法。
这里再稍提一下处理方法。
1、可以使用【增密】工具将弧线段转为折线段,【增密方法】选择【偏移】。