Не получается загрузить OSM России

glax2020
Активный участник
Сообщения: 175
Зарегистрирован: 19 ноя 2012, 15:59
Репутация: 6

Не получается загрузить OSM России

Сообщение glax2020 » 23 окт 2016, 18:25

Всех приветствую.

Уже несколько дней страдаю и не получается загрузить OSM России (http://gis-lab.info/projects/osm_dump/index.html; пробовал оба формата: osm.pbf и osm.bz2 ).

1) О вариантах запуска:

- проходит, но не корректно
"...\x64\osm2pgsql.exe" -C 6000 -H localhost -P 5435 -U postgres -d pbf_ru "RU.osm.bz2"
Версия взята из http://gis.stackexchange.com/questions/ ... -osm2pgsql и некорректность загрузки в следующем:
- загружены в PostreSQL: planet_osm_point, planet_osm_line, planet_osm_polygon, planet_osm_roads;
- ОТСУТСТВУЮТ: planet_osm_nodes, planet_osm_ways, planet_osm_rels;


По моему отсутствие перечисленных таблиц критическая ошибка - в принципе в этом случае, не знаю как получить OpenStreetMap ID, ибо не могу например для объектов из planet_osm_polygon понять у объекта ссылка на WAY или RELATION:
* по моему могут быть площадные объекты, которые состоят из одного замкнутого WAY, а могут быть составные - здесь RELATION.
* также например для Границы Москвы: OSM ID -2555133 (отрицательное), а реально у него Relation = 2555133 (положительное) https://www.openstreetmap.org/relation/ ... 63/37.6268

Как подобные проблемы решить без таблицы planet_osm_rels - не представляю.

Также эти слои нужны и для различной полезной МЕТА - информации (русские, английские наименования, дополнительная информация по объектам).

То есть это для меня неудовлетворительно.

2) При попытке закачать OSM c помощью разных других вариантов параметров, например:

Код: Выделить всё

   -C 512 --slim --hstore --cache-strategy sparse
   -s -c "RU.osm.bz2"
Также проверка была и на другой версии osm2pgsql (SVN version 0.80.0 ;32bit id space).

Во всех случаях и вариантах была ошибка:

Код: Выделить всё

 failed: ОШИБКА:  повторяющееся значение ключа нарушает ограничение уникальности "planet_osm_nodes_pkey"
DETAIL:  Ключ "(id)=(124324)" уже существует.
CONTEXT:  COPY planet_osm_nodes, строка 228359916: "125509      811621955       547334333       \N"
Ошибка мне ни о чем не говорит и можно ли ее исправить (и не появится ли другой подобной)

http://www.openstreetmap.org/node/12432 ... 30.7988164

Код: Выделить всё

<osm version="0.6" generator="CGImap 0.5.6 (9056 thorn-01.openstreetmap.org)" copyright="OpenStreetMap and contributors" attribution="http://www.openstreetmap.org/copyright" license="http://opendatacommons.org/licenses/odbl/1-0/">
<node id="124324" visible="true" version="2" changeset="14364839" 
timestamp="2012-12-22T11:33:16Z" user="ToffeHoff" uid="7203" lat="69.7869212" lon="30.7988164"/>
</osm>
Вопросы и проблемы в целом:

1) Как и каким образом все таки можно закачать OSM России полноценным образом, и чтобы были все полезные таблицы, а не часть их: planet_osm_point, planet_osm_line, planet_osm_polygon, planet_osm_roads, а также planet_osm_nodes, planet_osm_ways, planet_osm_rels.

2) Где можно взять полноценный osm2pgsql.exe, но именно 64 bit, и чтобы он все таки загружал все 7 нужных таблиц, а не часть их (32 разрядной версией OSM России боюсь, что мне уже в принципе не закачать из - за наличия известной проблемы DETAIL: Ключ "(id)=(124324)" уже существует -- id может и изменится, а проблема боюсь останется...) Информация по ссылке http://wiki.openstreetmap.org/wiki/Osm2pgsql не дает ясного и полноценного ответа для 64 Windows...

С большинством других OSM по регионам России проблем нет и сейчас. Обе версии osm2pgsql.exe успешно экспортируют OSM в PostreSQL (вчера проверил, самый маленький OSM взял, кажется туркменский) -- все в порядке: 7 основных таблиц сформированы.

Проблема с OSM России и как его загрузить корректно -- не знаю, не получается.

Может кто-нибудь поможет и подскажет, как возможно эту "беду" разрешить?

Спасибо.

С ув. Александр
Последний раз редактировалось glax2020 28 окт 2016, 10:54, всего редактировалось 4 раза.

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 793
Ваше звание: званий не имею
Откуда: Москва

Re: Не получается загрузить OSM России

Сообщение Александр Мурый » 23 окт 2016, 18:50

glax2020 писал(а):Всех приветствую.
ОТСУТСТВУЮТ: planet_osm_nodes, planet_osm_ways, planet_osm_rels;
Для получения дополнительных таблиц (а именно planet_osm_nodes, planet_osm_ways, planet_osm_rels) надо использовать опцию "-slim". Попробуйте пересоздать базу данных и запустить заново с этой опцией.

По опыту могу сказать, что для загрузки OSM по России желательно не меньше 32 Гб опер. памяти (а лучше больше) и SSD-диск (потому как большая нагрузка на диск). Значение "--cache" при памяти в 32 Гб я бы ставил, например, 15000. И обязательно с опцией "--flat-nodes".
Редактор материалов, модератор форума

glax2020
Активный участник
Сообщения: 175
Зарегистрирован: 19 ноя 2012, 15:59
Репутация: 6

Re: Не получается загрузить OSM России

Сообщение glax2020 » 23 окт 2016, 18:53

Большое спасибо. Сейчас попробую.

Zverik
Активный участник
Сообщения: 158
Зарегистрирован: 11 сен 2011, 14:11
Репутация: 96
Откуда: Москва
Контактная информация:

Re: Не получается загрузить OSM России

Сообщение Zverik » 24 окт 2016, 12:40

glax2020 писал(а):
"...\x64\osm2pgsql.exe" -C 6000 -H localhost -P 5435 -U postgres -d pbf_ru "RU.osm.bz2"
Версия взята из http://gis.stackexchange.com/questions/ ... -osm2pgsql и некорректность загрузки в следующем:
- загружены в PostreSQL: planet_osm_point, planet_osm_line, planet_osm_polygon, planet_osm_roads;
- ОТСУТСТВУЮТ: planet_osm_nodes, planet_osm_ways, planet_osm_rels;


По моему отсутствие перечисленных таблиц критическая ошибка - в принципе в этом случае, не знаю как получить OpenStreetMap ID, ибо не могу например для объектов из planet_osm_polygon понять у объекта ссылка на WAY или RELATION:
* по моему могут быть площадные объекты, которые состоят из одного замкнутого WAY, а могут быть составные - здесь RELATION.
* также например для Границы Москвы: OSM ID -2555133 (отрицательное), а реально у него Relation = 2555133 (положительное) https://www.openstreetmap.org/relation/ ... 63/37.6268

Как подобные проблемы решить без таблицы planet_osm_rels - не представляю.

Также эти слои нужны и для различной полезной МЕТА - информации (русские, английские наименования, дополнительная информация по объектам).

То есть это для меня неудовлетворительно.
Вы уже почти сами со всем разобрались. Положительные osm_id — это линии, отрицательные — это отношения (с противоположным знаком). Мультиполигоны разбиты на несколько полигонов с одинаковыми osm_id, их может понадобиться склеить (ST_Collect / ST_Union).

Для сохранения всех тегов используйте ключ --hstore, в таблицах появится столбец tags со всеми дополнительными ключами в формате hstore.

