select *
from zones z
where st_intersects(z.geom, st_Buffer(ST_SetSRID(ST_Point( 2.336031, 48.863172), 3857),1));
看起来像' 1'在st_buffer中被解释为度,我需要在给定点的n米内找到几何。
我确实找到了对新函数(st_Buffer_Meters)的引用,但似乎并没有做任何不同的事情。
答案 0 :(得分: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
之前的问题答案 1 :(得分: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;