In questo momento sto facendo un'applicazione di navigazione per mappe interne e quello che sto cercando di fare è creare un database di punti della mappa nell'edificio.Calcolo distanza PostGis
Tutte le coordinate che utilizzo sono prese da Google Map (che significa che l'EPSG è 3857). Che cosa devo fare ora è trovare la distanza in metri così come utilizzare D_Within in metri
Quando provo ad estrarre la distanza tra 2 punti:
SELECT ST_DISTANCE(
ST_GeomFromText('POINT(' || StartLon || ' ' || StartLat || ')',3857),
ST_GeomFromText('POINT(' || EndLon || ' ' || EndLat || ')',3857))
FROM i3_building.floordata;
Per la prima 2 fila con:
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)
Risultato dato è:
2.59422435413724e-005
4.11096095831604e-005
Anche se sono in rad, il secondo re il livello è due volte più alto del primo. Quindi mi fa confondere. Poi cerco di uscita come metri:
SELECT ST_DISTANCE(
ST_GeographyFromText('POINT(' || StartLon || ' ' || StartLat || ')'),
ST_GeographyFromText('POINT(' || EndLon || ' ' || EndLat || ')'))
FROM i3_building.floordata;
Il risultato dato per le stesse righe è:
2.872546829
4.572207435
che non è quello che mi aspettavo pure. Io non sono molto familiare con PostGIS e SRID così a questa domanda potrebbe sembrare semplice, ma ti prego di aiutarmi, mi sono bloccato senza @@
Grazie per la risposta. Ho provato anche il 4326 ma non molto diverso dal 3857. Per la distanza del primo set, è a 3 metri di distanza, dato che è all'interno del mio ufficio quindi lo conosco abbastanza bene. Cerco anche di calcolarlo da qui: http://boulter.com/gps/distance/ - stesso risultato, 3 metri. –
Cosa intendi per non molto diverso? Direi 7,45 metri e 62,74 sono abbastanza diversi. È st_distance_sphere che è il problema, però, dato che prende input in lat/lon, dove st_distance prende la distanza nelle coordinate proiettate. 3857 e 4326 sono radicalmente diversi, misurando rispettivamente metri e gradi, ma è necessario collegarli alle funzioni corrette per ottenere le risposte corrette: D –
Scusa, basta uscire e provare a misurare, circa 7 metri è abbastanza corretto.Grazie per l'aiuto :) –