[Gfoss] Viste in Spatialite

Andrea Peri aperi2007 a gmail.com
Mar 5 Giu 2018 13:08:34 CEST


Vedo che il campo geometrico è il primo della lista. Premetto che è solo un
dubbio, ma mi pare di ricordare, almeno in tempi passati che qgis avesse
difficoltà a gestire campi oltre quelli di geometria.
Ma forse è una cosa già risolta in versioni più recenti di qgis.

A.


Il Mar 5 Giu 2018, 12:17 Alessandro Ciali <alessandro.ciali a gmail.com> ha
scritto:

> Ciao Sandro e ciao a tutti,
> la spatial table che ho usato per la geometria funziona correttamente, l'ho
> importata da uno shape in un db spatialite direttamente da DB manager in
> QGIS.
> La query che ho usato per creare la view è questa:
>
> SELECT p.the_geom, s.pkey_spu, s.ubicazione_prov, s.ubicazione_com,
> s."ID_SPU", s."coord_X", s."coord_Y", s.mod_identcoord, s.desc_modcoord,
> s.quota_slm, s.modo_quota, s.data_sito, s.note_sito
> FROM "Sito_puntuale" s
> LEFT JOIN ind_pu p ON p."ID_SPU" = s."ID_SPU"
>
> e utilizzando l'opzione "create a view" sempre su db manager, dando per
> scontato che la registrasse correttamente.
>
> Inoltre non mi è chiara una cosa al punto 3 della tua risposta: se la
> spatial view deve contenere necessariamente un  ROWID che corrisponde al
> ROWID
> della spatial table, come posso costruire spatial views con relazioni di 1
> a N fra spatial table e tabelle semplici? In questo caso i valori di ROWID
> si duplicheranno e non saranno più univoci.
>
> Ad ora non posso condividere il db perchè i dati non sono di mia proprietà,
> in caso vedo di reperire qualcosa con dati di mio possesso.
>
> Grazie ancora per l'aiuto
>
> Il giorno 4 giugno 2018 18:17, <a.furieri a lqt.it> ha scritto:
>
> > On Mon, 4 Jun 2018 17:55:06 +0200, Alessandro Ciali wrote:
> >
> >> Ciao a tutti, sto riscontrando un comportamento assurdo con le viste
> >> SpatiaLite. Ho creato una vista in un DB SpatiaLite tramite il DB
> manager
> >> di QGIS, unendo un file puntuale con una tabella tramite un semplice
> join
> >> con corrispondenza 1 a 1. purtroppo quando carico la vista in QGIS
> 2.14.17
> >> mi succedono cose strane:
> >> - se clicco con l'identify su una feature, mi vengono restituiti i
> valori
> >> corretti per i vari campi, ma non si apre la form, pur avendo spuntato
> la
> >> voce "auto open form" e individuando una sola feature
> >> - se cerco di selezionare una o più features, mi vengono selezionati
> anche
> >> oggetti al di fuori del rettangolo di selezione, e magari non tutti gli
> >> oggetti all'interno del riquadro vengono selezionati
> >>
> >> Il DB spatiaLite l'ho creato da QGIS (create new SpatiaLite Layer), la
> >> vista dal DB manager. Le tabelle spaziali e quelle senza geometrie
> >> sembrano
> >> non avere nessun problema, vengono caricate e visualizzate correttamente
> >> in
> >> QGIS.
> >>
> >> tengo a precisare che la stessa procedura (ovviamente la query necessita
> >> di
> >> piccole correzioni) in Postgres mi restituisce viste perfettamente
> >> funzionanti
> >>
> >> Qualcuno si è imbattuto in questo problema? Sbaglio qualcosa io o è un
> >> problema di QGIS/SpatiaLite?
> >>
> >>
> > ciao Alessandro,
> >
> > le Spatial Views di SpatiaLite hanno dei requisiti ben precisi e molto
> > stringenti; se non li rispetti il caos e' assicurato.
> >
> > 1. la colonna Geometry della Spatial View deve corrispondenre esattamente
> >    ad una colonna Geometry di una delle Spatial Tables subordinate.
> > 2. non sono ammesse funzioni SQL che possano alterare in qualsiasi
> >    modo la geometria originaria (in altre parole: ST_Transform,
> >    ST_Union, ST_Difference, ST_Buffer etc sono sempre rigorosamente
> >    proibite in una Spatial View.
> > 3. la Spatial View deve necessariamente contenere una colonna di nome
> >    ROWID, che deve coincidere esattamente con il ROWID della Spatial
> >    Table che fornisce la Geometry.
> >
> > tutti queste restrizioni sono imposte dalla particolare struttura
> > dello Spatial Index di SpatiaLite, che non ha nulla a che vedere
> > con quella adottata da PostGIS.
> > anche se entrambi producono risultati funzionali praticamente
> > identici, l'architettura interna e' totalmente diversa.
> > se la Spatial View non e' stata correttamente definita finisce
> > che il suo Spatial Index di supporto "impazzisce", con risultati
> > assolutamente paradossali ed apparentemente sconcertanti.
> >
> > dal quadro che ci fornisci, questo parrebbe proprio il tuo caso;
> > molto verosimilmente la tua Spatial View si e' presa un po' troppa
> > liberta' con lo Spatial Index, ed ora funziona in modo del tutto
> > inattendibili (piu' o meno a casaccio).
> >
> > hint: prova a condividere la tua struttura dati, ed in particolare:
> > - gli statements CREATE TABLE della/e Table(s) che utilizzi nella
> >   tua Spatial View
> > - lo statement CREATE VIEW che hai usato
> > - la registrazione della tua Spatial View che hai inserito nella
> >   meta-tavola "views_geometry_columns"
> >
> > se chiarisci meglio tutti questi aspetti potro' darti un parere
> > piu' mirato e meglio argomentato, e magari anche qualche suggerimento
> > utile per uscire dal pasticcio.
> >
> > ciao Sandro
> >
> >
> >
> > _______________________________________________
> > Gfoss a lists.gfoss.it
> > http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
> > Questa e' una lista di discussione pubblica aperta a tutti.
> > I messaggi di questa lista non hanno relazione diretta con le posizioni
> > dell'Associazione GFOSS.it.
> > 796 iscritti al 28/12/2017
>
>
>
>
> --
> Alessandro Ciali
> _______________________________________________
> Gfoss a lists.gfoss.it
> http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
> Questa e' una lista di discussione pubblica aperta a tutti.
> I messaggi di questa lista non hanno relazione diretta con le posizioni
> dell'Associazione GFOSS.it.
> 796 iscritti al 28/12/2017


Maggiori informazioni sulla lista Gfoss