Python Add-Ins in ArcGIS 10.1

Letztens habe ich mir das Live Training Seminar zur Erstellung von Python Add-Ins in ArcGIS 10.1 angeschaut und bin ziemlich begeistert. Durch die neue Integration von Python rückt die Sprache immer mehr in den Kern von ArcGIS und es eröffnen sich zahlreiche neue Möglichkeiten, um sich die tägliche Arbeit mit dem Programm zu erleichtern.

Die Palette reicht von simplen Aktionen nach Klick auf einen Button bis hin zu komplexen Erweiterungen, die bei bestimmten auftretenden Ereignissen ihre Funktionen ausführen. Andrew hat in seinem Blog eine gute kurze Übersicht dazu geschrieben.

Für die Integration wird der Add-In Wizard zur Verfügung gestellt. Dieser macht es einfach, das benötigte Add-In Projekt zu erstellen und in ArcGIS verfügbar zu machen. Der Wizard erstellt auch schon die grundsätzliche Dateistruktur für den Python Quellcode. Jetzt muss eigentlich „nur noch“ die Programmlogik geschrieben werden.

Womit ich noch nicht zufrieden bin, sind die eingeschränkten Möglichkeiten beim Debuggen der Skripte. Wenn sich ein ArcGIS-Nutzer mit wenig Python-Entwicklungserfahrung traut, ein Skript zu erstellen, wird er vermutlich ziemlich schnell auf Fehler treffen, die er nicht erklären und nachvollziehen kann. Hier kann der immer wiederkehrende Zyklus aus Fehlerbehebung im Code, Installieren und Testen in ArcMap recht schnell zu Frust führen, wenn keine aussagekräftigen Fehlermeldungen kommen. Es wird hier empfohlen, im Quellcode ab und zu print Befehle einzufügen. Dadurch werden zumindest deren Ausgaben im ArcGIS Python Fenster ausgegeben. Es ist zu hoffen, dass hier in Zukunft weitere Möglichkeiten hinzukommen.

Bei dem Training Seminar hatte ich noch die Frage gestellt, ob es in Zukunft wieder ein Objektmodell-Diagramm geben wird wie es in Version 9.3 noch zur Verfügung stand. Das wurde leider verneint und nur auf die Hilfe verwiesen. Schade, wirklich schade! Zumindest gibt es mittlerweile eine inoffizielle Version für das geoprocessing mit arcpy.

Jetzt bin ich allerdings erst einmal auf das nächste Release gespannt und freue mich auf den ersten Praxistest.

Geoverarbeitungsskripte mit Python-IDEs programmieren

Ein großer Vorteil für die Verwendung von Python-Skripten bei Geoverarbeitung oder sonstiger Datenverarbeitung ist die extrem schnelle Entwicklungszeit. Seit ArcGIS 10 gibt es auch die direkte Möglichkeit, im Python-Fenster von ArcMap die Befehle einzutippen.

Für die Entwicklung von Skripten außerhalb von ArcGIS sind allerdings Debug-Funktionen nötig. Welche kostenlosen Entwicklungsumgebungen (IDE’s) stehen uns hier zur Verfügung?

Die Standard-Entwicklungsumgebung für Python namens IDLE bietet bezogen auf Debugging nur wenige Funktionen. Ein paar mehr Funktionen bietet PythonWin, das einigen noch von ArcGIS 9.1 bekannt sein könnte, denn damals wurde es mit ArcGIS automatisch installiert.

Was gibt es an Alternativen? Da wäre zum Einen Eclipse: Python-Support kann hier über das Plugin PyDev integriert werden. Die Installation ist hier sehr gut beschrieben. Ist alles korrekt eingerichtet, stehen dann komfortable Entwicklertools zur Verfügung. Allerdings ist Eclipse eine wirklich mächtige aber auch komplexe Entwicklungsumgebung. Bei kleinen Skripten, wie sie typischerweise von Einsteigern geschrieben werden, bedeutet das einen hohen Einarbeitungsaufwand für ein paar Codezeilen. Viele GIS-Nutzer haben zudem keinerlei Programmiererfahrung mit Eclipse. Für einige wirkt die IDE deshalb eher abschreckend. Kurz: Erste Wahl für erfahrene Entwickler mit größeren Projekten, aber zu viel Overhead für den „ArcGIS-Gelegenheitsprogrammierer“.

