Speichertyp "ST_Geometry" in Oracle

Der räumliche Datentyp "ST_Geometry" von Esri kann in Oracle-Datenbanken mit und ohne Geodatabase verwendet werden. Er ermöglicht es Ihnen, räumliche Daten in andere Typen der Geschäftsdaten zu integrieren, dadurch erhält die Mehrbenutzer-Datenbank den Vorteil, eine geographische Komponente zu den Analysen und Datenprodukten hinzufügen zu können. Die räumlichen Daten zusammen mit anderen Geschäftsobjekten zu speichern vereinfacht auch den Mehrbenutzerzugriff, die Verwaltung und die Sicherheit der Daten, da Sie weniger Datenspeicherressourcen verwalten müssen.

Der räumliche Datentyp "ST_Geometry" von Esri ist der Standard-Geometriespeichertyp für Geodatabases in Oracle. Sie können den Typ "ST_Geometry" mit dem Werkzeug Räumlichen Typ erstellen auch in Oracle-Datenbanken installieren.

HinweisHinweis:

Der Typ "ST_Geometry" wird nicht für Oracle XA-Transaktionen unterstützt.

Um eine Geodatabase zu erstellen und den ST_Geometry-Typ und den Domänenindex im Oracle-DBMS zu verwenden, müssen dem Geodatabase-Administratorbenutzer (SDE) die entsprechenden Systemberechtigungen gewährt werden, um Typen, Operatoren und gespeicherte Prozeduren instanziieren zu können. Weitere Informationen zu den erforderlichen Berechtigungen finden Sie unter Benutzerberechtigungen für Geodatabases in Oracle. Um den ST_Geometry-Typ in einer Oracle-Datenbank zu installieren, muss auch ein SDE-Benutzer vorhanden sein. Außerdem müssen die spezifischen Systemberechtigungen gewährt werden, um Typen, Operatoren und gespeicherte Prozeduren instanziieren zu können. Weitere Informationen finden Sie unter Hinzufügen des Speichertyps "ST_Geometry" zu einer Oracle-Datenbank.

Wenn Sie den räumlichen Datentyp "ST_Geometry" von Esri in einer Geodatabase in Oracle oder einer Oracle-Datenbank verwenden, können Sie auf die räumlichen Daten über SQL-Funktionen, die den räumlichen ISO SQL/MM-Standard implementieren, und über die Simple Feature Specification des OGCs zugreifen. Sie können SQL-Befehle zum Speichern, Abrufen und Bearbeiten von räumlichen Features wie bei jedem anderen Datentyp verwenden. Sie können eine lange Liste standardbasierter Funktionen mit SQL-Befehlen und gespeicherten Prozeduren verwenden, um räumliche Daten abzurufen und zu analysieren. Der SQL-Zugriff auf die Daten macht es möglich, mit anderen Anwendungen auf Daten zuzugreifen, die in einer ArcSDE-Geodatabase für Oracle erstellt wurden.

Um mit SQL auf räumliche Features zuzugreifen, müssen die ST_Geometry-Bibliotheken auf dem gleichen Server wie das Oracle-Datenbankmanagementsystem (DBMS) installiert sein. Wenn Sie planen, das Oracle-DBMS auf einem anderen Server als einem ArcSDE-Dienst auszuführen, stellen Sie sicher, dass das Betriebssystem des Oracle-Servers auch für ArcSDE unterstützt wird und die ST_Geometry-Bibliotheken dort installiert sind.

Um mit SQL auf Tabellen in Oracle zuzugreifen, die den räumlichen Datentyp verwenden, müssen Sie den Oracle-Listener konfigurieren. Weitere Informationen finden Sie unter Konfigurieren des Oracle-Listeners für die Verwendung von SQL.

Wie ST_Geometry räumliche Daten speichert

Nachfolgend finden Sie eine Beschreibung von "ST_Geometry" in Oracle:

Name

Typ

ENTITY

NUMBER(38)

NUMPTS

NUMBER(38)

MINX

FLOAT(64)

MINY

FLOAT(64)

MAXX

FLOAT(64)

MAXY

FLOAT(64)

MINZ

FLOAT(64)

MAXZ

FLOAT(64)

MINM

FLOAT(64)

MAXM

FLOAT(64)

AREA

FLOAT(64)

LEN

FLOAT(64)

SRID

NUMBER(38)

POINTS

BLOB

Die Attribute des räumlichen Datentyps stellen die folgenden Informationen dar:

Wie andere Objekttypen enthält auch der ST_Geometry-Datentyp eine Konstruktormethode und Funktionen. Eine Konstruktormethode ist eine Funktion, die eine neue Instanz (Objekt) des Datentyps zurückgibt und die Werte seiner Attribute festlegt.

