ArcGIS Pro 2.9 API Reference Guide
GeodesicBuffer(Geometry,Double,LinearUnit) Method
Example 

ArcGIS.Core.Geometry Namespace > GeometryEngine Class > GeodesicBuffer Method : GeodesicBuffer(Geometry,Double,LinearUnit) Method
The input geometry.
The distance to buffer the geometry.
The unit of the buffer distance. If null, then the buffer distance is in meters.
Creates a buffer polygon at the specified geodesic distance around the given geometry.
Syntax
Public Overloads Function GeodesicBuffer( _
   ByVal geometry As Geometry, _
   ByVal distance As Double, _
   ByVal distanceUnit As LinearUnit _
) As Geometry

Parameters

geometry
The input geometry.
distance
The distance to buffer the geometry.
distanceUnit
The unit of the buffer distance. If null, then the buffer distance is in meters.

Return Value

A geometry representing the buffered area.
Exceptions
ExceptionDescription
Geometry is null or empty.
The method is not implemented for GeometryBag.
Geometry has no spatial reference.
The buffer distance must be a valid floating point number.
Spatial reference of geometryis an image coordinate system.
Remarks
Geodesic distance is the shortest distance between two points on the surface of the Earth.

If the buffer distance is zero and the input geometry is a polygon or an envelope, then a polygon created from the input geometry is returned.

If the distance is less than or equal to zero and the input geometry is not a polygon or an envelope, then an empty polygon is returned.

Example
// buffer a point
MapPoint pt = MapPointBuilder.CreateMapPoint(1.0, 1.0, SpatialReferences.WGS84);
Polygon outPolygon = GeometryEngine.Instance.GeodesicBuffer(pt, 5) as Polygon;

double delta = SpatialReferences.WGS84.XYTolerance * 2 * Math.Sqrt(2);
ReadOnlyPointCollection points = outPolygon.Points;
foreach (MapPoint p in points)
{
  double d = GeometryEngine.Instance.GeodesicDistance(pt, p);
  // d = 5 (+- delta)
}

// specify a unit for the distance
outPolygon = GeometryEngine.Instance.GeodesicBuffer(pt, 5000, LinearUnit.Millimeters) as Polygon;

// buffer of 0 distance produces an empty geometry
Geometry g = GeometryEngine.Instance.GeodesicBuffer(pt, 0);
// g.IsEmpty = true

// buffer many points
List<MapPoint> list = new List<MapPoint>();
list.Add(MapPointBuilder.CreateMapPoint(1.0, 1.0, SpatialReferences.WGS84));
list.Add(MapPointBuilder.CreateMapPoint(10.0, 20.0));
list.Add(MapPointBuilder.CreateMapPoint(40.0, 40.0));
list.Add(MapPointBuilder.CreateMapPoint(60.0, 60.0));

outPolygon = GeometryEngine.Instance.GeodesicBuffer(list, 10000) as Polygon;
// outPolygon.PartCount = 4

// buffer different geometry types
List<Coordinate2D> coords = new List<Coordinate2D>()
{
  new Coordinate2D(1, 2), new Coordinate2D(10, 20), new Coordinate2D(20, 30),
  new Coordinate2D(50, 60), new Coordinate2D(70, 80), new Coordinate2D(80, 40),
  new Coordinate2D(90, 10), new Coordinate2D(110, 15), new Coordinate2D(120, 30),
  new Coordinate2D(10, 40), new Coordinate2D(-10, 40), new Coordinate2D(-10, 50)
};

List<Geometry> manyGeometries = new List<Geometry>
{
  MapPointBuilder.CreateMapPoint(1.0, 1.0, SpatialReferences.WGS84),
  PolylineBuilder.CreatePolyline(new List<Coordinate2D>(){coords[0], coords[1], coords[2]}, SpatialReferences.WGS84),
  PolylineBuilder.CreatePolyline(new List<Coordinate2D>(){coords[3], coords[4], coords[5]}),
  PolygonBuilder.CreatePolygon(new List<Coordinate2D>(){coords[9], coords[10], coords[11]})
};

outPolygon = GeometryEngine.Instance.GeodesicBuffer(manyGeometries, 20000) as Polygon;

// specify unit types
outPolygon = GeometryEngine.Instance.GeodesicBuffer(manyGeometries, 20, LinearUnit.Miles) as Polygon;

Requirements

Target Platforms: Windows 11, Windows 10, Windows 8.1

See Also

Reference

GeometryEngine Class
GeometryEngine Members
Overload List