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

In This Topic
    ImportFromEsriShape Method (IGeometryEngine)
    In This Topic
    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