ArcGIS Pro 3.3 API Reference Guide
ArcGIS.Core.Geometry Namespace / IGeometryEngine Interface / ExportToEsriShape Method / ExportToEsriShape(EsriShapeExportFlags,Geometry,Byte[]) 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.
The buffer to which the geometry will be written. The buffer must be large enough to hold the Esri shapefile formatted version of the input geometry.
Example

In This Topic
    ExportToEsriShape(EsriShapeExportFlags,Geometry,Byte[]) Method
    In This Topic
    Writes an Esri shapefile formatted version of the input geometry to the specified buffer.
    Syntax
    Overloads Function ExportToEsriShape( _
       ByVal exportFlags As EsriShapeExportFlags, _
       ByVal geometry As Geometry, _
       ByRef buffer() As Byte _
    ) As Integer

    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.
    buffer
    The buffer to which the geometry will be written. The buffer must be large enough to hold the Esri shapefile formatted version of the input geometry.

    Return Value

    The exact number of bytes written to the buffer.
    Exceptions
    ExceptionDescription
    Geometry is null or empty.
    The method is not implemented for GeometryBag.
    Example
    Import and Export Geometries to EsriShape
    // create an envelope
    List<MapPoint> coordsZM = new List<MapPoint>
    {
      MapPointBuilderEx.CreateMapPoint(1001, 1002, 1003, 1004),
      MapPointBuilderEx.CreateMapPoint(2001, 2002, Double.NaN, 2004),
      MapPointBuilderEx.CreateMapPoint(3001, -3002, 3003, 3004),
      MapPointBuilderEx.CreateMapPoint(1001, -4002, 4003, 4004)
    };
    
    Envelope envelope = EnvelopeBuilderEx.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 envelopeBuilderEx classes
    buffer = envelope.ToEsriShape();
    // buffer represents a polygon as there is not an envelope Esri shape buffer
    // EnvelopeBuilderEx.FromEsriShape takes a polygon Esri shape buffer and returns the extent of the polygon.
    importedEnvelope = EnvelopeBuilderEx.FromEsriShape(buffer);
    
    Requirements

    Target Platforms: Windows 11, Windows 10

    ArcGIS Pro version: 3 or higher.
    See Also