Quiero encontrar un punto de latitud y longitud dado un rumbo, una distancia y una latitud y longitud iniciales.
Esto parece ser lo opuesto a esta pregunta ( Distancia entre puntos lat / long ).
Ya he examinado la fórmula de Haversine y creo que su aproximación al mundo probablemente sea lo suficientemente cercana.
Supongo que necesito resolver la fórmula de Haversine para mi lat / long desconocido, ¿es esto correcto? ¿Hay algún buen sitio web que hable sobre este tipo de cosas? Parece que sería común, pero mi búsqueda en Google solo ha generado preguntas similares a la anterior.
Lo que realmente estoy buscando es solo una fórmula para esto. Me gustaría darle un lat / lng inicial, un rumbo y una distancia (millas o kilómetros) y me gustaría obtener un par lat / lng que represente dónde habría terminado uno si hubieran viajado esa ruta
fuente
Respuestas:
Me gustaría saber cómo se comparan los resultados de esta fórmula con el pe.dll de Esri .
( cita ).
Aquí hay una página html para probar .
fuente
Si se va en un plano, entonces el punto de que es r metros de distancia en un rumbo de unos grados al este del norte se desplaza por r * cos (a) en la dirección norte y r * sen (a) en la dirección este. (Estas declaraciones definen más o menos el seno y el coseno).
Aunque no está en un plano, está trabajando en la superficie de un elipsoide curvo que modela la superficie de la Tierra, cualquier distancia inferior a unos pocos cientos de kilómetros cubre una parte tan pequeña de la superficie que, para la mayoría de los propósitos prácticos, puede ser considerado plano La única complicación restante es que un grado de longitud no cubre la misma distancia que un grado de latitud. En un modelo esférico de la Tierra, un grado de longitud es solo cos (latitud) mientras que un grado de latitud. (En un modelo elipsoidal, esta sigue siendo una aproximación excelente, buena para aproximadamente 2.5 cifras significativas).
Finalmente, un grado de latitud es aproximadamente 10 ^ 7/90 = 111,111 metros. Ahora tenemos toda la información necesaria para convertir metros a grados:
El desplazamiento hacia el norte es r * cos (a) / 111111 grados;
El desplazamiento hacia el este es r * sin (a) / cos (latitud) / 111111 grados.
Por ejemplo, a una latitud de -0.31399 grados y una demora de a = 30 grados al este del norte, podemos calcular
Por lo tanto, a partir de (-78.4437, -0.31399), la nueva ubicación está en (-78.4437 + 0.00045, -0.31399 + 0.0007794) = (-78.4432, -0.313211).
Una respuesta más precisa, en el moderno sistema de referencia ITRF00, es (-78.4433, -0.313207): está a 0.43 metros de la respuesta aproximada, indicando que la aproximación erra en 0.43% en este caso. Para lograr una mayor precisión, debe usar fórmulas de distancia elipsoidal (que son mucho más complicadas) o una proyección conforme de alta fidelidad con divergencia cero (para que el rumbo sea correcto).
fuente
Si necesita una solución de JavaScript, considere estos
functions
y este violín :Entonces, si desea calcular una nueva coordenada, puede ser así:
fuente
Obtuve esto trabajando en ObjectiveC. La clave aquí es saber que necesita puntos lat / lng en radianes y debe convertirlos nuevamente a lat / lng después de aplicar la ecuación. Además, sepa que la distancia y tc están en radianes.
Aquí está la ecuación original:
Aquí se implementa en ObjC donde radian es un radian medido en sentido antihorario desde N (por ejemplo, PI / 2 es W, PI es S, 2 PI / 3 es E) y la distancia es en kilómetros.
fuente
Si le interesa una mayor precisión, está Vincenty . (El enlace es a la forma 'directa', que es exactamente lo que buscas).
Hay bastantes implementaciones existentes, si buscas código.
Además, una pregunta: no estás asumiendo que el viajero mantiene la misma orientación durante todo el viaje, ¿verdad? Si es así, estos métodos no responden la pregunta correcta. (Sería mejor proyectar en mercator, dibujar una línea recta y luego des-proyectar el resultado).
fuente
Aquí hay una solución de Python:
fuente
Utilizo el enfoque descrito a continuación para determinar la siguiente coordenada dada la demora y la distancia desde la coordenada anterior. Tengo un problema de precisión con otro enfoque que leí en Internet.
Lo uso para determinar el área de tierra, que es un polígono, y trazo ese polígono en Google Earth. Un título de tierra tiene orientaciones y distancias escritas de esta manera: "Norte o Sur x grados y minutos Este u Oeste, z metros hasta el punto n;".
Entonces, a partir de las coordenadas dadas del punto de referencia, primero calculo la distancia por un grado de latitud y un grado de longitud usando la fórmula de Haversine porque esto varía según la ubicación. Luego determino la siguiente coordenada a partir de la fórmula de trigonometría seno y coseno.
A continuación se muestra el javascript:
fuente