¿Cómo filtrar puntos GPS incorrectos?

11

Tengo una base de datos de puntos GPS. No hay pistas, solo puntos. Necesito calcular algún valor por cada 100 metros, pero a veces el GPS daba coordenadas incorrectas que distan mucho de los puntos reales del GPS, y en lugar de calcular valores para un cuadrado pequeño, tengo que calcularlo para un área rectangular realmente grande.

¿Cuál es el mejor algoritmo para filtrar puntos GPS incorrectos?

Hice una captura de pantalla para ayudar a entender:

! [http://content.screencast.com/users/smirnoffs/folders/Jing/media/94624331-db6a-4171-bed9-e2183f953a1d/gps_error.png]

smirnoffs
fuente
1
Usaría un pequeño múltiplo del marco móvil (digamos 10 últimos puntos) de distancia promedio entre puntos como criterio para detectar tales valores atípicos.
lynxlynxlynx
¿Puedes describir tu método más detallado? Tengo una base de datos de puntos, no están ordenados de ningún tipo. Entonces la distancia podría ser de 2 metros o 500 metros. Pero algunos puntos están muy lejos. Hice una captura de pantalla para ayudarte a entender
smirnoffs
2
Veo. En este caso, mi enfoque no es tan bueno. En cambio, calcularía el punto vecino más cercano para cada punto y luego eliminaría los valores atípicos allí.
lynxlynxlynx
2
El segundo enfoque sugerido por @lynx funcionaría bien con los datos de la muestra, especialmente cuando el método de detección de valores atípicos es bueno. Consulte las preguntas sobre valores atípicos en nuestro sitio de estadísticas para conocer las opciones. Por ejemplo, se sugieren muchos enfoques creativos (y válidos) en stats.stackexchange.com/questions/213 .
whuber

Respuestas:

3

Ejecuta el Anselin Local Moran's I contra los puntos y tira cualquier cosa con un puntaje z por debajo de -1.96. Ese es un método estadístico para localizar valores atípicos espaciales. Debe asegurarse de que todos los puntos tengan un valor relacionado con su posición espacial para hacerlo.

Pero al verificar las herramientas en 10.1 después del comentario de whuber, me doy cuenta de que si usa ArcGIS 10.1, la herramienta de análisis de agrupación está disponible, que es realmente lo que desea hacer.

Creo que desearía hacer un análisis de agrupación con una restricción espacial de triangulación de Delaunay. El obstáculo aquí es que debe tener un número de grupos de partición igual o mayor que el número de grupos desconectados (si alguno de los valores atípicos son vecinos naturales entre sí). De lo contrario, los valores atípicos sin vecinos naturales aparecerán sin grupo del análisis de agrupación.

Basado en eso, creo que la triangulación de Delauney podría ser la fuente de un algoritmo de filtro, pero aún no estoy seguro.

Otra actualización: después de excavar en Partition.py, el script que ejecuta la herramienta de análisis de agrupación, creo que es posible usar el algoritmo allí para grupos desconectados combinados con la parte NoNeighbours, aunque tengo problemas para desenterrar esa parte de guión.

castillo-blord
fuente
(-1) Esto garantiza tirar alrededor de 1 de cada 40 puntos sin importar qué. No es aconsejable utilizar ninguna de estas pruebas para la detección de valores atípicos.
whuber
1
Eso no es cierto cuando se prueban valores atípicos espaciales puros, si existen valores atípicos espaciales. Si los valores atípicos espaciales no existen, entonces tendrá ese problema, pero si existen, solo esos valores atípicos deberían caer en un puntaje z tan bajo. Todo depende de la distribución espacial de los puntos.
blord-castillo
1
Casi: si los valores atípicos forman un grupo, es posible que no los detecte por completo. (Considere una situación en la que las coordenadas nulas o obviamente malas se asignan a (0,0) automáticamente.) Su comentario muestra que encontrar valores atípicos puede ser complicado y depende de la naturaleza de los valores atípicos: si puede haber uno o muchos; cuán lejos pueden estar; si pueden agruparse; etc. Como principio general, las estadísticas que hacen suposiciones de distribución (como este uso del Local Moran's I) no funcionan tan bien como las estadísticas robustas, no paramétricas.
whuber
2
Estaba considerando un problema teórico específico, donde tienes los puntos GPS "buenos" y tienes el mismo número de puntos GPS "malos" apilados uno encima del otro en una esquina lejana del cuadro delimitador. Sin el conocimiento del área de interés para los puntos "buenos", no creo que se pueda separar estadísticamente qué conjunto es "bueno" y qué conjunto es "malo". Este podría ser un problema que requiere la designación manual de áreas de interés.
blord-castillo
2
Eso es correcto: ha descrito una distribución multivariada bimodal. Lo que generalmente se hace en tales casos es la estimación de un modelo de mezcla o la aplicación de un algoritmo de clúster. El resultado es separar los componentes de la mezcla / grupo pero sin designar ninguno de ellos como "valores atípicos": ese deber debe recaer en el usuario.
whuber
3

Esto podría ayudar a obtener una lista de los valores atípicos:

SELECT p1.point_id 
FROM p1 AS points, p2 AS points
WHERE p1.point_id <> p2.point_id AND
ST_Distance(p1.geom, p2.geom) > 10000

Aquí, point_id sería la clave principal en su tabla de puntos. La función de distancia encontrará puntos donde el más cercano sea mayor a 10000 metros. (Por supuesto, puede poner cualquier valor apropiado)

Si lo anterior funciona, cambie a una declaración DELETE, algo como:

DELETE FROM points WHERE point_id IN (
-- SELECT as above
SELECT ....
);
Micha
fuente
1
1. Los puntos no están ordenados. 2. ¿Qué pasa si el error será inferior a 10000 metros? Por ejemplo 150 metros?
smirnoffs
1
Quizás no lo entendí. De su imagen, veo que casi todos los puntos están agrupados en un área, y un número muy pequeño está muy lejos. ¿No es ese el problema? Si un punto está a solo 150 metros de otro, ¿cómo sabe que es un valor atípico?
Micha
1

Trataré de proporcionar una respuesta más práctica para ayudarlo a hacer el trabajo. (disculpas si estás buscando una discusión sobre algoritmos)

Escenario 1: Menciona 'puntos GPS', por lo que si tiene acceso a puntos de referencia GPS originales, el trabajo se vuelve mucho más fácil. Puede arrojar puntos con HDOP / VDOP alto o número de satélites a la vista, lo que habría causado el error originalmente. Una herramienta gratuita como gpsbabel tiene tales filtros incorporados. http://www.gpsbabel.org/htmldoc-development/Data_Filters.html

Escenario 2: simplemente tienes un conjunto de puntos. El problema se convierte entonces en detectar valores atípicos espaciales. Hay mucha investigación en esta área y veo muchos artículos sobre este tema en una búsqueda en la web. Si está buscando limpiar sus datos, puede usar el algoritmo v.outlier de GRASS que debería funcionar en su caso en función de la captura de pantalla que compartió. http://grass.osgeo.org/gdp/html_grass63/v.outlier.html

pensamientos espaciales
fuente
Gracias por comentar. Lamentablemente solo tengo coordenadas. El GPS era solo una fuente de coordenadas y no tengo acceso a las pistas GPS originales.
smirnoffs
-2

Creo que tienes datos basura. Siendo realistas, si te preocupa el hecho de que algunos de los datos están incorrectos y no puedes identificar de manera confiable cada punto incorrecto usando algún otro factor, entonces tendrás algunos datos incorrectos en tu análisis.

Si eso es importante, entonces probablemente debería considerar tirar todo, averiguar la causa raíz (por ejemplo, los puntos de GPS defectuosos son de múltiples rutas), abordar esa causa raíz (por ejemplo, agregar una antena de estrangulador, o un mejor tipo de GPS, o la mejor solución) es), y luego rehacer la recopilación de datos.

Si los datos incorrectos no importan, simplemente utilícelos e ignore los errores.

BradHards
fuente