PostGIS - Нахождение агрегированных подсчетов по растворенным полигонам - PullRequest
0 голосов
/ 24 апреля 2020

Я установил этот запрос WITH, чтобы получить растворенные полигоны, где полигоны перекрываются: CREATE TABLE public.dissolve_intrsct AS ( WITH dissolved AS( SELECT ST_Union(pt.geom) as geom, count(geom) as buff_ct, count(pt.count) as intrsct_ct FROM public.intrsct_buff as pt )<br> SELECT (ST_DUMP(geom)).geom::geometry(POLYGON, 2263), intrsct_ct, buff_ct FROM dissolved);

Мой вывод возвращает геометрию (хорошо), но также возвращает общее количество всех геометрий перед запросом (59144) и для intrsct_buff, и для buff_ct

enter image description here

Я хочу, чтобы запрос возвратил количество полигонов, которые были распущены для создания нового полигона. (т.е. если три многоугольника перекрываются, после этого запроса я хочу, чтобы buff_ct вернул 3 , а intrsct_ct просто возвращает исходный счетчик, который у меня был в public.intrsct_buff)

1 Ответ

0 голосов
/ 26 апреля 2020

Я нашел, что нужно сделать ..

После создания этой таблицы и добавления ПЕРВИЧНОГО КЛЮЧА ID я затем использовал ST_Intersects, чтобы найти место пересечения моих растворенных полигонов с исходным буфером, и подсчитал количество пересекающихся полигонов. Смотрите код ниже: `

CREATE TABLE dissolve_ct AS(
SELECT ds.id, ds.geom, count(pt.geom) AS
buff_ct
FROM public.dissolve_intrsct as ds 
LEFT JOIN public.intrsct_buff as pt
ON ST_Intersects(ds.geom, pt.geom)
GROUP BY ds.id
    );

`

...