postgis получает геометрию в радиусе метров, используя wgs84

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), но она, похоже, не делает ничего другого.


person Gary    schedule 16.10.2014    source источник
comment
возможно, это лучше подходит для gis.stackexchange.com   -  person Paul H    schedule 16.10.2014
comment
Пожалуй, я так и поступлю.   -  person Gary    schedule 16.10.2014


Ответы (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: 118476">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-вметрах

person Gary    schedule 22.10.2014

Во-первых, я упростил ваш запрос, чтобы использовать функцию расстояния, которая будет делать то же самое, что и ваш запрос, но с меньшим количеством слов. 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;
person raphael    schedule 21.10.2014
comment
Я получил хороший совет от gis.stackexchange и решил проблему. В частности, я изменил свой исходный импорт данных с srid 3857 на 4326, и это значительно упростило все. gis также имел существующие ответы gis.stackexchange.com/questions/77688/ - person Gary; 22.10.2014