Таблицы _nodes, _ways и другие нужны для настройки регулярных обновлений, для простой работы они ни к чему. Александр правильно говорит, ключ --slim очень желателен, автоматически удалить таблицы после сборки можно ключом --drop.

Flat nodes нужны для импорта всей планеты, промежуточный файл получится очень большой. Если места мало, для импорта России ключ не обязателен.

Последний релиз для WIndows 64bit тут: https://ci.appveyor.com/project/openstr ... /artifacts

glax2020
Активный участник
Сообщения: 175
Зарегистрирован: 19 ноя 2012, 15:59
Репутация: 6

Re: Не получается загрузить OSM России

Сообщение glax2020 » 24 окт 2016, 13:27

Zverik писал(а):Вы уже почти сами со всем разобрались. Положительные osm_id — это линии, отрицательные — это отношения (с противоположным знаком). Мультиполигоны разбиты на несколько полигонов с одинаковыми osm_id, их может понадобиться склеить (ST_Collect / ST_Union).
Ответ и вопросы перенесены в новую тему: viewtopic.php?f=32&t=21622

Спасибо
Последний раз редактировалось glax2020 24 окт 2016, 15:46, всего редактировалось 2 раза.

glax2020
Активный участник
Сообщения: 175
Зарегистрирован: 19 ноя 2012, 15:59
Репутация: 6

Re: Не получается загрузить OSM России

Сообщение glax2020 » 24 окт 2016, 13:58

Александр Мурый писал(а):
glax2020 писал(а):Всех приветствую.
ОТСУТСТВУЮТ: planet_osm_nodes, planet_osm_ways, planet_osm_rels;
Для получения дополнительных таблиц (а именно planet_osm_nodes, planet_osm_ways, planet_osm_rels) надо использовать опцию "-slim". Попробуйте пересоздать базу данных и запустить заново с этой опцией.

По опыту могу сказать, что для загрузки OSM по России желательно не меньше 32 Гб опер. памяти (а лучше больше) и SSD-диск (потому как большая нагрузка на диск). Значение "--cache" при памяти в 32 Гб я бы ставил, например, 15000. И обязательно с опцией "--flat-nodes".
Первая попытка к сожалению не удалась -- процесс ничего не делает уже несколько часов (и памяти мало занимает -- не меняется, и ЦП = 0):

Запустил пока по простому (с надеждой, что если часов за 5 "легко" проходила загрузка 4 таблиц, то вероятно и 3 другие подгрузятся, но вышло иначе -- процесс более 12 часов ночью работал и завис после сообщения в окне процесса на процедуре "Build index on table: planet_osm_ways" -- сейчас Windows полудохлый (Касперский не перезапускается, Обновление Защитника продолжалось около получаса - не дождался, отключил...). Наверное сейчас буду перезапускать компьютер -- надеяться не на что. Dump посмотрел - замечаний не вижу (прерываний там нет).

Моя попытка была: "...\x64\osm2pgsql.exe" -C 6000 --slim -H localhost -P 5435 -U postgres -d pbf_ru "RU.osm.bz2" --

только --slim добавил ( в надежде что по простому обойдется... :) ).

Следующую попытку планирую предпринять через пару дней возможно (notebook старый более 5 лет, несколько ночей работал - пусть отдохнет...).

Как Вы и советовали, теперь добавлю ключи "--flat-nodes" и "--hstore".

C дисковым пространством проблем нет, но ОЗУ у меня только 12 Гб.

Как Вы полагаете у меня есть шансы?

Спасибо

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 793
Ваше звание: званий не имею
Откуда: Москва

Re: Не получается загрузить OSM России

Сообщение Александр Мурый » 24 окт 2016, 14:13

glax2020 писал(а): C дисковым пространством проблем нет, но ОЗУ у меня только 12 Гб.
Как Вы полагаете у меня есть шансы?
Мы с коллегами запускали импорт России на сервере с 32 гигами памяти, всё падало несколько раз. Решилось запуском на другом железе с 64 гигами и небольшим тюнингом настроек Postgres (сейчас быстро не вспомню). Честно говоря, с вашим железом я бы большого успеха от импорта России не ждал.
Редактор материалов, модератор форума

