<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">Il giorno 20 febbraio 2014 21:44, Luca Lanteri <span dir="ltr"><<a href="mailto:mescal72@gmail.com" target="_blank">mescal72@gmail.com</a>></span> ha scritto:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">grazie Sandro e Andrea per gli ottimi riferimenti da cui partire<div class="gmail_extra"><br><br><div class="gmail_quote">
Il giorno 20 febbraio 2014 16:34,  <span dir="ltr"><<a href="mailto:a.furieri@lqt.it" target="_blank">a.furieri@lqt.it</a>></span> ha scritto:<div class=""><br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div>On Thu, 20 Feb 2014 16:18:50 +0100, Luca Lanteri wrote:<br>


<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
Quello che però ho visto è che mi si è ripresentata più volte la<br>
necessità di dover ricreare gli indici perché il DB funzionasse<br>
correttamente, in particolare su una tavola dove la geometria non<br>
veniva inserita da qgis ma calcolata mediante un trigger sulla base di<br>
un'altra geometria.<br>
<br>
</blockquote>
<br></div>
e probabilmente l'intoppo e' proprio qua.<br>
su SpatiaLite le geometrie devono sempre venire create invocando la<br>
funzione SQL AddGeometryColumn() [oppure RecoverGeometryColumn()],<br>
perche' e' l'unico modo sicuro per  garantire che tutti i Triggers<br>
necessari vengano creati nel modo corretto.<br>
qualsiasi geometria che invece venga semplicemente creata andando<br>ad inserire direttamente una riga su "geometry_columns" risultera'<br>inevitabilmente "zoppa".<br>proprio perche' in questo modo verra' a mancare il supporto dei<br>

Triggers, che e' assolutamente idispensabile per assicurare il<br>corretto aggiornamento degli R*Trees ogni volta che si effettua<br>una INSERT / UPDATE / DELETE.<br></blockquote><div><br></div></div></div></div></div>
</blockquote><div><br></div><div>Infatti anche io credo che sia un problema di triggers.<br><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">
<div class="gmail_extra"><div class="gmail_quote"><div>Io creo la colonna della geometria con RecoverGeometryColumn(), </div></div></div></div></blockquote><div><br></div><div>No, la recovery funziona se hai creato la tabella con un comando del tipo:<br>
<br></div><div>create table pippo as select campo1,campo2,...,geometria from pluto;<br><br></div><div>inoltre stai attento che se scrivi:<br><br></div><div>create table pippo as select * from pluto;<br><br></div><div>non funziona bene.<br>
</div><div>sempre meglio esplicitare i nomi dei campi, mai affidarsi alla scorciatoia " * "<br></div><div><br></div><div>Quindi se tu avessi fatto qualcosa del tipo:<br><br>create table pippo (campo 1 integer, campo 2 blob);<br>
e poi gli applichi una :<br><br></div><div>select recoverygeometrycolumn('pippo','geometria',...);<br></div><div>probabilmente è qui che vi è il problema.<br><br></div><div>La procedura corretta è creare la tabella senza il campo "geometria" e poi<br>
aggiungerlo con la sintassi:<br><br></div><div>select Addgeometrycolumns(....);<br><br></div><div> <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">
<div class="gmail_extra"><div class="gmail_quote"><div>poi popolo semplicemente i dati mediante un update della colonna geometrica, prendendo la geometria da un'atra tabella invece che dall'interfaccia di qgis. I trigger che popolano gli indici dovrebbero essere scatenati tanto dal mio update quanto da un inserimento diretto in QGIS, no ?</div>

<div><br></div><div>Spero che cosi sia, visto che sto utilizzando Sqlite proprio per poter utilizzare le funzionalità dei trigger.</div><div><br></div></div></div></div></blockquote><div><br></div><div>Avrei una altra ipotesi al riguardo.<br>
</div><div>Una ipotesi che mi deriva da un episodio che ho affrontato qualche settimana fa'.<br></div><div>In tale occasione , avevo definito un trigger su un db spatialite, per garantire che a fronte di certi valori su un campo, venisse popolato altri campi.<br>
<br></div><div>Quando andavo a popolare questo db con qgis, mi accorsi che in realta' il trigger non si scatenava.<br><br></div><div>Purtroppo non ho ulteriormente indagato.<br></div><div>Presi atto che non funzionava, forse avevo sbagliato a definire il trigger, forse era qgis che non funzizonava, fatto sta' che scelsi di seguire altre strade e decisi di non indagare oltre.</div>
<br><div>Avrei dovuto, ma non avevo proprio il tempo.<br><br></div>Mi sono ricordato di quell'episodio ora, che leggo del tuo caso.<br></div><div class="gmail_quote">Forse potrebbe essere un ulteriore indizio che <br>
<div>Il codice del provider sqlite di qgis potrebbe essere stato modificato per non scatenare i triggers.<br></div><div>O forse solo alcuni di essi.<br></div><div>(sigh)<br><br></div><div>Sicuramente è da verificare.A questo punto vedo di fare qualche prova in questo fine settimana.<br>
<br></div><div>Andrea.<br><br></div></div></div></div>