Tengo un conjunto de datos que contiene edificios donde cada edificio tiene un determinado valor/puntuación. Lo que quiero hacer es agrupar estos edificios en función de sus valores/puntuaciones. Lo que he hecho hasta ahora es crear un búfer alrededor de cada edificio, de modo que sea posible determinar cuál y cuántos otros edificios son intersectados por un edificio. Este búfer tiene el correspondiente valor / puntuación del edificio donde el búfer se construye alrededor.
Lo que quiero hacer ahora, es que quiero disolver estos buffers como uno, cuando/si los edificios que el buffer intersecta tienen el mismo o mayor valor/puntuación que el edificio alrededor del cual se está construyendo el buffer (edificio origen).
Así que creo que una "simple" sentencia if o where debería funcionar. Sin embargo, soy un principiante en PostGIS y por lo tanto no estoy seguro de cómo y dónde escribir esto en PostGIS.
Mi consulta SQL hasta ahora es:
WITH sum AS (
WITH buffertest AS (
SELECT Building_score, Building_ID, ST_Buffer(geom, 30)::geometry(polygon,28992) AS buffer
FROM postgis_export)
SELECT b.Building_score AS bufferscores, b.Building_ID AS bufferID, a.Building_score AS building, b.buffer
FROM postgis_export a, buffertest b WHERE ST_intersects(b.buffer, a.geom) AND b.gebouw_sco - a.gebouw_sco <= 0 )
SELECT bufferscores, bufferid, SUM(gebouw), COUNT(*), buffer
FROM sum
GROUP BY bufferscores, bufferid, buffer
ORDER BY bufferid