HOW TO
Die empfohlenen und unterstützten Workflows zum Sichern von Inhalten in ArcGIS Online sind das Exportieren und Herunterladen von gehosteten Feature-Services oder das Kopieren von gehosteten Feature-Services nach ArcGIS Enterprise über die verteilte Kollaboration. In diesem Artikel finden Sie ein Codebeispiel, das zeigt, wie gehostete Feature-Services im File-Geodatabase-Format exportiert und heruntergeladen werden.
Der ArcGIS Online-Cloud-Speicher ist sicher und zuverlässig. Es treten jedoch Fehler auf, oder regelmäßige Backups können eine geschäftliche Anforderung sein. In vielen Organisationen ohne ArcGIS Enterprise werden deshalb gehostete Feature-Services regelmäßig exportiert und heruntergeladen, um immer eine Sicherungskopie zur Verfügung zu haben. Der Nachteil dieses Workflows besteht darin, dass das manuelle Sichern von gehosteten Feature-Services durch Exportieren und Herunterladen zeitaufwändig und arbeitsintensiv ist.
Mit der ArcGIS API for Python ist es möglich, das Exportieren und Herunterladen von gehosteten Feature-Services als File-Geodatabases an einen Speicherort auf einem lokalen Laufwerk zu automatisieren. Das folgende Codebeispiel zeigt, wie dies in einer Jupyter Notebook-Umgebung oder als eigenständiges Skript ausgeführt wird:
from arcgis.gis import GIS
import datetime as dt
username = input("Input your username: ")
gis = GIS("https://arcgis.com", username)
Bei der Rückgabe werden Sie durch diesen Codeblock zur Eingabe eines Kennworts aufgefordert. Suchen Sie anschließend nach Feature-Services zum Herunterladen. Geben Sie für den Parameter max_items einen hohen Wert ein, um sicherzustellen, dass alle Feature-Services in der Liste zurückgegeben werden. In diesem Beispiel sucht die Abfrage nur nach den Elementen des angemeldeten Benutzers. Stellen Sie eine Verbindung mit Administratorberechtigungen her, und ändern Sie die Abfrage so, dass nicht freigegebene bzw. nicht exportfähige Services, deren Besitzer andere Benutzer in der Organisation sind, heruntergeladen werden. In der folgenden Zelle werden Sie auch nach einem Dateipfad gefragt, der regelmäßig eingegeben werden kann, da Jupyter Notebook Escape-Zeichen berücksichtigt, wenn die Zeichenfolge als Ausgabeverzeichnis in der Download-Funktion verwendet wird.
Note: When using the Jupyter Notebook or a stand-alone script, a local folder location can be provided. However, ArcGIS Notebook on ArcGIS Online is not directly connected to the local folder on the machine. When running the script on ArcGIS Notebook, the following folder path must be provided: '/arcgis/home/<folder_name>' The folder path above can be accessed from the Files tab of ArcGIS Notebook.
folder_path = input("Please enter the file location to store the backups: ")
num_items = int(input("How many items do you want to back up? "))
query_string = "type:Feature Service, owner:{}".format(username)
items = gis.content.search(query=query_string, max_items=num_items, sort_field='modifed', sort_order='desc')
print(str(len(items)) + " items will be backed up to " + folder_path +". See the list below:")
items
Es wird eine Liste zurückgegeben, die der folgenden Liste ähnelt:
[<Item title:"Title1" type:Feature Layer Collection owner:Username>, <Item title:"Title2" type:Feature Layer Collection owner:Username>, <Item title:"Title3" type:Feature Layer Collection owner:Username>, + about 100 more in my case...]
Abschließend erstellen wir eine Funktion, die die Liste der Feature-Services durchläuft (das folgende Skript enthält eine Logik, um das Herunterladen von gehosteten Feature-Layer-Sichten zu vermeiden, da dies zu doppelten Sicherungen führen würde), FGDB-Titel generiert, jeden Feature-Service als FGDB exportiert und herunterlädt und schließlich die FGDB-Elemente aus "Eigene Inhalte" in ArcGIS Online löscht:
def download_as_fgdb(item_list, backup_location):
for item in item_list:
try:
if 'View Service' in item.typeKeywords:
print(item.title + " is view, not downloading")
else:
print("Downloading " + item.title)
version = dt.datetime.now().strftime("%d_%b_%Y")
result = item.export(item.title + "_" + version, "File Geodatabase")
result.download(save_path=backup_location)
result.delete()
print("Successfully downloaded " + item.title)
except:
print("An error occurred downloading " + item.title)
print("The function has completed")
download_as_fgdb(items, folder_path)
Artikel-ID: 000022524
Unterstützung durch ArcGIS-Experten anfordern
Beginnen Sie jetzt mit dem Chatten