J'effectue un calcul simple sur un polygone connu pour avoir une superficie d'environ 6226 km ^ 2. Il est stocké dans une colonne Géographie (WGS84 SRID).
La requête est:
select st_astext(col), st_area(col) area from table
et retourne:
"POLYGON((-180 58.282525588539,-178.916399160189 57.4759784390599,-178.191728834624 58.5761461944577,-180 58.282525588539))" | 5807028547.33813
La zone retournée (5807028547.33813) semble être mm ^ 2 et non km ^ 2? La documentation http://postgis.net/docs/ST_Area.html indique "par défaut, la zone est déterminée sur un sphéroïde avec des unités en mètres carrés"
S'agit-il d'une erreur de documentation ou est-ce que ce qui précède est correct et je comprends fondamentalement mal la fonctionnalité?
ST_Area (géométrie) calcule la zone du polygone au format WGS1984, SANS projeter sur une sphère / ellipse de surface égale (si vous utilisez la géométrie de type sql au lieu de la géographie). Le résultat est mesuré dans l'unité dans le SRID de la géométrie.
ST_Area (géographie) calcule la zone du polygone au format WGS1984, AVEC projection sur une sphère / ellipse de surface égale (si vous utilisez la géographie de type sql au lieu de la géométrie). Le résultat est mesuré en mètres carrés. Pour passer du m 2 au km 2 , il faut diviser le m 2 par 1000 2 (1000 mètres par kilomètre - il est carré car c'est une zone, donc 1000 * 1000 aka 1000 2 ).
ST_Area (géométrie, vrai / faux) calcule l'aire (en m 2 ) avec les coordonnées projetées dans le système de coordonnées CylindricalEqualAreaworld (préservation de l'aire - est logique si vous souhaitez calculer l'aire).
La différence entre vrai / faux est la précision.
ST_Area (geog, false) utilise une sphère plus rapide mais moins précise.
Dis, quand j'utilise ce polygone:
J'obtiens les résultats suivants:
Je pense que la partie importante à tirer des documents est la suivante:
Vous devez donc faire attention à choisir la géographie et non la géométrie.
Si vous utilisez la géométrie, vous DEVEZ utiliser les surcharges vraies / fausses de ST_Area.
En C #, j'obtiens plus ou moins la même chose que true avec KnownCoordinateSystems.Projected.World.CylindricalEqualAreaworld, et false semble être un monde à rayon moyen de la terre, quelque chose de proche de WorldSpheroid.CylindricalEqualAreasphere ou WorldSpheroid.EckertIVsphere, mais c'est hors de 2m 2 , il semble donc faire sa propre chose.
par exemple, vous obtenez un ajustement serré à faux avec le rayon moyen:
WebMercator est le système de coordonnées utilisé par Google-Maps.
Le nom officiel de ce système de coordonnées est EPSG: 3857.
Ce que fait exactement PostGIS, est documenté ici:
https://postgis.net/docs/ST_Area.html
Et les détails dans le code source peuvent être trouvés ici:
http://postgis.net/docs/doxygen/2.2/dc/d52/geography__measurement_8c_a1a7c48d59bcf4ed56522ab26c142f61d.html
et ici:
http://postgis.net/docs/doxygen/2.2/d1/dc0/lwspheroid_8c_a29d141c632f6b46587dec3a1dbe3d176.html#a29d141c632f6b46587dec3a1dbe3d176
Albers-Projection:
Projection cylindrique à surface égale:
la source