给定一个错误值未知的地理编码位置列表和一个更接近真实位置(大多数是可靠的)公共(public)校正的数据库,我应该如何设计一个算法来采取考虑所有修正以最准确地估计真实位置?
静止坐标和传感器读数都有噪声,因此它类似于地理签到问题。它让我想起了多个噪声传感器的一个已知问题,您可以在其中对噪声建模并计算最可能的值,但我不记得解决方案。
所有坐标都存储为 SQL Server 2008 中的 geography::POINT
类型,因此针对该平台的高效解决方案将是最有用的。
澄清:坐标不是时间。每个读数都来自一个独特的传感器,没有重复测量。
最佳答案
尽管我不确定如何在 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 中另一个有趣的资源 regargind 空间支持是 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 澄清之后:
在您的场景中,除了嘈杂的公共(public)场所外,没有什么可以以某种方式“猜测”错误...您可以使用任何噪声感知统计算法...您甚至可以选择 3 或 5 个最近的坐标(请参阅链接关于空间支持)并校正您的测量值,例如类似于磁棒...另一种选择是通过对类似于三角测量等的差异进行加权来应用误差校正。
编辑 3 - 在 OP 发表评论后:
一种这样的算法是点集的最小权重三角剖分...参见http://en.wikipedia.org/wiki/Minimum-weight_triangulation和 http://code.google.com/p/minimum-weight-triangulator/
关于sql-server - 校正多个地理传感器读数中的噪声,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7311750/