PostGIS: come unire caratteristiche contigue che condividono gli stessi valori degli attributi?


9

Ho una grande tabella PostGIS che memorizza le funzioni di linea.

Vorrei unire le funzionalità che sono entrambe collegate tra loro e che hanno dato valori di attributo identici. Ecco un esempio di ciò che mi piacerebbe ottenere.

  • Le funzionalità più estreme (nere e blu) non vengono unite perché non sono contigue anche se i loro valori di attributo sono uguali
  • Le caratteristiche verde e rosso vengono unite perché soddisfano entrambe le condizioni
  • La funzione gialla viene lasciata come prima.

Come lo otterresti con una query SQL? inserisci qui la descrizione dell'immagine

Risposte:


7

Puoi farlo con ST_ClusterIntersecting :

SELECT attr, unnest(ST_ClusterIntersecting(geom))
FROM lines
GROUP by attr;

Grazie @dbaston! Lo proverò nei prossimi giorni e ti farò sapere.
Wiltomap,

La funzione ST_ClusterIntersecting()è disponibile da PostGIS 2.2 ... Esiste una soluzione con una versione precedente? Sono su PostGIS 2.1.8 e non posso aggiornare PostGIS per il momento.
Wiltomap

Nulla che considererei buono ... in realtà è questa situazione che mi ha motivato a scrivere ST_ClusterIntersecting. Alcune idee pre-2.2 sono disponibili su gis.stackexchange.com/q/94203/18189
dbaston
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.