点在线上

我目前在做一个车载gps终端定位的模块,其中,有这样一个功能:

从gps获取到车辆的点位信息,然后根据GPS点位信息获取

1.其当前所在位置公路的名称、代码(公路图层已经准备好)、

2.到路段起点的距离

首先解决第一个问题。抽象成点在线上的问题。

mengjing113 (三步两桥)当前离线 提出的解决方案如下:

方案一:

1. 先通过点缓冲获取到道路对象,即是线(看有几条,如只有一条,就认为点是在路上了),如果有n条,再做如下处理。
2.  分别对几条线进行判断:判断点是否在线上(包括判断该点是否是线的节点(vertex),抑或在两个节点之间的连线上),如是,则认为点在线上,退出。
3.  2的情况不满足,就先遍历出线要素的所有节点,把线要素分段,求点到每段的距离,并排序,求出其中的最小距离。
4.  刚才只是对一条道路做的处理,同样,对缓冲区中的其他道路做处理,分别求出最小距离,去最小距离中的最小者,并把该条道路的名称提取出来,认为该点在这条道路上。完毕。

这是目前为止我看到的最好的解决方案,但是此方案技术要求高。

方案二:

我的解决方案如下:

1.GPS生成点图层

2.对点图层和道路图层执行Intersect操作,赋予点图层道路信息

OVER

此方案基本等同于方案一得第一步,优点是简单、快速且上手容易,缺点是不准确,遗留一系列问题。

原文地址:https://www.cnblogs.com/hl3292/p/1836083.html