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
模型工具
以上流程已经整理成模型构建器,可以当作独立的工具来使用:
需要的小伙伴可以后台发送私信【arc】来获取。
04
弧线段的处理方法
以上是查找弧线段的方法。
这里再稍提一下处理方法。
1、可以使用【增密】工具将弧线段转为折线段。
此办法有一个缺点,直线段也会被增密。
2、另一种方法,可以将图斑导出为SHP要素,弧线段就自动转为折线段了。
SHP要素缺点很多,但这是它难得的一个优点。
它只会处理弧线段,这一点上比【增密】工具好。
·END·