Ciao a tutti, in Spatialite, ho tre tabelle, di cui due spaziali, una punti e una poligoni: a)CASSETTE ----------------------------------- | cassetteid | strno | anno | ----------------------------------- b)SOSTEGNI (punti) ------------------------------------- | sostegnoid | strno | geom | ------------------------------------- c)REGIONI (poligoni) ----------------------- | regione | geom | ----------------------- Attualmente, collego CASSETTE e SOSTEGNI così da avere le coordinate di CASSETTE: CREATE VIEW "cassette_view" AS SELECT "a"."strno" AS "strno", "a"."anno" AS "anno" FROM "cassette_nido" AS "a" JOIN "sostegni" AS "b" USING ("strno") Poi, una seconda query, per attribuire la regione di appartenenza ai punti: update cassette_view set regione=(select regione from regioni where Contains(regione.geom, cassette_view.geom)); Esiste un modo per combinare le due operazioni in un solo SQL? grazie mille _______________________________________________ [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. 808 iscritti al 07/03/2017 |
hai verificato che un tale update ti funziona in spatialite/sqlite ?
Il 12 Lug 2017 14:13, "Luca Moiana" <[hidden email]> ha scritto: > > Ciao a tutti, > > in Spatialite, ho tre tabelle, di cui due spaziali, una punti e una > poligoni: > > a)CASSETTE > ----------------------------------- > | cassetteid | strno | anno | > ----------------------------------- > > b)SOSTEGNI (punti) > ------------------------------------- > | sostegnoid | strno | geom | > ------------------------------------- > > c)REGIONI (poligoni) > ----------------------- > | regione | geom | > ----------------------- > > Attualmente, collego CASSETTE e SOSTEGNI così da avere le coordinate di > CASSETTE: > > > CREATE VIEW "cassette_view" AS > SELECT "a"."strno" AS "strno", "a"."anno" AS "anno" > FROM "cassette_nido" AS "a" > JOIN "sostegni" AS "b" USING ("strno") > > Poi, una seconda query, per attribuire la regione di appartenenza ai punti: > > update cassette_view set regione=(select regione from regioni > where Contains(regione.geom, cassette_view.geom)); > > Esiste un modo per combinare le due operazioni in un solo SQL? > > grazie mille > > _______________________________________________ > [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. > 808 iscritti al 07/03/2017 [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. 808 iscritti al 07/03/2017 |
In reply to this post by Luca Moiana
On Tue, 11 Jul 2017 15:35:28 +0000, Luca Moiana wrote:
> Ciao a tutti, > > in Spatialite, ho tre tabelle, di cui due spaziali, una punti e una > poligoni: > > a)CASSETTE > ----------------------------------- > | cassetteid | strno | anno | > ----------------------------------- > > b)SOSTEGNI (punti) > ------------------------------------- > | sostegnoid | strno | geom | > ------------------------------------- > > c)REGIONI (poligoni) > ----------------------- > | regione | geom | > ----------------------- > > Attualmente, collego CASSETTE e SOSTEGNI così da avere le coordinate > di CASSETTE: > > > CREATE VIEW "cassette_view" AS > SELECT "a"."strno" AS "strno", "a"."anno" AS "anno" > FROM "cassette_nido" AS "a" > JOIN "sostegni" AS "b" USING ("strno") > > Poi, una seconda query, per attribuire la regione di appartenenza ai > punti: > > update cassette_view set regione=(select regione from regioni > where Contains(regione.geom, cassette_view.geom)); > > Esiste un modo per combinare le due operazioni in un solo SQL? > ciao Luca, vedo che ora stai postando in italiano i medesimi quesiti che nei giorni scorsi avevi gia' posto in inglese sulla ML di spatialite ricevendo diverse risposte pertinenti e ben calibrate. vado dritto sparato al nocciolo del problema; quello che ci stai chiedendo non ha nessun senso. Le VIEWs di SQLite sono rigorosamente read-only, ragion per cui non possono mai supportare le operazioni di UPDATE (a meno di avventurarsi sulla magia nera dei triggers, ma e' un discorso spinoso che ci porterebbe troppo lontano). credo di capire che in effetti a te interessa un'unica cosa; creare una View che raggruppi tutti assieme Cassette, Sostegni e Regioni. se questa mia interpretazione e' corretta, lascia perdere l'UPDATE che non c'entra assolutamente nulla; quello che ti serve e' una normalissima View come la seguente: CREATE VIEW cassette_view AS SELECT a.strno AS strno, a.anno AS anno, c.regione FROM cassette_nido AS a JOIN sostegni AS b USING (strno) JOIN regioni AS c ON (ST_Contains(c.geom, b.geom) = 1); naturalmente una query di questo tipo non potra' girare in modo fluido ed efficiente, a meno che tu non abbia un numero molto scarso di features da gestire. verosimilmente occorrera' aggiungere uno Spatial Index per imprimere un pizzico di efficienza. ... ma di questo ne riparleremo eventualmente dopo che avrai finalmente chiarito cosa ti serve realmente. 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. 808 iscritti al 07/03/2017 |
Free forum by Nabble | Edit this page |