需要一种方法来检查在给定的时间间隔内哪些几何点彼此之间的距离在设定的距离内

Need a way to check which geometry points are within a set distance from each other at a given time interval

所以我有一个空间数据库,其中包含名为 "ships" 的船舶坐标。 它有下表:

SHIPS
============
id (serial)
vessel(uuid)
time(timestamp without timezone)
coord(geometry(Point, 4326)

我需要写一个查询,returns 船只坐标距离 X 米,时间间隔为 Y。到目前为止我有这个:

SELECT DISTINCT ON (a.vessel, b.vessel) a.vessel, b.vessel 
FROM ships a
INNER JOIN ships b
ON a.vessel = b.vessel
WHERE
ST_DWithin((ST_Transform(a.coord, 3035)),(ST_Transform(b.coord, 3035)), 5000)
AND (EXTRACT (EPOCH FROM(a.time - b.time))) <= 1500
AND (a.vessel != b.vessel);

但如果我离开 a.vessel != b.vessel 约束,它总是 returns null,如果我删除它,结果在两列上都是相同的容器。

您在连接中使用了错误的条件:

SELECT DISTINCT ON (a.vessel, b.vessel) a.vessel, b.vessel 
FROM ships a
INNER JOIN ships b
ON ST_DWithin((ST_Transform(a.coord, 3035)),(ST_Transform(b.coord, 3035)), 5000)
WHERE
(EXTRACT (EPOCH FROM(a.time - b.time))) <= 1500
AND (a.vessel != b.vessel);