OpenStreetMap Forum

The Free Wiki World Map

You are not logged in.

#1 2009-05-08 10:21:40

KekcuHa
Member
From: Moscow
Registered: 2008-05-26
Posts: 607
Website

OSMOSIS + mySQL

Благодаря помощи форумчан я у себя поднял и настроил под windows  связку OSMOSIS + mySQL.

Использовался модифицированный osmosis по ссылке от Jagor.

Несколько дней назад перестали импортироваться ежечасные обновления.
Предположительная причина - дублирование тегов точек (например, как в http://www.openstreetmap.org/browse/nod … 54/history , т.к. в истории создается уникальный индекс из полей id, version и k)

Одновременно после миграции 0.6 стали возникать проблемы с версиями элементов, поэтому было принято решение перезалить в локальную базу полный дамп.
Скачал дамп planet-090506.osm.bz2 , создал заново базу в mySQL скриптом с http://gweb.bretth.com/apidb06-mysql-v25.sql

Запускаю osmosis --read-xml-0.6 "C:\planet-090506.osm.bz2" --bounding-polygon-0.6 file="c:\navi\russian_federation.poly"  --write-mysql-0.6 user="openstreetmap" database="osm" forceUtf8=yes validateSchemaVersion=no

Осмосис вылетает с ошибкой:

C:\planet-090506.osm.bz2.  publicId=(null), systemId=(null), lineNumber=6663, c
olumnNumber=128.
        at org.openstreetmap.osmosis.core.xml.v0_6.XmlReader.run(XmlReader.java:
114)
        at java.lang.Thread.run(Unknown Source)
Caused by: org.xml.sax.SAXParseException: XML document structures must start and
 end within the same entity.

Скачиваю предпослений дамп, то же самое.

Скачиваю последний осмосис (0.31.1), там еще интереснее:

java  -cp C:\NAVI\Osmosis\osmosis.jar;C:\NAVI\Osmosis\lib\bzip2-20090327.jar;C:\NAVI\Osmosis\lib\commons-logging-1.0.4.jar;C:\NAVI\Osmosis\
ib\jpf-1.5.jar;C:\NAVI\Osmosis\lib\mysql-connector-java-5.1.6.jar;C:\NAVI\Osmosis\lib\postgis-1.3.2.jar;C:\NAVI\Osmosis\lib\postgresql-8.3-603.jdbc4.jar;C:\NAV
\Osmosis\lib\stax2-api-3.0.1.jar;C:\NAVI\Osmosis\lib\woodstox-core-lgpl-4.0.3.jar org.openstreetmap.osmosis.core.Osmosis  --read-xml-0.6 "C:\planet-090429.osm.
z2" --bounding-polygon-0.6 file="c:\navi\russian_federation.poly"  --write-mysql-0.6 user="openstreetmap" database="osm" forceUtf8=yes validateSchemaVersion=no

08.05.2009 12:55:56 org.openstreetmap.osmosis.core.Osmosis run
INFO: Osmosis Version 0.31
08.05.2009 12:55:56 org.openstreetmap.osmosis.core.Osmosis run
INFO: Preparing pipeline.
08.05.2009 12:55:56 org.openstreetmap.osmosis.core.Osmosis main
SEVERE: Execution aborted.
org.openstreetmap.osmosis.core.OsmosisRuntimeException: Task type write-mysql-0.6 doesn't exist.
        at org.openstreetmap.osmosis.core.pipeline.common.TaskManagerFactoryRegister.getInstance(TaskManagerFactoryRegister.java:60)
        at org.openstreetmap.osmosis.core.pipeline.common.Pipeline.buildTasks(Pipeline.java:50)
        at org.openstreetmap.osmosis.core.pipeline.common.Pipeline.prepare(Pipeline.java:112)
        at org.openstreetmap.osmosis.core.Osmosis.run(Osmosis.java:79)
        at org.openstreetmap.osmosis.core.Osmosis.main(Osmosis.java:30)

org.openstreetmap.osmosis.core.OsmosisRuntimeException: Task type write-mysql-0.6 doesn't exist.

Пробовал и просто --write-mysql, результат такой же.

Кто сталкивался и как бороться?

Offline

#2 2009-05-08 14:11:59

hjugo
Member
Registered: 2009-05-03
Posts: 13

Re: OSMOSIS + mySQL

в осмоcиме кривой ридер bz2
по первому пункту спасёт bzcat planet.bz2|osmosis --read-file file=-

PS только не спрашивайте, почему раньше bz2 файлы читались нормально wink

Offline

#3 2009-05-08 15:24:01

KekcuHa
Member
From: Moscow
Registered: 2008-05-26
Posts: 607
Website

Re: OSMOSIS + mySQL

hjugo wrote:

в осмоcиме кривой ридер bz2
по первому пункту спасёт bzcat planet.bz2|osmosis --read-file file=-

Если можно, всю командную строку до конца... И это под Windows?

Offline

#4 2009-05-08 16:27:57

liosha
Member
From: Moscow
Registered: 2008-03-04
Posts: 8,447
Website

Re: OSMOSIS + mySQL

это в юниксах
под виндой лучше 7z использовать:
7z e -so file.bz2 | osmosis --read-file file=- ...

Offline

#5 2009-05-08 16:53:32

KekcuHa
Member
From: Moscow
Registered: 2008-05-26
Posts: 607
Website

Re: OSMOSIS + mySQL

Нашел подтверждение наличия проблемы neutral
http://www.mail-archive.com/dev@openstr … 07090.html

Offline

#6 2009-05-09 20:14:00

KekcuHa
Member
From: Moscow
Registered: 2008-05-26
Posts: 607
Website

Re: OSMOSIS + mySQL

Два дня бьюсь, пока ничего не получается sad

C:\NAVI\Osmosis\bin>7z e -so "C:\planet-090506.osm.bz2"  | osmosis --read-xml-0.
6 file=- --bounding-polygon-0.6 file="c:\navi\russian_federation.poly"  --write-
mysql-0.6 user="openstreetmap" database="osm" forceUtf8=yes validateSchemaVersio
n=no
...
C:\NAVI\Osmosis\bin>java  -cp C:\NAVI\Osmosis\osmosis.jar;C:\NAVI\Osmosis\lib\bz
ip2-20090327.jar;C:\NAVI\Osmosis\lib\commons-logging-1.0.4.jar;C:\NAVI\Osmosis\l
ib\jpf-1.5.jar;C:\NAVI\Osmosis\lib\mysql-connector-java-5.1.6.jar;C:\NAVI\Osmosi
s\lib\postgis-1.3.2.jar;C:\NAVI\Osmosis\lib\postgresql-8.3-603.jdbc4.jar;C:\NAVI
\Osmosis\lib\stax2-api-3.0.1.jar;C:\NAVI\Osmosis\lib\woodstox-core-lgpl-4.0.3.jar
org.openstreetmap.osmosis.core.Osmosis  --read-xml-0.6 file=- --bounding-polyg
on-0.6 file="c:\navi\russian_federation.poly"  --write-mysql-0.6 user="openstree
tmap" database="osm" forceUtf8=yes validateSchemaVersion=no

09.05.2009 11:48:41 org.openstreetmap.osmosis.core.Osmosis run
INFO: Osmosis Version 0.30.2
09.05.2009 11:48:41 org.openstreetmap.osmosis.core.Osmosis run
INFO: Preparing pipeline.
09.05.2009 11:48:41 org.openstreetmap.osmosis.core.Osmosis run
INFO: Launching pipeline execution.
09.05.2009 11:48:41 org.openstreetmap.osmosis.core.Osmosis run
INFO: Pipeline executing, waiting for completion.


Everything is Ok

Size:       0
Compressed: 6081583493
09.05.2009 15:50:32 org.openstreetmap.osmosis.core.pipeline.common.ActiveTaskMan
ager waitForCompletion
SEVERE: Thread for task 1-read-xml-0.6 failed
org.openstreetmap.osmosis.core.OsmosisRuntimeException: Unable to load current w
ay nodes.
        at org.openstreetmap.osmosis.core.mysql.v0_6.MysqlWriter.complete(MysqlW
riter.java:1044)
        at org.openstreetmap.osmosis.core.filter.v0_6.AreaFilter.complete(AreaFi
lter.java:345)
        at org.openstreetmap.osmosis.core.xml.v0_6.XmlReader.run(XmlReader.java:
111)
        at java.lang.Thread.run(Unknown Source)
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationExce
ption: Cannot add or update a child row: a foreign key constraint fails (`osm`.`
current_way_nodes`, CONSTRAINT `current_way_nodes_ibfk_2` FOREIGN KEY (`node_id`
) REFERENCES `current_nodes` (`id`))
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

        at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)

        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Sou
