【问题标题】:Mapbox: Making a line given two OSM Node IDsMapbox:在给定两个 OSM 节点 ID 的情况下制作一条线
【发布时间】:2018-07-09 06:55:41
【问题描述】:

我有两个 Open Street Map 节点 ID。 MapboxLeaflet 提供的任何 API 是否可以在给定两个节点 ID 的情况下绘制 PolyLineLineString

除了here 之外,我在Mapbox 文档中的任何地方都找不到对OSM IDs 的任何引用,并且它没有详细说明如何为自己使用OSM IDs 在地图上画线。

我要做的是给 2 OSM IDs,我想突出显示连接那些 OSM IDs 的路段。我不能选择像Leaflet routing machine 这样的东西,因为这样的线路数量太多,距离很短。我不能对所有边缘都运行routing

【问题讨论】:

  • 如果您在这里没有得到好的答案,请尝试gis.stackexchange.com
  • 你想要两个 OSM 节点之间的直线,还是沿着道路的折线?
  • @AndrewHarvey A polyline 顺路会更受欢迎
  • 车辆路线是否需要遵循单向或仅遵循最短距离路径?
  • @AndrewHarvey 这条线的路径不是很长。它属于短路段的类型。所以基本上只有一个最短距离。问题是如何绘制它以使其准确地覆盖道路的宽度?换句话说,我正在寻找 mapboxleaflet 功能,它在地图上给出两个点,可以做这样的事情。

标签: leaflet mapbox openstreetmap mapbox-gl-js leaflet-routing-machine


【解决方案1】:

既然您说“我不能选择 Leaflet 布线机之类的东西,因为这样的线路数量太多,距离很短。我无法为所有边缘运行布线。”我排除了所有调用外部路由 API 的解决方案,您可以自己进行内部路由。

  1. 使用OSM Overpass API 获取这些节点的经纬度点
  2. 在 Mapbox GL JS 中 fitBounds 到这两个节点并执行 map.querySourceFeatures 以获取作为 GeoJSON LineStrings 的道路
  3. 然后据此计算网络图,并使用 Dijkstra 算法获得两个 OSM 节点之间的最短路径。

【讨论】:

  • 谢谢!第 2 点(或类似的想法)是我正在寻找的。看来这可能有效。我会尝试并发表评论。
  • 实际上,如果您想使用 OSM 数据并且不介意它并不总是与 Mapbox 底图对齐,您可以使用立交桥而不是查询源功能
  • 我真的希望我的数据与我的 Mapbox 底图相匹配。我目前正在使用立交桥 API 来获取节点坐标。现在唯一剩下的问题是如何连接两个节点(它们是相邻的,因此不需要布线或 Dijkstra),以便连接线具有底层路段的确切宽度。
  • 你是指道路的物理宽度吗?取决于它是在 OSM 中标记还是渲染宽度?在 Mapbox GL 中,您可以使用 tte new setFeatureStates 直接突出显示路段
  • 我的意思是mapbox地图上显示的宽度
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多