接上文 获取高程数据并生成等高线 ,由上文所述方法获取了如下图的等高线。图中高亮的线在属性表中为同一行,可见这条线包含着不连续的几段。故需要进一步处理。
利用Arcengine + C#,根据以下代码可以将这些不连续的线段分割开。
public List<IPolyline> line = new List<IPolyline>();
IFeature pfeature1 = null;
//pCursor2指向线图层的属性表
while ((pfeature1 = pCursor2.NextFeature()) != null)
{
IGeometryCollection geo = pfeature1.Shape as IGeometryCollection; //获取属性表中某一行的数据,存为GeometryCollection
for (int i = 0; i < geo.GeometryCount; i++)
{
IPath path = geo.get_Geometry(i) as IPath; // 将GeometryCollection 转换为 path,然后path转换为 Polyline
IPolyline geoline = new PolylineClass ();
geoline = path as IPolyline;
IGeometryCollection pPolyline = new PolylineClass();
pPolyline.AddGeometry(path);
geoline = pPolyline as IPolyline;
ne.Add(geoline); //将Polyline加入列表
}
}
处理之后结果如下,可见线段已经被分开。