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.

NameDatentypNULL?

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:

NameDatentypNULL?

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.