日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

GeoJson数据合并

發布時間:2023/12/14 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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/";// 該方法是異步執行的 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}"}] }

參考資料

  • https://www.npmjs.com/package/@mapbox/geojson-merge
  • https://datav.aliyun.com/tools/atlas/

總結

以上是生活随笔為你收集整理的GeoJson数据合并的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。