我是一名后勤程序员,我被要求弄清楚GPS点是否是“偏离路线”,其中的路线包括许多地理空间点(纬度、经度)。
确定一个点是否在路线附近的最佳算法是什么?我将使用C#和Server,但如果我知道该使用什么算法,那就无关紧要了。
我考虑过
我没有数学学位,但我可能能处理任何给定的正确术语和搜索引擎。
我必须至少每小时进行4000次计算,所以使用映射解决方案可能因为体积而不能被接受。
发布于 2012-01-19 22:26:12
我必须至少每小时进行4000次计算,所以使用映射解决方案可能因为体积而不能被接受。
事实上,这是一个完美的例子,其中映射解决方案将是有益的。不是你传统的“看地图和确定距离”,而是“让数据库决定什么是离你的GPS点最近的路线”。
既然您说您不反对使用不同的数据库,您可以考虑:
看看PostGIS 距离函数或MS 2008 STDistance函数。这是一个很好的博客条目,它描述了SQL2005与SQL2008的优点。
您还可以考虑在gis.stackexchange上阅读(或询问更详细的映射)帖子。整个小组致力于空间分析。一些好的讨论给你看会是
发布于 2012-01-18 21:57:17
谷歌的"Along-track distance“,你应该找到在航空中常用的公式。或者,cross-track distance也可以是您想要的。
发布于 2012-01-18 22:26:17
下面这个怎么样..。
遍历所有线段
lineSegSlope =计算每个线段的斜率
从所讨论的与当前线段相交的点画一条假线。这是通过倒置lineSegSlope并乘以-1得到新的斜率,然后将目标点X、Y和新斜率替换为y-y1 =b* (x-x1)。你的X进入x1,你的Y进入Y1,你的newSlope进入B。
为线段建立一个方程。
如果你把这两条线画在一起,它们应该画一个X,每个拐角都是90度。
计算这两条线的交点
计算交点到新点之间的距离。如果它大于某个可容忍的值,那么新的点就太远了。
这看起来很混乱,但希望它能起作用。
https://stackoverflow.com/questions/8917973
复制相似问题