【问题标题】:How to get elevation profile data from Mapbox?如何从 Mapbox 获取高程剖面数据?
【发布时间】:2019-09-28 10:12:44
【问题描述】:

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

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

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

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

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

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

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

【问题讨论】:

    标签: mapbox elevation


    【解决方案1】:

    简答

    对于您心中的目标,我建议不要使用 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 library to "explode" your line geometry 使用到一组坐标对中,然后一次将其传递给 Tilequery API。最重要的是,您从 API 请求中收到的parsing the response 从瓦片集中检索正确的高程数据。


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

    【讨论】:

    • 感谢您的回答。我在 Mapbox Terrain v2 瓦片中查询了等高线图层。 result 显示两个几何对象。它们具有相同的坐标属性,不同的只是索引值。指数值是什么意思?我们如何从这些值中插入高程?还有精度是10米,Terrain-RGB不是更精确吗?
    • 响应中的结果按与您在请求中传递的坐标的接近顺序排列,因此第一个结果通常是您的坐标对所在的等高线多边形的高程。是的,地形图块集只能精确到 10 米。如果您需要更高的精度,那么 Terrain RGB(精度高达 0.1m)将是您的最佳选择 - 但它需要您在原始帖子中概述的更密集的工作流程。
    • @kasi 你有没有实现过这个?我很想看看你的例子。
    • @NoahHuntington,是的,我实现了一些 MVP,它正在工作,但目前,它是不可发布的。尝试在一/两个月后通过 stefan.kasala@kaps.sk 联系我
    猜你喜欢
    • 2019-08-21
    • 2012-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多