【问题标题】:How to load OSM (GeoJSON) data to ArangoDB?如何将 OSM (GeoJSON) 数据加载到 ArangoDB?
【发布时间】:2017-03-17 12:50:20
【问题描述】:

如何将 OSM 数据加载到 ArangoDB?

我从 OSM 加载了名为 luxembourg-latest.osm.pbf 的数据 sed,然后使用 OSMTOGEOJSON 将其转换为 JSON,之后我尝试使用下一个命令将结果 geojson 加载到 ArangoDB:arangoimp --file out.json --collection lux1 --server.database geodb 并得到大量错误列表:

...
2017-03-17T12:44:28Z [7712] WARNING at position 719386: invalid JSON type (expecting object, probably parse error), offending context: ],
2017-03-17T12:44:28Z [7712] WARNING at position 719387: invalid JSON type (expecting object, probably parse error), offending context: [
2017-03-17T12:44:28Z [7712] WARNING at position 719388: invalid JSON type (expecting object, probably parse error), offending context: 5.867441,
...

我做错了什么?

更新:似乎转换器 osm2json 转换器应该使用选项 osmtogeojson --ndjson 运行,该选项生成的项目不是单个 Json,而是逐行模式。

【问题讨论】:

  • 第 719384 到 719390 行中的导入文件是什么样的?那里的 JSON 有效吗?
  • 没错,就是 JSON。

标签: json openstreetmap geojson arangodb


【解决方案1】:

正如@dmitry-bubnenkov 已经发现的那样,--ndjson 需要为 ArangoImp 生成正确的输入。

这里必须知道,ArangoImp 需要一个名为 JSONL 的 JSON 子集(因为它不会自行解析 json)。 因此,JSON-File 的每一行在导入后都有望成为集合中的一个 json 文档。为了最大化性能和简化实现,json 在发送到服务器之前没有完全解析。

它尝试将 JSON 分割成服务器允许的最大请求大小的块。它依靠 JSONL 行结尾来隔离可能的块。

但是,服务器肯定需要有效的 JSON。使用可能不完整的 JSON 文档将切碎的部分发送到服务器将导致服务器上的解析错误,这是您在输出中看到的错误消息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-22
    • 2017-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-17
    相关资源
    最近更新 更多