glax2020
Активный участник
Сообщения: 175
Зарегистрирован: 19 ноя 2012, 15:59
Репутация: 6

Re: Не получается загрузить OSM России

Сообщение glax2020 » 24 окт 2016, 14:18

Александр Мурый писал(а):
glax2020 писал(а): C дисковым пространством проблем нет, но ОЗУ у меня только 12 Гб.
Как Вы полагаете у меня есть шансы?
Мы с коллегами запускали импорт России на сервере с 32 гигами памяти, всё падало несколько раз. Решилось запуском на другом железе с 64 гигами и небольшим тюнингом настроек Postgres (сейчас быстро не вспомню). Честно говоря, с вашим железом я бы большого успеха от импорта России не ждал.
Ну я как бы попробую еще одну попытку, с раннего утра запустить процесс -- как бы сказать, проверю все свои возможности. Может удастся для этой процедуры и перспективной работы заказать или найти соответствующее железо в Институте.

Большое спасибо за информацию.

glax2020
Активный участник
Сообщения: 175
Зарегистрирован: 19 ноя 2012, 15:59
Репутация: 6

Re: Не получается загрузить OSM России и OSM_ID

Сообщение glax2020 » 24 окт 2016, 14:35

собственно перегрузил компьютер и все таблицы есть (и количество строк):

planet_osm_point 3060410
planet_osm_line 6643000
planet_osm_polygon 4159610

это все вроде разумное количество строк, их столько и было, насколько помню при загрузке:

planet_osm_point 3060410
planet_osm_ways 23740600
planet_osm_rels 584091

посмотрел информацию по таблицам по индексам - индексированы вроде.

переброшу dump в институт для первоначальной работы и изучения возможностей.

А так в принципе понятно, для серьезной работы нужно соответствующее железо.

Спасибо

Zverik
Активный участник
Сообщения: 158
Зарегистрирован: 11 сен 2011, 14:11
Репутация: 96
Откуда: Москва
Контактная информация:

Re: Не получается загрузить OSM России и OSM_ID

Сообщение Zverik » 24 окт 2016, 16:30

Ну не знаю насчёт железа, Россию я загружал на домашнем компьютере с 8 гигами памяти. Там всё дело в правильно выставленном параметре -C (--cache). Если нет проблем с диском, то --flat-nodes вообще устраняет необходимость в большом количестве памяти. Гигабайтный дамп я загружал на виртуальный сервер с двумя (2) гигабайтами памяти без flat_nodes, и всё было нормально. А вот длинная задержка на шаге build index — это нормально. Если много процессоров, параметр --number_processes с количеством процессов неплохо помогает.

glax2020
Активный участник
Сообщения: 175
Зарегистрирован: 19 ноя 2012, 15:59
Репутация: 6

Re: Не получается загрузить OSM России и OSM_ID

Сообщение glax2020 » 24 окт 2016, 16:50

Zverik писал(а):Ну не знаю насчёт железа, Россию я загружал на домашнем компьютере с 8 гигами памяти. Там всё дело в правильно выставленном параметре -C (--cache). Если нет проблем с диском, то --flat-nodes вообще устраняет необходимость в большом количестве памяти. Гигабайтный дамп я загружал на виртуальный сервер с двумя (2) гигабайтами памяти без flat_nodes, и всё было нормально. А вот длинная задержка на шаге build index — это нормально. Если много процессоров, параметр --number_processes с количеством процессов неплохо помогает.
спасибо, прибавили оптимизма

glax2020
Активный участник
Сообщения: 175
Зарегистрирован: 19 ноя 2012, 15:59
Репутация: 6

Re: Не получается загрузить OSM России и OSM_ID

Сообщение glax2020 » 24 окт 2016, 18:59

(delete)
Последний раз редактировалось glax2020 24 окт 2016, 19:02, всего редактировалось 1 раз.

