J'utilise PostGIS depuis longtemps mais je n'ai jamais eu à utiliser la LINESTRING
géométrie ...! :)
Voici ce que je voudrais faire: j'ai un tableau des lignes de ligne (représentant les rues d'une ville donnée, SRID 3395) et je voudrais trouver les lignes de ligne les plus proches d'un point donné (position GPS, SRID 4326).
La solution que j'ai trouvée est de sélectionner toutes les chaînes de lignes de mon point en utilisant la expand()
méthode et de déterminer la distance entre chaque chaîne de lignes et mon point en utilisant la ST_Distance()
méthode.
Voici le SQL:
SELECT myLineId, myLineName, ST_Distance(ST_Transform(GeomFromText('POINT(LON LAT)',4326),3395),myLineGeom) AS myLineDistance
FROM myLines
WHERE myLineGeom && expand(ST_Transform(GeomFromText('POINT(LON LAT)',4326),3395), 100)
ORDER BY myLineDistance;
Les résultats que j'obtiens semblent corrects mais j'ai l'impression que quelque chose ne va pas dans ma mise en œuvre.
1) Pensez-vous que les gars expand()
peuvent obtenir toutes les chaînes de caractères concernées?
2) Pensez-vous que ST_Distance()
c'est la bonne méthode à utiliser? Je suppose que je me trompe, car la distance que je voudrais obtenir est la plus petite distance entre le point et ma ligne et non la distance entre le point et l'un des points de la chaîne.
Illustration: