简介
osm-pbf-parser 是一个从 *.osm.pbf 文件中解析 Open Street Map 数据的 JavaScript 包。支持文件本地解析和网络请求解析,同时支持同步和异步解析,能够解析并返回许多数据,包括节点、道路、边界、关系等等。
安装
使用 osm-pbf-parser 需要在你的项目中安装 npm 包,你可以通过以下命令进行安装:
npm install osm-pbf-parser --save
使用方法
基本用法
将 osm-pbf-parser 引入到你需要使用的文件,并使用以下代码进行解析:
-- -------------------- ---- ------- ----- ------------ - ------------------------- ----- -- - ------------- -- ---- ----------------------------------- ----- ------- -- - -- ----- ----- --- ----- ------ - --- -------------- -------------------- ----- ----- -- - -- ----- ----- --- -- --- --------------- -- --展开代码
配置参数
在实例化一个 OsmPbfParser 对象时,可以传递一些参数进行配置。下面列举了一些常用的参数:
tags
- 解析哪些标签,如果该参数为 null,则解析所有标签endDocument
- 是否分段解析useMessageQueue
- 是否启用消息队列ignoreInvalidPrimitives
- 是否忽略不合法数据ignoreDenseNodeWarning
- 是否忽略密集节点警告
以下是一个配置了上述参数的例子:
const parser = new OsmPbfParser({ tags: ['highway', 'building'], endDocument: false, useMessageQueue: true, ignoreInvalidPrimitives: false, ignoreDenseNodeWarning: true })
同步解析
如果你使用的是同步方法读取文件,那么可以使用 OsmPbfParser 的 syncParse 方法对文件进行解析,其用法类似于 parse 方法:
const data = parser.syncParse(buffer)
解析结果
解析出的结果是一个对象,对象的属性包括:
bounds
- 这个文件地理范围的经纬度边界nodes
- 地图上所有节点的数组ways
- 地图上所有的道路的关系数组relations
- 地图上所有实体关系的数组
以下是一个解析结果,其中包含两个节点,一个包含两个节点和两条边的道路,以及一个节点和一条边的道路:
-- -------------------- ---- ------- - ------- - ------- -- ------- -- ------- ------------------- ------- ----------------- -- ------ - - --- ----------- ---- --------- ---- - -- - --- ----------- ---- -- ---- ------------------ - -- ----- - - --- ------ ----- - ----------- ----------- ---------- -- ----- - -------- -------------- ----- -------- --- --- - --- -- ----- ----- -- - --- ------ ----- - ----------- ---------- -- ----- - -------- ------------- -- ----- ----- - -- ---------- -- -展开代码
示例代码
以下是一个完整的示例代码,将 Open Street Map 数据文件中的节点、道路和边界信息解析出来,并以 geojson 格式输出:
-- -------------------- ---- ------- ----- ------------ - ------------------------- ----- -- - ------------- ----- ------ - --- -------------- ----------------------------------- ----- ------- -- - -- ----- ----- --- -------------------- ----- ----- -- - -- ----- ----- --- ----- ------- - - ----- -------------------- --------- -- - -- - ----- --- -------- ---------------- - ------------------------------------------- -- -- ----- ---------- --------- - ----- -------- ------------ ---------- --------- -- ----------- ---- -------- ----- ------- ---- -- - ---- --- -------- ---------------- - ----------------------------------------- -- - ----- ------ - ---------------- -- - ----- ---- - -------------------- -- ------- --- ---- ------ ---------- --------- -- ---------------------- -- ------- ------ - ----- ---------- --------- - ----- ------------- ------------ ------ -- ----------- ---- ------- ----- ------ ----- --------- - --- -- -- ------- ------------------------------------ -- --展开代码
总结
使用 osm-pbf-parser 可以方便地从 *.osm.pbf 文件中解析出 Open Street Map 数据,进而进行地理位置的可视化等等操作。如果你需要使用 Open Street Map 数据,可以尝试使用本工具库,如果你想深入学习该库,可以进一步阅读其源代码。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/198943