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

news2024/10/6 0:35:39

写在前面

         偶尔听到同事说一个数据处理重复性的流程太多,就了解了下,原来是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属性信息

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1526146.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

鸿蒙-项目创建及了解

目录 项目创建 1.App普通项目创建 2.元服务创建 项目结构 .hvigor .idea AppScope entry EntryAbility.ts pages resources module.json5 ohosTest hvigorfile.ts build-profile.json5 oh_modules build-profile.json5 hvigorfile.ts 项目运行 项目创建 F…

vue3+ts+element-plus实际开发之统一掉用弹窗封装

vue3tselement-plus实际开发之统一掉用弹窗封装 插槽1. 官网介绍先理解 插槽、具名插槽、 作用域插槽、动态插槽名、具名作用域插槽属性和使用方法 2. 统一调用弹窗封装dome实战- 使用场景:- 对el-dialog进行数据动态设置- 新建一个ts文件用于统一存放组件&#xff…

Windows系统安装配置Everything结合内网穿透实现公网环境搜索本地文件

文章目录 前言1.软件安装完成后,打开Everything2.登录cpolar官网 设置空白数据隧道3.将空白数据隧道与本地Everything软件结合起来总结 前言 要搭建一个在线资料库,我们需要两个软件的支持,分别是cpolar(用于搭建内网穿透数据隧道…

2024年5月软考初级《信息处理技术员》报名考试全流程梳理

2024年软考信息处理技术员考试报名时间节点: 报名时间:上半年3月18日到4月15日,下半年8月19日到9月15日(各地区报名时间不同,具体日期见官方通告) 准考证打印时间:上半年5月20日起&#xff0c…

项目文章|真菌ChIP-seq+RNA-seq解析脱落酸生物合成的调控机制

组蛋白翻译后修饰是表观遗传调控的主要机制之一,已被证明在基因表达的调控中发挥重要作用,参与真菌发育、感染相关的形态发生、环境应激反应、次级代谢产物的生物合成和致病性。我们分享过不少真菌组蛋白修饰的文章,今天接着带来一篇利用ChIP…

uniapp使用Echarts图表H5显示正常 打包app显示异常

uniapp使用Echarts在H5页面调试 调试完在H5正常显示 然后通过安卓机调试的时候 发现直接空白了 还有这个爆错 Initialize failed: invalid dom 我有多个图表、图表是通过v-for循环出来的 解决方案 原来是yarn直接安装Echarts 然后改成本地JS文件引入 gitbub文件地址 — dist/…

大屏动效合集更更更之实现百分比环形

实现效果 参考链接: https://pslkzs.com/demo/pie/demo1.php 写在最后🍒 源码,关注🍥苏苏的bug,🍡苏苏的github,🍪苏苏的码云

华院计算 | 意大利早期的三位女学者——历史没有忘记

意大利历史上名人很多,其中三位先驱女学者特别值得后人铭记。哲学家艾琳娜皮斯科皮亚(Elena Lucrezia Cornaro Piscopia,1646年6月5日-1684年7月26日)于1678年从帕多瓦大学(Universit di Padova)获得哲学博…

SAP MRP允许过去开始日期简介

在SAP系统中,关于“过去开始日期”的配置点,通常涉及到物料需求计划(MRP)的运行和计划订单的处理。特别是在MRP运行后,如果发现计划订单的日期不符合预期,可能需要进行相应的调整。 之前在项目中就有用户提出MRP跑出的结果不允许在过去的时间,必须要在当前日期或者在当前…

【华为Datacom数通认证】HCIA-HCIP-HCIE

华为认证课程概述 华为认证是华为技术有限公司(简称"华为")基于"平台生态"战略,围绕"云-管-端"协同的新ICT技术架构,打造的业界覆盖ICT领域最广的认证体系,包含"ICT技术架构认证"、"ICT开发者…

解决Could not autowire. No beans of ‘UserMapper‘ type found问题

问题: 解决方法1 降低spring版本 失败 解决方法2 查看数据库连接,无作用 解决方法3 polo,Mapper不在同一级,修改,但无作用 解决方法4 将Autowrited改为Autowrited(required false),无作用 解决方法…

vulhub中GIT-SHELL 沙盒绕过漏洞复现(CVE-2017-8386)

GIT-SHELL 沙盒绕过(CVE-2017-8386)导致任意文件读取、可能的任意命令执行漏洞。 测试环境 为了不和docker母机的ssh端口冲突,将容器的ssh端口设置成3322。本目录下我生成了一个id_rsa,这是ssh的私钥,连接的时候请指…

人免疫球蛋白E (Human IgE) 单克隆抗体—BioPorto

免疫反应是指机体对于异己成分或者变异的自体成分做出的防御反应,当免疫系统对正常无害物质产生不适当反应时,则称为变态反应,即过敏。免疫球蛋白E(IgE)是一类与过敏反应有关的抗体,通常在人类血清蛋白中含…

【问题解决】AttributeError: module ‘tensorflow‘ has no attribute ‘io‘

💗💗💗欢迎来到我的博客,你将找到有关如何使用技术解决问题的文章,也会找到某个技术的学习路线。无论你是何种职业,我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章,也欢…

滤波器自动化测试之插入损耗测试方法与标准

插入损耗是指信号通过滤波器后,输出信号与输入信号之间的功率差距。插入损耗包括共模插入损耗和差模插入损耗两种。插入损耗越小,说明滤波器对输入信号的衰减程度就越低,滤波器的性能就越好。作为滤波器的重要指标之一,插入损耗测…

广告电商模式:三方共赢的创新路径与未来趋势

随着互联网的迅猛发展和普及,电子商务与广告行业也在经历前所未有的变革与创新。在这样的背景下,广告电商模式作为一种新兴的商业模式,正逐渐崭露头角。它将广告与电子商务紧密融合,通过精准营销和用户参与,实现了广告…

C语言文件操作 w模式

先上菜 #include<stdlib.h> #include<stdio.h> int main() { FILE* pfWrite fopen("test.txt", "w"); if (pfWrite NULL) { printf("%s\n", strerror(errno)); return 0; } //写文件 fputc(b…

Odoo17免费开源ERP开发技巧:如何在表单视图中调用JS类

文/Odoo亚太金牌服务开源智造 老杨 在Odoo最新V17新版中&#xff0c;其突出功能之一是能够构建个性化视图&#xff0c;允许用户以独特的方式与数据互动。本文深入探讨了如何使用 JavaScript 类来呈现表单视图来创建自定义视图。通过学习本教程&#xff0c;你将获得关于开发Odo…

xiaohongshu Shield 8.27

支持自己传输 xy-ter-str, 进行设备绑定计算 也支持自动请求初始化设备&#xff0c;无需 xy-ter-str 传输参数&#xff1a;url , xy-platform-info, xy-common-params,device_id 以及 xy-ter-str 精准计算&#xff0c;纯算法源码还原魔改算法&#xff0c;非jar 非unidbg 非调…

hash+前缀和:和可被k整除的子数组

题目 给定一个整数数组 nums 和一个整数 k &#xff0c;返回其中元素之和可被 k 整除的&#xff08;连续、非空&#xff09; 子数组 的数目。 子数组 是数组的 连续 部分。 示例 1&#xff1a; 输入&#xff1a;nums [4,5,0,-2,-3,1], k 5 输出&#xff1a;7 解释&#x…