一段时间以来,我一直在尝试将north-america-latest.osm.pbf(来自Geofabrik)导入Postgres数据库。彻底查看Wiki详细用法页面后,我通过包含的sql脚本将数据库设置为包括所有必需的表(pgSnapshot)。我还通过运行一个较小的文件(南极洲)来确保渗透作用正常,并且得到了预期的结果。但是,当我尝试对北美文件进行相同的处理时,我得到的错误与在网络上报告的其他错误不同。我试图将这些数据存储到服务器上,然后将其上传到本地似乎很好。
这是我的代码(通过命令提示符):
C:\Users\eddie\Desktop>osmosis --read-pbf-fast north-america-latest.osm.pbf --log-progress interval=3000 --write-pgsql nodeLocationStoreType="TempFile" host=1*.8*.*.*0* database=osm postgresSchema=osm_updates user=eddie password=***
这是我收到的错误消息:
SEVERE: Thread for task 1-read-pbf-fast failed
org.springframework.dao.EmptyResultDataAccessException: Incorrect result
size: expected 1, actual 0
at org.springframework.dao.support.DataAccessUtils.requiredSingleResult(DataAccessUtils.java:71)
at org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:495)
at org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:500)
at org.openstreetmap.osmosis.pgsnapshot.common.SchemaVersionValidator.validateDBVersion(SchemaVersionValidator.java:64)
at org.openstreetmap.osmosis.pgsnapshot.common.SchemaVersionValidator.validateVersion(SchemaVersionValidator.java:47)
at org.openstreetmap.osmosis.pgsnapshot.v0_6.impl.CopyFilesetLoader.run(CopyFilesetLoader.java:77)
at org.openstreetmap.osmosis.pgsnapshot.v0_6.PostgreSqlCopyWriter.complete(PostgreSqlCopyWriter.java:117)
at org.openstreetmap.osmosis.core.progress.v0_6.EntityProgressLogger.complete(EntityProgressLogger.java:82)
at org.openstreetmap.osmosis.pbf2.v0_6.PbfReader.run(PbfReader.java:96)
at java.lang.Thread.run(Unknown Source)
Jul 19, 2018 8:28:24 AM 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:92)
at org.openstreetmap.osmosis.core.Osmosis.main(Osmosis.java:37)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchStandard(Launcher.java:330)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:238)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
at org.codehaus.classworlds.Launcher.main(Launcher.java:47)
我正在Windows 10上运行渗透.46,Postgres / PostGis 10 / 2.4、12GB RAM和2个Intel 2.4GHz处理器。
更新:即使运行较小的文件,该错误现在也会出现。此外,从进度记录器消息中可以看出,渗透的行为就像正在处理一个较大的文件(到达南极的节点4614331685)。将加拿大的OSM数据上传到本地没有问题,因此问题可能与我尝试连接的服务器有关。如果有人对如何破译错误消息有任何线索,我想听听他们的声音!
答案 0 :(得分:0)
我通过接受@mmd的关闭架构验证的建议来进行渗透。即使我运行了pgsnapshot脚本并曾经成功地将数据放到那里,但是在整个北美地区做一些事情似乎还是把它扔了。在以后的数据库更新之后,我将更新此答案。