[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