Я должен сделать большое количество (сотни) карт распространения видов. У меня есть шейп-файл, который содержит распределения для каждого вида, и для каждого я хотел бы получить карту в виде изображения (jpg, png или иным образом), содержащего название соответствующего вида, легенду (чтобы выделить области ежегодные распределения, разведение, разведение и т. д. ...).
Я хотел бы использовать QGIS для этого.
qgis
qgis-processing
map-book
Onesime
источник
источник
Ответы:
У меня было похожее требование и я создал плагин QGIS для генерации карт на основе шейп-файла с точечными местоположениями для всех видов (в качестве общего идентификатора предполагается уникальное имя таксона в таблице атрибутов). Мои требования не были такими сложными - мне не нужна была сезонная информация, названия или легенды, но это может быть полезной отправной точкой для вас. Для более сложных аспектов вам нужно будет использовать составитель карт. Смотрите кулинарную книгу PyQGIS для получения дополнительной информации об этом.
Plugin
Плагин автоматизирует создание карт и позволяет настраивать экстенты, разрешение и другие аспекты. Он применяет тот же стиль к выводу, что и оверлейная сетка. В настоящее время он работает только на разрабатываемой версии QGIS (1.9 или более поздней).
Скрипт Sextante
Прежде чем я сделал плагин, я разработал логику с помощью SEXTANTE. Этот пользовательский скрипт также должен работать в 1.8 (еще не проверял). Файл стиля распространения (.qml) - это стиль выходных распределений (он игнорирует стиль наложения распределения). В настоящее время он размещает выходные карты в каталоге temp на основе значений по умолчанию вашей операционной системы (/ tmp в Linux и различных местах в Windows - определяется переменной среды TEMP). Вы можете довольно легко определить это самостоятельно в коде. Вам также нужно будет отредактировать экстент и выходное разрешение в коде (и цвет фона, если вы хотите другой цвет для моря).
источник
selectbylocation
шаг и добавить дополнительныйselectbyattribute
иsaveselectedfeatures
шаг для каждого сезона (сменитеgrid_layer
наall_localities
). Затем загрузите больше файлов .qml и добавьте свои сезонные шейп-файлы (верхний слой добавляется первым). Если вы не уверены, как, я мог бы попытаться отредактировать сценарий выше, чтобы более или менее работать.Я потратил немного времени, чтобы работать над этим сегодня. Поэтому я внес некоторые изменения в ваш сценарий. Мне не нужно добавлять дополнительный атрибут selectbyattribute и saveselectedfeatures, так как я использую файлы .qml и поле Seasonal находится в одном шейп-файле. Ниже вы можете увидеть, что я сделал:
Если у вас есть какие-либо замечания или советы по его улучшению, не стесняйтесь.
Чтобы улучшить его, лучше всего, когда мы выберем экстент (например, для Европы), он использует этот экстент для выбора только видов, включенных в этот экстент. Это потому, что я получаю карты для всех видов, даже для тех, которые находятся за пределами Европы, например (поэтому у меня много пустых карт). Как вы думаете, это возможно?
Ура,
Onesime
источник