Автоматически генерировать изображения карт с разными стилями в QGIS? [закрыто]

9

У меня есть простая карта в QGIS, содержащая только 1 слой, который состоит из 10+ объектов. Теперь мне нужно (программно) сгенерировать около 200 различных изображений карт JPEG в одной и той же области. Каждая карта должна иметь одинаковые экстенты карты и все видимые объекты. Однако объекты должны иметь различный набор цветов на каждой сгенерированной карте. Подробно, у меня есть файл CSV, содержащий классифицированные цвета для каждого объекта (1 строка для каждого изображения, 1 столбец и цвет для объекта), что-то вроде этого:

"A","B","C","D","E","F" (header line, 6 columns in this file)
"#000000","#FF0000","#00FF00","#0000FF","#0000FF","#808080"
"#000000","#FF0000","#FF0000","#00FF00","#00FF00","#808080"
"#FF0000","#FF0000","#000000","#800080","#FFFFFF","#FFFF00"
...

Мой текущий план состоит в том, чтобы использовать Perl или аналогичный для создания 200 различных файлов QML на основе этого файла CSV. Затем я планирую написать скрипт на Python для

  1. Цикл по файлам QML
  2. Откройте каждый файл QML по одному и примените к нему стиль слоя
  3. Открыть компоновщик карт и сохранить файл растрового изображения
  4. Закройте компоновщик карты и перейдите в следующий файл QML

Я сейчас прошу любой вклад, касающийся:

  • Можно ли это сделать в QGIS + Python?
  • Есть ли лучшие способы достичь моей цели?
  • Подсказки на любой существующий исходный код или плагин для достижения этой цели?
Симо А.
источник

Ответы:

21

Это возможно в QGIS без программирования на python, но вам потребуется текущий снимок разработки QGIS 2.6, поскольку он опирается на функции, добавленные с момента выпуска 2.4. Вот необходимые шаги:

  • Настройте слои карты по своему усмотрению (игнорируя раскраску объектов, которые будут иметь динамические цветовые заливки)

  • Создать новый композитор печати. Добавьте элемент композиции в композицию и установите его экстенты по желанию.

  • Импортируйте CSV-файл, содержащий нужные цвета объектов вывода карты

  • В редакторе печати установите импортированный слой CSV в качестве «слоя покрытия атласа» (найдите вкладку «Создание атласа»). (Если вы экспортировали атлас сейчас, вы должны получить 200 копий той же карты ...)

введите описание изображения здесь

  • Затем вам нужно настроить свои функции так, чтобы они стилизовались под цвета, перечисленные в вашем файле CSV. Это делается с помощью кнопки «Свойства, определенные данными» в нижней части вкладки стиля слоя:

введите описание изображения здесь

  • Вам нужно будет пометить свойство «Цвет», а затем нажать кнопку «E», чтобы открыть редактор выражений.

  • Выражение будет примерно таким:

    attribute(  $atlasfeature , 'A' )
    

введите описание изображения здесь

  • По сути, это выражение будет извлекать значение, хранящееся в столбце «A» из текущей функции атласа. Поскольку в вашем случае это значение будет цвета (например, # FF0000), функция будет стилизована с использованием этого цвета. (Это выражение является частью, которая опирается на QGIS> 2.4 - функция «атрибут» была добавлена ​​после выпуска 2.4).

  • Стилизуйте другие элементы аналогичным образом, но при желании используйте столбцы «B», «C», «D» и т. Д.

  • Вернувшись в программу печати, вы можете включить предварительный просмотр атласа (меню «Атлас» -> «Предварительный просмотр атласа») и перемещаться по строкам в файле CSV с помощью стрелок на панели инструментов. Если все выглядит правильно, экспортируйте атлас, используя опции в меню Атлас ... и все готово! Программирование не требуется!

Примеры вывода:

введите описание изображения здесь введите описание изображения здесь

и т. д.

ndawson
источник