IFeatureConstruction.PlanarizeLinesFromCursor
IFeatureConstruction.PlanarizeLines
IFeatureEdit.Split
Proportion
很久以前照着书练过一次网络分析,可是当实际工作要用到时却怎么也想不起来了,还傻傻的以为构建网络的时候会帮你打断。。。
一、ArcMap里的打断线
我们可以通过ArcMap自带的工具完成这个任务。
1.先在编辑状态下选择你要打断的线
2.然后点选拓扑工具栏里的Planarize Lines(平面化线)按钮,输入你要的容差。
注意容差不要太小,应该根据做图时的悬挂点检查要求来设定。比如说做图时以一厘米来作为悬挂点标准,那容差就不应该小于这个数值。
3.保存编辑
关于Planarize Lines这个按钮的名字,可以参考下面这个链接。
http://en.wikipedia.org/wiki/Planar_graph
根据图论的定义,平面图就是一个只在起点和终点相交的,可以被画到平面上的图形。用AO里IRelationalOperator的标准就是只Touch不Crosses。
二、用AO里Planarize Lines的来打断线
在AO里可以用到ESRI.ArcGIS.Geodatabase下面的IFeatureConstruction.PlanarizeLinesFromCursor或IFeatureConstruction.PlanarizeLines两个方法。一般用前面那个,因为不是所有的线都是同平面。
三、用AO里Split来打断线
如果只要在特定交点打断线,就要用到IFeatureEdit.Split或IFeatureEdit2.SplitWithUpdate这两个方法。这两个方法会自动帮你复制属性到打断后的要素并且删除原先的要素。
用这两个方法需要自己解决容差的问题。另外如果碰到一个要素要多次打断,做循环的时候就要斟酌一下。这两个问题的解决下次再写。