Eine weitere Entwicklungsumgebung ist der PyScripter. Gegenüber Eclipse hat der PyScripter eine klare strukturierte, ansprechende und leicht zu erlernende / zu bedienende Oberfläche. Dadurch kann man sich sofort auf die eigentliche Skriptentwicklung fokussieren ohne sich um die Bedienung der IDE allzu große Gedanken zu machen. Er bietet eine große Auswahl an Funktionen: Syntaxanalyse, Codevervollständigung, Debugfunktionen und -Fenster sind nur einige. Für alle aktuellen Python-Versionen gibt es eine passende PyScripter-Version. Auch diese IDE ist – wie alle hier gelisteten – kostenlos.

Hauptfenster der PyScripter IDE
Fazit: Aus meiner Sicht kann ich wärmstens den PyScripter empfehlen. Ich nutze ihn seit ca. 1,5 Jahren, denn er hat alles was ein Entwickler (oder eine Entwicklerin) im GIS-Umfeld braucht.

XY-Daten aus Textdateien importieren und als Layer darstellen

GPS-Daten oder andere Geometriedaten, die in Textdateien abgespeichert wurden, können in ArcMap als neuer Punktlayer geladen werden, ohne vorherige Konvertierung in ein ESRI-Format.

ArcMap Menü für den Import von XY-Ereignislayern

Die Funktion zum Importieren der Textdateien finden Sie im Menü „Datei“ > „Daten hinzufügen“ > „XY-Daten hinzufügen“ oder im Kontextmenü einer bereits geladenen Tabelle/Datei.

Voraussetzung für den Erfolg der Funktion ist das korrekte Erkennen der Datenstrukturen in der Datei. Zum Erkennen des Dateiformates benutzt ArcGIS sog.schema.ini-Dateien. Dieses sind weitere Textdateien, die im gleichen Verzeichnis wie die eigentlichen Dateien liegen. Beim ersten Zugriff auf die Tabelle legt ArcGIS diese Datei an. Die schema.ini-Datei definiert das Format der Textdateien und durch welches Zeichen die Daten/Spalten getrennt sind, z.B. Komma oder Semikolon. Beispiel: Wenn in Ihrer Datei “gps-daten.txt“ die X- und Y-Koordinaten durch Semikolon getrennt sind, sollte die schema.ini folgendermaßen aussehen:

[gps-daten.txt]
Format=Delimited(;)

Wenn im Dialog zum Anzeigen der XY-Daten nicht die korrekten Feldnamen erscheinen, sind die Windows Regions-und Ländereinstellungen ebenfalls eine mögliche Fehlerquelle: Benutzen Sie ein deutsches Betriebssystem, wird in der Regel das Komma als Dezimaltrennzeichen verwendet. Sind aber in Ihrer Textdatei Dezimalpunkte gespeichert, ist entweder ein „Suchen & Ersetzen“ notwendig, oder man ändert besagte Ländereinstellungen.

Eine weitere wiArcMap Dialog für den Import von XY-Ereignislayernchtige Information ist beim Import der Raumbezug der zu importierenden Daten: Lassen Sie sich in jedem Fall genaue Informationen zum Koordinatensystem vom Datenlieferanten geben, wenn Sie Ihre Daten nicht selbst aufgenommen haben. Wenn das angegebene Koordinatensystem nicht stimmt, können die Daten nicht lagerichtig angezeigt werden! Entsprechende Richtlinien zu Datumstransformationen müssen unbedingt berücksichtigt werden!

Wenn der Import ohne Fehler klappt, erstellt ArcMap einen neuen Layer im Inhaltsverzeichnis. Dieser Ereignislayer hat u.a. die Eigenschaft, auf Änderungen an der Datenquelle direkt beim nächsten Anzeigevorgang zu reagieren. Ändern sich also die Punktkoordinaten in der Quelldatei, werden auch Ihre Punkte im GIS verschoben!

Das Importieren von Linien- oder Flächendaten aus Textdateien gestaltet sich zwar ungleich schwieriger, ist aber doch grundsätzlich möglich. Dieses ist jedoch nicht als Standard-Funktion in die Oberfläche von ArcMap 10 eingebaut. Vielmehr findet man auf den ESRI-Seiten zum Download eine Toolbox „SampleTools“. Einmal eingebunden, verfügt man über ein Geoverarbeitungswerkzeug „Create Features from Text File“. Hier sollte man sich aber intensiv mit der Tool-Hilfe auseinandersetzen. In der Version 9.3.1 wurde die Toolbox übrigens noch standardmäßig mit installiert und der Download entfiel.

Weitere Möglichkeiten, z.B. Erweiterungen, AddIns oder Python-Skripte stehen über das ESRI Resource Center zur Verfügung.