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


9

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

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

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

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

Ответы:


7

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

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

Спасибо @dbaston! Я попробую в ближайшие дни и дам вам знать.
wiltomap

Функция ST_ClusterIntersecting()доступна в PostGIS 2.2 ... Есть ли решение с более старой версией? Я нахожусь на PostGIS 2.1.8 и пока не могу обновить PostGIS.
wiltomap

Ничего, что я бы посчитал хорошим ... на самом деле именно эта ситуация побудила меня написать ST_ClusterIntersecting. Некоторые идеи до 2.2 можно найти на gis.stackexchange.com/q/94203/18189
dbaston
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.