ORACLE Spatial/Locator

Ermöglicht den Zugriff auf ORACLE Datenbanken mit Geometriedaten. Die Implementierung verwendet die OciLIB. D.h. ein Oracle-Instant Client mit installierte OCI Komponente muss auf dem ausführendem Rechner installiert sein. Die installierte Version des Oracle Client wird zur Laufzeit beim ersten Zugriff ermittelt.

Hinweis: Beachten Sie, dass je nach Komponenten die entsprechende 32Bit/64 Bit Version installiert sein muss. Wir empfehlen die Verwendung des Oracle Instant-Client ab Version 11.

Abfragen mittels GeoSQL sind möglich.

Das Einbinden einer Quelle ohne Geometriespalte ist möglich.

Argumente

Typname: OracleLayer

  • db: TNS Name oder EZ-Connect (//server:1521/ora) Verbindungszeichenfolge zum Datenbankserver ()

  • userName: Datenbank Benutzername, kann verschlüsselt angegeben werden

  • passWord: Kennwort des Datenbankbenutzers, kann verschlüsselt angegeben werden

  • source :Tabelle oder Abfrage der Datenquelle

  • geomColumnName: (""): wenn nicht angegeben, dann wird aus der Abfrage {source} die erste Spalte vom Typ Geometry verwendet, sonst bleibt es ein Nicht-Spatial Layer

  • idColumnName (""): optionaler Name einer Spalte die eindeutige Werte enthält.

  • srid (-1): Die SRID der Geometrie, muss angegeben werden, wenn quickLoad true ist.

    Die Srid wird nur für das korrekte Erstellen der Geometrien für Vergleiche verwendet, die Projektion wird ausschließlich durch den EpsgCode festgelegt.

    Der Wert -1 wird als SRID NULL interpretiert.

  • epsgCode (-1): Epsg-Code der Daten, wenn nicht definiert, dann wird eine automatische Ermittlung aus der Bounding-Box versucht

  • quickLoad (false): Wenn false, dann werden Count, Srid und BBox über diese Abfrage ermittelt

  • style|cssFile: hier immer vom Typ Vektor CSS.

Ladevorgang

Der Ladevorgang wird im Wesentlichen durch die Argumente beeinflusst. In jedem Fall wird eine Abfrage SELECT * FROM {source} WHERE 1 = 0, bzw. wenn kein IdColumnNamen angegeben ist SELECT ROWID,* FROM {source} WHERE 1 = 0 durchgeführt.

Je nach Quickload wird eine weitere Abfrage für die Statistik ausgeführt.

Beispiel

Hier wird auf die Tabelle SpatialTabelle zugegriffen.

{
  "Ora1": {
	"type": "OracleLayer",
	"userName":"scott",
	"password":"tiger",
	"db":"//host.local:1521/ora",
	"source":"SpatialTabelle",
	"epsgCode":31469,
	"cssfile": "Marker.css",
	"idColumnName":"id"
	}
}

Implementierungsdetails / Features und Einschränkungen

Folgende Oracle SDO Funktionen der Datenbank werden verwendet:

  • SDO_AGGR_MBR(geom)
  • SDO_FILTER(geom,geom,QueryType)
  • SDO_RELATE(geom,geom,MASK)

Liste der Geometrieformate: siehe hier

Nicht unterstützte Datentypen

Folgende Oracle-Datentypen werden derzeit nicht unterstützt, d.h. beim Auslesen ignoriert:

  • INTERVAL
  • OBJECT (außer SDO_GEOMETRY)
  • STATEMENT
  • FILE
  • RAW
  • COLLECTION
  • REFERENCE

Konvertierungsregeln für numerische Typen

Anbei eine Aufstellung der Datenkonvertierungsregeln für numerische Typen.

Definition Oracle Ergebnisdatentyp
NUMBER Double
NUMBER(*,10) Double
NUMBER(20,10) Double
NUMBER(10) Int32
NUMBER(*, 0) Int64
NUMBER(10,-2) Double
NUMBER(5,0) Int16
INTEGER Int64
DECIMAL Int64
DECIMAL(10,5) Double
FLOAT Double
BINARY_FLOAT Double
BINARY_DOUBLE Double
ROUND((NI/10),4) Double
SQL Statments für intern durchgeführte Abfragen

Ermittlung von Count/BBox (siehe auch Parameter quickLoad):

(
with mbr as 
(select rownum coord_seq, column_value coord from table (select sdo_aggr_mbr({geomCol}).sdo_ordinates
  from {source})) 
 select
	   (select count(*) from {source}) cnt
	  , (select distinct a.{geomCol}.sdo_srid from {source} a) srid
	  , (select coord x1 from mbr where coord_seq = 1) MinX
	  , (select coord y1 from mbr where coord_seq = 2) MinY
	  , (select coord x2 from mbr where coord_seq = 3) MaxX
	  , (select coord y2 from mbr where coord_seq = 4) MaxY      
   from dual
)

Ist quickLoad true, dann wird lediglich SELECT COUNT(*) FROM ausgeführt.


Zuletzt geändert: 03.08.2018 10:12:33 (erstmals erstellt 19.04.2017)