2
select *
from zones z
where st_intersects(z.geom, st_Buffer(ST_SetSRID(ST_Point(     2.336031, 48.863172), 3857),1));

看起来 st_buffer 中的“1”被解释为度数,我需要在给定点的 n 米内找到几何图形。

我确实找到了对新函数 (st_Buffer_Meters) 的引用,但这似乎并没有什么不同。

4

2 回答 2

2

最终工作的实际查询是:

 select nom
 from zones s
 where ST_DWITHIN(Geography(ST_Transform(s.geom,4326)), ST_Point($1, $2) ,$3);`

其中 $1 是经度,$2 是纬度,$3 是距离(米)。

此外,我将导入的数据从 SRID 3857 更改为 SRID 4326

这是 gis.stackexchange 问题:https ://gis.stackexchange.com/questions/118472/postgis-get-geometries-within-a-radius-of-n-meters-using-wgs84/118476#118476

这是链接https://gis.stackexchange.com/questions/77688/postgis-get-the-points-that-are-x-meters-near-another-point-in-meters

于 2014-10-22T16:00:49.833 回答
0

首先,我简化了您的查询以使用距离函数,这将与您的查询使用更少的单词执行相同的操作。ST_Distance_Sphere将返回两个几何图形之间的最小距离(以米为单位)。但是我在使用您的 SRID 时遇到了一些困难,所以我使用ST_Transform将 SRID 转换为4326

select *
from zones z
where st_distance_sphere(z.geom, 
     ST_TRANSFORM(ST_SetSRID(ST_Point( 2.336031, 48.863172), 3857), 4326  
)< 1000;
于 2014-10-21T14:57:57.307 回答