Mit dem Skriptmodul können Objekte in eine ACCESS-Datenbank nach GeoMedia Spezifikationen geschrieben werden. Der Modul unterstützt speziell das GeoMedia Datenmodell und die GeoMedia Geometrien.
Der Modul beinhaltet folgende Besonderheiten:
Schreibt Daten nach Access.
Legt Tabellen für die Daten an.
Schreibt die notwendigen Definitionen für GeoMedia.
Schreibt die Geometrien für GeoMedia.
Schreibt die GeoMedia Definitionen in das GeoMedia Repository.
Die Datenbank kann nach dem Schreiben der Daten direkt mit GeoMedia verwendet werden.
Der Modul wird mit:
|INCL \script\gmmdbout.mod
in einer ICS RUN1-Konfiguration verfügbar gemacht.
Der Modul GMMDBOUT ist eine Erweiterung des Modules DBOUT. Alle in dem Modul DBOUT beschriebenen Anteile gelten daher auch für das Modul GMMDBOUT. Ziehen Sie deshalb die Dokumentation dieser Module bei.
Folgende Parameter können in der Map DB_PARAM
für den Modul gesetzt werden:
| Parameter | req/opt | Beschreibung |
SOURCE | o | ODBC-Source der Datenbank. Muss gesetzt werden, falls die ODBC-Source nicht interaktiv abgefragt wird. |
USER | o | Datenbank User für die Verbindung mit der ODBC-Source. Muss gesetzt werden, falls die ODBC-Source nicht interaktiv abgefragt wird. |
PASSWORD | o | Datenbank Password für die Verbindung mit der ODBC-Source. Muss gesetzt werden, falls die ODBC-Source nicht interaktiv abgefragt wird. |
TRACE | o | ON oder OFF,
Default = OFF. Für jedes gelesene Objekt
eine Zeile ausgeben. |
Folgende Parameter können in der Map
DBOUT_PARAM für den Modul gesetzt werden:
| Parameter | req/opt | Beschreibung |
SQLTRACE | o | ON oder OFF, Default = OFF. Zeigt als sql-statements im Logfile an. |
STATISTICS | o | ON oder OFF, Default = OFF. Statistik anzeigen. |
DATASET | o | ON oder OFF,
Default = OFF. Definiert, ob die in die
Datenbank geschriebenen Daten als Datasets verwaltetet
werden. Sie dazu mehr unter dem Kapitel Datasets. Der Wert
ON hebt den Parameter
DELETE_OLD auf. |
SEED_DB | o | STRING. Definiert, eine
Seed-Datenbank für die Output-Datenbank. Ist die
Output-Datenbank nicht vorhanden, wird diese Seed-Datenbank
in die Output-Datenbank vor dem Transfer kopiert. Die
Seed-Datenbank beinhaltet bereits das GDB-Repository.
Beispiel:
c:\iltools\system\db\ESRI\GDB_seed_91.mdb.
Siehe mehr dazu unter Modell Generierung. |
Folgende Parameter können in der Map
GMMDBOUT_PARAM für den Modul gesetzt werden:
| Parameter | req/opt | Beschreibung |
CSGUID | r | STRING. Definiert das GUID des
Koordinatensystems. Die definierte CSGUID
muss in der Output-Datenbank in der GeoMedia-Tabelle
GCoordSystem vorhanden sein. Beispiel:
CSGUID =>
{ABD80B73-98D3-4537-8119-FBD238F2D703} für
Schweizer Koordinatensystem. |
Für die Anwendung von GeoMedia unter Access ist die entsprechende Dokumentation von INTERGRAPH zu beachten.
Der Modul verlangt pro OUT-Objekt folgende Systemkomponenten:
| Komponente | req/opt | Beschreibung |
OUT.TABLE(s) | r | Tabellenname in welche das OUT-Objekt geschrieben werden soll. |
OUT.<Attribut>(o) | o | Attributname der Tabelle. Der Wert der Komponente beinhaltet den Wert für die Datenbank. Der Type des Wertes muss mit dem Type des Attributes in der Datenbank übereinstimmen. Es können beliebig viele Attribute definiert werden. |
Dieses Objektmodell gilt für die Anwendung mit der
Prozedur GMMDBOUT_WRITE_OBJECT0. Die Tabellen mit den
Attributen müssen in der Datenbank bereits bestehen oder in einer
Konfiguration mit Prozeduren und Methoden vorgängig erzeugt werden.
Falls die Datenbankstrukturen automatisiert mit dem Modul erstellt
werden sollen, muss man das Kapitel mit den Record-Definitionen und die
Prozedur GMMDBOUT_WRITE_RECORD1 beachten.
Mit Record Definitionen können nicht nur Objekte in die Datenbank
geschrieben werden, sondern auch Datenbank-Tabellen automatisiert in der
Datenbank angelegt werden. Die Record Definitionen werden von der
Prozedur GMMDBOUT_WRITE_RECORD1 verarbeitet. Eine
Record Definition sieht wie folgt aus.
MAP RECORD_<n>
TABLE => <Table-Name>
:
<Attribute-Name> => <Attribute-Type>,<Attribute-Value>
:
END_MAP
Die einzelnen Bestandteile einer Record-Definition sind:
RECORD_<n>Eine Record Definition ist eine Map. Der Map-Name muss
mit dem Prefix RECORD_ beginnen und eine
eindeutige Nummer <n> für die Record
Definition beinhalten.
TABLEDiese Komponente ist obligatorisch und definiert die Datenbank-Tabelle.
<Table-Name>Definiert als Wert der Komponente
TABLE die Datenbank-Tabelle.
<Attribute-Name>Definiert als Komponente einen Attribut-Namen innerhalb der Tabelle. Es können beliebig viele Attribute als Komponenten definiert werden.
<Attribute-Type>Definiert den Attribut-Type in der Datenbank. Im Normalfall können der Datenbank bekannt Typen verwendet werden. Spezialtypen einer Datenbank werden eventuell nocht nicht unterstützt. Solche Spezialtypen werden bei Bedarf und auf Anfrage implementiert. Bei den Typen ist auf folgendes zu achten.
CHAR(<length>)Stringtypen sind immer als CHAR mit der Länge
<length> zu definieren. Je
nach Datenbank wird der Typ vom Modul in einen der
Datenbank bekannten Type umgewandelt z.B. Oracle als
VARCHAR2.
NUMBERNumber-Typen ohne Argumente werden vom Modul als
NUMBER(38,5) interpretiert.
MEMOStringtyp für Texte > 255 Zeichen.
DATETIMEDatums/Zeit Typ. Der
<Attribute-Value> muss der
SQL-Spezifikation von MSACCESS entsprechen. Zum
Beispiel für ein Datum
<Attribute-Value> =
'03.04.1993' , für Datum/Zeit
<Attribute-Value>='03.04.1993
17:34:00'.
GEONEDIA_GEOMETRY(<type>;<dimension>)GeoMedia Geometrien müssen als Type
GEOMEDIA_GEOMETRY definiert werden.
Dabei sind folgende weiteren Definitionen
notwendig.
<type>Type der Geometrie, einer der Werte:
point|line|area|gmtext.
<dimension>Dimension der Geometrie, einer der Werte
2D|3D.
GeoMedia sepchert Geometrien immer als 3D ab. Ist 2D
definiert, so werden eventuelle Z-Kordinaten auf 0.0
gesetzt. Ist 3D definiert, so werden eventuell nicht
vorhandene Z-Koordinaten auf 0.0 gesetzt.
<Attribut-Value>Definiert den Wert für das Attribut. Als Wert können
Konstanten oder ICS-Variablen, die einen Wert beinhalten - z.B.
IN.OBJID - verwendet werden.
Beispiel einer Record Definition.
MAP RECORD_1
TABLE => Fixpunkte_LFP
OBJID => CHAR(10),IN.OBJID
ENTSTEHUNG => CHAR(10),IN.Entstehung.OBJID
NUMMER => CHAR(12),IN.Nummer
GEOMETRIE => GEOMEDIA_GEOMETRY(point;3D),IN.Geometrie
LAGEZUV_TXT => CHAR(4),IN.LageZuv_TXT
HOEHEZUV_TXT => CHAR(4),IN.HoeheZuv_TXT
BEGEHBARKEIT_TXT => CHAR(14),IN.Begehbarkeit_TXT
SYMBOLORI => NUMBER,IN.SymbolOri
ART_TXT => CHAR(4),IN.Art_TXT
HERKUNFT => CHAR(30),IN.Herkunft
END_MAPZur Verwaltung von Datasets in der Datenbank ist das analoge Kapitel des Modules DBOUT zu beachten.
Falls basierend auf den Record-Definitionen vor einem
Datentransfer das gesamte Datenbankmodell erstellt werden soll, so ist
der Parameter CONFIG_PARAM.GENERATE_MODEL auf
ON zu setzten und das Script
il2gmmdb.lib zu includen:
MAP CONFIG_PARAM GENERATE_MODEL => ON END_MAP : |INCL \script\il2gdb\il2gmmdb.lib
Entsprechend den Record-Definitionen wird vor einem Datentransfer das Datenbankmodell inklusive den Definitionen für das GeoMedia Repository generiert, falls es nicht schon generiert wurde.
In der Datenbank müssen die Tabellen des GeoMedia Repository bereits bestehen. Als leere GeoMedia Datenbank mit den Tabellen des GeoMedia Repository stehen folgende Datenbanken zur Verfügung:
ILTOOLS_DIR\system\db\GeoMedia\GeoMedia_seed.mdb
Kopieren Sie die gewünschte Datenbank für das Anlegen einer neuen GeoMedia-Datenbank oder erzeugen Sie mit GeoMedia eine neue leere GeoMedia-Datenbank.
Oder defineren Sie mit DBOUT_PARAM.SEED_DB eine
Seed-Datenbank, die das GeoMedia Repository bereits beinhaltet.
Um das Datenmodell inklusive den Daten und den Definitionen im GeoMedia Repository aus einer GeoMedia Datenbank zu löschen, steht folgende Konfiguration zur Verfügung:
ILTOOLS_DIR\system\script\il2gmmdb\gmmdbdelete.cfg
Wird das Datenmodell im GeoMedia Repository durch die Schnittstelle generiert, ist folgendes vor Verwendung der Datenbank mit GeoMedia zu beachten.
Der Modul beinhaltet alle Prozeduren und Methoden wie der Modul DBOUT. Ziehen Sie deshalb die Dokumentation des Modules DBOUT bei.
Zusätzlich stellt der Modul GMMDBOUT folgende Prozeduren und Methoden zur Verfügung.
| Prozedur | GMMDBOUT_OPEN [][] |
| Beschreibung | Öffnet eine Datenbank definiert
mit DB_PARAM.SOURCE. Die Prozedur wird
von RUN1 automatisch aufgerufen. |
| Beispiel | |
| Prozedur | GMMDBOUT_WRITE_OBJECT0 |
| Beschreibung | Schreibt einen Objekt in die Datenbank. Das OUT-Objekt muss gemäss dem Objektmodell vorbereitet sein. |
| Beispiel | |
| Prozedur | GMMDBOUT_WRITE_RECORD1 ! s recordname |
| Beschreibung | Schreibt ein Objekt
definiert in
|
| Beispiel | |
| Prozedur | GMMDBOUT_CLOSE [][] |
| Beschreibung | Schliesst den Modul und gibt die durch den Modul belegten Resourcen wieder frei. Die Prozedur wird von RUN1 automatisch aufgerufen. |
| Beispiel | |
| Methode | GEOMEDIA.GEOM_TO_BLOB [g geom][b blob] |
| Beschreibung | Übersetzt eine ICS-Geometrie point,line oder area in eine GeoMedia Geometrie als Blob. Falls die Geometrien nicht übersetzt werden können, wird auf dem Stack ein NULL-Blob zurückgegeben. |
| Beispiel | |
Folgende Konversionen werden durchgeführt:
|
Für die Unterstützung des Produktes GeoMedia mit Access stehen folgende Prozeduren zur Verfügung.
| Methode | GEOMEDIA.GEOM_TO_BLOB_POINT ! [p Pos, r Rot] [b blob] |
| Beschreibung | Erzeugt einen GeoMedia oriented Point. |
| Beispiel | |
| Methode | GEOMEDIA.GEOM_TO_BLOB_TEXT ! [s Text, p Pos, r Rot, i Hali, i Vali] [b blob] |
| Beschreibung | Erzeugt einen GeoMedia Text. |
| Beispiel | |
| Prozedur | GMMDBOUT_POINT_CREATE2 ! p Pos, r Rot => IN.GMPoint |
| Beschreibung | Erzeugt einen GeoMedia oriented Point. Die GeoMedia Geometrie wird in IN.GMPoint abgelegt. IN.GMPoint kann in der Weiterverabietung genutzt werden, zum Beispiel in einer Record-Definition. |
| Beispiel | |
| Prozedur | GMMDBOUT_TEXT_CREATE5 ! s Text, p Pos, r Rot, i Hali, i Vali => IN.GMText |
| Beschreibung | Erzeugt einen GeoMedia Text. Die GeoMedia Geometrie wird in IN.GMText abgelegt. IN.GMText kann in der Weiterverabietung genutzt werden, zum Beispiel in einer Record-Definition. |
| Beispiel | |
Neben diesen Prozeduren des Moduls stehen auch die Prozeduren und Methoden des Moduls DBOUT zur Verfügung. Diese Prozeduren und Methoden sind im Modul DBOUT beschrieben.
! Diese ICS Konfiguration liest ein INTERLIS FIle,
! erzeugt eine Tabelle für LFP's in der Datenbank
! inklusive den Definitionen des GEOMEDIA Repository
! und schreibt die LFP's in die Tabelle.
|LICENSE \license\iltoolspro.lic
MAP CONFIG_PARAM
GENERATE_MODEL => ON
END_MAP
MAP USER_INPUT1
DIALOG => FILE
MESSAGE => 'Enter INTERLIS Input File'
FILE_FILTER => itf
FILE_EXISTS => TRUE
OPT => input
END_MAP
MAP USER_INPUT2
DIALOG => FILE
MESSAGE => 'Enter Access Output Database'
FILE_FILTER => mdb
FILE_EXISTS => FALSE
OPT => output
END_MAP
MAP ILIN_PARAM
INTERLIS_DEF => \models\Grunddatensatz.ili
STATISTICS => ON
CALC_SURFACE => ON
ENUM_TO_TEXT => ON
TRACE => OFF
END_MAP
MAP ILIN_TOPO
DEFAULT => OFF
END_MAP
MAP DB_PARAM
SOURCE => '' ! ODBC-Source
USER => '' ! ODBC-User
PASSWD => '' ! ODBC-Password
TRACE => OFF
END_MAP
MAP DBOUT_PARAM
STATISTICS => ON
DATASET => ON
SEED_DB => \db\geomedia\geomedia_seed.mdb
END_MAP
MAP GMMDBOUT_PARAM
CSGUID => {ABD80B73-98D3-4537-8119-FBD238F2D703}
END_MAP
MAP RECORD_1
TABLE => Fi_LFP
OBJID => CHAR(10),IN.OBJID
ENTSTEHUNG => CHAR(10),IN.Entstehung.OBJID
NUMMER => CHAR(12),IN.Nummer
GEOMETRIE => GEOMEDIA_GEOMETRY(point;3D),IN.Geometrie
GMTEXT => GEOMEDIA_GEOMETRY(gmtext;2D),IN.GMText
LAGEZUV_TXT => CHAR(4),IN.LageZuv_TXT
HOEHEZUV_TXT => CHAR(4),IN.HoeheZuv_TXT
BEGEHBARKEIT_TXT => CHAR(14),IN.Begehbarkeit_TXT
SYMBOLORI => NUMBER,IN.SymbolOri
ART_TXT => CHAR(4),IN.Art_TXT
HERKUNFT => CHAR(30),IN.Herkunft
END_MAP
MAP INPUT_SOURCES
I1 => ILTOPO,OPT.input
END_MAP
MAP INOUT
I1 => IN.TOPIC,IN.TABLE
I1,Fixpunkte,LFP => PR_1,GMMDBOUT_WRITE_RECORD1,RECORD_1
I1,* => OFF
END_MAP
MAP MACRO
PR_1 => GMMDBOUT_TEXT_CREATE5,IN.Nummer,IN.NumPos,IN.NumOri,IN.NumHAli,IN.NumVAli
END_MAP
|INCL \script\iltopo.mod
|INCL \script\gmmdbout.mod
|INCL \script\il2gmmdb\il2gmmdb.lib
|INCL \script\run1.prg