Jak hromadně zálohovat svá cloudová data z ArcGIS Online do formátu File Geodatabase pomocí automatizovaného Python skriptu? Článek vám ukáže, jak exportovat a stáhnout všechny hostované vrstvy organizace na lokální disk.
Skript využívá ArcGIS API for Python k zálohování hostovaných vrstev z ArcGIS Online. Každou dostupnou a funkční hostovanou službu exportuje do souborové geodatabáze a následně stáhne do složky na počítači. Protože je složka, do které se data budou zálohovat, umístěna na lokálním disku, bude skript fungovat, pokud jej spustíme z našeho počítače samostatně nebo v aplikaci ArcGIS Pro. Nelze jej však takto spustit přímo v ArcGIS Online.
Popis skriptu, který v tomto případě spouštíme z prostředí Python notebooks, jsme pro přehlednost rozdělili na následující části:
1. Vytvoření notebooku
Vytvořte nový notebook v ArcGIS Pro. Návod naleznete v oficiální dokumentaci Esri.
2. Import potřebných modulů
Načtěte do skriptu základní knihovny.
from arcgis.gis import GIS
import os
3. Přihlášení k ArcGIS Online
Krok: Zadejte své přihlašovací údaje.
gis = GIS("https://www.arcgis.com", "username", "password")Pokud spouštíte skript v ArcGIS Pro a jste již přihlášeni, můžete často použít pouze gis = GIS("pro"))
4. Specifikace výstupní složky
Zadejte cestu k existující složce na vašem disku.
output_folder = r""
# např. r"C:\Users\jmeno\Downloads"5. Vyhledání vrstev
Prohledejte obsah organizace na typ položky Feature Service. Pomocí úpravy podmínky lze výběr upřesnit.
# Úprava podmínky pro vyhledávání pouze vlastního obsahu
hosted_feature_layers = gis.content.search(query=f'type:"Feature Service" AND owner:{gis.users.me.username}', max_items=-1)6. Výpis seznamu nalezených vrstev
Pomocí cyklu vypište informace o položkách.
muj_ucet = gis.users.me.username
for myLayer in hosted_feature_layers:
# Vypíše se pouze pokud se majitel rovná mému uživatelskému jménu
if myLayer.owner == muj_ucet:
print(f"Title:{myLayer.title}, Item ID:{myLayer.id}, Owner:{myLayer.owner}, ItemType:{myLayer.type}")
7. Hromadný export a stažení dat
Opakováním pomocí cyklu For přes nalezené vrstvy proběhne příkaz k exportu a následně stažení výsledku.
for layer in hosted_feature_layers:
try:
# Export na serveru (název nové položky, cílový formát)
export_layer = layer.export(layer.title, "File Geodatabase")
# Stažení na lokální disk
export_layer.download(save_path=output_folder)
print(f"Downloaded: {layer.title}")
except Exception as e:
# Odchycení chyby pro konkrétní položku
print(f"Failed for {layer.title}: {e}")
Stažený soubor je klasická souborová geodatabáze, která může sloužit jako záloha nebo vstup pro další projekty.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.