[Gfoss] Create view con Qspatialite

a.furieri a lqt.it a.furieri a lqt.it
Sab 18 Apr 2015 19:47:58 CEST


On Sat, 18 Apr 2015 18:36:59 +0200, Totò Fiandaca wrote:
> ho sempre usato Postgis per creare view con geometrie, ora volevo
> iniziare ad usare Qspatialite, ma dopo aver creato un DB con
> spatialite non riesco neanche a creare una semplice view tipo:
> in Postgis
>
> CREATE OR REPLACE VIEW v_buffer_4m AS 
>  SELECT elementi_pi.gid,
>     elementi_pi.prog,
>     st_buffer(elementi_pi.geom, 4::double precision) AS geom
>    FROM elementi_pi;
>
> come fare con Qspatialite?
>

Toto',

sia SpatiaLite che PostGIS presentano moltissime somiglianze
superficiali, visto che entrambi sono modellati in conformita'
degli standard OGC-SFS ed ISO SQL/MM

tuttavia a livello strutturale ci sono moltissime differenze
decisamente molto significative.
non dare assolutamente mai per placidamente scontato che
SQLite/Spatialite funzionino sempre in modo molto simile
a PostgreSQL/PostGIS perche' potresti avere molto spesso
delle cocenti delusioni.

giusto per aiutare a capire meglio: PostgreSQL e' un grosso
"autoarticolato pesante" basato su un'architettura client/server
decisamente complessa e sofisticata.
viceversa SQLite e' un "ciclomotore ultra-leggero" senza
nessun fronzolo extra che non sia strettamente indispensabile.
piu' o meno fanno entrambi le stesse cose, ma SQLite le fa
in modo sostanzialmente diverso e molto spesso richiede di
adottare strategie piu' indirette, molto "manuali" e poco
"automatizzate".

uno dei campi in cui la distanza tra i due DVMS e' sicuramente
abissale riguarda lo Spatial Index; l'altro riguarda proprio
le Spatial Views.

anche SQLite/SpatiaLite e' perfettamente in grado di gestire
una Spatial View, ma richiede un paio di pre-requisiti extra:
- per ottenetre una Spatial View occorre prima registrarla in
   modo esplicito nella meta-tavola "views_geometry_columns"
- la geometria fornita dalla View deve esattamente corrispondere
   ad una geometria gia' presente in una delle tavole su cui
   si basa la View.
   ergo, sono tassativamente proibite tutte le funzioni che
   trasformano in qualsiasi modo la geometria:
   ST_Transform(), ST_Buffer(), ST_Difference() etc etc

letture consigliate:

http://www.gaia-gis.it/gaia-sins/spatialite-cookbook/html/sp-view.html
(un po' vecchiotto)

https://www.gaia-gis.it/fossil/libspatialite/wiki?name=writable-view
(molto piu' aggiornato)

ciao Sandro


Maggiori informazioni sulla lista Gfoss