ArcGIS Pro 3.7 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 Overloads Overrides NotOverridable Function ToEsriShape() As Byte()
    public override byte[] ToEsriShape()

    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 Home, Pro, Enterprise (64 bit)

    ArcGIS Pro version: 3.0 or higher.
    See Also