Der Name des Konstruktors ist der gleiche wie der Typ (ST_Geometry). Wenn Sie ein Objekt vom Typ "ST_Geometry" instanziieren, rufen Sie die Konstruktormethode auf. Beispiel:

CREATE TABLE hazardous_sites (name        varchar2(128),
                              location    st_geometry);

Die folgenden ST_Geometry-Accessorfunktionen nehmen eine einzelne ST_Geometry als Eingabe und geben den angeforderten Eigenschaftswert als Zahl zurück.

Die folgende Abfrage gibt z. B. den Namen und die Fläche der einzelnen Staaten in den USA zurück.

SELECT name, st_area(geometry)
FROM us_states
ORDER BY name;

"ST_LineString", "ST_MultiLineString", "ST_MultiPoint", "ST_MultiPolygon", "ST_Point" und "ST_Polygon" sind alle Subtypes (oder Subclasses) von "ST_Geometry". "ST_Geometry" und die zugehörigen Subtypes haben gemeinsame Attribute und Funktionen. Die Konstruktordefinition für "ST_LineString", "ST_MultiLineString", "ST_MultiPoint", "ST_MultiPolygon", "ST_Point" und "ST_Polygon" ist die gleiche. Der Name des Konstruktors ist der gleiche wie der konstruierte Typ.

Da "ST_Point" ein endliches Objekt (ein einzelner Punktwert) ist, kann es auch mit einer der folgenden Methoden erstellt werden.

Diese Methode verwendet Koordinatenpunkte und eine SRID.

METHOD

 FINAL CONSTRUCTOR FUNCTION ST_POINT RETURNS SELF AS RESULT
 Argument Name                  Type                    In/Out Default?

 PT_X                           NUMBER                  IN
 PT_Y                           NUMBER                  IN
 SRID                           NUMBER                  IN

SQL> INSERT INTO sample_pt VALUES (ST_Point (10, 20, 1) );

Diese Methode ermöglicht es Ihnen, Koordinatenpunkte und einen Höhenwert für jeden Punkt anzugeben.

METHOD

 FINAL CONSTRUCTOR FUNCTION ST_POINT RETURNS SELF AS RESULT
 Argument Name                  Type                    In/Out Default?
 
 PT_X                           NUMBER                  IN
 PT_Y                           NUMBER                  IN
 PT_Z                           NUMBER                  IN
 SRID                           NUMBER                  IN

SQL> INSERT INTO sample_pt VALUES (ST_Point (10, 20, 5, 1) );

Diese letzte Methode für "ST_Point" lässt darüber hinaus einen Messwert zu, der als Teil des erstellten Punktobjekts angegeben wird.

METHOD

 FINAL CONSTRUCTOR FUNCTION ST_POINT RETURNS SELF AS RESULT
 Argument Name                  Type                    In/Out Default?

 PT_X                           NUMBER                  IN
 PT_Y                           NUMBER                  IN
 PT_Z                           NUMBER                  IN
 MEASURE                        NUMBER                  IN
 SRID                           NUMBER                  IN

SQL> INSERT INTO sample_pt VALUES (ST_Point (10, 20, 5, 401, 1) );

Metadaten-Schema

Der ST_Geometry-Typ für Oracle und Metadatentabellen gehören dem SDE-Schema. Die Schemadefinition ist die Basistabellenbeschreibung für Metadatentabellen, die verwendet wird, um den Typ "Spalte/Tabelle", den räumlichen Index (der Domänenindex "ST_Spatial_Index") und die Raumbezugsinformationen zu definieren und zu beschreiben. Alle Typen und Domänenindex-Typdefinitionen, Pakete und Metadatentabellen werden im SDE-Schema erstellt.

Da die Definitionen für "ST_Geometry" dem SDE-Benutzer gehören, löschen Sie niemals den SDE-Benutzer aus der Datenbank, wenn Sie Tabellen in der Datenbank haben, die ST_Geometry-Spalten enthalten. Das würde dazu führen, dass auf diese Tabellen nicht zugegriffen werden kann.

Im Application Developer's Guide von Oracle wird erwähnt, dass, wenn ein Benutzer aus der Datenbank gelöscht wird, eine der Löschanweisungen, die ausgeführt wurde, "DROP TYPE" mit der Option "FORCE" ist. Diese Anweisung entfernt alle Typen, die diesem Benutzer gehören, damit der Benutzer aus der Datenbank entfernt werden kann. DROP TYPE FORCE löscht Typen auch dann, wenn sie abhängige Typen oder mit ihnen verknüpfte Tabellen aufweisen. Wenn das geschieht, werden die zugehörigen Tabellen als ungültig markiert und auf die Daten in den Tabellen kann nicht mehr zugegriffen werden.

