- Categorias:
TRY_TO_GEOMETRY¶
Analisa uma entrada e retorna um valor do tipo GEOMETRY.
Esta função é idêntica a TO_GEOMETRY exceto que ela retorna NULL, enquanto TO_GEOMETRY retornaria um erro.
- Consulte também:
Sintaxe¶
Use uma das seguintes opções:
TRY_TO_GEOMETRY( <varchar_expression> [ , <srid> ] [ , <allow_invalid> ] )
TRY_TO_GEOMETRY( <binary_expression> [ , <srid> ] [ , <allow_invalid> ] )
TRY_TO_GEOMETRY( <variant_expression> [ , <srid> ] [ , <allow_invalid> ] )
Argumentos¶
Obrigatório:
varchar_expression
O argumento deve ser uma expressão de cadeia de caracteres que represente um objeto geométrico válido em um dos seguintes formatos:
WKT (texto bem conhecido).
WKB (binário bem conhecido) em formato hexadecimal (sem um
0x
na frente).EWKT (texto bem conhecido estendido).
EWKB (binário bem conhecido estendido) em formato hexadecimal (sem um
0x
na frente).GeoJSON.
binary_expression
O argumento deve ser uma expressão binária no formato WKB ou EWKB.
variant_expression
O argumento deve ser um formato OBJECT no formato GeoJSON.
Opcional:
srid
O valor inteiro do SRID a ser usado.
allow_invalid
Se for TRUE, especifica que a função retorna um objeto GEOGRAPHY ou GEOMETRY, mesmo quando a forma de entrada não é válida e não pode ser reparada. Para obter mais informações, consulte Especificação de como as formas geoespaciais inválidas são tratadas.
Retornos¶
A função retorna um valor do tipo GEOMETRY ou NULL quando TO_GEOMETRY retornaria um erro.
Notas de uso¶
Retorna NULL se a entrada não puder ser analisada como o formato compatível apropriado (WKT, WKB, EWKT, EWKB, GeoJSON).
Para as entradas GeoJSON, WKT e WKB, se o argumento
srid
não for especificado, o objeto GEOMETRY resultante terá SRID definido como 0.
Exemplos¶
Isso mostra uma simples utilização da função TRY_TO_GEOMETRY com dados VARCHAR:
SELECT TRY_TO_GEOMETRY('INVALID INPUT');
+----------------------------------+
| TRY_TO_GEOMETRY('INVALID INPUT') |
|----------------------------------|
| NULL |
+----------------------------------+
Crie uma tabela temporária e insira linhas com valores de 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;
Esta tabela tem colunas com tipos de dados que a função TO_GEOMETRY aceita como entradas nos seguintes formatos:
VARCHAR (WKT/WKB e hexadecimal/EWKT/EWKB/GeoJSON)
BINARY (WKB/EWKB)
VARIANT (objeto GeoJSON)
GEOGRAPHY
Os valores opcionais srid
e allow_invalid
podem seguir qualquer um desses formatos. A função ST_ASWKB , ST_ASBINARY gera valores WKB BINARY válidos.
O exemplo a seguir tenta converter valores VARCHAR na coluna invalid_wkt_col
em valores GEOMETRY, mas as formas não são válidas:
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 |
+----+-----------+