Latitud / Longitud y metros
Tengo un pequeño problema algorítmico.
Estoy desarrollando una aplicación para Android. Obtengo coordenadas GPS. Por ejemplo: latitud: 23.23907
, longitud: 50.45786
.
- Convertir valores de ReplayGain a ajustes de volumen
- ¿Cuál es la mejor práctica para redondear un flotador a 2 decimales?
- Cálculo de intersecciones entre segmentos de línea
- Android - Ajuste de la posición de la vista de imagen en la parte superior de una vista de imagen con zoom
- ¿Cómo inserto caracteres especiales como texto en el editor de XML para Android?
Así que tengo un punto. Quiero calcular los detalles de los límites en este punto más o menos 5 metros. Es decir:
[23.23907 - 5 meters ; 23.23907 + 5 meters] [50.45786 - 5 meters ; 50.45786 + 5 meters]
¿Cómo hacer este cálculo?
¡Muchas gracias!
- ¿Cómo determino qué triángulo tocó el usuario en este rectángulo?
- Comprender claramente el cálculo de la matriz
- Calcular la distancia entre dos puntos directamente en SQLite
- Android getOrientation Azimut se contamina cuando el teléfono está inclinado
- Almacene la orientación en una matriz y compare
- ¿Qué es una buena biblioteca para analizar expresiones matemáticas en java?
- 1000 * 60 * 60 * 24 * 30 resultados en un número negativo
- ¿Cómo obtengo el ángulo del teléfono en relación con el campo magnético de la Tierra?
La fórmula haversine se puede simplificar mucho cuando se trabaja en las direcciones norte-sur y este-oeste solamente.
Si la circunferencia de la Tierra es C, el punto en d kilómetros al sur de un punto determinado es 360 * d / C grados al sur. El punto en d kilómetros al este es 360 * d / (C * cos (latitud)) grados al este. El coseno en el denominador viene del hecho de que la longitud de la longitud en una latitud dada más corta que el ecuador por esa cantidad.
Así que si la circunferencia de la Tierra es 40075,04 km, para moverse 5 m al norte / sur se sumaría / restará 0,0000449 de la latitud y el uso de la misma longitud. Para moverse 5 m al oeste / este, usaría la misma latitud y sumar / restar 0,0000449 / cos (latitud) a la longitud. No se olvide de los casos de borde, sin embargo: cerca de los polos que tiene que sujetar la latitud a 90 °, y cerca de la longitud de 180 ° usted tendrá demasiado añadir o sustraer 360 ° para mantener la longitud en el rango correcto.
Con sus números la gama resulta ser aproximadamente:
latitude: [23.23903 ; 23.23911] longitude: [50.45781 ; 50.45791]
Actualización: Tenga en cuenta que esto todavía supone que la Tierra es una esfera perfecta, que no es . El sistema GPS, por ejemplo, modelos de la Tierra como un elipsoide, donde el ecuador está en 6378.137 kilometros y los polos están a 6356.7523142 kilometros del centro de la Tierra. La diferencia es de aproximadamente 1 / 300th e importa mucho para muchas aplicaciones, pero en este caso está dentro del margen de error.
La corrección de la fórmula para la longitud debería ser simple ya que los paralelos siguen siendo círculos: sólo tendrías que cambiar cos(latitude)
por el coeficiente correcto. Cálculo de la latitud correcta es más difícil porque los meridianos no son círculos sino elipses, y la longitud del arco de una elipse no se puede calcular utilizando funciones elementales, por lo que debe utilizar aproximaciones.
Quiero añadir un comentario muy importante (para los no iniciados o para aquellos que se han olvidado de esto):
El coseno debe ser calculado sobre la latitud en radianes y no en grados.
Conversión: radianes = PI / 180 * grados
(Me disculpo por haber hecho una respuesta, pero con mi actual reputación de 35 no puedo publicar un comentario)
- Genymotion. Cómo extraer la base de datos del dispositivo. Mi / data / data / carpeta parece estar vacía
- ¿El uso de largeheap en Android es una buena práctica?