【发布时间】:2015-09-24 17:04:05
【问题描述】:
我已经使用 osm2pgsql 执行了从 *.bz2 格式到 PostgreSQL 数据库的 osm 数据转换。但是在转换之后,我在表planet_osm_roads 中看不到这样的列:lanes,maxspeed。 Сan有人解释这些列在哪里?谢谢。
【问题讨论】:
标签: openstreetmap postgis
我已经使用 osm2pgsql 执行了从 *.bz2 格式到 PostgreSQL 数据库的 osm 数据转换。但是在转换之后,我在表planet_osm_roads 中看不到这样的列:lanes,maxspeed。 Сan有人解释这些列在哪里?谢谢。
【问题讨论】:
标签: openstreetmap postgis
使用osm2pgsql时添加选项-k
osm2pgsql -d geodatabase -k planet.osm.bz2
-k|--hstore 将不带列的标签添加到附加的 hstore (key/value) 列到 postgresql 表中
说明:osm2pgsql 正常导入静态数据库模式中的数据。没有对应列的标签将被忽略。通过添加选项-k 或--hstore,osm2pgsql 将为每个表添加一个新的hstore 列tags,并在那里保存所有没有列的标签。
根据您的需要,您可以使用-j 代替,这使得osm2pgsql 将所有标签保存在tags 列中,这意味着标签也带有数据库列。
-j|--hstore-all 将所有标签添加到 postgresql 表中的附加 hstore (key/value) 列
导入后,要从数据库中提取所有 maxspeed 标签,您可以使用这样的查询(例如):
SELECT osm_id, name, tags -> 'maxspeed' FROM planet_osm_roads;
其中tags 是 hstore 列,-> 是 hstore 运算符。
有关 hstore 类型及其运算符的更多信息,请参阅 Postgresql 文档:http://www.postgresql.org/docs/9.3/static/hstore.html
【讨论】:
这最好是评论,但是,我没有足够的声誉这样做:我强烈建议不要使用 .bz2,而是使用“Protocolbuffer 二进制格式”.pbf,因为:“它是关于大小只有 gzipped 星球的一半,比 bzipped 星球小 30%。它的写入速度比 gzipped 星球快 5 倍,读取速度比 gzip 星球快 6 倍。该格式旨在支持未来的可扩展性和灵活性。”更多信息:http://wiki.openstreetmap.org/wiki/PBF_Format
【讨论】: