Einführung
Die ArcGIS API for Python ist eine Python-Bibliothek zur Automatisierung von Web GIS. Die23.Ausgabe GISCommunity Forum konzentrierte sich auf die Automatisierung von ArcGIS Online Operationen.
Zum Session-Thema
fand vom 27. Mai 2026 (Mittwoch) bis 29. Mai 2026 (Freitag) in Roppongi, Tokyo Midtown statt.Die "23. GIS Community Forum" wurde abgehalten.Die Zusammenfassung der gesamten Session finden Sie hier.
Am letzten Tag, dem 29., von 15:55 Uhr, wurde in der Session "Grundkurs ArcGIS API for Python: Bedienung und Automatisierung von Web GIS" die ArcGIS API for Python als Bibliothek für die Automatisierung von Web GIS vorgestellt und einige Tipps gegeben.
In den Tipps wurden hauptsächlich praktische Inhalte vorgestellt, aber es gab auch Feedback wie "Ich möchte, dass man das Gleiche selbst machen kann" oder "Ich möchte mehr Beispielcode sehen", daher habe ich beschlossen, dies im Artikel zu erklären.
Die ArcGIS API for Python ist eine Python-basierte API, mit der Sie Operationen in ArcGIS Online und ArcGIS Enterprise automatisieren können.
Grundlegende Erklärungen zur ArcGIS API for Python finden Sie in diesem Serienartikel.
Inhalt des Artikels
In diesem Artikel werden die in der Session vorgestellten Tipps in der Reihenfolge erklärt.
Sign-In (Authentifizierung)
- Massenlöschung von Folders und Items
- Periodische Ausführung
Inhalt der periodischen Ausführung
- Verwendung von Feature Layern
- Skript zum Aktualisieren eines Feature LayersVorbereitung für Authentifizierungs-Items
- Task-EinstellungenAuthentifizierung
- Hinweise bei gemeinsam genutzten Fällen
- Sign-In (Authentifizierung)
- Zunächst ist Sign-In (Authentifizierung) erforderlich, um auf grundlegende Funktionen von ArcGIS wie private Items oder Basiskarten zuzugreifen. Im Folgenden wird dies anhand einer Folie erklärt.
- Nach der Authentifizierung können Sie mit der ArcGIS API for Python auf öffentliche Inhalte und Ihre eigenen privaten Items zugreifen und Operationen durchführen. In einer Umgebung wie ArcGIS Pro oder ArcGIS Online, wo Sie bereits angemeldet sind, können Sie sich einfach mit GIS("home") authentifizieren.
•Python Window in ArcGIS Pro
•Notebook in ArcGIS Online / ArcGIS Enterprise
•Python.exe in der Python-Umgebung von ArcGIS Pro
In Umgebungen wie Google Colab oder wenn ArcGIS Pro nicht installiert ist, können Sie GIS("home") nicht verwenden. Dann müssen Sie sich mit ID und Passwort oder einem API-Schlüssel authentifizieren. Neben den hier vorgestellten Methoden gibt es viele weitere Authentifizierungsverfahren. Bei Interesse konsultieren Sie bitte die Dokumentation des GIS-Moduls.
ここで紹介した方法以外にも GIS モジュールの search メソッドで所有アイテムを検索し、アイテムを全て削除してからフォルダーを削除する方法でも同様の作業が実行できます。
定期実行
定期実行させる内容
この項では以下のような流れで外部 API と連携した Feature Layer の更新を行います。
次のセクションから各手順を説明します。
Feature Layer の用意
最初の手順として、更新するための材料を用意します。 以下のようなスクリプトで API から取得した情報を処理し、更新用データを作成します。 ここでは ArcGIS Online のノートブックで実行することを想定しています。 ※ArcGIS Online のノートブックの詳しい使い方はこちらを参照してください。
実行する時は ArcGIS Online のノートブックで新しいノートブックを Standard で作成し、1 セル目に上書きするように貼り付けてください。
from arcgis.gis import GIS
from arcgis.features import FeatureLayerCollection
import requests
import time
# 1) 接続(ここでは home で認証する)
gis = GIS("home")
# 2) ISS API から取得
ISS_URL = "http://api.open-notify.org/iss-now.json" # [1](http://open-notify.org/Open-Notify-API/ISS-Location-Now/)
def fetch_iss():
r = requests.get(ISS_URL, timeout=30)
r.raise_for_status()
data = r.json()
lat = float(data["iss_position"]["latitude"])
lon = float(data["iss_position"]["longitude"])
ts_sec = int(data["timestamp"])
ts_ms = ts_sec * 1000
return lat, lon, ts_ms
# 3) Hosted Feature Service 作成
SERVICE_NAME = "ISS_Last3Points"
service_item = gis.content.create_service(
name=SERVICE_NAME,
service_type="featureService"
)
flc = FeatureLayerCollection.fromitem(service_item)
# 4) レイヤー定義
layer_def = {
"layers": [{
"name": "<作成する Feature Layer の名前>",
"type": "Feature Layer",
"geometryType": "esriGeometryPoint",
"spatialReference": {"wkid": 4326},
"objectIdField": "ObjectID",
"fields": [
{"name": "ObjectID", "type": "esriFieldTypeOID", "alias": "ObjectID"},
{"name": "latitude", "type": "esriFieldTypeDouble", "alias": "latitude"},
{"name": "longitude", "type": "esriFieldTypeDouble", "alias": "longitude"},
{"name": "obs_time", "type": "esriFieldTypeDate", "alias": "obs_time"},
]
}]
}
# 5) 定義をサービスに追加
flc.manager.add_to_definition(layer_def)
layer = flc.layers[0]
# 6) 初期 3 件投入(ISS API 推奨に考慮して 5 秒間隔)
adds = []
for i in range(3):
lat, lon, ts_ms = fetch_iss()
adds.append({
"geometry": {"x": lon, "y": lat, "spatialReference": {"wkid": 4326}},
"attributes": {"latitude": lat, "longitude": lon, "obs_time": ts_ms}
})
if i < 2:
time.sleep(5) # ポーリング過多を避ける [1](http://open-notify.org/Open-Notify-API/ISS-Location-Now/)
res = layer.edit_features(adds=adds)
print("作成したアイテム ID:", service_item.id)
print("レイヤーURL:", layer.url)
print("追加結果:", res)
実行が終わるとこのようにアイテムが作られます。スクリプトで指定した名前でアイテムが作成されていることを確認します。
これで更新用データの用意はできました。
Feature Layer を更新するスクリプト
先ほど作成したアイテムの ID を使って更新をします。 アイテム ページの [URL] の下の下矢印を開いてアイテム ID を探します。
次に、以下のスクリプトを使用してデータの更新を行います。 ここでは 3 件あるフィーチャのうち、最も古いものを削除し、取得したデータを新たに追加するように処理しています。新しく Standard でノートブックを作成し、データ作成時と同じように 1 セル目に上書きするように貼り付けてください。
from arcgis.gis import GIS
import requests
gis = GIS("home")
ITEM_ID = "<作成したアイテム ID>"
ISS_URL = "http://api.open-notify.org/iss-now.json"
def fetch_iss():
r = requests.get(ISS_URL, timeout=30)
r.raise_for_status()
data = r.json()
lat = float(data["iss_position"]["latitude"])
lon = float(data["iss_position"]["longitude"])
ts_sec = int(data["timestamp"])
ts_ms = ts_sec * 1000
return lat, lon, ts_ms
# 1) Abrufen der Lage
item = gis.content.get(ITEM_ID)
layer = item.layers[0]
# 2) Bestehende 3 Einträge in zeitlicher Reihenfolge abrufen (älteste zuerst)
# order_by_fields entspricht dem REST orderByFields Parameter
fset = layer.query(
where="1=1",
out_fields="ObjectID,obs_time",
order_by_fields="obs_time ASC"
)
features = fset.features
# 3) Wenn es 3 oder mehr Einträge gibt, den ältesten löschen
if len(features) >= 3:
oldest_oid = features[0].attributes.get("ObjectID")
# deletes im edit_features erwartet eine durch Kommas getrennte Zeichenkette von OIDs [10](https://gis.stackexchange.com/questions/278263/arcgis-api-for-python-delete-multiple-features)
del_res = layer.edit_features(deletes=str(oldest_oid))
print("Gelöscht:", del_res)
# 4) Einen neuen Eintrag hinzufügen
lat, lon, ts_ms = fetch_iss()
new_feature = {
"geometry": {"x": lon, "y": lat, "spatialReference": {"wkid": 4326}},
"attributes": {"latitude": lat, "longitude": lon, "obs_time": ts_ms}
}
add_res = layer.edit_features(adds=[new_feature])
print("Hinzugefügt:", add_res)
# 5) Aktuelle Anzahl der Einträge überprüfen
cur_cnt = layer.query(where="1=1", return_count_only=True)
print("Aktuelle Anzahl:", cur_cnt)
Wenn die Ausführung erfolgreich ist, werden unten Nachrichten zum Löschen und Aktualisieren angezeigt.
Damit ist die Vorbereitung des Skripts für die Aktualisierung abgeschlossen. Als Nächstes erstellen wir ein Element zur Überprüfung der Aktualisierung.
Vorbereitung des Verifizierungselements
Zuerst erstellen wir eine Webkarte. Öffnen Sie das Feature Layer-Element im Map Viewer und klicken Sie auf [Speichern und öffnen], dann [benennen Sie es und klicken Sie auf Speichern], um die Webkarte zu erstellen.
Wenn die Aktualisierung durchgeführt wird, können Sie die Karte laden und die Aktualisierung überprüfen. Außerdem können Sie im Webmap die Einstellungen des Feature Layers öffnen und das Kontrollkästchen „Layer automatisch aktualisieren“ aktivieren, so dass die Aktualisierung auch ohne Neuladen des Browsers erkannt wird.
Unten ist ein Beispiel für die Ausführung.
Als Nächstes konfigurieren wir die Einstellung, um den erstellten Punkt regelmäßig zu aktualisieren.
Einstellung der Aufgabe
Bei der Ausführung der Aufgabe wird je nach Ausführungszeit ein Kredit verbraucht.Bei der Konfiguration sollten Sie Ihre eigenen verfügbaren Credits berücksichtigen.
Wir nutzen die Task-Funktion von ArcGIS Online Notebooks, um den erstellten Datensatz regelmäßig zu aktualisieren.
Wählen Sie den [Task]-Tab oben im Notebook aus und klicken Sie auf [Task erstellen].
Geben Sie einen Titel ein [] an und klicken Sie auf Weiter, um Details zur Task-Skizze einzurichten. Führen Sie die Einrichtung durch und klicken Sie auf [Erstellen]. Damit wird das Notebook in den angegebenen Intervallen ausgeführt.
Überprüfung der Aktualisierung
Wenn Sie auf den Namen der erstellten Task klicken, können Sie den Verlauf der ausgeführten Tasks überprüfen. Die folgende Abbildung zeigt den Verlauf bei einem Intervall von 15 Minuten.
Nachdem bestätigt wurde, dass Updates durchgeführt werden, öffnen Sie das Verifizierungs-Webmap. Dort sehen Sie eine Darstellung der Positionen der Internationalen Raumstation mit einem Intervall von 15 Minuten. Im folgenden Beispiel wurde zuvor im Map Viewer die Webmap-Symbolleiste bearbeitet.
Hinweise bei gemeinsamer Nutzung
Bis hierhin haben wir ein Feature Layer und eine Webmap erstellt, die regelmäßig aktualisiert werden. Mit dieser Methode können andere Personen jedoch nicht das Feature Layer sehen, das direkt vom Skript aktualisiert wird.
Hier teilen wir Anzeige- und Bearbeitungsrollen auf, indem wir einen Layer-View erstellen. Der Layer-View kann über das Menü „View Layer erstellen“ rechts neben dem Feature Layer-Element erstellt werden. Eine detaillierte Anleitung finden Sie in