我有一个点列表,以及外部提供商通过这些点生成的路线。
我想用我自己的道路网络使用相同的点生成一条路线。
然后我希望能够检测两条路线之间是否有任何显着差异。
一个建议是,对于 2 条路线,我们找出它们经过的路段,然后比较路段列表?
这是一种有效的方法吗?我们如何获取给定路线的路段列表?
我正在使用带有 Java 5 和 Oracle 10g 的 ArcGis 服务器 9.3。我正在通过 java api 使用 ST 函数和 NetworkAnalyst。
谢谢。
使用您的点和道路网络计算路线。然后将生成的路线缓冲成一个多边形(缓冲半径应该是你的“公差”)。然后使用您的多边形剪裁外部路线。如果生成的折线不为空,则偏差超出了您的容差。
此方法不考虑任何“重大”偏差,例如回溯、掉头或走附近的平行道路。
或者,您可以比较生成的“方向”并检查那里的偏差——特别是使用街道名称。这使您无需检查每个路段。如果道路名称有任何偏差,请检查每个路段的各个路段。
我刚刚在我的应用程序中实现了类似的东西。我有一个来自 GPS 设备的纬度/经度坐标列表,需要根据这些数据创建路线。
我首先将每个 GPS 位置与街道网络中的一个节点进行匹配。然后我删除了“连续重复”节点以过滤掉位于同一节点的那些连续位置。然后,我开始在我的街道网络中“行走”,从第一个节点开始。我检查了第一个节点和第二个节点并检查了公共街道段。如果我找到了,那就太好了。如果没有,我会在 2 个节点之间创建一条最短路径,并改用这些路径。我继续这样做,直到我检查了所有节点。在这个过程结束时,我有一个车辆行驶的路段列表以及它们行驶的顺序。
不幸的是,我使用了不同的地图、不同的编程语言和不同的数据库。因此,共享代码对您毫无帮助。希望我上面描述的过程足以帮助您完成任务。