Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: rr5773 en 18 Septiembre 2015, 14:32 pm



Título: Programar distancia entre dos puntos
Publicado por: rr5773 en 18 Septiembre 2015, 14:32 pm
Muy buenas,

tengo un problema que aunque creo que es simple de resolver no logro dar con ello.

Estoy programando la fórmula en línea recta sobre plano (distancia = 100* raiz((lat1-lat2)^2+(lon1-lon2)^2) y para ciertos casos me da una distancia mayor que la distancia por carretera según google maps, lo cual no tiene ningún sentido. Concretamente expongo un ejemplo:

Distancia entre Zamora y Soria según Google maps: 305 km.

Coordenadas de los dos puntos (las he revisado a propósito):

Latitud de Zamora: 41,50368
Longitud de Zamora: -5,743778
Latitud de Soria:41,7636
Longitud de Soria: -2,464921

Distancia según la fórmula anterior: 328 km

¿Podrían ayudarme?

Ya de paso comento que tambieén lo estoy comparando con la fórmula de Haversine y hay casos en los que también dicha fórmula me sale una distancia mayor que la distancia por carretera, e incluso casos en los que la distancia de Haversine es menor que la distancia sobre un plano, cuando debido a la curvatura de la tierra debería de ser mayor.

Muchas gracias de antemano.

Saludos

Mod: Pregunta y contenido del post recuperados de Google Cache.


Título: Re: Programar distancia entre dos puntos
Publicado por: engel lex en 18 Septiembre 2015, 23:33 pm
sabes que las coordenadas no son puntos sobre un plano sino grados sobre una esfera... no puedes hacer "linea recta sobre plano" porque es "linea tangente sobre esfera"...

es decir... supongamos distancia entre 2 coordenadas... lat:0º, long 20º y lat 0º, long 40º

según tu metodo

(https://latex.codecogs.com/gif.latex?%5Cbg_white%20distancia%20%3D%20100%20*%20%5Csqrt%7B%28lat1-lat2%29%7B%5E2%7D+%28lon1-lon2%29%7B%5E2%7D%7D)

sería
(https://latex.codecogs.com/gif.latex?%5Cbg_white%20distancia%20%3D%20100%20*%20%5Csqrt%7B%2840-0%29%7B%5E2%7D+%2820-0%29%7B%5E2%7D%7D%20%3D%20775)

sin embargo, si lo medimos en lat:80º, long:0º y lat 90º, long 80º
(https://latex.codecogs.com/gif.latex?%5Cbg_white%20distancia%20%3D%20100%20*%20%5Csqrt%7B%2890-0%29%7B%5E2%7D+%2890-80%29%7B%5E2%7D%7D%20%3D%209055)

claramente tus numero indican que la segunda es más grande... pero si lo vemos en el mapa

la primera
(http://imgur.com/h1ay1ey.png)

la segunda
(http://imgur.com/y8yg7or.png)

e planeta es una esfera por lo que la segunda es más corta realmente que la primera

en tal caso tienes que calcularlo como angulos sobre una esfera


Título: Re: .
Publicado por: Eleкtro en 11 Diciembre 2015, 12:37 pm
Para el usuario @[brr5773[/b]

Toda información proporcionada es util aunque a ti te resulte tal vez menos util que otra información que hayas encontrado.

Eso no es motivo ni excusa para que hayas dejado tu comentario vacío y quieras que sea eliminado, piensa en el esfuerzo que los demás hayan podido haber invertido para responderte con imágenes y demás datos como en este caso hizo @Engel Lex. No voy a eliminar el post por respeto a eso mismo, de echo te pido que tengas la consideración de enviarme a mi u otro moderador global la pregunta que hiciste (aunque sea solo la pregunta) para volverla a poner donde estaba, ya que ahora nadie entenderá cual es el propósito de este post.

Por favor, ahora que ya lo sabes no hagas esto más (ya que sería motivo de baneo); recuerda que lo que no te sirve a ti, a otro le servirá.

Tema cerrado.

Saludos!