思路是找到起终点坐标,判断两个点坐标值相等,但是不知道具体的实现算法和代码。
IFeatureLayer pFeatureLayer;
IFeatureClass pFeaterClass = pFeatureLayer.FeatureClass; string where = ""; IQueryFilter filter = new QueryFilterClass(); filter.WhereClause = where; IFeatureCursor pFeatcursor = pFeaterClass.Search(filter, false); IFeature pFeature = pFeatcursor.NextFeature(); while (pFeature!= null) { pFeature = pFeatcursor.NextFeature(); } }
能否帮到你?
获得点集的方法,结合你的思路处理一下就可以了
private List GetPointCollection(string path)
{
try
{
List pointCollList = new List();
int iindx = path.LastIndexOf("\");
string suffixRasterName = (path.Substring(iindx + 1));//线的的名称
string maskPath = path.Remove(iindx);//线的路径
//创建工作空间
IWorkspaceFactory workspaceFactory = new ShapefileWorkspaceFactory();
IFeatureWorkspace featureWorkspace = (IFeatureWorkspace)workspaceFactory.OpenFromFile(maskPath, 0);
//得到用户所选shp文件中的featureClass
IFeatureClass featureClass = featureWorkspace.OpenFeatureClass(System.IO.Path.GetFileNameWithoutExtension(suffixRasterName));
//得到feature
IFeatureCursor featureCursor = featureClass.Search(null, false);
IFeature feature = featureCursor.NextFeature();
while (feature != null)
{
if (featureClass.ShapeType == esriGeometryType.esriGeometryPolyline)
{
IPolyline polyline = (IPolyline)feature.Shape;
//得到line的点集合
IPointCollection PointCol = polyline as IPointCollection;
for (int i = 0; i < PointCol.PointCount; i++)
{
pointCollList.Add(PointCol.get_Point(i));
}
}
feature = featureCursor.NextFeature();
}
return pointCollList;
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
return null;
}
}