- Bayerisches Landesamt für Umwelt

Transcrição

- Bayerisches Landesamt für Umwelt
Graphische Bohrprofilanzeige - Beispiel für die Integration eines
COM-Servers in das BIS-BY
von T. GÜLDEN
Schlüsselwörter: Graphische Schichtdatenanzeige, GeODin, COM-Server Integration
Kurzfassung
Die graphische Darstellung ist eine wichtige Möglichkeit, Schichtdaten von Bohrungen und
Bodenprofilen anzuzeigen. Seit geraumer Zeit ist hierfür die Software GeODin auf lokalen Arbeitsplätzen im Einsatz. Durch die serverseitige Integration von GeODin als COM-Server steht
eine graphische Schichtprofilanzeige allen BIS-Anwendern kostenlos zur Verfügung. Die graphische Schichtdatenanzeige ist für alle Objekte mit teufenbezogener Schichtdatenerfassung
möglich. Der Benutzer kann Darstellungslayout und Maßstab beeinflussen und das Ergebnis als
PDF-Datei speichern. Die Verbindung zwischen BIS-Server und GeODin wird über eine Java
COM Bridge hergestellt.
Graphical Drill Hole Display - Integration of a COM-Server into
the BIS-BY
Keywords: graphical drill hole display, GeODin, COM-Server integration
Abstract
The graphical depiction of boreholes and soil profiles is one of the most useful tools for the
interpretation and documentation of geoscientific data. Since a long time GeODin is established
as a powerful application to display drillhole data. Recently, server functionality was introduced
into the product, so that GeODin could be integrated as a COM-Server into the BIS-server application. This integration enables each BIS-BY user to utilize graphical drillhole information
without the need of installing and operating specialized software. GeODin is integrated using
a Java COM Bridge as a mediator between the Java implementation of the BIS-Server and the
Windows specific GeODin application.
- 200 -
FB25_Kap16-18.indd 200
07.03.2006 9:02:42 Uhr
1
Einleitung
Bohrungen und Bodenprofile bilden die fachlichen Schwerpunkte bei den Punktdaten des Bodeninformationssystems (BIS-BY). Beide Objekttypen führen Schichtenverzeichnisse, bei denen tiefenabhängig Eigenschaften des Untergrundes (Gestein oder Boden) beschrieben werden.
In Bodenkunde und Geologie ist eine graphische Darstellung dieser Schichtenverzeichnisse üblich. Dazu wurde am ehem. Bayerischen Geologischen Landesamt (seit August 2005 integriert
in das Bayerische Landesamt für Umwelt) in den geologischen Fachreferaten bislang GeODin
eingesetzt, eine Spezialsoftware der Firma Fugro GmbH, die in der Lage ist, in Datenbanken
gespeicherte Schichtdaten maßstabs- und teufengerecht anzuzeigen und mit Textinformationen
zu annotieren. Diese Software musste lokal auf den Rechnern der Mitarbeiter installiert werden
und für ihre Bedienung sind speziell geschulte Mitarbeiter notwendig. Eine wichtige Anforderung an das Bodeninformationssystem war daher, eine graphische Schichtenanzeige zentral zur
Verfügung zu stellen, ohne dass die Installation von Spezialsoftware an den Benutzerrechnern
erforderlich wäre.
Mit der Freigabe einer COM-Schnittstelle für GeODin konnte diese Anforderung erstmalig
umgesetzt werden. GeODin läuft im BIS-BY ausschließlich serverseitig als COM-Server und
liefert an die Nutzer graphische Schichtenverzeichnisse als Bilddaten, so dass die lokale Installation der GeODin-Software entfällt. Damit stehen graphische Bohrprofilanzeigen allen Nutzern des BIS-BY lizenzkostenfrei zur Verfügung.
Dieser Beitrag beschreibt die Grundfunktionen der graphischen Schichtdatenanzeige für Bohrungen und Bodenprofile und erläutert, wie die Integration von GeODin technisch umgesetzt
worden ist.
2
Die graphische Schichtdatenanzeige im Bodeninformationssystem
Schichtdaten können teufenabhängig dargestellt werden, wenn die Schichtdaten mit Teufenangaben erfasst werden. Im BIS-BY ist dies bei den Fachklassen Bohrung, Geologisches Profil, Aufschluss Bodenkunde und Bodendauerbeobachtungsfläche der Fall. Bei Bohrungen und
Geologischen Profilen werden Gesteinseinheiten vom Feldgeologen teufenbezogen beschrieben, während bei bodenkundlichen Profilaufnahmen Bodenhorizonte und –substrate Gegenstand der Erfassung sind.
Für die genannten Fachklassen kann für ein ausgewähltes Objekt ein graphisches Schichtprofil
erzeugt werden. Nach Aufruf des entsprechenden Menüs wird das so genannte GeODin-Fenster
angezeigt.
Das Fenster bietet dem Benutzer zahlreiche Einstellungsmöglichkeiten. Neben der Auswahl
einer Schichtenverzeichnisversion kann das Anzeigelayout und der Maßstab verändert werden.
Außerdem kann das gesamte Schichtenverzeichnis als PDF-Datei exportiert werden.
- 201 -
FB25_Kap16-18.indd 201
07.03.2006 9:02:43 Uhr
Abb. 1: GeODin-Fenster
Für Bohrungen stehen zur Zeit insgesamt sechs
verschiedene Layouts bereit, in denen Informationen zur Petrographie, Stratigraphie, Grundwasser
und dem Ausbau einer Bohrung visualisiert werden. Für Bodenprofile gibt es eine Darstellung
der Bodenfraktionen, sowie ein Layout mit einer
farblichen Kennzeichnung der Bodenhorizonte.
Abb. 2: Bohrprofilanzeige mit Petrographie und
Bohrungsausbau
Abb. 3: Bohrprofilanzeige mit Gesteinsansprache
nach DIN, Stratigraphie und Bohrungsausbau
- 202 -
FB25_Kap16-18.indd 202
07.03.2006 9:02:43 Uhr
Abb. 4: Bodenprofil mit Darstellung der Bodenfraktionen
Abb. 5: Bodenprofil mit Horizontdarstellung
- 203 -
FB25_Kap16-18.indd 203
07.03.2006 9:02:44 Uhr
3
Anpassung von GeODin
Ähnlich wie das BIS-BY besitzt auch GeODin ein konfigurierbares Anwendungsmetamodell.
In so genannten Aufschlusstypdefinitionen wird eine Abbildung des jeweiligen fachlichen Modells auf das GeODin Anwendungsmetamodell vorgenommen. Diese Arbeiten wurden für das
BIS-BY von Fugro GmbH in Zusammenarbeit mit den BIS-Entwicklern durchgeführt. GeODin setzt weiterhin bestimmte physische Datenstrukturen voraus, welche in der BIS-Datenbank
durch Views auf die Originaltabellen realisiert worden sind.
Zu den weiteren Vorbereitungen für den serverseitigen Einsatz gehört der Entwurf von Layoutvorlagen, die Form und Inhalt einer Bohrprofilanzeige festlegen. Diese Layouts werden auf
dem BIS-Server abgelegt und sind fachklassenspezifisch konfigurierbar. Damit kann das BISBY laufend um weitere Layouts erweitert werden, ohne dass das System programmatisch erweitert werden muss.
Ein wichtiger Arbeitsschritt ist die Übertragung der fachlichen Schlüssellisten des BIS-BY in
die GeODin-Wörterbücher. Da diese aus Performanzgründen teilweise in nicht öffentlichen
Binärformaten gespeichert werden, muss diese Tätigkeit ebenfalls von der Herstellerfirma geleistet werden.
Schließlich sind Symbole und Farbsignaturen zu entwerfen, mit welchen die Schichtdaten darzustellen sind. Diese werden den Einträgen der GeODin-Wörterbücher in der GeODin-Systemkonfiguration zugeordnet.
4
Technische Anbindung des GeODin COM-Servers
GeODin ist im BIS-BY ausschließlich auf Serverseite eingebunden. Die Clients wissen von
der Verwendung von GeODin als Software, welche die Bohrprofilanzeige generiert, im Prinzip
nichts. Die Schnittstelle zwischen Client und Server ist rein fachlich, wobei die benutzerspezifischen Parameter (Objekt-ID, Schichtenverzeichnis-ID, gewünschtes Layout und Anzeigemaßstab) wie sonst im BIS-BY üblich über das CORBA-Protokoll an den Server übertragen
werden. Hier werden die Parameter zunächst von einem fachlichen Dienst empfangen, um dann
von einer technischen Komponente in ein COM-kompatibles Format verpackt und an den GeODin-COM Server weitergeleitet zu werden. Der GeODin COM-Server liest anhand der übergebenen Parameter die Schichtdaten aus der Datenbank, generiert ein graphisches Schichtprofil
als Bild (jpg- oder png-Format) und gibt dieses an den fachlichen Dienst des BIS-Servers zurück. Dieser transportiert das Bild über die CORBA-Schnittstelle zurück an den Client, der es
im GeODin-Fenster darstellt.
Dieser Ablauf einer Schichtprofilanforderung durch den Benutzer zeigt, dass nur ein Bild zum
Client transportiert wird und die GeODin-Software dort nicht benötigt wird. Die Trennung von
fachlichen und technischen Komponenten würde sogar einen Austausch von GeODin gegen
eine andere Software zur Generierung der graphischen Schichtdatenanzeige ermöglichen.
- 204 -
FB25_Kap16-18.indd 204
07.03.2006 9:02:44 Uhr
Das BIS-BY ist in Java implementiert, welches eine Programmiersprache ist, mit der Programme plattformunabhängig entwickelt werden können. GeODin ist jedoch reine Windows-Software und das COM-Protokoll ist ebenfalls für Windows-Betriebssysteme spezifisch. Um von
einem Java-Programm auf einen COM-Server zugreifen zu können, bedarf es einer weiteren
Komponente, die zwischen Java und einem COM-Server kommunizieren kann. Diese so genannten Java-COM-Bridges gibt es in verschiedenen Ausprägungen aus dem Markt, im BISBY wird das Open Source Produkt Java COM Bridge (JACOB 2004) eingesetzt. Diese Software
besteht aus zwei Teilen: einer Java Bibliothek jacob.jar, welche allgemeine COM-Funktionen
und Datentypen auf Java-Objekte und -Datentypen abbildet, sowie eine Windows DLL (jacob.
dll), welche die native Verbindung zum COM-Server herstellt. Beide Programmbibliotheken
müssen im Klassenpfad der BIS-Servers enthalten sein.
GeODin stellt mittels einer Typbibliothek-Schnittstelle die für die Generierung eines Bohrprofils erforderlichen Methoden bereit. Für das BIS-BY sind nur zwei Methoden relevant:
get-Image()
erzeugt eine Bohrprofilseite,
getPrintFile() generiert eine PDF-Datei, welche das gesamte Schichtenverzeichnis
enthält.
Der Zugriff aus einem Java-Programm auf den GeODin COM-Server ist relativ einfach:
Zunächst wird ein ActiveX-Objekt erzeugt, das den COM-Server kapselt:
ActiveXComponent mGeodinComponent = new ActiveXComponent(„GeODi
nApplication“);
Der Parameter des Konstruktors ist der Name, unter dem sich GeODin als COM-Server im
Betriebssystem registriert hat. Durch die Erzeugung des ActiveX-Objektes wird GeODin als
COM-Server gestartet. Dieser Aufruf erfolgt einmal beim Hochfahren des BIS-Servers.
Im BIS-Server ist eine in der CORBA-Schnittstelle veröffentlichte Methode implementiert,
welche mit GeODin kommuniziert und getImage() aufruft. Dabei werden zunächst die
erforderlichen Client Parameter in COM-kompatible Java-Objekte vom Typ Variant verpackt und in einem Array gespeichert. Zu den Parametern gehören u.a. Werte, welche das Objekt identifizieren, der Name des GeODin-Layouts und die angeforderte Seitennummer.
Der Parameter-Array wird über die COM-Aufrufschnittstelle (Dispatch) an die Methode „GetImage“ des COM-Servers übergeben. Dieser gibt als Ergebnis ein Variant-Objekt zurück, welches das graphische Schichtenverzeichnis als Bild in Form eines ByteArrays enthält.
public GeODinAntwort createSchichtenVerzeichnis(GeODinParameter pParameter) {
...
Variant[] parameters = new Variant[14];
parameters[0] = new Variant(pParameterBlock.getDatabase());
parameters[1] = new Variant(pParameterBlock.getUserName());
parameters[2] = new Variant(pParameterBlock.getPasswort());
parameters[3] = new Variant(pParameterBlock.getProjektID());
- 205 -
FB25_Kap16-18.indd 205
07.03.2006 9:02:44 Uhr
parameters[4] = new Variant(pParameterBlock.getLocationID());
…
parameters[6] = new Variant(pParameterBlock.getLayoutFileName());
…
parameters[12] = new Variant(pGeoDinServerParameterBlock.getSeitennumer());
parameters[13] = new Variant(seitenZahl);
parameters[13].putIntRef(-1); // Übergebe zunächst eine ungültige Seitenzahl
Variant ergebnis = new Variant();
byte[] bilddaten = null;
ergebnis = Dispatch.callN(mGeodinComponent, „GetImage“, parameters);
SafeArray safeArray = ergebnis.toSafeArray();
bilddaten = safeArray.toByteArray();
seitenZahl = (short) parameters[13].getIntRef();
GeoDinAntwortParameter geoDinAntwortParameter = new GeoDinAntwortParameter
(bilddaten,
seitenZahl);
return geoDinAntwortParameter;
}
Über die CORBA-Schnittstelle gelangt das ByteArray zum Client und wird dort als Bild dargestellt.
public void setzeBildFromByteArray(byte[] pBilddaten) throws IOException {
BufferedImage mBild = ImageIO.read(new ByteArrayInputStream(pBilddaten));
mWidth = this.getWidth();
mHeight = this.getHeight();
this.repaint();
}
Beim Herunterfahren des BIS-Servers kann auch der GeODin COM-Server gestoppt werden:
mGeodinComponent.release();
Damit der COM-Server vom BIS-Server aufgerufen werden kann, müssen die Sicherheitseinstellungen für den COM-Server konfiguriert werden. Insbesondere ist sicherzustellen, dass das
Benutzerkonto, unter dem der BIS-Server als Windows-Dienst gestartet wird, auch für den
Abb. 6: Ablauf eines COM-Serveraufrufes
- 206 -
FB25_Kap16-18.indd 206
07.03.2006 9:02:44 Uhr
Abb. 7: COM-Server Konfigurationsprogramm
Abb. 8: Sicherheitseinstellungen für den GeODin COMServer
COM-Server volle Zugriffs- und Ausführungsrechte besitzt. Der COM-Server kann mit dem
Hilfsprogramm dcomcnfg konfiguriert werden (Abb. 7, Abb. 8):
5
Zusammenfassung
Die graphische Darstellung von Schichtdaten ist eine wichtige Funktionalität des BIS-BY. Vor
der Inbetriebnahme des BIS-BY war diese Funktion auf Arbeitsplätze beschränkt, auf denen
die GeO-Din-Software lokal installiert ist. Mit der serverseitigen Integration von GeODin als
COM-Server steht die graphische Darstellung jedem BIS-Nutzer zur Verfügung. Fachbehörden, für die eine Anschaffung von GeODin aus fachlichen und ökonomischen Gründen nicht in
Frage kommt, für die aber die Nutzung graphischer Schichtprofile einen großen Nutzen bringt,
kommen nun zum Nulltarif in den Genuss dieser Funktion.
Mittels der BIS-Programmierschnittstelle konnte die GeODin-Integration bis auf einige Zuarbeiten seitens der Herstellerfirma von den BIS-Entwicklern des Bayerischen Landesamtes für
Umwelt selbst realisiert werden.
Es ist geplant, die graphische Schichtdatenanzeige – sofern die Schichtdaten aufgrund persönlicher Rechte nicht zu schützen sind – auch in den GeoFachdatenAtlas zu integrieren und damit
auch der Öffentlichkeit zugänglich zu machen.
6
Literatur
JACOB (2004): The JACOB Project – A Java COM Bridge. http://danadler.com/jacob/
- 207 -
FB25_Kap16-18.indd 207
07.03.2006 9:02:44 Uhr

Documentos relacionados