- 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