Ciao a tutti,
ho una serie di punti sui quali genero delle buffer, e ogni buffer ha un valore x. Ora vorrei trovare la somma del valore x in base alle intersezioni delle buffer. Se ho tre buffer con valore 1, e 2 delle buffer si intersecano, vorrei avere come risultato nel poligono di intersezione delle due buffer intersecate il valore 2 (ovvero la somma di x = 1 assegnato ad ogni buffer)
Nel concreto è perchè ho aree di rispetto archeologico con un certo valore. Dove queste si intersecano tra di loro, il valore di rispetto archeologico si va a sommare e vorrei trovarne il suo centroide.
Fino ad un intersect tra le geometrie di un medesimo layer ci arrivo, ma perdo i valori dei campi risultanti dalle geometrie sovrapposte. Qualche indizio su cosa cercare?
Grazie a tutti. Luca
_______________________________________________ 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 |
Ciao Luca, credo si debba fare in due passaggi: 1. Partendo dal layer originale con i buffer che si sovrappongono, ottieni un layer con le intersezioni dei buffer. L'hai già fatto mi pare, se si come? Hai usato GRASS e v.clean? 2. Effettui un join geometrico tra il layer delle intersezioni e quello dei buffer, raggruppando per id intersezione, e facendo sum(x) per i buffer. Ad esempio in PostGIS potrebbe essere: select intersezioni.id, sum(buffers.x) from intersezioni inner join buffers on st_contains(buffers.geom, intersezioni.geom) group by intersezioni.id Questa query può essere usata per trasferire sum(x) nella tabella delle intersezioni. Facci sapere Sig Il giorno gio, 02/06/2011 alle 21.19 +0200, Luca Mandolesi ha scritto: > Ciao a tutti, > ho una serie di punti sui quali genero delle buffer, e ogni buffer ha > un valore x. Ora vorrei trovare la somma del valore x in base alle > intersezioni delle buffer. > _______________________________________________ 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/6/3 Luca Sigfrido Percich <[hidden email]>
Ho usato gli ftools in python di Qgis perchè dovrei fare un pezzo di plugin in python. _______________________________________________ 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. 518 iscritti al 3.6.2011 |
Ok, molto bene, primo passettino andato.
Se faccio intersect con gli ftools mi ritorna solo le intersezioni dei poligoni a 2 a 2. Quindi non ottengo poligoni dalle intersezioni di 3 o più buffer. Cosa che invece ottengo importando in grass il layer, anche se accade una cosa che non comprendo: il layer ha tre buffer che si intersecano in un punto [1].
Lo shape di partenza ha 3 poligoni, mentre doop l'importazione in grass (sto lavorando da dentro Qgis), il layer grass ha 11 geometrie, di cui 11 sono tutte in buffer_polygon 1, mentre altre 4, che sono il risultato delle intersezioni, sono in buffer polygon2.
In pratica non ho più le mie tre geometrie di partenza.....e non so come caricare i tre poligoni originali in grass e quindi non posso fare una somma di campi tra geometrie che cadono nel medesimo punto.
Ora, l'unica cosa che ho saputo fare è stato risputare in shapefile i singoli poligoni ricavati dalle intersezioni delle buffer e fare una unione attributi per posizione, ma niente, la somma è globale per tutte le geometrie, quindi anche dove ne ho una sola, ricavo il valore totale che dovrei avere solo nel punto centrale.
Provo a passare un po' per python e le classi di pyqgis...vediamo un po'
_______________________________________________ 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. 518 iscritti al 3.6.2011 |
Ciao Luca, se passi il layer coi buffer (parzialmente) sovrapposti in un GIS topologico, ottieni un layer di poligoni senza sovrapposizioni, in cui ritrovi i poligoni originali solo quando questi non intersecavano ad altri poligoni. In un layer poligonale topologico non possono esistere sovrapposizioni. Dai tuoi 3 buffer in figura dovresti ottenere 7 poligoni. Purtroppo conosco pochissimo GRASS e non so darti istruzioni precise. So che v.clean ha una opzione per intersecare gli archi in ingresso. Concettualmente ti basta importare i linearring dei poligoni anche come archi, intersecarli e creare i poligoni. Una volta costruita la topologia poligonale, dovresti esportare il layer ottenuto in PostGIS (v.out.ogr), dove puoi trasferire gli attributi attraverso il join geometrico come già suggerito. Anche questa operazione credo si possa fare in GRASS, ovviamente dopo aver importato il layer dei buffer. Buon lavoro Sig Il giorno ven, 03/06/2011 alle 12.47 +0200, Luca Mandolesi ha scritto: > Ok, molto bene, primo passettino andato. > > > Se faccio intersect con gli ftools mi ritorna solo le intersezioni dei > poligoni a 2 a 2. Quindi non ottengo poligoni dalle intersezioni di 3 > o più buffer. > > > Cosa che invece ottengo importando in grass il layer, anche se accade > una cosa che non comprendo: > > > il layer ha tre buffer che si intersecano in un punto [1]. > > > Lo shape di partenza ha 3 poligoni, mentre doop l'importazione in > grass (sto lavorando da dentro Qgis), il layer grass ha 11 geometrie, > di cui 11 sono tutte in buffer_polygon 1, mentre altre 4, che sono il > risultato delle intersezioni, sono in buffer polygon2. > > > In pratica non ho più le mie tre geometrie di partenza.....e non so > come caricare i tre poligoni originali in grass e quindi non posso > fare una somma di campi tra geometrie che cadono nel medesimo punto. > > > Ora, l'unica cosa che ho saputo fare è stato risputare in shapefile i > singoli poligoni ricavati dalle intersezioni delle buffer e fare una > unione attributi per posizione, ma niente, la somma è globale per > tutte le geometrie, quindi anche dove ne ho una sola, ricavo il valore > totale che dovrei avere solo nel punto centrale. > > > Provo a passare un po' per python e le classi di pyqgis...vediamo un > po' > > > > [1] > https://picasaweb.google.com/mandoluca/Qgis#5613940766796339682 > > > _____________ PRIVACY Le informazioni contenute in questo messaggio sono riservate e confidenziali. Il loro utilizzo e' consentito esclusivamente al destinatario del messaggio, per le finalità indicate nel messaggio stesso. Qualora Lei non fosse la persona a cui il presente messaggio è destinato, La invitiamo ad eliminarlo dal Suo Sistema e a distruggere le varie copie o stampe, dandone gentilmente comunicazione all’indirizzo mail del mittente. Ogni utilizzo improprio e' contrario ai principi del D.lgs 196/03 e alla legislazione europea (Direttiva 2002/58/CE). PRIVACY Le informazioni contenute in questo messaggio sono riservate e confidenziali. Il loro utilizzo e' consentito esclusivamente al destinatario del messaggio, per le finalità indicate nel messaggio stesso. Qualora Lei non fosse la persona a cui il presente messaggio è destinato, La invitiamo ad eliminarlo dal Suo Sistema e a distruggere le varie copie o stampe, dandone gentilmente comunicazione all’indirizzo mail del mittente. Ogni utilizzo improprio e' contrario ai principi del D.lgs 196/03 e alla legislazione europea (Direttiva 2002/58/CE). _______________________________________________ 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. 518 iscritti al 3.6.2011 |
2011/6/3 Luca Sigfrido Percich <[hidden email]>:
> > Ciao Luca, > > se passi il layer coi buffer (parzialmente) sovrapposti in un GIS > topologico, ottieni un layer di poligoni senza sovrapposizioni, in cui > ritrovi i poligoni originali solo quando questi non intersecavano ad > altri poligoni. In un layer poligonale topologico non possono esistere > sovrapposizioni. Dai tuoi 3 buffer in figura dovresti ottenere 7 > poligoni. > > Purtroppo conosco pochissimo GRASS e non so darti istruzioni precise. In GRASS, con poligoni che sono topologicamente corretti non ci sono intersezioni. Altrimenti (ho chiesto a Markus Metz): 1. Creazione polylines: v.build.polylines 2. Convertire boundaries in linie (v.type) 3. v.clean tool=break error=intersections 4. statistica Spero che sia un aiuto, Markus _______________________________________________ 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. 518 iscritti al 3.6.2011 |
Non mi pare la strada giusta. Nel mio caso io devo poter avere l'intersezione tra le buffer e sommare il valore di un campo nel punto in cui le buffer si intersecano, in modo che se tre buffer si incontrano al cento e hanno valori 3, 5, 6, il poligono che risulta dall'incrocio abbia valore 14.
Altra cosa: come mai il comando buffer degli ftools genera tre buffer sovrapposte, mentre in grass si ottiene un unico poligono fuso? E' possibile in grass disabilitare la topologia?
2011/6/3 Markus Neteler <[hidden email]> 2011/6/3 Luca Sigfrido Percich <[hidden email]>: _______________________________________________ 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. 518 iscritti al 3.6.2011 |
2011/6/3 Luca Mandolesi <[hidden email]>:
.. > Altra cosa: > come mai il comando buffer degli ftools genera tre buffer sovrapposte, > mentre in grass si ottiene un unico poligono fuso? FTOOLS è "Simple Features" mentre GRASS è topologico. > E' possibile in grass disabilitare la topologia? Sì, durante import per esempio. Markus _______________________________________________ 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. 518 iscritti al 3.6.2011 |
Luca
_______________________________________________ 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. 518 iscritti al 3.6.2011 |
2011/6/3 Luca Mandolesi <[hidden email]>:
>> Sì, durante import per esempio. >> Markus > > > Grazie Markus! Sto lavorando dentro qgis e guardando le opzioni di > v.in.ogr.qgis e letto il manuale, ma non capisco come disabilitare la > topologia. Vero, esiste in altri import tools. In teoria potresti cancellare i file della topologia ma non ha molto senso cercare di analizzare topologia senza topologia. Markus _______________________________________________ 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. 518 iscritti al 3.6.2011 |
Mi sa che l'unica è importare le buffer che si intersecano in grass in modo che le spezzi.
Tra l'altro importando uno shape di tre buffer che si intersecano al centro, ottengo non sette, ma 11 poligoni. [1]
Infatti ne ho 2 sovrapposti dove 2 buffer si incrociano e 3 dove 3 buffer si incrociano. Peccato che i nuovi poligoni non tengano per ognuno i valori delle buffer di partenza, ma prendano tutte un valore comune.
Quindi ora proverò così: generare le buffer con ftools importarle in grass estrarre i centroidi con uno script in python trovare dove un centroide cade in una buffer, prendere il valore che mi interessa e sommarli in quel punto. Vi farò sapere!!! Grazie intanto. luca [1] https://picasaweb.google.com/mandoluca/Qgis#5613940766796339682
2011/6/3 Markus Neteler <[hidden email]>
_______________________________________________ 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. 518 iscritti al 3.6.2011 |
Scusate! Non è vero. I poligoni nati dalle intersezioni tengono ognuno il valore della buffer da cui provengono. Quindi ora rimane solo da sommare i valori dei poligoni che si sovrappongono!!!
scusate, sarà l'ora tarda! luca _______________________________________________ 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. 518 iscritti al 3.6.2011 |
Free forum by Nabble | Edit this page |