rce)
        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.ja
va:1734)
        at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:995)
        at org.openstreetmap.osmosis.core.mysql.v0_6.MysqlWriter.complete(MysqlW
riter.java:1041)
        ... 3 more
09.05.2009 15:50:33 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.waitForComple
tion(Pipeline.java:146)
        at org.openstreetmap.osmosis.core.Osmosis.run(Osmosis.java:85)
        at org.openstreetmap.osmosis.core.Osmosis.main(Osmosis.java:30)

Last edited by KekcuHa (2009-05-09 20:15:13)

Offline

#7 2009-05-10 18:27:46

hjugo
Member
Registered: 2009-05-03
Posts: 13

Re: OSMOSIS + mySQL

это тоже некоторый тупак осмомиса. smile
сначало он отсекает ноды по границе.
потом добавляет веи, которые могут пересекать границу. т.о. для веев не хватает нодов.
по хорошему, либо надо делать осмосаса 2х проходным, либо пересортировывать веи вперёд нодов (и всё-равно переделывать осмосис).
либо строго резать веи по предполагаемым боундам smile

либо грохнуть форейн кии для нодов вея в майсикле и потом либо грохать веи, у которых не все ноды живые (глупо), либо опять же вторым проходим добивать веи.

так же очевидно, но нельзя резать веи по границе.

либо сосать в скуль всю планету и кутить по границе уже там.

Offline

Board footer

Powered by FluxBB