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 ArcGIS Spatial Analyst extension
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.