Salve a tutti,
chiedo un parere di tipo concettuale su una view spatialite. Se ho una tabella di tipo punto alla quale corrispondo tramite pkid e fkid dei record in una tabella alfanumerica. Quindi per 1 punto N record alfanumerici. Ho creato una view a partire dalla tabella alfanumerica e tramite gli id gli collego il campo geometrico. Mi aspetto di avere una tabella con tutti i record alfanumerici con collegati i punti che in un visualizzatore appaiono 3 punti e la tabella ne rispecchi la struttura. Con Qgis ottengo invece questo risultato di visualizzazione https://www.dropbox.com/sh/00podqheenurjh1/AAAxWmia3kpFgf07jz1clskxa?dl= 0&preview=bug_view.PNG Qui c'è il DB che ho creato: https://www.dropbox.com/sh/00podqheenurjh1/AAAxWmia3kpFgf07jz1clskxa?dl=0 Prima di segnalare il bug vorrei avere un parere lato spatialite. Grazie Luca _______________________________________________ [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. 807 iscritti al 31/03/2016 |
On Mon, 7 Nov 2016 21:31:02 +0100, Luca Mandolesi wrote:
> Salve a tutti, > chiedo un parere di tipo concettuale su una view spatialite. > > Se ho una tabella di tipo punto alla quale corrispondo tramite pkid e > fkid > dei record in una tabella alfanumerica. > > Quindi per 1 punto N record alfanumerici. > > Ho creato una view a partire dalla tabella alfanumerica e tramite > gli id > gli collego il campo geometrico. > > Mi aspetto di avere una tabella con tutti i record alfanumerici con > collegati i punti che in un visualizzatore appaiono 3 punti e la > tabella ne > rispecchi la struttura. > > Con Qgis ottengo invece questo risultato di visualizzazione > > > https://www.dropbox.com/sh/00podqheenurjh1/AAAxWmia3kpFgf07jz1clskxa?dl= > 0&preview=bug_view.PNG > > Qui c'è il DB che ho creato: > > https://www.dropbox.com/sh/00podqheenurjh1/AAAxWmia3kpFgf07jz1clskxa?dl=0 > > Prima di segnalare il bug vorrei avere un parere lato spatialite. > Luca, mi pare che la tua Spatial View sia concettualmente errata: questo e' il codice SQL che stai usando: CREATE VIEW edifici_materiali_view AS SELECT a.ROWID AS ROWID, a. pkuid AS pkuid, a.tipo_edificio AS tipo_edificio, a.grado_rischio AS grado_rischio, a.geom AS geom, b.ROWID AS ROWID_1, b.id_mat_pk AS id_mat_pk, b.tipo_materiale AS tipo_materiale, b.id_ed_fk AS id_ed_fk FROM edifici AS a JOIN materiali AS b ON (a.pkuid = b.id_ed_fk); da cui risulta chiarissimo che ROWID corrisponde alla PK di "edifici", mentre ROWID_1 corrisponde alla PK di "materiali". giusto un commento: entrambe le tavole hanno una PK debitamente dichiarata, cioe' rispettivamente edifici.pkuid e materiali.id_mat_pk, e sono ambedue di tipo INTEGER. che bisogno hai di tirarti dietro _anche_ i ROWID di queste due tavole ? per SQLite quando esiste una PK di tipo INTEGER e' implicito che quel valore diventa anche automaticamente il valore del ROWID; in sostanza, ti stai tirando dietro due doppioni ridondanti e quindi del tutto inutili. comunque, il problema non e' qua. il problema nasce quando sei andato a registrare quella view dentro alla meta-tavola "view_geometry_columns". qua tu hai assegnato alla colonna "view_rowid" il valore "rowid_1". ma come abbiamo visto prima rowid_1 corrisponde alla PK della tavola "materiali" che e' una tavola non-spatial, e da li si scatena tutto il pasticcio. su "view_rowid" devi necessariamente registrare la PK della tavola che fornisce le geometrie: e quindi nel tuo caso "pkuid" (o come alias "rowid", ma e' sempre meglio usare il nome vero piuttosto che l'alias). per inciso: la tua view crea tre righe che pero' coincidono con un singolo punto; e' proprio quello che volevi ottenere ? in genere le view si usano nell'altro modo; per ciascuna singola geometria si associano ulteriori attributi contenuti in una seconda tavola; tu invece stai facendo l'opposto, crei tante righe diverse ma tutte quante con la medesima geometria). 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. 807 iscritti al 31/03/2016 |
Perfetto, quindi forse nella fretta col query view ho tirato dentro roba
che non serviva. Quindi riprovo e vedo se funziona. > > comunque, il problema non e' qua. > il problema nasce quando sei andato a registrare quella > view dentro alla meta-tavola "view_geometry_columns". > qua tu hai assegnato alla colonna "view_rowid" il > valore "rowid_1". > ma come abbiamo visto prima rowid_1 corrisponde alla PK > della tavola "materiali" che e' una tavola non-spatial, > e da li si scatena tutto il pasticcio. > Ottimo, allora è solo un mio errore di selezione dei campi. > > su "view_rowid" devi necessariamente registrare la PK > della tavola che fornisce le geometrie: e quindi nel > tuo caso "pkuid" (o come alias "rowid", ma e' sempre > meglio usare il nome vero piuttosto che l'alias). > > per inciso: la tua view crea tre righe che pero' > coincidono con un singolo punto; e' proprio quello > che volevi ottenere ? > corrispondono N materiali...a sua volta a N materiali corrispondono N modi di restaurarli. > > in genere le view si usano nell'altro modo; per > ciascuna singola geometria si associano ulteriori > attributi contenuti in una seconda tavola; tu > invece stai facendo l'opposto, crei tante righe > diverse ma tutte quante con la medesima geometria). > Esatto. Sul fatto di fare l'opposto del di solito, non mi pare un problema, il problema è se concettualmente questo crea errori. Modifico la selezione dei campi e vedo se Qgis risponde bene. > > ciao Sandro > Ciao e grazie infinite! _______________________________________________ [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. 807 iscritti al 31/03/2016 |
Allora, usando il Query view di spatialite_gui e "non selezionando i row
di" si ottiene CREATE VIEW "materiali_n_1_edifici_view" AS SELECT "a"."id_mat_pk" AS "id_mat_pk", "a"."tipo_materiale" AS "tipo_materiale", "a"."id_ed_fk" AS "id_ed_fk", "b"."pkuid" AS "pkuid", "b"."tipo_edificio" AS "tipo_edificio", "b"."grado_rischio" AS "grado_rischio", "b"."geom" AS "geom" FROM "materiali" AS "a" JOIN "edifici" AS "b" ON ("a"."id_ed_fk" = "b"."pkuid") Tuttavia in view_geometry_columns viene registrato sempre rowid. Una volta modificato a mano con l'id_ed_fk, anche Qgis riesce a caricare la tabella della view in maniera corretta. Ora, premesso che i layer sono stati creati usato il crea vettore spatialite di Qgis e il crea tabella del DB Manager di Qgis.... l'inghippo del Row id in geometry Columns nasce dall'aver creato in Qgis le tabelle oppure da un comportamento non atteso del Query View...oppure io che sbaglio qualcos'altro? Grazie Luca _______________________________________________ [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. 807 iscritti al 31/03/2016 |
On Mon, 7 Nov 2016 23:37:58 +0100, Luca Mandolesi wrote:
> premesso che i layer sono stati creati usato il crea vettore > spatialite di > Qgis e il crea tabella del DB Manager di Qgis.... l'inghippo del Row > id in > geometry Columns nasce dall'aver creato in Qgis le tabelle oppure da > un > comportamento non atteso del Query View...oppure io che sbaglio > qualcos'altro? > Luca, va bene cosi': dal punto di vista SQLite+Spatialite e' indifferente usare il nome vero della PK oppure l'alias generico ROWID. ma il data provider di QGIS invece impone obbligatoriamente l'uso del nome ROWID, per cui non c'e' nulla di anomalo. l'unica cosa assolutamente rilevante e' che la colonna di nome ROWID presente nella spatial view coincida con la PK della tavola che contiene le geometrie. 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. 807 iscritti al 31/03/2016 |
Free forum by Nabble | Edit this page |