💾 Archived View for pub.phreedom.club › ~progserega_linux › glog › 2016.10.17_postgis.gmi captured on 2024-08-25 at 00:42:15. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2023-03-20)
-=-=-=-=-=-=-
Есть postgis, в ней база OSM. Нужно получить точки, находящиеся рядом (ближе 50 метров) с заданной точкой с координатами 132.77883 и 43.17676:
select osm_id,ref from planet_osm_point where st_distance(ST_Transform(way,4326), ST_GeographyFromText('SRID=4326;POINT(' || '132.77883' || ' ' || '43.17676' || ')')) <=50;
Пояснения:
`ST_Transform(way,4326)` - геометрия в planet_osm_point хранится в поле way хитрым образом, но т.к. координаты в postgis-е хранятся в меркарторе (SRID=900913), а функции вычисления растояний работают с WGS84 (SRID=4326), а так же и наши координаты 132.77883 и 43.17676 тоже в WGS84, то нужно меркартор трафнсформировать в WGS84.