Atlante con due grafici e due semplici tabelle

Buongiorno,
ho realizzato un progetto QGIS con layer solo vettoriali provenienti da FileGDB.

Nel progetto ho realizzato un atlante con layer di copertura i comuni di una regione italiana.

Nel layout di stampa ho inserito:

  1. una mappa principale;
  2. una panoramica;
  3. due grafici a barre;
  4. due tabelle manuali (non tabelle attributi di layer), dove ogni cella ha delle espressioni per il calcolo di alcuni parametri.

Ho notato che l’apertura dell’atlante è lentissimo e anche sfogliarlo è una impresa.

A me sembra strano che il layout che ho realizzato sia pesante e mandi in crisi tutto il progetto.

Quale potrebbero essere le cause?

  1. L’uso di FileGDB, forse non sono ancora ottimizzati per QGIS;
  2. l’uso del plugin DataPlotly nel compositore di stampe;
  3. l’uso di tabelle manuali con all’interno delle espressioni (sono espressioni semplici);
  4. oppure?

Prima di condividere qualche progetto base di esempio, vorrei capire se qualcuno di voi ha esperienza simili.

saluti

QGIS 3.34.10 LTR - WIN 11

Penso che, se non l’hai già fatto, potresti:

  • provare a rimuovere uno alla volta gli elementi del layout e verificare quale sia l’elemento che rende l’elaborazione dell’atlante molto lenta

  • verificare se i layer usati nel layout sono memorizzati in locale o sono in rete

  • provare se lo stesso progetto mostra la stessa lentezza di elaborazione anche usando versioni precedenti di QGIS

  • verificare qual è la percentuale di uso della CPU, della memoria RAM e di uso del HDD da parte di QGIS durante l’elaborazione dell’atlante

A presto.

Andrea

Ciao Andrea

Lo ho fatto e sono i diagrammi che rallentano tutto!

sì, sono tutti file in locale.

Questa prova non la ho ancora verificata, perché nel PC dove lavoro ho solo una versione installata, se posso faccio anche questo test.

no, neanche questa ho fatto.

Risultato dei test ancora incompleti:

  1. ho sostituito i FileGDB con GPKG
  2. aggiornato il layout di stampa usando i GPKG
  3. ho notato un notevole miglioramento, ma sempre lentino rimane.

Prime conclusioni:
Molto probabilmente il Plugin DataPlotly, e in particolare i diagrammi a barre, sono molto lenti e se combinati con fonte dati un FileGDB l’atlante rallenta in modo impressionante.

farò altri test

saluti

Probabilmente Matteo Ghetta @ghtmtt potrebbe sapere quale possa essere il problema e come poterlo risolvere.

A presto.

Andrea

Ciao Salvatore,
Hai qualche aggiornamento sulla lentezza dei diagrammi creati dal plugin Plugin DataPlotly nel layout?

A presto.

Andrea

Ciao Andrea,
purtroppo la cosa è preoccupante,
più ci lavoro e più mi rendo conto che i grafici rallentano molto gli atlanti.

Ricordo che qualche anno fa Nyall modificò qualcosa negli atlas con i grafici, vedi [qui] [Atlas] unprinted and inconsistent graphics with coverage vector · Issue #207 · ghtmtt/DataPlotly · GitHub e non vorrei sia questo a rallentare tutto.

saluti

Noto altra cosa molto pericolosa, i grafici che stampa NON sono sincronizzati con i dati, o meglio, non li stampa correttamente, alcune volte non stampa parti di grafici.

@ghtmtt ricordi quel problema del 2020 [1] ? è molto simile se non lo stesso!!!

[1] [Atlas] unprinted and inconsistent graphics with coverage vector · Issue #207 · ghtmtt/DataPlotly · GitHub

allego un video demo,
l’unico modo per visualizzare correttamente il grafico è entrare ogni volta dentro le impostazioni del grafico:

Ciao Salvatore,
ho installato la versione 3.6 del plugin Data Plotly in QGIS 3.34.11 (OSGeo4W) su Windows e non ho riscontrato errori di installazione, quindi potresti provare ad installare tale versione e verificare se il problema si verifica anche con tale versione.

A presto.

Andrea

Ciao Andrea,
intanto mille grazie per il tuo test.

Ho contattato privatamente l’autore del plugin, mandandogli anche un progetto con i dati; anche lui riesce a riprodurre il problema.

Vi aggiorno

saluti

PS. proverò anche io con la versione 3.6 del plugin

Vi aggiorno,
l’autore del plugin sta facendo del suo meglio, ma occorre l’intervento di Nyall Dawson che è l’autore dell’integrazione [1] del plugin in QGIS, ma dopo 10 giorni e due email, la star Dawson non risponde.

[1] QGIS Print Layouts Graphs and Charts Campaign – North Road

@agiudiceandrea
ho installato la versione 3.6 del plugin DataPlotly, ma aprendo il progetto in cui utilizzavo Dataplotly 4:

  1. compare errore python, che allego sotto;
  2. nel layout non compare nessun grafico

Si è verificato un errore durante l’esecuzione del codice Python:

TypeError: arguments did not match any overloaded call:   QSize(): too many arguments   QSize(w: int, h: int): argument 1 has unexpected type 'float'   QSize(a0: QSize): argument 1 has unexpected type 'float' 
Traceback (most recent call last):
  File "C:\Users/pigre/AppData/Roaming/QGIS/QGIS3\profiles\test_dataPlotly/python/plugins\DataPlotly\layouts\plot_layout_item.py", line 145, in draw
    self.load_content()
  File "C:\Users/pigre/AppData/Roaming/QGIS/QGIS3\profiles\test_dataPlotly/python/plugins\DataPlotly\layouts\plot_layout_item.py", line 200, in load_content
    self.web_page.setViewportSize(QSize(self.rect().width() * self.html_units_to_layout_units,
                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: arguments did not match any overloaded call:
  QSize(): too many arguments
  QSize(w: int, h: int): argument 1 has unexpected type 'float'
  QSize(a0: QSize): argument 1 has unexpected type 'float'

saluti

Ciao Salvatore,
dovresti poter risolvere il problema modificando le linee 200 e 201 del file C:\Users\pigre\AppData\Roaming\QGIS\QGIS3\profiles\test_dataPlotly\python\plugins\DataPlotly\layouts\plot_layout_item.py

da:

        self.web_page.setViewportSize(QSize(self.rect().width() * self.html_units_to_layout_units,
                                            self.rect().height() * self.html_units_to_layout_units))

a:

        self.web_page.setViewportSize(QSize(int(self.rect().width()) * self.html_units_to_layout_units,
                                            int(self.rect().height()) * self.html_units_to_layout_units))

ottimo, funziona, non ricevo più errore.

Ho creato un nuovo profilo e installato il plugin DataPlotly 3.6 (tramite il file zip)
ho modificato le due righe 200 e 201, tutto ok.

Ma il problema dei grafici rimane.

Allego un video demo.

saluti

Grazie mille Andrea

Aggiornamento, spero sia l’ultimo.

Nyall ha fatto questa PR [1],
da test di Matteo e miei sembra tutto risolto, anche se non ho ancora verificato a fondo.

saluti

[1] Deepcopy settings when creating factories by nyalldawson · Pull Request #356 · ghtmtt/DataPlotly · GitHub

1 Like

Rilasciata la nuova versione di DataPlotly 4.2.0

https://plugins.qgis.org/plugins/DataPlotly/version/4.2.0/

Grazie mille a Matteo Ghetta (@ghtmtt ) e Nyal Dawson

saluti

…e grazie anche a Totò Fiandaca :wink:

1 Like