2017-08-26 38 views
1

我仍在学习postgis并需要一些帮助。我有2个桌子,城市和景点。我想返回给定城市X英里范围内的所有景点。这些是我自己的桌子,所以我可以用最适合的方式设置它们。现在,我的景点有一个gerid POINT列,其中srid 4326是lat/lng。我的城市桌上有一个包围城市边界的geom BOUNDING BOX(POLYGON)列。我用ST_MakeEnvelope来填写那一列,也是4326.在postgis中返回100英里范围内的所有点

我看了一下ST_Expand和ST_DWithin,但我似乎无法弄清楚如何同时搜索景点表和展开框,并返回英里。

任何指导非常感谢!

回答

1

我想给城市的X英里内归还所有景点

,很容易与ST_DWithin

SELECT * 
FROM attractions AS a 
JOIN cities AS c 
WHERE ST_DWithin(c.geom::geography, a.geom::geography, X*1604); 
+0

这是伟大的!谢谢埃文!一个变化 - 使用ON而不是WHERE,它完美的工作! – Coco