[Gfoss] Viste in Spatialite

Ciao di nuovo, grazie intanto per i chiarimenti, cerco di rispondere, spero
altrattanto chiaramente:

se non mi passi anche le due CREATE TABLE con cui hai creato sia
"sito_puntuale" che "ind_pu" non posso dirti assolutamente nulla,
perche' mi stai nascondendo il datatype delle colonne, e soprattutto
mi stai nascondendo come sono state definite le PK, che e' l'informazione
assolutamente critica che serve per poter dare una valutazione motivata.

hint: se usi spatialite_gui c'e' una comodissima voce di menu
che ti permette di visualizzare direttamente la CREATE TABLE
con cui e' stata creata ciascuna tavola.

Ecco il la query di creazione per ind_pu

CREATE TABLE "ind_pu" ("id" INTEGER PRIMARY KEY, "the_geom" POINT, "ID_SPU"
TEXT)

e quella per la tabella sito_puntuale:

CREATE TABLE "sito_puntuale" ("id" INTEGER PRIMARY KEY, "pkey_spu" INTEGER,
"ubicazione_prov" TEXT, "ubicazione_com" TEXT, "ID_SPU" TEXT, "coord_X"
INTEGER, "coord_Y" INTEGER, "mod_identcoord" TEXT, "desc_modcoord" TEXT,
"quota_slm" INTEGER, "modo_quota" TEXT, "data_sito" TEXT, "note_sito" TEXT)

mi puoi cortesemente dire cosa ti ritorna questa query SQL ?

SELECT *
FROM views_geometry_column
WHERE f_view_name = '<nome-della-tua-view>';

se eseguo la query (sulla tabella views_geometry_columns) la tabella è
vuota, può essere quindi che DB manager non crea la view nel modo corretto
o meglio la crea ma non registra i dati nella tabella
views_geometry_columns?

--
Alessandro Ciali

On Tue, 5 Jun 2018 14:51:01 +0200, Alessandro Ciali wrote:

Ecco il la query di creazione per ind_pu

CREATE TABLE "ind_pu" ("id" INTEGER PRIMARY KEY, "the_geom" POINT,
"ID_SPU" TEXT)

e quella per la tabella sito_puntuale:

CREATE TABLE "sito_puntuale" ("id" INTEGER PRIMARY KEY, "pkey_spu"
INTEGER, "ubicazione_prov" TEXT, "ubicazione_com" TEXT, "ID_SPU" TEXT,
"coord_X" INTEGER, "coord_Y" INTEGER, "mod_identcoord" TEXT,
"desc_modcoord" TEXT, "quota_slm" INTEGER, "modo_quota" TEXT,
"data_sito" TEXT, "note_sito" TEXT)

ergo, la tavola che fornisce alla View le geometrie e' "sito_puntuale",
che ha un PK INTGER di nome "id"
richiamo: per SQLite quando esiste una PK INTEGER il valore del ROWID
coincide sempre esattamente con quello della PK.

ma nella creazione della tua View non mi pare di vedere citato da
nessuna parte ne "p"."id" ne "p"."rowid", e quindi "by definition"
la tua View non potra' mai funzionare correttamente, perche' gli
manca il perno fondamentale che regge tutta la logica di funzionamento
delle Spatial Views di SpatiaLite.

mi puoi cortesemente dire cosa ti ritorna questa query SQL ?

SELECT *
FROM views_geometry_column
WHERE f_view_name = '';

se eseguo la query (sulla tabella views_geometry_columns) la tabella
è vuota, può essere quindi che DB manager non crea la view nel modo
corretto o meglio la crea ma non registra i dati nella tabella
views_geometry_columns?

non ho la piu' pallida idea di come funzioni il db manager, ma se
non registra la View in "views_geometry_columns" poco ma sicuro che
quella non e' una Spatial View.
e' semplicemente una banale View, che guarda combinazione contiene
una colonna geometria ma che non potra' essere gestita correttamente
perche' non sono specificate da nessuna parte le regole base per
collegare correttamente la View con il suo Spatial Index di supporto.

consiglio: perche' non provi ad usare spatialite_gui, che offre
un tool grafico facilitato per definire e creare le Spatial Views,
e che per quanto mi risulta funziona perfettamente bene con QGIS ?

ciao Sandro