我目前在做一个车载gps终端定位的模块,其中,有这样一个功能:
从gps获取到车辆的点位信息,然后根据GPS点位信息获取
1.其当前所在位置公路的名称、代码(公路图层已经准备好)、
2.到路段起点的距离。
首先解决第一个问题。抽象成点在线上的问题。
mengjing113 (三步两桥)当前离线 提出的解决方案如下:
方案一:
1. 先通过点缓冲获取到道路对象,即是线(看有几条,如只有一条,就认为点是在路上了),如果有n条,再做如下处理。
2. 分别对几条线进行判断:判断点是否在线上(包括判断该点是否是线的节点(vertex),抑或在两个节点之间的连线上),如是,则认为点在线上,退出。
3. 2的情况不满足,就先遍历出线要素的所有节点,把线要素分段,求点到每段的距离,并排序,求出其中的最小距离。
4. 刚才只是对一条道路做的处理,同样,对缓冲区中的其他道路做处理,分别求出最小距离,去最小距离中的最小者,并把该条道路的名称提取出来,认为该点在这条道路上。完毕。
这是目前为止我看到的最好的解决方案,但是此方案技术要求高。
方案二:
我的解决方案如下:
1.GPS生成点图层
2.对点图层和道路图层执行Intersect操作,赋予点图层道路信息
OVER
此方案基本等同于方案一得第一步,优点是简单、快速且上手容易,缺点是不准确,遗留一系列问题。