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

时间:2019-05-10 13:24:06

标签: mapbox elevation

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

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

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

作为我们解决方案的数据源,我们想使用 MapBox 服务。但是,针对此特定问题,我们找不到任何记录在案的 MapBox API 。我们仅找到对某些Surface API的引用,而不再支持。

据我们了解,Mapbox现在以Terrain-RGB地图图块的格式存储高程数据。 我们确定了以下步骤可以使用 MapBox

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

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

1 个答案:

答案 0 :(得分:3)

简短回答

对于您要实现的目标,我建议您使用Terrain-RGB栅格图块集( not )。相反,您应该使用Tilequery APIMapbox Terrain v2矢量图块集中检索沿路径的点的高程。

更长的答案

有两种可能的来源和方法可用于从Mapbox检索高程数据,而选择实际上取决于您的需求。您已链接到以下问题的疑难解答文档中,对这两种方法进行了更详细的概述:

以下是每种方法的 tl; dr

1。从https://docs.mapbox.com/help/troubleshooting/access-elevation-data/ 栅格图块

中检索数据

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

2。从Terrain-RGB 矢量图块

中检索数据

此过程要求您请求路线上每个点的高程。您可以通过向Mapbox Terrain v2发出请求来实现。关于需要在路径坐标之间进行插值的观点,可以将Mapbox Tilequery API用作一组坐标对,然后将其一次传递给Tilequery API。最重要的是,您从API请求中收到的Turf.js library to "explode" your line geometry可以从图块集中检索正确的海拔数据。


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

工作