Більше

Експортуйте файл композитора друку QGIS (.qpt) у форматі PDF із командного рядка


У мене є робочий процес, де мій скрипт R створює файли CSV та шейп-файли. Потім ці файли csv та shape-форм служать шарами в проекті QGIS. Щоразу, коли запускається сценарій R, він перезаписує попередні дані, і проект QGIS "динамічно" оновлюється. Проект QGIS створений таким чином, що його ніколи не потрібно оновлювати або модифікувати, оскільки він динамічно завантажує шари, що виводяться сценарієм R.

Мій поточний робочий процес:

  1. Запустіть скрипт R
  2. Відкрийте файл проекту QGIS
  3. Відкрийте Print composer manager
  4. Виберіть і відкрийте існуючий макет композитора друку
  5. Експорт (друк) у форматі PDF
  6. Закрийте qGIS
  7. Переглянути PDF

Бажаний робочий процес:

  1. Запустіть скрипт R
  2. Переглянути PDF

Я можу пройти частину шляху туди в R, відкривши файл QGIS у QGIS, зателефонувавши

# якщо в Windows: shell.exec ("my_qGIS_file.qgs") # або якщо в MAC OS X: system (вставити ("відкрити", "my_qGIS_file.qgs"))

але тоді я не можу зрозуміти, як програмно (з R) створити pdf і вийти з qGIS. Я читав і перечитував розділ кулінарної книги PyQgis про композитор друку, а також інші приклади в Інтернеті (включаючи цей), але вони не тільки розуміють Python, і, здається, набагато складніше, ніж мені потрібно. Здається, що всі приклади програмно перевизначають весь компонент друку при кожному запуску сценарію. У цьому робочому процесі у мене вже є макет композитора друку, збережений у проекті, який я створив за допомогою графічного інтерфейсу, і не маю бажання чи можливості відтворювати його за допомогою коду.

Якщо цього неможливо зробити безпосередньо в R, я думаю, що можна викликати скрипт python з R через системний виклик, приблизно так:джерело ("my_python_script_that_exports_my_PDF.py"), де сценарій python є самостійним.

Крім того, у мене встановлено кілька плагінів QGIS, які обходять необхідність відкрити компонент друку та просто експортувати існуючі макети композитора, скоротивши робочий процес за кілька кліків. Один із плагінів - "Принтер карт", інший - "multiPrint". Можливо, сценарій python або R може викликати команди з цих плагінів?

Найкритичніше я хотів би, щоб будь-яке запропоноване рішення працювало на Windows, але бонусні бали, якщо запропоноване рішення:

  1. працює як на вікнах, так і на mac

  2. фактично НЕ завантажує повний графічний інтерфейс QGIS (тобто особа, що запускає скрипт, не бачить заставку екрану завантаження QGIS або що-небудь пов'язане з QGIS; вони просто бачать, як PDF магічно відображається у певному каталозі, можливо, з ім'ям файлу, який " ім'я_файла_ "+ позначка часу.PDF).

Я використовую QGIS 2.8


Рішень багато

1) Ви можете запускати сценарії R безпосередньо в наборі інструментів обробки QGIS (Ресурси щодо використання R у QGIS для користувачів R ?, Налаштування зовнішніх програм,…)
Модуль обробки Python використовує модуль підпроцесу для виклику команд R.

2) Ви також можете використовувати R з Python з модулем rpy2 та Python з R з пакетом RPython

3) Ви можете використовувати PyQGIS, не відкриваючи програму (Автономні програми, що використовують QGIS та змінні середовища та багато інших прикладів)

І, нарешті, ви можете змішувати Python, PyQGIS, R та багато іншого, використовуючи блокнот Jupyter / IPython rmagic (заповнення прогалин Python у пакетах статистики за допомогою Rmagic)