校正多个地理传感器读数中的噪声
给定一个具有未知错误值的地理编码位置列表和一个接近真实位置的噪音较小的公共校正数据库(大多数都是可靠的),我应该如何设计一种算法来进行所有校正考虑到最准确地近似真实位置?
静止坐标和传感器读数都是有噪声的,因此它类似于地理签到问题。它让我想起了多个噪声传感器的一个已知问题,您可以对噪声进行建模并计算最可能的值,但我不记得解决方案了。
所有坐标在 SQL Server 2008 中都存储为 geography::POINT 类型,因此针对该平台的有效解决方案将是最有用的。
澄清:坐标不是时间的。每个读数都来自独特的传感器,不会重复测量。
Given a list of geocoded locations with an unknown error-value and a database of less noisy public corrections nearer the true location (most of which are reliable), how should I design an algorithm to take all the corrections into account to approximate the true location most accurately?
Both the stationary coordinates and the sensor readings are noisy, so it is similar to a geographic check-in problem. It reminds me of a known problem with multiple noisy sensors, where you model the noise and calculate the most probable value, but I don't recall the solution.
All coordinates are stored as the geography::POINT
type in SQL Server 2008, so an efficient solution for that platform would be most useful.
Clarification: Coordinates are not temporal. Each reading comes from a unique sensor with no repeat measurements.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
虽然我不确定如何在 SQL Server 2008 中实现这一点,但一个好的算法可能是 http://en.wikipedia .org/wiki/Kalman_filter(请参阅http://www.developerstation.org/2011/09/kalman-filter-for-dummies-tutorials.html)。
对于实现,使用 SQL Server 中的空间索引可能会有所帮助 - 例如,请参阅 http://blogs.msdn.com/b/isaac/archive/2007/05/16/sql-server-spatial-support-an-introduction.aspx
另一个有趣的资源重新考虑空间SQL Server 中的支持是 http://www .jasonfollas.com/blog/archive/2008/03/14/sql-server-2008-spatial-data-part-1.aspx
虽然在C中的一些应用卡尔曼滤波器请参见 http://interactive- Matter.eu/2009/12/filtering-sensor-data-with-a-kalman-filter/
编辑 - 根据评论:
根据要求,它可以做出更多感觉使用卡尔曼滤波的修改版本,它不仅考虑白噪声,还考虑时间相关误差 - 例如参见 http://hss.ulb.uni-bonn.de/2011/2605/2605.pdf
编辑 2 -在OP澄清之后:
在你的场景中,除了噪音较小的公共场所之外,没有什么可以“猜测”错误......你可以使用任何噪声感知统计算法......你甚至可以选择3 或 5 个最近的坐标(请参阅有关空间支持的链接)并校正您的测量,例如类似于磁棒...另一种选择是通过类似于三角测量等的加权差异来应用误差校正。
编辑 3 - 发表评论后OP:
其中一种算法是点集的最小权重三角剖分...请参阅http://en.wikipedia.org/wiki/Minimum-weight_triangulation 和 http://code.google.com/p/minimum-weight-triangulator/
Alhtough I am not sure how to implement that in SQL Server 2008 a good algorithm could be http://en.wikipedia.org/wiki/Kalman_filter (see http://www.developerstation.org/2011/09/kalman-filter-for-dummies-tutorials.html).
For an implementation it could be helpful to use the spatial index from SQL Server - see for example http://blogs.msdn.com/b/isaac/archive/2007/05/16/sql-server-spatial-support-an-introduction.aspx
Another interesting resource regargind spatial support in SQL Server is http://www.jasonfollas.com/blog/archive/2008/03/14/sql-server-2008-spatial-data-part-1.aspx
Although in C some application of a kalman filter see http://interactive-matter.eu/2009/12/filtering-sensor-data-with-a-kalman-filter/
EDIT - as per comment:
Depending on the requirements it could make more sense to use a modified version of Kalman filtering which not only takes white noise into account but also considers time-correlated errors - see for example http://hss.ulb.uni-bonn.de/2011/2605/2605.pdf
EDIT 2 - after the Clarification from OP:
In your scenario there is nothing to somehow "guess" an error except the less noisy public location... you could use any noise aware statistical algorithm... you could even select the 3 or 5 nearest coordinates (see the link regarding spatial support) and correct your measurement for example similar to a magnetic wand... another option would be to apply an error-correction by weighting the differences similar to triangulation etc.
EDIT 3 - after comment from OP:
One such algorithm is the Minimum-Weight-Triangulation of point sets... see http://en.wikipedia.org/wiki/Minimum-weight_triangulation and http://code.google.com/p/minimum-weight-triangulator/