ArcGIS Pro 2.9 API Reference Guide
ShapePreservingLength(Geometry) Method
Example 

ArcGIS.Core.Geometry Namespace > IGeometryEngine Interface > ShapePreservingLength Method : ShapePreservingLength(Geometry) Method
The input geometry. Cannot be null and its spatial reference cannot be null.
Calculates the length of the geometry on the surface of the Earth ellipsoid. This method preserves the shape of the geometry in its coordinate system.
Syntax
double ShapePreservingLength( 
   Geometry geometry
)
Overloads Function ShapePreservingLength( _
   ByVal geometry As Geometry _
) As Double

Parameters

geometry
The input geometry. Cannot be null and its spatial reference cannot be null.

Return Value

Length of the geometry in meters. If the geometry is empty, then zero is returned.
Exceptions
ExceptionDescription
Geometry is null.
The method is not implemented for GeometryBag or Multipatch.
Geometry is missing a spatial reference.
Spatial reference of geometryis an image coordinate system.
Remarks
This method preserves the shape of the geometry in its coordinate system. In other words, the length will be calculated for the geometry you see in the map. For example, if you have a polyline with only two vertices that represents the equator, the length returned will be the length of the equator.
Example
// pt
MapPoint pt = MapPointBuilder.CreateMapPoint(1.0, 3.0, SpatialReferences.WebMercator);
double len = GeometryEngine.Instance.ShapePreservingLength(pt);          // len = 0

List<MapPoint> pts = new List<MapPoint>();
pts.Add(MapPointBuilder.CreateMapPoint(1.0, 1.0, 3.0));
pts.Add(MapPointBuilder.CreateMapPoint(1.0, 3.0, 3.0));
pts.Add(MapPointBuilder.CreateMapPoint(3, 3, 3.0));
pts.Add(MapPointBuilder.CreateMapPoint(3.0, 1.0, 3.0));

// multipoint
Multipoint mPt = MultipointBuilder.CreateMultipoint(pts);
len = GeometryEngine.Instance.ShapePreservingLength(mPt);                // len = 0

// polyline
Polyline polyline = PolylineBuilder.CreatePolyline(pts, SpatialReferences.WGS84);
len = GeometryEngine.Instance.ShapePreservingLength(polyline);

// polygon
Polygon polygon = PolygonBuilder.CreatePolygon(pts, SpatialReferences.WGS84);
len = GeometryEngine.Instance.ShapePreservingLength(polygon);



polyline = PolylineBuilder.CreatePolyline(new[]
{
    MapPointBuilder.CreateMapPoint( -170, 0),
    MapPointBuilder.CreateMapPoint( 170, 0)
}, SpatialReferences.WGS84);


var length_meters = GeometryEngine.Instance.ShapePreservingLength(polyline); // , LinearUnits.Meters);
var length_miles = GeometryEngine.Instance.ShapePreservingLength(polyline, LinearUnit.Miles);

// length_meters - 37848626.869713023
// length_miles - 23518.046402579574
Requirements

Target Platforms: Windows 11, Windows 10, Windows 8.1

See Also

Reference

IGeometryEngine Interface
IGeometryEngine Members
Overload List