Пакетное создание карт ареалов

Вопросы по свободной ГИС QGIS. Сообщения об ошибках, предложения по улучшению, локализация.
Ответить
bolotoved
Гуру
Сообщения: 920
Зарегистрирован: 30 дек 2008, 14:11
Репутация: 236
Откуда: Ханты-Мансийск
Контактная информация:

Пакетное создание карт ареалов

Сообщение bolotoved »

Задача:
1. Есть шейп в атрибутивной таблице которого содержится набор видов (порядка нескольких сотен) и точки их местонахождений (на каждый вид приходится от 1 до нескольких сотен местонахождений).
2. Есть настроенный в QGIS картографический проект-шаблон.
Нужно:
Автоматически сгенерировать карты-схемы точек местонахождения отдельных видов в виде графических файлов и сохранить все это добро в папку.
Совсем хорошо было бы -- вставить полученные карты схемы в Word или PDF c подписями, какому виду какая карта соответствует.
Это вообще возможно? Если алгоритм сразу не ясен, то подскажите, пожалуйста, в какую сторону копать.
stopa85

Re: Пакетное создание карт ареалов

Сообщение stopa85 »

Я так понимаю, что из вашего шейпа нужно выбрать точки соответствующий одному виду, подобрать охват карты и сохранить ее в Word и/или pdf. Проблема в том что видов много не хочеться все это делать в ручную. Нужно автоматизировать. Нажал кнопку, поставил галочки и получил 100 word-файлов.

Я бы смог это запрограммировать на С++, вероятно на Python'е будет даже проще. Если сами не программируете, то Вам, конечно, это не поможет и нужо искать подрядчика.
Voltron
Гуру
Сообщения: 2627
Зарегистрирован: 29 мар 2007, 14:12
Репутация: 34
Откуда: Ukraine

Re: Пакетное создание карт ареалов

Сообщение Voltron »

Если правильно понял задачу, то алгоритм будет примерно такой:
  • получить список видов
  • организовать цикл по этому списку
  • при помощи запроса отбирать очередной вид
  • формировать карту и сохранять ее либо в графический файл либо сразу в PDF. При желании к карте можно добавить подпись с названием вида из атрибутивной таблицы.
Это можно оформить как в виде скрипта, так и в виде расширения.
bolotoved
Гуру
Сообщения: 920
Зарегистрирован: 30 дек 2008, 14:11
Репутация: 236
Откуда: Ханты-Мансийск
Контактная информация:

Re: Пакетное создание карт ареалов

Сообщение bolotoved »

stopa85
Подбирать охват карты не нужно. Точки нужно рисовать на уже заранее настроенной карте, чтобы все было единообразно.
stopa85 писал(а):Проблема в том что видов много не хочеться все это делать в ручную. Нужно автоматизировать. Нажал кнопку, поставил галочки и получил 100 word-файлов.
Ну да, типа того, и кроме этого автоматизация нужна постольку, поскольку шейп постоянно редактируется, вносятся новые точки и нужно периодически делать срез данных на текущее состояние.

Voltron
Для начала можно было бы сделать в виде скрипта. Посмотреть, что будет получаться. Если штука окажется полезной, можно подумать и о расширении. Вопрос такой: на сколько создание такого скрипта трудоемко? Могу ли я, не имея особых навыков в программировании, потренироваться на этом примере, или это достаточно сложная задача и браться не стоит?
Voltron
Гуру
Сообщения: 2627
Зарегистрирован: 29 мар 2007, 14:12
Репутация: 34
Откуда: Ukraine

Re: Пакетное создание карт ареалов

Сообщение Voltron »

bolotoved писал(а):Вопрос такой: на сколько создание такого скрипта трудоемко? Могу ли я, не имея особых навыков в программировании, потренироваться на этом примере, или это достаточно сложная задача и браться не стоит?
Думаю, что не сильно сложно, тем более теперь есть неплохое руководство по использованию PyQGIS на русском языке. Только тут надо учитывать один момент — в Python API пока отсутствует возможность загрузки компоновок из шаблона, ее нужно будет создавать программно. Ну или попросить кого-нибудь добавить недостающий функционал в API, но тогда скрипт будет работать только начиная с определенной версии.
ericsson
Гуру
Сообщения: 3321
Зарегистрирован: 27 июл 2009, 19:26
Репутация: 748
Ваше звание: Вредитель полей

Re: Пакетное создание карт ареалов

Сообщение ericsson »

Эх, а вот в GlobalMapper как раз практически на такой случай есть удобная фича - разбивка слоя на новые на основании выбранных атрибутов.
Voltron
Гуру
Сообщения: 2627
Зарегистрирован: 29 мар 2007, 14:12
Репутация: 34
Откуда: Ukraine