Eine Beschreibung der folgenden ST_Geometry-Metadatentabellen finden Sie unter Systemtabellen einer Geodatabase in Oracle:

  • ST_COORDINATE_SYSTEMS
  • ST_GEOMETRY_COLUMNS
  • ST_GEOMETRY_INDEX
  • ST_SPATIAL_REFERENCES
DetailinformationenDetailinformationen:

Außerdem werden die folgenden Datenbankobjekte erstellt, um ST_Geometry-Metadaten zu verwalten:

  • Ein SDE-Datenbankbenutzer
  • Ein Standard-Tablespace für den SDE-Benutzer
  • ST_Geometry-Funktionen
  • ST_Geometry-Ansichten
    • ALL_ST_GEOMETRY_COLUMNS_V
    • USER_ST_GEOMETRY_COLUMNS_V
    • USER_ST_GEOM_INDEX_V
  • ST_Geometry-Trigger
    • DB_EV_DROP_ST_METADATA
    • DB_EV_ALTER_ST_METADATA
    • DB_EV_RENAME_ST_METADATA
    • TG_ST_SPATIAL_REF_SRID
    • TG_ST_CREF_SYS
    • TG_GCOL_NAME
    • TG_ST_GEOMINDEX_NAME
  • Ein SPX_UTIL-Paket- und -Paketkörper
  • Ein SDEXMLTOTEXT-Operator
  • ST_Geometry-Typen
    • BLOB_ARRAY_TAB
    • INT_ARRAY_TAB
    • FLT_ARRAY_TAB
    • BND_ROWID_TAB
    • SP_GRID_INFO

      "SP_Grid_Info" wird in der Tabelle "ST_Geometry_Index" als Datentyp für das Feld GRID verwendet. Es enthält die Gitterebeneninformationen für räumliche Indizes.

Erstellen von Feature-Classes in Oracle mit dem Speichertyp "ST_Geometry"

In Datenbanken, in denen der räumliche Datentyp "ST_Geometry" installiert ist, geben Sie die "ST_Geometry" als Speichertyp an, wenn Sie eine Feature-Class erstellen.

In Geodatabases wird der für eine Feature-Class verwendete Geometriespeichertyp von der Einstellung "GEOMETRY_STORAGE" im Konfigurationsschlüsselwort bestimmt, das Sie beim Erstellen der Feature-Class angeben.

Einstellen von "ST_Geometry" als Standardspeichertyp für neue Geodatabase-Feature-Classes

Ab ArcGIS 9.3 ist "ST_Geometry" der Standardspeichertyp für Feature-Classes in einer neuen Geodatabase in Oracle. Das bedeutet, der Parameter GEOMETRY_STORAGE des Schlüsselworts DEFAULTS in der DBTUNE-Tabelle wird auf ST_GEOMETRY festgelegt.

Wenn Sie die Geodatabase anfänglich vor ArcGIS 9.3 erstellt haben und alle neuen Feature-Classes standardmäßig mit dem Format "ST_Geometry" erstellen möchten, müssen Sie den Parameter GEOMETRY_STORAGE unter dem Schlüsselwort DEFAULTS in der DBTUNE-Tabelle ändern. Legen Sie den Parameter GEOMETRY_STORAGE auf ST_GEOMETRY fest.

HinweisHinweis:

Verwenden Sie den administrativen sdedbtune-Befehl, um DBTUNE-Einstellungen zu ändern. Weitere Informationen zur Verwendung des Befehls "sdedbtune" finden Sie unter Ändern des Inhalts der DBTUNE-Tabelle und in der "ArcSDE Administration Command Reference", die vom ArcSDE-Anwendungsserver für Oracle bereitgestellt wird.

Verwenden des Formats "ST_Geometry" für einige der Geodatabase-Feature-Classes

Geodatabases in Oracle unterstützen eine Reihe von anderen Geometriespeichertypen. Diese anderen Typen können alle zusammen in der gleichen Datenbank verwendet werden. Obwohl es nur einen Standard-Geometriespeichertyp geben kann, können einzelne Tabellen mit verschiedenen Datentypen erstellt werden.

Wenn nur einige der Feature-Classes den räumlichen Datentyp-Speicher "ST_Geometry" verwenden sollen, können Sie "DEFAULTS GEOMETRY_STORAGE" auf einen anderen Speichertyp festlegen und ein getrenntes Kennwort für den ST_GEOMETRY-Speicher erstellen. Sie können beispielsweise den Befehl "sdedbtune" verwenden, um die DBTUNE-Tabelle in eine Textdatei zu exportieren, der Datei ein ähnliches Schlüsselwort wie das folgende hinzufügen und die Datei zurück in die DBTUNE-Tabelle importieren:

