Programování v GIS 4
2026-11-09
QgsProject.instance() - aktuálně otevřený projekt -vždycky nějaký existuje i pokud je nový a prázdnýQgsProject.instance().read("cesta k projektu") - načtení projektu ze souboruwrite(), write("cesta_k_souboru.qgz")qgs soubor je vlastně XML reprezentace projektu, qgz (výchozí nastavení) je komprimovaný archiv obsahující qgs soubor a případně další souboryaddMapLayer() - přidání vrstvy do projekturemoveMapLayer() - odebrání vrstvymapLayersByName() - vyhledání vrstvy podle jménaQgsPrintLayout - třída reprezentující layoutinitializeDefaults() - bez ní je layout těžko použitelný, nemá např. ani stránkypageCollection()QgsLayoutManagerQgsProject.instance().layoutManager()project = QgsProject.instance()
manager = project.layoutManager()
# Vytvoření nového layoutu a přidání do projektu
layout = QgsPrintLayout(project)
layout.initializeDefaults()
layout.setName("Můj Layout")
manager.addLayout(layout)
# Získání existujícího layoutu podle jména
existing_layout = manager.layoutByName("Můj Layout")from qgis.PyQt.QtXml import QDomDocument
with file("path_to_file.qpt", "r") as file:
template_content = file.read()
document = QDomDocument()
document.setContent(template_content)
context = QgsReadWriteContext()
layout = QgsPrintLayout(QgsProject.instance())
layout.loadFromTemplate(document, context)QgsLayoutItem - interface reprezentující jednotlivé prvky layoutu, samotné třídy layout pak jsou QgsLayoutItem*QgsLayoutItem - velikost, pozice, otočení, viditelnost, atd.setPicturePath() pro QgsLayoutItemPicturesetText(), setTextFormat() pro QgsLayoutItemLabel.qpt) často obsahuje zástupné prvky, které chceme ze skriptu upravititemById()QgsLayoutItemMap)QgsLayoutExporterexporter = QgsLayoutExporter(layout)
# Export do PDF
pdf_settings = QgsLayoutExporter.PdfExportSettings()
exporter.exportToPdf("cesta/k/vystup.pdf", pdf_settings)
# Export do obrázku (např. PNG)
img_settings = QgsLayoutExporter.ImageExportSettings()
exporter.exportToImage("cesta/k/vystup.png", img_settings)Materiály dostupné: https://jancaha.github.io/vsb-vyuka/