Координаты в базе OSM - как перевести их в другой вид

Загрузил базу OSM в PostgreSQL. В столбиках lon и lat стоят цифры, например: 698869171 - 307001200. Как их перевести в координаты, предположим, для Leaflet?

Сильно не пинайте, честно пытался разобраться в проекциях, пробовал разные алгоритмы из ВИКИ, но видимо мозгов не хватает - не понял нифига :frowning:

Надо использовать геометрии, ST_X(geom) возвращает долготу, ST_Y(geom) - широту. При этом географические координаты будут при проекции 4326. Либо в ней надо создавать базу (кажется, у osm2pgsql это делается ключом -E), либо приводить перед использованием: ST_X(ST_Transform(geom,4326)).

хм, для этих функций нужен тип данных geometry. как его получить?

а еще лучше ткнуть в описание всех функций postgis, если таковое имеется.

Ну э… http://postgis.refractions.net/documentation/manual-2.0/ и собственно
http://postgis.refractions.net/documentation/manual-2.0/reference.html

Получил координаты так
ST_X(ST_SetSRID(ST_MakePoint(planet_osm_nodes.lon/100,planet_osm_nodes.lat/100),4326))
ST_Y(ST_SetSRID(ST_MakePoint(planet_osm_nodes.lon/100,planet_osm_nodes.lat/100),4326))
потом перевел в Меркатора по http://wiki.openstreetmap.org/wiki/Mercator

RusFox, объясните,

  1. зачем вы придумали такую страшную конструкцию - сначала запихать цифры в точку, потом сразу же оттуда извлечь;
  2. чем вас не устроил select ST_AsGeoJSON(way) from planet_osm_point limit 1;, что вам пришлось зачем-то лезть в slim-таблицу с нодами?

О, Учитель, это был долгий путь. Поскольку инфа о Postgis велика, а мои познания в языке иностранном малы, я решил оттолкнуться в своих изысканиях от единственного совета в этой беседе и использовать ST_X. И единственным средством получить аргумент для этой функции мудрейший гугл подсказал мне именно эту конструкцию. Ноды же приглянулись мне, ибо содержат они строку волшебную, tags называемую и все теги включающую.