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) 的引用,但这似乎并没有什么不同。
最终工作的实际查询是:
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
首先,我简化了您的查询以使用距离函数,这将与您的查询使用更少的单词执行相同的操作。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;