Ciao a tutti,
Ho un problemino con postgis (2.1.3) che mi sta facendo uscire pazzo; non ho più idea dove sbattere la testa e soprattutto dove sto sbagliando. In una tabella ho un insieme di linee che rappresentano delle curve di livello ed il bordo che le racchiude. Il bordo è spezzato ad ogni intersezione tra le curve ed il bordo stesso. Quello che sto cercando di ottenere è l'insieme di poligoni che si trovano fra due curve di livello, quindi in linea teorica i poligoni che si vengono a creare con due segmenti di bordo e le due curve di livello. Ho provato ad impiegare ST_BuildArea con St_Union ma il risultato che ottengo è un unico enorme poligono comprendente tutta l'area racchiusa dal bordo. Avete idea di dove sbaglio ? Grazie, L. -- _______________________________________________ [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. 666+40 iscritti al 5.6.2014 |
Ho l'impressione ch la Union non vada bene.
Ma dipende da quello che ci fai. Le linee che citi come isoipse sono una unica lina chiusa, o sono tante linee spezzate e in contatto tra loro sui bordi ? In ogni caso non è per niente facile il tuo compito. Perche' in generale te non puoi dare per scontato che una isoipsa sia circoscritta da una altra isoispa solamente. Potrebbe non averne nessuna che la circoscrive e viceversa circoscriverne tante di pari livello anziche' una sola. Quindi non e' facile riassumerla in una buildarea. Perche' non riesci a stabilire prima di costruire i poligoni quali linee sono contenute e quali stanno fuori. A occhio direi che devi fare in piu' passi. prima componi i poligoni di tutte le isoispe e poi (questa e' la parte difficile) passi a bucarli cercando intersezioni e sottraendo geometricamente ogni poligono che e' completamente contenuto. L'unica cosa su cui puoi contare è che il poligono di una isoipsa e' completamente contenuto o completamente esterno a qualsiasi altro. Per cui se e' interno va sottratto,se e' esterno va escluso. Non so' se e' la stategia migliore, ma e' l'unica che mi viene in mente. A. Il 19 settembre 2014 15:49, Pier Lorenzo Marasco <[hidden email]> ha scritto: > Ciao a tutti, > > Ho un problemino con postgis (2.1.3) che mi sta facendo uscire pazzo; > non ho più idea dove sbattere la testa e soprattutto dove sto > sbagliando. > In una tabella ho un insieme di linee che rappresentano delle curve di > livello ed il bordo che le racchiude. > Il bordo è spezzato ad ogni intersezione tra le curve ed il bordo stesso. > Quello che sto cercando di ottenere è l'insieme di poligoni che si > trovano fra due curve di livello, quindi in linea teorica i poligoni > che si vengono a creare con due segmenti di bordo e le due curve di > livello. > Ho provato ad impiegare ST_BuildArea con St_Union ma il risultato che > ottengo è un unico enorme poligono comprendente tutta l'area racchiusa > dal bordo. > Avete idea di dove sbaglio ? > Grazie, > > L. > > > -- > _______________________________________________ > [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. > 666+40 iscritti al 5.6.2014 -- ----------------- Andrea Peri . . . . . . . . . qwerty àèìòù ----------------- _______________________________________________ [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. 666+40 iscritti al 5.6.2014 |
In reply to this post by Pier Lorenzo Marasco
Il 19/09/2014 15:49, Pier Lorenzo Marasco ha scritto:
> Ciao a tutti, > > Ho un problemino con postgis (2.1.3) che mi sta facendo uscire pazzo; > non ho più idea dove sbattere la testa e soprattutto dove sto > sbagliando. > In una tabella ho un insieme di linee che rappresentano delle curve di > livello ed il bordo che le racchiude. > Il bordo Ú spezzato ad ogni intersezione tra le curve ed il bordo stesso. > Quello che sto cercando di ottenere Ú l'insieme di poligoni che si > trovano fra due curve di livello, quindi in linea teorica i poligoni > che si vengono a creare con due segmenti di bordo e le due curve di > livello. > Ho provato ad impiegare ST_BuildArea con St_Union ma il risultato che > ottengo Ú un unico enorme poligono comprendente tutta l'area racchiusa > dal bordo. > Avete idea di dove sbaglio ? Se usi ST_Union e' normale che te li unisce tutti... Proverei invece con ST_Polygonize dopo aver creato i nodi delle linestring con ST_Node. ciao Antonio -- Antonio Falciano http://www.linkedin.com/in/antoniofalciano _______________________________________________ [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. 666+40 iscritti al 5.6.2014 |
In reply to this post by Pier Lorenzo Marasco
È un problema che ho avuto non troppo tempo fa e, a parte la questione
dei bordi, il punto critico è che bucando i poligoni più grandi con quelli contenuti, come dice Andrea, se le quote salgono non ci sono problemi, se scendono (una dolina per esempio) sono dolori. Ovvero se hai 20 isolinee ok, se ne hai migliaia capire cosa buca cosa senza una ricognizione caso per caso è un bel problema che personalmente non sono riuscito a risolvere. Se qualcuno c'è riuscito con una qualche procedura e me lo insegna gli sarò grato almeno fino alla pensione. Iacopo Il giorno ven, 19/09/2014 alle 15.49 +0200, Pier Lorenzo Marasco ha scritto: > Ciao a tutti, > > Ho un problemino con postgis (2.1.3) che mi sta facendo uscire pazzo; > non ho più idea dove sbattere la testa e soprattutto dove sto > sbagliando. > In una tabella ho un insieme di linee che rappresentano delle curve di > livello ed il bordo che le racchiude. > Il bordo è spezzato ad ogni intersezione tra le curve ed il bordo stesso. > Quello che sto cercando di ottenere è l'insieme di poligoni che si > trovano fra due curve di livello, quindi in linea teorica i poligoni > che si vengono a creare con due segmenti di bordo e le due curve di > livello. > Ho provato ad impiegare ST_BuildArea con St_Union ma il risultato che > ottengo è un unico enorme poligono comprendente tutta l'area racchiusa > dal bordo. > Avete idea di dove sbaglio ? > Grazie, > > L. > > > -- > _______________________________________________ > [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. > 666+40 iscritti al 5.6.2014 _______________________________________________ [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. 666+40 iscritti al 5.6.2014 |
In reply to this post by Pier Lorenzo Marasco
Ciao,
come dice Antonio, qui la funzione da usare è ST_Polygonize, ma coadiuvata da altre funzioni in modo da ottenere un risultato leggibile. CREATE TABLE test_lines_polygonize AS SELECT (ST_Dump(b.coll2poly)).geom AS geom FROM (SELECT ST_Polygonize(geom) AS coll2poly FROM (SELECT geom FROM test_lines) AS a) AS b; 2014-09-19 15:49 GMT+02:00 Pier Lorenzo Marasco <[hidden email]>: > Ciao a tutti, > > Ho un problemino con postgis (2.1.3) che mi sta facendo uscire pazzo; > non ho più idea dove sbattere la testa e soprattutto dove sto > sbagliando. > In una tabella ho un insieme di linee che rappresentano delle curve di > livello ed il bordo che le racchiude. > Il bordo è spezzato ad ogni intersezione tra le curve ed il bordo stesso. > Quello che sto cercando di ottenere è l'insieme di poligoni che si > trovano fra due curve di livello, quindi in linea teorica i poligoni > che si vengono a creare con due segmenti di bordo e le due curve di > livello. > Ho provato ad impiegare ST_BuildArea con St_Union ma il risultato che > ottengo è un unico enorme poligono comprendente tutta l'area racchiusa > dal bordo. > Avete idea di dove sbaglio ? > Grazie, > > L. > > > -- > _______________________________________________ > [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. > 666+40 iscritti al 5.6.2014 -- Salvatore Larosa linkedIn: http://linkedin.com/in/larosasalvatore twitter: @lrssvt skype: s.larosa IRC: lrssvt on freenode _______________________________________________ [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. 666+40 iscritti al 5.6.2014 |
2014-09-19 23:30 GMT+02:00 Salvatore Larosa <[hidden email]>:
> Ciao, > come dice Antonio, qui la funzione da usare è ST_Polygonize, ma > coadiuvata da altre funzioni > in modo da ottenere un risultato leggibile. > > CREATE TABLE test_lines_polygonize AS > SELECT (ST_Dump(b.coll2poly)).geom AS geom > FROM (SELECT ST_Polygonize(geom) AS coll2poly > FROM (SELECT geom FROM test_lines) AS a) AS b; che non è altro che quella riportata nella documentazione :^) http://postgis.refractions.net/documentation/manual-2.0/ST_Polygonize.html Saluti (mi è scappata la mail prima!) -- Salvatore Larosa linkedIn: http://linkedin.com/in/larosasalvatore twitter: @lrssvt skype: s.larosa IRC: lrssvt on freenode _______________________________________________ [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. 666+40 iscritti al 5.6.2014 |
Il 19/09/2014 23:38, Salvatore Larosa ha scritto:
> 2014-09-19 23:30 GMT+02:00 Salvatore Larosa <[hidden email]>: >> Ciao, >> come dice Antonio, qui la funzione da usare è ST_Polygonize, ma >> coadiuvata da altre funzioni >> in modo da ottenere un risultato leggibile. >> >> CREATE TABLE test_lines_polygonize AS >> SELECT (ST_Dump(b.coll2poly)).geom AS geom >> FROM (SELECT ST_Polygonize(geom) AS coll2poly >> FROM (SELECT geom FROM test_lines) AS a) AS b; > > che non è altro che quella riportata nella documentazione :^) > http://postgis.refractions.net/documentation/manual-2.0/ST_Polygonize.html Per la cronaca, il problema e' evidentemente piu' elusivo di quanto parrebbe a prima vista: un po' di tempo fa ci ho provato con GRASS, ma anche li' non sono riuscito ad arrivare in fondo, forse per bugs. Per gli interessati, ci sono le tracce nella mailing list internazionale di grass. Saluti. -- Paolo Cavallini - www.faunalia.eu Corsi QGIS e PostGIS: http://www.faunalia.eu/training.html _______________________________________________ [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. 666+40 iscritti al 5.6.2014 |
In reply to this post by Salvatore Larosa
Ciao a tutti,
è bello rientrare a lavoro e scoprire che il problema che tu pensavi essere piccolo è in realtà un mostro a tre teste... ora come ora sono a cercare disperatamente un armatura ed una spada dato che tutte le armi in mio possesso sono state divorate ferocemente dalla belva. Vado con ordine... Grazie Andrea per avermi illuminato che quello che sto combattendo è un drago a due teste... grazie Antonio per avermi detto che un drago non si combatte unendo i mattoni con la calce nel vano tentativo di sperare che costruire un castello risolva il problema ...grazie a Iacopo ho capito che non sono il solo ad aver a che fare con lucertoloni un po cresciuti...ed infine grazie a Salvatore che mi ha dato una lancia che quanto meno ha scalfito la dura corazza della bestiolina a due teste. Sfortunatamente a sta bestia è spuntata la terza testa... Venendo agli aspetti prettamente tecnici e meno scherzosi, La soluzione di Salvatore/Antonio ha si prodotto magnificamente i poligoni che vorrei. Quindi a futura memoria di tutti quelli che dovranno creare poligoni da linee la soluzione di Salvatore/Antonio è perfetta e funziona magnificamente anche con poligoni ricadenti in altri poligoni. Sfortunatamente nel foglio che sto analizzando in questo momento non vi sono chissà quali isoipse con all'interno altre isoipse ma piuttosto isoipse che si sovrappongono nella bidimensione, per tratti più o meno lunghi, tra di loro. A questi punti devo trovare il modo di aggregare le linee aventi la stessa quota durante la collezione e successivamente passarle al polygonize. Grazie di nuovo a tutti per le dritte che mi avete dato e scusate se non vi ho risposto prima. L. Il 19 settembre 2014 23:38, Salvatore Larosa <[hidden email]> ha scritto: > 2014-09-19 23:30 GMT+02:00 Salvatore Larosa <[hidden email]>: >> Ciao, >> come dice Antonio, qui la funzione da usare è ST_Polygonize, ma >> coadiuvata da altre funzioni >> in modo da ottenere un risultato leggibile. >> >> CREATE TABLE test_lines_polygonize AS >> SELECT (ST_Dump(b.coll2poly)).geom AS geom >> FROM (SELECT ST_Polygonize(geom) AS coll2poly >> FROM (SELECT geom FROM test_lines) AS a) AS b; > > che non è altro che quella riportata nella documentazione :^) > http://postgis.refractions.net/documentation/manual-2.0/ST_Polygonize.html > > Saluti (mi è scappata la mail prima!) > > -- > Salvatore Larosa > linkedIn: http://linkedin.com/in/larosasalvatore > twitter: @lrssvt > skype: s.larosa > IRC: lrssvt on freenode -- Pier Lorenzo Marasco Via D.Moreni,2 50135 Firenze cell/mobile +39 329 35 37527 Casa/home +39 055 011 71 20 skype pl.marasco _______________________________________________ [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. 666+40 iscritti al 5.6.2014 |
Free forum by Nabble | Edit this page |