Volevo chiedere come utilizzire la funzione Difference in spatialite,
per capire se è utile al mio problema. Ho una tabella che contiene l'uso del suolo di una provincia che ha il brutto difetto di finire anche all'interno di un'altra provincia. Vorrei rimuovere le parti in eccesso utilizzando la funzione sopra citata e la geometria della provincia in cui ricadono le geometrie di troppo. Ho provato così create table test_diff as select a.CODICE_NUM, Difference(a.Geometry,b.Geometry) from uso_suolo as a, provincia as b ma mi ha restituito una tabella con solo il codice e senza geometria. Ho cercato sul web ma non trovato nulla (magari ho cercato male io) al di fuori del SQL functions reference list ma nessun esempio -- ciao Luca http://gis.cri.fmach.it/delucchi/ www.lucadelu.org _______________________________________________ Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione [hidden email] http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss Questa e' una lista di discussione pubblica aperta a tutti. Non inviate messaggi commerciali. I messaggi di questa lista non rispecchiano necessariamente le posizioni dell'Associazione GFOSS.it. 502 iscritti all'11.2.2011 |
On Thu, 28 Apr 2011 11:31:55 +0200, Luca Delucchi wrote
> Volevo chiedere come utilizzire la funzione Difference in spatialite, > per capire se è utile al mio problema. Ho una tabella che contiene > l'uso del suolo di una provincia che ha il brutto difetto di finire > anche all'interno di un'altra provincia. Vorrei rimuovere le parti in > eccesso utilizzando la funzione sopra citata e la geometria della > provincia in cui ricadono le geometrie di troppo. > la ST_Difference() non sembra la funzione più indicata per fare quello che intendi tu. ST_Difference(g1, g2) valuta le due geometrie e genera una terza geometria che rappresenta la "differenza" tra le due precedenti (g1-g2). Quindi, se un uso_suolo è completamente compreso entro la tua provincia ... ritornerà un bel NULL :-( e non credo proprio che sia quello che tu cerchi. direi che a te serve la ST_Intersection(), che invece valuta due geometrie e ritorna la porzione comune ad entrambe; quindi nel tuo caso 'taglia via' le porzioni di uso_suolo fuori provincia. > Ho provato così > > create table test_diff as select a.CODICE_NUM, > Difference(a.Geometry,b.Geometry) from uso_suolo as a, provincia as b > > ma mi ha restituito una tabella con solo il codice e senza geometria. > non credo proprio: ti avrà restituito piuttosto una tabella con il codice correttamente valorizzato, e con le geometrie tutte impostate a NULL (vedi sopra). N.B. se usi brutalmente CREATE TABLE .. AS SELECT .. troverai inizialmente dei generici BLOB: per ottenere delle 'vere' geometrie dovrai poi eseguire: SELECT RecoverGeometryColumn() e la colonna geom avrà un nome orribile :-( molto meglio se prima ti crei a modo la tavola target con la sua geometria, e poi esegui: INSERT INTO ... (...) SELECT .... FROM ...; > Ho cercato sul web ma non trovato nulla (magari ho cercato male io) > al di fuori del SQL functions reference list ma nessun esempio > http://www.gaia-gis.it/spatialite/spatialite-tutorial-2.3.1.html#t4.3 BTW tutte queste funzioni (Difference, Union, Intersection etc) sono esattamente identiche a quelle di PostGIS :-) ciao Sandro _______________________________________________ Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione [hidden email] http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss Questa e' una lista di discussione pubblica aperta a tutti. Non inviate messaggi commerciali. I messaggi di questa lista non rispecchiano necessariamente le posizioni dell'Associazione GFOSS.it. 502 iscritti all'11.2.2011 |
Il 28 aprile 2011 13:07, <[hidden email]> ha scritto:
> direi che a te serve la ST_Intersection(), che invece > valuta due geometrie e ritorna la porzione comune ad > entrambe; quindi nel tuo caso 'taglia via' le porzioni > di uso_suolo fuori provincia. > ok, ma avendo solo la geometria corretta della provincia a fianco mi sono creato la geometria inversa.... speravo che differenze fosse la soluzione adatta > > N.B. se usi brutalmente CREATE TABLE .. AS SELECT .. > troverai inizialmente dei generici BLOB: per ottenere > delle 'vere' geometrie dovrai poi eseguire: > SELECT RecoverGeometryColumn() > e la colonna geom avrà un nome orribile :-( > > molto meglio se prima ti crei a modo la tavola > target con la sua geometria, e poi esegui: > INSERT INTO ... (...) > SELECT .... FROM ...; > ok Risolto il problema precedente ho provato allora a fare un merge/patch/union delle due tabelle ma ho ricevuto uno strano errore, non so però se la query è corretta spatialite> create table uso_suolo_union( ...> pk INTEGER PRIMARY KEY AUTOINCREMENT, ...> codice_baldo TEXT NOT NULL); spatialite> select addgeometrycolumn('uso_suolo_union','geometry',32632,'POLYGON','XY',1) ...> ; addgeometrycolumn('uso_suolo_union','geometry',32632,'POLYGON','XY',1) 1 insert into uso_suolo_union(codice_baldo,geometry) select a.codice_baldo, GUnion(a.Geometry,b.Geometry) from uso_suolo_verona2007 as a, uso_suolo_trentino2008 as b union all select b.codice_baldo, GUnion(a.Geometry,b.Geometry) from uso_suolo_trentino2008 as b, uso_suolo_verona2007 as a; > ciao Sandro > -- ciao e grazie Luca http://gis.cri.fmach.it/delucchi/ www.lucadelu.org _______________________________________________ Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione [hidden email] http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss Questa e' una lista di discussione pubblica aperta a tutti. Non inviate messaggi commerciali. I messaggi di questa lista non rispecchiano necessariamente le posizioni dell'Associazione GFOSS.it. 502 iscritti all'11.2.2011 |
On Thu, 28 Apr 2011 17:17:59 +0200, Luca Delucchi wrote
> Risolto il problema precedente ho provato allora a fare un > merge/patch/union delle due tabelle ma ho ricevuto uno strano errore, > non so però se la query è corretta > la query sembra pulita: ho provato a farne girare una strettamente analoga e funziona senza problemi. ma a te quale errore darebbe ? non mi pare di vederlo riportato nel tuo post :-) ciao Sandro _______________________________________________ Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione [hidden email] http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss Questa e' una lista di discussione pubblica aperta a tutti. Non inviate messaggi commerciali. I messaggi di questa lista non rispecchiano necessariamente le posizioni dell'Associazione GFOSS.it. 502 iscritti all'11.2.2011 |
Il 28 aprile 2011 17:44, <[hidden email]> ha scritto:
> > la query sembra pulita: ho provato a farne > girare una strettamente analoga e funziona > senza problemi. > bene questo mi fa piacere > ma a te quale errore darebbe ? SQL error: disk I/O error per informazione sono tabelle abbastanza pesanti (due usi del suolo provinciali) > non mi pare di vederlo riportato nel tuo post :-) > scusa l'ho perso nel copia e incolla > ciao Sandro > -- ciao Luca http://gis.cri.fmach.it/delucchi/ www.lucadelu.org _______________________________________________ Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione [hidden email] http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss Questa e' una lista di discussione pubblica aperta a tutti. Non inviate messaggi commerciali. I messaggi di questa lista non rispecchiano necessariamente le posizioni dell'Associazione GFOSS.it. 502 iscritti all'11.2.2011 |
On Thu, 28 Apr 2011 17:48:54 +0200, Luca Delucchi wrote
> SQL error: disk I/O error > LOL :D mai visto prima ... SQLITE_IOERR This value is returned if the operating system informs SQLite that it is unable to perform some disk I/O operation. This could mean that there is no more space left on the disk. Molto probabilmente hai "allagato" il disco :-) ... magari è il caso di aggiungere qualche clausola WHERE alle tue SELECT per evitare che ti esploda *tutto* il prodotto cartesiano delle due tavole in JOIN ciao Sandro _______________________________________________ Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione [hidden email] http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss Questa e' una lista di discussione pubblica aperta a tutti. Non inviate messaggi commerciali. I messaggi di questa lista non rispecchiano necessariamente le posizioni dell'Associazione GFOSS.it. 502 iscritti all'11.2.2011 |
2011/4/28 <[hidden email]>:
> > LOL :D > mai visto prima ... > > SQLITE_IOERR > This value is returned if the operating system informs > SQLite that it is unable to perform some disk I/O > operation. This could mean that there is no more space > left on the disk. > > Molto probabilmente hai "allagato" il disco :-) no no df -h . Filesystem Size Used Avail Use% Mounted on /dev/md2 861G 268G 549G 33% /home -rwxr-xr-x 1 lucadelu luca 568M 2011-04-29 08:45 montebaldo.sqlite > ... magari è il caso di aggiungere qualche > clausola WHERE alle tue SELECT per evitare che > ti esploda *tutto* il prodotto cartesiano delle > due tavole in JOIN > eh ma a me servono entrambe....che faccio riprovo? > ciao Sandro > -- ciao Luca http://gis.cri.fmach.it/delucchi/ www.lucadelu.org _______________________________________________ Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione [hidden email] http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss Questa e' una lista di discussione pubblica aperta a tutti. Non inviate messaggi commerciali. I messaggi di questa lista non rispecchiano necessariamente le posizioni dell'Associazione GFOSS.it. 502 iscritti all'11.2.2011 |
On Fri, 29 Apr 2011 11:13:33 +0200, Luca Delucchi wrote
> > Molto probabilmente hai "allagato" il disco :-) > > no no > > df -h . > Filesystem Size Used Avail Use% Mounted on > /dev/md2 861G 268G 549G 33% /home > > -rwxr-xr-x 1 lucadelu luca 568M 2011-04-29 08:45 montebaldo.sqlite > un errore di I/O potrebbe anche dipendere da un malfunzionamento HW :-( > > ... magari è il caso di aggiungere qualche > > clausola WHERE alle tue SELECT per evitare che > > ti esploda *tutto* il prodotto cartesiano delle > > due tavole in JOIN > > > > eh ma a me servono entrambe....che faccio riprovo? > magari puoi verificare prima la sola SELECT (senza insert) per stimare che razza di output genera: oppure puoi provare con un dataset limitato per verificare se lavora veramente come ti aspetti ciao Sandro _______________________________________________ Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione [hidden email] http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss Questa e' una lista di discussione pubblica aperta a tutti. Non inviate messaggi commerciali. I messaggi di questa lista non rispecchiano necessariamente le posizioni dell'Associazione GFOSS.it. 502 iscritti all'11.2.2011 |
Free forum by Nabble | Edit this page |