我有三个表,这些表的几何形状为“线”,“ points_a”,“ points_b”。 我想做的是从两个表中找到所有位于“直线” 1.5 m范围内的点。
从一个表中查找点不是问题:
SELECT * from lines l
JOIN points_a a ON (ST_DWithin(l.geom, a.geom, 1.5)
但是我不知道如何添加第二张表。 当我添加下一个Join时,我得到:都位于同一行中的点,当其中只有一个是缓冲区时,我没有得到它们
答案 0 :(得分:0)
这些行中的东西可以解决问题:
SELECT * from (select * from lines union all select * from lines2) l
JOIN points_a a ON (ST_DWithin(l.geom, a.geom, 1.5)
或
SELECT * from lines l1
JOIN points_a a ON (ST_DWithin(l1.geom, a.geom, 1.5)
union all
SELECT * from lines l2
JOIN points_a a ON (ST_DWithin(l2.geom, a.geom, 1.5)
最好的问候,
比尼亚尼
答案 1 :(得分:0)
仅在它们同时位于两个缓冲区中时才得到它们的原因是,您正在使用内部联接来创建此查询-这将排除其中任何ON
子句为false的行。
您可以在CTE(或子查询)中汇总点,并在其上加入:
WITH points AS (
SELECT geom FROM points_a
UNION ALL
SELECT geom FROM points_b
)
SELECT
*
FROM
lines l
JOIN
points p ON ST_DWithin(l.geom, p.geom, 1.5)