Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 2/2007.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

Zusammenfassung

Lernen Sie, wie Sie Google Earth mit Access und VBA über eine spezielle COM-Schnittstelle fernsteuern.

Techniken

VBA, Formulare, Google-Earth-API

Voraussetzungen

Access 2000 und höher, Google Earth

Beispieldatei

GoogleEarther.mdb

Shortlink

457

Google Earth ferngesteuert

Sascha Trowitzsch, Berlin

Sie kennen Google Earth noch nicht? Dann wird es höchste Zeit. Das ist eine in der Standardversion kostenlose Software von Google, die verschiedene über das Internet zur Laufzeit per Streaming erhaltene Geodaten – Satellitenbilder, Geländedaten, POIs (Point-Of-Interests) und andere – kombiniert, um daraus realistische Ansichten der Erde zu erstellen, in denen live und in 3D navigiert werden kann. Und das teilweise bis hin zu Auflösungen von unter einem Meter.

Das hat nichts mit Access und Datenbanken zu tun? Richtig! Aber mit Hilfe der Programmierschnittstellen von Google Earth lässt sich im Verbund mit Access ein fast schon konkurrenzloses datenbankgestütztes GIS-System (Geografisches Informationssystem) aufbauen. Oder Sie erweitern damit bestehende Datenbanken, die Adressinformationen enthalten, mit einer Geo-Schnittstelle – und das alles zum Nulltarif.

Google Earth

Sie können sich Google Earth in der aktuellen Version 4 unter [1] herunterladen. Es handelt sich um ein etwa 13 MB großes Setup-Paket, dessen Installation sich völlig unproblematisch gestaltet. Auch die Anwendung selbst lässt sich einfach bedienen und ist robust programmiert. Die Einstellungen des Programms beschränken sich auf das Notwendigste und die Onlinehilfe im Internet ist umfangreich genug, um mit der Anwendung klarzukommen.

Google hat das System vor drei Jahren von der ehemaligen Firma Keyhole gekauft und ausgebaut. Sämtliche Daten werden, mit Ausnahme eines temporären Cache, nicht lokal vorgehalten, sondern kommen aus den Internet. Dank Googles gigantischer Server-Infrastruktur funktioniert dieses Streaming in flottem Tempo – vor allem zu Tageszeiten, an denen nicht gerade alle User ihren nächsten Urlaub mit dem Tool planen.

Die Oberfläche der Anwendung (s. Abb. 1) besteht aus einer Seitenleiste zur Steuerung der Anzeige, die sich auch ausblenden lässt, und dem Render-Fenster, das die Topografie anzeigt. Das Render-Fenster enthält rechts oben ebenfalls transparente Steuerelemente, mit denen Sie die geografische Richtung, den Zoomfaktor und die Neigung der Erdoberfläche einstellen können.

GoogleEarth.tif

Abb. 1: Google Earth Version 4

Den Bildausschnitt verschieben Sie mit der Maus. Alternativ können Sie das alles auch per Tastatur mit verschiedenen Kombinationen aus der Umschalttaste, der Strg-, der Alt- und den Pfeiltasten steuern. Da Google Earth seine Daten online bezieht, dauert das Rendern einige Zeit. Den Verlauf zeigt der Fortschrittsanzeiger mit der Bezeichnung Übertragung an.

Die Seitenleiste enthält ein Suchfeld zur Eingabe einer Adresse, zu der Google Earth in Zusammenarbeit mit Google Maps online den passenden Ort findet. Außerdem ist ein Routenplaner eingebaut, der eine Strecke von A nach B sucht und im Render-Fenster anzeigt.

Beides funktioniert noch nicht besonders zuverlässig, da der Katalog noch nicht alle Straßennamen führt. Für den Router lassen sich zudem keinerlei Optionen einstellen. Orte oder Suchergebnisse werden im Bereich Temporäre Objekte aufgelistet.

Diese lassen sich anschließend als Objektlisten unter Orte fest abspeichern, damit Sie später jederzeit darauf zugreifen können. Im Bereich der Anzeigeoptionen (Ebenen) können Sie einstellen, welche Elemente das Render-Fenster anzeigen soll – zumindest die Satellitenansicht ist sichtbar.

Mit aktiviertem Gelände stellt Google Earth die Topografie in 3D-Ansicht dar (Datengrundlage sind offenbar SRTM-Daten; die Auflösung beträgt damit für Europa weitgehend 90 Meter). Die anderen Optionen offenbaren die ganze Stärke des Tools: Ortsnamen, Straßen oder zahlreiche POIs (Points of interest, die als Marker in der Ansicht erscheinen) lassen sich einblenden.

