- Catégories :
TRY_TO_GEOMETRY¶
Analyse une entrée et renvoie une valeur de type GEOMETRY.
Cette fonction est identique à TO_GEOMETRY sauf qu’elle renvoie NULL lorsque TO_GEOMETRY émettrait une erreur.
- Voir aussi :
Syntaxe¶
Utilisez l’une des méthodes suivantes :
TRY_TO_GEOMETRY( <varchar_expression> [ , <srid> ] [ , <allow_invalid> ] )
TRY_TO_GEOMETRY( <binary_expression> [ , <srid> ] [ , <allow_invalid> ] )
TRY_TO_GEOMETRY( <variant_expression> [ , <srid> ] [ , <allow_invalid> ] )
Arguments¶
Obligatoire :
varchar_expression
L’argument doit être une expression de chaîne qui représente un objet géométrique valide dans l’un des formats suivants :
WKT (texte bien connu).
WKB (binaire bien connu) au format hexadécimal (sans un
0x
de début).EWKT (texte bien connu étendu).
EWKB (binaire bien connu étendu) au format hexadécimal (sans un
0x
de début).GeoJSON.
binary_expression
L’argument doit être une expression binaire au format WKB ou EWKB.
variant_expression
L’argument doit être un OBJECT au format GeoJSON.
Facultatif :
srid
La valeur entière du SRID à utiliser.
allow_invalid
Si TRUE, spécifie que la fonction renvoie un objet GEOGRAPHY ou GEOMETRY, même lorsque la forme d’entrée n’est pas valide et ne peut pas être réparée. Pour plus d’informations, voir Spécification du mode de traitement des formes géospatiales non valides.
Renvoie¶
La fonction renvoie une valeur de type GEOMETRY ou NULL quand TO_GEOMETRY renvoie une erreur.
Notes sur l’utilisation¶
Renvoie NULL si l’entrée ne peut pas être analysée comme le format pris en charge approprié (WKT, WKB, EWKT, EWKB, GeoJSON).
Pour les entrées GeoJSON, WKT et WKB, si l’argument
srid
n’est pas spécifié, l’objet GEOMETRY résultant a pour SRID 0.
Exemples¶
Cela montre une utilisation simple de la fonction TRY_TO_GEOMETRY avec des données VARCHAR :
SELECT TRY_TO_GEOMETRY('INVALID INPUT');
+----------------------------------+
| TRY_TO_GEOMETRY('INVALID INPUT') |
|----------------------------------|
| NULL |
+----------------------------------+
Créer une table temporaire et insérer des lignes avec les valeurs GEOMETRY :
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;
Cette table possède des colonnes avec des types de données que la fonction TO_GEOMETRY accepte comme entrées dans les formats suivants :
VARCHAR (WKT/WKB et hex/EWKT/EWKB/GeoJSON)
BINARY (WKB/EWKB)
VARIANT (objet GeoJSON)
GEOGRAPHY
Les valeurs srid
et allow_invalid
facultatives peuvent suivre l’un de ces formats. La fonction ST_ASWKB , ST_ASBINARY génère des valeurs WKB BINARY valides.
L’exemple suivant tente de convertir les valeurs VARCHAR de la colonne invalid_wkt_col
en valeurs GEOMETRY, mais les formes ne sont pas valides :
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 |
+----+-----------+