- Categorias:
ST_MAKEPOLYGONORIENTED¶
Cria um objeto GEOGRAPHY que representa um polígono sem furos. A função utiliza o LineString especificado como o loop externo.
Esta função não tenta corrigir a orientação do loop, permitindo assim a criação de polígonos que se estendem por mais da metade do globo. Em contraste, ST_MAKEPOLYGON inverte a orientação dessas grandes formas.
- Consulte também:
Sintaxe¶
ST_MAKEPOLYGONORIENTED( <geography_expression> )
Argumentos¶
geography_expression
Um objeto GEOGRAPHY que representa um LineString em que o último ponto é o mesmo que o primeiro (ou seja, um loop).
Retornos¶
A função retorna um valor do tipo GEOGRAPHY.
Notas de uso¶
As linhas do polígono devem formar um loop. Em outras palavras, o último ponto da sequência de pontos que definem o LineString deve ser o mesmo ponto que o primeiro da sequência.
Ao longo do loop, o interior do polígono deve estar à esquerda, e o exterior do polígono deve estar à direita.
Exemplos¶
Os exemplos a seguir demonstram como utilizar a função ST_MAKEPOLYGONORIENTED. A sequência de pontos abaixo define uma área retangular geodésica 1 grau de largura e 2 graus de altura. O canto inferior esquerdo do polígono começa no equador (latitude) e Greenwich (longitude). O último ponto na sequência é o mesmo que o primeiro, que completa o loop.
O exemplo passa o objeto GEOGRAPHY do polígono para a função ST_AREA para retornar a área do polígono.
SELECT ST_AREA(
ST_MAKEPOLYGONORIENTED(
TO_GEOGRAPHY('LINESTRING(0.0 0.0, 1.0 0.0, 1.0 2.0, 0.0 2.0, 0.0 0.0)')
)
) AS area_of_polygon;
+------------------+
| AREA_OF_POLYGON |
|------------------|
| 24724306355.5504 |
+------------------+
O exemplo seguinte tem a mesma forma, mas com orientação oposta. Como indicado pela diferença na área do polígono, o polígono representa o globo inteiro, exceto por aquela forma anterior.
SELECT ST_AREA(
ST_MAKEPOLYGONORIENTED(
TO_GEOGRAPHY('LINESTRING(0.0 0.0, 0.0 2.0, 1.0 2.0, 1.0 0.0, 0.0 0.0)')
)
) AS area_of_polygon;
+-----------------+
| AREA_OF_POLYGON |
|-----------------|
| 510041348811633 |
+-----------------+