ST_Transform
Definition
ST_Transform konvertiert zweidimensionale ST_Geometry-Daten in den durch die Raumbezugs-ID (SRID) gegebenen Raumbezug.
In PostgreSQL müssen die Raumbezüge von Quelle und Ziel dasselbe geographische Koordinatensystem besitzen, wenn die Funktion ST_Transform verwendet wird, um die Einträge einer ST_Geometry-Spalte in Raumbezüge zu konvertieren.
In Oracle können auch Raumbezüge mit verschiedenen geographischen Koordinatensystemen konvertiert werden. Wenn die geographischen Koordinatensysteme unterschiedlich sind, wird eine geographische Transformation ausgeführt. Eine geographische Transformation ist eine Methode zum Konvertieren von Daten zwischen zwei geographischen Koordinatensystemen. Eine geographische Transformation ist in einer bestimmten Richtung definiert, beispielsweise von NAD 1927 nach NAD 1983. Unabhängig davon, welches Koordinatensystem für Quelle und Ziel verwendet wird, wendet die Funktion ST_Transform die Transformation jedoch richtig an.
Geographische Transformationsmethoden lassen sich in zwei Typen einteilen: gleichungsbasierte und dateibasierte Transformationen. Gleichungsbasierte Methoden sind in sich geschlossen und erfordern keine externen Informationen. Bei dateibasierten Methoden werden auf dem Datenträger vorhandene Dateien zum Berechnen von Versatzwerten verwendet. Diese Methoden sind in der Regel genauer als gleichungsbasierte Methoden. Dateibasierte Methoden werden häufig in Australien, Kanada, Deutschland, Neuseeland, Spanien und den USA verwendet. Die Dateien (mit Ausnahme der kanadischen Dateien) können aus einer ArcGIS for Desktop-Installation oder direkt von den verschiedenen nationalen Kartografiebehörden bezogen werden.
Damit Geodatabases in Oracle dateibasierte Transformationen unterstützen, müssen die Dateien auf dem Oracle-Server in der gleichen relativen Ordnerstruktur wie im ArcGIS for Desktop-Installationsverzeichnis abgelegt werden. Im ArcGIS for Desktop-Installationsverzeichnisses befinden sich Dateien in einem Ordner namens "pedata". Nachdem Sie den Ordner "pedata" auf den Oracle-Server verschoben haben, legen Sie die Betriebssystem-Umgebungsvariable PEDATAHOME fest. Der Wert dieser Variablen definiert den Speicherort des Ordners "pedata". Wenn der Ordner "pedata" beispielsweise auf einem Computer mit Microsoft Windows in den Ordner "C:\pedata" kopiert wird, legen Sie die Umgebungsvariable PEDATAHOME auf C:\pedata fest.
Weitere Informationen zum Festlegen von Umgebungsvariablen finden Sie in der Dokumentation zu Ihrem Betriebssystem.
Der Ordner "pedata" enthält weitere Ordner für die drei unterstützten dateibasierten Methoden: harn, nadcon und ntv2. Der Ordner "ntv2" enthält Unterverzeichnisse für die einzelnen Länder. Bei dem oben beschriebenen Ordner "pedata" würde sich die australische NTv2-Datei beispielsweise im Unterverzeichnis C:\pedata\ntv2\australia befinden.
Nachdem Sie PEDATAHOME definiert haben, müssen Sie eine neue SQL-Sitzung starten, bevor Sie die Funktion ST_Transform verwenden. Der Server muss allerdings nicht neu gestartet werden.
Syntax
PostgreSQL und Oracle: Für Quell- und Zielraumbezüge wird dasselbe geographische Koordinatensystem verwendet.
sde.st_transform (g1 sde.st_geometry, srid integer)
Nur Oracle: Für Quell- und Zielraumbezüge wird nicht das gleiche geographische Koordinatensystem verwendet.
sde.st_transform (g1 sde.st_geometry, srid integer, geogtran_id integer)
Rückgabetyp
ST_Geometry
Beispiele
Datentransformation, wenn für Quell- und Zielraumbezüge dasselbe geographische Koordinatensystem verwendet wird.
Mit der folgenden CREATE TABLE-Anweisung wird die Tabelle "transform_test" erstellt, die über die beiden Linestring-Spalten "ln1" und "ln2" verfügt.
CREATE TABLE transform_test (ln1 sde.st_geometry, ln2 sde.st_geometry);
Mit der INSERT-Anweisung wird ein ST_LineString-Wert mit der SRID 4326 in die Spalte "ln1" eingefügt.
INSERT INTO transform_test (ln1) VALUES (
sde.st_geometry ('linestring (10.01 40.03, 92.32 29.39)', 4326)
);
In der folgenden UPDATE-Anweisung verarbeitet die Funktion ST_Transform den Linestring in Spalte "ln1" und konvertiert ihn aus dem SRID 4326 zugeordneten Koordinatenbezug in den Koordinatenbezug, der SRID 3857 zugeordnet ist, und fügt ihn in Spalte "ln2" ein.
UPDATE transform_test
SET ln2 = sde.st_transform (ln1, 3857);
SRIDs 4326 und 3857 sind in der Ansicht ST_SPATIAL_REFERENCES vorhanden und verfügen über das gleiche geographische Datum.
Datentransformation, wenn für Quell- und Zielraumbezüge nicht das gleiche geographische Koordinatensystem verwendet wird (nur Oracle)
Mit der folgenden CREATE TABLE-Anweisung wird die Tabelle "n27" erstellt, die über die Spalte "ID" und eine ST_Geometry-Spalte verfügt:
CREATE TABLE n27 (id integer, geometry sde.st_geometry);
Mit der INSERT-Anweisung wird ein ID-Wert und ein ST_Point-Objekt mit der SRID 4267 eingefügt:
INSERT INTO N27 (id, geometry) VALUES (
1,
sde.st_geometry ('point (-123.0 49.0)', 4267));
);
Für SRID 4267 wird das geographische Koordinatensystems NAD 1927 verwendet.
Erstellen Sie die Tabelle "n83" als Zieltabelle der Transformation, und führen Sie dann die Transformation aus:
CREATE TABLE n83 (id integer, geometry sde.st_geometry);
INSERT INTO N83 (id, geometry) VALUES (
1,
sde.st_transform (N27.geometry, 4269, 1241);
Für SRID 4269 wird das geographische Koordinatensystems NAD 1983 verwendet, und 1241 ist eine bekannte ID für die Transformation NAD_1927_To_NAD_1983_NADCON. Diese Transformation ist dateibasiert und kann für die 48 kontinentalen US-Bundesstaaten entwickelt verwendet werden. Wenn PEDATAHOME richtig definiert worden ist, hat die Ausführung einer SELECT-Anweisung mit der Tabelle "n83" folgendes Ergebnis:
SELECT id, sde.st_astext (geometry) description
FROM N83;
ID DESCRIPTION
1 | POINT((-123.00130569 48.999828199))
Eine Liste der geographischen Transformationen finden Sie im folgenden technischen Artikel und den zugehörigen Listen: http://support.esri.com/en/knowledgebase/techarticles/detail/21327.