Einleitung
Bei ESRI Japan bieten wir GIS Community Forum und ähnliche Gelegenheiten an, um Einsteiger-Sessions zu ArcPy durchzuführen. In den Umfragen dazu erhalten wir oft die Rückmeldung, dass man gerne wissen möchte, wie man im Referenzhandbuch nachschlägt. Um auf dieses Feedback einzugehen, stellt dieser Artikel Tipps vor, wie man nach der Einführung in ArcPy das Referenzhandbuch effektiv nutzt.
Dieser Artikel konzentriert sich auf die ArcPy Referenz-Seite.
Wer die Grundlagen von ArcPy umfassend lernen möchte, findet hier Lernmaterialien. Für diejenigen, die von Fachdozenten von Grund auf bis zur Anwendung lernen möchten, empfehlen wir die Nutzung von Trainingsangeboten.
Warum ist es notwendig, das Referenzhandbuch zu konsultieren?
ArcPy ist eine Bibliothek, mit der man ArcGIS Pro über Python steuern und automatisieren kann. Da man direkt aus den Geoverarbeitungswerkzeugen Skripte abrufen kann, viele Beispielcodes bereitgestellt werden und Trainingskurse existieren, kann man manchmal Skripte schreiben, ohne das Referenzhandbuch zu konsultieren. Wenn man jedoch mehrere Beispiele kombiniert, um einen kompletten Prozessablauf zu erstellen, oder wenn man Prozesse und Designs detailliert anpassen möchte, sowie wenn die Methode zur Skripterstellung aus ArcGIS Pro nicht verfügbar ist, kann es unzureichend erscheinen. In solchen Fällen hilft das Lesen des Referenzhandbuchs dabei, diese Probleme zu lösen und ermöglicht eine präzisere Steuerung der Abläufe nach eigenem Willen.
Erklärung der Bildschirmaufteilung
Das folgende Bild zeigt die Startseite des ArcGIS Pro Python-Referenzhandbuchs, also die Startseite des ArcPy-Referenzhandbuchs.
Inhalte zu ArcPy sind von dieser Seite aus zugänglich. Bei Geoverarbeitungswerkzeugen gelangt man über den neben dem Python-Tab liegenden Tab „Werkzeugreferenz“ dorthin.
Links auf der Seite werden „ArcPy-Funktionen“, „ArcPy-Klassen“ sowie Module nach Funktionalität sortiert angezeigt. Einige häufig genutzte stellen wir hier vor.
Datenzugriffsmodul
Hier sind Klassen und Funktionen zum Zugriff auf Daten zusammengefasst.Die Describe-Funktionund Cursor sind typische Beispiele.
Mapping-Modul
Es wird verwendet, um Projektdateien (.aprx), Karten und Layer zu bearbeiten. Es wird häufig bei der Automatisierung von Kartenerstellung und Export eingesetzt. Dieses Modul ist wahrscheinlich vielen am vertrautesten.Im Tutorialwird der gesamte Ablauf vom Abrufen der Projektdatei bis zum Export der erstellten Karte erklärt.
Sharing-Modul
Es dient dazu, Inhalte von ArcGIS Pro zu ArcGIS Online oder ArcGIS Enterprise hochzuladen. Dabei können nicht nur Karten und Layer, sondern auch Werkzeuge und Dienste veröffentlicht und geteilt werden.
Neben Modulen und Geoverarbeitungswerkzeugen gibt es viele weitere Klassen und Funktionen. Details finden Sie unter ArcPy-Klassen und ArcPy-Funktionen
where_clause以外は全て None やデフォルト値を選択しています。None やデフォルト値を使用する場合は書かなくても動作に影響はありません。次の図のように不要なパラメーターを省略するとよりすっきりした見た目になります。
サンプル コード
Python タブを開くと、パラメーターの下にコードのサンプルが表示されます。主に Python ウィンドウで実行するためのスクリプトとスタンドアロン スクリプトがあります。前者は不必要なパラメーターが削られているスクリプトであるため、シンプルなコードを作成する手掛かりにも使えます。
クラス・ 関数のリファレンスの読み方
クラスの場合は以下のような見出しでページが構成されています。
・サマリー
・説明
・プロパティ
・方法の概要
・方法
・構文
・戻り値
・コードのサンプル
関数の場合は以下のようになります。
・サマリー
・説明
・構文
・戻り値
・コードのサンプル
前述のツールの場合でも紹介していますが、「{}」がついているものは任意となるのでパラメーターやメソッドを入力する時に自分で調整します。
ここでは最もよく目にするクラスの 1 つである ArcGISProject クラスを見てみましょう。
冒頭からサマリーや説明が書かれていますが、その次にプロパティが現れます。このセクションでは各クラスに含まれるプロパティ、その説明とデータ タイプが書かれています。プロパティが別のクラスになる場合はリンクから辿ることもできます。
その次はクラスに含まれるメソッドの説明が現れます。メソッドについてはまず、「方法の概要」セクションで各メソッドの名前と短い概要が列挙され、その次の「方法」セクションで個別に詳しくメソッドの説明が書かれています。
サンプル コードはクラスや関数により数が異なります。例えば、ArcGISProject クラスでは 8 つのサンプル コードがあります。
リファレンスを見たい場面 -Python に送信機能が使えないとき-
ここまで ArcPy リファレンスの構成についてツールと「クラス・関数」に分けて確認しました。ArcPy でスクリプトを作成する際にはリファレンスを見ながら書いていくと思いますが、ArcGIS Pro を使用する場合はツールの履歴画面から「Python ウィンドウに送信」や「ノートブックに送信」を使用してスクリプトの一部を作る方もいると思います。
この手法はツールのみが対象で、ツールにないシンボル設定やエクスポートなどのコマンドはリファレンスを参照し自作する必要があります。例えば ArcPy を利用して ArcGIS Pro 上のフィーチャ レイヤーを ArcGIS Online にフィーチャ サービスとして公開する流れは一部の過程のみツールが対応しているのでリファレンスを見ながらスクリプトを自作する必要があります。次の章ではコマンドの一例としてシンボル変更のスクリプトを見ていきます。
リファレンスを見ながら短いスクリプトを作成してみよう
今回はレイヤーの見た目を変更したいと思います。色分けをするレンダラーと色を設定するシンボルを使って変更を行います。
# lyrs はレイヤーのリスト、lyr は一つ一つのレイヤーのオブジェクト
for lyr in lyrs:
if lyr.name == "放置車両":
sym = lyr.symbology
sym.updateRenderer("GraduatedColorsRenderer") # 等級色
sym.renderer.classificationField = "total" #分類するフィールド名
sym.renderer.classificationMethod = "Quantile" # Quantil-Klassifikation
sym.renderer.breakCount = 5 # Klassen
lyr.symbology = sym
Zuerst greifen wir auf den Renderer zu.Layer-Klasse von symbology-Eigenschaft abrufen, um Zugriff auf den Renderer zu erhalten.
sym = lyr.symbology
Da wir diesmal das Symbol ändern,führen wir die updateRenderer-Methode der symbology-Klasse aus, aber schauen wir uns hier die Referenz an. Es gibt einen erforderlichen Parameter, der aus einer vorgegebenen Liste von Zeichenfolgen ausgewählt wird. Da wir eine GraduatedColorsRenderer verwenden wollen, geben wir "GraduatedColorsRenderer" ein. Die fünf Parameterpunkte finden Sie in der Liste unter der Abbildung.sym.updateRenderer("GraduatedColorsRenderer")
GraduatedColorsRenderer
- → Graduierte FarbenGraduatedSymbolsRenderer
- → Graduierte SymboleSimpleRenderer
- → Einfaches SymbolUnClassedColorRenderer→
- StretchUniqueValueRenderer
- → Einzigartiger WertAls Nächstes greifen wir auf die renderer-Eigenschaft der symbology-Klasse zu, um den Inhalt des Renderers festzulegen.
sym.renderer
Hier finden Sie das Objekt
, das mit updateRenderer angegeben wurde: GraduatedColorsRenderer . Als Nächstes sehen wir uns die Referenz der GraduatedColorsRenderer-Klasse an. Es gibt viele Eigenschaften, die eingestellt werden können, aber hier wollen wir das Feld für die Farbklassifizierung, die Klassifizierungsmethode und die Anzahl der Klassen festlegen. Um diese drei einzustellen, setzen wir die Eigenschaften "classificationField", "classificationMethod" und "classBreaks". Da wir nach Quantilen klassifizieren wollen, geben wir für "classificationMethod" Quantile an. Für die Klassifizierungsmethode siehe bitte Datenklassifizierungsmethoden.
sym.renderer.classificationField = "total"
sym.renderer.classificationMethod = "Quantile"
sym.renderer.breakCount = 5
Zum Schluss weisen wir der symbology-Eigenschaft der Layer-Klasse das konfigurierte symbology-Objekt zu.
lyr.symbology = sym
So konnten wir ein Skript erstellen, das den Ablauf zum Ändern von Symbolen durch Einstellen von Methoden und Eigenschaften zeigt. Hier haben wir "GraduatedColorsRenderer" angegeben und eine Symboländerung mit dem Renderer durchgeführt, aber man kann es auch so anpassen, dass man "SimpleRenderer" angibt und über die symbol-Eigenschaft ein einzelnes Symbol einstellt.SimpleRenderer
for lyr in lyrs:
if lyr.name == "<Layername>":
sym = lyr.symbology
sym.updateRenderer("SimpleRenderer")
sym.renderer.symbol.applySymbolFromGallery("Bus Terminal")
sym.renderer.symbol.color = {"RGB" : [243,32,41,100]}
sym.renderer.symbol.outlineColor = {"RGB" : [0,0,0,100]}
sym.renderer.symbol.size = 21
lyr.symbology = sym
Wenn Sie ein solches Symbol im Skript erstellen möchten, müssen Sie die symbol-Referenz beachten und entsprechend vorgehen.
Abschließend
wurde in diesem Artikel erklärt, wie man ArcPy-Referenzen untersucht und wie man die Struktur und Ansicht der Referenzseiten nutzt. Dies kann hilfreich sein, wenn Sie Beispielcode für Ihre eigene Umgebung anpassen oder neue Skripte erstellen. Ich hoffe, dieser Artikel senkt die Einstiegshürde für ArcPy etwas.
ArcPy Einsteiger-Workshop
Wenn Sie ArcPy umfassend lernen möchten, sehen Sie sich dies hier an.
ArcPy Blogartikel finden Sie hier