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

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

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

Сообщение bolotoved » 30 май 2011, 22:59

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

stopa85

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

Сообщение stopa85 » 31 май 2011, 10:05

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

Я бы смог это запрограммировать на С++, вероятно на Python'е будет даже проще. Если сами не программируете, то Вам, конечно, это не поможет и нужо искать подрядчика.

Voltron
Гуру
Сообщения: 2627
Зарегистрирован: 29 мар 2007, 14:12
Репутация: 34
Откуда: Ukraine

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

Сообщение Voltron » 31 май 2011, 10:08

Если правильно понял задачу, то алгоритм будет примерно такой:
  • получить список видов
  • организовать цикл по этому списку
  • при помощи запроса отбирать очередной вид
  • формировать карту и сохранять ее либо в графический файл либо сразу в PDF. При желании к карте можно добавить подпись с названием вида из атрибутивной таблицы.
Это можно оформить как в виде скрипта, так и в виде расширения.

bolotoved
Гуру
Сообщения: 920
Зарегистрирован: 30 дек 2008, 14:11
Репутация: 236
Откуда: Ханты-Мансийск
Контактная информация:

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

Сообщение bolotoved » 31 май 2011, 11:02

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

Voltron
Для начала можно было бы сделать в виде скрипта. Посмотреть, что будет получаться. Если штука окажется полезной, можно подумать и о расширении. Вопрос такой: на сколько создание такого скрипта трудоемко? Могу ли я, не имея особых навыков в программировании, потренироваться на этом примере, или это достаточно сложная задача и браться не стоит?

Voltron
Гуру
Сообщения: 2627
Зарегистрирован: 29 мар 2007, 14:12
Репутация: 34
Откуда: Ukraine

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

Сообщение Voltron » 31 май 2011, 11:30

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

ericsson
Гуру
Сообщения: 3321
Зарегистрирован: 27 июл 2009, 19:26
Репутация: 748
Ваше звание: Вредитель полей

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

Сообщение ericsson » 31 май 2011, 11:44

Эх, а вот в GlobalMapper как раз практически на такой случай есть удобная фича - разбивка слоя на новые на основании выбранных атрибутов.

Voltron
Гуру
Сообщения: 2627
Зарегистрирован: 29 мар 2007, 14:12
Репутация: 34
Откуда: Ukraine

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

Сообщение Voltron » 31 май 2011, 11:52

ericsson писал(а):Эх, а вот в GlobalMapper как раз практически на такой случай есть удобная фича - разбивка слоя на новые на основании выбранных атрибутов.
И? В QGIS разбить слой тоже можно. Просто нужны не слои, а печатные карты, к тому же исходный слой постоянно обновляется. Не будете же вы на каждый чих создавать 100500 слоев и потом вручную для каждого из них печатать карту

bolotoved
Гуру
Сообщения: 920
Зарегистрирован: 30 дек 2008, 14:11
Репутация: 236
Откуда: Ханты-Мансийск
Контактная информация:

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

Сообщение bolotoved » 31 май 2011, 12:09

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

ericsson
Гуру
Сообщения: 3321
Зарегистрирован: 27 июл 2009, 19:26
Репутация: 748
Ваше звание: Вредитель полей

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

Сообщение ericsson » 31 май 2011, 12:16

Ну в GM тоже есть скриптовый язык и batch-конвертер (в т.ч. в искомый PDF), а вообще, сделав экспорт в отдельные шейпы, дальше gdal_rasterize никто не отменял.

Voltron
Гуру
Сообщения: 2627
Зарегистрирован: 29 мар 2007, 14:12
Репутация: 34
Откуда: Ukraine

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

Сообщение Voltron » 31 май 2011, 12:32

bolotoved писал(а):Спешить нам не куда. Каким образом подаются заявки на расширение функционала API?
Создать тикет в trac и периодически пинать разработчиков в списке рассылки и IRC :-).
bolotoved писал(а):В принципе, наверное, можно синтезировать результирующий растр из растеризованного шаблона и растра генерируемого скриптом из точек, при условии, что все значения растра за пределами значков точек будут равны 0.
Можно и так, только я бы все же использовал компоновку. Создать ее программно по имеющемуся образцу не сложно, тем более сделать это надо будет один раз, а потом просто использовать ее для вывода. Еще можно самостоятельно написать загрузку шаблона, взяв за основу существущий код из ядра

Voltron
Гуру
Сообщения: 2627
Зарегистрирован: 29 мар 2007, 14:12
Репутация: 34
Откуда: Ukraine

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

Сообщение Voltron » 31 май 2011, 12:34

ericsson писал(а):Ну в GM тоже есть скриптовый язык и batch-конвертер (в т.ч. в искомый PDF), а вообще, сделав экспорт в отдельные шейпы, дальше gdal_rasterize никто не отменял.
Стрелку севера, масштабную линейку и подписи gdal_rasterize не нарисует. За GM не знаю

ericsson
Гуру
Сообщения: 3321
Зарегистрирован: 27 июл 2009, 19:26
Репутация: 748
Ваше звание: Вредитель полей

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

Сообщение ericsson » 31 май 2011, 12:40

GM - нарисует.
Через GDAL масштабную линейку и стрелку организовать тоже можно при некоторой ловкости рук, хотя это и не очень удобно, согласен.

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9129
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 748
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

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

Сообщение Максим Дубинин » 31 май 2011, 12:47

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

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

принцип похожий, но для компоновок нужно делать как написал Voltron.
пристегивайтесь, турбулентность прямо по курсу

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

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

Сообщение Александр Мурый » 31 май 2011, 15:25

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

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

Ответить

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

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

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