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