Was geschieht, wenn Sie Feature-Classes mit SDO_GEOMETRY-Geometriespeicherung erstellen?

Wenn Sie eine Feature-Class mit SDO_GEOMETRY-Speicherung erstellen, geschieht Folgendes:

Der Business-Tabelle der Feature-Class wird eine SDO_GEOMETRY-Spalte hinzugefügt.

ArcSDE erstellt eine Feature-Class, indem es der angegebenen Business-Tabelle eine Geometriespalte hinzufügt. Wenn der Parameter GEOMETRY_STORAGE auf SDO_GEOMETRY festgelegt ist, fügt ArcSDE der Business-Tabelle eine SDO_GEOMETRY-Spalte hinzu.

Im folgenden Beispiel hat die Business-Tabelle Namens- und Bevölkerungseigenschaften. Nachdem ihr eine Geometriespalte hinzugefügt wurde, weist sie außerdem eine SDO_GEOMETRY-Spalte mit dem Namen "Borders" auf. Falls erforderlich, wird eine eindeutige Feature-Kennungsspalte (OBJECTID in diesem Beispiel) hinzugefügt und ausgefüllt.

Name

Datentyp

Null?

NAME

VARCHAR2(32)*

POPULATION

NUMBER(11)

BORDERS

MDSYS.SDO_GEOMETRY

OBJECTID

NUMBER(38)

NOT NULL

HinweisHinweis:

*NVARCHAR2(32) wird statt VARCHAR2(32) verwendet, wenn Sie Unicode-Zeichenfolgen verwenden.

Der Business-Tabelle kann eine Geometriespalte mit ArcCatalog, dem sdelayer-Verwaltungsdienstprogramm oder ArcSDE C- und Java-APIs hinzugefügt werden.

Für die Spalte SDO_GEOMETRY wird ein räumlicher Index erstellt.

Wenn einer Business-Tabelle eine SDO_GEOMETRY-Spalte hinzugefügt wird, wird normalerweise ein räumlicher Index für diese Geometriespalte erstellt. Standardmäßig erstellt ArcSDE für eine SDO_GEOMETRY-Spalte einen R-Baum-Index.

Alternativ kann ArcSDE Feature-Classes ohne räumlichen Index erstellen; räumliche Abfragen können jedoch erst unterstützt werden, wenn ein räumlicher Index erstellt wird. Für die Funktion SDO_FILTER von Oracle, die von ArcSDE verwendet wird, ist das Vorhandensein eines räumlichen Indexes erforderlich.

Sie können einen räumlichen Index mit mehreren Methoden erstellen – in ArcCatalog, mit dem sdelayer-Verwaltungsdienstprogramm, mit Oracle Spatial Index Advisor, mit SQL oder durch Programmierung mit ArcSDE C- und Java-APIs.

ArcSDE löscht automatisch die von ArcSDE 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 ArcSDE die Feature-Class in den LOAD_ONLY_IO-Modus umschaltet.

Der Oracle Spatial-Metadatensicht wird ein Datensatz hinzugefügt.

Wenn ArcSDE einer Business-Tabelle eine SDO_GEOMETRY-Spalte hinzufügt, fügt es auch der USER_SDO_GEOM_METADATA-Sicht den erforderlichen Oracle Spatial-Metadatensatz hinzu. Diese Metadaten enthalten den Tabellennamen, den SDO_GEOMETRY-Spaltennamen, die Raumbezugs-ID und Informationen zur Koordinatendimension.

Wenn eine Anwendung eines Drittanbieters oder SQL verwendet wird, um die Tabelle, die räumliche Spalte und ihre Metadaten zu erstellen und die Tabelle dann bei ArcSDE registriert wird, löscht ArcSDE die Metadaten beim Entfernen der Registrierung der Tabelle aus ArcSDE nicht. Beim Löschen der Tabelle löscht ArcSDE jedoch immer die Metadaten, auf die gleiche Weise wie mit dem Befehl "sdetable -o delete".

Eine Koordinatendimension wird angegeben.

Sie können ArcSDE-Geometrie als 2D (X,Y), 2D mit Messwerten, 3D (X,Y,Z) oder 3D mit Messwerten erstellen. Beim Erstellen neuer Feature-Classes oder beim Hinzufügen einer vorhandenen Tabelle zu einer SDO_GEOMETRY-Spalte fügt ArcSDE die Oracle Spatial-Dimensionsinformationen in die Spalte DIMINFO der Metadatensicht ein.

