[Gfoss] problemi con indici spaziali sqlite
Luca Lanteri
mescal72 a gmail.com
Gio 20 Feb 2014 21:44:33 CET
grazie Sandro e Andrea per gli ottimi riferimenti da cui partire
Il giorno 20 febbraio 2014 16:34, <a.furieri a lqt.it> ha scritto:
> On Thu, 20 Feb 2014 16:18:50 +0100, Luca Lanteri wrote:
>
>> Quello che però ho visto è che mi si è ripresentata più volte la
>> necessità di dover ricreare gli indici perché il DB funzionasse
>> correttamente, in particolare su una tavola dove la geometria non
>> veniva inserita da qgis ma calcolata mediante un trigger sulla base di
>> un'altra geometria.
>>
>>
> e probabilmente l'intoppo e' proprio qua.
> su SpatiaLite le geometrie devono sempre venire create invocando la
> funzione SQL AddGeometryColumn() [oppure RecoverGeometryColumn()],
> perche' e' l'unico modo sicuro per garantire che tutti i Triggers
> necessari vengano creati nel modo corretto.
> qualsiasi geometria che invece venga semplicemente creata andando
> ad inserire direttamente una riga su "geometry_columns" risultera'
> inevitabilmente "zoppa".
> proprio perche' in questo modo verra' a mancare il supporto dei
> Triggers, che e' assolutamente idispensabile per assicurare il
> corretto aggiornamento degli R*Trees ogni volta che si effettua
> una INSERT / UPDATE / DELETE.
>
Io creo la colonna della geometria con RecoverGeometryColumn(), 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 ?
Spero che cosi sia, visto che sto utilizzando Sqlite proprio per poter
utilizzare le funzionalità dei trigger.
A questo punto, qual'è lo strumento migliore per creare un DB Spatialite
DOC, come lo chiamava Andrea ?
Io li ho sempre creati da QGIS, che tra l'altro nella versione 2.0 mi pare
ci metta un tempo eterno (non vorrei che il problema fosse proprio li). Con
la 2.1 i tempi di creazione sono decisamente più sensati.
Esiste un modo per verificare se un DB Spatialite è corretto ed ha tutti i
trigger e gli indici a posto? Se ci fossero problemi esiste il modo di
farne un repair ?
a presto
Luca
-------------- parte successiva --------------
Un allegato HTML ? stato rimosso...
URL: <http://lists.gfoss.it/pipermail/gfoss/attachments/20140220/de362bf2/attachment-0001.html>
Maggiori informazioni sulla lista
Gfoss