我正在使用PostGIS和PostgreSQL。我有2层数据。
polygons
字段为id
,quality
和geom
(几何形状)。points
和id
(几何形状)的表geom
。对于每个点(标记为黄色的示例点),我想找到最近的点,它显示强烈的特征,但这是在一个范围内(也是黄色)。 为了获得这种质量,我必须查看被调查点周围多边形的细节(绿色)。
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.id
以上是我到目前为止的尝试。正如您所看到的,它仅针对特定点。我希望输出结果适用于所有点,例如:
pt1.id
,pt2.id
,sum(p.quality)
表示pt1.id
是一个点,pt2.id
是最接近pt1的点(表现出质量),sum(p.quality)
是pt2中所有多边形质量的总和&# 39; s范围。我不知道如何继续构建查询。我将不胜感激任何帮助。我想这是一种聚类问题,但我在这里没有受过如此教育。