Die SRID von jedem SDO_GEOMETRY-Wert wird auf Grundlage des Koordinatenbezugs festgelegt.

Oracle Spatial stellt vordefinierte Koordinatenbezüge in der Tabelle MDSYS.CS_SRS bereit. Wenn Sie mithilfe von ArcSDE eine neue Feature-Class erstellen, um eine bestimmte SRID für die Spalte SDO_GEOMETRY festzulegen, identifizieren Sie die entsprechende Oracle Spatial-Koordinatenbezugsbeschreibung, und legen Sie dann den SDO_SRID DBTUNE-Speicherparameter der Feature-Class auf diesen Wert fest.

Beispiele:

#MY_SDO_KEYWORD
GEOMETRY_STORAGE SDO_GEOMETRY
SDO_SRID 8307
UI_TEXT "MY_SDO_KEYWORD"
END

Wenn der Speicherparameter SDO_SRID nicht festgelegt wird, legt ArcSDE die SRID von jedem SDO_GEOMETRY-Wert und die SRID im entsprechenden Metadatensatz auf NULL fest.

Für ArcSDE ist die Oracle Spatial-SRID nicht erforderlich. ArcSDE verwaltet die Koordinatenbezugsinformationen für jede Feature-Class in einer eigenen SPATIAL_REFERENCES-Tabelle unabhängig von Oracle Spatial. Informationen zu unterstützten Koordinatenbezügen finden Sie im Handbuch Oracle Spatial User's Guide and Reference.

Die Spalte SDO_GEOMETRY wird ausgefüllt.

Beim Speichern von Geometrie in der Datenbank füllt ArcSDE den SDO_GEOMETRY-Wert aus einem ArcSDE-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 in SDO_GEOMETRY und dem SE_SHAPE-Objekt gibt, folgt ArcSDE beim Speichern von ArcSDE-Daten in Oracle Spatial-Tabellen einem Satz von Regeln:

HinweisHinweis:

ArcSDE unterstützt keine heterogene Geometriesammlung im SDO_GEOMETRY-Objekt, und ArcSDE kodiert keine SDO_ETYPE 0-Elemente im SDO_GEOMETRY-Objekt. SDO_ETYPE 0-Elemente sind anwendungsspezifisch.

Der Business-Tabelle wird eine weitere Spalte hinzugefügt, wenn Sie CAD- und Anmerkungseigenschaften speichern.

Der Typ SDO_GEOMETRY kann nicht alle Typen von geometrischen Elementen speichern, die die ArcSDE-Speicherung unterstützen muss. Wenn die Speicherung dieser Elemente (wie von den Geometrietyp-Flags bestimmt wird, die beim Erstellen der Feature-Class angegeben wurden) erforderlich ist, fügt ArcSDE der Business-Tabelle eine Spalte mit dem Namen SE_ANNO_CAD_DATA hinzu. Anhand des Feature-Class-Beispiels im ersten Abschnitt in diesem Thema würde die Business-Tabelle jetzt Folgendes enthalten:

Name

Datentyp

Null?

NAME

VARCHAR2(32)*

POPULATION

NUMBER(11)

BORDERS

MDSYS.SDO_GEOMETRY

SE_ANNO_CAD_DATA

BLOB

OBJECTID

NUMBER(38)

NOT NULL

HinweisHinweis:

*NVARCHAR2(32) wird statt VARCHAR2(32) verwendet, wenn Sie Unicode-Zeichenfolgen verwenden.

Jedes Mal, wenn ArcSDE erkennt, dass die Datenquelle CAD-Daten aufweist, schreibt ArcSDE 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. Wenn die Datenquelle keine CAD-Daten enthält, legt ArcSDE den SE_ANNO_CAD_DATA-Wert auf NULL fest. Die Eigenschaft SE_ANNO_CAD_DATA enthält Daten aus zahlreichen ArcGIS-Komponenten:

Räumliche Abfragen zur Feature-Class werden mit Oracle Spatial-Filterfunktionen ausgeführt.

ArcSDE verwendet die Oracle Spatial-Funktion SDO_FILTER, um die primäre räumliche Abfrage auszuführen. ArcSDE 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 ArcSDE übergebene SQL-WHERE-Klausel ein. Mit räumlichen Filtern in der WHERE-Klausel können Anwendungen die räumliche Abfrage an den Datenbankserver, den ArcSDE-Anwendungsserver und die Anwendung selbst verteilen.


7/10/2012