ArcGIS Pro 3.4 API Reference Guide
ArcGIS.Core.Geometry Namespace / Envelope Class / ToEsriShape Method / ToEsriShape() Method
Example

In This Topic
    ToEsriShape() Method
    In This Topic
    Converts this envelope into an Esri shape formatted binary byte buffer. Note that the returned buffer will represent a polygon as there is not an Esri shape buffer for envelope geometry type.
    Syntax
    public override byte[] ToEsriShape()
    Public Overloads Overrides NotOverridable Function ToEsriShape() As Byte()

    Return Value

    The envelope as a formatted binary byte buffer.
    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