前言
在地理信息系统 ( GIS ) 开发项目中,经常需要对空间数据进行转化和处理。而 OGR 的 ogr2ogr 可以方便地将不同的数据源进行格式转化,但是输出格式默认是 Shapefile 格式,而不是 JSON 格式,且不论是否只输出一个文件,输出的文件也是一个整体而不是一个可以一行一行读取的流数据。这种情况下,我们需要指定用 JSON 表示地理数据,然后将数据以流的形式输出到一个文件中。而这时候就可以使用 ogr-json-stream 这个 npm 包。
ogr-json-stream 是什么
ogr-json-stream 是一个可以将 OGR 转化为 JSON 的 npm 包。它将 OGR 转化为一个读取流,并且会将每一个要素转化为一个 JSON 行。这种形式让输出非常便于浏览器端的处理。
安装 ogr-json-stream
可以通过 npm 命令安装 ogr-json-stream:
npm install ogr-json-stream
使用 ogr-json-stream 将 Shapefile 转化为 GeoJSON
首先需要在 Node.js 环境中安装 OGR,在安装 ogr-json-stream:
npm install ogr-json-stream
ogr-json-stream 的 API 是基于 node-gdal。首先需要设置可以读 Shapefile 的 node-gdal 的库的路径:
const gdal = require('gdal'); gdal.config.set('GDAL_DATA', './node_modules/gdal/data');
然后通过 ogr-json-stream 读取 Shapefile 并将其转化为 GeoJSON:
-- -------------------- ---- ------- ----- ------------- - --------------------------- ----- ----------- - ---------------------------------------------- ----- ------------ - ------------------------------------------------ ----- ------------- - --- --------------- ------------- ------------- ---------- ------------- ------- --- --- --------------------------------
其中 outputStream 是一个文件流,代表输出的文件地址;layerName 代表 Shapefile 中的图层名称;layers 数组代表需要读取的图层的编号数组(从 0 开始计数)。
在转化成功后,GeoJSON 文件就会被输出到指定的文件地址。
使用 ogr-json-stream 将 PostGIS 数据库中的数据导出为 GeoJSON
首先需要在 Node.js 环境中安装 pg 和 pg-query-streamt 两个 npm 包:
npm install pg npm install pg-query-stream
然后可以通过以下代码将 PostGIS 数据库中的数据导出为 GeoJSON:
-- -------------------- ---- ------- ----- -- - -------------- ----- ----------- - --------------------------- ----- ---------- - ---------------------- ----- ------------- - --------------------------- ----- ------ - --- ----------- ----- ----------- ----- ------------ --------- ---------------- --------- ----------- ----- ---- --- ----------------- ----- --- - ------- - ---- ------------ ----- ------------- - --- ------------------------- --------------- ----- ----------- - --- ----------------- ----- ---------- - ----------------------------------------- ----- -------- - -------------------------- ----- ------------ - ------------------------------------------------ ----------------------------------------------------------------- ------------------ -- -- - ------------- ---
其中,需要将上述代码中的数据库连接信息替换成实际的数据库连接信息,sql 语句替换成实际的查询语句即可。
总结
ogr-json-stream 是一个非常方便的 npm 包,可以帮助我们将 OGR 转化为 JSON 格式,而且可以通过流的方式输出到文件或者网络上。在 GIS 开发项目中,使用 ogr-json-stream 可以方便我们将数据导出为 GeoJSON 格式,并且可以有效地利用浏览器端的 JavaScript 进行进一步的处理。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60066f9e3d1de16d83a6709a