You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何沿指定道路走向生成有序的城市街道交叉口列表

沿道路走向排序交叉口的实现方案

第一步:数据集预处理

先把原始带坐标的交叉口数据整理成可计算的结构化格式:

  • 每条交叉口记录拆分为3个核心字段:相交道路1名称、相交道路2名称、平面投影坐标(提前把经纬度转成研究城市对应的UTM等平面坐标,不要直接用经纬度算距离、角度,避免球面误差)。
  • 做道路名称归一:把同一条道路的不同写法(比如带“St”“Ave”后缀、带方位词前缀后缀的同路名)映射到唯一道路ID,避免漏匹配同一条路上的交叉口。
  • 给道路名、坐标都加上索引,提升后续查询筛选的速度。

第二步:提取目标道路的所有交叉口

拿到用户输入的起始交叉口(比如Alameda & 5th)和目标行进道路(Alameda)后:

  • 从全量数据里筛选出所有包含目标道路ID的交叉口,组成该道路的交叉口候选集。
  • 做候选集清洗:以起始点坐标为中心做空间聚类,剔除距离起始点过远、和其他候选点空间上不连续的点——这些点一般是城市其他区域的重名道路上的交叉口,不属于当前要排序的连续路段。

第三步:沿道路走向排序(核心环节)

根据你手里有的基础数据,选对应方案即可:

方案1:能拿到道路中心线矢量数据(优先选,准确率最高)

常规城市开放数据平台一般都会提供全市道路中心线矢量,不需要自己绘制:

  • 先提取目标道路对应的中心线要素,把多段断开的同路中心线拼接成连续的折线,修正拓扑错误。
  • 把候选集里的所有交叉口做「点到线的最近邻投影」,计算每个点在这条中心线上的线性里程(即从道路任意一端起点出发,沿道路行走到达该点的累计长度)。
  • 找到起始交叉口对应的里程值,沿着里程增大、减小两个方向分别对所有交叉口按里程值排序,就得到两个行进方向上从近到远的交叉口序列,不管相交道路是编号路还是专有命名路都能正确排序。

方案2:仅持有交叉口坐标点,无道路线数据

用空间递推追踪的方式排序,不需要额外数据:

  • 先在候选集里找到离起始交叉口最近的2个点,这两个点就是道路两个走向的第一个相邻节点,分别计算起始点到这两个点连线的方位角,作为两个方向的初始走向。
  • 从每个方向的第一个相邻点开始递推:每次找剩余未分配的候选点里,满足「当前点到候选点的连线方位角,和当前路段走向的方位角差值小于15°(阈值可根据城市路网密度调整,密路网可以设得更小)、且空间距离最近」的点,作为该方向的下一个交叉口;同时把当前路段走向更新为上一段连线的方位角,重复这个过程直到所有连续路段上的点都被分配完。
  • 把起始点和两个方向递推得到的点序列按顺序拼接,就得到完整的有序交叉口列表。

第四步:结果校验

  • 排查序列里相邻交叉口的间距,如果间距超过城市街区的合理阈值(一般城区街区边长在50-2000米区间),说明序列里串入了其他重名道路的点,剔除异常点后重新递推即可。
  • 最终直接按顺序输出纯文本的交叉口列表即可,不需要做地图可视化。

内容的提问来源于stack exchange,提问作者SimplePi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 13:57:11