Mit dem Modul können Objekte in eine ESRI File-Geodatabase geschrieben werden.
Der Modul beinhaltet folgende Besonderheiten:
Schreibt Daten mit Geometrien in eine Geodatabase.
Legt Tabellen für die Daten und die Spatial Indexe entprechende der ESRI File-Geodatabase an.
Füllt das Geodatabase Repository mit den notwendigen Definitionen.
Die Geodatabase kann nach dem Schreiben der Daten direkt mit den ESRI-Anwendungen weiterbearbeitet werden.
Der Modul wird mit:
|INCL \script\filegdbout.mod
in einer ICS RUN1-Konfiguration verfügbar gemacht.
Der Module benötigt keine ESRI Lizenz. Der Modul verwendet das ESRI File Geodatabase API.
rcGIS Engine Runtime Lizenz.
Folgende Parameter können in der Map FILEGDBOUT_PARAM für den Modul gesetzt werden:
Parameter | req/opt | Beschreibung |
SRID | r | <STRING> . Der Name des
ArcGIS Spatial Reference System. Es muss der Name eines
ArcGIS bekannten Projected Coordinate Systems sein.
Beispiele: 'CH1903_LV03', 'CH1903+_LV95' |
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 im Module
DBOUT. |
STATISTICS | o | ON oder OFF ,
Default = OFF . Statistik
anzeigen. |
Der Modul verlangt pro OUT-Objekt folgende Systemkomponenten:
Komponente | req/opt | Beschreibung |
OUT.TABLE(s) | r | Tablename des OUT Objekts. |
OUT.GDB_DATASET(s) | o | Geodatabase Dataset, in welches das Objekt geschrieben werden soll. |
OUT.<Attribut>(s) | o | Attributname der Tabelle. Der Wert der Komponente beinhaltet den Wert für die Datenbank. Der Typ des Werts muss mit dem Typ des Attributs in der Datenbank übereinstimmen. Es können beliebig viele Attribute definiert werden. |
Dieses Objektmodell gilt für die Anwendung mit der
Prozedur FILEGDBOUT_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, so beachten Sie das Kapitel mit den Record-Definitionen
und das Kapitel mit der Datenbank Modellgenerierung.
Den Objekten wird automatisiert im Attribute
OBJECTID
ein eindeutiger Schlüssel vergeben. Das
Attribut OBJECTID
ist nicht zu definieren.
Mit Record Definitionen können nicht nur Objekte in die Datenbank geschrieben werden, sondern auch Datenbank-Tabellen automatisiert in der Datenbank inklusive dem Geodatabase Repository angelegt werden. Eine Record Definition sieht wie folgt aus.
MAP RECORD_<n>
TABLE => <Table-Name>
GDB_DATASET => <Dataset-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.
TABLE
Diese Komponente ist required und definiert die Datenbank-Tabelle.
<Table-Name>
Definiert als Wert der Komponente TABLE die Datenbank-Tabelle.
GDB_DATASET
Diese Komponente ist optional und definiert das Geodatabase Dataset.
Im GDB-Repository können nur Objekte mit einer Geometrie einem Dataset zugeordnet werden. Wird diese Komponente bei einem Objekt definiert, das keine Geometrie aufweist, wird eine Dummy-Geometrie in der Form eines Punktes dem Objekt angefügt. Damit kann das Objekt dem Dataset zugeordnet werden. Um ein Objekt, das keine Geometrie aufweist, als reine Tabelle zu transferieren, darf diese Komponente nicht definiert werden. |
<Dataset-Name>
Definiert als Wert der Komponente GDB_DATASET das Geodatabase Dataset..
<Attribute-Name>
Definiert als Komponente einen Attribut-Namen 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..
NUMBER(p,s)
Number-Type.
INTEGER
Integer-Type.
DATE
Date-Type.
Ein Datum kann übergeben werden als:
- INTEGER im Format YYYYMMDD z.B.20141204
- STRING im Format 'YYYY-MM-DD' z.B '2014-12-04'
Ein Datum mit Zeit kann übergeben werden als
- STRING im Format 'YYYY-MM-DD HH24-MI-SS' z.B '2014-12-04 14:09:59'
GEOMETRY(<type>;<dimension>;<HASM>)
Geometrien müssen als Type
GEOMETRY
definiert werden. Dabei
sind folgende weiteren Definitionen notwendig.
<type>
Type der Geometrie, einer der Werte:
point|line|area.
<dimension>
Dimension der Geometrie, einer der Werte:
2D
|3D.
<HASM>
Geometrie besitzt die Measure-Dimension, einer
der Werte:
TRUE|FALSE
.
Geodatabase erlaubt nur eine Geometrie-Definition pro Tabelle. Deshalb kann pro Record-Definition nur ein Geometrie-Attribut definiert werden. |
Um mögliche Einschränkungen von SDE zu umgehen, ist es
empfehlenswert, den Geometrie-Attributen den Name
|
<Attribut-Value>
Definiert den Wert für das Attribut. Als Wert können absolute Werte oder ICS-Variablen, die einen Wert beinhalten - z.B. IN.OBJID - verwendet werden.
Beispiel einer Record Definition.
MAP RECORD_15 TABLE => Bodenbedeckung_BoFlaeche_Area GDB_DATASET => Bodenbedeckung OBJID => CHAR(32),IN.OBJID Entstehung => CHAR(32),IN.Entstehung.OBJID Qualitaet => INTEGER,IN.Qualitaet Qualitaet_TXT => CHAR(7),IN.Qualitaet Art => INTEGER,IN.Art Art_TXT => CHAR(47),IN.Art_TXT SHAPE => GEOMETRY(area;2D;FALSE),IN.GEOM END_MAP
Zur Verwaltung von Datasets in der Datenbank ist das analoge Kapitel des Modules DBOUT zu beachten.
Um ein Dataset aus einer Geodatabase Datenbank zu löschen, steht folgende Konfiguration zur Verfügung:
ILTOOLS_DIR\system\script\il2filegdb\filegdbdatasetdelete.cfg ! not implemented yet
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:
MAP CONFIG_PARAM GENERATE_MODEL => ON END_MAP
Entsprechend den Record-Definitionen wird vor einem Datentransfer das Datenbankmodell inklusive den Definitionen für das Geodatabase Repository generiert, falls es nicht schon generiert wurde.
Prozedur | FILEGDBOUT_OPEN [s input][] |
Beschreibung | Öffnet eine bestehende Datenbank oder kreiert neue Datenbank. Prozedur wird von RUN1 automatisch aufgerufen. |
Beispiel |
|
Prozedur | FILEGDBOUT_WRITE_OBJECT0 |
Beschreibung | Schreibt ein Objekt in die Datenbank. Das OUT-Objekt muss gemäss dem Objektmodell gefüllt sein. |
Beispiel |
|
Prozedur | FILEGDBOUT_WRITE_RECORD1 ! s recordname |
Beschreibung | Schreibt ein Objekt definiert mit <recordname> in die Datenbank. <recordname> ist der Name einer Record-Definition (siehe weiter oben). |
Beispiel |
|
Prozedur | FILEGDBOUT_CLOSE [][] |
Beschreibung | Schliesst den Modul und gibt die durch den Modul belegten Resourcen wieder frei. Die Prozedur wird von RUN1 automatisch aufgerufen. |
Beispiel |
|
! Diese ICS Konfiguration liest ein INTERLIS FIle, ! erzeugt eine Tabelle für LFP's in der Datenbank ! inklusive den Definitionen des Geodatabase 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 => DIRECTORY MESSAGE => 'Enter SDE or Database Output File' OPT => output END_MAP MAP ILIN_PARAM INTERLIS_DEF => '\models\DM01AVCH24LV95D.ili' STATISTICS => ON CALC_SURFACE => ON ENUM_TO_TEXT => ON TRACE => OFF END_MAP MAP ILIN_TOPO DEFAULT => OFF END_MAP MAP FILEGDBOUT_PARAM SRID => 'CH1903+_LV95' STATISTICS => ON DATASET => ON END_MAP MAP RECORD_1 TABLE => Fi_LFP1 GDB_DATASET => FixpunkteKategorie1 OBJID => CHAR(40),IN.OBJID Entstehung => CHAR(40),IN.Entstehung.OBJID NBIdent => CHAR(12),IN.NBIdent Nummer => CHAR(12),IN.Nummer SHAPE => GEOMETRY(point;2D;FALSE),IN.Geometrie HoeheGeom => NUMBER(7,3),IN.HoeheGeom LageGen => NUMBER(4,1),IN.LageGen LageZuv => INTEGER,IN.LageZuv LageZuv_TXT => CHAR(4),IN.LageZuv_TXT HoeheGen => NUMBER(4,1),IN.HoeheGen HoeheZuv => INTEGER,IN.HoeheZuv HoeheZuv_TXT => CHAR(4),IN.HoeheZuv_TXT Begehbarkeit => INTEGER,IN.Begehbarkeit Begehbarkeit_TXT => CHAR(14),IN.Begehbarkeit_TXT Punktzeichen => INTEGER,IN.Punktzeichen Punktzeichen_TXT => CHAR(17),IN.Punktzeichen_TXT END_MAP MAP INPUT_SOURCES I1 => ILTOPO,OPT.input END_MAP MAP INOUT I1 => IN.TOPIC,IN.TABLE I1,FixpunkteKategorie1,LFP1 => R_1,RECORD_1 I1,* => OFF END_MAP |INCL \script\iltopo.mod |INCL \script\filegdbout.mod |INCL \script\il2filegdb\il2filegdb.out |INCL \script\run1.prg