260 likes | 457 Views
Programmierung mit ArcObjects. Proseminar Geoinformation II. Frank Münster. Inhalt. 1. Einführung - Was ist ArcObjects? Was ist die Component Object Model (COM)-Architektur? 2. Einbinden von Funktionen in ArcMap Aufgabe 1: „Custom Toolbar“ 3. Programmierung Programmiersprachen / Syntax
E N D
Programmierung mit ArcObjects Proseminar Geoinformation II Frank Münster
Inhalt • 1. Einführung - Was ist ArcObjects? • Was ist die Component Object Model (COM)-Architektur? • 2. Einbinden von Funktionen in ArcMap • Aufgabe 1: „Custom Toolbar“ • 3. Programmierung • Programmiersprachen / Syntax • ArcObjects Developer Help • Programmbeispiel: „Zoom in“ • Aufgabe 2: „Zoom out / Message Box“
Was ist ArcObjects? • ArcObjects ist eine Bibliothek von Klassen, aus der die ArcGis-Software besteht. • ArcObjects ist nach Microsoft‘s COM (Component Object Model)-Architektur aufgebaut • Es ist also keine Programmiersprache • Programmierung: Visual Basic, VBA, C++, u.a.
Anwendungsmöglichkeiten • Erweiterung der Software • Hinzufügen neuer Funktionen • Vereinfachen häufig genutzter Vorgänge (Makros)
Die COM-Architektur • COM ist eine Art „Standard“ oder „Norm“ der Software-Entwicklung. • Genauer: Es ist eine Client / Server-Architektur • Server stellt Funktionalitäten bereit und der Client nutzt diese. • COM ermöglicht die Kommunikation zwischen Objekten auf binärer Ebene (Maschinencode) • Vorteil: Objekte können auf binärer Ebene „wiederverwendet“ werden, Weiterentwickler brauchen keinen Zugang zum Quelltext. • Client muß lediglich wissen, welche Funktionen vom Server zur Verfügung gestellt werden, um sie durch Methodenaufrufe zu nutzen.
Interface-Based-Programming • Objekte besitzen Schnittstellen („Interfaces“). • Kommunikation zwischen den Objekten läuft über ihre Schnittstellen ab. • Das Interface definiert, was ein Objekt „tun“ kann, die Klasse definiert, wie es „getan“ wird. • Wie es intern „getan“ wird, braucht der Programmierer nicht zu wissen.
Einbinden von Funktionen • Neue Funktionen müssen irgendwie in die Software integriert werden, um sie nutzbar zu machen. • Erzeugen einer neuen Toolbar
Erzeugen einer Toolbar Menü: Tools „Customize“ clicken...
Erzeugen einer Toolbar Toolbars-Karte... „New...“ clicken... OK...
Funktionen hinzufügen Neue Toolbar „Commands“-Karte... Funktionen aus dem Commands-Menü per „Drag & Drop“ auf die neue Toolbar übertragen...
Icons ändern Bei offenem Customize-Fenster Rechtsclick auf das Icon... „Change Button Image...“
Aufgabe 1 • Kopieren Sie die Dateien Europa4.mxd und Europa4.mxt aus dem Verzeichnis „V:\F_M“ in Ihr Home-Verzeichnis. • Öffnen Sie Europa4.mxt (Template) in ArcMap. • Erzeugen Sie eine Toolbar, speichern Sie diese in „Europa4.mxt“. (Tools-Menü, Customize clicken) • Fügen Sie die Funktion „Pan“ hinzu, ändern Sie danach das Button-Image.
Programmierung • Durch die COM-Architektur ist die Entwicklung mit ArcObjects relativ unabhängig von der Programmiersprache. • Programmiert werden kann u.a. mit C++, Visual Basic, VBA, etc.
Programmierung • In das System ist bereits ein Microsoft Visual-Basic-Editor integriert. • Die hier verwendete Sprache ist jedoch nicht Visual Basic, sondern Visual Basic for Applications (VBA). • Der Unterschied: Mit Visual Basic können eigenständige Programme erstellt werden, VBA funktioniert jedoch nur in der entsprechenden Applikation (hier: ArcMap). • Die Syntax ist jedoch die gleiche wie bei Visual Basic.
Visual Basic - Syntax (1) „Sub“ kennzeichnet den Beginn einer Prozedur oder eines Programms, „End Sub“ das Ende. Mit dem Apostroph lassen sich Kommentare markieren. Sub Prozedur() ‘Programmtext End Sub „Dim ... As ...“ ist die Variablen-deklaration in VBA und VB. Die Variable „i“ wird als ganze Zahl eingeführt (Integer). Dim i As Integer
Visual Basic - Syntax (2) Zeiger: Anstatt der üblichen Variablen-zuweisung ohne „Set“ wird hier in der Variablen „pDoc“ ein „Zeiger“ auf das Objekt „ThisDocument“ gespeichert. Set pDoc = ThisDocument Statt den aus Java bekannten geschweiften Klammern werden in VB/ VBA die Kommandos einer If-Anwei-sung duch „Then“ und „End If“ markiert. If a<b Then ... End If
Message Box Um mit dem Benutzer in Dialog zu treten, ist die aus Visual Basic stammende „Message Box“ ein wichtiges und einfach anzuwendendes Hilfsmittel.
Message Box - Beispiel Dim Antwort As Integer Antwort = MsgBox(“Meldung", vbYesNo, “Titel") If Antwort = vbYes Then ... End If Art der Box Text in der Titelzeile Text in der Box
Erzeugen eines Makro (1) „Tools“-Menü... „Macros...“ clicken
Erzeugen eines Makro (2) „Macro name“ eintragen... „Create“ clicken... • Nach diesen Schritten öffnet sich automatisch der Visual Basic-Editor und man kann den Programmtext schreiben.
Erzeugen eines Makro (3) Nach dem Erzeugen: Makro ist unter Customize / Commands in der Kategorie „Macros“ verfügbar. Von hier aus kann das Makro nun per „Drag & Drop“ in eine „Custom Toolbar“ integriert werden.
ArcObjects Developer Help Programme> Gis> ArcGIS> ArcObjects Developer Help
ArcObjects Developer Help • Detaillierte Beschreibung aller Klassen, Interfaces, Methoden usw. • Teilweise mit Programmbeispielen • Wichtig zum Verständnis vorhandener Quelltexte • Nützlich um neue Methoden und Möglichkeiten des Systems kennenzulernen.
Programmbeispiel Sub NeuerZoom() Dim pDoc As IMxDocument Dim pEnv As IEnvelope Set pDoc = ThisDocument Set pEnv = pDoc.ActiveView.Extent pEnv.Expand 0.5, 0.5, True pDoc.ActiveView.Extent = pEnv pDoc.ActiveView.Refresh End Sub
Aufgabe 2 • Unter „V:\F_m“ liegt das vorherige Beispiel als „Macro.txt“ vor. Erzeugen Sie ein Macro und kopieren Sie das Beipiel hinein. • Integrieren Sie das Makro in Ihre Custom-Toolbar. • Der Programmtext soll nun so verändert werden, daß das Makro zunächst einzoomt, dann auf Anfrage hin (über die Message Box) wieder zurückzoomt. • Dim Antwort As Integer • Antwort = MsgBox(“Meldung", vbYesNo, “Titel") • If Antwort = vbYes Then ... • Tip: Um herauszufinden, wie man herauszoomt, verwenden Sie ArcObjects Developer Help (Expand-Methode)!