ArcGIS Pro 2.7 API Reference Guide
GeodesicBuffer(IEnumerable<Geometry>,Double) Method
Example 

ArcGIS.Core.Geometry Namespace > GeometryEngine Class > GeodesicBuffer Method : GeodesicBuffer(IEnumerable<Geometry>,Double) Method
Specifies the input geometries.
The distance (in meters) to buffer the geometries.
Creates buffers at the specified distance around the given geometries. Will union the results of all buffers.
Syntax
Public Overloads Function GeodesicBuffer( _
   ByVal geometries As IEnumerable(Of Geometry), _
   ByVal distance As Double _
) As Geometry

Parameters

geometries
Specifies the input geometries.
distance
The distance (in meters) to buffer the geometries.

Return Value

The polygon that represents the buffered area.
Exceptions
ExceptionDescription
Geometries is null or empty
The method is not implemented for GeometryBag.
Geometries have no spatial reference.
The first non-null spatial reference is an image coordinate system.
The buffer distance must be a valid floating point number.
Remarks
At least one geometry must have a spatial reference that is not null or Unknown. The spatial reference of the output geometries is the first valid spatial reference found in the list of geometries. All other geometries are projected to this spatial reference, if necessary. The returned polygon is the union of all the buffered geometries.

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

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

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)
}

// 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;
Requirements

Target Platforms: Windows 10, Windows 8.1

See Also

Reference

GeometryEngine Class
GeometryEngine Members
Overload List