Re: Пакетное создание карт ареалов

Сообщение Voltron »

ericsson писал(а):Эх, а вот в GlobalMapper как раз практически на такой случай есть удобная фича - разбивка слоя на новые на основании выбранных атрибутов.
И? В QGIS разбить слой тоже можно. Просто нужны не слои, а печатные карты, к тому же исходный слой постоянно обновляется. Не будете же вы на каждый чих создавать 100500 слоев и потом вручную для каждого из них печатать карту
bolotoved
Гуру
Сообщения: 920
Зарегистрирован: 30 дек 2008, 14:11
Репутация: 236
Откуда: Ханты-Мансийск
Контактная информация:

Re: Пакетное создание карт ареалов

Сообщение bolotoved »

Voltron писал(а):в Python API пока отсутствует возможность загрузки компоновок из шаблона, ее нужно будет создавать программно. Ну или попросить кого-нибудь добавить недостающий функционал в API, но тогда скрипт будет работать только начиная с определенной версии.
Спешить нам не куда. Каким образом подаются заявки на расширение функционала API?
---
В принципе, наверное, можно синтезировать результирующий растр из растеризованного шаблона и растра генерируемого скриптом из точек, при условии, что все значения растра за пределами значков точек будут равны 0.
ericsson
Гуру
Сообщения: 3321
Зарегистрирован: 27 июл 2009, 19:26
Репутация: 748
Ваше звание: Вредитель полей

Re: Пакетное создание карт ареалов

Сообщение ericsson »

Ну в GM тоже есть скриптовый язык и batch-конвертер (в т.ч. в искомый PDF), а вообще, сделав экспорт в отдельные шейпы, дальше gdal_rasterize никто не отменял.
Voltron
Гуру
Сообщения: 2627
Зарегистрирован: 29 мар 2007, 14:12
Репутация: 34
Откуда: Ukraine

Re: Пакетное создание карт ареалов

Сообщение Voltron »

bolotoved писал(а):Спешить нам не куда. Каким образом подаются заявки на расширение функционала API?
Создать тикет в trac и периодически пинать разработчиков в списке рассылки и IRC :-).
bolotoved писал(а):В принципе, наверное, можно синтезировать результирующий растр из растеризованного шаблона и растра генерируемого скриптом из точек, при условии, что все значения растра за пределами значков точек будут равны 0.
Можно и так, только я бы все же использовал компоновку. Создать ее программно по имеющемуся образцу не сложно, тем более сделать это надо будет один раз, а потом просто использовать ее для вывода. Еще можно самостоятельно написать загрузку шаблона, взяв за основу существущий код из ядра
Voltron
Гуру
Сообщения: 2627
Зарегистрирован: 29 мар 2007, 14:12
Репутация: 34
Откуда: Ukraine

Re: Пакетное создание карт ареалов

Сообщение Voltron »

ericsson писал(а):Ну в GM тоже есть скриптовый язык и batch-конвертер (в т.ч. в искомый PDF), а вообще, сделав экспорт в отдельные шейпы, дальше gdal_rasterize никто не отменял.
Стрелку севера, масштабную линейку и подписи gdal_rasterize не нарисует. За GM не знаю
ericsson
Гуру
Сообщения: 3321
Зарегистрирован: 27 июл 2009, 19:26
Репутация: 748
Ваше звание: Вредитель полей

Re: Пакетное создание карт ареалов

Сообщение ericsson »

GM - нарисует.
Через GDAL масштабную линейку и стрелку организовать тоже можно при некоторой ловкости рук, хотя это и не очень удобно, согласен.
Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9129
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 748
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Пакетное создание карт ареалов

Сообщение Максим Дубинин »

вопрос в форуме про QGIS, давайте не проводить здесь сравнения софта.

bolotoved, см. проекты автоматически генерируемые на базе мастер-проекта для регионов из данных OSM
http://gis-lab.info/qa/osm-qgis-projects.html

принцип похожий, но для компоновок нужно делать как написал Voltron.
пристегивайтесь, турбулентность прямо по курсу
Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 792
Ваше звание: званий не имею
Откуда: Москва

Re: Пакетное создание карт ареалов

Сообщение Александр Мурый »

давайте не проводить здесь сравнения софта

Прощу прощения, что не про QGIS, но описанное (если я его правильно понял) довольно просто делается в GRASS в модуле для вывода карт ps.map. Сделать для каждого вида (запрос "where") точку с символом в виде выбранного граф.файла (EPS-файл). Главное --- ничего не надо программировать (единственное -- грамотно запихнуть данные в грассовский набор). На выходе -- качественный PostScript (можно потом сделать PDF или растр типа PNG).
Редактор материалов, модератор форума
Ответить

Вернуться в «QGIS»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя