Suite

ST_Area d'un tampon diffère par coordonnée

ST_Area d'un tampon diffère par coordonnée


Pourquoi ces résultats sont-ils différents ? La seule différence est la coordonnée. On dirait que la zone devrait être la même.

select st_area(st_buffer(st_setsrid(st_point(-70, 40), 4326)::geography, 10)) AS ex1, st_area(st_buffer(st_setsrid(st_point(-71, 40), 4326"::geography, 10)) AS ex2; ex1 | ex2 ------------------+----------------- 312.338323043769 | 312.17021877505 (1 rangée)

À partir de http://www.postgis.org/docs/ST_Buffer.html :

Géographie : pour la géographie, il s'agit vraiment d'une mince enveloppe autour de la mise en œuvre de la géométrie. Il détermine d'abord le meilleur SRID qui correspond à la boîte englobante de l'objet géographique (en favorisant UTM, Lambert Azimuthal Equal Area (LAEA) pôle nord/sud, et se rabattant sur Mercator dans le pire des cas), puis tamponne dans cette référence spatiale planaire et se retransforme en géographie WGS84.

On peut donc s'attendre à une petite différence en raison d'une projection différente.


Plus spécifique à la réponse de Redoute est que les deux points sont projetés vers EPSG:32619 (WGS 84 / UTM zone 19N), déterminé par le service public_ST_BestSRID(geog), qui ont des coordonnées transformées :

  • ex1: SRID=-32619;POINT(414639.538157217 4428236.06463343)
  • ex2: SRID=-32619;POINT(329274.505728464 4429672.97311587)

Ces points sont tamponnés de 10,0 m (dans l'espace cartésien) et projetés vers les coordonnées géographiques, où une zone géodésique est finalement calculée. Les différences sont dues aux distorsions des zones UTM sur un ellipsoïde de révolution (alias sphéroïde). Les calculs sont généralement meilleurs lorsqu'ils sont proches du milieu des zones UTM, et pires lorsqu'ils sont proches de la limite de deux zones (par exemple, Calgary).

Un très bon calcul pour le point tampon est de 312,3 m².

Et l'aire d'un cercle parfait de rayon 10 m dans l'espace cartésien est π10² = 314.159265358979323846264338327950288419716939937510… m².

L'aire d'un cercle parfait sera toujours plus grande que l'aire de ST_Buffer, puisque ST_Buffer crée un polygone avec les bords incurvés coupés.