Převod na GeoJSON v ArcPy

16. 5. 2018
  • Desktopový GIS
  • ArcGIS 10.2
  • ArcGIS 10.3
  • ArcGIS 10.4
  • ArcGIS 10.5
  • ArcGIS 10.6
  • ArcGIS Pro 1.2
  • ArcGIS Pro 1.3
  • ArcGIS Pro 1.4
  • ArcGIS Pro 2.0
  • ArcGIS Pro 2.1

V ArcGIS Pro můžeme pomocí funkce arcpy.FeaturesToJSON_conversion převést data do formátu GeoJSON, pokud jako 6. parametr funkce použijeme hodnotu GEOJSON. (Bez použití tohoto parametru nebo s hodnotou NO_GEOJSON proběhne převod do výchozího formátu Esri JSON.) V aplikaci ArcMap lze tento parametr použít od verze 10.5.

Pokud chceme pomocí ArcPy přistupovat přímo k objektu s GeoJSON geometrií, můžeme použít v kurzoru u geometrie prvku nedokumentovanou vlastnost __geo_interface__ k získání řetězce této geometrie a pak ji převést do formátu GeoJSON, případně s ní dále pracovat. Níže uvádíme příklad vypisující GeoJSON geometrii prvků ve vybraném souboru SHP. Tuto vlastnost je možné použít i ve starších verzích aplikace ArcMap.

Je vhodné zkontrolovat, zda objekt geometrie není None (pokus získat vlastnost __geo_interface__ takového objektu totiž skončí chybou), a také nahradit kulaté závorky hranatými. Může se totiž stát, že výsledný GeoJSON bude obsahovat chybně kulaté závorky.

import arcpy
fc = 'c:/TEMP/ArcCR500_v30/ZEL_STAN.shp'
fields = ['ZEL_STAN_','SHAPE@']
with arcpy.da.SearchCursor(fc, fields) as cursor:
    for row in cursor:
        if row[1] is not None:
            print(str(row[1].__geo_interface__).replace("(","[").replace(")","]"))

Autor: Martin Král