PostGIS: как объединить смежные объекты с одинаковыми значениями атрибутов?

9

У меня есть большая таблица характеристик PostGIS.

Я хотел бы объединить объекты, которые оба связаны друг с другом и имеют одинаковые значения атрибутов. Ниже приведен пример того, чего я хотел бы достичь.

  • Самые внешние объекты (черные и синие) не объединяются, потому что они не являются смежными, даже если значения их атрибутов совпадают
  • Объекты зеленого и красного цвета объединены, поскольку они соответствуют обоим условиям
  • Особенность желтого цвета осталась прежней.

Как бы вы достигли этого с помощью SQL-запроса? введите описание изображения здесь

wiltomap
источник

Ответы:

7

Вы можете сделать это с помощью ST_ClusterIntersecting :

SELECT attr, unnest(ST_ClusterIntersecting(geom))
FROM lines
GROUP by attr;
dbaston
источник
Спасибо @dbaston! Я попробую в ближайшие дни и дам вам знать.
wiltomap
Функция ST_ClusterIntersecting()доступна в PostGIS 2.2 ... Есть ли решение с более старой версией? Я нахожусь на PostGIS 2.1.8 и пока не могу обновить PostGIS.
wiltomap
Ничего, что я бы посчитал хорошим ... на самом деле именно эта ситуация побудила меня написать ST_ClusterIntersecting. Некоторые идеи до 2.2 можно найти на gis.stackexchange.com/q/94203/18189
dbaston