Suite

Convertir 1 m en degrés décimaux (WGS84) en fonction de l'emplacement du polygone


J'ai une table avec de petits polygones qui sont dispersés autour d'une zone "continentale" (Brésil). Comment convertir 1 m en degrés décimaux d'un système de référence wgs84 (longitude / latitude) en fonction de la position de chaque polygone ?

Contexte plus large : j'essaie d'utiliser ST_SimplifyVW (géométrie, tolérance) pour supprimer les pointes des polygones (comme décrit ici). Le paramètre de tolérance de ST_SimplifyVW est donné en termes d'unité SRID, qui sont des degrés décimaux. Je préférerais que le paramètre de tolérance soit fourni en mètres carrés car : a) c'est un peu plus intuitif ; b) J'aimerais que la tolérance utilisée soit la même quelle que soit la latitude des polygones.

Donc idéalement j'aurais quelque chose comme :

ST_SimplifyVW(geom, f_m_to_degrees(1,geom) )

où la fonction fictive "f_m_to_degrees" convertirait la distance fournie en degrés vers la projection la plus précise autour de l'emplacement de geom.


Probablement,ST_SimplifierVW()fonctionne sur des coordonnées planes. Pour convertir distance_degrees en distance_meters est simple :

distance_meters = earth_radius_meters * to_radians( distance_degrees )

Cependant, le traitement des coordonnées en distance_degrees introduit des distorsions :

  • zéro distorsion dans la direction N-S
  • distorsion proportionnelle au cosinus (latitude) dans la direction E-W

Une alternative, comme suggéré dans les commentaires, consiste à projeter vos coordonnées dans un système de coordonnées local approprié (ayant relativement peu de distorsion) puis à travailler directement en mètres.