ArcGIS Pro 3.2 API Reference Guide
ArcGIS.Core.Geometry Namespace / SpatialReferences Class / WGS84 Property
Example

In This Topic
    WGS84 Property
    In This Topic
    Gets a WGS 84 (WKID = 4326) spatial reference object.
    Syntax
    public static SpatialReference WGS84 {get;}
    Public Shared ReadOnly Property WGS84 As SpatialReference
    Example
    Use WGS84 SpatialReference
    SpatialReference wgs84 = SpatialReferences.WGS84;
    bool isProjected = wgs84.IsProjected;     // false
    bool isGeographic = wgs84.IsGeographic;   // true
    
    SpatialReference Datum and datum properties
    // Get datum of a spatial reference
    SpatialReference srWgs84 = SpatialReferences.WGS84;
    Datum datum = srWgs84.Datum;
    // datum.Name = "D_WGS_1984"
    // datum.Wkid = 6326
    // datum.SpheroidName = "WGS_1984"
    // datum.SpheroidWkid = 7030
    // datum.SpheroidFlattening = 0.0033528106647474805
    // datum.SpheroidSemiMajorAxis = 6378137.0
    // datum.SpheroidSemiMinorAxis = 6356752.3142451793
    
    // Custom WKT
    string wyomingWkt = "PROJCS[\"Wyoming_State_Pl_NAD_1927\",GEOGCS[\"GCS_North_American_1927\",DATUM[\"D_North_American_1927_Perry\",SPHEROID[\"Clarke_1866_Chase\",6378210.0,250.0]],PRIMEM[\"Greenwich\",0.0],UNIT[\"Degree\",0.0174532925199433]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"false_easting\",500000.0],PARAMETER[\"false_northing\",0.0],PARAMETER[\"central_meridian\",-107.3333333],PARAMETER[\"scale_factor\",0.9999412],PARAMETER[\"latitude_of_origin\",40.66666667],UNIT[\"Foot_US\",0.3048006096012192]]";
    SpatialReference srFromWkt = SpatialReferenceBuilder.CreateSpatialReference(wyomingWkt);
    datum = srWgs84.Datum;
    // datum.Name = "D_North_American_1927_Perry"
    // datum.Wkid = 0
    // datum.SpheroidName = "Clarke_1866_Chase"
    // datum.SpheroidWkid = 0
    // datum.SpheroidFlattening = 0.004
    // datum.SpheroidSemiMajorAxis = 6378210.0
    // datum.SpheroidSemiMinorAxis = 6352697.16
    
    Construct a Polyline - from an enumeration of MapPoints
    // Use a builderEx convenience method or a builderEx constructor.
    // neither need to run on the MCT
    
    MapPoint startPt = MapPointBuilderEx.CreateMapPoint(1.0, 1.0);
    MapPoint endPt = MapPointBuilderEx.CreateMapPoint(2.0, 1.0);
    
    List<MapPoint> list = new List<MapPoint>() { startPt, endPt };
    
    Polyline polyline = PolylineBuilderEx.CreatePolyline(list, SpatialReferences.WGS84);
    
    // use AttributeFlags.None since we only have 2D points in the list
    PolylineBuilderEx pb = new PolylineBuilderEx(list, AttributeFlags.None);
    pb.SpatialReference = SpatialReferences.WGS84;
    Polyline polyline2 = pb.ToGeometry();
    
    // Use AttributeFlags.NoAttributes because we only have 2d points in the list
    Polyline polyline4 = PolylineBuilderEx.CreatePolyline(list, AttributeFlags.None);
    
    Import and Export Geometries to well-known Binary
    // create a polyline
    List<Coordinate2D> coords = new List<Coordinate2D>
    {
      new Coordinate2D(0, 0),
      new Coordinate2D(0, 1),
      new Coordinate2D(1, 1),
      new Coordinate2D(1, 0)
    };
    
    Polyline polyline = PolylineBuilderEx.CreatePolyline(
                coords, SpatialReferences.WGS84);
    
    WkbExportFlags wkbExportFlags = WkbExportFlags.WkbExportDefaults;
    WkbImportFlags wkbImportFlags = WkbImportFlags.WkbImportDefaults;
    
    // export and import
    byte[] buffer = GeometryEngine.Instance.ExportToWKB(wkbExportFlags, polyline);
    Geometry geometry = GeometryEngine.Instance.ImportFromWKB(
                   wkbImportFlags, buffer, SpatialReferences.WGS84);
    Polyline importPolyline = geometry as Polyline;
    
    
    // alternatively, determine the size for the buffer
    int bufferSize = GeometryEngine.Instance.GetWKBSize(wkbExportFlags, polyline);
    buffer = new byte[bufferSize];
    // export
    bufferSize = GeometryEngine.Instance.ExportToWKB(
                    wkbExportFlags, polyline, ref buffer);
    // import
    importPolyline = GeometryEngine.Instance.ImportFromWKB(
             wkbImportFlags, buffer, SpatialReferences.WGS84) as Polyline;
    
    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