Erstellen von Raumbezügen mit SQL

Komplexität: Anspruchsvoll Erforderliche Daten: Eigene Daten verwenden

Esri empfiehlt, beim Anlegen von Feature-Classes die ArcGIS Desktop-Werkzeuge zum Erstellen von Raumbezügen zu verwenden. ArcGIS enthält zahlreiche Werkzeuge für diesen Task und berechnet die X-, Y-, Z- und M-Einheiten sowie den Versatz, um eine hohe Genauigkeit der Daten zu gewährleisten. Einige Benutzer und Anwendungsentwickler benötigen jedoch u. U. weitere Möglichkeiten zum Erstellen von Raumbezügen. In diesem Abschnitt werden die Datenbankwerkzeuge beschrieben, die von Esri und IBM zum Erstellen von Raumbezügen bereitgestellt werden.

Alle in der Datenbank bekannten Raumbezugssysteme werden in Systemtabellen gespeichert, von denen einige editierbare Sichten besitzen. Bei ArcSDE-Geodatabases in Oracle mit dem Format "ST_Geometry" handelt es sich dabei um die Tabelle "ST_Spatial_References". In Informix lautet der Name dieser Tabelle "Spatial_References". In DB2 heißt die Tabelle "ST_Spatial_Reference_Systems". In PostgreSQL heißt die Tabelle "sde_spatial_references", es gibt jedoch auch eine Sicht dieser Tabelle mit dem Namen "st_spatial_references", in die Raumbezüge eingefügt sein können.

Die Parameter von Raumbezugssystemen werden von internen Funktionen verwendet, um die Gleitkommakoordinaten der Geometrie vor dem Speichern in positive 64-Bit-Ganzzahlwerte umzuwandeln und zu skalieren. Beim Abrufen wird das externe Gleitkommaformat der Koordinaten wiederhergestellt.

Die Gleitkommakoordinaten werden durch Subtrahieren der "false x"- und "false y"-Werte in Ganzzahlwerte konvertiert und damit auf den "falschen Ursprung" umgesetzt. Anschließend wird durch Multiplikation mit den XY-Einheiten skaliert, eine halbe Einheit addiert und der Rest abgeschnitten.

Mit den optionalen Z-Koordinaten und den Messwerten wird ähnlich verfahren. Hierbei erfolgt die Umwandlung jedoch mit dem "false z"- bzw. dem "false m"-Wert und die Skalierung mit den Z-Einheiten bzw. mit den M-Einheiten.

Eine Definition aller Spalten in der Raumbezugstabelle der einzelnen Datenbankmanagementsysteme finden Sie in den Themen zu den entsprechenden Systemtabellen:

Systemtabellen einer Geodatabase in DB2Systemtabellen einer Geodatabase in InformixSystemtabellen einer Geodatabase in OracleSystemtabellen einer Geodatabase in PostgreSQL

Während der Konstruktion wird das Raumbezugssystem einer Geometrie zugeordnet. Das Raumbezugssystem muss in der Raumbezugstabelle enthalten sein. Alle Geometrien einer Spalte müssen dasselbe Raumbezugssystem aufweisen.

Erstellen eines Raumbezugs in IBM DB2

In DB2 wird ein Raumbezug mit dem Befehl "db2se create_srs" (oder durch Aufrufen der gespeicherten Prozedur "db2se.ST_create_srs") erstellt. Im folgenden Beispiel wird ein Eintrag für einen Raumbezug mit dem Maßstabsfaktor 10 und einem spezifischen Koordinatensystem erstellt:

db2se create_srs mydb -srsName \"mysrs\" 
-srsID 100 -xScale 10 -coordsysName \"GCS_North_American_1983\"

Weitere Information zu diesem Befehl finden Sie im DB2 Spatial Extender and Geodetic Extender User's Guide and Reference im Abschnitt "Creating a spatial reference system".

Erstellen eines Raumbezugs in IBM Informix

In Informix kann mit einer INSERT-Anweisung wie im folgenden Beispiel ein Eintrag für einen Raumbezug erstellt werden:

INSERT INTO SDE.SPATIAL_REFERENCES (srid, description, 
auth_name, auth_srid, falsex, falsey, xyunits, falsez, 
zunits, falsem, munits, srtext, object_flags, 
xycluster_tol, zcluster_tol, mcluster_tol)
VALUES (
20, 
'GCS_North_American_1983', 
NULL, 
NULL, 
-400,
-400,
1000000000,
-100000,
100000,
-100000,
10000, 
'GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]]',
1,
0,
0,
0);

Weitere Information zum Erstellen von Raumbezügen in Informix finden Sie im IBM Informix Spatial DataBlade Module User's Guide im Abschnitt "Using the spatial references table".

Erstellen eines Raumbezugs in Oracle

Zur Erstellung eines Raumbezugs für Tabellen mit dem räumlichen Datentyp in Oracle verwenden Sie die INSERT-Anweisung wie im folgenden Beispiel. Ersetzen Sie die SRID durch einen Einzelwert. Im folgenden Beispiel ist die SRID die "1" in der dritten Codezeile.

INSERT INTO SDE.ST_SPATIAL_REFERENCES (SR_NAME, SRID, 
X_OFFSET, Y_OFFSET, XYUNITS, Z_OFFSET, Z_SCALE, M_OFFSET, 
M_SCALE, MIN_X, MAX_X, MIN_Y, MAX_Y, MIN_Z, MAX_Z, MIN_M, 
MAX_M, CS_ID, CS_NAME, CS_TYPE, ORGANIZATION, 
ORG_COORDSYS_ID, DEFINITION, DESCRIPTION)
VALUES (
'GCS_North_American_1983', 
1,
-400,
-400,
1000000000, 
-100000, 
100000, 
-100000, 
100000, 
9.999E35,
-9.999E35, 
9.999E35, 
-9.999E35, 
9.999E35, 
-9.999E35, 
9.999E35, 
-9.999E35, 
4269, 
'GCS_North_American_1983',
'PROJECTED', 
NULL,
NULL,
'GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]]',
'ArcSDE SpRef');

Erstellen eines Raumbezugs in PostgreSQL

Zur Erstellung eines Raumbezugssystems für den räumlichen Datentyp in PostgreSQL verwenden Sie eine INSERT-Anweisung ähnlich der im folgenden Beispiel. Ersetzen Sie die SRID durch einen Einzelwert. Im folgenden Beispiel ist die SRID die "1" in der dritten Codezeile.

INSERT INTO sde.st_spatial_references (sr_name, srid, 
x_offset, y_offset, xyunits, z_offset, z_scale, m_offset, 
m_scale, min_x, max_x, min_y, max_y, min_z, max_z, min_m, 
max_m, cs_id, cs_name, cs_type, organization, 
org_coordsys_id, definition, description)
VALUES (
'GCS_North_American_1983',
1, 
-400, 
-400, 
1000000000,
-100000, 
100000, 
-100000, 
100000, 
9.999E35,
-9.999E35, 
9.999E35, 
-9.999E35, 
9.999E35, 
-9.999E35, 
9.999E35, 
-9.999E35, 
4269, 
'GCS_North_American_1983',
'PROJECTED', 
NULL,
NULL,
'GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]]',
'ArcSDE SpRef');

Verwandte Themen


3/6/2012