Comment ajouter un décalage à un lat / lon pour obtenir un nouveau point à l'aide de PostGIS


9

En utilisant PostGIS, j'ai un point lat / lon et je veux ajouter un décalage est / ouest et nord / sud en mètres pour obtenir un nouveau point. Est-ce possible?

Réponses:


8

Vous pouvez utiliser ST_Translate:

La fonction ST_Translate prend n'importe quelle géométrie (linestring, multiline etc.) renvoie une nouvelle géométrie qui est la géométrie d'origine déplacée par un vecteur défini par X, Y, Z. Notez que les unités de mesure sont toujours dans les unités du système de référence spatiale de l'argument de géométrie. Il existe deux formes de celui-ci ST_Translate. ST_Translate (géométrie, X, Y, Z) et ST_Translate (géométrie, X, Y).

Source: http://www.bostongis.com/postgis_translate.snippet

Vous devrez d'abord transformer lat / lon en mètres. Vous pouvez utiliser ST_Transform pour y parvenir:

ST_Transform - Renvoie une nouvelle géométrie avec ses coordonnées transformées en SRID référencé par le paramètre entier.

Source: http://postgis.net/docs/ST_Transform.html


C'est la partie lat / lon en mètres qui me pose problème. Des suggestions à ce sujet?
Dave Jennings

J'ai ajouté la fonction correspondante à la réponse. Si vous ne savez pas quel SRID cible choisir, vous devrez indiquer l'utilisation de l'étendue géographique de vos données.
underdark

Merci. Mes autres recherches m'ont finalement dit la même chose. J'ai naïvement pensé que cela pourrait être plus simple et qu'il y aurait un seul SRID que je pourrais utiliser, mais il semble que vous devez en choisir un en fonction de votre emplacement.
Dave Jennings
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.