glax2020
Активный участник
Сообщения: 175
Зарегистрирован: 19 ноя 2012, 15:59
Репутация: 6

Re: Не получается загрузить OSM России и OSM_ID

Сообщение glax2020 » 24 окт 2016, 19:01

Попробовал с "flat_nodes" и наверное я что то делаю неправильно.

Взял самый маленький OSM - Туркмения (7 Мб примерно) -- в других вариантах загрузки этот OSM грузится крайне быстро, м.б. за минуту - для теста.

Но пример с тегом "--flat-nodes" работает плохо:

- без результата: ошибка Failed to read from node cache: Invalid argument


- крайне медленно -- м.б. минут 10 - 15, когда этот OSM обычно грузится ну м.б. за минуту (7 М.б.)

Команду применяю следующую (на компе с 8 Гб ОЗУ):

Код: Выделить всё

osm2pgsql.exe -C 3000 --slim  --hstore -H localhost -P 5435 -d pbf_tm -U postgres -S "%OSM2PGSQL_PATH%\default.style" --flat-nodes "D:\OSM2PGSQL_NODES.buffer" "tm.osm.pbf"
Лог:

Код: Выделить всё

osm2pgsql SVN version 0.90.1-dev (64 bit id space)

Using built-in tag processing pipeline
Using projection SRS 900913 (Spherical Mercator)
Setting up table: planet_osm_point
Setting up table: planet_osm_line
Setting up table: planet_osm_polygon
Setting up table: planet_osm_roads
Allocating memory for sparse node cache
Node-cache: cache=3000MB, maxblocks=48000*65536, allocation method=9
Mid: loading persistent node cache from D:\OSM2PGSQL_NODES.buffer
Maximum node in persistent node cache: 0
Mid: pgsql, scale=100 cache=3000
Setting up table: planet_osm_nodes
Setting up table: planet_osm_ways
Setting up table: planet_osm_rels

Reading in file: c:\temp\osm_root\dat___tm.osm.pbf
Using PBF parser.
Processing: Node(820k 1.1k/s) Way(0k 0.00k/s) Relation(0 0.00/s)Failed to read from node cache: Invalid argument

В результате ошибка: Failed to read from node cache: Invalid argument


Информацию смотрю по ссылкам:

http://www.volkerschatz.com/net/osm/osm ... usage.html

http://wiki.openstreetmap.org/wiki/Osm2pgsql

Что делаю не правильно, непонятно :(

glax2020
Активный участник
Сообщения: 175
Зарегистрирован: 19 ноя 2012, 15:59
Репутация: 6

Re: Не получается загрузить OSM России

Сообщение glax2020 » 24 окт 2016, 19:50

(delete)
Последний раз редактировалось glax2020 24 окт 2016, 19:53, всего редактировалось 1 раз.

glax2020
Активный участник
Сообщения: 175
Зарегистрирован: 19 ноя 2012, 15:59
Репутация: 6

Re: Не получается загрузить OSM России

Сообщение glax2020 » 24 окт 2016, 19:52

Первоначально, файл --flat-nodes "D:\OSM2PGSQL_NODES.buffer" - я не создавал предварительно, но после работы программы он был и его размер около 33 Гб.

Теперь, я его создал предварительно в 93 Гб, и посмотрю что получится.

Но работает медленно: если 500 кб points обрабатывает за 10 - 15 минут, то planet_osm_point 3060410 для России = 30600 Кб => { 10 - 15 } * 60 = около 1.5 часов -- может быть за сутки все и обработает, в принципе: удовлетворительный вариант...

но не помогло :(

Код: Выделить всё

Processing: Node(820k 1.3k/s) Way(0k 0.00k/s) Relation(0 0.00/s)Failed to read from node cache: Invalid argument
Последний раз редактировалось glax2020 24 окт 2016, 19:58, всего редактировалось 1 раз.

Ответить

Вернуться в «PostGIS/PostgreSQL»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость