[Gfoss] Qgis 2.8.1 e VectorLayer Translate

Pietro Panzeri pietro.panzeri a treuropa.com
Mer 22 Apr 2015 17:23:32 CEST


Il caricamento e visualizzazione del layer sono paragonabili nelle versioni
1.8 e 2.8.1.
La 1.8 visualizza tutte le feature in un colpo solo mentre la 2.8.1 le
visualizza progressivamente pero' l'intera operazione dura 1 secondo per
entrambe caricando un file locale.
Mi rimane la domanda su dove possano essere spesi i 4 minuti che la 2.8.1
impiega per la prima traslazione. La 1.8 infatti carica i dati in 1
secondo, come gia' detto, e trasla in 4 secondi.
E' forse necessario nella 2.8.1 fare qualche altra operazione oltre ad
aprire il file ed eseguire il codice che ho scritto? Devo registrare
manualmente i layer o cose simili?
Grazie mille.
Saluti.

Pietro


2015-04-22 15:45 GMT+02:00 Luigi Pirelli <luipir a gmail.com>:

> faccio una ipotesi alla cieca, non perdendo il tempo a leggere il
> codice della 1.8
>
> che le feature fossero caricate in cache nel momento del caricameto
> del layer? vedo che fai iface.activeLayer() che attualmente passa dal
> QgsMapLayerRegistry per "registrare" il layer in qgis. Se ricordo bene
> era cosi' anche allora... solo che ora ole feature vengono caricate
> con intelligenza, cioe' solo se servono, e questo permette di gestire
> vettoriali di grosse dimensioni senza incorrere in problemi di
> memoria.
>
> un'altra ottimizzazione dipende dalla complessita' delle features...
> queste vengono semplificate lato provider quando la visualizzazione
> non le necessita (tipo scala troppo affollata)... questo, se ricordo
> bene non c'era nella 1.8 ed e' stato aggiunto con il rendering
> MultiThread... morale, appena caricato il layer e visualizzato  a
> bassa scala (o alta?... mi confondo sempre) non e' detto che hai
> effettivamente preso le features... queste vengono prese solo se ne
> hai effettivamente bisogno... conta che e' un bel vantaggio in caso di
> layer remoti.
>
> morale... e' cambiato il motore di fetch dei dati che e' piu' astuto :)
>
> fai un po il confronto nel caricamento e visualizzazione del layer
> nella 1.8 e 2.8
>
> ciao e a presto, Luigi Pirelli
>
>
> **************************************************************************************************
> * LinkedIn: https://www.linkedin.com/in/luigipirelli
> * Elance: https://www.elance.com/s/edit/luigipirelli/
> * GitHub: https://github.com/luipir
> * Stackexchange: http://gis.stackexchange.com/users/19667/luigi-pirelli
> * Mastering QGIS:
> https://www.packtpub.com/application-development/mastering-qgis
>
> **************************************************************************************************
>
>
> 2015-04-22 15:14 GMT+02:00 Pietro Panzeri <pietro.panzeri a treuropa.com>:
> > Grazie mille per la risposta.
> > Ho provato ad usare il codice hai scritto e che utilizza la
> getFeatures().
> > Le cose sono effettivamente cambiate nel seguente modo:
> > la prima volta che faccio una traslazione ci impiega sempre 4minuti come
> > prima mentre dalla seconda volta ci impiega 20 secondi: ha effettivamente
> > messo in cache le geometrie.
> > La domanda quindi rimane aperta: come mai nella versione 1.8 gia' la
> prima
> > esecuzione ha prestazioni ottime mentre nella 2.8.1 invece e' necessario
> > popolare "esplicitamente" la cache con prestazioni notevolmente peggiori?
> >
> > Pietro
> >
> >
> >
> >
> >
> >
> > 2015-04-22 12:59 GMT+02:00 Luigi Pirelli <luipir a gmail.com>:
> >>
> >> 2015-04-22 11:06 GMT+02:00 Pietro Panzeri <pietro.panzeri a treuropa.com
> >:
> >> > translateFeature
> >>
> >>
> >> il codice del translate e' piuttosto semplice [1] attualmente percio'
> >> penso a due aspetti
> >>
> >> 1) senza andarmi a vedere il codice della 1.8 direi che prima avevi la
> >> rob ain cache e ora no
> >> 2) in cache potenzialment enon la hay visto che usi featureCount
> >> invece che getFeatures()
> >> 3) sconsiglio0 di usare un range su featureCount... non farei
> >> assunzioni su quale debba essere la logica degli id delle feature
> >> dentro QGIS => userei la classica
> >> 4) la
> http://qgis.org/api/qgsvectorlayereditutils_8cpp_source.html#l00174
> >> dice che se la geometria non e' nella cache fa una getFeature ad hoc
> >> => fai una get feature ricreando l'iteratore ogni volta!...
> >>
> >> for feat in vector.getFeatures():
> >>     fid = feat.id()
> >>     vlayer.translateFeature(fid, delta_x, delta_y)
> >>
> >> prova e fai sapere
> >>
> >> [1] http://qgis.org/api/qgsvectorlayereditutils_8cpp_source.html#l00164
> >>
> >> a presto, Luigi Pirelli
> >>
> >>
> >>
> **************************************************************************************************
> >> * LinkedIn: https://www.linkedin.com/in/luigipirelli
> >> * Elance: https://www.elance.com/s/edit/luigipirelli/
> >> * GitHub: https://github.com/luipir
> >> * Stackexchange: http://gis.stackexchange.com/users/19667/luigi-pirelli
> >> * Mastering QGIS:
> >> https://www.packtpub.com/application-development/mastering-qgis
> >>
> >>
> **************************************************************************************************
> >
> >
> >
> >
> > --
> > Pietro Panzeri
> >
> > Software Development Manager
> >
> > Tele-Rilevamento Europa - T.R.E. srl
> > Ripa di Porta Ticinese, 79
> > 20143 Milano – Italia
> > Tel.: +39.02.4343.121 - Fax: +39.02.4343.1230
> > pietro.panzeri a treuropa.com - www.treuropa.com
>



-- 
Pietro Panzeri

Software Development Manager

Tele-Rilevamento Europa - T.R.E. srl
Ripa di Porta Ticinese, 79
20143 Milano – Italia
Tel.: +39.02.4343.121 - Fax: +39.02.4343.1230
pietro.panzeri a treuropa.com - www.treuropa.com
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.gfoss.it/pipermail/gfoss/attachments/20150422/37474da9/attachment.html>


Maggiori informazioni sulla lista Gfoss