Я работаю над приложением, которое должно создавать плитки (jpeg) из заданного набора растровых данных. Сначала я хотел использовать gdal2tiles.py, но его производительность, похоже, можно улучшить.
Это заставляет меня задать следующий вопрос: Какой самый быстрый способ вырезать «мозаичное изображение» из набора растровых данных с использованием GDAL? И под «плиточным изображением» я подразумеваю просто JPEG или PNG.
В моем прототипе я использую привязки MapServer C # MapScript для выполнения этой работы. То есть я создаю объект карты, перебираю все границы листов, которые мне нужно вырезать, устанавливаю экстент объектов карты, а затем сохраняю полученное изображение. Производительность этого подхода значительно выше, чем у gdal2tiles.py, но мне интересно, использую ли я GDAL напрямую, если не смогу сделать его еще быстрее. Кто-нибудь может предложить аналогичный рабочий процесс с методами GDAL?
РЕДАКТИРОВАТЬ: После некоторых исследований сегодня, я нашел ответ прямо перед собой. Если вы загрузили FWTools, папки csharp \ apps содержат ряд классов для демонстрации привязок C # GDAL. В моем случае GDALRead.cs и GDALReadDirect.cs были тем, что я искал.
Ответы:
Кто-то потратил время на то, чтобы gdal2tiles.py использовал несколько процессоров: параллельный gdal
Я использовал это, и это, кажется, работает. Он успешно использует все 4 ядра до 100% и сокращает общее время создания тайлов до 1/4 от первоначального времени.
источник
Ты пробовал это? http://www.klokan.cz/projects/gdal2tiles/
источник
В моей компании мы писали пользовательские скрипты на python, используя gdal_warp (это было до того, как мы узнали, что gdal2tiles существует). Это было быстрее, чем g2t, особенно когда мы переписали его для работы на многих ядрах (используя python threadpool). Кроме того, он производил плитки более высокого качества (интерполяция Ланцоша на g2t, кажется, работает плохо, в gdal_warp получающиеся плитки были удивительными).
Для написания сценариев требуется немного усилий, вам нужно вручную рассчитать результирующие ограничивающие рамки, настроить некоторые параметры для проекций и т. Д.
источник
MapCruncher
http://research.microsoft.com/en-us/um/redmond/projects/mapcruncher/
хорошо работает, и это может быть использовано для резки изображений
источник
Другой вариант - использование TileCache (WMS-C). Хотя я никогда не использовал gdal2tiles, я не ожидал, что TileCache принесет улучшенную производительность.
В любом случае, следующие стратегии могут ускорить тайлинг:
источник
Сценарий gdal_tiler.py из http://code.google.com/p/tilers-tools может быть полезным вариантом.
Обычно он показывает очень хорошую производительность по сравнению с gdal2tiles.py и должен работать с любым источником GDAL (набор данных), в частности, он не требует преобразования набора данных источника в RGB.
источник
Gdal2tiles_parallel https://gitlab.com/GitLabRGI/erdc/geopackage-python Если геопакет или MBTILES, то не требуется Python, который изначально выполняется с помощью gdal_translate.EXE. вам также нужно запустить gdaladdo, чтобы добавить более одного уровня масштабирования. Я также использую Qtiles / Qmetatiles для рабочего стола QGIS. Тем не менее ничто не может конкурировать с Maptiler Pro коммерческого программного обеспечения. Если вам нужна папка тайлов, просто конвертируйте MBTILES в TMS ИЛИ XYZ с помощью Python mbUtil
источник