Импорт дамп OSM в свою базу данных MySQL

Вопросы по нескольким пакетам сразу, или вопросы, которые непонятно к какой ГИС отнести
Ответить
dds
Новоприбывший
Сообщения: 4
Зарегистрирован: 23 май 2017, 12:05
Репутация: 0

Импорт дамп OSM в свою базу данных MySQL

Сообщение dds » 23 май 2017, 12:21

Здравствуйте. Пытался импортировать BY.osm.bz2 (Беларусь) на свою базу данных MySQL, но столкнулся с проблемой, которую долго не могу решить:

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

org.openstreetmap.osmosis.core.OsmosisRuntimeException: Unable to insert user with id 136356 into the database.
...
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry 'Neznayka ' for key 'users_display_name_idx'
...
PS:

freeExec
Гуру
Сообщения: 524
Зарегистрирован: 23 апр 2011, 10:32
Проекты: 1
Репутация: 62
Откуда: Ульяновск

Re: Данные OpenStreetMap в форматах XML и PBF

Сообщение freeExec » 23 май 2017, 12:44

А раньше не было условия на уникальность имени, поэтому у вас и проблемы.

dds
Новоприбывший
Сообщения: 4
Зарегистрирован: 23 май 2017, 12:05
Репутация: 0

Re: Импорт дамп OSM в свою базу данных MySQL

Сообщение dds » 24 май 2017, 10:20

Да, там проблем не только с этим....
Жаль что прекратили поддержку.

Делал различного рода "костыли" в исходниках osmosis, чтобы импортировать в MySQL, но с каждым разом все новые ошибки, а сам импорт происходит очень медленно. На сей раз вышла ошибка, что-то про foreigen key одной из таблиц. Я не придал этому значения и закрыл консоль, а потом подумал "я ведь оставлял на ночь, мб что-то и импортировалось". Открыл phpMyAdmin и нашел некоторые данные...

Я ищу базу данных по населенным пунктам по СНГ (включая селы, поселки, ПГТ, города и т.д.) наткнулся на этот проект...
Пара вопросов если не затруднит:
1. в current_node_tags по BY.osm.bz2 (Беларусь) сколько должно быть записей? у меня ~1,097,756 строк.
2. в столбце v есть addr:country, addr:region и т.д., где можно найти информацию о такого рода инф.? т.е. как много (какие еще) там могут быть?

freeExec
Гуру
Сообщения: 524
Зарегистрирован: 23 апр 2011, 10:32
Проекты: 1
Репутация: 62
Откуда: Ульяновск

Re: Импорт дамп OSM в свою базу данных MySQL

Сообщение freeExec » 24 май 2017, 10:47

1. Тренируйтесь на малых объёмах
2. MySQL тут не входу, всё заточено под PG.
3. Населённые пункты можно отфильтровать вообще в самом начале, там данных копейки.
4. Метаданные, вроде версии, автора и даты объекта в подавляющем большинстве не нужны.
5. Всё самое ценное собрано в wiki - про адреса - https://wiki.openstreetmap.org/wiki/RU:Key:addr

dds
Новоприбывший
Сообщения: 4
Зарегистрирован: 23 май 2017, 12:05
Репутация: 0

Re: Импорт дамп OSM в свою базу данных MySQL

Сообщение dds » 24 май 2017, 11:58

1. Да, этим и занимаюсь.
2. Да, знаю, что поддержки нет уже приличное время.
3. Предполагал и раньше. Очевидно, что тебя не заставят качать "всю планету", чтобы взять всего 2-3 значения из нее, но эти фильтры в самом osmosis или по другим программам я не нашел на wiki.openstreetmap.org (PS: мягко говоря, там навигация жутко страдает, спасибо SEO, выручает)
4. Да, знаю.
5. Тоже нашел, поняв что k - это key.

Спасибо большое за ответ. Буду премного благодарен если подскажете как, чем и через что можно отфильтровать данные при импорте. Если это делается через сам osmosis, то будет просто замечательно.

freeExec
Гуру
Сообщения: 524
Зарегистрирован: 23 апр 2011, 10:32
Проекты: 1
Репутация: 62
Откуда: Ульяновск

Re: Импорт дамп OSM в свою базу данных MySQL

Сообщение freeExec » 24 май 2017, 12:14

Не пользуюсь osmisis.
Фильтрануть сырые данные можно через osmfilter, как ни странно :)
Так же можно фильтровать при импорте через стиль или в некоторых тулзах через скрипт, как например osm2pgsql.

dds
Новоприбывший
Сообщения: 4
Зарегистрирован: 23 май 2017, 12:05
Репутация: 0

Re: Импорт дамп OSM в свою базу данных MySQL

Сообщение dds » 24 май 2017, 15:20

Благодарю. Порезал файл через osmfilter:

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

osmfilter BY.osm --drop-author --drop-version --drop-ways --drop-relations --keep-nodes="place=" -o=BY-my.osm
Только использовать приходится по 2 раза, с 1 раза --keep-nodes="place=" не все вырезает. Дальше просто напишу быстренько свой XML парсер и залью в свою БД.

trir
Гуру
Сообщения: 3024
Зарегистрирован: 09 апр 2010, 19:30
Статьи: 1
Репутация: 481
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: Импорт дамп OSM в свою базу данных MySQL

Сообщение trir » 24 май 2017, 15:53

если данных не много - можно попробовать overpass

Ответить

Вернуться в «Общий - ПО»