Outdated version of the documentation. Find the latest one here.

Модуль «MapServer Export»

Существует возможность использования QGIS для «создания» карты для MapServer путем добавления и распределения слоев, нанесения обозначений и определения цветов.

Примечание

Модуль работает только со «старой» символикой. «Новая» символика в настоящее время не поддерживается.

Создание файла проекта

Модуль «MapServer Export» оперирует с сохраненным проектом QGIS, а не с текущим содержимым окна с картой и легендой слоев. У многих пользователей это вызвало значительное замешательство. Как описано ниже, перед тем, как использовать модуль экспорта, требуется предварительное распределение растровых и векторных слоев, которые нужно использовать в MapServer, и последующее сохранение в файле проекта QGIS.

Figure Mapserver Export 1:

../../../_images/mapserver_export_qgis.png

Arrange raster and vector layers for QGIS project file nix

В этом примере будут продемонстрированы четыре этапа, необходимых для создания простого проекта, из которого получится карта для MapServer. Будут использованы растровые и векторные файлы из демонстрационного набора данных QGIS Примеры данных.

  1. Добавьте растровый слой landcover.tif, нажав на иконку mActionAddRasterLayer Добавить растровый слой.

  2. Добавьте векторные shape-файлы lakes.shp, majrivers.shp`и :file:`airports.shp из демонстрационного набора данных QGIS, нажав на иконку mActionAddNonDbLayer Добавить векторный слой.

  3. Измените цвета и вид представления данных по вашему усмотрению (к примеру, см. рисунок figure_mapserver_export_1)

  4. Сохраните новый проект под названием mapserverproject.qgs используя меню Файл ‣ mActionFileSave Сохранить проект.

Создание карты

Чтобы воспользоваться модулем «MapServer Export», его нужно сначала активировать через Менджер модулей (см. раздел Загрузка основных модулей QGIS).

Figure Mapserver Export 2:

../../../_images/mapserver_export_dialog.png

Export to MapServer Dialog nix

Файл карты

Введите название для создаваемого 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):

  1. После нажатия на иконку mapserver_export Экспорт в MapServer на панели инструментов, запустится диалогое окно (см. рисунок Figure_mapserver_export_2).

  2. Введите название (например, qgisproject.map) для нового map-файла.

  3. Перейдите и найдите файл проекта QGIS (например, mapserverproject.qgs), который перед этим сохранили.

  4. Введите название (к примеру, MyMap).

  5. Введите ширину и высоту (к примеру, 600 в качестве ширины и 400 — высоты) для результирующего изображения.

  6. В данном примере слои измеряются в метрах, потому единицы измерения выставляются в метрах.

  7. Выберите «png» в качестве формата изображения.

  8. Нажмите кнопку [OK] для того, чтобы создать новый map-файл qgisproject.map. QGIS выведет сообщение об удачном завершении операции.

Figure Mapserver Export 3:

../../../_images/mapserver_export_success.png

Export to MapServer Succesfull Dialog nix

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-файла

Теперь можно протестировать результат проделанного.

Если 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:

../../../_images/mapserver_export_test.png

Test PNG created by shp2img with all MapServer Export layers nix

Использование map-файла

Если вы планируется использовать map-файл для обработки запросов WMS, скорее всего, не нужно что-либо перенастраивать. Если же планируется использовать его в качестве карты-шаблона или специализированного интерфейса, возможно, понадобится проделать некоторую ручную работу. Чтобы увидеть, насколько быстр переход от QGIS к обработке карт в Сети, рекомендуем посмотреть 5-минутное онлайн-видео от Кристофера Шмидта. Он использовал более старую версию QGIS (0.8), но видео в равной степени отображает функции, присущие новым версиям.