##ST_GEOMETRY
GEOMETRY_STORAGE    "ST_GEOMETRY"
ATTRIBUTE_BINARY    "BLOB"
RASTER_STORAGE	    "BLOB"
ST_GEOM_LOB_STORAGE  " STORE AS (
#               TABLESPACE <tablespace_name>
                ENABLE STORAGE IN ROW CHUNK 8K RETENTION CACHE)"

UI_TEXT             "User Interface text description for ST_GEOMETRY"

COMMENT             "Any general comment for ST_GEOMETRY keyword"

END

Nachdem das Schlüsselwort hinzugefügt wurde, können Sie es beim Erstellen von Feature-Classes verwenden, für die Sie den Datentypspeicher "ST_Geometry" nutzen möchten. Wenn Sie beispielsweise über eine kleine Teilmenge von Daten verfügen, auf die mit SQL zugegriffen werden muss, haben Sie die Möglichkeit, lediglich diese Teilmenge der Feature-Classes zu erstellen, um den räumlichen Datentyp "ST_Geometry" für die Geometriespeicherung zu verwenden.

Welche Datenobjekte werden für Benutzerdaten erstellt?

Es werden drei Datenbankobjekte erstellt, wenn Sie mithilfe von ArcGIS eine Feature-Class erstellen, die das Format "ST_Geometry" verwendet. Diese Objekte und die DBTUNE-Parameter, die verwendet werden, um die Speicherung zu steuern, sind in der folgenden Tabelle aufgeführt:

Datenbankobjekte

Speicherparameter

Tabelle mit einer "ST_Geometry"-Spalte

Der Parameter B_STORAGE definiert die Speichermethode für die Tabelle.

Der Parameter ST_GEOM_LOB_STORAGE definiert die Speichermethode für LOB-Segmente in der Tabelle.

Räumlicher Index

Der Parameter S_STORAGE definiert den räumlichen Indexspeicher.

Index für die ObjectID-Spalte

Der Parameter B_INDEX_ROWID definiert die Speichermethode für diesen Index.

Weitere Informationen zu Konfigurationsparametern finden Sie in DBTUNE-Konfigurationsparameter für Oracle und im folgenden Abschnitt zur LOB-Speicherung.

Einstellen des Speichers für das LOB-Segment

Sie sollten den Parameter ST_GEOM_LOB_STORAGE unter der Schlüsselwortliste DEFAULTS ändern. Beim Hinzufügen zum Schlüsselwort DEFAULTS sollte jedoch der LOB-Segmentname nicht in der Definition dieses Parameters enthalten sein. Wenn er enthalten ist und Sie den Wert für den Namen vor dem Erstellen eines zweiten Features nicht ändern, schlägt es fehl, da jeder LOB-Segmentname für ein gegebenes Schema eindeutig sein muss. Das folgende Beispiel für einen ST_GEOM_LOB_STORAGE-Parameter enthält keine Objektnamen, dadurch werden Namenskonflikte innerhalb des gleichen Schemas vermieden:

ST_GEOM_LOB_STORAGE  " STORE AS (
  ENABLE STORAGE IN ROW CHUNK 8K RETENTION CACHE)"

Beispiele für gültige Werte für den Parameter ST_GEOM_LOB_STORAGE:

##ST_GEOMETRY
GEOMETRY_STORAGE    "ST_GEOMETRY"
ATTRIBUTE_BINARY    "BLOB"
RASTER_STORAGE	    "BLOB"
ST_GEOM_LOB_STORAGE  " STORE AS (TABLESPACE TERRA_NDX ENABLE STORAGE IN ROW CHUNK 8K
 RETENTION CACHE)"

UI_TEXT             "User Interface text description for ST_GEOMETRY"

COMMENT             "Any general comment for ST_GEOMETRY keyword"

END

##ST_GEOMETRY
GEOMETRY_STORAGE    "ST_GEOMETRY"
ATTRIBUTE_BINARY    "BLOB"
RASTER_STORAGE	    "BLOB"
ST_GEOM_LOB_STORAGE  " STORE AS (ENABLE STORAGE IN ROW CHUNK 8K RETENTION CACHE)"

UI_TEXT             "User Interface text description for ST_GEOMETRY"

COMMENT             "Any general comment for ST_GEOMETRY keyword"

END

Wie zuvor in diesem Abschnitt erwähnt, wenn Sie LOB- und LOB-Index-Tablespace-Namen definieren, müssen Sie diese Werte vor jeder Feature-Class-Erstellung ändern. Wenn Sie dies nicht tun, schlagen nachfolgende Feature-Class-Erstellungen fehl, da jeder Segmentname eindeutig sein muss.

5/9/2014