ArcGIS Pro 3.4 API Reference Guide
ArcGIS.Core.Geometry Namespace / IGeometryEngine Interface / ImportFromEsriShape Method
A combination of EsriShapeImportFlags determines how the geometry is imported.
The Esri shapefile formatted buffer.
The spatial reference of the output geometry.
Example Version

ImportFromEsriShape Method (IGeometryEngine)
Creates a geometry based on the contents of the input Esri shapefile formatted buffer.
Syntax

Parameters

importFlags
A combination of EsriShapeImportFlags determines how the geometry is imported.
buffer
The Esri shapefile formatted buffer.
spatialReference
The spatial reference of the output geometry.

Return Value

A Geometry that corresponds to the formatted 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