Je fais actuellement une application de navigation cartographique intérieure et ce que j'essaie de faire est de construire une base de données de la carte dans le bâtiment.Calcul de distance PostGis
Toutes les coordonnées que j'utilise proviennent de Google Map (ce qui signifie que l'EPSG est 3857). Ce que je dois faire maintenant est de trouver la distance en mètres ainsi que l'utilisation D_Within en mètres
Lorsque je tente d'extraire la distance entre 2 points:
SELECT ST_DISTANCE(
ST_GeomFromText('POINT(' || StartLon || ' ' || StartLat || ')',3857),
ST_GeomFromText('POINT(' || EndLon || ' ' || EndLat || ')',3857))
FROM i3_building.floordata;
Pour la première 2 rangée avec:
Start: 103.776047 1.292149; End: 103.77607 1.292212 (3 meters away)
Start: 103.776070 1.292212; End: 103.77554 1.292406 (50 meters away)
résultat donné est:
2.59422435413724e-005
4.11096095831604e-005
Même si elles sont en rad, la deuxième re sult est seulement deux fois plus élevé que le premier. Donc ça me rend confus. Puis j'essaie de sortie comme mètres:
SELECT ST_DISTANCE(
ST_GeographyFromText('POINT(' || StartLon || ' ' || StartLat || ')'),
ST_GeographyFromText('POINT(' || EndLon || ' ' || EndLat || ')'))
FROM i3_building.floordata;
Le résultat donné pour les mêmes lignes est:
2.872546829
4.572207435
Ce qui est pas ce que je pensais aussi. Je ne suis pas très familier avec PostGis et SRID si cette question peut sembler simple, mais s'il vous plaît, aidez-moi, je suis coincé pas
@@
Merci pour votre réponse. J'ai essayé le 4326 mais pas très différent de 3857. Pour la distance du premier set, il est à 3 mètres, puisqu'il est à l'intérieur de mon bureau donc je le connais très bien. J'essaie aussi de le calculer à partir d'ici: http://boulter.com/gps/distance/ - même résultat, 3 mètres. –
Que voulez-vous dire par pas très différent? Je dirais que 7,45 mètres et 62,74 sont très différents. C'est st_distance_sphere qui est le problème, car cela prend une entrée dans lat/lon, où st_distance prend de la distance dans les coordonnées projetées. 3857 et 4326 sont radicalement différents, étant respectivement des mètres et des degrés, mais vous devez les brancher dans les bonnes fonctions pour obtenir les bonnes réponses: D –
Désolé, sortez et essayez de mesurer, environ 7 mètres est tout à fait correct.Merci pour l'aide :) –