Mit dem Skriptmodul können Objekte aus einer Oracle-Datenbank via ODBC gelesen werden. Der Modul unterstützt speziell die Oracle Option Spatial für räumliche Daten.
ORAIN unterstützt sämtliche Geometry-Typen von Oracle Spatial 9.2 und 10g. Diese sind POINT, LINE, POLYGON, MULTIPOINT, MULTILINE, MULTIPOLYGON und COLLECTION.
Der Modul wird mit:
|INCL \script\orain.mod
in einer ICS RUN1-Konfiguration verfügbar gemacht.
Der Modul ORAIN ist eine Erweiterung des Moduls DBIN. Alle im Modul DBIN beschriebenen Anteile gelten auch für das Modul ORAIN. Ziehen Sie deshalb auch die Dokumentation des Modules DBIN 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 DBIN_PARAM für den Modul gesetzt werden:
Parameter | req/opt | Beschreibung |
STATISTICS | o | ON oder OFF, Default = OFF. Statistik anzeigen. |
SELECT_PARSE | o | ON oder OFF ,
Default = ON . Definiert, ob ein
eventuelles SQL-select Statement geparst werden soll. Als
Argument für für das Modul kann ein SQL-select Statement
definiert werden. Als Default wird dieses select-Statement
von geparst , um spezielle Attribute zu erkennen, die vom
ODBC-Treiber nicht unterstützt werden und speziell gelesen
werden müssen. Manchmal können select-Statements (komplexe
Joins) nicht erfolgreich geparst werden. In solchen Fällen
ist dieser Parameter auf OFF zu schalten.
Sie müssen besorgt sein, dass das select-Statement von ODBC
verarbeitet werden kann. |
Folgende Parameter können in der Map ORAIN_PARAM für den Modul gesetzt werden:
Parameter | req/opt | Beschreibung |
SPATIAL_PROCESS | o | ON oder OFF, Default = OFF. Definiert ob Oracle Spatial Geometrien gelesen werden sollen. Mit OFF werden die Geometrien nicht gelesen. Mit ON werden die Geometrien gelesen. |
FENCE | o | string, Default = OFF. Wenn ein Fence nicht mit
OPT.fence definiert ist, kann mit diesem Parameter ein Fence
definiert werden. Der Wert kann in folgenden zwei Varianten
gesetzt werden. Variante als Point-Array mit geschlossener
Fläche in der Form x1/y1,x2/y2,... .
Variante als ein SQL-Statement, das eine Fläche als
Geometrie liefert. Beispiel: select
iltools_sdo_geometry_to_string(geom) as geom from filter
where name like "name1"' . In der Variante als
SQL-Statement muss die Geometrie wie im Beispiel mit der
PL/SQL Funktion
ILTOOLS_SDO_GEOMETRY_TO_STRING gelesen
werden. Hochkommas ' im SQL-Statement
müssen durch " ersetzt werden, weil in
ICS das Hochkomma bereits als String-Deliminator verwendet
wird. |
FENCE_FILTER | o | string, Default = OFF.Definiert wie ein Fence als
räumlicher Filter verwendet wird. Beispiel:
sdo_relate(%GEOMETRY%,%FENCE%,"mask=inside+coveredby
querytype=WINDOW")="TRUE"' .
%GEOMETRY% ist der Plazhalter für das
Geometrie-Attribut des Objektes und wird durch das
entsprechende Attribut ersetzt. %FENCE%
ist der Platzhalter für die Fence-Geometrie und wird durch
die Geometrie des Fences ersetzt. Hochkommas
' im SQL-Statement müssen durch
" ersetzt werden, weil in ICS das
Hochkomma bereits als String-Deliminator verwendet wird. Das
Statement des Filters wird als where-clause dem
select-Statement für die Abfrage der Datenbank-Tabelle
zugefügt. Besitzt eine Datenbank-Tabelle mehrere
Geometrie-Attribute, so werden die Filter für die einzelnen
Geometrien mit einem or zusammengefügt. |
Für die Anwendung der Oracle Option Spatial ist die enstprechende Dokumentation von Oracle zu beachten.
Der Modul liefert pro IN-Objekt folgende Systemkomponenten:
Komponente | req/opt | Beschreibung |
IN.TABLE(s) | r | Tablename des IN Objekts. |
IN.<Geometry>(g) | o | Ein Geometrie-Attribut wird mit demselben Namen wie in der Datenbank geliefert. Der enthaltene Wert entspricht einer ICS-Geometrie vom Typ point, line oder area. |
IN.<Geometry>_SDO_GEOMETRY(s) | o | Zusätzlich zu einem Geometrie-Attribut wird in einem Attribut mit dem Suffix _SDO_GEOMETRY die Oracle Spatial Geometrie als String geliefert. |
Alle weiteren Komponenten sind abhängig von der Tabellen-Definition in der Datenbank.
Für das Lesen von Oracle Spatial sind folgende Punkte zu beachten.
ODBC verarbeitet den Oracle Objekt-Typ MDSYS.SDO_GEOMETRY für die Geometrien nicht. Um die Geometrien über ODBC trotzdem lesen zu können, legt der Modul eine PL/SQL Funktion in Oracle an.
create function ILTOOLS_SDO_GEOMETRY_TO_STRING (geom MDSYS.SDO_GEOMETRY) RETURN CLOB
Diese Funktion wandelt eine Geometrie vom Typ MDSYS.SDO_GEOMETRY in einen String um. Die Funktion wird vom Modul beim Lesen der Geometrien wie folgt angewendet.
select ILTOOLS_SDO_GEOMETRY_TO_STRING(Geometrie) as Geometrie from Table
Die Funktion liefert die Geometrie als String, den der Modul dann in eine ICS-Geometrie umwandelt.
Der Oracle-User aus dem Daten gelesen werden sollen, muss deshalb die Berechtigung haben, eine Funktion anlegen zu können.
Der Modul beinhaltet alle Prozeduren und Methoden wie der Modul DBIN. Ziehen Sie deshalb die Dokumentation des Modules DBIN bei. Zusätzlich stellt der Modul ORAIN folgende Prozeduren und Methoden zur Verfügung.
Prozedur | ORAIN_OPEN [s input][] |
Beschreibung | Öffnet eine Datenbank definiert mit DB_PARAM.SOURCE und liest Objekte von der Datenbank in Abhängigkeit von <input>. Für <input> können folgende Werte verwendet werden.
Die Prozedur wird von RUN1 automatisch aufgerufen. |
Beispiel |
|
|
Prozedur | ORAIN_READ_OBJECT [][b state] |
Beschreibung | Liest das nächste IN-Objekt aus der geöffneten Datenbank-Tabelle. Die Prozedur wird von RUN1 automatisch aufgerufen. |
Beispiel |
|
Prozedur | ORAIN_CLOSE [][] |
Beschreibung | Schliesst den Modul und gibt die durch den Modul belegten Resourcen wieder frei. Die Prozedur wird von RUN1 automatisch aufgerufen. |
Beispiel |
|
Methode | ORACLE.SDO_GEOMETRY_TO_GEOM [s sdo-geometry][(i VAlignment,) (i HAlignment,) (r rotation,) g|li geometry, i dimension, s type, b status] |
Beschreibung | Übersetzt eine Oracle-Spatial
Geometrie als String in eine ICS-Geometrie. Kan die Geometry
übersetzt werden wird als Status TRUE
zurückgegen, ansonsten FALSE . Je nach
SDO-Type wird die Geometry als einzelne Geometry oder als
Liste von Geometrien zurückgegeben. Beim GeoMedia-Typ
gmpoint wird zusätzlich die Rotation geliefert. Beim
GeoMedia-Typ gmtext wird zusätzlich die Rotation, der Text,
das horizontale und das vertikale Alignment geliefert.
Folgende Typen werden zurückgegeben:
point,line,polygon,multipoint,multiline,multipolygon,collection,gmpoint,gmtext. |
Beispiel |
|
Folgende Konversionen werden durchgeführt:
|
! Diese ICS Konfiguration zeigt alle von orain.mod ! gelesenen Objekte in der .log Datei an. |LICENSE \license\iltoolspro.lic MAP USER_INPUT1 DIALOG => ODBC OPT => input END_MAP MAP DB_PARAM SOURCE => '' ! ODBC-Source USER => '' ! ODBC-User PASSWD => '' ! ODBC-Password TRACE => OFF END_MAP MAP ORAIN_PARAM STATISTICS => ON SPATIAL_PROCESS => ON END_MAP MAP INPUT_SOURCES I1 => ORAIN,* END_MAP MAP INOUT I1 => DISPLAY_IN0 END_MAP |INCL \script\orain.mod |INCL \script\db2il\dbdisplay.out |INCL \script\run1.prg