Генерация MapTiles из файлов BSB/KAP с использованием GDAL2Tiles

В качестве примера у меня есть файл BSB от NOAA, который является навигационной картой. Карта имеет SRS WGS84 и проекцию Меркатора.

Сначала я перевожу файл из формата BSB в формат GTiff, используя следующую команду:

 gdal_translate -of GTiff 18554_1.kap noaa.tif

Я могу просмотреть этот файл GTiff с помощью Paint Shop Pro довольно хорошо. Затем я перевожу файл из формата GTiff в формат VRT, используя следующую команду:

 gdal_translate -of vrt –expand rgba noaa.tif noaa.vrt

Затем я пытаюсь сгенерировать набор матриц тайлов с помощью следующей команды:

 gdal2tiles.py noaa.vrt tiles_folder

Где плитки карты расположены в плитке_папки. Если я попытаюсь открыть openmaps.html или google.html, карта будет увеличиваться и уменьшаться. Тем не менее, на генераторе плиток, таких как MBTiles, я вижу своп тайлов. Смотрите изображение ниже. Я стаскиваю волосы, чтобы выровнять плитки. Я предполагаю, что это ошибка проекции. Я не понимаю эти типы проекций. Было бы здорово, если бы кто-то смог это объяснить, найдя ошибку. Я планирую использовать в приложении для составления карт / диаграмм, как это. Кстати, на GDAL, как мне указать файл BSB (ссылка), который связан с файлом KAP (данные)? Я видел случаи, когда только один файл BSB ссылался на несколько файлов KAP.

Gdal2tiles поменялись плиткой

1 ответ

С проекцией карты проблем нет, но плитки обрезаются в соответствии с нотацией TMS (с плиткой [0,0] внизу слева) в GDAL2Tiles. Некоторые инструменты ожидают нотацию Google XYZ (с плиткой [0,0] в верхнем левом углу). В остальном плитки равны, они просто перевернули координату Y в имени файла.

Посмотри на это:

Google XYZ vs TMS - перевернутые координаты Y в тайлах карты

Я подготовил веб-сайт, который визуально показывает разницу, а также объясняет проблему. Посмотри на:

http://www.maptiler.org/google-maps-coordinates-tile-bounds-projection/

Существует также исходный код для расчета плитки и всех координат. Это часть GDAL2Tiles, которые вы упомянули выше - это код, который я создал несколько лет назад.

Ваш второй вопрос был о MBTiles. Утилита mbutil имеет параметр "--scheme tms", который позволяет создавать файл MBTiles из плиток, отображаемых с помощью gdal2tiles.py.

GDAL читает только файл KAP, где каждый представляет карту на листе (на случай, если есть вставки).

Кстати, вы знаете, что есть http://www.maptiler.com/ который решает проблемы, упомянутые выше напрямую? Вы можете просто перетащить и перетащить в GUI или передать в командной строке файл KAP, как он есть, и выбрать, хотите ли вы плитки в каталоге или MBTiles, и он будет непосредственно отображать вывод. Плитки также оптимизируются напрямую, есть поддержка рендеринга нескольких входных файлов в один слой, и рендеринг на порядок быстрее, чем с GDAL2Tiles.

Другие вопросы по тегам