Как использовать растровый файл AWS S3 в Mapbox gl js?

#html #amazon-s3 #mapbox #mapbox-gl-js #mapbox-gl

#HTML #amazon-s3 #mapbox #mapbox-gl-js #mapbox-gl

Вопрос:

Отображение оптимизированного для облака растрового слоя Geotiff в Mapbox GL JS

Я думаю, что я использую источник растра, исходные данные должны быть выложены плиткой. URL-адрес будет выглядеть .../{z}/{x}/{y}.tif так.

Но я не знаю, как создать указанный выше URL. как создать URL-адрес??

Ответ №1:

Я не совсем уверен, о чем вы спрашиваете. Если вы спрашиваете: «Как мне превратить этот GeoTIFF в плиточный источник растра», есть два варианта:

  1. Загрузите его в Mapbox. (Теоретически это работает, хотя для меня это не всегда было успешным.)
  2. Используйте GDAL для его преобразования mbtiles , затем разместите .mbtiles файл где-нибудь (либо на Mapbox, CloudTiler, либо на вашем собственном хостинге).

В последнем случае это будет выглядеть так:

gdal_translate myfile.tif mytiles.mbtiles

Комментарии:

1. Возможно ли это без использования mbtile и без загрузки в mapbox?

2. Я просто хочу наложить свой файл cog на базовую карту в качестве источника растровой плитки, а не изображения.

3. Вы спрашиваете: «Могу ли я использовать источник растровых листов без каких-либо растровых листов?» Для меня это не имеет смысла.

Ответ №2:

Mapbox SDK хочет извлекать фрагменты по Z / X / Y. Тем не менее, вы, вероятно, можете зарегистрировать подкласс NSURLProtocol, где вы можете взять URL-адрес Z / X / Y и создать соответствующий запрос COG, преобразовать изображение и вернуть правильное содержимое.

Я использовал это для регистрации mbtiles:// в качестве схемы URL, а мой подкласс NSURLProtocol преобразует URL-адрес Z / X / Y в оператор SQLite select.

Вы можете прочитать больше по этому вопросу на https://github.com/mapbox/mapbox-gl-native/issues/12026