ArcGIS Pro 2.7 API Reference Guide
ExportToEsriShape(EsriShapeExportFlags,Geometry) Method
Example 

ArcGIS.Core.Geometry Namespace > GeometryEngine Class > ExportToEsriShape Method : ExportToEsriShape(EsriShapeExportFlags,Geometry) Method
A combination of EsriShapeExportFlags which determines how the geometry is exported. Uses esriShapeExportNewArcFormat for circular and elliptic arcs.
The geometry to write to the buffer.
Writes an Esri shapefile formatted version of the input geometry to a buffer.
Syntax
Public Overloads Function ExportToEsriShape( _
   ByVal exportFlags As EsriShapeExportFlags, _
   ByVal geometry As Geometry _
) As Byte()

Parameters

exportFlags
A combination of EsriShapeExportFlags which determines how the geometry is exported. Uses esriShapeExportNewArcFormat for circular and elliptic arcs.
geometry
The geometry to write to the buffer.

Return Value

An Esri shapefile formatted buffer.
Exceptions
ExceptionDescription
Geometry is null or empty.
The method is not implemented for GeometryBag.
Example
// create an envelope
List<MapPoint> coordsZM = new List<MapPoint>
{
  MapPointBuilder.CreateMapPoint(1001, 1002, 1003, 1004),
  MapPointBuilder.CreateMapPoint(2001, 2002, Double.NaN, 2004),
  MapPointBuilder.CreateMapPoint(3001, -3002, 3003, 3004),
  MapPointBuilder.CreateMapPoint(1001, -4002, 4003, 4004)
};

Envelope envelope = EnvelopeBuilder.CreateEnvelope(coordsZM[0], coordsZM[2], SpatialReferences.WGS84);

// export and import
EsriShapeExportFlags exportFlags = EsriShapeExportFlags.esriShapeExportDefaults;
EsriShapeImportFlags importFlags = EsriShapeImportFlags.esriShapeImportDefaults;
byte[] buffer = GeometryEngine.Instance.ExportToEsriShape(exportFlags, envelope);
Polygon importedPolygon = GeometryEngine.Instance.ImportFromEsriShape(importFlags, buffer, envelope.SpatialReference) as Polygon;
Envelope importedEnvelope = importedPolygon.Extent;

// export without z,m
buffer = GeometryEngine.Instance.ExportToEsriShape(EsriShapeExportFlags.esriShapeExportStripZs | EsriShapeExportFlags.esriShapeExportStripMs, envelope);
importedPolygon = GeometryEngine.Instance.ImportFromEsriShape(importFlags, buffer, SpatialReferences.WGS84) as Polygon;
importedEnvelope = importedPolygon.Extent;

bool hasZ = importedEnvelope.HasZ;      // hasZ = false
bool hasM = importedEnvelope.HasM;      // hasM = false

// export with shapeSize
int bufferSize = GeometryEngine.Instance.GetEsriShapeSize(exportFlags, envelope);
buffer = new byte[bufferSize];

bufferSize = GeometryEngine.Instance.ExportToEsriShape(exportFlags, envelope, ref buffer);
importedPolygon = GeometryEngine.Instance.ImportFromEsriShape(importFlags, buffer, envelope.SpatialReference) as Polygon;
importedEnvelope = importedPolygon.Extent;


// or use the envelope and envelopeBuilder classes
buffer = envelope.ToEsriShape();
// buffer represents a polygon as there is not an envelope Esri shape buffer
// EnvelopeBuilder.FromEsriShape takes a polygon Esri shape buffer and returns the extent of the polygon.
importedEnvelope = EnvelopeBuilder.FromEsriShape(buffer);
Requirements

Target Platforms: Windows 10, Windows 8.1

See Also

Reference

GeometryEngine Class
GeometryEngine Members
Overload List