How To: Kopieren von Inhalt aus dem Operations Dashboard eines Portal for ArcGIS- oder ArcGIS Online-Kontos in ein anderes mit der ArcGIS API for Python
Zusammenfassung
Es kommt häufig vor, dass eine Organisation über mehrere Portal for ArcGIS- oder ArcGIS Online-Konten für verschiedene Zwecke verfügt. Beispielsweise könnte eine Organisation zwei Konten benötigen, von denen das eine für die interne Verwendung und das andere für den öffentlichen Zugriff bestimmt ist. In bestimmten Fällen muss der Inhalt von einem Konto in das andere kopiert werden. Die Schritte zum Kopieren von Elementen aus Portal for ArcGIS oder ArcGIS Online finden Sie unter Portal for ArcGIS: Beispiel: Inhalt kopieren. Es ist auch möglich, Inhalt aus Operations Dashboards mithilfe der ArcGIS API for Python zu kopieren.
Vorgehensweise
Führen Sie die folgenden Schritte aus, um Inhalt aus dem Operations Dashboard eines Portal for ArcGIS- oder ArcGIS Online-Kontos in ein anderes zu kopieren:
- Importieren Sie die erforderlichen Module.
from arcgis.gis import GIS from IPython.display import display from getpass import getpass
- Deklarieren Sie Eingabeparameter für den Empfang der Quell-URL und der Anmeldeinformationen.
source_portal = input("Enter Source Portal : ") if source_portal == "": source_portal = "arcgis.com" source_admin = input("Enter Source Admin Username: ") source_admin_password = getpass("Enter password: ") source_owner = input("Enter Source Owner Username: ")
Hinweis: Geben Sie im Konsolenfenster die URL von Portal for ArcGIS als source_admin für Portal for ArcGIS an, oder lassen Sie die URL leer, und drücken Sie die Eingabetaste, um ArcGIS Online anzugeben.
- Deklarieren Sie Eingabeparameter für den Empfang der Ziel-URL und der Anmeldeinformationen.
target_portal = input("Enter Target Portal : ") if target_portal == "": target_portal = "arcgis.com" target_admin = input("Enter Target Admin Username: ") target_admin_password = getpass("Enter password: ") target_owner = input("Enter Target Owner Username: ")
- Erstellen Sie eine Verbindung zur Quell- und Ziel-URL.
source = GIS("https://" + source_portal, source_admin, source_admin_password, verify_cert=False) target = GIS("https://" + target_portal, target_admin, target_admin_password, verify_cert=False) print("Connected to Source and Target Portals")
Hinweis: Mit dem obigen Skript wird nicht auf ein Zertifikat geprüft. Wenn ein Zertifikat verfügbar ist und SSL vollständig konfiguriert ist, kann das Codesegment verify_cert auf "True" festgelegt werden: verify_cert=True.
- Suchen Sie nach den in Schritt 2 und 3 angegebenen Besitzern.
source_user = source.users.search(source_owner) target_user = target.users.search(target_owner) print("Source User: \t:\t" + source_user[0].username + "\t:\t" + source_user[0].role) print("Target User: \t:\t" + target_user[0].username + "\t:\t" + target_user[0].role)
- Suchen Sie nach allen verfügbaren Dashboards unter dem angegeben Besitzer in der Quell-URL.
search_result = source.content.search(query="owner:"+str(source_owner), item_type="Dashboard") search_result
- Durchlaufen Sie den Prozess "create copy to a folder" für jedes in der Ziel-URL gefundene Dashboard.
for item in search_result: app=source.content.get(item.id) data = [app] target.content.clone_items(data, "dashboards", copy_data=True, search_existing_items=False) print("copied item successfully: %s" %(app.title)) print("Done")Das folgende Skript zeigt, wie der vollständige Code nach Abschluss der Schritte aussieht:
from arcgis.gis import GIS from IPython.display import display from getpass import getpass source_portal = input("Enter Source Portal (machine.domain.com/webadaptor...leave blank for ArcGIS Online)") if source_portal == "": source_portal = "arcgis.com" source_admin = input("Enter Source Admin Username: ") source_admin_password = getpass("Enter password: ") source_owner = input("Enter Source Owner Username: ") target_portal = input("Enter Target Portal (machine.domain.com/webadaptor...leave blank for ArcGIS Online)") if target_portal == "": target_portal = "arcgis.com" target_admin = input("Enter Target Admin Username: ") target_admin_password = getpass("Enter password: ") target_owner = input("Enter Target Owner Username: ") source = GIS("https://" + source_portal, source_admin, source_admin_password, verify_cert=False) target = GIS("https://" + target_portal, target_admin, target_admin_password, verify_cert=False) print("Connected to Source and Target Portals") source_user = source.users.search(source_owner) target_user = target.users.search(target_owner) print("Source User: \t:\t" + source_user[0].username + "\t:\t" + source_user[0].role) print("Target User: \t:\t" + target_user[0].username + "\t:\t" + target_user[0].role) search_result = source.content.search(query="owner:"+str(source_owner), item_type="Dashboard") search_result for item in search_result: app=source.content.get(item.id) data = [app] target.content.clone_items(data, "dashboards", copy_data=True, search_existing_items=False) print("copied item successfully: %s" %(app.title)) print("Done")
Referenzinformationen
Zuletzt geändert: 3/12/2019
Artikel-ID: 000018924
Software: ArcGIS API for Python 1.6