Estou realizando um cálculo simples em um polígono com aproximadamente 6226 km ^ 2 de área. Ele é armazenado em uma coluna Geografia (WGS84 SRID).
A consulta é:
select st_astext(col), st_area(col) area from table
e retorna:
"POLYGON((-180 58.282525588539,-178.916399160189 57.4759784390599,-178.191728834624 58.5761461944577,-180 58.282525588539))" | 5807028547.33813
A área retornada (5807028547.33813) parece ser mm ^ 2 e não km ^ 2? A documentação http://postgis.net/docs/ST_Area.html declara "por padrão a área é determinada em um esferóide com unidades em metros quadrados"
Isso é um erro de documentação ou o que foi descrito acima está correto e estou basicamente entendendo mal a funcionalidade?
ST_Area (geometry) calcula a área do polígono como WGS1984, SEM projetar para área / elipse de área igual (se você usar a geometria do tipo sql em vez de geography). O resultado é medido na unidade no SRID da geometria.
ST_Area (geography) calcula a área do polígono como WGS1984, COM projetando-se para área / elipse de área igual (se você usar a geografia do tipo sql em vez de geometria). O resultado é medido em metros quadrados. Para ir de m 2 a km 2 , é necessário dividir m 2 por 1000 2 (1000 metros em um quilômetro - o quadrado é porque é uma área, então 1000 * 1000 aka 1000 2 ).
ST_Area (geometria, verdadeiro / falso) calcula a área (em m 2 ) com coordenadas projetadas no sistema de coordenadas CylindricalEqualAreaworld (preservar área - faz sentido se você deseja calcular a área).
A diferença entre verdadeiro / falso é a precisão.
ST_Area (geog, false) usa uma esfera mais rápida, mas menos precisa.
Digamos, quando eu uso esse polígono:
Eu recebo os seguintes resultados:
Eu acho que a parte importante a ser tirada dos documentos é a seguinte:
Portanto, você precisa ter cuidado ao escolher a geografia , e NÃO a geometria.
Se você usa geometria, PRECISA usar sobrecargas verdadeiras / falsas de ST_Area.
Em C #, fico mais ou menos o mesmo que verdadeiro com KnownCoordinateSystems.Projected.World.CylindricalEqualAreaworld, e false parece ser um mundo com raio médio da terra, algo próximo ao WorldSpheroid.CylindricalEqualAreasphere ou WorldSpheroid.EckertIVsphere, mas é 2m 2 , então parece fazer o que quiser.
por exemplo, você obtém um ajuste perfeito para false com o raio médio:
O WebMercator é o sistema de coordenadas usado pelo Google-Maps.
O nome oficial para este sistema de coordenadas é EPSG: 3857.
O que exatamente o PostGIS faz, está documentado aqui:
https://postgis.net/docs/ST_Area.html
E detalhes no código-fonte podem ser encontrados aqui:
http://postgis.net/docs/doxygen/2.2/dc/d52/geography__measurement_8c_a1a7c48d59bcf4ed56522ab26c142f61d.html
e aqui:
http://postgis.net/docs/doxygen/2.2/d1/dc0/lwspheroid_8c_a29d141c632f6b46587dec3a1dbe3d176.html#a29d141c632f6b46587dec3a1dbe3d176
Albers-Projeção:
Projeção cilíndrica de área igual:
fonte