Select to view content in your preferred language

Hromadná záloha hostovaných dat z ArcGIS Online do FGDB

174
0
2 weeks ago
Labels (2)
DavidDaveNovak
Esri Contributor
0 0 174

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.

Postup

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.

DavidDaveNovak_0-1776439177564.png  
 
DavidDaveNovak_1-1776439201704.png