2013-06-06 6 views
2

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

Я сначала перевести файл из формата в формат 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, я вижу, что черепица меняет места. См. Изображение ниже. Я тяну свои волосы, чтобы выровнять плитки. Я предполагаю, что это ошибка проектирования. Я не понимаю эти проекционные типы. Было бы здорово, что кто-то может объяснить это, обнаружив ошибку. Я планирую использовать на tiling maps/charts app вот так. Кстати, на GDAL, как мне указать файл BSB (reference), связанный с файлом KAP (data)? Я видел случаи, когда только один файл BSB ссылался на несколько файлов KAP.

Gdal2tiles swapped tiles

ответ

3

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

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

Google XYZ vs TMS - the flipped Y coordinates in map tiles

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

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

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

Ваш второй вопрос был о MBTiles. У утилиты mbutil есть параметр «--scheme tms», который позволяет создать файл MBTiles из фрагментов, обработанных gdal2tiles.py.

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

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