2011-09-05 16 views
6

Dada una lista de ubicaciones geocodificadas con un valor de error desconocido y una base de datos de correcciones públicas menos ruidosas cerca de la ubicación real (más de las cuales son confiables), ¿cómo debería diseñar un Algoritmo para tener en cuenta todas las correcciones para aproximar la ubicación verdadera con mayor precisión.Corregir el ruido en múltiples lecturas de sensor geográfico

Tanto las coordenadas estacionarias como las lecturas del sensor son ruidosas, por lo que es similar a un problema de facturación geográfica. Me recuerda un problema conocido con múltiples sensores ruidosos, donde se modela el ruido y se calcula el valor más probable, pero no recuerdo la solución.

Todas las coordenadas se almacenan como el tipo geography::POINT en SQL Server 2008, por lo que una solución eficiente para esa plataforma sería más útil.


aclaración: Las coordenadas son no temporal. Cada lectura proviene de un sensor único sin mediciones repetidas.

Respuesta

2

Alhtough No estoy seguro de cómo implementar eso en SQL Server 2008 un buen algoritmo podría ser http://en.wikipedia.org/wiki/Kalman_filter (ver http://www.developerstation.org/2011/09/kalman-filter-for-dummies-tutorials.html).

Para una aplicación que podría ser útil usar el índice espacial de SQL Server - véase, por ejemplo http://blogs.msdn.com/b/isaac/archive/2007/05/16/sql-server-spatial-support-an-introduction.aspx

Otro recurso interesante regargind apoyo espacial en SQL Server es http://www.jasonfollas.com/blog/archive/2008/03/14/sql-server-2008-spatial-data-part-1.aspx

Aunque en C alguna aplicación de una filtro de Kalman ver http://interactive-matter.eu/2009/12/filtering-sensor-data-with-a-kalman-filter/

EDITAR - según el comentario:

Dependiendo de los requisitos que podría tener más sentido de utilizar una versión modificada del filtrado de Kalman, que no sólo toma el ruido blanco en cuenta, pero también considera los errores de tiempo correlacionados - véase, por ejemplo http://hss.ulb.uni-bonn.de/2011/2605/2605.pdf

EDIT 2 - después de la clarificación de OP:

En su escenario no hay nada que de alguna manera "adivine" un error excepto la ubicación pública menos ruidosa ... podría usar cualquier algoritmo estadístico de ruido ... incluso podría seleccionar el 3 o 5 las coordenadas más cercanas (consulte el enlace sobre soporte espacial) y corrija su medición, por ejemplo, similar a una varita magnética ... otra opción sería aplicar un error o de corrección mediante la ponderación de las diferencias similares a triangulación etc.

EDITAR 3 - Después del comentario de OP:

Uno de estos es el algoritmo de mínimo-Peso-La triangulación de los conjuntos de puntos ... ver http://en.wikipedia.org/wiki/Minimum-weight_triangulation y http://code.google.com/p/minimum-weight-triangulator/

+0

El filtro de Kalman es el filtro que tenía en mente, gracias. Funciona bien para la medición continua de velocidad o aceleración por unos pocos sensores, pero ¿funcionará para cientos de lecturas de tiempo estático ruidosas hechas por diferentes sensores con errores desconocidos? –

+0

con algunas modificaciones podría - ver el enlace de mi EDITAR arriba ... – Yahia

+0

Desafortunadamente, mis coordenadas de corrección no son series temporales (he agregado una aclaración). El documento citado se refiere a una "serie temporal estática", que es una serie de mediciones realizadas desde un receptor GPS estático. En este caso, múltiples sensores independientes se han "controlado" una vez (y solo una vez) en o en el límite de la ubicación deseada. –