【问题标题】:osm2pgsql data converting: lost columnsosm2pgsql 数据转换:丢失的列
【发布时间】:2015-09-24 17:04:05
【问题描述】:

我已经使用 osm2pgsql 执行了从 *.bz2 格式到 PostgreSQL 数据库的 osm 数据转换。但是在转换之后,我在表planet_osm_roads 中看不到这样的列:lanes,maxspeed。 Сan有人解释这些列在哪里?谢谢。

【问题讨论】:

    标签: openstreetmap postgis


    【解决方案1】:

    使用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

    【讨论】:

    • 谢谢,这些信息帮助我确定了我的问题。
    • 不客气。如果您解决了您的问题,请不要忘记接受答案
    【解决方案2】:

    这最好是评论,但是,我没有足够的声誉这样做:我强烈建议不要使用 .bz2,而是使用“Protocolbuffer 二进制格式”.pbf,因为:“它是关于大小只有 gzipped 星球的一半,比 bzipped 星球小 30%。它的写入速度比 gzipped 星球快 5 倍,读取速度比 gzip 星球快 6 倍。该格式旨在支持未来的可扩展性和灵活性。”更多信息:http://wiki.openstreetmap.org/wiki/PBF_Format

    【讨论】:

      猜你喜欢
      • 2015-03-28
      • 2012-06-09
      • 2012-02-07
      • 1970-01-01
      • 2011-02-16
      • 2017-12-29
      • 2014-07-13
      • 1970-01-01
      • 2017-08-09
      相关资源
      最近更新 更多