簡體   English   中英

PostGis在距線一定距離的多個表中查找點

[英]PostGis find points from multiple tables in certain distance from line

我有三個帶有幾何“lines”、“points_a”、“points_b”的表。 我想要做的是從兩個表中找到距離“線”1,5 m 范圍內的所有點

從一張表中查找點不是問題:

SELECT * from lines l 
JOIN points_a a ON (ST_DWithin(l.geom, a.geom, 1.5)

但我不知道如何用積分添加第二個表。 當我添加下一個加入時,我得到:兩者都在同一行緩沖區中的點,當其中只有一個是緩沖區時,我沒有得到它們

這些行中的某些內容可以解決問題:

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)

此致,
比亞尼

僅當它們在兩個緩沖區中時才獲取它們的原因是您使用內部連接來創建此查詢 - 這將排除任何ON子句為假的行。

您可以聚合 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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM