【问题标题】:Filtering openstreetmap data for postgis为 postgis 过滤 openstreetmap 数据
【发布时间】:2017-12-31 00:20:59
【问题描述】:

我正在创建一个 postgis 数据库并希望使用过滤后的 OpenStreetMap 数据。

为此,我尝试了以下过程:

  1. https://planet.osm.org/下载了planet.osm.bz2文件
  2. 使用 bzip2 解压到 *.osm
  3. 通过命令提示符使用 osmfilter 过滤文件
  4. 在命令提示符下使用 osm2pgsql 将过滤后的 *.osm 文件上传到我的数据库

对于我的第一次尝试,我只过滤了陆地区域。

但是,在使用 osm2pgsql 的第 4 步中,我在命令提示符中收到以下错误:“Osm2pgsql 由于错误而失败:第 3137102 行第 61 列的 XML 解析错误:不是 格式良好(无效的令牌) "

从我的 windows 电脑上的命令提示符显示:

Z:\OpenStreetMap>osm2pgsql -U postgres -W -m -d osm -p filteredland -S "C:\Progr
am Files (x86)\HOTOSM\share\default.style" filteredland2.osm
osm2pgsql version 0.92.0 (64 bit id space)

Password:
Using built-in tag processing pipeline
Using projection SRS 3857 (Spherical Mercator)
Setting up table: filteredland_point
Setting up table: filteredland_line
Setting up table: filteredland_polygon
Setting up table: filteredland_roads
Allocating memory for sparse node cache
Node-cache: cache=800MB, maxblocks=12800*65536, allocation method=1
Mid: Ram, scale=100

Reading in file: filteredland2.osm
Using XML parser.
Processing: Node(1230k 61.5k/s) Way(0k 0.00k/s) Relation(0 0.00/s)node cache: st
ored: 1233078(100.00%), storage efficiency: 50.00% (dense blocks: 0, sparse node
s: 1233078), hit rate: -nan(ind)%
Osm2pgsql failed due to ERROR: XML parsing error at line 3137102, column 61: not
 well-formed (invalid token)

我还尝试了两条替代路线,但也失败了:

  1. 下载 planet.pbf -> 使用 osmconvert 转换为 .o5m -> 使用 osmfilter 过滤

  2. 下载 planet.pbf -> 使用 osmconvert 转换为 .osm -> 使用 osmfilter 过滤(发出警告)-> 使用 osm2pgsql 来 转入数据库

任何人都知道如何避免此错误或有过滤planet.osm 文件并上传到postgis 的经验?

【问题讨论】:

    标签: postgresql openstreetmap postgis osm2pgsql osmfilter


    【解决方案1】:

    我建议使用Osmium而不是osmfilter,它不需要先将行星转换为不同的格式,并且原生能够返回PBF数据,可以直接由osm2pgsql处理。它也更快。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-07
      • 1970-01-01
      • 2014-08-26
      • 1970-01-01
      • 2018-12-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多