Spatialite e spatial view

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Spatialite e spatial view

pierluigi de rosa-2
salve a tutti,

sto cercando di riprodurre quanto facevo già con postgis in spatialite.
Una cosa molto semplice ma stranamente non riesco nè con spatialite-gui ne da sql puro.
Voglio creare una spatial view di buffer di 1km attorno a punti che sono già nel DB.
Uso:
CREATE VIEW "pippo11" AS
SELECT "ROWID" AS "ROWID", "name" AS "name", ST_Buffer("Geometry",1000) AS "Geometry"
FROM "bus_stop"

Poi registro la view:
INSERT INTO views_geometry_columns (view_name, view_geometry, view_rowid, f_table_name, f_geometry_column)
VALUES ('pippo11', 'geometry', 'rowid', 'bus_stop', 'geometry')
Ma mi dice che la tabella è del tipo read-only
Dove sbaglio?
Grazie
P

--
Ing. Pierluigi De Rosa (PhD)
cel: 3497558268 / fax: 075 7823038
skype: pierluigi.derosa

_______________________________________________
[hidden email]
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.
786 iscritti al 30.9.2015
Reply | Threaded
Open this post in threaded view
|

Re: Spatialite e spatial view

pcav
Il 06/10/2015 14:57, pierluigi de rosa ha scritto:

> Poi registro la view:
> INSERT INTO views_geometry_columns (view_name, view_geometry,
> view_rowid, f_table_name, f_geometry_column)
> VALUES ('pippo11', 'geometry', 'rowid', 'bus_stop', 'geometry')
> Ma mi dice che la tabella è del tipo read-only
> Dove sbaglio?

se e' una vista, non e' una tabella.
no?
saluti.

--
Paolo Cavallini - www.faunalia.eu
QGIS & PostGIS courses: http://www.faunalia.eu/training.html
_______________________________________________
[hidden email]
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.
786 iscritti al 30.9.2015
Reply | Threaded
Open this post in threaded view
|

Re: Spatialite e spatial view

a.furieri
In reply to this post by pierluigi de rosa-2
On Tue, 6 Oct 2015 14:57:45 +0200, pierluigi de rosa wrote:

> salve a tutti,
>
> sto cercando di riprodurre quanto facevo già con postgis in
> spatialite.
> Una cosa molto semplice ma stranamente non riesco nè con
> spatialite-gui ne da sql puro.
> Voglio creare una spatial view di buffer di 1km attorno a punti che
> sono già nel DB.
> Uso:
>
> CREATE VIEW "pippo11" AS
> SELECT "ROWID" AS "ROWID", "name" AS "name",
> ST_Buffer("Geometry",1000) AS "Geometry"
> FROM "bus_stop"
>
> Poi registro la view:
>
> INSERT INTO views_geometry_columns (view_name, view_geometry,
> view_rowid, f_table_name, f_geometry_column)
> VALUES ('pippo11', 'geometry', 'rowid', 'bus_stop', 'geometry')
> Ma mi dice che la tabella è del tipo read-only
> Dove sbaglio?
>

ciao Pierluigi,

non sbagli nulla; e' semplicemente che per definizione le Views
di SQLite sono sempre di tipo read-only.

se vuoi puoi anche trasformare una qualsiasi View di SQLite in
un oggetto dotato di piene capacita' read-write, ma in questo
caso pero' devi  anche provvedere ad installare dei Triggers
che intercettino gli eventi INSERT, UPDATE e DELETE rimappandoli
nel modo piu' opportuno.

una spiegazione piu' completa e dettagliata la trovia qua:
https://www.gaia-gis.it/fossil/libspatialite/wiki?name=writable-view

se vuoi renderti la vita molto piu' semplice puoi usare
SpatiaLite-GUI che supporta un wizard "Query/View composer"
che e' in grado di generarti automaticamente tutti i Triggers
che servono per ottenere una Spatial View "updatable".

infine, nota bene:
> INSERT INTO views_geometry_columns (view_name, view_geometry,
> view_rowid, f_table_name, f_geometry_column)
> VALUES ('pippo11', 'geometry', 'rowid', 'bus_stop', 'geometry')
>

questa notazione e' incompleta, ti stai mangiando una colonna;
la forma completa e' invece:
INSERT INTO views_geometry_columns (view_name, view_geometry,
    view_rowid, f_table_name, f_geometry_column, read_only)
VALUES ('pippo11', 'geometry', 'rowid', 'bus_stop', 'geometry', 1 | 0);

l'ultimo valore "read_only" e' proprio quello che QGIS usa
per stabilire se la tua View e' di tipo read-only oppure
read-write.
ovviamente se ti limiti a settare il valore "read_only=0" senza
installare correttamente tutti i Triggers di supporto QGIS
ti dara' un sacco di errori al primo tentativo che farai di
andare a fare qualche operazione di scrittura su quella View.

ciao Sandro
_______________________________________________
[hidden email]
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.
786 iscritti al 30.9.2015