Plugin QGIS3 с картой

Вопросы по свободной ГИС QGIS. Сообщения об ошибках, предложения по улучшению, локализация.
Ответить
Bek
Новоприбывший
Сообщения: 5
Зарегистрирован: 26 фев 2019, 20:26
Репутация: 0
Откуда: Kazakhstan

Plugin QGIS3 с картой

Сообщение Bek » 26 фев 2019, 20:36

Здравствуйте!
Подскажите пожалуйста реальный пример плагина на QGIS3, чтобы по шаблону *.qpt вывести на pdf файл
на QGIS2 есть работает, проблема перевести на QGIS3
+ нужен пример с кнопками управления картой
заранее спасибо!

wasposa
Активный участник
Сообщения: 109
Зарегистрирован: 02 май 2017, 13:22
Репутация: 22
Откуда: Москва

Re: Plugin QGIS3 с картой

Сообщение wasposa » 27 фев 2019, 10:07

Не совсем понятно, что подразумевается под "кнопки управления картой"

wasposa
Активный участник
Сообщения: 109
Зарегистрирован: 02 май 2017, 13:22
Репутация: 22
Откуда: Москва

Re: Plugin QGIS3 с картой

Сообщение wasposa » 27 фев 2019, 10:23

В общем случае это выглядит примерно так:

from qgis.core import *
....
def exportPDF(self):
project = QgsProject.instance()
layout = QgsPrintLayout(project)
layout.initializeDefaults()
layout.setUnits(QgsUnitTypes.LayoutMillimeters)
#Устанавливаем размер для страницы
page = layout.pageCollection().pages()[0]
page.setPageSize(QgsLayoutSize(210,297))
#Устанавливаем границы прямоугольника, куда будем вписывать карту
itemMap=QgsLayoutItemMap(layout)
itemMap.updateBoundingRect()
itemMap.setRect(QRectF(5, 10, 200, 220))

layout_exporter = QgsLayoutExporter(layout)
pdf_export_settings = QgsLayoutExporter.PdfExportSettings()
pdf_export_settings.dpi = 300
res = layout_exporter.exportToPdf("путь до файла",pdf_export_settings)

Bek
Новоприбывший
Сообщения: 5
Зарегистрирован: 26 фев 2019, 20:26
Репутация: 0
Откуда: Kazakhstan

Re: Plugin QGIS3 с картой

Сообщение Bek » 27 фев 2019, 18:23

Благодарю за ответ.

Но, у меня вот такой рабочий код на 2.18 версии:
Спойлер

Код: Выделить всё

    def make_pdf(self):
        #canvas = QgsMapCanvas()
        canvas=self.iface.mapCanvas()
  
        map_canvas = QgsMapCanvas(self.dlg.map)
        map_canvas.setMinimumSize(440, 340)
        map_canvas.setMaximumSize(440,340)
        
        layers = [layer for layer in self.iface.layerTreeView().selectedLayers()]
        map_canvas_layer_list = [l for l in layers]
        map_canvas.setLayers(map_canvas_layer_list)
        map_canvas.setExtent(self.iface.mapCanvas().extent())
        
        print(self.plugin_dir)
        
        template_path=self.plugin_dir+'\map.qpt'
        
        template_file = open(template_path,'r')
        template_content = template_file.read()
        template_file.close()
        
        document = QDomDocument() # name 'QDomDocument' is not defined
        document.setContent(template_content)
        
        composition = QgsComposition(map_canvas.mapSettings()) # name 'QgsComposition' is not defined
        
        map_item = composition.getComposerItemById('map')
        map_item.setMapCanvas(map_canvas)
        map_item.zoomToExtent(map_canvas.extent())
        
        txt1 = composition.getComposerItemById('tt1')
        txt1.setText(self.dlg.plainText.toPlainText())
        
        txt2 = composition.getComposerItemById('txt')
        txt2.setText(self.dlg.plainText.toPlainText())
так вот, на 3.4.5 версии QGIS не работает, с ошибками:
# name 'QDomDocument' is not defined
# name 'QgsComposition' is not defined


а идея такая: взять созданный макет (*.qpt) и заменить в нем определенные элементы на мои данные и вывести в pdf

Bek
Новоприбывший
Сообщения: 5
Зарегистрирован: 26 фев 2019, 20:26
Репутация: 0
Откуда: Kazakhstan

Re: Plugin QGIS3 с картой

Сообщение Bek » 27 фев 2019, 21:09

С pdf разобрался! получился так, если кому интересно
Спойлер
layout = QgsLayout(QgsProject().instance())
layout.loadFromTemplate(qpt, QgsReadWriteContext())
mapItem = layout.referenceMap()
layoutExporter = QgsLayoutExporter(layout)

txt1 = layout.itemById('tt1')
txt1.setText(self.dlg.plainText.toPlainText())

txt2 = layout.itemById('txt')
txt2.setText(self.dlg.plainText.toPlainText())

layoutExporter.exportToPdf("C:\ipdf.pdf",QgsLayoutExporter.PdfExportSettings())
Осталась вторая задача: пример с кнопками управления картой
как в моей форме сделать стандартные кнопки "Выбор объекта", "Обновить", и пр.?
как в картине:
Изображение
Вложения
Screenshot_для кнопок2.png
Screenshot_для кнопок2.png (44.6 КБ) 3711 просмотров

Ответить

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

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

Сейчас этот форум просматривают: Bing [Bot] и 11 гостей