Získání JSON definice webové mapy pomocí ArcGIS API for Python

418
0
01-24-2023 11:45 PM
DavidDaveNovak
Esri Contributor
2 0 418

Web Map -> JSON

V mém předchozím příspěvku (Tvorba webové mapy ze souboru JSON pomocí ArcGIS API for Python) je popsáno vytváření webové mapy na základě souborů JSON. Tento článek popisuje možnosti při ukládání webových map či aplikací jako samotné soubory JSON.  V ukázce jsou znovu použity funkce dostupné v rámci ArcGIS API for Python bez nutnosti načíst modul arcpy.  

Výhody práce se soubory JSON

JavaScript Object Notation (JSON) je standardní textový formát, který reprezentuje strukturovaná data založená na objektové syntaxi jazyka JavaScript. Webové mapy a aplikace uložené jako soubory JSON mohou administrátoři snadno přenášet, spravovat nebo obnovovat ze zálohy.

Mezi administrátorské nástroje pro práci se soubory JSON patří například uživatelské rozhraní ArcGIS Online Assistant. Pro hromadný přístup a stahování obsahu z ArcGIS Online bude ovšem v tomto článku použit skript v jazyku Python, který lze zakomponovat mezi další procesy v rámci většího celku.

 

PRVNÍ ZPŮSOB – Uložení samostatné webové mapy nebo webové aplikace

Následující kód popisuje načtení a uložení dat JSON pro jednu webovou mapu.

Začátek a přihlášení do ArcGIS Online je shodné s variantou z předchozího dílu o nahrávání JSON souborů.

 

1/ Import potřebných modulů

 

from arcgis import gis
from arcgis.gis import GIS
import json

 

 

2/ Přihlášení do prostředí, v rámci kterého chceme obsah spravovat

Pomocí vyplnění údajů Portálu nebo ArcGIS Online se přihlásíme a vytvoříme potřebnou konektivitu pro správu obsahu.

 

gis = GIS("https://arcgis.com", "Username")
print ("Úspěšné přihlášeno do: ", gis)

 

 

3/ Zadání ID webové mapy v ArcGIS Online

 

web_map = gis.content.get("<item ID>") 
jsonData=web_map.get_data(try_json=True)

 

 

4/ Uložení podrobností JSON jako soubor .json do umístění složky

 

with open ("<Folder Location>", "w") as file_handle: 
    file_handle.write(json.dumps(jsonData))

print("Completed")

 

 

Celý první způsob stažení samostatného podrobného souboru JSON je tedy následující:

 

from arcgis import gis
from arcgis.gis import GIS
import json

gis = GIS("https://arcgis.com", "Username")
print ("Úspěšné přihlášeno do: ", gis)

web_map = gis.content.get("<item ID>") 
jsonData=web_map.get_data(try_json=True)

with open ("<Folder Location>", "w") as file_handle: #Upravte umisteni slozky
    file_handle.write(json.dumps(jsonData))

print("Completed")

 

 

Výsledkem je podrobný přepis celé webové mapy do jednoho souboru JSON.

DavidDaveNovak_1-1674155644731.png

 

Výsledný soubor JSON z první ukázky je ke stažení formou přílohy pod článkem.

 

DRUHÝ ZPŮSOB – Hromadný způsob práce s JSON soubory

Vícenásobné načtení a uložení dat ve formátu JSON od konkrétního vlastníka v ArcGIS Online.

 

1/ Načtení modulů a přihlášení

První dvě části pro načtení modulů a přihlášení jsou shodné s první ukázkou.

 

from arcgis import gis
from arcgis.gis import GIS
import json

gis = GIS("https://arcgis.com", "Username")
print ("Úspěšné přihlášeno do: ", gis)

 

 

2/ Specifikace uživatele a obsahu

V dalším kroku je nutné specifikovat konkrétního uživatele a vyhledat požadovaný obsah. V této ukázce například všechny webové mapy.

 

x=0
my_item = gis.content.search(query="owner:<owner Name>",item_type="Web Map") #Edit the owner's name and the item_type parameter
print(my_item)

 

 

3/ Procházení seznamem a vytváření záznamu JSON

Po načtení budeme procházet seznamem vyhledaných položek a přímo načítat specifikace JSON každého prvku, který bude následně uložen do příslušné zvolené složky.

 

for item in my_item:
    my_item = gis.content.search(query="owner:daviddavedemo_arcdatapraha3",item_type="Web Map")[x]
    item = my_item.get_data(try_json=True)
    with open ('/arcgis/json_from_map_All{}.json'.format(x), "w") as file_handle:
        file_handle.write(json.dumps(item))
    x=x+1
    print(x)
print("Completed") 

 

 

Celý skript pro hromadné stažení informací o webových mapách je tedy následující:

 

 

from arcgis import gis
from arcgis.gis import GIS
import json

gis = GIS("https://arcgis.com", "Username")
print ("Úspěšné přihlášeno do: ", gis)

x=0
my_item = gis.content.search(query="owner:<owner Name>",item_type="Web Map") #Edit the owner's name and the item_type parameter
print(my_item)

for item in my_item:
    my_item = gis.content.search(query="owner:<owner Name>",item_type="Web Map")[x]
    item = my_item.get_data(try_json=True)
    with open ('/arcgis/json_from_map_All{}.json'.format(x), "w") as file_handle:
        file_handle.write(json.dumps(item))
    x=x+1
    print(x)
print("Completed") 

 

 

Výsledkem jsou jednotlivé soubory JSON popisující základní vlastnosti webových map z ArcGIS Online určeného vlastníka. 

DavidDaveNovak_2-1674155670196.png

Pro názornou ukázku přikládám jeden z těchto souborů níže do zazipovaného balíčku.

 

V rámci jednoduchých Python skriptů jsme si ukázali, jak přistupovat k jednotlivým položkám na ArcGIS Online. V případě potřeby lze takto vytvořit proces, který bude obsah na ArcGIS Online spravovat s určitou úrovní automatizace.