mapbox - 如何从 Mapbox 获取高程剖面数据?

标签 mapbox elevation

我的问题是,如何从 MapBox 服务获取指定路线的海拔剖面图。

在输入中,我们将路径/路线作为坐标数组(纬度、经度)。作为结果,我们想要获得坐标对的数组 - 高程。

如果高程数据的分辨率高于提供的路线坐标,则结果还应包含原始坐标之间的高程数据。路线上的新点将根据高程数据分辨率生成。如果高程数据的分辨率较低,则应从查询点的已知数据中插入高程值。我们希望获得尽可能精确的结果。

作为我们解决方案的数据源,我们希望使用 MapBox 服务。但是,我们没有找到任何针对此特定问题的 MapBox API 文档。我们只找到了对一些 Surface API 的引用,不再支持。

据我们了解,Mapbox 现在以 Terrain-RGB 的格式存储高程数据。 map 瓦片。 我们确定了以下步骤,以便能够使用 MapBox 解决我们的问题:

  1. 将路线坐标解码为最小的 map 图 block 集。
  2. 使用 MapBox API 查询 map 图 block 。
  3. 对于路线的每个坐标,将其映射到特定的图像像素。
  4. 将像素的 RGB 颜色值转换为以米为单位的高程。

这个算法正确吗?我认为,为特定路线生成高程剖面是一个常见问题,是否有任何工具可以开箱即用地为我们的问题提供解决方案,也许是一些 SDK?我们错过了什么吗?非常感谢。

最佳答案

简答

为了您的目标,我建议不要使用 Terrain-RGB 栅格图 block 集。相反,您应该使用 Tilequery APIMapbox Terrain v2 检索沿途各点的海拔高度矢量瓦片集。

更长的答案

有两种可能的来源和方法可用于从 Mapbox 检索高程数据,具体选择取决于您的需要。您链接到的故障排除文档中更详细地概述了这两种方法:https://docs.mapbox.com/help/troubleshooting/access-elevation-data/

这是每种方法的tl;dr:

1。从 Terrain-RGB 中检索数据栅格图 block

这是您在原始问题中概述的过程。如果您想准确地设置山体阴影样式或为视频游戏生成 3D 网格,则此方法非常有用。请注意,这种方法不太适合查找特定纬度/经度坐标对的高程。

2。从 Mapbox Terrain v2 中检索数据矢量瓷砖

此过程要求您为沿途的每个点请求海拔高度。您可以通过向 Mapbox Tilequery API 发出请求来执行此操作.关于需要在路线坐标之间插入坐标的观点,您可以使用 Turf.js library to "explode" your line geometry成一组坐标对,然后一次一个地传递给 Tilequery API。最重要的是,您可以通过 parsing the response 从瓦片集中检索正确的高程数据。您从 API 请求中收到。


⚠️ 免责声明:我目前在 Mapbox 工作 ⚠️

关于mapbox - 如何从 Mapbox 获取高程剖面数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56078658/

相关文章:

swift - 如何使用 Mabox 和 Swift 检索我下载的离线 map 包的列表?

ios - 室内导航(也许是 MapBox?)

android - 如何在 map 上显示比例尺和缩放控件?

android - 高程不适用于协调器布局中的 BottomSheet

camera - 使用VTK相机功能提升的问题

javascript - 传单:如何一次关闭或打开所有图层?

javascript - 悬停时不在屏幕上显示 id

java - 显示 3D 地形 Mapbox v10 Android

javascript - Mapbox gl js等高线+高程

64 位 UAC 提升的 Delphi list