[Gfoss] AddGeometryColumn

Ciao a tutti di nuovo,

sto continuando a fare i primi passi con Spatialite e le istruzioni SQL.

Ho creato alcune view (con qualche condizione where, tanto per fare delle prove) a partire da una precedente View (che era una JOIN tra due tabelle e che riesco correttamente a visualizzare in QGIS, avendo popolato il campo geometry).
Non riesco pero' a popolare il campo geometry delle varie view (che sembrano tutte avere il campo geometry) con i consueti due comandi e quindi non posso visualizzare queste view in QGIS:

SELECT AddGeometryColumn("NOME_VIEW", "Geometry", 4326, "POINT", 2);
UPDATE "NOME_VIEW" SET Geometry=MakePoint("Long", "Lat", 4326);

Il messaggio di errore dice: SQL error: "cannot modify NOME_VIEW because it is a view".

Questo significa che io dovrei creare necessariamente le varie view a partire dalle TABELLE iniziali e NON DALLA VIEW che le joina?

Grazie di nuovo,

Massimo

----- Original Message ----- From: "Massimo Paone" <m.paone@tiscali.it>
To: <a.furieri@lqt.it>
Cc: <gfoss@lists.gfoss.it>
Sent: Thursday, November 17, 2011 3:08 PM
Subject: Re: [Gfoss] AddGeometryColumn

quello che devi fare è popolare le Geometrie: p.es.
lanciando (dalla GUI) qualcosa di questo tipo:

UPDATE nome_tabella SET geometry = MakePoint(long, lat, 4326);

Grazie mille Sandro, ora funziona, sono uno sbadato, mi ero dimenticato l'update!
Ehm ehm ... ho appena iniziato con le istruzioni sql, mi metto a studiare un po'.

Grazie ancora.

massimo

On Fri, 18 Nov 2011 14:39:38 +0100, Massimo Paone wrote

Questo significa che io dovrei creare necessariamente le varie view
a partire dalle TABELLE iniziali e NON DALLA VIEW che le joina?

Ciao Massimo,

pensa alle VIEW come ad una specie di "guscio virtuale"
che ti consente di leggere in tuoi dati in modo
semplicificato e meglio organizzato.

appunto: "ti consentono di leggere", cioè di fare
delle SELECT.

ma le VIEW (almeno per SQLite, come per moltissimi
DBMS) sono rigorosamente read-only: i comandi
INSERT, UPDATE e DELETE sono tassativamente proibiti
per una VIEW: devi necessariamente accedere alla
TABLE sottostante per modificare i dati.

e naturalmente non puoi creare una nuova colonna
"attaccandola" ad una VIEW: la dovrai piuttosto
definire in una delle TABLE sottostanti.

insomma, fino a che si parla di SELECT una TABLE
ed una VIEW sono praticamente indistinguibili.
N.B.: puoi anche creare una VIEW che mette in
JOIN altre 2 o 3 VIEWs, non c'è nulla di anomalo.

ma qualsiasi altra operazione che implichi modificare
i dati (oppure modificare la struttura dei dati)
è tassativamente proibita per una VIEW.

-------------

piccolo excursus storico che ti aiuterà a capire
meglio: i DBMS esistono da quasi 40 anni, cioè
ben da prima che approdassero dalle parti del GIS.

allora, prova a pensare ad un sistema contabile
ed amministrativo, con tanto di informazioni
anagrafiche, finanziarie, di carriera, promozioni,
procedimenti disciplinari, listini prezzi, sconti
riservati a clienti particolari etc
ovviamente sono tutte informazioni riservate,
per un motivo o per un altro.

ecco quindi che i "dati grezzi" staranno nelle
TABLEs vere e proprie: e magari pochissimi
addetti della direzione centrale saranno abilitati
a modificare ed inserire i dati.

viceversa, un oceano di VIEWs consentirÃ
a tutti gli altri uffici (e pure al pubblico
esterno, magari via web) di consultare "quasi"
tutto: escluso ovviamente i dati sensibili,
che saranno accuratamente nascosti ed assolutamente
inaccessibili ed invisibili.

ovviamente gli Spatial DMBS sono semplicemente
DBMS "normali", a cui viene attaccata qualche
estensione un po' buffa: ma la logica operativa
resta pur sempre la stessa di cui sopra.

ciao Sandro