Top Banner
Programmierung mit Programmierung mit ArcObjects ArcObjects Frank Frank Münster Münster Proseminar Proseminar Geoinformation II Geoinformation II
26

Programmierung mit ArcObjects Frank Münster Proseminar Geoinformation II.

Apr 06, 2016

Download

Documents

Lothar Lange
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Programmierung mit ArcObjects Frank Münster Proseminar Geoinformation II.

Programmierung mit ArcObjectsProgrammierung mit ArcObjects

Frank MünsterFrank Münster

Proseminar Geoinformation IIProseminar Geoinformation II

Page 2: Programmierung mit ArcObjects Frank Münster Proseminar Geoinformation II.

InhaltInhalt

• 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“

Page 3: Programmierung mit ArcObjects Frank Münster Proseminar Geoinformation II.

Was ist ArcObjects?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.

Page 4: Programmierung mit ArcObjects Frank Münster Proseminar Geoinformation II.

AnwendungsmöglichkeitenAnwendungsmöglichkeiten

• Erweiterung der Software– Hinzufügen neuer Funktionen– Vereinfachen häufig genutzter Vorgänge

(Makros)

Page 5: Programmierung mit ArcObjects Frank Münster Proseminar Geoinformation II.

Die COM-ArchitekturDie 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.

Page 6: Programmierung mit ArcObjects Frank Münster Proseminar Geoinformation II.

Interface-Based-ProgrammingInterface-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.

Page 7: Programmierung mit ArcObjects Frank Münster Proseminar Geoinformation II.

Einbinden von FunktionenEinbinden von Funktionen

• Neue Funktionen müssen irgendwie in die Software integriert werden, um sie nutzbar zu machen.

• Erzeugen einer neuen Toolbar

Page 8: Programmierung mit ArcObjects Frank Münster Proseminar Geoinformation II.

Erzeugen einer ToolbarErzeugen einer Toolbar

„Customize“ clicken...

Menü: Tools

Page 9: Programmierung mit ArcObjects Frank Münster Proseminar Geoinformation II.

Erzeugen einer ToolbarErzeugen einer ToolbarToolbars-Karte...

„New...“ clicken...

OK...

Page 10: Programmierung mit ArcObjects Frank Münster Proseminar Geoinformation II.

Funktionen hinzufügenFunktionen hinzufügenNeue Toolbar

„Commands“-Karte...

Funktionen aus dem Commands-Menü per „Drag & Drop“ auf die neue Toolbar übertragen...

Page 11: Programmierung mit ArcObjects Frank Münster Proseminar Geoinformation II.

Icons ändernIcons ändernBei offenem Customize-Fenster Rechtsclick auf das Icon...

„Change Button Image...“

Page 12: Programmierung mit ArcObjects Frank Münster Proseminar Geoinformation II.

Aufgabe 1Aufgabe 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.

Page 13: Programmierung mit ArcObjects Frank Münster Proseminar Geoinformation II.

ProgrammierungProgrammierung

• 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.

Page 14: Programmierung mit ArcObjects Frank Münster Proseminar Geoinformation II.

ProgrammierungProgrammierung

• In das System ist bereits ein Microsoft Visual-Basic-Editor integriert.

• Die hier verwendete Sprache ist jedoch nicht Visual Basic, sondern Visual Basic for ApplicationsVisual Basic for Applications (VBAVBA).

• 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.

Page 15: Programmierung mit ArcObjects Frank Münster Proseminar Geoinformation II.

Visual Basic - Syntax (1)Visual Basic - Syntax (1)Sub Prozedur()

‘Programmtext

End Sub

„Sub“ kennzeichnet den Beginn einer Prozedur oder eines Programms, „End Sub“ das Ende. Mit dem Apostroph lassen sich Kommentare markieren.

Dim i As Integer „Dim ... As ...“ ist die Variablen-deklaration in VBA und VB. Die Variable „i“ wird als ganze Zahl eingeführt (Integer).

Page 16: Programmierung mit ArcObjects Frank Münster Proseminar Geoinformation II.

Visual Basic - Syntax (2)Visual Basic - Syntax (2)Set pDoc = ThisDocument Zeiger:

Anstatt der üblichen Variablen-zuweisung ohne „Set“ wird hier in der Variablen „pDoc“ ein „Zeiger“ auf das Objekt „ThisDocument“ gespeichert.

If a<b Then

...

End If

Statt den aus Java bekannten geschweiften Klammern werden in VB/ VBA die Kommandos einer If-Anwei-sung duch „Then“ und „End If“ markiert.

Page 17: Programmierung mit ArcObjects Frank Münster Proseminar Geoinformation II.

Message BoxMessage Box

Um mit dem Benutzer in Dialog zu treten, ist die aus Visual Basic stammende „Message Box“ ein wichtiges und einfach anzuwendendes Hilfsmittel.

Page 18: Programmierung mit ArcObjects Frank Münster Proseminar Geoinformation II.

Message Box - BeispielMessage Box - BeispielDim Antwort As Integer

Antwort = MsgBox(“Meldung", vbYesNo, “Titel")

If Antwort = vbYes Then

...

End If

Text in der Box

Art der Box

Text in der Titelzeile

Page 19: Programmierung mit ArcObjects Frank Münster Proseminar Geoinformation II.

Erzeugen eines Makro (1)Erzeugen eines Makro (1)„Tools“-Menü...

„Macros...“ clicken

Page 20: Programmierung mit ArcObjects Frank Münster Proseminar Geoinformation II.

Erzeugen eines Makro (2)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.

Page 21: Programmierung mit ArcObjects Frank Münster Proseminar Geoinformation II.

Erzeugen eines Makro (3)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.

Page 22: Programmierung mit ArcObjects Frank Münster Proseminar Geoinformation II.

ArcObjects Developer HelpArcObjects Developer Help

Programme> Gis> ArcGIS> ArcObjects Developer Help

Page 23: Programmierung mit ArcObjects Frank Münster Proseminar Geoinformation II.

ArcObjects Developer HelpArcObjects Developer Help

Page 24: Programmierung mit ArcObjects Frank Münster Proseminar Geoinformation II.

ArcObjects Developer HelpArcObjects 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.

Page 25: Programmierung mit ArcObjects Frank Münster Proseminar Geoinformation II.

ProgrammbeispielProgrammbeispielSub 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

Page 26: Programmierung mit ArcObjects Frank Münster Proseminar Geoinformation II.

Aufgabe 2Aufgabe 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)!