SDO_GEOMETRY und ArcGIS
Wenn Sie eine Feature-Class mit SDO_GEOMETRY-Speicherung in einer Geodatabase erstellen, geschieht Folgendes:
Eine Tabelle mit einer SDO_GEOMETRY-Spalte wird erstellt.
Wenn Sie beim Erstellen einer Feature-Class in einer Geodatabase in Oracle ein Konfigurationsschlüsselwort angeben, in dem der Parameter "GEOMETRY_STORAGE" auf "SDO_GEOMETRY" festgelegt wurde, verwendet ArcGIS eine SDO_GEOMETRY-Spalte für das Shape-Feld.
Die folgende Beispiel-Feature-Class verfügt über ein eindeutiges Kennungsfeld (ObjectID), Namens- und Bevölkerungsattribute und eine SDO_GEOMETRY-Shape-Spalte.
|
Name |
Datentyp |
NULL? |
|---|---|---|
|
NAME |
VARCHAR2(32)* |
|
|
POPULATION |
NUMBER(11) |
|
|
SHAPE |
MDSYS.SDO_GEOMETRY |
|
|
OBJECTID |
NUMBER(38) |
NOT NULL |
Hinweis:
*NVARCHAR2(32) wird statt VARCHAR2(32) verwendet, wenn Sie Unicode-Zeichenfolgen verwenden.
Für die Spalte "SDO_GEOMETRY" wird ein räumlicher Index erstellt.
ArcGIS erstellt standardmäßig einen räumliche R-Baum-Index für die SDO_GEOMETRY-Spalte einer Feature-Class. ArcGIS verwendet die SDP_FILTER-Funktion von Oracle, um räumliche Abfragen bei der Feature-Class auszuführen. Deshalb wird für räumliche Abfragen ein räumlicher Index benötigt.
ArcGIS löscht automatisch die von ArcGIS erstellten Oracle Spatial-Indizes und erstellt neue, wenn die Feature-Class zwischen den Modi "LOAD_ONLY_IO" und "NORMAL_IO" wechselt. Räumliche Indizes, die von der Oracle Spatial Index Advisor-Anwendung definiert oder mit SQL erstellt wurden, werden nicht gelöscht, wenn ArcGIS die Feature-Class in den LOAD_ONLY_IO-Modus umschaltet.
Der Oracle Spatial-Metadatensicht wird ein Datensatz hinzugefügt.
Wenn ArcGIS eine Feature-Class mit einer SDO_GEOMETRY-Spalte erstellt, wird der erforderliche Oracle Spatial-Metadatensatz zur USER_SDO_GEOM_METADATA-Sicht hinzugefügt. Diese Metadaten enthalten den Tabellennamen, den SDO_GEOMETRY-Spaltennamen, die Raumbezugs-ID und Informationen zur Koordinatendimension.
Wenn Sie die Feature-Class in ArcGIS löschen, werden die Oracle Spatial-Metadaten ebenfalls gelöscht.
Eine Koordinatendimension wird angegeben.
Sie können ArcGIS-Geometrie als 2D (X, Y), 2D mit Messwerten (X, Y, M), 3D (X, Y ,Z) oder 3D mit Messwerten (X, Y, Z, M) erstellen. Beim Erstellen neuer Feature-Classes mit einer SDO_GEOMETRY-Spalte fügt ArcGIS die Oracle Spatial-Dimensionsinformationen in die Spalte "DIMINFO" der Metadatensicht ein.
Die X-Koordinate ist die erste Dimension.
Die Y-Koordinate ist die zweite Dimension.
Die Z-Koordinate ist die dritte Dimension, wenn die Feature-Class mit Höhen definiert ist.
Die M-Koordinate ist die letzte Dimension (dritte oder vierte, abhängig vom Vorhandensein oder der Abwesenheit einer Z-Koordinate), wenn die Feature-Class mit Messwerten definiert ist.
Die Spalte "SDO_GEOMETRY" wird ausgefüllt.
Beim Speichern von Geometrie in der Geodatabase füllt ArcGIS den SDO_GEOMETRY-Wert aus einem API-Objekt mit dem Namen "SE_SHAPE" auf. Das SE_SHAPE-Objekt kann einfache und komplexe Geometrie enthalten, die Höhen, Messwerte, CAD-Daten, Annotations- und Oberflächenmuster umfassen kann. Der Datentyp "SDO_GEOMETRY" unterstützt eine Teilmenge dieser geometrischen Eigenschaften. Da es keine 1:1-Zuordnung der Komponenten im SDO_GEOMETRY- und im SE_SHAPE-Objekt gibt, folgt ArcGIS beim Speichern von Daten in Oracle Spatial-Tabellen einem Satz von Regeln:
Einen vierstelligen SDO_GTYPE auf Grundlage des Entitätstyps der Geometrie erstellen.
SDO_SRID-Typ festlegen.
Koordinatenwerte in das entsprechende Koordinatenbezugssystem schreiben.
Koordinaten in der Reihenfolge X, Y, Z und M schreiben, Höhen- und Messwertkoordinaten nur definieren, wenn sie im Quell-SE_SHAPE-Objekt vorhanden sind.
Wenn Höhen und/oder Messwertkoordinaten im Quell-SE_SHAPE-Objekt vorhanden sind, alle Koordinaten mit einer Höhe und/oder einer Messwertkoordinate speichern.
Höhen und Messwertkoordinaten auf NaN (keine Zahl) festlegen, wenn bestimmte Koordinaten in der Geometrie nicht definierte Höhen- oder Messwerte enthalten.
Messwerte in jedem Geometrietyp, nicht nur Linestrings, zulassen. Die ersten und letzten Koordinaten müssen keine Messwerte enthalten.
Messwerte nicht auf aufsteigende oder absteigende Reihenfolge einschränken.
Kreisförmige Kurven in den SDO_GEOMETRY-Typ schreiben.
Nicht kreisförmige Bogen (z. B. kubische Splines oder Bézier) in Linestrings mit geraden Kanten konvertieren und die geschwungene Repräsentation in SE_ANNO_CAD_DATA speichern.
Alle Features vor dem Schreiben in die Datenbank überprüfen.
SDO_POINT verwenden, um einen Singlepart-X,Y- oder -X,Y,Z-Punkt im SDO_GEOMETRY-Objekt zu speichern. Punktstützpunkte für andere Typen von Point-Feature-Classes in "SDO_ORDINATE_ARRAY" speichern.
Hinweis:
ArcGIS unterstützt keine heterogene Geometriesammlung im SDO_GEOMETRY-Objekt, und ArcGIS codiert keine SDO_ETYPE 0-Elemente im SDO_GEOMETRY-Objekt. SDO_ETYPE 0-Elemente sind anwendungsspezifisch.
Der Business-Tabelle wird eine weitere Spalte hinzugefügt, um CAD- und Annotationseigenschaften zu speichern.
Der Typ "SDO_GEOMETRY" kann nicht alle Typen von geometrischen Elementen speichern, die die ArcGIS-Speicherung unterstützen muss. Wenn ArcGIS eine Feature-Class erstellt oder registriert, wird der Business-Tabelle eine Spalte mit der Bezeichnung SE_ANNO_CAD_DATA hinzufügt. Anhand des Feature-Class-Beispiels im ersten Abschnitt in diesem Thema würde die Business-Tabelle jetzt die folgenden Spalten enthalten:
|
Name |
Datentyp |
NULL? |
|---|---|---|
|
NAME |
VARCHAR2(32)* |
|
|
POPULATION |
NUMBER(11) |
|
|
SHAPE |
MDSYS.SDO_GEOMETRY |
|
|
SE_ANNO_CAD_DATA |
BLOB |
|
|
OBJECTID |
NUMBER(38) |
NOT NULL |
Hinweis:
*NVARCHAR2(32) wird statt VARCHAR2(32) verwendet, wenn Sie Unicode-Zeichenfolgen verwenden.
Jedes Mal, wenn ArcGIS erkennt, dass die Datenquelle CAD-Daten aufweist, schreibt ArcGIS eine einfache geometrische Repräsentation der CAD-Daten in den SDO_GEOMETRY-Wert und schreibt die unveränderten CAD-Daten in den SE_ANNO_CAD_DATA-Wert. Die Eigenschaft "SE_ANNO_CAD_DATA" enthält Daten aus zahlreichen ArcGIS-Komponenten:
Parametrische Objekte, z. B. kubische Splines und Bézierkurven aus ArcMap
Oberflächenmuster aus der Erweiterung "ArcGIS Spatial Analyst"
Räumliche Abfragen zur Feature-Class werden mit Oracle Spatial-Filterfunktionen ausgeführt.
ArcGIS verwendet die Oracle Spatial-Funktion "SDO_FILTER", um die primäre räumliche Abfrage auszuführen. ArcGIS führt eine sekundäre Filterung von "SDO_GEOMETRY" auf Grundlage der von der Anwendung angeforderten räumlichen Beziehung aus.
Anwendungen schließen möglicherweise auch primäre und sekundäre Filterfunktionen aus Oracle Spatial in die an ArcGIS übergebene SQL-WHERE-Klausel ein. Mit räumlichen Filtern in der WHERE-Klausel können Anwendungen die räumliche Abfrage an den Datenbankserver und die Anwendung selbst verteilen.