Suite

Stockage de lat/long dans la base de données PostGIS


J'ai un tas de points dans un fichier texte qui sont représentés à l'aide de lat long (116.3158516 39.9748016). Je les importe dans ma base de données compatible SIG et crée des trajectoires à l'aide de st_makeline() en tant que géométries projetées dans EPSG:4326. J'utilise la géométrie ici car toutes les données GPS tombent dans une zone de 50 km^2 : corrigez-moi si c'est ma première erreur.

Maintenant, je fais des choses comme calculer la longueur de la trajectoire (st_length) et simplifier la géométrie à l'aide de st_simplifypreservetopology() mais selon la documentation, les résultats pour la longueur et la tolérance pour la simplification sont dans le système de coordonnées des données ; qui dans mon cas est des degrés. Cela n'a évidemment pas de sens. J'ai besoin qu'il soit en mètres.

Dois-je changer la façon dont je stocke mes données ou dois-je convertir mes trajectoires et mes points en autre chose avant de les alimenter dans les fonctions st_length() et st_simplifypreservetopology() ?

Capture d'écran de Mike T.


Vous avez raison de dire que si vos données se trouvent dans une petite région, vous devez utiliser un type de géométrie. Cependant, vous voudriez également transforment normalement les coordonnées Lat/Long en un système de référence spatiale pour la région. Normalement, la plupart des gens choisissent une zone UTM, qui décrit les coordonnées des abscisses et des ordonnées avec des unités de longueur en mètres.

Consultez ST_Transform pour convertir vos coordonnées Lat/Long en Easting/Northings. Vous pouvez soit modifier la colonne géométrique sur place, soit créer une autre table ou colonne géométrique.


Lorsque j'utilise st_length(), je peux convertir en géographie en utilisant st_length(line.line_geometry :: géographie) comme cela a été suggéré ou en utilisant ST_Length2D_Spheroid(line.geometry, 'SPHEROID["GRS 1980",6378137,298.257222101]'). Les deux réponses semblent être les mêmes en ce qui concerne la précision : 580139.3016159851 vs 580139.3016215176. Je suppose que la légère différence est due à une erreur d'arrondi. L'utilisation de l'une de ces deux méthodes produit mes résultats en mètres, ce que je recherchais.

J'ai vérifié que la longueur était correcte en utilisant l'outil Mesurer la ligne dans QGIS et en mesurant une ligne donnée.


Voir la vidéo: How to convert Lat Long to UTM Easting,Northing. by QGIS Software English (Octobre 2021).