- Kategorien:
TO_GEOMETRY¶
Analysiert eine Eingabe und gibt einen Wert vom Typ GEOMETRY zurück.
- Siehe auch:
Syntax¶
Verwenden Sie eine der folgenden Optionen:
TO_GEOMETRY( <varchar_expression> [ , <srid> ] [ , <allow_invalid> ] )
TO_GEOMETRY( <binary_expression> [ , <srid> ] [ , <allow_invalid> ] )
TO_GEOMETRY( <variant_expression> [ , <srid> ] [ , <allow_invalid> ] )
TO_GEOMETRY( <geography_expression> [ , <srid> ] [ , <allow_invalid> ] )
Argumente¶
Erforderlich:
varchar_expression
Das Argument muss ein Zeichenfolgenausdruck sein, der ein gültiges geometrisches Objekt in einem der folgenden Formate repräsentiert:
WKT (Well-Known Text)
WKB (Well-Known Binary) im Hexadezimalformat (ohne führendes
0x
)EWKT (Extended Well-Known Text)
EWKB (Extended Well-Known Binary) im Hexadezimalformat (ohne führendes
0x
)GeoJSON
binary_expression
Das Argument muss ein Binärausdruck im WKB- oder EWKB-Format sein.
variant_expression
Das Argument muss ein OBJECT im GeoJSON-Format sein.
geography_expression
Das Argument muss ein Ausdruck vom Typ GEOGRAPHY sein.
Optional:
srid
Der Ganzahlwert der zu verwendenden SRID.
allow_invalid
Wenn TRUE, wird angegeben, dass die Funktion ein GEOGRAPHY- oder GEOMETRY-Objekt zurückgibt, selbst wenn die Form des Eingabeobjekts ungültig ist und nicht repariert werden kann. Weitere Informationen dazu finden Sie unter Festlegen der Verarbeitung von ungültigen Geodaten.
Rückgabewerte¶
Gibt einen Wert vom Typ GEOMETRY zurück.
Nutzungshinweise¶
Gibt eine Fehlermeldung aus, wenn die Eingabe nicht als eines der unterstützten Formate (WKT, WKB, EWKT, EWKB, GeoJSON) analysiert werden kann.
Wenn bei einer GeoJSON-, WKT- oder WKB-Eingabe das
srid
-Argument nicht angegeben ist, wird die SRID des resultierenden GEOMETRY-Objekts auf 0 gesetzt.Um ein GEOMETRY-Objekt aus der WKT- oder EWKT-Eingabe zu erstellen, können Sie auch ST_GEOMETRYFROMWKT verwenden.
Um ein GEOMETRY-Objekt aus der WKB- oder EWKB-Eingabe zu erstellen, können Sie auch ST_GEOMETRYFROMWKB verwenden.
Beispiele¶
Das folgende Beispiel zeigt, wie die Funktion TO_GEOMETRY verwendet wird, um ein in WKT dargestelltes Objekt in ein GEOMETRY-Objekt umzuwandeln. Im Beispiel wird das srid
-Argument nicht angegeben, und die SRID ist in der Eingabedarstellung des Objekts nicht angegeben, sodass die SRID auf 0
gesetzt wird.
ALTER SESSION SET GEOMETRY_OUTPUT_FORMAT='EWKT';
SELECT TO_GEOMETRY('POINT(1820.12 890.56)');
+--------------------------------------+
| TO_GEOMETRY('POINT(1820.12 890.56)') |
|--------------------------------------|
| SRID=0;POINT(1820.12 890.56) |
+--------------------------------------+
Das folgende Beispiel wandelt ein in EWKT dargestelltes Objekt in ein GEOMETRY-Objekt um. Die EKWT-Eingabe gibt die zu verwendende SRID an:
ALTER SESSION SET GEOMETRY_OUTPUT_FORMAT='EWKT';
SELECT TO_GEOMETRY('SRID=4326;POINT(1820.12 890.56)');
+------------------------------------------------+
| TO_GEOMETRY('SRID=4326;POINT(1820.12 890.56)') |
|------------------------------------------------|
| SRID=4326;POINT(1820.12 890.56) |
+------------------------------------------------+
Das folgende Beispiel zeigt, wie die SRID als srid
-Eingangsargument angegeben wird:
ALTER SESSION SET GEOMETRY_OUTPUT_FORMAT='EWKT';
SELECT TO_GEOMETRY('POINT(1820.12 890.56)', 4326);
+--------------------------------------------+
| TO_GEOMETRY('POINT(1820.12 890.56)', 4326) |
|--------------------------------------------|
| SRID=4326;POINT(1820.12 890.56) |
+--------------------------------------------+
Das folgende Beispiel gibt das GEOMETRY-Objekt eines Geodatenobjekts mit einer Z-Koordinate im EWKT-Format zurück:
ALTER SESSION SET GEOMETRY_OUTPUT_FORMAT='EWKT';
SELECT TO_GEOMETRY('SRID=32633;POINTZ(389866.35 5819003.03 30)');
+-----------------------------------------------------------+
| TO_GEOMETRY('SRID=32633;POINTZ(389866.35 5819003.03 30)') |
|-----------------------------------------------------------|
| SRID=32633;POINTZ(389866.35 5819003.03 30) |
+-----------------------------------------------------------+
Beispiele, die ein GEOGRAPHY-Objekt in ein GEOMETRY-Objekt umwandeln, finden Sie unter Konvertierung zwischen GEOGRAPHY und GEOMETRY.
Die nächsten Beispiele verwenden die TO_GEOMETRY-Funktion in Abfragen auf Daten in einer Tabelle.
Erstellen Sie eine temporäre Tabelle und fügen Sie Zeilen mit GEOMETRY-Werten ein:
CREATE OR REPLACE TEMP TABLE demo_to_geometry AS
SELECT
1 AS id,
'POINT(10 20)' AS wkt_col, -- VARCHAR (WKT)
'SRID=32633;POINT(500000.0 4649776.22)' AS ewkt_col, -- VARCHAR (EWKT)
ST_ASWKB(TO_GEOMETRY('LINESTRING(0 0, 1 1)')) AS wkb_bin_col, -- BINARY (WKB)
PARSE_JSON('{"type":"Point","coordinates":[10,20]}') AS geojson_col, -- VARIANT (GeoJSON)
TO_GEOGRAPHY('POINT(-122.35 37.55)') AS geog_col, -- GEOGRAPHY
'POLYGON((0 0,2 2,2 0,0 2,0 0))' AS invalid_wkt_col, -- invalid shape
0 AS srid0, -- SRID columns to show positional args
3857 AS srid_col,
TRUE AS allow_true, -- allow_invalid flags from columns
FALSE AS allow_false
UNION ALL
SELECT
2,
'LINESTRING(0 0, 10 10)',
'SRID=32633;POINT(389866.35 5819003.03)',
ST_ASWKB(TO_GEOMETRY('POINT(2 3)')),
PARSE_JSON('{"type":"LineString","coordinates":[[0,0],[1,1]]}'),
TO_GEOGRAPHY('LINESTRING(-124.2 42,-120.01 41.99)'),
'POLYGON((0 0,1 1,1 0,0 1,0 0))',
0,
3857,
TRUE,
FALSE;
Diese Tabelle hat Spalten mit Datentypen, die die TO_GEOMETRY-Funktion als Eingaben in den folgenden Formaten akzeptiert:
VARCHAR (WKT/WKB und hex/EWKT/EWKB/GeoJSON)
BINARY (WKB/EWKB)
VARIANT (GeoJSON-Objekt)
GEOGRAPHY
Optionale srid
und allow_invalid
-Werte können jedem dieser Formate folgen. Die ST_ASWKB , ST_ASBINARY-Funktion generiert gültige WKB BINARY-Werte.
Im folgenden Beispiel werden VARCHAR-Werte in der wkt_col
-Spalte anhand der Standard-SRID von 0
in GEOMETRY-Werte konvertiert:
ALTER SESSION SET GEOMETRY_OUTPUT_FORMAT='EWKT';
SELECT id, TO_GEOMETRY(wkt_col) AS g
FROM demo_to_geometry;
+----+------------------------------+
| ID | G |
|----+------------------------------|
| 1 | SRID=0;POINT(10 20) |
| 2 | SRID=0;LINESTRING(0 0,10 10) |
+----+------------------------------+
Im folgenden Beispiel werden VARCHAR-Werte in der wkt_col
-Spalte anhand des SRID-Werts in der srid_col
-Spalte in GEOMETRY-Werte konvertiert:
ALTER SESSION SET GEOMETRY_OUTPUT_FORMAT='EWKT';
SELECT id, TO_GEOMETRY(wkt_col, srid_col) AS g
FROM demo_to_geometry;
+----+----------------------------------+
| ID | G |
|----+----------------------------------|
| 1 | SRID=3857;POINT(10 20) |
| 2 | SRID=3857;LINESTRING(0 0,10 10) |
+----+----------------------------------+
Im folgenden Beispiel werden VARCHAR-Werte in der ewkt_col
-Spalte mit dem SRID-Wert, der in den ewkt_col
-Spaltenwert eingebettet ist, in GEOMETRY-Werte konvertiert:
ALTER SESSION SET GEOMETRY_OUTPUT_FORMAT='EWKT';
SELECT id, TO_GEOMETRY(ewkt_col) AS g
FROM demo_to_geometry;
+----+--------------------------------------------+
| ID | G |
|----+--------------------------------------------|
| 1 | SRID=32633;POINT(500000 4649776.22) |
| 2 | SRID=32633;POINT(389866.35 5819003.03) |
+----+--------------------------------------------+
Im folgenden Beispiel werden BINARY-Werte in der wkb_bin_col
-Spalte in GEOMETRY-Werte konvertiert:
ALTER SESSION SET BINARY_OUTPUT_FORMAT='HEX';
SELECT id, TO_GEOMETRY(wkb_bin_col) AS g
FROM demo_to_geometry;
+----+----------------------------+
| ID | G |
|----+----------------------------|
| 1 | SRID=0;LINESTRING(0 0,1 1) |
| 2 | SRID=0;POINT(2 3) |
+----+----------------------------+
Im folgenden Beispiel werden VARIANT-Werte in der geojson_col
-Spalte anhand des SRID-Werts in der srid_col
-Spalte in GEOMETRY-Werte konvertiert:
ALTER SESSION SET GEOMETRY_OUTPUT_FORMAT='EWKT';
SELECT id, TO_GEOMETRY(geojson_col, srid_col) AS g
FROM demo_to_geometry;
+----+--------------------------------+
| ID | G |
|----+--------------------------------|
| 1 | SRID=3857;POINT(10 20) |
| 2 | SRID=3857;LINESTRING(0 0,1 1) |
+----+--------------------------------+
Im folgenden Beispiel werden GEOGRAPHY-Werte in der geog_col
-Spalte anhand des SRID-Werts in der srid_col
-Spalte in GEOMETRY-Werte konvertiert:
ALTER SESSION SET GEOMETRY_OUTPUT_FORMAT='EWKT';
SELECT id, TO_GEOMETRY(geog_col, srid_col) AS g
FROM demo_to_geometry;
+----+-----------------------------------------------+
| ID | G |
|----+-----------------------------------------------|
| 1 | SRID=4326;POINT(-122.35 37.55) |
| 2 | SRID=4326;LINESTRING(-124.2 42,-120.01 41.99) |
+----+-----------------------------------------------+
Im folgenden Beispiel werden VARCHAR-Werte in der invalid_wkt_col
unter Verwendung des SRID-Werts in der srid0
-Spalte (0
) und des allow_invalid
-Werts in der allow_true
-Spalte in GEOMETRY-Werte konvertiert:
ALTER SESSION SET GEOMETRY_OUTPUT_FORMAT='EWKT';
SELECT id, TO_GEOMETRY(invalid_wkt_col, srid0, allow_true) AS g
FROM demo_to_geometry;
Die Ausgabe enthält Formen, die nicht gültig sind:
+----+---------------------------------------+
| ID | G |
|----+---------------------------------------|
| 1 | SRID=0;POLYGON((0 0,2 2,2 0,0 2,0 0)) |
| 2 | SRID=0;POLYGON((0 0,1 1,1 0,0 1,0 0)) |
+----+---------------------------------------+