4

我正在使用 osmosis 0.42 和 PostGIS 2.0.1,我正在尝试将一些 postGIS 表导出到 .OSM xml 文件。

我正在使用 --read-pgsql 命令从 postgis 读取(而不是 --read-apidb 因为它在连接到 DB 时会引发错误)..

不幸的是运行:

osmosis --read-pgsql host="x" database="x" user="x" password="x" --write-xml file="myfile.osm"

产生以下错误:

Task 2-write-xml does not support data provided by default pipe stored at level 1 in the default pipe stack

有任何想法吗?

非常感谢!

费德

4

4 回答 4

2

问题是--read-pgsql产生一个数据集,但--write-xml需要一个实体流

--dataset-dump在这两个步骤之间使用将数据集转换为实体流:

osmosis --read-pgsql host="x" database="x" user="x" password="x" --dataset-dump --write-xml file="myfile.osm"
于 2018-03-06T14:49:57.340 回答
1

问题是您的数据库不是 Osmosis 可以理解的格式。Osmosis 只支持几个模式,因此您需要编写一个自定义导出器。

于 2014-02-24T11:52:30.327 回答
1

尽管我在 postgis 中的数据具有“快照”模式,但我还没有找到解决方案。

我在http://marcusjenkins.com/maps/plumbing-with-openstreetmap-osmosis/上找到了解决方案

解决办法是: osmosis --read-pgsql host="localhost" database="foo" user="foo" password="foo" outPipe.0=pg --dd inPipe.0=pg outPipe.0=dd -- write-pbf inPipe.0=dd 文件=wherever_munged.osm.pbf

于 2014-02-27T15:25:46.847 回答
0

要获得有限的区域:

osmosis --read-pgsql database=egypt-osm user=gisuser password='test0199' outPipe.0=pg --dataset-bounding-box inPipe.0=pg top=30.1332509 left=31.1400604 bottom=29.9400604 right=31.3220215 outPipe.0=dd --write-xml inPipe.0=dd file=- | bzip2 > cairo.osm.bz2

得到一切:

osmosis --read-pgsql database=egypt-osm user=gisuser password='test0199' outPipe.0=pg --dd inPipe.0=pg outPipe.0=dd --write-xml inPipe.0=dd file=- | bzip2 > everything.osm.bz2

如果遇到“java.util.HashMap 无法转换为 org.openstreetmap.osmosis.hstore.PGHStore”之类的错误,请记住使用最新的 osmosis

于 2015-10-15T23:37:34.507 回答