На геофабрике Россию забыли. Или не смогли выбрать куда положить. Можно попробовать им написать. Я себе автоапдэйт для Беларуси сделал каждые пару минут. Если базу для России поднять, то можно раз в день самому патчить дифом и выгонять в файл.
А ещё можно посмотреть что на геофабрике в Азию попадает. Может проще оттуда вырезать.
Так может кто-нибудь уже озаботился и готов поделиться?
А если нет, то как проще всего поднять базу для России?
Чтобы с небольшими затратами, комп у меня не особо мощный.
самое интересное наступает с обновлениями. у osmosis нету возможности обрезать osc файлы по полигону, но могу подкинуть версию с такими возможностями. Единственное ещё не полностью протестированную - бывает хватает чего за пределами области.
osmosis --read-change-interval-init work initialDate=$INITIAL_DATE - для инициализации. Если файл давности не более дня - можно ничего не менять. иначе поменять файл work/configuration.txt
заменить hourly на daily,
поставить intervalLength=86400
changeFileBeginFormat=yyyyMMdd
changeFileEndFormat=yyyyMMdd
потом запускать переодически
osmosis --read-change-interval work --migrate-change --bounding-polygon-change-0.6 file=russia.txt filterIncompleteEntities=yes authFile=some.auth forceUtf8=yes --write-mysql-change-0.6 authFile=some.auth forceUtf8=yes
обычный 0.30 - работает
у собранного из svn 0.30.2 кривой bat-файл, там путь до библиотек неправильный
если исправить, то вроде бы запускается
UPD
удалось добиться выполнения --read-xml … --write-mysql
но --read-xml … --migrate --write-mysql-0.6 работать отказывается, выдаёт ошибку
SEVERE: Thread for task 1-read-xml failed
org.openstreetmap.osmosis.core.OsmosisRuntimeException: Unable to create streaming resultset.
at org.openstreetmap.osmosis.core.mysql.common.DatabaseContext.executeStreamingQuery(DatabaseContext.java:218)
at org.openstreetmap.osmosis.core.mysql.v0_6.impl.SchemaVersionValidator.validateDBVersion(SchemaVersionValidator.java:88)
at org.openstreetmap.osmosis.core.mysql.v0_6.impl.SchemaVersionValidator.validateVersion(SchemaVersionValidator.java:59)
А можно для тормозов помедленнее
Поставил mySQL, скачал osmosis 0.3.2 , пол-вечера разбирался в том, что в батнике нужно внести изменение
MAINCLASS=org.openstreetmap.osmosis.core.Osmosis
и переместить библиотеки из каталога default
Осмосис заработал.
Скачал схему данных с http://wiki.openstreetmap.org/wiki/Database_schema и создал ее с mySQL
Скачал дамп России с cloudmade
Запускаю Osmosis:
Через пол-часа жужжания он валится со следующими словами:
C:\1\bin>C:\WINDOWS\system32\java.exe -Xmx1048M -cp C:\1\osmosis.jar;C:\1\lib\mysql-connector-java-5.1.6.jar;C:\1\lib\bzip2-0.1.jar;C:\1\lib\commons-logging-1.0.4.jar;C:\1\lib\jpf-1.5.jar;C:\1\lib\postgis-1.3.
2.jar;C:\1\lib\postgresql-8.3-603.jdbc4.jar;C:\1\lib\wstx-lgpl-3.2.8.jar org.openstreetmap.osmosis.core.Osmosis --rx file="C:\NAVI\russian_federation.osm.bz2" --wm host="localhost" user="root" database="osm"
17.03.2009 0:00:17 org.openstreetmap.osmosis.core.Osmosis run
INFO: Osmosis Version 0.30.2
17.03.2009 0:00:17 org.openstreetmap.osmosis.core.Osmosis run
INFO: Preparing pipeline.
17.03.2009 0:00:17 org.openstreetmap.osmosis.core.Osmosis run
INFO: Launching pipeline execution.
17.03.2009 0:00:17 org.openstreetmap.osmosis.core.Osmosis run
INFO: Pipeline executing, waiting for completion.
17.03.2009 0:07:22 org.openstreetmap.osmosis.core.pipeline.common.ActiveTaskManager waitForCompletion
SEVERE: Thread for task 1-rx failed
org.openstreetmap.osmosis.core.OsmosisRuntimeException: Unable to bulk insert ways into the database.
at org.openstreetmap.osmosis.core.mysql.v0_5.MysqlWriter.flushWays(MysqlWriter.java:621)
at org.openstreetmap.osmosis.core.mysql.v0_5.MysqlWriter.process(MysqlWriter.java:1059)
at org.openstreetmap.osmosis.core.container.v0_5.WayContainer.process(WayContainer.java:60)
at org.openstreetmap.osmosis.core.mysql.v0_5.MysqlWriter.process(MysqlWriter.java:1009)
at org.openstreetmap.osmosis.core.xml.v0_5.impl.WayElementProcessor.end(WayElementProcessor.java:103)
at org.openstreetmap.osmosis.core.xml.v0_5.impl.OsmHandler.endElement(OsmHandler.java:113)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at javax.xml.parsers.SAXParser.parse(Unknown Source)
at javax.xml.parsers.SAXParser.parse(Unknown Source)
at org.openstreetmap.osmosis.core.xml.v0_5.XmlReader.run(XmlReader.java:109)
at java.lang.Thread.run(Unknown Source)
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '1814575-1' for key 'PRIMARY'
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
at com.mysql.jdbc.Util.getInstance(Util.java:381)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1015)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3491)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3423)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1936)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2060)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2542)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1734)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2019)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1937)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1922)
at org.openstreetmap.osmosis.core.mysql.v0_5.MysqlWriter.flushWays(MysqlWriter.java:619)
... 19 more
17.03.2009 0:07:22 org.openstreetmap.osmosis.core.Osmosis main
SEVERE: Execution aborted.
org.openstreetmap.osmosis.core.OsmosisRuntimeException: One or more tasks failed.
at org.openstreetmap.osmosis.core.pipeline.common.Pipeline.waitForCompletion(Pipeline.java:146)
at org.openstreetmap.osmosis.core.Osmosis.run(Osmosis.java:85)
at org.openstreetmap.osmosis.core.Osmosis.main(Osmosis.java:30)
Но таблицы вроде как заполняет.
Вопрос: это нормально, и если нет, то как бороться?
update:
Кажется, дело в этом: Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry ‘1814575-1’ for key ‘PRIMARY’
Я писал в базу в формате 0.6. С ним легче работать - там отдельная таблица для тэгов нод. Если конкретных завязак нету, то рекомендую. В данном случае базу нужно будет создать миграциями для сайта osm из svn - там самая правильная схема.
В вашем случае можно попробовать поискать в файле путь 1814575 не повторяется ли он в xml. Или это неправильная интерпретация osmosis’a.
C:\1\bin>C:\WINDOWS\system32\java.exe -Xmx1048M -cp C:\1\osmosis.jar;C:\1\lib\mysql-connector-java-5.1.6.jar;C:\1\lib\bzip2-0.1.jar;C:\1\lib\commons-logging-1.0.4.jar;C:\1\lib\jpf-1.5.jar;C:\1\lib\postgis-1.3.
2.jar;C:\1\lib\postgresql-8.3-603.jdbc4.jar;C:\1\lib\wstx-lgpl-3.2.8.jar org.openstreetmap.osmosis.core.Osmosis --rx file="C:\NAVI\russian_federation.osm.bz2" --migrate --write-mysql-0.6 host="localhost" user
="root" database="osm"
17.03.2009 1:19:58 org.openstreetmap.osmosis.core.Osmosis run
INFO: Osmosis Version 0.30.2
17.03.2009 1:19:59 org.openstreetmap.osmosis.core.Osmosis run
INFO: Preparing pipeline.
17.03.2009 1:19:59 org.openstreetmap.osmosis.core.Osmosis run
INFO: Launching pipeline execution.
17.03.2009 1:19:59 org.openstreetmap.osmosis.core.Osmosis run
INFO: Pipeline executing, waiting for completion.
17.03.2009 1:19:59 org.openstreetmap.osmosis.core.pipeline.common.ActiveTaskManager waitForCompletion
SEVERE: Thread for task 1-rx failed
org.openstreetmap.osmosis.core.OsmosisRuntimeException: Database version mismatch. The schema is missing migrations [19, 22, 17, 23, 18, 24, 15, 16, 13, 14, 11, 12, 21, 3, 20, 2, 1, 10, 7, 6, 5, 4, 9, 8], may n
eed to upgrade schema or specify validateSchemaVersion=no.
at org.openstreetmap.osmosis.core.mysql.v0_6.impl.SchemaVersionValidator.validateDBVersion(SchemaVersionValidator.java:127)
at org.openstreetmap.osmosis.core.mysql.v0_6.impl.SchemaVersionValidator.validateVersion(SchemaVersionValidator.java:59)
at org.openstreetmap.osmosis.core.mysql.v0_6.MysqlWriter.initialize(MysqlWriter.java:341)
at org.openstreetmap.osmosis.core.mysql.v0_6.MysqlWriter.process(MysqlWriter.java:1110)
at org.openstreetmap.osmosis.core.migrate.MigrateV05ToV06.process(MigrateV05ToV06.java:46)
at org.openstreetmap.osmosis.core.container.v0_5.BoundContainer.process(BoundContainer.java:68)
at org.openstreetmap.osmosis.core.migrate.MigrateV05ToV06.process(MigrateV05ToV06.java:37)
at org.openstreetmap.osmosis.core.xml.v0_5.impl.BoundElementProcessor.end(BoundElementProcessor.java:85)
at org.openstreetmap.osmosis.core.xml.v0_5.impl.OsmHandler.endElement(OsmHandler.java:113)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at javax.xml.parsers.SAXParser.parse(Unknown Source)
at javax.xml.parsers.SAXParser.parse(Unknown Source)
at org.openstreetmap.osmosis.core.xml.v0_5.XmlReader.run(XmlReader.java:109)
at java.lang.Thread.run(Unknown Source)
17.03.2009 1:20:00 org.openstreetmap.osmosis.core.Osmosis main
SEVERE: Execution aborted.
org.openstreetmap.osmosis.core.OsmosisRuntimeException: One or more tasks failed.
at org.openstreetmap.osmosis.core.pipeline.common.Pipeline.waitForCompletion(Pipeline.java:146)
at org.openstreetmap.osmosis.core.Osmosis.run(Osmosis.java:85)
at org.openstreetmap.osmosis.core.Osmosis.main(Osmosis.java:30)