2011-07-06 16 views
7

Tengo un GPS-Position en mi base de datos. Como quiero dibujarlos en un mapa, tropecé con el "algoritmo Douglas-Peucker" que eliminará los puntos en una línea que no son "necasarios" ...Douglas-Peucker-Algorithm

Pero en todas partes que busco, solo descubrir el algoritmo para el píxel X/Y - Coordenadas, y no para Latitud y Longitud ...

Por lo tanto, quiero transformar Lat/Long en una Vista bidimensional "X/Y"? ¿Es eso posible, o estoy pensando "demasiado complicado"? :)

http://en.wikipedia.org/wiki/Ramer%E2%80%93Douglas%E2%80%93Peucker_algorithm

+0

¿Alguna vez capaz de encontrar una solución? –

Respuesta

2

Si se puede suponer con seguridad que el GPS no ha estado moviendo a miles de kilómetros, y usted no está demasiado cerca del norte/polo sur, se puede aproximar coordenadas X/Y en kilómetros al multiplicar latitud y longitud por una constante. La latitud es siempre la misma cantidad de km por grado (aproximadamente 10000 km son 90 grados yendo desde el ecuador hasta uno de los polos). Para la longitud, multiplica por la misma cantidad por cos(latitude).

Sin embargo, no es mucho más difícil calcular posiciones 3D desde la longitud/latitud: Consulte this wikipedia article en coordenadas esféricas para saber cómo hacer esto. acimut/elevación son longitud/latitud.

Esto sigue siendo una aproximación ya que toma la distancia en línea recta, en lugar de seguir la superficie de la tierra, pero para su aplicación no puedo imaginar que esto sea un problema.

Ah, y gracias por el enlace al Douglas Peucker algo ... voy a probarlo en otro dominio problemático.

1

Eso depende de lo que quiere que sea una "línea recta". Si desea una línea recta en un mapa, debe convertir sus coordenadas lat/long utilizando la proyección correcta (probablemente sea Mercator projection, pero hay full list on Wikipedia). Sin embargo, si está buscando la línea más recta en la superficie (es decir, una que coincide con great circle), no debería tener que aplicar ninguna transformación a sus valores lat/long.

0

Hace tiempo que le pregunté this question, y la respuesta que obtuve me permitió escribir una implementación en Java para this project. Está en EarthGeometry.java