- Kategorien:
TRY_TO_GEOMETRY¶
Analysiert eine Eingabe und gibt einen Wert vom Typ GEOMETRY zurück.
Diese Funktion ist identisch mit TO_GEOMETRY, außer dass sie NULL zurückgibt, wenn TO_GEOMETRY einen Fehler zurückgeben würde.
- Siehe auch:
Syntax¶
Verwenden Sie eine der folgenden Optionen:
TRY_TO_GEOMETRY( <varchar_expression> [ , <srid> ] [ , <allow_invalid> ] )
TRY_TO_GEOMETRY( <binary_expression> [ , <srid> ] [ , <allow_invalid> ] )
TRY_TO_GEOMETRY( <variant_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.
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¶
Die Funktion gibt einen Wert vom Typ GEOMETRY oder NULL zurück, wenn TO_GEOMETRY einen Fehler zurückgeben würde.
Nutzungshinweise¶
Gibt NULL zurück, wenn der Eingabewert nicht als unterstütztes Format (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.
Beispiele¶
Das folgende Beispiel zeigt eine einfache Verwendung der Funktion TRY_TO_GEOMETRY mit VARCHAR-Daten:
SELECT TRY_TO_GEOMETRY('INVALID INPUT');
+----------------------------------+
| TRY_TO_GEOMETRY('INVALID INPUT') |
|----------------------------------|
| NULL |
+----------------------------------+
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 wird versucht, VARCHAR -Werte in der invalid_wkt_col
-Spalte in GEOMETRY-Werte zu konvertieren, aber die Formen sind nicht gültig:
ALTER SESSION SET GEOMETRY_OUTPUT_FORMAT='EWKT';
SELECT id, TRY_TO_GEOMETRY(invalid_wkt_col) AS g_or_null
FROM demo_to_geometry;
+----+-----------+
| ID | G_OR_NULL |
|----+-----------|
| 1 | NULL |
| 2 | NULL |
+----+-----------+