ArcEngine获取曲线上任意两点间的距离『转』
时间: 2024-03-09 12:45:29 浏览: 26
在ArcEngine中,可以通过以下步骤获取曲线上任意两点间的距离:
1. 获取曲线的几何属性,例如长度和端点坐标等。
```
IPolyline polyline = ... // 获取曲线对象
IGeometry geometry = polyline as IGeometry;
double length = geometry.Length; // 曲线长度
IPoint fromPoint = polyline.FromPoint; // 起点坐标
IPoint toPoint = polyline.ToPoint; // 终点坐标
```
2. 获取曲线上的点集合,可以通过调用 `IPointCollection` 接口的 `QueryPoint` 方法来获取。通过设置距离和方向参数,可以获取距离指定点一定距离处的点,从而实现获取任意两点间的距离。
```
IPointCollection pointCollection = polyline as IPointCollection;
IPoint startPoint = ... // 起点
IPoint endPoint = ... // 终点
double startDistance = polyline.FromPoint.Distance(startPoint); // 起点距离曲线起点的距离
double endDistance = polyline.FromPoint.Distance(endPoint); // 终点距离曲线起点的距离
int fromIndex = pointCollection.QueryPoint(startDistance, esriSegmentExtension.esriNoExtension);
int toIndex = pointCollection.QueryPoint(endDistance, esriSegmentExtension.esriNoExtension);
IPoint fromPointOnLine = pointCollection.get_Point(fromIndex); // 距起点最近的曲线点
IPoint toPointOnLine = pointCollection.get_Point(toIndex); // 距终点最近的曲线点
double distance = fromPointOnLine.Distance(toPointOnLine); // 任意两点间距离
```