Натолкнулся на проблему преобразования из geometry типа
osmosis перегоняет osm файл в postgre, причем преобразовывая долготу и широту в формат geometry
для примера:
select * from nodes where id = 319852474;
id | version | user_id | tstamp | changeset_id | geom
-----------±--------±--------±--------------------±-------------±---------------------------------------------------
319852474 | 1 | 21417 | 2008-12-19 01:27:47 | 468495 | 0101000020E6100000320395F1EF873E402D05A4FD0F204B40
(1 row)
каким образом можно geom значение преобразовать обратно в latitude и longitude ?
зайдите в таблицу node_tags, будете приятно удивлены - там и широта, и долгота есть в чистом виде. колонка geom - дополнительная, это те же координаты в WKB. Из которого, в принципе, конвертировать-то можно, только в данном случае - не нужно.
\d node_tags
Table “public.node_tags”
Column | Type | Modifiers
---------±-------±----------
node_id | bigint | not null
k | text | not null
v | text | not null
Indexes:
“idx_node_tags_node_id” btree (node_id)
видимо несколько некорректно замечание - можно только инфу по ключам k и v вытянуть согласно node_id
красавец!!! что еще можно сказать, спасибо - выручили
тему можно, пожалуй, закрывать
(в дополнение)
select st_x(geom), st_y(geom) from nodes where id = 319852474;
st_x | st_y
-----------±----------
30.531005 | 54.250488
(1 row)
(не LIKE, а именно =, я вообще не понимаю, зачем сравнение использовать, когда у ключа четкое имя) , выдает количество вхождение, равное количеству узлов?
Ну и последний вопрос, если в базе нет lat и lon, ТО ОТКУДА ОСМОСИС ИХ ПОСЧИТАЛ В СТРОКУ geom? Так, ради интереса, посмотрите на запросы к базе, которые осмосис делает, он ВСЕ geometry рассчитывает силами Постгиса из данных, которые уже есть в базе!!!
Не может такого быть. Эти данные от схемы не зависят, это аттрибуты каждой точки и они у вас есть, иначе у вас не было бы колонки геометрия. Осмосис не считает геометрию сам ,он это делает силами постгиса из данных, имеющихся В БАЗЕ. Так что еще раз запустить приведенный выше запрос и убедитесь, что эти данные у вас ЕСТЬ!
Блин… geom не могла правильно посчитаться, если нет в node_tags lat и lon. Потому что она из них считается. Если их там нет - geom неверная! (То есть вообще должна быть пустая). Если у вас нет части данных - значит у вас неверно прошел импорт (хотя ума не приложу как так могло получиться!) Значит у вас может нехватать еще каких-то данных!!! То есть база НЕ ВАЛИДНАЯ!!!
Подтверждать чем-либо валидность базы, в которой доказано отсутствуют данные, которые там должны быть, нонсенс. Откуда вы знаете, что вместе с данными лат/лон не пропало что-то еще???
Upd. В любом случае, пользоваться базой вам, так что решайте сами. Только огромная просьба - не вносите ОБРАТНО в ОСМ данные, построенные на основе вашей базы, ибо это чревато ошибками!