Estoy trabajando con PostGIS y PostgreSQL. Tengo 2 capas de datos.
polygons de tabla con campos id , quality y geom (forma geométrica).points con campos id y geom (forma geométrica).Para cada punto (punto de ejemplo marcado en amarillo), me gustaría encontrar el punto más cercano que muestre una característica fuerte pero que esté dentro de un rango (también amarillo). Para obtener esta cualidad, tengo que mirar los detalles de los polígonos que rodean los puntos bajo investigación (verde).
SELECT pt1.id, pt2.id, p.id, sum(p.quality) as quality_total FROM polygons p, points pt1, points pt2 WHERE ST_DWithin(pt1.geom, pt2.geom, 100) --points maximum 100 units away from each other AND ST_DWithin(p.geom, pt2.geom, 10) --polygons maximum 10 units away from point pt2 AND (pt1.id = 1 OR pt1.id = 2) --specific points GROUP BY quality, pt1.id, pt2.id, p.idArriba está mi intento hasta ahora. Como puede ver, es solo para puntos específicos. Esperaba que el resultado fuera para todos los puntos, como:
pt1.id,pt2.id,sum(p.quality)
para significar que pt1.id es un punto, pt2.id es el punto más cercano a pt1 (exhibiendo una cualidad) y sum(p.quality) es la suma de la calidad de todos los polígonos en el rango de pt2. No sé cómo continuar construyendo la consulta. Apreciaría cualquier ayuda. Supongo que esta es una forma de problema de agrupamiento, pero no estoy tan educado aquí.