Categorias:

Funções geoespaciais

ST_LENGTH

Retorna o comprimento geodésico do(s) LineString(s) em um objeto GEOGRAPHY ou o comprimento euclidiano do(s) LineString(s) em um objeto GEOMETRY.

Sintaxe

ST_LENGTH( <geography_or_geometry_expression> )
Copy

Argumentos

geography_or_geometry_expression

O argumento deve ser do tipo GEOGRAPHY ou GEOMETRY.

Retornos

Retorna um valor REAL, que representa o comprimento:

  • Para valores de entrada GEOGRAPHY, o comprimento é em metros.

  • Para valores de entrada GEOMETRY, o comprimento é computado com as mesmas unidades usadas para definir as coordenadas de entrada.

Notas de uso

  • Se geography_or_geometry_expression não for um LineString, MultiLineString ou GeometryCollection que contenha linestrings, ST_LENGTH retorna 0.

  • Se geography_or_geometry_expression for um GeometryCollection, ST_LENGTH devolverá a soma dos comprimentos de linestrings da coleção.

  • Se você quiser o comprimento do perímetro de um polígono, use a função ST_PERIMETER em seu lugar.

Exemplos

Exemplos GEOGRAPHY

Isto mostra o comprimento em metros de um grau de arco no equador:

SELECT ST_LENGTH(TO_GEOGRAPHY('LINESTRING(0.0 0.0, 1.0 0.0)'));
+---------------------------------------------------------+
| ST_LENGTH(TO_GEOGRAPHY('LINESTRING(0.0 0.0, 1.0 0.0)')) |
|---------------------------------------------------------|
|                                        111195.101177484 |
+---------------------------------------------------------+
Copy

Exemplos GEOMETRY

Os exemplos a seguir demonstram como utilizar a função ST_LENGTH.

SELECT ST_LENGTH(g), ST_ASWKT(g)
FROM (SELECT TO_GEOMETRY(column1) AS g
  FROM VALUES ('POINT(1 1)'),
              ('LINESTRING(0 0, 1 1)'),
              ('POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))'));
Copy
+--------------+--------------------------------+
| ST_LENGTH(G) | ST_ASWKT(G)                    |
|--------------+--------------------------------|
|  0           | POINT(1 1)                     |
|  1.414213562 | LINESTRING(0 0,1 1)            |
|  0           | POLYGON((0 0,0 1,1 1,1 0,0 0)) |
+--------------+--------------------------------+
Copy