Deutsch
Continue in the app
Be The First To Get Support Updates
Want to know about the latest technical content and software updates?

How To: Kopieren/Klonen von Inhalten von einer ArcGIS Online-Organisation oder von Portal for ArcGIS in eine andere Organisation

Zusammenfassung

Das Werkzeug "ArcGIS Online Assistant" wird häufig als die einzige Möglichkeit angesehen, Inhalte von einer ArcGIS Online-Organisation oder von Portal for ArcGIS in eine andere Organisation zu kopieren. In der folgenden Anleitung wird beschrieben, wie Sie zu diesem Zweck auch die ArcGIS API for Python verwenden können, um Inhalte aus Webkarten, konfigurierbaren Anwendungen, Dashboards, Shapefiles, File-Geodatabases uvm. zu kopieren.

Vorgehensweise

Beim folgenden Python-Skript (das über eine Jupyter-Notebook-Oberfläche ausgeführt wird) wird die Methode clone_items im ArcGIS-Modul verwendet, um gehostete Feature-Layer und den zugrunde liegenden Service von einer ArcGIS Online-Organisation in ein andere zu kopieren. Die verwendeten Beispielzellen sind für Jupyter Notebook vorgesehen, können jedoch für die Verwendung in einem eigenständigen Skript angepasst werden.

Hinweis: Der Benutzer, der den Kopiervorgang ausführt, sollte ein Administrator im Ziel-GIS sein.
  1. Importieren Sie das erforderliche Modul.
from arcgis.gis import GIS
  1. Geben Sie die URL und die Anmeldeinformationen des ursprünglichen ArcGIS Online-Kontos an.
#For ArcGIS Online gis=GIS("https://arcgis.com", "Username", "Password") #For Portal for ArcGIS gis=GIS("https://<gisserver>.<domain>.com/portal", "Username", "Password")
  1. Geben Sie den Benutzernamen des Kontos an, um die geklonten Elemente zu exportieren.
username_2 = input("Enter username of target organization: ") #For ArcGIS Online gis2 = GIS("https://arcgis.com", username_2) #For Portal for ArcGIS gis2 = GIS("https://<gisserver>.<domain>.com/portal", username_2)
  1. Erstellen Sie eine Liste mit Elementen, die geklont werden sollen. Dazu gibt es einige Optionen:
  • Festlegen der maximal zulässigen Anzahl der zu exportierenden Elemente:
num_items = 5 items = gis1.content.search(query="owner: {}".format(username), max_items=num_items, sort_field='id', sort_order='desc')
  • Rufen Sie die maximal zulässige Anzahl von Elementen als Eingabeparameter ab:
num_items = int(input("How many items would you like to clone? ")) items = gis1.content.search(query="owner: {}".format(username), max_items=num_items, sort_field='id', sort_order='desc')
  • Rufen Sie ein bestimmtes Element mithilfe der Element-ID ab:
itemid = '<item_ID>' #insert the item id items = gis.content.get(itemid)
  • Verwenden Sie die Suchfunktion mit einer Abfrage, um nach bestimmten Elementen zu suchen, die geklont werden sollen. Das folgende allgemeine Format wird verwendet:
items = gis.content.search(query, item_type=None, sort_field='avgRating', sort_order='desc', max_items=10, outside_org=False, categories=None, category_filters=None)
  1. Geben Sie die Liste der zu klonenden Elemente aus.
print(str(len(items)) + " items will be cloned. See the list below:") items
  1. Erstellen Sie eine Logik, um die Elemente unter Verwendung der Funktion clone_items() zu klonen und einen möglichen Fehler zu verarbeiten, wenn das Klonen fehlschlägt.  
def deep_copy_content(input_list): for item in input_list: try: print("Cloning " + item.title) copy_list = [] copy_list.append(item) gis2.content.clone_items(copy_list, copy_data=True, search_existing_items=True) print("Successfully cloned " + item.title) except Exception as e: print(e) print("The function has completed") deep_copy_content(items)
Hinweis: Alternativ kann die Funktion clone_items() auch außerhalb des Logik-Code-Blocks verwendet werden, wenn keine Ausnahmebehandlung erforderlich ist. Im Anschluss an Schritt 5 kann die Funktion clone_items() folgendermaßen verwendet werden: gis2.content.clone_items([items])

Im Folgenden ist ein Beispiel für ein vollständiges Skript dargestellt:

from arcgis.gis import GIS gis=GIS("https://arcgis.com", "Username", "Password") username_2 = input("Enter username of target organization: ") gis2 = GIS("https://arcgis.com", username_2) #Get a specific item using item id: itemid = 'cc94b27a35d14f40987d96f3d2a39e67' items = gis.content.get(itemid)  print(str(len(items)) + " items will be cloned. See the list below:") items def deep_copy_content(input_list): for item in input_list: try: print("Cloning " + item.title) copy_list = [] copy_list.append(item) gis2.content.clone_items(copy_list, copy_data=True, search_existing_items=True) print("Successfully cloned " + item.title) except Exception as e: print(e) print("The function has completed") deep_copy_content(items)

Referenzinformationen

Zuletzt geändert: 5/13/2021

Artikel-ID: 000022252

Software: Portal for ArcGIS 10.8.1, 10.8, 10.7.1, 10.7, 10.6.1, 10.6