Registrieren einer Tabelle mit einer "ST_Geometry"-Spalte bei ArcSDE
Sie können eine räumliche Tabelle mit dem administrativen Befehl in ArcSDE "sdelayer –o register" manuell bei ArcSDE registrieren. Nach der Registrierung bei ArcSDE wird die räumliche Tabelle als Layer bezeichnet.
ESRI empfiehlt, Feature-Classes in ArcGIS zu erstellen. Beim Erstellen von Feature-Classes in ArcGIS ist sichergestellt, dass diese ordnungsgemäß erstellt werden. Einige SQL-Benutzer und -Anwendungsentwickler benötigen jedoch u. U. weitere Möglichkeiten zum Verwenden von räumlichen Tabellen. Daher unterstützt ESRI das Registrieren von externen räumlichen Tabellen, die mit SQL oder der Anwendung eines Drittanbieters erstellt wurden.
Tabellen, die in ArcSDE registriert werden, müssen mindestens folgende Kriterien erfüllen:
- Der Benutzer, von dem die Tabelle registriert wird, muss der Besitzer sein.
- Die Tabelle muss eine einzelne "ST_Geometry"-Spalte enthalten.
- Die Tabelle darf keine weiteren benutzerdefinierten Spalten aufweisen.
- Die Tabelle darf nur einen Geometrietyp aufweisen (Punkte, Linien oder Polygone).
- Die Tabelle muss eine eindeutige Spalte vom Typ "Integer" ohne Nullwerte (NOT NULL) als registrierte Objekt-ID-Spalte aufweisen.
- Alle Datensätze in der Tabelle müssen dieselbe Raumbezugs-ID (SRID) oder keine SRID aufweisen.
- Wenn Sie bei der Registrierung eine SRID angeben, muss diese in der Geodatabase enthalten sein.
- Beim Namen darf nur Groß- oder nur Kleinschreibung verwendet werden, er darf nicht mit einer Zahl beginnen und nicht mehr als 128 Zeichen (160 Zeichen bei Oracle) umfassen.
Wenn die Tabelle keine Daten enthält und Sie die Tabelle in ArcSDE registrieren, dabei jedoch keine gültige SRID angeben, wird die Standard-SRID verwendet. Bei PostgreSQL- und Oracle-Tabellen mit "ST_Geometry"-Spalten ist der Standardwert 0. Die SRID 0 wird vorwiegend zu Testzwecken verwendet, damit wird kein Raumbezug zugewiesen. Wenn Sie zu einem späteren Zeitpunkt versuchen, Features mit einer anderen SRID als 0 zuzuweisen, schlägt dieser Vorgang fehl, weil die SRIDs nicht identisch sind. Nachdem einer Tabelle eine SRID zugewiesen wurde, kann sie nicht mehr geändert werden. Sie müssen den Layer löschen und mit der richtigen SRID neu erstellen.
Weitere Informationen zur Verwendung des Befehls "sdelayer" finden Sie in der "ArcSDE Administration Command Reference", die zusammen mit der ArcSDE-Komponente von ArcGIS Server Enterprise bereitgestellt wird.
-
Erstellen Sie in SQL eine Tabelle (comm_bldgs) aus der vorhandenen Feature-Class "buildings", die Sie unter Arbeitsablauf: Verwenden von SQL mit vorhandenen Feature-Classes erstellt haben. Dadurch wird die Tabelle "comm_bldgs" mit derselben Definition (d. h. mit denselben Spalten und Datentypen) wie die Feature-Class "buildings" erstellt.
CREATE TABLE comm_bldgs AS SELECT * FROM buildings WHERE subtype = 'COM';
-
Wenn Sie die Feature-Class "comm_bldgs" in ArcSDE registrieren, verwenden Sie die gleiche SRID wie für die Feature-Class "buildings". Verwenden Sie "sdelayer –o describe_long", um die SRID zu ermitteln.
Tipp:
Sie können auch die Tabelle ST_GEOMETRY_COLUMNS in Oracle, die Tabelle "geometry_columns" in Informix und DB2 und die Tabelle "sde_geometry_columns" in PostgreSQL abfragen, um die SRID abzurufen.
sdelayer –o describe_long –l buildings,shape –u <user> –p <pw> –s <server> [–D <database>] –i <service_or_direct_connect_string> Layer Administration Utility Layer Description : <None> Table Owner : me Table Name : buildings Spatial Column : shape Layer Id : 15 SRID : 3
-
Registrieren Sie die Feature-Class mit dem Befehl "sdelayer" in ArcSDE. Geben Sie die SRID aus dem letzten Schritt mit der Option "–R" an. Sie können die Ausdehnung des Layers auch mit der Option "-E" angeben.
sdelayer –o register –l comm_bldgs,shape –e a -t ST_GEOMETRY –C OBJECTID,SDE –R 3 -E -690.389,-512.144,610.389,600.144 –u <user> –p <pw> –s <server> [–D <database>] –i <service_or_direct_connect_string>
Hinweis:Wenn der Parameter GEOMETRY_STORAGE unter dem Schlüsselwort DEFAULTS in der DBTUNE-Tabelle nicht auf ST_GEOMETRY festgelegt ist, müssen Sie auch ein Schlüsselwort mit der Option "-k" angeben.
Ihre Tabelle wurde in ArcSDE registriert. Das heißt, sie ist nun ein Layer. Den Systemtabellen "LAYERS", "GEOMETRY_COLUMNS", "COLUMN_REGISTRY" und "TABLE_REGISTRY" in Oracle, DB2 oder Informix bzw. "sde_layers", "sde_geometry_columns", "sde_column_registry" und "sde_table_registry" in PostgreSQL wird ein Datensatz hinzugefügt. Nun können Sie nicht versionierte Änderungen für die Feature-Class in ArcGIS Desktop anzeigen, auswählen und durchführen.
Um die Geodatabase-Funktionen in der Feature-Class verwenden zu können, registrieren Sie diese in der Geodatabase.