ArcGIS Pro 3.4 API Reference Guide
ArcGIS.Core.Geometry Namespace / GeometryEngine Class / QueryPointAndDistance Method / QueryPointAndDistance(Multipart,SegmentExtensionType,MapPoint,AsRatioOrLength,Double,Double,LeftOrRightSide) Method
The curve on which to find the closest point. The curve may be extended.
Describes if, how and where to extend segments.
The input point.
Determines whether the distanceAlongCurve is returned as a ratio of the curve length or as length from the start point.
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.
Describes how far the point is from the curve.
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.
Example Version

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.
Syntax

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.
Exceptions
ExceptionDescription
Either multipart or inPoint or both are null.
Example
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
Requirements

Target Platforms: Windows 11, Windows 10

ArcGIS Pro version: 3 or higher.
See Also