2010-10-22 25 views
13

Saludos,Coordenadas GPS: 1km cuadrados alrededor de un punto

Tenía la esperanza de que alguien por ahí me podría proporcionarle una ecuación para calcular un 1 kilometro cuadrado (X desde a.aaa a b.bbb, Y desde c.ccc a c.ccc) alrededor de un punto dado, digamos lat = 53.38292839 y lon = -6.1843984? También necesitaré cuadrados de 2 km, 5 km y 10 km alrededor de un punto.

He intentado googlear alrededor en vano ... Es tarde en la noche y estaba esperando que alguien podría tener una solución rápida a mano antes de profundizar en la trigonometría ...

Yo estaré corriendo todo esto en Javascript, aunque cualquier idioma está bien.

Y no, no es un problema de tarea; (

Muchas gracias de antemano,

+2

¿Te das cuenta de que no serán "cuadrados" en la mayoría de los sentidos de la palabra, especialmente si tus puntos están cerca de los polos? –

+0

¿Necesita cuadrados, o tendrá el radio el truco? – mna

+1

@Paul Tomblin Sí, tienes razón sobre el "cuadrado". ¡Para todos los efectos, el tipo de cuadrado simple del que estoy hablando es lo suficientemente cuadrado para mí! – Eamorr

Respuesta

33

Si el mundo fuera una esfera perfecta, de acuerdo con la trigonometría básica ...

Los grados de latitud tienen la misma distancia lineal en cualquier parte del mundo, porque todas las líneas de latitud son del mismo tamaño. Entonces 1 grado de latitud equivale a 1/60 de la circunferencia de la Tierra, que es 1/360º de 40.075 km.

La longitud de una línea de longitud depende de la latitud. La línea de longitud en la latitud l será cos (l) * 40,075 km. Un grado de longitud será 1/60 de eso.

Para que pueda trabajar al revés de eso. Suponiendo que quiere algo muy cercano a un kilómetro cuadrado, querrá 1 * (360/40075) = 0.008983 grados de latitud.

En su latitud de ejemplo de 53.38292839, la línea de longitud será cos (53.38292839) * 40075 = [aproximadamente] 23903.297 km de longitud. Entonces 1 km es 1 * (360/23903.297) = 0.015060 grados.

En realidad, la Tierra no es una esfera perfecta, es más gruesa en el ecuador. Y lo anterior da una muy buena respuesta para la mayor parte del área útil del mundo, pero tiende a ser un poco extraño cerca de los polos (donde los rectángulos largos/lat dejan de parecerse a los rectángulos del globo). Si estuvieras en el ecuador, por ejemplo, la línea hipotética de longitud tiene 0 km de largo. Entonces, cómo lidiar con la necesidad de contar los títulos depende de por qué quieres los números.

+0

Ok. La 1 milla de Jim = 0.014472 grados de latitud (o equivalente a .008983 en km) parece estar bien. Muchas gracias. – Eamorr

+1

Nota: Al calcular cos (lat), asegúrese de convertir lat a radianes ya que casi todos los lenguajes de programación usan radianes en sus métodos trigonométricos Cos/Sin. – Rao

4

Aquí hay algo de mis notas para ser utilizado en Android con su GPS decimal

Lat Long:. la ciudad de NY 40N 73W 47 58 40,783333 73,966667

Wash DC 38N 77W 53 02 38,883333 77,033333

rendimiento s = 209 millas !! MUY CERCA

Distancia (millas) (x) = 69,1 (Lat2-Lat1) Distancia (millas) (y) = 53.0 (long2 - LONG1) Como el cuervo Flys sqrt (x2 + y2) ... duh! @

delta (LAT)/milla = 0.014472 delta (LARGO)/milla = 0.018519

Usando una caja como aproximación para encontrar a alguien a menos de 100 millas (100 norte/sur 100, 100 E/100 W) De 0,0 -14.472/+ 14.472, -18.519/18.519

+0

ok, entonces delta_lat es 0.014472 millas y delta_lon es 0.018519? Genial, lo convertiré en km y debería ser ordenado. Muchas gracias por eso. ¡Pensé que iba a ser mucho más complicado que eso! – Eamorr

+0

Las distancias en latitud y longitud no obedecen a Pitágoras porque estás trazando una superficie curva, no una plana. Busque la fórmula de haversine para obtener el resultado correcto: no es bonita, pero puede reproducirla de inmediato en unas cinco líneas de código y luego mezclarla en una biblioteca en algún lugar. – Tommy

+0

Soy consciente de esto, esto funciona bastante bien en una distancia de 200 millas, por lo que lo he marcado como favorito. Es rápido en el servidor. Si quieres algo más exacto ... ¡aquí tienes! http://www.meridianworlddata.com/Distance-Calculation.asp – Jim

0

Una forma más simple de generar un cuadrado gps dado el centro sería utilizar el algoritmo Vincenty indirecto. El código JavaScript aquí muestra cómo hacerlo http://www.movable-type.co.uk/scripts/latlong.html. Crear un cuadrado usando un círculo no es difícil. Los cuadrados están a la misma distancia de cada punto. Entonces, dado un punto central, distancia desde el centro, cambie el rumbo desde 0 o cualquier número dependiendo de la rotación del cuadrado e incremente 90 grados o PI/2 radianes. Incrementando 90 grados cada vez y subirás con un cuadrado en el espacio circular.

Utilizo esto para generar puntos de GPS alrededor de un punto central con una distancia dada .---. -/- --0-- -/- .---.

Cuestiones relacionadas