首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >地理空间路由

地理空间路由
EN

Stack Overflow用户
提问于 2012-01-18 21:49:57
回答 5查看 1.7K关注 0票数 11

我是一名后勤程序员,我被要求弄清楚GPS点是否是“偏离路线”,其中的路线包括许多地理空间点(纬度、经度)。

确定一个点是否在路线附近的最佳算法是什么?我将使用C#和Server,但如果我知道该使用什么算法,那就无关紧要了。

我考虑过

  1. 找出两个最近的点,并确定三角形的面积是否超过一个特定的极限。
  2. 对所有对点使用向量,然后检查它们是否与GPS点定义的向量“相似”,以及我确定的路径中的“下一步”点。

我没有数学学位,但我可能能处理任何给定的正确术语和搜索引擎。

我必须至少每小时进行4000次计算,所以使用映射解决方案可能因为体积而不能被接受。

EN

回答 5

Stack Overflow用户

发布于 2012-01-19 22:26:12

我必须至少每小时进行4000次计算,所以使用映射解决方案可能因为体积而不能被接受。

事实上,这是一个完美的例子,其中映射解决方案将是有益的。不是你传统的“看地图和确定距离”,而是“让数据库决定什么是离你的GPS点最近的路线”。

既然您说您不反对使用不同的数据库,您可以考虑:

  1. 具有空间数据库引擎函数的Server 2008,或
  2. PostgreSQL具有开放源码的PostGIS (空间)扩展,它具有更多的空间分析功能,而MS 2008。

看看PostGIS 距离函数或MS 2008 STDistance函数。这是一个很好的博客条目,它描述了SQL2005与SQL2008的优点。

您还可以考虑在gis.stackexchange上阅读(或询问更详细的映射)帖子。整个小组致力于空间分析。一些好的讨论给你看会是

票数 5
EN

Stack Overflow用户

发布于 2012-01-18 21:57:17

谷歌的"Along-track distance“,你应该找到在航空中常用的公式。或者,cross-track distance也可以是您想要的。

票数 4
EN

Stack Overflow用户

发布于 2012-01-18 22:26:17

下面这个怎么样..。

遍历所有线段

lineSegSlope =计算每个线段的斜率

从所讨论的与当前线段相交的点画一条假线。这是通过倒置lineSegSlope并乘以-1得到新的斜率,然后将目标点X、Y和新斜率替换为y-y1 =b* (x-x1)。你的X进入x1,你的Y进入Y1,你的newSlope进入B。

为线段建立一个方程。

如果你把这两条线画在一起,它们应该画一个X,每个拐角都是90度。

计算这两条线的交点

计算交点到新点之间的距离。如果它大于某个可容忍的值,那么新的点就太远了。

这看起来很混乱,但希望它能起作用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8917973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档