Kategorien

Eigene Geoprocessing-Tools mit ArcObjects Teil 1: Einführung

Vor einem knappen Jahr habe anlässlich eines Vortrages im Rahmen des Schweizer esriuserforums ein paar Folien zum Thema Eigene Geoprocessing-Tools mit ArcObjects gepostet. Seitdem habe ich weiter an den Tools gearbeitet und möchte die gesammelten Erfahrungen und Erkenntnisse auf mehrere Postings verteilt zusammenfassen.

In ArcGIS Desktop gibt es seit der Version 9.0 eine neu gestaltete Geoprocessing-Umgebung, die eine grosse Menge an Funktionalität zur Verfügung stellt. Die Grundeinheit in dieser Umgebung sind sogenannte Geoprocessing-Tools, die einzeln oder miteinander kombiniert verwendet werden können. Benötigt man aber Funktionalität, die nicht als GP-Tool zur Verfügung steht, kann man dies entweder im Model Builder oder als Python-Skript nachbauen oder – und darum geht es in dieser Beitragsreihe – man kann eigene GP-Tools entwickeln.
In meinem konkreten Fall habe ich Funktionalität in Zusammenhang mit geometrischen Netzwerken (Gewässernetzwerk) benötigt, die nicht als GP-Tool vorliegt.

Um eigene GP-Tools zu erstellen, müssen eigentlich nur zwei ArcObjects-Interfaces implementiert werden: IGPFunctionFactory und IGPFunction. IGPFunctionFactory ist dabei eine logische Gruppierung von Tools, die den Zugang zu den eigentlichen Tools ermöglicht. Die Klasse, die IGPFunctionFactory implementiert, muss daneben auch in der Komponenten-Kategorie (“component category”) ESRI Geoprocessor Function Factory (GUID: {FD939A4A-955D-4094-B440-77083E410F41}) registriert werden. Die Tools selber werden mit der Implementierung des IGPFunction-Interfaces erstellt.

Übersicht:
Teil 1 (Einführung)
Teil 2 (Implementierung von IGPFunctionFactory)
Teil 3 (Implementierung von IGPFunction)
Teil 4 (Implementierung von IGPFunction:ParameterInfo)
Teil 5 (Implementierung von IGPFunction:Validate)
Teil 6 (Implementierung von IGPFunction:Execute)
Teil 7 (Fazit)

Leave a Reply

  

  

  

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>