Python Toolbox mit arcpy.GeocodeAddresses_geocoding()

Das Ziel: Innerhalb eines größeren Workflows im Modelbuilder soll ein Werkzeug Firmenadressen aus einer Exceltabelle geokodieren, um daraus eine interaktive Karte mit Attributen (PDF) zu erstellen.
Der Weg: eher steinig…
Der Grund: Esri geht bei der Erstellung des deutschen Sprachpakets „zu weit“ und übersetzt Teile von erforderlichen Parametern in arcpy Funktionen auch ins Deutsche. Unter anderem im Werkzeug „Adressen geokodieren“.

Aber beginnen wir am Anfang.

Zunächst wurde Geoverarbeitungswerkzeug „Adresse geokodieren“ per Hand in ArcGIS Pro getestet und erfolgreich durchgeführt.
Hinweis: Für die Nutzung des ArcGIS World Geocoding Services muss der Nutzer bei Esri angemeldet sein, da dieses Tool Credits benötigt.

Sofort nach der Anmeldung kann auch der Geokodierungsservice von Esri ausgewählt, sowie die Felder aus dem Service für Adresse, PLZ, Stadt, usw. belegt werden:

Soweit so gut.

Man sollte meinen, dass dieses Werkzeug innerhalb des Modelbuilders genauso funktionieren sollte. Aber dem ist nicht so.

Nun dann – wir sind ja ArcGIS und Python Experten. Warum schreiben wir nicht „schnell“ eine Python-Toolbox?
Gesagt getan. Alles dauert natürlich länger, weil man möglichst viele Fehler abfangen möchte, einen Try-Except Block verwendet, aussagekräftige Fehlermeldungen generiert – letztendlich das Tool ausführt und dann das ernüchternde Ergebnis:

Die Suche auf den Esri Seiten und im Netz blieb leider erfolglos, weshalb dieser Blogbeitrag entstand.

Also sind wir auf Fehlersuche gegangen: Parameter geprüft, Schreibfehler gesucht und uns die Parameter vom funktionierenden Tool in den „Results“ angesehen und festgestellt, dass die Parameterbezeichnungen für die Adressbestandteilsfelder teilweise übersetzt waren.

Das bedeutet, das Teile der erforderlichen Parameter in deutsch, andere Parameter aber in englisch zu programmieren sind, je nachdem, ob ArcGIS Pro mit deutscher oder englischer Sprachoberfläche ausgeführt wird. Zum Beispiel bleibt der Parameter „Neighborhood“  in beiden Sprachoberflächen gleich, der Parameter „Address or Place“ muss bei deutscher Sprachoberfläche aber „Adresse oder Ort“ lauten.

Daher müssen die Parameter im Code entsprechend angepasst werden:

 

Zusammenfassung

Mit deutscher Sprachoberfläche können sich erforderliche Parameter in ArcPy-Funktionen ändern. Dies ist zu überprüfen und programmatisch darauf zu reagieren.