Существует возможность использования QGIS для «создания» карты для MapServer путем добавления и распределения слоев, нанесения обозначений и определения цветов.
Примечание
Модуль работает только со «старой» символикой. «Новая» символика в настоящее время не поддерживается.
Модуль «MapServer Export» оперирует с сохраненным проектом QGIS, а не с текущим содержимым окна с картой и легендой слоев. У многих пользователей это вызвало значительное замешательство. Как описано ниже, перед тем, как использовать модуль экспорта, требуется предварительное распределение растровых и векторных слоев, которые нужно использовать в MapServer, и последующее сохранение в файле проекта QGIS.
Figure Mapserver Export 1:
В этом примере будут продемонстрированы четыре этапа, необходимых для создания простого проекта, из которого получится карта для MapServer. Будут использованы растровые и векторные файлы из демонстрационного набора данных QGIS Примеры данных.
Добавьте растровый слой landcover.tif, нажав на иконку Добавить растровый слой.
Добавьте векторные shape-файлы lakes.shp, majrivers.shp`и :file:`airports.shp из демонстрационного набора данных QGIS, нажав на иконку Добавить векторный слой.
Измените цвета и вид представления данных по вашему усмотрению (к примеру, см. рисунок figure_mapserver_export_1)
Сохраните новый проект под названием mapserverproject.qgs используя меню Файл ‣ Сохранить проект.
Чтобы воспользоваться модулем «MapServer Export», его нужно сначала активировать через Менджер модулей (см. раздел Загрузка основных модулей QGIS).
Figure Mapserver Export 2:
Файл карты |
Введите название для создаваемого map-файла. Можно воспользоваться кнопкой справа для перехода в директорию, где требуется сохранить файл карты. |
Файл проекта Qgis |
Введите полный путь к экспортируемому файлу проекта QGIS (.qgs). Можно воспользоваться кнопкой слева для перехода к файлу проекта QGIS. |
Имя карты |
Название карты. Это название будет ставиться в начало названий всех изображений, созданных в MapServer. |
Ширина карты |
Ширина выходного изображения в пикселах. |
Высота карты |
Высота выходного изображения в пикселах. |
Единицы карты |
Единицы измерения, используемые для выходного изображения. |
Формат изображения |
Формат выходного изображения, созданного в MapServer. |
Шаблон |
Полный путь к файлу шаблона MapServer, применяемого к map-файлу. |
Верхний колонтитул |
Полный путь к файлу верхнего колонтитула MapServer, используемому с map-файлом. |
Нижний колонтитул |
Полный путь к файлу нижнего колонтитула MapServer, используемому с map-файлом. |
Для создания map-файла необходимы лишь Файл карты и Файл проекта QGIS, тем не менее, опуская другие параметры, можно получить нефункциональный map-файл. Хотя QGIS отлично создает map-файлы из предоставленных проектов, вполне возможно, что понадобится некоторая настройка для получения нужных результатов. К примеру, мы создали map-файл, использовав файл проекта mapserverproject.qgs, который только что создали (см. рисунок Figure_mapserver_export_2):
После нажатия на иконку Экспорт в MapServer на панели инструментов, запустится диалогое окно (см. рисунок Figure_mapserver_export_2).
Введите название (например, qgisproject.map) для нового map-файла.
Перейдите и найдите файл проекта QGIS (например, mapserverproject.qgs), который перед этим сохранили.
Введите название (к примеру, MyMap).
Введите ширину и высоту (к примеру, 600 в качестве ширины и 400 — высоты) для результирующего изображения.
В данном примере слои измеряются в метрах, потому единицы измерения выставляются в метрах.
Выберите «png» в качестве формата изображения.
Нажмите кнопку [OK] для того, чтобы создать новый map-файл qgisproject.map. QGIS выведет сообщение об удачном завершении операции.
Figure Mapserver Export 3:
Map-файл можно просмотреть в любом тектовом редакторе или просмотрщике. Если присмотреться, то можно заметить, что инструмент экспортирования добавляет метаданные, нужные для того, чтобы map-файл мог быть задействован в WMS (Web Map Service).
Если вы получаете от MapServer сообщения об ошибках вида:
loadSymbolSet(): Unable to access file. (./symbols/symbols.txt)
или:
msLoadFontset(): Unable to access file. Error opening fontset ./fonts/fonts.txt.
Это значит, что map-файл содержит ссылки на шрифты и значки, которые MapServer не может обнаружить.
Либо закомментируйте в map-файле строки, содержащие эти шрифты/символы (имеет смысл, если необходимые файлы отсутствуют или используются символы из файла symbols.txt). Либо создайте необходимые файлы (см. ниже).
Самый простой fonts.txt имеет вид (т.к. QGIS использует шрифт arial в сгенерированных map-файлах)
# either relative to the map file or a full path:
arial /usr/share/fonts/truetype/msttcorefonts/arial.ttf
Файл symbols.txt в самом простом случае содержит описание одного знака — окружности (т.к. именно этот знак используется QGIS для оформления точечных слоёв)
SYMBOLSET
SYMBOL
NAME "circle"
TYPE ellipse
FILLED true
POINTS
1 1
END
END
END
Теперь можно протестировать результат проделанного.
Если map-файл доступен для чтения MapServer’ом, можно использовать один из адресов, приведенных в сообщении о завершении обработки.
Ещё один способ — использовать инструмент shp2img для создания изображения из map-файла. Утилита shp2img является частью MapServer и набора инструментов FWTools. Для создания изображения из нашей карты необходимо:
Открыть окно консоли
Если map-файл не был сохранен в домашнем каталоге, перейти в директорию, куда он был сохранен.
Выполнить команду shp2img -m qgisproject.map -o mapserver_test.png и открыть изображение.
Будет создан файл PNG, включающий все слои, содержащиеся в файле проекта QGIS. Кроме того, охват файла PNG останется таким же, как и когда проект был сохранен. Как можно увидеть на рисунке figure_mapserver_export_4, вся информация за исключением обозначений аэропортов включена.
Figure Mapserver Export 4:
Если вы планируется использовать map-файл для обработки запросов WMS, скорее всего, не нужно что-либо перенастраивать. Если же планируется использовать его в качестве карты-шаблона или специализированного интерфейса, возможно, понадобится проделать некоторую ручную работу. Чтобы увидеть, насколько быстр переход от QGIS к обработке карт в Сети, рекомендуем посмотреть 5-минутное онлайн-видео от Кристофера Шмидта. Он использовал более старую версию QGIS (0.8), но видео в равной степени отображает функции, присущие новым версиям.