Einführung
ArcGIS Online undArcGIS Enterprise Portal registrierte Items in einer Organisation effektiv nutzt, ist es notwendig, neben dem Titel des Items auch Details wie Zusammenfassung, Beschreibung, Tags und Nutzungsbedingungen einzugeben.
Allerdings ist es eine mühsame Aufgabe, jedes Item einzeln zu öffnen und diese Details einzugeben oder zu aktualisieren.
Bei einem Partner von Esri USAGEO Jobe FirmaAdmin Tools gibt es eine kostenpflichtige Version, die eine Massenaktualisierung aus CSV-Dateien ermöglicht. Dieses Mal stellen wir jedoch eine Methode vor, wie man mit der Kombination Excel × Python (ArcGIS API for Python) Item-Details gesammelt aktualisieren kann. Die Erklärung ist nicht erforderlich; wer den Beispielcode für Excel und Python überprüfen möchte, kann wie gewohntauf GitHub veröffentlicht sein, bitte schauen Sie dort nach.
※ Diese Methode wurde ursprünglich 2021 veröffentlicht in der Datei „3D-Stadtmodell ArcGIS Anwendungsbeispiele Sammlung“ als File Geodatabase (FGDB) Item-Details aktualisiert und veröffentlicht. Diese Anwendungsseite istArcGIS Hub Basic aufgebaut, daher wird im Code als bestimmte Gruppe die Gruppe mit der ID des in ArcGIS Hub erstellten Sites angegeben.“Ministerium für Land-, Infrastruktur-, Verkehr und Tourismus 3D-Stadtmodell „Project PLATEAU“ Nutzungskontext“. Die Gruppen-ID kann wie unten gezeigt in ArcGIS Online überprüft werden, aber die ID kann auch beliebig von einem Benutzer außerhalb der Gruppe eines mit ArcGIS Hub erstellten Sites angegeben werden.
Außerdem finden Sie Anleitungen zur Erstellung und Nutzung von Sites in ArcGIS Hub im „ArcGIS Hub Starter Guide“ oder „A quick start guide to ArcGIS Hub Basic“ usw.
Abbildung – Beispiel einer Gruppen-ID (unser Unternehmen „Ministerium für Land-, Infrastruktur-, Verkehr und Tourismus 3D-Stadtmodell „Project PLATEAU“ Nutzungskontext“ Gruppe)
1 Arbeitsablauf zur Massenaktualisierung von Item-Details
1.1 Eigenschaften des Items
Zuerst prüfen wir die API zum Aktualisieren von Item-Details mit der ArcGIS API for Python. Laut API-Referenz erfolgt die Aktualisierung der Item-Details über die Methode der Klasse arcgis.gis.Item:
update(item_properties=None, data=None, thumbnail=None, metadata=None)
Diese Methode ist möglich; eine Liste der Schlüssel für item_properties finden Sie in der Hilfe unter type, typeKeywords, description, title, url, tags, text, snippet, extent, spatialReference, accessInformation, licenseInfo, culture, access, commentsEnabled.
Im aktuellen Beispiel werden title, snippet, description, tags, licenseInfo und accessInformation aktualisiert. Um das besser zu verstehen, ordnen wir die Schlüssel in item_properties den tatsächlichen Bildschirminhalten zu:
- id : Item-ID
- title : Titel
- snippet : Zusammenfassung
- description : Beschreibung (HTML nutzbar)
- tags : Tags (bei mehreren durch Komma getrennt)
- licenseInfo : Nutzungsbedingungen
- accessInformation : Urheberrechtshinweise
1.2 Aufbereitung der Item-Details in Excel
Da die Informationen für die Aufbereitung der Item-Details bekannt sind, geben wir in Zeile 1 des Sheets1 (im Beispiel Excel-Datei heißt das Sheet „UpdateSheet1“) jeweils die Schlüssel von item_properties ein und ab Zeile 2 jeweils die Eigenschaften der einzelnen Items (im Code wird .to_dict() verwendet; daher müssen die Spaltennamen in Zeile 1 genau mit den Schlüsseln in item_properties übereinstimmen).
Außerdem haben wir zur Vereinheitlichung der Beschreibungsspalte eine lesbarere Beschreibung als HTML erstellt und diese tatsächlich mit einem VBA-Makro aktualisiert. Da die Verteilung der Excel-Datei mit Makro Sicherheitsbedenken hervorrufen könnte, haben wir den Makro-Code als Referenz unter dem Namen „UpdateDescription_SampleVBA.txt“ bereitgestellt; bitte sehen Sie sich diesen bei Bedarf an.
Abbildung – Beispiel für die Aufbereitung in Excel (Eingabebeispiel aus einer Entwicklungs-Testumgebung)
1.3 Erklärung des Codes zur Massenaktualisierung der Items
Nach der Aufbereitung in Excel wird nur noch der Code ausgeführt und dabei entsprechend Ihrer Umgebung leicht angepasst. Konkret müssen Sie im Notizblock die Stellen "your_xyz", "new_owner_name" und "share_group_id" an Ihre Umgebung anpassen.
Im Notizblock sind Kommentare enthalten; hier erläutern wir nochmals den Ablauf Schritt für Schritt.
(1) Einlesen der Excel-Daten in ein Pandas DataFrame
Zuerst lesen wir das Excel mit Pandas DataFrame ein.
import pandas as pd
excel_file = r"your_folder_path\3DStadtmodell_AGOL_ItemDetails_FürEntwicklungstest.xlsx"
df = pd.read_excel(excel_file)
※ Da sich das Format ab xlrd-Version 2.0.0 auf nur noch "xls" geändert hat, muss je nach Umgebung beim Einlesen von "xlsx" mit pd.read_excel openpyxl als engine angegeben werden. In einer mit ArcGIS Pro erstellten Umgebung ist xlrd Version 1.2.0 installiert; hier ist keine Angabe von engine nötig (Erstellungsmethode für ArcGIS Pro Umgebung siehe '[ArcGIS Developer Ressourcen] - [arcgis Paket aktualisieren] - [Umgebung ab ArcGIS Pro 2.3]' ). Bitte beachten Sie dies.
import pandas as pd
excel_file = r"your_folder_path\3DStadtmodell_AGOL_ItemDetails_FürEntwicklungstest.xlsx"
df = pd.read_excel(excel_file,engine='openpyxl')
(2) Verbindung zum Organisations-Site bei ArcGIS Online herstellen und Aktualisierung sowie Teilen mit bestimmter Gruppe durchführen
Im Folgenden verbinden wir uns mit dem Organisations-Site bei ArcGIS Online und holen anhand der 'id' aus jeder Zeile das Item ab. Dann aktualisieren wir title, snippet, description, tags, licenseInfo und accessInformation mit item.update(). Zusätzlich aktivieren wir mit my_item.protect() den Löschschutz und teilen das Item anschließend mit org=True und groups=['share_group_id'].
Wie oben erläutert entsprechen die Schlüssel in item_properties den Inhalten aus Abschnitt 1.1 Eigenschaften des Items.
from arcgis.gis import GIS
gis = GIS("https://www.arcgis.com/", "your_username", "your_password")
for index, row in df.iterrows():
item_id = row[0] # id abrufen
item_properties = row[1:7].to_dict() # title bis accessInformation als Dictionary abrufen
my_item = gis.content.get(item_id) # Item abrufen
my_item.update(item_properties) # Aktualisierung von title bis accessInformation mittels item.update()
my_item.protect(enable = True) # Löschschutz aktivieren zum Schutz vor versehentlichem Löschen des Items
my_item.share(org= True, groups=['share_group_id']) # Teilen mit Organisation und bestimmter Gruppe - Testumgebung; "Open Data geteilte Inhalte"(id:f862b4f5d32f435596795947df012042), Produktionsumgebung; "Ministerium für Land-, Infrastruktur-, Verkehr und Tourismus 3D-Stadtmodell „Project PLATEAU“ Nutzungskontext"(id:d568e2190c4f456f8bd812c8e07c719a)
2 Erläuterung zum Workflow zur Veröffentlichung im ArcGIS Hub Katalogsite
※ Ursprünglich war der Workflow bis Abschnitt 1 „Massenaktualisierung von Item-Details“ gedacht. Da sich aber unterschiedliche Personen damit beschäftigen oder es unterschiedliche Prozessvorgaben gibt, ist es eventuell sinnvoller, separate Notizblockdateien zu verwenden. Dieses Mal beschreiben wir den Workflow innerhalb derselben Notizblockdatei als Erklärung.
Wenn Sie beispielhaft Notizblockdateien aufteilen möchten, fügen Sie vor dem folgenden Code zur Erläuterung des Workflows zum Einlesen von Excel-Daten ins Pandas DataFrame (Abschnitt 1.1) notwendige Verarbeitungsschritte hinzu.
import pandas as pd
excel_file = r"your_folder_path\3DStadtmodell_AGOL_ItemDetails_FürEntwicklungstest.xlsx"
df = pd.read_excel(excel_file)
2.1 Erläuterung zum Code zur Veröffentlichung im ArcGIS Hub Katalogsite
(3) Als Administrator verbinden Sie sich mit dem Organisations-Site bei ArcGIS Online und ändern den Eigentümer des Items sowie teilen es mit bestimmten Gruppen und veröffentlichen es öffentlich im Portal.
Als letzter Schritt ändern Sie zuerst den Eigentümer des Items mit reassign_to() (Eigentümerwechsel ist nicht zwingend erforderlich; hier wird vom persönlichen auf das öffentliche Firmenkonto gewechselt). Danach teilen Sie das Item mit share() erneut mit Organisation und bestimmten Gruppen sowie veröffentlichen es öffentlich im Portal.
gisadmin = GIS("https://www.arcgis.com/", "your_admin_username", "your_admin_password") # Administratorzugang
for index, row in df.iterrows():
item_id = row[0] # id abrufen
my_item = gisadmin.content.get(item_id)
# Zuerst Eigentümer wechseln
my_item.reassign_to("new_owner_name") # テスト環境;"kataya@dev3admin"、本番環境:"Esri_Japan"
# Um Inhalte in ArcGIS Hub öffentlich zugänglich zu machen und sie sichtbar zu machen, teilen Sie nach einer Eigentümeränderung erneut mit der spezifischen Organisationsgruppe
my_item.share(everyone = True, org= True, groups=['your_share_group_id']) # Teilen mit Organisation und spezifischer Gruppe - Testumgebung; „Open Data geteilte Inhalte“ (id:f862b4f5d32f435596795947df012042), Produktionsumgebung; „Ministerium für Landverkehr 3D-Stadtmodell ‚Project PLATEAU‘ genutzte Inhalte“ (id:d568e2190c4f456f8bd812c8e07c719a)
Bild nach der Aktualisierung
Wenn das Skript ausgeführt ist und abgeschlossen wurde, sieht das einzelne Element auf der ArcGIS Online-Seite wie folgt aus.
Karte – Beispiel eines einzelnen Elements nach der Aktualisierung (Details zum ArcGIS Online-Element: Entwicklungs-Testumgebung „3D-Stadtmodell (Project PLATEAU) Utsunomiya City File Geodatabase“)
Außerdem sieht es auf der Kategorieseite von ArcGIS Hub wie folgt aus.
Karte – Beispiel eines einzelnen Elements nach der Aktualisierung (Details zur Kategorieseite in der Entwicklungs-Testumgebung von ArcGIS Hub)
Wenn Sie hier auf die Mitte des Kategorieseitenbildschirms „3D-Stadtmodell Utsunomiya City (Project PLATEAU) File Geodatabase“ achten, wird die Beschreibung des ArcGIS Online-Elements (entsprechend 107 Zeichen in der Excel-Spalte description) angezeigt. Das bedeutet, dass bei der Veröffentlichung von Daten in ArcGIS Hub auch bei der Sichtbarmachung die Beschreibungstexte des Elements prioritär am Anfang stehen sollten, um den Aufwand für doppelte Eingaben zu vermeiden – eine wichtige Technik.
Zusammenfassung
Mit der Kombination aus Excel × Python (ArcGIS API for Python), die in diesem Artikel vorgestellt wurde, können Sie nicht nur die Informationen von Elementen in ArcGIS Online gesammelt aktualisieren, sondern auch den Aufwand für die Anmeldung auf der ArcGIS Hub-Seite sparen und letztendlich105 Elemente veröffentlichen (Referenz:Kategorieseite „3D-Stadtmodell File Geodatabase“).
・Notebook-Datei, ・Excel-Beispiel, ・Beispiel für ein VBA-Makro zur Aktualisierung der description-Spalte von drei Dateien wie gewohntauf GitHub veröffentlicht, bitte nutzen Sie diese.
Außerdem gibt es einen Artikel über die Punkte zur Nutzung von Elementen innerhalb einer Organisation mit dem Titel „Einführung in die Punkte zur Elementverwaltung (Teil 1)Vorangestellt,Nachgestellt“, bitte sehen Sie sich diesen ebenfalls an.
Referenzmaterialien
・GEO Jobe-Firma Admin Tools
・Nutzungsbeispiele für 3D-Stadtmodelle in ArcGIS gesammelt auf einer Nutzungsseite
【ArcGIS Hub】
・ArcGIS Hub Basic Übersicht
・ArcGIS Hub Starter Guide
・Ein Schnellstart-Leitfaden für ArcGIS Hub Basic
【Blog-Artikel】
・Einführung in die Punkte zur Elementverwaltung - Vorangestellt -: Nutzen wir Tags effektiv
・Einführung in die Punkte zur Elementverwaltung - Nachgestellt -: Nutzen wir Kategorien effektiv
【Code, API】
・Skript zum Aktualisieren über REST API aus CSV mit reinem Python
・Leitfaden zur ArcGIS API for Python
・API-Referenz der ArcGIS API for Python (Klasse arcgis.gis.Item)
・Aktualisierung von Elementinformationen:update(item_properties=None, data=None, thumbnail=None, metadata=None)
・Teilen von Elementen:share(everyone=False, org=False, groups=None, allow_members_to_edit=False)
・Änderung des Eigentümers:reassign_to(target_owner, target_folder=None)