Как получить данные профиля высот из Mapbox? - PullRequest
0 голосов
/ 10 мая 2019

У меня вопрос, как получить профиль высоты указанного маршрута из сервиса MapBox .

На входе у нас есть путь / маршрут в виде массива координат (latitute,longitute).В результате мы хотим получить массив пар координата - высота.

Если разрешение данных высот выше, чем предоставленные координаты маршрута, результат должен также содержать данные высот между исходными координатами.Новые точки на маршруте будут генерироваться в соответствии с разрешением данных высот.В случае, если разрешение данных высот ниже, он должен интерполировать значения высот из известных данных для запрашиваемых точек.Мы хотели бы получить максимально точные результаты.

В качестве источника данных для нашего решения мы хотели бы использовать сервис MapBox .Однако мы не нашли никакого документированного MapBox API для этой конкретной проблемы.Мы нашли только ссылки на некоторые Surface API , которые больше не поддерживаются.

Как мы понимаем, Mapbox теперь сохраняет данные высот в формате Terrain-RGB тайлов карты,Мы определили следующие шаги, чтобы решить нашу проблему, используя MapBox :

  1. Декодируйте координаты маршрута в минимальный набор плиток карты.
  2. Запроситесопоставлять плитки с помощью MapBox API .
  3. Для каждой координаты маршрута сопоставьте ее с определенным пикселем изображения.
  4. Переведите значение цвета RGB пикселя в высотув метрах.

Является ли этот алгоритм правильным?Я думаю, что создание профиля высот для определенного маршрута является распространенной проблемой. Существует ли какой-либо инструмент, который обеспечивает решение нашей проблемы из коробки, может быть, какой-то SDK?Мы что-то упустили?Большое спасибо.

1 Ответ

4 голосов
/ 10 мая 2019

Краткий ответ

Для поставленной цели я бы посоветовал , а не , используя набор растровых изображений Terrain-RGB.Вместо этого вам следует использовать API Tilequery , чтобы получить высоту точек вашего маршрута из набора векторных карт Mapbox 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, чтобы "взорвать" вашу геометрию линии в массив пар координат, которые вы затем передаете в API Tilequery по одному ввремя.Самое главное, вы получаете правильные данные высот из набора плиток путем анализа ответа , который вы получаете от запроса API.


la Отказ от ответственности: в настоящее время я работаю в Mapbox ⚠️

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...