Создайте общедоступную среду для построения и просмотра фрагментов изображений
Контейнеры разработки позволяют разработчикам работать в общих средах, настроенных в соответствии с потребностями их проектов. Вот шаги, которые я предпринял для создания контейнера разработки для создания фрагментов карты для использования в моих веб-приложениях.
Конфигурация контейнера разработки
Я начал новый проект «плиточный контейнер» в VS Code. Он состоит из папки .devcontainer, а также папок для наших входных изображений и выходных плиток. Папка с изображениями начинается с одного изображения — образца GeoTiff из Чикаго, который я нашел в Интернете. Вот как наш проект выглядит на данный момент.
Папка .devcontainer содержит определение нашего контейнера разработки. Он определяет базовое изображение, содержащее необходимые нам инструменты и библиотеки, а также расширение (Live Server) для обслуживания HTML-страницы. Мы также используем этот файл для объявления нашей начальной оболочки терминала.
{ "name": "GDAL", "image": "thinkwhere/gdal-python:latest", "extensions": [ "ritwickdey.LiveServer" ], "settings": { "terminal.integrated.shell.linux": "/bin/bash" } }
Затем нам нужно установить пакет удаленной разработки Visual Studio Code. Этот плагин позволяет нам открывать проекты в новых средах, включая контейнеры, даже если они выполняются локально. На самом деле мы можем использовать его для запуска указанного нами контейнера и использовать его в качестве среды для нашего проекта. Сделайте это, щелкнув новый значок ›‹ в левом нижнем углу или нажав Ctrl-Shift-P (или Cmd-Shift-P), чтобы открыть палитру команд. В любом случае вы выберете «Повторно открыть в контейнере». Затем VS Code запустит запуск контейнера и повторно откроет ваш проект внутри него. Да — вам нужно установить Docker в вашей системе, чтобы запустить контейнер.
Как только проект будет открыт внутри нашего контейнера, вы можете открыть терминал и найти инструменты GDAL, готовые к использованию. Например, вот вариант справки для gdal2tiles.py:
ГДАЛ
GDAL — это инструмент, который мы будем использовать для фактического создания плиток. Наш базовый образ включает скрипты Python для удобного выполнения его популярных функций, в том числе скрипт gdal2tiles.py, на котором мы сосредоточимся. В этом случае мы хотим взять образец GeoTiff и разбить его на фрагменты карты. GDAL принимает множество аргументов командной строки, он может даже работать с изменяющимися проекциями. Однако в нашем примере мы будем действовать довольно просто. Вот команда для создания наших тайлов.
gdal2tiles.py -v --zoom=5-12 -w leaflet images/SP27GTIF.tiff tiles/chicago/
Флаг -v запрашивает подробный вывод. С опцией масштабирования мы устанавливаем уровни масштабирования, для которых хотим создавать плитки. Аргумент -w сообщает gdal2tiles.py, что мы также хотели бы создать образец HTML-файла для просмотра плиток.
Визуализация
Хотя вы можете использовать эту среду для создания своего пользовательского интерфейса, мы пока пойдем кратчайшим путем и воспользуемся образцом средства просмотра, созданным GDAL на предыдущем шаге. Он поддерживает несколько распространенных картографических библиотек JavaScript, включая Leaflet, OpenLayers и Google Maps. Поскольку мы выбрали Leaflet, результирующая карта выглядит так, когда мы размещаем файл с расширением Live Server, которое мы настроили ранее.
Вы можете видеть, что наши изображения Чикаго показаны в виде наложения поверх нашей базовой карты. Увеличение и уменьшение масштаба регулирует размер и положение различных плиток, которые просто служат статическими ресурсами.
На практике вы, вероятно, захотите создать собственное приложение для визуализации и использовать для этого другой базовый образ. Вы можете создать свой собственный образ, который включает инструменты и библиотеки, необходимые для создания предпочитаемого вами веб-приложения.
Заключение
Всего за несколько простых шагов настройки мы можем создать среду разработки, позволяющую всем членам нашей команды быстро работать с одними и теми же инструментами. Благодаря использованию контейнеров это делается без необходимости самостоятельно находить, устанавливать и настраивать все эти инструменты.