Страница 1 из 1
Импорт дамп OSM в свою базу данных MySQL
Добавлено: 23 май 2017, 12:21
dds
Здравствуйте. Пытался импортировать
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:
Re: Данные OpenStreetMap в форматах XML и PBF
Добавлено: 23 май 2017, 12:44
freeExec
А раньше не было условия на уникальность имени, поэтому у вас и проблемы.
Re: Импорт дамп OSM в свою базу данных MySQL
Добавлено: 24 май 2017, 10:20
dds
Да, там проблем не только с этим....
Жаль что прекратили поддержку.
Делал различного рода "костыли" в исходниках osmosis, чтобы импортировать в MySQL, но с каждым разом все новые ошибки, а сам импорт происходит очень медленно. На сей раз вышла ошибка, что-то про foreigen key одной из таблиц. Я не придал этому значения и закрыл консоль, а потом подумал "я ведь оставлял на ночь, мб что-то и импортировалось". Открыл phpMyAdmin и нашел некоторые данные...
Я ищу базу данных по населенным пунктам по СНГ (включая селы, поселки, ПГТ, города и т.д.) наткнулся на этот проект...
Пара вопросов если не затруднит:
1. в current_node_tags по BY.osm.bz2 (Беларусь) сколько должно быть записей? у меня ~1,097,756 строк.
2. в столбце v есть addr:country, addr:region и т.д., где можно найти информацию о такого рода инф.? т.е. как много (какие еще) там могут быть?
Re: Импорт дамп OSM в свою базу данных MySQL
Добавлено: 24 май 2017, 10:47
freeExec
1. Тренируйтесь на малых объёмах
2. MySQL тут не входу, всё заточено под PG.
3. Населённые пункты можно отфильтровать вообще в самом начале, там данных копейки.
4. Метаданные, вроде версии, автора и даты объекта в подавляющем большинстве не нужны.
5. Всё самое ценное собрано в wiki - про адреса -
https://wiki.openstreetmap.org/wiki/RU:Key:addr
Re: Импорт дамп OSM в свою базу данных MySQL
Добавлено: 24 май 2017, 11:58
dds
1. Да, этим и занимаюсь.
2. Да, знаю, что поддержки нет уже приличное время.
3. Предполагал и раньше. Очевидно, что тебя не заставят качать "всю планету", чтобы взять всего 2-3 значения из нее, но эти фильтры в самом osmosis или по другим программам я не нашел на
wiki.openstreetmap.org (PS: мягко говоря, там навигация жутко страдает, спасибо SEO, выручает)
4. Да, знаю.
5. Тоже нашел, поняв что k - это key.
Спасибо большое за ответ. Буду премного благодарен если подскажете как, чем и через что можно отфильтровать данные при импорте. Если это делается через сам osmosis, то будет просто замечательно.
Re: Импорт дамп OSM в свою базу данных MySQL
Добавлено: 24 май 2017, 12:14
freeExec
Не пользуюсь osmisis.
Фильтрануть сырые данные можно через osmfilter, как ни странно

Так же можно фильтровать при импорте через стиль или в некоторых тулзах через скрипт, как например osm2pgsql.
Re: Импорт дамп OSM в свою базу данных MySQL
Добавлено: 24 май 2017, 15:20
dds
Благодарю. Порезал файл через 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 парсер и залью в свою БД.
Re: Импорт дамп OSM в свою базу данных MySQL
Добавлено: 24 май 2017, 15:53
trir
если данных не много - можно попробовать
overpass