Dazu gehören auch direkte Links zu Webseiten, die Fotos oder historische Daten zu den ausgewählten Orten enthalten. Diese Fülle an Informationen bieten sonst nur teure GIS-Anwendungen.

Die weiteren Möglichkeiten – wie das Abfliegen einer Strecke, die GPS-Anbindung, das Einbauen von 3D-Daten und Overlays in die Ansicht oder das Zeichnen von Linien – sind in der Onlinehilfe beschrieben.

Schnittstellen zu Google Earth

Das Geniale an Google Earth sind seine flexiblen Steuerungs-Schnittstellen. Ursprünglich gab es nur die dateibasierte KML-Schnittstelle, mittlerweile ist aber auch eine COM-basierte Schnittstelle hinzugekommen.

Die dateibasierte KML-Schnittstelle

Eine eingestellte Ansicht lässt sich in einer so genannten KML-Datei abspeichern und auch wieder laden. Aber nicht nur die Ansicht, auch nahezu alle anderen Optionen der Anwendung inklusive dynamischer Tourdaten und Flüge (in komprimierter und ZIP-kompatibler Form wird eine KMZ-Datei daraus). Es handelt sich dabei um eine XML-Datei, deren Aufbau unter [3] beschrieben ist. Diese etwa 200 Seiten große KML-Referenz erläutert detailliert, wie die XML-Elemente und -Attribute mit der Oberfläche von Google Earth korrelieren. Es gibt nichts, was sich nicht mit so einer KML-Datei steuern ließe.

Seit Anfang 2007 steht endlich auch eine Schema-Datei (XSD) für KML zur Verfügung, die man unter [4] findet. Mit ihrer Hilfe lassen sich über einen XML-Editor, wie den von MS Visual Studio 2005 oder das Microsoft XML Notepad 2007, komfortabel KML-Dateien außerhalb von Google Earth erstellen.

Eine solche KML-Datei können Sie natürlich auch mit einem Texteditor anfertigen – oder eben per VBA mit Access. Die Möglichkeiten dazu sind so umfangreich, dass dieser Beitrag sie nicht komplett beschreiben kann. In einer der nächsten Ausgaben wird diese Schnittstelle daher separat unter die Lupe genommen.

Das COM-Interface

Die neueren Versionen von Google Earth sind – und das ist fantastisch – automationsfähig. Das bedeutet, dass sich Google Earth, ähnlich wie etwa Word oder Excel, über einen Verweis in VBA ansprechen lässt.

Sie übergeben einfach Anweisungen an die Objekte der Google Earth-Bibliothek und steuern damit das Render-Fenster, aber auch die Seitenleiste. Die ActiveX-Komponente ist dabei keine OLB-, TLB- oder DLL-Datei, sondern die GoogleEarth.exe selbst.

Weil im Internet, wie auch bei Google selbst, bisher nur sehr spärliche Dokumentationen oder Beispiele zu dieser Bibliothek zu finden sind, gehe ich hier ausführlich auf deren Objektmodell ein.

Das Objektmodell

Das Objektmodell von Google Earth hat seit dem ersten Erscheinen der Anwendung einige Änderungen erfahren. In früheren Versionen nannte sich die Bibliothek Keyhole Library – Keyhole ist die Firma, die Google aufgekauft hatte und der Name des ursprünglichen Programms – und stellte lediglich eine rudimentäre Schnittstelle dar.

Mit der aktuellen runderneuerten Version 4, in der neben der Überarbeitung der Oberfläche auch einige neue Features hinzukamen, hat das Google Earth-COM-API Einzug gehalten; die Bibliothek nennt sich nun Earth 1.0 Type Library. Das ist auch genau der Eintrag, den Sie in den Verweisen Ihrer Datenbank aktivieren müssen, wenn
Sie darüber mit Google Earth kommunizieren wollen.

Im Prinzip ist diese Schnittstelle unter [2] dokumentiert. Dort sind aber weder alle verfügbaren Klassen dargestellt, noch sind alle Syntaxangaben korrekt. Google hat die Dokumentation leider seit der letzten Beta-Version vom November 2006 nicht mehr aktualisiert.

Das Modell weist auch sonst noch einige Ungereimtheiten auf, sodass davon auszugehen ist, dass es in Folgeversionen nochmals überarbeitet wird. Abb. 2 zeigt das Modell mit allen gegenwärtigen Klassen und einigen Eigenschaften und Methoden.

ObjectModel.tif

Abb. 2: Das Google Earth-Objektmodell

Über dieses Objektmodell lässt sich nun schon eine Menge in Google Earth regeln. Die Möglichkeiten sind allerdings noch weit entfernt von der Steuerung über die erwähnte KML-Schnittstelle. Deshalb ist diese auch noch keinesfalls obsolet. Beide Methoden lassen sich aber Gewinn bringend kombinieren.

Die Beispieldatenbank GoogleEarther.mdb zu diesem Beitrag zeigt eine Möglichkeit auf, wie zum Beispiel das Setzen von Ortsmarken – dazu später mehr.

Klassen des Objektmodells im Detail

Es existieren zwei Root-Objekte: ApplicationGE und KHInterface. Beide stellen die oberste Ebene des Modells dar, so wie etwa in MS Access das Application-Objekt das zentrale Objekt ist.

Warum nun verwirrenderweise zwei Root-Objekte? In der früheren Bibliothek Keyhole gab es die Root-Klasse KHInterface, mit der sich Google Earth steuern ließ. Aus Kompatibilitätsgründen ist sie in die neue Bibliothek ebenfalls aufgenommen worden, damit älterer Automations-Code noch funktioniert. Google empfiehlt aber, nur noch die mit GE endenden Klassen zu verwenden.

Tatsächlich gibt es keinen Grund, die alte Klasse einzusetzen, bis auf eine kleine Nebensächlichkeit: Im KHInterface gibt es die Methode QuitApplication, mit der sich eine Google Earth-Instanz wieder schließen lässt, so wie Access mit Application.Quit.

Eine analoge Methode fehlt aus unerfindlichen Gründen in der ApplicationGE-Klasse, sodass man zu Workarounds genötigt ist, wenn Google Earth per Automatisierung geschlossen werden soll.

Von ApplicationGE leiten sich alle weiteren Objekte ab, wobei Sie einige über eine Eigenschaft erhalten können, andere wiederum Ergebnis eines Funktionsaufrufs sind. Tabelle 1 erläutert die einzelnen Klassen der neuen Bibliothek in Grundzügen.

Klasse

Erhalten über ...

Bedeutung

ApplicationGE

CreateObjekt("GoogleEarth.ApplicationGE")

Anwendungsobjekt von Google Earth (Root-Objekt)

FeatureCollectionGE

verschiedene Eigenschaften und Methoden:

- ApplicationGE.GetMyPlaces

- ApplicationGE.GetTemporaryPlaces

- FeatureGE.GetChildren

- SearchControllerGE.GetResults

Auflistung von Objektdaten (Features)

Das können Orte sein, aber auch Links, Marker, fast alles, was auch die KML-Datei beherbergen kann

FeatureGE

- FeatureCollectionGE.Item(n)

- FeatureGE.GetParent

- ApplicationGE.GetFeatureByName

- ApplicationGE.GetFeatureByHref

- Application.GE.GetHighlightedFeature

Ein einzelnes Objekt der Objektliste FeatureCollectionGE

CameraInfoGE

ApplicationGE.GetCamera()

Kameraobjekt. Es enthält Eigenschaften zur Ansicht des Render-Fensters wie Koordinaten des zentralen Ortspunktes, Zoomfaktor, Neigung, Richtung

ViewExtentsGE

ApplicationGE.ViewExtents

Korreliert mit der Kamera und enthält Eigenschaften zum sichtbaren Ausschnitt des Render-Fensters

SearchControllerGE

ApplicationGE.SearchController

Entspricht dem Suchfeld der Seitenleiste und dient dem Suchen von Orten über deren Adresse

PointOnTerrainGE

ApplicationGE.GetPointOnTerrainFromScreenCoords

Einzelner Punkt der Erdoberfläche und dessen Daten

TourControllerGE

ApplicationGE.TourController

Steuert das Anfliegen einer Reihe von Ortspunkten einer Route

AnimatonControllerGE

ApplicationGE.AnimationController

Steuert das Anfliegen eines gespeicherten Fluges

Tab. 1: Klassen der Earth 1.0-Bibliothek

Earther_Detail.tif

Abb. 4: Mit Google Earth ermittelte Koordinaten eines Orts im Kundenformular

Zu erwähnen ist dabei, dass sämtliche Klassen sich auch direkt instanzieren lassen, also mit dem Schlüsselwort New oder per Late Binding mit der Methode CreateObject:

Set objCam = New EarthLib.CameraInfoGE

Set objCam = CreateObject("GoogleEarth.CameraInfoGE")

SingleUse-Instanzierung

Google Earth ist eine SingleUse-Anwendung. Das bedeutet, dass Sie immer nur eine Instanz der Anwendung starten können.

Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

Sind Sie Abonnent?Jetzt einloggen ...
 

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

© 2003-2015 André Minhorst Alle Rechte vorbehalten.