<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto">Scusate, ma usare l’atlante?<br><br><div dir="ltr"><br><div><br></div></div><div dir="ltr"><br>Il giorno 18 lug 2019, alle ore 20:32, SC <<a href="mailto:elyparker1@gmail.com">elyparker1@gmail.com</a>> ha scritto:<br><br></div><blockquote type="cite"><div dir="ltr">
  
    <meta http-equiv="Content-Type" content="text/html;
      charset=ISO-8859-15">
  
  
    <p>no ,mi sembra un po poco elegante si perde in portatilità  e in
      modularità ,certo messi alle strette si può fare in quel modo</p>
    <p>però mi sembra strano che non ci sia una soluzione a livello di
      api<br>
    </p>
    <div class="moz-cite-prefix"><br>
    </div>
    <div class="moz-cite-prefix">Il 18/07/2019 20:13, Alessandro Perego
      ha scritto:<br>
    </div>
    <blockquote type="cite" cite="mid:0aaf002b-a1f1-abe0-200c-5e69be3a8274@gmail.com">
      <meta http-equiv="Content-Type" content="text/html;
        charset=ISO-8859-15">
      <p>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).</p>
      <p><br>
      </p>
      <div class="moz-cite-prefix">Il 18/07/2019 17:36, SC ha scritto:<br>
      </div>
      <blockquote type="cite" cite="mid:55466f1b-b3e9-c143-23e1-d3a2995f904a@gmail.com">
        <meta http-equiv="content-type" content="text/html;
          charset=ISO-8859-15">
        <p>salve, vediamo se qualcuno mi può aiutare visto che non sono
          riuscito a trovare molta documentazione in proposito</p>
        <p>ho scritto uno script che forse potrebbe anche essere utile a
          qualcuno  se non altro a chi si accinge a programmare in qgis
          3</p>
        <p>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.</p>
        <p>il record sarà centrato nella mappa.</p>
        <p>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 .</p>
        <p>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"<br>
        </p>
        <p>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.</p>
        <p><br>
        </p>
        <p>quindi sperando che sia qualcuno che mi voglia/possa aiutare
          le domande sono:<br>
          <br>
        </p>
        <ol>
          <li>esiste un API che mi permette on the fly di  cambiare un
            singolo punto  in una mappa da stampare?</li>
          <li>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)?</li>
        </ol>
        <p>saluti<br>
        </p>
        <p>segue script:<br>
        </p>
        <p>#esempio di stampa mappa dei singoli features del  livello
          vettoriale attivo  in un singolo pdf  con QGIS 3, by SC<br>
          #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<br>
          import os<br>
          <br>
          p=QgsProject().instance()<br>
          layout = QgsPrintLayout(p)<br>
          <br>
          def pagina(c,o):<br>
              page=QgsLayoutItemPage(c)<br>
              page.setPageSize("A4",
          QgsLayoutItemPage.Orientation.Portrait )<br>
              c.pageCollection().addPage(page)<br>
          <br>
              <br>
              label = QgsLayoutItemLabel(c)<br>
              label.setText("mappa dell'oggetto " + str(<a href="http://o.id">o.id</a>()))<br>
              label.adjustSizeToText()<br>
              label.attemptMove(QgsLayoutPoint(20,20),page=c.ZPage)<br>
              label.setFrameEnabled(True)<br>
              c.addLayoutItem(label)<br>
              print (c.ZPage)<br>
              <br>
              #seleziona la feature per evidenziarla se sono fissate le
          regole<br>
              livello.select(<a href="http://o.id">o.id</a>())<br>
              <br>
              mappa=QgsLayoutItemMap(c)<br>
              mappa.setFrameEnabled(True)<br>
          <br>
              mappa.attemptResize(QgsLayoutSize(100, 100))<br>
              mappa.attemptMove(QgsLayoutPoint(20,50),page=c.ZPage)<br>
              mappa.setFrameEnabled(True)<br>
              aream=QgsRectangle()<br>
             
areaoggetto=aream.fromCenterAndSize(o.geometry().centroid().asPoint(),50,50)<br>
              areaoggetto.scale(1)<br>
              mappa.setExtent(areaoggetto)<br>
              c.addLayoutItem(mappa)<br>
              <br>
              #incrementare il ZPage ci permette di usarlo compe
          parametro page negli attemptmove<br>
              c.ZPage=c.ZPage+1<br>
              <br>
          <br>
          livello = iface.activeLayer()<br>
          features = livello.getFeatures()<br>
          <br>
          for feature in features:<br>
              pagina(layout,feature)<br>
          <br>
          <br>
          pdf_path = os.path.join(QgsProject.instance().homePath(),
          "output.pdf")<br>
          exporter = QgsLayoutExporter(layout)<br>
          exporter.exportToPdf(pdf_path,
          QgsLayoutExporter.PdfExportSettings())<br>
          livello.removeSelection()<br>
          <br>
          #apre il pdf con l'applicazione associata su windows<br>
          os.startfile(pdf_path)<br>
        </p>
        <p><br>
        </p>
        <br>
        <fieldset class="mimeAttachmentHeader"></fieldset>
        <pre class="moz-quote-pre" wrap="">_______________________________________________
QGIS-it-user mailing list
<a class="moz-txt-link-abbreviated" href="mailto:QGIS-it-user@lists.osgeo.org" moz-do-not-send="true">QGIS-it-user@lists.osgeo.org</a>
<a class="moz-txt-link-freetext" href="https://lists.osgeo.org/mailman/listinfo/qgis-it-user" moz-do-not-send="true">https://lists.osgeo.org/mailman/listinfo/qgis-it-user</a>
</pre>
      </blockquote>
      <div class="moz-signature">-- <br>
        Alessandro Perego <a href="http://www.alspergis.altervista.org/" moz-do-not-send="true">www.alspergis.altervista.org</a></div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <pre class="moz-quote-pre" wrap="">_______________________________________________
QGIS-it-user mailing list
<a class="moz-txt-link-abbreviated" href="mailto:QGIS-it-user@lists.osgeo.org">QGIS-it-user@lists.osgeo.org</a>
<a class="moz-txt-link-freetext" href="https://lists.osgeo.org/mailman/listinfo/qgis-it-user">https://lists.osgeo.org/mailman/listinfo/qgis-it-user</a>
</pre>
    </blockquote>
    <p><br>
    </p>
  

</div></blockquote><blockquote type="cite"><div dir="ltr"><span>_______________________________________________</span><br><span>QGIS-it-user mailing list</span><br><span><a href="mailto:QGIS-it-user@lists.osgeo.org">QGIS-it-user@lists.osgeo.org</a></span><br><span><a href="https://lists.osgeo.org/mailman/listinfo/qgis-it-user">https://lists.osgeo.org/mailman/listinfo/qgis-it-user</a></span><br></div></blockquote></body></html>