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

kas*_*asi 0 elevation mapbox

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

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

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

作为我们解决方案的数据源,我们想使用MapBox服务。但是,对于该特定问题,我们没有找到任何记录的MapBox API。我们仅找到了一些不再支持的Surface API的引用。

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

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

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

ria*_*rad 6

简短答案

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

更长的答案

有两种可能的来源和方法可用于从Mapbox检索高程数据,而选择实际上取决于您的需求。链接到以下内容的疑难解答文档中对这两种方法进行了详细概述:https : //docs.mapbox.com/help/troubleshooting/access-elevation-data/

这是每种方法的tl; dr

1.从Terrain-RGB 栅格图块中检索数据

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

2.从Mapbox Terrain v2 矢量图块中检索数据

此过程需要您为路线上的每个点请求一个高程。您可以通过向Mapbox Tilequery API发出请求来实现。关于需要在路径坐标之间进行插值的观点,可以使用Turf.js库将线几何“分解为一组坐标对,然后将其一次传递给Tilequery API。最重要的是,您可以通过解析从API请求中收到的响应,从磁贴集中检索正确的海拔数据。


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