QueryPointAndDistance(Multipart,SegmentExtensionType,MapPoint,AsRatioOrLength,Double,Double,LeftOrRightSide) Method
Finds the point on the curve closest to inPoint, then copies that point to outPoint. Also calculates related items.
Parameters
- multipart
- The curve on which to find the closest point. The curve may be extended.
- extensionType
- Describes if, how and where to extend segments.
- inPoint
- The input point.
- asRatioOrLength
- Determines whether the distanceAlongCurve is returned as a ratio of the curve length or as length from the start point.
- distanceAlongCurve
-
Describes the distance from the start point of the multipart to the input point, either as a ratio or length.
If the input point is not on the multipart, then the nearest location on the line from the point is used.
- distanceFromCurve
- Describes how far the point is from the curve.
- whichSide
-
Describes if the point is on the left or right side of the curve.
The direction of the curve determines its left and right sides. If the point is on the curve, then LeftSide is returned.
Return Value
MapPoint representing the closest point on the curve.
QueryPointAndDistance
// Horizontal line segment
List<MapPoint> linePts = new List<MapPoint>();
linePts.Add(MapPointBuilderEx.CreateMapPoint(1.0, 1.0, SpatialReferences.WGS84));
linePts.Add(MapPointBuilderEx.CreateMapPoint(11.0, 1.0, SpatialReferences.WGS84));
Polyline polyline = PolylineBuilderEx.CreatePolyline(linePts);
bool isSimple = GeometryEngine.Instance.IsSimpleAsFeature(polyline);
// Don't extent the segment
SegmentExtensionType extension = SegmentExtensionType.NoExtension;
// A point on the line segment
MapPoint inPoint = MapPointBuilderEx.CreateMapPoint(2, 1, SpatialReferences.WGS84);
double distanceAlongCurve, distanceFromCurve;
LeftOrRightSide whichSide;
AsRatioOrLength asRatioOrLength = AsRatioOrLength.AsLength;
MapPoint outPoint = GeometryEngine.Instance.QueryPointAndDistance(polyline, extension, inPoint, asRatioOrLength, out distanceAlongCurve, out distanceFromCurve, out whichSide);
// outPoint = 2, 1
// distanceAlongCurve = 1
// distanceFromCurve = 0
// whichSide = GeometryEngine.Instance.LeftOrRightSide.LeftSide
// Extend infinitely in both directions
extension = SegmentExtensionType.ExtendTangents;
// A point on the left side
inPoint = MapPointBuilderEx.CreateMapPoint(16, 6, SpatialReferences.WGS84);
asRatioOrLength = AsRatioOrLength.AsRatio;
outPoint = GeometryEngine.Instance.QueryPointAndDistance(polyline, extension, inPoint, asRatioOrLength, out distanceAlongCurve, out distanceFromCurve, out whichSide);
// outPoint = 16, 1
// distanceAlongCurve = 1.5
// distanceFromCurve = 5
// whichSide = GeometryEngine.Instance.LeftOrRightSide.LeftSide
Target Platforms: Windows 11, Windows 10
ArcGIS Pro version: 3 or higher.