nodejs实现链接shp的属性信息(替换字段或者追加字段)

本文介绍了如何利用Node.js编写脚本,通过Shapefile和Excel数据处理,实现批量更新shp文件中的属性,包括shp转GeoJSON、DBF处理、Excel解析、字段操作、GeoJSON转shp以及文件压缩和解压的过程。
摘要由CSDN通过智能技术生成

写在前面

         偶尔听到同事说一个数据处理重复性的流程太多,就了解了下,原来是1份shp数据对应着一个xls属性文件,需要把xls文件里的一部分属性更新到shp的相关字段中,当然这种操作是可以用ArcGIS或者QGIS实现,但是当数据特别多的时候,且这种操作流程一模一样时,人就崩溃了,需要用程序的方式去实现。由于自己最熟悉的是js,便用周末的时间用nodejs写了一些代码去处理这个任务。代码托管于github(这里是地址https://github.com/ONEGISER/node-examples/tree/master/shp-relation-xls),特此记录,详细信息请读代码里面的readme.md。

流程介绍

1.shp转成geojson(shapefile库)

2.dbf转成object(因为有乱码的问题,需要将第一步生成的属性替换掉,shapefile库)

3.xls解析成object(node-xlsx库)

4.通过关键字段信息处理(字段替换、删除、追加、特殊类型转换等操作),生成新的geojson

5.geojson转成shp(结果为压缩包,需要@gis-js/geojson2shp、JSZip库)

6.压缩包解压(compressing库)

关键配置信息

const encodings = { "2023涉河建筑物": "utf-8", "2022年涉河建筑物": "GBK" }; //shp的编码
const shpRelationId = "code"; //shp的关联id
const xlsTableHeaderIndex = 1; //excel字段起始列
const xlsRelationId = "BM"; //excel的关联id
const deleteFields = []; //原始数据需要删除的字段
const addFields = ["XMMC"]; //添加的字段,"*"代表xls的所有字段
const toStringFields = ["code", "经度", "纬度", "年份"]; //转成字符串的字段
const replaceFields = {
  市: "S",
  县: "X",
  位置: "WZ",
  河流: "RV_NAME",
  名称: "XMMC",
  类型: "LXMC",
}; //替换字段对应关系
const sortFields = [
  "XMMC",
  "市",
  "县",
  "显隐",
  "名称",
  "类型",
  "经度",
  "纬度",
  "位置",
  "河流",
  "备注",
  // "code",
  // "年份",
]; //排序字段

原始文件

xls

shp

成果输出

文件成果

shp属性信息

geojson属性信息

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值