I will leave this as a muse to which I will return. I thought I would post it now so I can return to more important issues regarding standardization and geometry expression. Writing this chapter is going to be a pain...
Anyway...here goes....
Dan
When null/nothing/nadda/zilch is not that.
<SPAN class="operator token">>></SPAN><SPAN class="operator token">></SPAN> null_point <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>Point<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="operator token">>></SPAN><SPAN class="operator token">></SPAN> null_point
<SPAN class="operator token"><</SPAN>Point <SPAN class="punctuation token">(</SPAN><SPAN class="number token">0.0</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="number token">0.0</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="comment token">#, #)></SPAN>
<SPAN class="operator token">>></SPAN><SPAN class="operator token">></SPAN>
<SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>
Oh well, it has to be better elsewhere.
<SPAN class="operator token">>></SPAN><SPAN class="operator token">></SPAN> null_point<SPAN class="punctuation token">.</SPAN>__geo_interface__
Traceback <SPAN class="punctuation token">(</SPAN>most recent call last<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
File <SPAN class="string token">"<interactive input>"</SPAN><SPAN class="punctuation token">,</SPAN> line <SPAN class="number token">1</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="keyword token">in</SPAN> <SPAN class="operator token"><</SPAN>module<SPAN class="operator token">></SPAN>
AttributeError<SPAN class="punctuation token">:</SPAN> <SPAN class="string token">'Point'</SPAN> object has no attribute <SPAN class="string token">'__geo_interface__'</SPAN>
<SPAN class="operator token">>></SPAN><SPAN class="operator token">></SPAN>
<SPAN class="operator token">>></SPAN><SPAN class="operator token">></SPAN> null_geometry <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>PointGeometry<SPAN class="punctuation token">(</SPAN>null_point<SPAN class="punctuation token">)</SPAN>
<SPAN class="operator token">>></SPAN><SPAN class="operator token">></SPAN> null_geometry<SPAN class="punctuation token">.</SPAN>__geo_interface__
<SPAN class="punctuation token">{</SPAN><SPAN class="string token">'type'</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="string token">'Point'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'coordinates'</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="punctuation token">(</SPAN><SPAN class="number token">0.0</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="number token">0.0</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">}</SPAN>
<SPAN class="operator token">>></SPAN><SPAN class="operator token">></SPAN>
<SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>Nope...'errors' at worst, misrepresentation at best. I will try the reverse later.
So I began to experiment with other formats before readdressing this issue to see
whether WKT, JSON offered any alternatives. So...I foolishly thought, lets explore
some real shape before returning to this issue. The foolish journey begins
<SPAN class="operator token">>></SPAN><SPAN class="operator token">></SPAN> <SPAN class="keyword token">import</SPAN> arcpy
<SPAN class="operator token">>></SPAN><SPAN class="operator token">></SPAN> SR <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>SpatialReference<SPAN class="punctuation token">(</SPAN><SPAN class="number token">4326</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="comment token"># alway use a coordinate system ... GCS_WGS_1984</SPAN>
<SPAN class="operator token">>></SPAN><SPAN class="operator token">></SPAN> pnts <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="number token">0.0</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">0.0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="number token">0.0</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">1.0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="number token">1.0</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">0.0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="number token">0.0</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">0.0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">]</SPAN> <SPAN class="comment token"># make a polygon ... a triangle</SPAN>
<SPAN class="operator token">>></SPAN><SPAN class="operator token">></SPAN> arc_poly <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>Polygon<SPAN class="punctuation token">(</SPAN>arcpy<SPAN class="punctuation token">.</SPAN>Array<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">[</SPAN>arcpy<SPAN class="punctuation token">.</SPAN>Point<SPAN class="punctuation token">(</SPAN><SPAN class="operator token">*</SPAN>xy<SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">for</SPAN> xy <SPAN class="keyword token">in</SPAN> pnts<SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN> SR<SPAN class="punctuation token">)</SPAN> <SPAN class="comment token"># now a Polygon</SPAN>
<SPAN class="operator token">>></SPAN><SPAN class="operator token">></SPAN> <SPAN class="comment token"># ... now for some magic ...</SPAN>
<SPAN class="operator token">>></SPAN><SPAN class="operator token">></SPAN> arc_poly<SPAN class="punctuation token">.</SPAN>__geo_interface__ <SPAN class="comment token"># check the Polygon class for more info (sort of)</SPAN>
<SPAN class="punctuation token">{</SPAN><SPAN class="string token">'type'</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="string token">'MultiPolygon'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'coordinates'</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="number token">5.684341886080802e-14</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="number token">5.684341886080802e-14</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">(</SPAN><SPAN class="number token">5.684341886080802e-14</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="number token">1.0000000000000568</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">(</SPAN><SPAN class="number token">1.0000000000000568</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="number token">5.684341886080802e-14</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">(</SPAN><SPAN class="number token">5.684341886080802e-14</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="number token">5.684341886080802e-14</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">}</SPAN>
<SPAN class="operator token">>></SPAN><SPAN class="operator token">></SPAN> <SPAN class="comment token"># ?????? </SPAN>
<SPAN class="operator token">>></SPAN><SPAN class="operator token">></SPAN> Esri_dict <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">{</SPAN><SPAN class="string token">"rings"</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="punctuation token">[</SPAN>pnts<SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"spatialReference"</SPAN> <SPAN class="punctuation token">:</SPAN> <SPAN class="punctuation token">{</SPAN><SPAN class="string token">"wkid"</SPAN> <SPAN class="punctuation token">:</SPAN> <SPAN class="number token">4326</SPAN><SPAN class="punctuation token">}</SPAN><SPAN class="punctuation token">}</SPAN>
<SPAN class="operator token">>></SPAN><SPAN class="operator token">></SPAN> Esri_json <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>AsShape<SPAN class="punctuation token">(</SPAN>Esri_dict<SPAN class="punctuation token">,</SPAN><SPAN class="token boolean">True</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="operator token">>></SPAN><SPAN class="operator token">></SPAN> Esri_json<SPAN class="punctuation token">.</SPAN>JSON
u<SPAN class="string token">'{"rings":[[[0,0],[0,1],[1,0],[0,0]]],"spatialReference":{"wkid":4326,"latestWkid":4326}}'</SPAN>
<SPAN class="operator token">>></SPAN><SPAN class="operator token">></SPAN> WKT_poly <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>FromWKT<SPAN class="punctuation token">(</SPAN>pnts_str<SPAN class="punctuation token">,</SPAN>SR<SPAN class="punctuation token">)</SPAN>
<SPAN class="operator token">>></SPAN><SPAN class="operator token">></SPAN> WKT_poly<SPAN class="punctuation token">.</SPAN>WKT
u<SPAN class="string token">'MULTIPOLYGON (((0 0, 1 0, 1 1, 0 1, 0 0)))'</SPAN>
<SPAN class="operator token">>></SPAN><SPAN class="operator token">></SPAN> <SPAN class="comment token"># where did the SR go???</SPAN>
<SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>Sigh... there is more to explore in the example script below. Standardization is just
<SPAN class="string token">''</SPAN>'
formats_to_polygon<SPAN class="punctuation token">.</SPAN>py
Author<SPAN class="punctuation token">:</SPAN> Dan<SPAN class="punctuation token">.</SPAN>Patterson@carleton<SPAN class="punctuation token">.</SPAN>ca
see<SPAN class="punctuation token">:</SPAN>
https<SPAN class="punctuation token">:</SPAN><SPAN class="operator token">//</SPAN>geonet<SPAN class="punctuation token">.</SPAN>esri<SPAN class="punctuation token">.</SPAN>com<SPAN class="operator token">/</SPAN>thread<SPAN class="operator token">/</SPAN><SPAN class="number token">122755</SPAN>
https<SPAN class="punctuation token">:</SPAN><SPAN class="operator token">//</SPAN>geonet<SPAN class="punctuation token">.</SPAN>esri<SPAN class="punctuation token">.</SPAN>com<SPAN class="operator token">/</SPAN>thread<SPAN class="operator token">/</SPAN><SPAN class="number token">144517</SPAN>
https<SPAN class="punctuation token">:</SPAN><SPAN class="operator token">//</SPAN>geonet<SPAN class="punctuation token">.</SPAN>esri<SPAN class="punctuation token">.</SPAN>com<SPAN class="operator token">/</SPAN>thread<SPAN class="operator token">/</SPAN><SPAN class="number token">63090</SPAN>
http<SPAN class="punctuation token">:</SPAN><SPAN class="operator token">//</SPAN>en<SPAN class="punctuation token">.</SPAN>wikipedia<SPAN class="punctuation token">.</SPAN>org<SPAN class="operator token">/</SPAN>wiki<SPAN class="operator token">/</SPAN>Well<SPAN class="operator token">-</SPAN>known_text
http<SPAN class="punctuation token">:</SPAN><SPAN class="operator token">//</SPAN>gis<SPAN class="punctuation token">.</SPAN>stackexchange<SPAN class="punctuation token">.</SPAN>com<SPAN class="operator token">/</SPAN>questions<SPAN class="operator token">/</SPAN><SPAN class="number token">48949</SPAN><SPAN class="operator token">/</SPAN>
epsg<SPAN class="number token">-3857</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">or</SPAN><SPAN class="number token">-4326</SPAN><SPAN class="operator token">-</SPAN><SPAN class="keyword token">for</SPAN><SPAN class="operator token">-</SPAN>googlemaps<SPAN class="operator token">-</SPAN>openstreetmap<SPAN class="operator token">-</SPAN><SPAN class="operator token">and</SPAN><SPAN class="operator token">-</SPAN>leafletothers<SPAN class="punctuation token">:</SPAN>
Notes<SPAN class="punctuation token">:</SPAN>
<SPAN class="operator token">-</SPAN> http<SPAN class="punctuation token">:</SPAN><SPAN class="operator token">//</SPAN>resources<SPAN class="punctuation token">.</SPAN>arcgis<SPAN class="punctuation token">.</SPAN>com<SPAN class="operator token">/</SPAN>en<SPAN class="operator token">/</SPAN>help<SPAN class="operator token">/</SPAN>main<SPAN class="operator token">/</SPAN><SPAN class="number token">10.2</SPAN><SPAN class="operator token">/</SPAN>index<SPAN class="punctuation token">.</SPAN>html<SPAN class="comment token">#//03q300000066000000</SPAN>
"AsShape does <SPAN class="operator token">not</SPAN> support GeoJSON coordinate reference system objects<SPAN class="punctuation token">;</SPAN> the
spatial reference of a geometry object created <SPAN class="keyword token">from</SPAN> GeoJSON will be Unknown<SPAN class="punctuation token">.</SPAN>"
<SPAN class="operator token">-</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>Polygon<SPAN class="punctuation token">.</SPAN>__geo_interface__ see<SPAN class="punctuation token">.</SPAN><SPAN class="punctuation token">.</SPAN><SPAN class="punctuation token">.</SPAN>
https<SPAN class="punctuation token">:</SPAN><SPAN class="operator token">//</SPAN>gist<SPAN class="punctuation token">.</SPAN>github<SPAN class="punctuation token">.</SPAN>com<SPAN class="operator token">/</SPAN>sgillies<SPAN class="operator token">/</SPAN><SPAN class="number token">2217756</SPAN>
<SPAN class="operator token">and</SPAN> https<SPAN class="punctuation token">:</SPAN><SPAN class="operator token">//</SPAN>github<SPAN class="punctuation token">.</SPAN>com<SPAN class="operator token">/</SPAN>cleder<SPAN class="operator token">/</SPAN>pygeoif
http<SPAN class="punctuation token">:</SPAN><SPAN class="operator token">//</SPAN>w3facility<SPAN class="punctuation token">.</SPAN>org<SPAN class="operator token">/</SPAN>question<SPAN class="operator token">/</SPAN>arcpy<SPAN class="operator token">-</SPAN>geometry<SPAN class="operator token">-</SPAN>__geo_interface
__
<SPAN class="operator token">-</SPAN><SPAN class="operator token">and</SPAN><SPAN class="operator token">-</SPAN>asshape<SPAN class="operator token">-</SPAN>function<SPAN class="operator token">-</SPAN>loss<SPAN class="operator token">-</SPAN>of<SPAN class="operator token">-</SPAN>precision<SPAN class="operator token">-</SPAN><SPAN class="operator token">and</SPAN><SPAN class="operator token">-</SPAN>holes<SPAN class="operator token">/</SPAN>
Coordinate systems<SPAN class="punctuation token">:</SPAN>
<SPAN class="operator token">-</SPAN> <SPAN class="number token">4326</SPAN><SPAN class="punctuation token">:</SPAN> http<SPAN class="punctuation token">:</SPAN><SPAN class="operator token">//</SPAN>spatialreference<SPAN class="punctuation token">.</SPAN>org<SPAN class="operator token">/</SPAN>ref<SPAN class="operator token">/</SPAN>epsg<SPAN class="operator token">/</SPAN>wgs<SPAN class="number token">-84</SPAN><SPAN class="operator token">/</SPAN>
Horizontal component of <SPAN class="number token">3D</SPAN> system<SPAN class="punctuation token">.</SPAN> Used by the GPS satellite navigation
system <SPAN class="operator token">and</SPAN> <SPAN class="keyword token">for</SPAN> NATO military geodetic surveying<SPAN class="punctuation token">.</SPAN>
Google Earth
<SPAN class="operator token">-</SPAN> <SPAN class="number token">4326</SPAN> <SPAN class="operator token">=</SPAN> GEOGCS<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"GCS_WGS_1984"</SPAN><SPAN class="punctuation token">,</SPAN>
DATUM<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"D_WGS_1984"</SPAN><SPAN class="punctuation token">,</SPAN>SPHEROID<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"WGS_1984"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">6378137</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">298.257223563</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN>
PRIMEM<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"Greenwich"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN>UNIT<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"Degree"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">0.017453292519943295</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">]</SPAN>
<SPAN class="operator token">-</SPAN> <SPAN class="number token">3857</SPAN><SPAN class="punctuation token">:</SPAN> http<SPAN class="punctuation token">:</SPAN><SPAN class="operator token">//</SPAN>spatialreference<SPAN class="punctuation token">.</SPAN>org<SPAN class="operator token">/</SPAN>ref<SPAN class="operator token">/</SPAN>sr<SPAN class="operator token">-</SPAN>org<SPAN class="operator token">/</SPAN><SPAN class="number token">7483</SPAN><SPAN class="operator token">/</SPAN>
<SPAN class="operator token">or</SPAN> SR<SPAN class="operator token">-</SPAN>ORG<SPAN class="punctuation token">:</SPAN><SPAN class="number token">7483</SPAN>
Google Maps
<SPAN class="operator token">-</SPAN> <SPAN class="number token">3857</SPAN> <SPAN class="operator token">=</SPAN> PROJCS<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"WGS 84 / Pseudo-Mercator"</SPAN><SPAN class="punctuation token">,</SPAN>GEOGCS<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"GCS_WGS_1984"</SPAN><SPAN class="punctuation token">,</SPAN>
DATUM<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"D_WGS_1984"</SPAN><SPAN class="punctuation token">,</SPAN>SPHEROID<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"WGS_1984"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">6378137</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">298.257223563</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN>
PRIMEM<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"Greenwich"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN>UNIT<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"Degree"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">0.017453292519943295</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN>
PROJECTION<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"Mercator"</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN>PARAMETER<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"central_meridian"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN>
PARAMETER<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"scale_factor"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN>PARAMETER<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"false_easting"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN>
PARAMETER<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"false_northing"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN>UNIT<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"Meter"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">]</SPAN>
<SPAN class="operator token">-</SPAN> <SPAN class="number token">3395</SPAN><SPAN class="punctuation token">:</SPAN> http<SPAN class="punctuation token">:</SPAN><SPAN class="operator token">//</SPAN>spatialreference<SPAN class="punctuation token">.</SPAN>org<SPAN class="operator token">/</SPAN>ref<SPAN class="operator token">/</SPAN>epsg<SPAN class="operator token">/</SPAN><SPAN class="number token">3395</SPAN><SPAN class="operator token">/</SPAN>
Very small scale mapping<SPAN class="punctuation token">.</SPAN> Last Revised<SPAN class="punctuation token">:</SPAN> June <SPAN class="number token">2</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="number token">2006</SPAN><SPAN class="punctuation token">,</SPAN>
World <SPAN class="operator token">-</SPAN> between <SPAN class="number token">80</SPAN>°S <SPAN class="operator token">and</SPAN> <SPAN class="number token">84</SPAN>°N
<SPAN class="operator token">-</SPAN> <SPAN class="number token">3395</SPAN> <SPAN class="operator token">=</SPAN> PROJCS<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"WGS 84 / World Mercator"</SPAN><SPAN class="punctuation token">,</SPAN>
GEOGCS<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"GCS_WGS_1984"</SPAN><SPAN class="punctuation token">,</SPAN>DATUM<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"D_WGS_1984"</SPAN><SPAN class="punctuation token">,</SPAN>
SPHEROID<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"WGS_1984"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">6378137</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">298.257223563</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN>PRIMEM<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"Greenwich"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN>
UNIT<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"Degree"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">0.017453292519943295</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN>PROJECTION<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"Mercator"</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN>
PARAMETER<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"central_meridian"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN>PARAMETER<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"scale_factor"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN>
PARAMETER<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"false_easting"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN>PARAMETER<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"false_northing"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN>
UNIT<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"Meter"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">]</SPAN>
<SPAN class="string token">''</SPAN>'
<SPAN class="keyword token">import</SPAN> arcpy
<SPAN class="keyword token">import</SPAN> json
<SPAN class="keyword token">def</SPAN> <SPAN class="token function">main</SPAN><SPAN class="punctuation token">(</SPAN>code<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
pnts <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="number token">0.0</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">0.0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="number token">0.0</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">1.0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="number token">1.0</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">0.0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="number token">0.0</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">0.0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">]</SPAN>
pnts_str <SPAN class="operator token">=</SPAN> <SPAN class="string token">"POLYGON((0.0 0.0, 1.0 0.0, 0.0 1.0, 0.0 0.0))"</SPAN>
Esri_dict <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">{</SPAN><SPAN class="string token">"rings"</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="punctuation token">[</SPAN>pnts<SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"spatialReference"</SPAN> <SPAN class="punctuation token">:</SPAN> <SPAN class="punctuation token">{</SPAN><SPAN class="string token">"wkid"</SPAN> <SPAN class="punctuation token">:</SPAN> code<SPAN class="punctuation token">}</SPAN><SPAN class="punctuation token">}</SPAN>
Geo_dict <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">{</SPAN><SPAN class="string token">"type"</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="string token">"Polygon"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">"coordinates"</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="punctuation token">[</SPAN>pnts<SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="string token">"spatialReference"</SPAN><SPAN class="punctuation token">:</SPAN><SPAN class="punctuation token">{</SPAN><SPAN class="string token">"wkid"</SPAN><SPAN class="punctuation token">:</SPAN>code<SPAN class="punctuation token">,</SPAN><SPAN class="string token">"latestWkid"</SPAN><SPAN class="punctuation token">:</SPAN>code<SPAN class="punctuation token">}</SPAN><SPAN class="punctuation token">}</SPAN>
SR <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>SpatialReference<SPAN class="punctuation token">(</SPAN>code<SPAN class="punctuation token">)</SPAN>
arc_poly <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>Polygon<SPAN class="punctuation token">(</SPAN>arcpy<SPAN class="punctuation token">.</SPAN>Array<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">[</SPAN>arcpy<SPAN class="punctuation token">.</SPAN>Point<SPAN class="punctuation token">(</SPAN><SPAN class="operator token">*</SPAN>xy<SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">for</SPAN> xy <SPAN class="keyword token">in</SPAN> pnts<SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN> SR<SPAN class="punctuation token">)</SPAN>
WKT_poly <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>FromWKT<SPAN class="punctuation token">(</SPAN>pnts_str<SPAN class="punctuation token">,</SPAN>SR<SPAN class="punctuation token">)</SPAN>
Esri_json <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>AsShape<SPAN class="punctuation token">(</SPAN>Esri_dict<SPAN class="punctuation token">,</SPAN><SPAN class="token boolean">True</SPAN><SPAN class="punctuation token">)</SPAN>
Geo_json <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>AsShape<SPAN class="punctuation token">(</SPAN>Geo_dict<SPAN class="punctuation token">,</SPAN><SPAN class="token boolean">False</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">'\nTriangle Input formats for .... {}, {}'</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>SR<SPAN class="punctuation token">.</SPAN>name<SPAN class="punctuation token">,</SPAN>SR<SPAN class="punctuation token">.</SPAN>factoryCode<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">' arcpy.Polygon:\n {}'</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>repr<SPAN class="punctuation token">(</SPAN>pnts<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">' WKT:\n input: {}\n output: {} '</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>pnts_str<SPAN class="punctuation token">,</SPAN>WKT_poly<SPAN class="punctuation token">.</SPAN>WKT<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">' Esri JSON:\n input: {}\n output: {} '</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>Esri_dict<SPAN class="punctuation token">,</SPAN>Esri_json<SPAN class="punctuation token">.</SPAN>JSON<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">' GeoJSON:\n input: {}\n output: {} '</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>Geo_dict<SPAN class="punctuation token">,</SPAN>Geo_json<SPAN class="punctuation token">.</SPAN>JSON<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">' Geo_json.__geo_interface__ :\n output: {} '</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>Geo_json<SPAN class="punctuation token">.</SPAN>__geo_interface__<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token">#-------------------------------------------------------------------------</SPAN>
<SPAN class="keyword token">if</SPAN> __name__<SPAN class="operator token">==</SPAN><SPAN class="string token">'__main__'</SPAN><SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">for</SPAN> code <SPAN class="keyword token">in</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="number token">3395</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">3857</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">4326</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="comment token"># modify the list to suit your purposes</SPAN>
main<SPAN class="punctuation token">(</SPAN>code<SPAN class="punctuation token">)</SPAN>
<SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>Enjoy... as I said, there is way more to this, but this post is too long already.