no ,mi sembra un po poco elegante si perde in portatilità e in
modularità ,certo messi alle strette si può fare in quel modo
però mi sembra strano che non ci sia una soluzione a livello di api
Il 18/07/2019 20:13, Alessandro Perego ha scritto:
Io metterei sia l'export in pdf che la rimozione selezione all'interno
della funzione pagina(c,o). Ovviamente così si crea un file pdf per
ogni record, quindi poi serve un programma esterno per unirli tutti in
un unico pdf (o magari si può fare anche con python ma non saprei come).
Il 18/07/2019 17:36, SC ha scritto:
salve, vediamo se qualcuno mi può aiutare visto che non sono riuscito
a trovare molta documentazione in proposito
ho scritto uno script che forse potrebbe anche essere utile a
qualcuno se non altro a chi si accinge a programmare in qgis 3
dato un layer vettoriale , per ogni record del layer stampa una
pagina in un pdf, le pagine di questo pdf saranno dunque costituite
da una scritta con l'id del record e dalla rappresentazione mappale
dello stesso.
il record sarà centrato nella mappa.
per evidenziare il record (feature) nelle proprietà dei simboli del
layers i può fissare la regola di cambiamento simbolo con la funzione
'is_selected', in questo modo il simbolo centrale apparirà diverso .
QUI nasce il problema che non sono riuscito a risolvere, infatti se
provate lo script con un layer con molti punti vi accorgerete che ci
saranno mappa che presentano piu punti "selezionati"
in pratica il simbolo e la mappa stessa viene renderizzato al momento
della creazione del pdf per cui se metto la rimozione della
selezione all'interno della funzione che crea la pagina non mi
cambierà il simbolo nella mappa. mentre se come ora metto
l'istruzione di rimozione selezione dopo l'export , ovviamente avrò
più punti selezionati contemporaneamente.
quindi sperando che sia qualcuno che mi voglia/possa aiutare le
domande sono:
1. esiste un API che mi permette on the fly di cambiare un singolo
punto in una mappa da stampare?
2. qualora la risposta sia negativa alla prima domanda, c'è un modo
per renderizzare (intendo dire fissare l'immagine in
quell'istante) la mappa dell'oggetto quando creo creo la pagina e
il simbolo è selezionato/cambiato (con il trucco della regola)?
saluti
segue script:
#esempio di stampa mappa dei singoli features del livello vettoriale
attivo in un singolo pdf con QGIS 3, by SC
#se dalle proprieta del layer qgis viene impostato un simbolo
distinto associato alla funzione 'is_selected()' il l'oggetto
centrale nella mappa pdf finale sarà con quel simbolo
import os
p=QgsProject().instance()
layout = QgsPrintLayout(p)
def pagina(c,o):
page=QgsLayoutItemPage(c)
page.setPageSize("A4", QgsLayoutItemPage.Orientation.Portrait )
c.pageCollection().addPage(page)
label = QgsLayoutItemLabel(c)
label.setText("mappa dell'oggetto " + str(o.id()))
label.adjustSizeToText()
label.attemptMove(QgsLayoutPoint(20,20),page=c.ZPage)
label.setFrameEnabled(True)
c.addLayoutItem(label)
print (c.ZPage)
#seleziona la feature per evidenziarla se sono fissate le regole
livello.select(o.id())
mappa=QgsLayoutItemMap(c)
mappa.setFrameEnabled(True)
mappa.attemptResize(QgsLayoutSize(100, 100))
mappa.attemptMove(QgsLayoutPoint(20,50),page=c.ZPage)
mappa.setFrameEnabled(True)
aream=QgsRectangle()
areaoggetto=aream.fromCenterAndSize(o.geometry().centroid().asPoint(),50,50)
areaoggetto.scale(1)
mappa.setExtent(areaoggetto)
c.addLayoutItem(mappa)
#incrementare il ZPage ci permette di usarlo compe parametro page
negli attemptmove
c.ZPage=c.ZPage+1
livello = iface.activeLayer()
features = livello.getFeatures()
for feature in features:
pagina(layout,feature)
pdf_path = os.path.join(QgsProject.instance().homePath(), "output.pdf")
exporter = QgsLayoutExporter(layout)
exporter.exportToPdf(pdf_path, QgsLayoutExporter.PdfExportSettings())
livello.removeSelection()
#apre il pdf con l'applicazione associata su windows
os.startfile(pdf_path)
_______________________________________________
QGIS-it-user mailing list
QGIS-it-user@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/qgis-it-user
--
Alessandro Perego www.alspergis.altervista.org
<http://www.alspergis.altervista.org/>
_______________________________________________
QGIS-it-user mailing list
QGIS-it-user@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/qgis-it-user
_______________________________________________
QGIS-it-user mailing list
QGIS-it-user@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/qgis-it-user