打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
GeoJson数据合并
本文主要是基于geojson-merge,实现多个geojson文件合并为一个geojson文件,以便实现基于该文件进行数据分析展示
geojson合并概述
当前在 datav的geoatlas中,可以下载单个地市或区县的数据,例如福建省下面每个地市都可以单独下载一个geojson文件,现在需要将所有地市的geojson合并为一个福建省区县层级的geojson
geojson-merge
现在 npm安装 geojson-merge库:
npm i @mapbox/geojson-merge
支持两种方式进行合并
方式1-文件方式合并
该方式是每个geojson文件作为数组,传入到merge方法中进行合并,具体如下:
var geojsonUtil = require("@mapbox/geojson-merge");var fs = require("fs");var fileDir = "./infiles/";// 该方法是异步执行的fs.readdir(fileDir, { withFileTypes: true }, function (derr, files) { if (derr) { return console.error(derr); } var fileNames = []; files.forEach(function (file) { // 读取每个文件 if (file.isFile()) { // 注意name只能获取到文件名称 fileNames.push(fileDir + file.name); } }); // 此处返回的是JSONStream对象 var mergeStream = geojsonUtil.mergeFeatureCollectionStream(fileNames); // 直接文件方式合并结果会导致一部分数据丢失 var outFileStream = fs.createWriteStream("./outfiles/文件方式合并结果.json"); mergeStream.pipe(outFileStream); // mergeStream.pipe(process.stdout); console.log("json文件合并完毕");});
注意:当前将福建省各个地市文件合并后,得到的结果会出现一部分数据丢失
方式2-内存数据合并
更推荐的一种方式是,将所有json文件读取到内存中,然后进行合并,具体如下:
var geojsonUtil = require("@mapbox/geojson-merge");var fs = require("fs");var fileDir = "./infiles/"; 语言 方法
8873抖音创业网
XeO35梨涡app有风险吗「知识普及」官方说明
9918 2011-08-24 04:31:40
// 该方法是异步执行的fs.readdir(fileDir, { withFileTypes: true }, function (derr, files) { if (derr) { return console.error(derr); } var datas = []; files.forEach(function (file) { // 读取每个文件 if (file.isFile()) { // 注意name只能获取到文件名称 // 注意同步读取的结果是string类型,需要转换为json对象 datas.push(JSON.parse(fs.readFileSync(fileDir + file.name, "utf8"))); } }); // merge之后得到的是json对象,写入数据文件时需要通过stringify方法转换为string类型 var mergedJson = geojsonUtil.merge(datas); fs.writeFile( "./outfiles/内存方式合并结果.json", JSON.stringify(mergedJson), () => { console.log("文件合并完成"); } );});
输出的合并json文件,用tableau可视化展示效果如下(增加了随机指标值):
补充说明
vscode可以直接对node程序进行debug,一般是先采用默认配置进行debug,然后手工将配置信息修改如下:
{ // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "type": "node", "request": "launch", "name": "Launch Program", "skipFiles": ["<node_internals>/**"], "program": "${file}" } ]}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
浅谈 JavaScript 处理树形结构的几个场景与方案
mock模拟数据的使用方法
node.js面试题大全-侧重后端应用与对Node核心的理解
Gulp.js深入讲解
nodejs核心技术
Node.js如何响应Ajax的POST请求并且保存为JSON文件详解
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服