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:
Respuestas:
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.
fuente
Esto podría ayudar a obtener una lista de los valores atípicos:
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:
fuente
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
fuente
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.
fuente