WaterGisWeb AG
Donnerbühlweg 41CH-3012 Bern
Tel. 031 / 305 18 11Fax 031 305 18 14
Python und Geoprocessing mit Eclipse und PyDev
Yvo WeidmannDipl. Ing. Geomatik FHNW
MAS Software Engineering FHB
Inhalt
• Eclipse, Bezug und Installation
• Geoprocessing
• PyDev
• Code Coverage
• PyUnit
• Debugging
• Dokumentation
• Versionierung
• Zusammenfassung
Übersichtskarte
Eclipse
Dokumentation
Python
Geoprocessing
Versionierung
PyDev
PyUnit
Code Coverage
Debugging
Eclipse
Eclipse Project: 2001 von IBM und verschiedensten
Software Herstellern gegründet
Eclipse Foundation: 2004 als unabhängige not-for-
profit reorganisiert
Breit abgestützte Open-Source Community in
Entwicklung und Nutzung
Quasi-Industriestandard in Java-Entwicklung
Unzählige Open-Source und kommerzielle PlugIns
Framework für verschiedenste Programmiersprachen
Eclipse ist eine integrierte Software
Entwicklungsumgebung (IDE)
Eclipse > Bezug
Direkt von Eclipse
Download verschiedensten Konfigurationen von
http://www.eclipse.org
Freier Eclipse Download Service
Download individuellen Konfigurationen von
http://ondemand.yoxos.com/geteclipse/start
Eclipse > Bezug > yoxos
Eclipse > Installation
Benötigt keinen Installationsvorgang auf dem lokalen
Rechner
Aktuelle Java-Laufzeitumgebung ist Bedingung
Verschiedene Konfigurationen parallel auf dem
lokalen Rechner lauffähig
Auspacken der von yoxos bereitgestellten und
heruntergeladenen ZIP-Datei
PlugIns über Find and Install direkt aus Eclipse
installierbar
Eclipse > IDE
Projekt
Explorer
Editor
Objekt
Katalog
Weiter Info (Tasks, Console, ...)
Übersichtskarte
Eclipse
Dokumentation
Python
Geoprocessing
Versionierung
PyDev
PyUnit
Code Coverage
Debugging
PyDev
Open-Source PlugIn in Eclipse
Entwicklung von Python-Programmen
http://pydev.sourceforge.net/
• Interaktive Python Konsole (ab Version 1.3.19)
• Debugging
• Code Coverage
• Unit Test
• Autocompletion
Einige Features:
• Refactoring
Übersichtskarte
Eclipse
Dokumentation
Python
Geoprocessing
Versionierung
PyDev
PyUnit
Code Coverage
Debugging
PyDev > Geoprocessing
Vorbereitung: Pfad der ArcGIS-Installation in
PYTHONPATH integrieren
ArcGIS Geoprocessor mit PyDev
Das Geoprocessor Programming Model kann direkt
verwendet werden.
Übersichtskarte
Eclipse
Dokumentation
Python
Geoprocessing
Versionierung
PyDev
Code Coverage
Debugging
PyUnit
PyDev > PyUnit
Testgetriebene Entwicklung
PyDev integriert die Unit-Test Umgebung PyUnit. Diese
kann für normale Python- und Geoprocessing-
Anwendungen verwendet werden.
• Implementation von Test-Klassen und -Methoden
• Zusammenfassung in Test-Suiten
• Automatisierte Testabläufe
• Ausgabe der Test-Erfolge
Geschäfts-Klassen
Test-Klassen
Test-Methoden
testAreFieldsEquals (TableHandlingTest.CTableHandlingTest) ... ok
testCTableParameter (TableHandlingTest.CTableHandlingTest) ... ok
testCreateTable (TableHandlingTest.CTableHandlingTest) ... ok
testCreateTableWA (TableHandlingTest.CTableHandlingTest) ... FAIL
testToStringField (TableHandlingTest.CTableHandlingTest) ... ok
===================================================================
FAIL: testCreateTableWithAttributes
(TableHandlingTest.CTableHandlingTest)
-------------------------------------------------------------------
self.assertEqual
AssertionError: 7 != 6
-------------------------------------------------------------------
Ran 5 tests in 47.422s
FAILED (failures=1)
PyDev > PyUnit
Ausgabe: Die Resultate werden in der Konsole ausgegeben.
Durchführung
Nach der Implementation der Test-Klassen und -Methoden
können die Tests automatisiert durchlaufen werden.
testAreFieldsEquals (TableHandlingTest.CTableHandlingTest) ... ok
testCTableParameter (TableHandlingTest.CTableHandlingTest) ... ok
testCreateTable (TableHandlingTest.CTableHandlingTest) ... ok
testCreateTableWA (TableHandlingTest.CTableHandlingTest) ... ok
testToStringField (TableHandlingTest.CTableHandlingTest) ... ok
-------------------------------------------------------------------
---
Ran 5 tests in 114.813s
OK
Übersichtskarte
Eclipse
Dokumentation
Python
Geoprocessing
Versionierung
PyDev
PyUnit
Code Coverage
Debugging
PyDev > Debugging
• Step In, Step Over, Step Return
• Breakpoints / Conditional Breakpoints
Debugging von Python und Geoprocessing Projekten
PyDev integriert die Unit-Test Umgebung PyUnit. Diese
kann für normale Python- und Geoprocessing-
Anwendungen verwendet werden.
Vorbereitung: Jedes lauffähige Python-Modul kann mit
dem Debugger durchlaufen werden.
Einige Features:
• Anzeige der aktuellen Werte von Variablen
PyDev > Debugging
ThreadsBreakpoints
Variables
Tools
Editor mit Breakpoints und
Debugger
PyDev > Debugging
Variables
Name Typ: Wert
PyDev > Debugging
Breakpoints
Conditional Breakpoint
Aktive und inaktive Breakpoints
Editor
PyDev > Debugging
Schrittweises Debugging
Mit den Tools Step In, Step Over und Step Return lässt sich
der Code schrittweise durchlaufen.
Debugging-Tools
Aktuelle Position des Debuggers
Toolbar
Übersichtskarte
Eclipse
Dokumentation
Python
Geoprocessing
Versionierung
PyDev
PyUnit
Code Coverage
Debugging
PyDev > Code Coverage
Code Coverage
Mit der Code Coverage Analyse lassen sich beliebige
Module analysieren
-> Anzeige von nicht verwendeten Code Zeilen und Anzahl
der Ausführungen.
• Auffinden von „totem“ Code
• Suche von nicht getestetem Code bei Unit-Tests
Anwendung:
Module Resultat
Übersichtskarte
Eclipse
Dokumentation
Python
Geoprocessing
Versionierung
PyDev
PyUnit
Code Coverage
Debugging
Versionierung
Versionierung von Python Modulen
Es existieren PlugIns für die gängigen Versionierungs-
plattformen:
• Visual Source Safe
• CVS
• Subversion
Übersichtskarte
Eclipse
Dokumentation
Python
Geoprocessing
Versionierung
PyDev
PyUnit
Code Coverage
Debugging
Dokumentation
Doxygen auch für Python
Doxygen (www.stack.nl/~dimitri/doxygen/) als externes Tool
in Eclipse eingebunden:
• Check der Kommentarsyntax, Prüfung Vollständigkeit
• Verwendung von XML-Kommentarsyntax
• Ausgabe in u.a. in HTML
Zusammenfassung
Unterstützung der Sprache Python
Eclipse mit PyDev
bildet eine geeignete Plattform für die
Entwicklung für Geoprocessing.
Grosser Memory-Verbrauch von Eclipse
Hilfreich bei grösseren Projekten
(Packages, Objektorientierte Lösungen, ...)
Zahlreiche Hilfsmittel moderner IDE's
(Unit-Test, Coverage, Refactoring, ...)
Schwerfällig bei „Alltagsproblemen“
(Console)
Overhead bei kleinen Projekten /Skripten
+
-
Schluss