- Catégories :
TO_GEOMETRY¶
Analyse une entrée et renvoie une valeur de type GEOMETRY.
- Voir aussi :
Syntaxe¶
Utilisez l’une des méthodes suivantes :
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> ] )
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.
geography_expression
L’argument doit être une expression de type GEOGRAPHY.
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.
Notes sur l’utilisation¶
Émet une erreur si l’entrée ne peut pas être analysée comme l’un des formats pris en charge (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.Pour construire un objet GEOMETRY à partir d’une entrée WKT ou EWKT, vous pouvez également utiliser ST_GEOMETRYFROMWKT.
Pour construire un objet GEOMETRY à partir d’une entrée WKB ou EWKB, vous pouvez également utiliser ST_GEOMETRYFROMWKB.
Exemples¶
L’exemple suivant montre comment utiliser la fonction TO_GEOMETRY pour convertir un objet représenté par WKT en un objet GEOMETRY. L’exemple ne spécifie pas l’argument srid
, et le SRID n’est pas spécifié dans la représentation d’entrée de l’objet, de sorte que le SRID est fixé à 0
.
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) |
+--------------------------------------+
L’exemple suivant convertit un objet représenté par EWKT en un objet GEOMETRY. L’entrée EKWT spécifie le SRID à utiliser :
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) |
+------------------------------------------------+
L’exemple suivant montre comment spécifier le SRID en tant qu’argument d’entrée srid
:
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) |
+--------------------------------------------+
L’exemple suivant renvoie l’objet GEOMETRY pour un objet géospatial avec une coordonnée Z décrit au format EWKT :
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) |
+-----------------------------------------------------------+
Pour des exemples de conversion d’un objet GEOGRAPHY en un objet GEOMETRY, voir Conversion entre GEOGRAPHY et GEOMETRY.
Les exemples suivants utilisent la fonction TO_GEOMETRY dans les requêtes sur les données d’une table.
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 convertit les valeurs VARCHAR de la colonne wkt_col
en valeurs GEOMETRY à l’aide de la valeur par défaut SRID de 0
:
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) |
+----+------------------------------+
L’exemple suivant convertit les valeurs VARCHAR de la colonne wkt_col
en valeurs GEOMETRY à l’aide de la valeur SRID de la colonne srid_col
:
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) |
+----+----------------------------------+
L’exemple suivant convertit les valeurs VARCHAR de la colonne ewkt_col
en valeurs GEOMETRY, avec la valeur SRID intégrée dans la valeur de colonne ewkt_col
:
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) |
+----+--------------------------------------------+
L’exemple suivant convertit les valeurs BINARY de la colonne wkb_bin_col
en valeurs GEOMETRY :
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) |
+----+----------------------------+
L’exemple suivant convertit les valeurs VARIANT de la colonne geojson_col
en valeurs GEOMETRY à l’aide de la valeur SRID de la colonne srid_col
:
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) |
+----+--------------------------------+
L’exemple suivant convertit les valeurs GEOGRAPHY de la colonne geog_col
en valeurs GEOMETRY à l’aide de la valeur SRID de la colonne srid_col
:
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) |
+----+-----------------------------------------------+
L’exemple suivant convertit les valeurs VARCHAR de la colonne invalid_wkt_col
en valeurs GEOMETRY à l’aide de la valeur SRID de la colonne srid0
(0
) et de la valeur allow_invalid
de la colonne allow_true
:
ALTER SESSION SET GEOMETRY_OUTPUT_FORMAT='EWKT';
SELECT id, TO_GEOMETRY(invalid_wkt_col, srid0, allow_true) AS g
FROM demo_to_geometry;
La sortie inclut des formes qui ne sont pas valides :
+----+---------------------------------------+
| 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)) |
+----+---------------------------------------+