AsShape (arcpy)

Summary

Converts Esri JSON or GeoJSON to ArcPy geometry objects. GeoJSON is a geospatial data interchange format for encoding geographic data structures.

Discussion

NoteNote:

AsShape does not support GeoJSON coordinate reference system objects; the spatial reference of a geometry object created from GeoJSON will be Unknown.

Syntax

AsShape (geojson_struct, {esri_json})
ParameterExplanationData Type
geojson_struct

The geojson_struct includes type and coordinates.

The following strings are included for type: Point, LineString, Polygon, MultiPoint, and MultiLineString.

Dictionary
esri_json

Sets whether the input JSON is evaluated as Esri JSON or GeoJSON. If True, the input is evaluated as Esri JSON.

(The default value is False)

Boolean
Return Value
Data TypeExplanation
Geometry

AsShape returns a geometry object (PointGeometry, Multipoint, Polyline, or Polygon) based on the input GeoJSON or esriJSON object.

import arcpy
geojson_point = {"type": "Point", "coordinates": [5.0, 5.0]}
point = arcpy.AsShape(geojson_point)

Code Sample

AsShape example 1

Create a PointGeometry object using a GeoJSON object.

import arcpy

geojson_point = {
    "type": "Point", 
    "coordinates": [5.0, 5.0]}
point = arcpy.AsShape(geojson_point)
AsShape example 2

Create a PointGeometry object using an Esri JSON object.

import arcpy

esri_json = {
    "x": -122.65,
    "y": 45.53,
    "spatialReference": {
        "wkid": 4326}}
# Set the second parameter to True to use an esri JSON
point = arcpy.AsShape(esri_json, True)
AsShape example 3

Create a Multipoint object using a GeoJSON object.

import arcpy

geojson_multipoint = {
    "type": "MultiPoint",
    "coordinates": [[5.0, 4.0], [8.0, 7.0]]}
multipoint = arcpy.AsShape(geojson_multipoint)
AsShape example 4

Create a Multipoint object using an Esri JSON object.

import arcpy

esri_json = {
    "points" : [
        [-97.06138, 32.837],
        [-97.06133, 32.836],
        [-97.06124, 32.834],
        [-97.06127, 32.832]],
    "spatialReference" : {"wkid" : 4326}}
# Set the second parameter to True to use an esri JSON
multipoint = arcpy.AsShape(esri_json, True)
AsShape example 5

Create a Polyline object using a GeoJSON object.

import arcpy

geojson_linestring = {
    "type": "LineString",
    "coordinates": [[5.0, 4.0], [8.0, 7.0]]}
polyline = arcpy.AsShape(geojson_linestring)
AsShape example 6

Create a Polyline object using an Esri JSON object.

import arcpy

esri_json = {
    "paths" : [
        [[-97.08, 32.8], [-97.05, 32.6], [-97.06, 32.7],
         [-97.07, 32.6]],
        [[-97.4, 32.5], [-97.2, 32.75]]],
    "spatialReference" : {"wkid" : 4326}}
# Set the second parameter to True to use an esri JSON
polyline = arcpy.AsShape(esri_json, True)
AsShape example 7

Create a multipart Polyline object using a GeoJSON object.

import arcpy

geojson_multilinestring = {
    "type": "MultiLineString",
    "coordinates": [
        [[5.0, 4.0], [8.0, 7.0]],
        [[4.0, 5.0], [7.0, 8.0]]]}
polyline = arcpy.AsShape(geojson_multilinestring)
AsShape example 8

Create a Polygon object using a GeoJSON object.

import arcpy

geojson_polygon = {
    "type": "Polygon",
    "coordinates": [
        [[10.0, 0.0], [20.0, 0.0], [20.0, 10.0], [10.0, 10.0],
         [10.0, 0.0]]]}
polygon = arcpy.AsShape(geojson_polygon)
AsShape example 9

Create a Polygon with a hole object using a GeoJSON object.

import arcpy

geojson_polygon = {
    "type": "Polygon",
    "coordinates": [
        [[10.0, 0.0], [20.0, 0.0], [20.0, 10.0], [10.0, 10.0],
         [10.0, 0.0]],
        [[12.0, 2.0], [18.0, 2.0], [18.0,  8.0], [12.0,  8.0],
         [12.0, 2.0]]]}
polygon = arcpy.AsShape(geojson_polygon)

Related Topics

3/3/2014