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

写在前面

         偶尔听到同事说一个数据处理重复性的流程太多,就了解了下,原来是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.mzph.cn/news/754190.shtml

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

相关文章

综合交易模型----可转债三低策略实盘qmt版,提供源代码

链接 综合交易模型----可转债三低策略实盘qmt版,提供源代码 (qq.com) 可转债3低策略是指选择正股市值低、转债余额低、溢价率低的可转债进行投资的策略。 市值低:指的是可转债对应的正股市场价值较小,这通常意味着需要较少的资金就可以对股价…

jeecg启动Sentinel 一直是空白页面 解决办法用 外部 Sentinel SpringCloud之Sentinel概述和安装及简单整合

jeecg启动Sentinel 一直是空白页面 解决办法用 外部 Sentinel SpringCloud之Sentinel概述和安装及简单整合 文章目录 jeecg启动Sentinel 一直是空白页面 解决办法用 外部 Sentinel SpringCloud之Sentinel概述和安装及简单整合 Sentinel概述基本介绍 Sentinel安装下载地址: http…

聊聊AI时代学习这件事本身应该发生什么样的变化

随着 AI 大模型 的爆发,我们身处这个时代,应该怎么样去学习去了解这些前言的技术?可能很多人会说我英文不好,我算法不行,无法深入去了解 AI 大模型相关的知识吧? 没关系,其实博主也跟大家一样&…

实在智能Agent——RPA终极进化方向

RPA技术备受瞩目,它通过“机器人”自动化了人力执行的重复性、低复杂度任务,解放了员工并降低了企业成本。RPA机器人全天候运行,避免人为错误,高效处理任务,成为处理事务、操作数据、回应查询的理想选择。在管理后台&a…

第四百一十回

文章目录 1. 概念介绍2. 方法与细节2.1 获取方法2.2 使用细节 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何获取当前系统语言"相关的内容,本章回中将介绍如何获取时间戳.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我们在本章…

实体店运营方案大全:从选址到日常管理的全面指导

想开实体店或正在创业的朋友们,大家好!今天,我作为一个鲜奶吧5年的创业者,为大家分享一份实体店运营方案大全,涵盖从选址到日常管理的各个方面。我在实体店方面有一些心得体会,今天就来和大家聊聊&#xff…

【软考】系统集成项目管理工程师(十九)收尾管理【1分】

一、项目收尾的内容 二、总结 三、软件后续工作 练一练 【例1-17上】(B)不属于项目验收的内容。 A.验收测试 B.系统维护工作 C.项目终验 D.系统试运行 【例2-17上】信息系统集成项目完成验收后要进行一个综合性的项目后评估,评估的内容一般包括&#…

探索Spring中的属性注入:@Value注解解析与应用

探索Spring中的属性注入:Value注解解析与应用 探索Spring中的属性注入:Value注解解析与应用摘要引言正文作用代码准备示例注入字符串注入属性注入Bean及其属性 其他属性注入优先级问题对Value属性注入的扩展Spring Boot对Value类型转换的扩展 代码案例演…

第三门课:结构化机器学习项目-机器学习策略

文章目录 1 机器学习策略一1.1 为什么是ML策略?1.2 正交化1.3 单一数字评估指标1.4 满足和优化指标1.5 训练、开发及测试集划分1.6 开发集和测试集的大小1.7 什么时候改变开发、测试集和指标?1.8 为什么是人的表现?1.9 可避免偏差1.10 理解人…

Unity UGUI之Toggle基本了解

在Unity中,Toggle一般用于两种状态之间的切换,通常用于开关或复选框等功能。 它的基本属性如图: 其中, Interactable(可交互):指示Toggle是否可以与用户交互。设置为false时,禁用To…

在Linux系统中如何查询日志?

在工作中,我们有时候会定位问题,这时候就需要查询日志了,那么查询日志的命令有哪些呢? cat 查看某个日志文件中的所有内容。 使用示例:cat file.txt 显示 file.txt 文件的所有内容。 如果要对查询的结果进行筛选&am…

17双体系Java学习之数组的长度

数组的长度 //获取数组长度 arrays.lengthfor (int i 0; i <nums.length; i) {sum sum nums[i];}System.out.println("总和为&#xff1b;"sum);

免费阅读篇 | 芒果YOLOv8改进110:注意力机制GAM:用于保留信息以增强渠道空间互动

&#x1f4a1;&#x1f680;&#x1f680;&#x1f680;本博客 改进源代码改进 适用于 YOLOv8 按步骤操作运行改进后的代码即可 该专栏完整目录链接&#xff1a; 芒果YOLOv8深度改进教程 该篇博客为免费阅读内容&#xff0c;直接改进即可&#x1f680;&#x1f680;&#x1f…

Java八股文(XXL-JOB)

Java八股文のXXL-JOB XXL-JOB XXL-JOB xxl-job 是什么&#xff1f;它的主要作用是什么&#xff1f; xxl-job 是一款分布式任务调度平台&#xff0c;用于解决分布式系统中的定时任务和异步任务调度问题。 它提供了任务的注册、调度、执行和监控等功能&#xff0c;能够帮助开发者…

MindGraph:文字生成知识图

欢迎来到MindGraph&#xff0c;这是一个概念验证、开源的、以API为先的基于图形的项目&#xff0c;旨在通过自然语言的交互&#xff08;输入和输出&#xff09;来构建和定制CRM解决方案。该原型旨在便于集成和扩展。以下是关于X的公告&#xff0c;提供更多背景信息。开始之前&a…

Python错题集-9PermissionError:[Errno 13] (权限错误)

1问题描述 Traceback (most recent call last): File "D:\pycharm\projects\5-《Python数学建模算法与应用》程序和数据\02第2章 Python使用入门\ex2_38_1.py", line 9, in <module> fpd.ExcelWriter(data2_38_3.xlsx) #创建文件对象 File "D:…

机器学习----特征缩放

目录 一、什么是特征缩放&#xff1a; 二、为什么要进行特征缩放&#xff1f; 三、如何进行特征缩放&#xff1a; 1、归一化&#xff1a; 2、均值归一化&#xff1a; 3、标准化&#xff08;数据需要符合正态分布&#xff09;&#xff1a; 一、什么是特征缩放&#xff1a; 通…

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之二 素描画风格效果

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之二 素描画风格效果 目录 Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之二 素描画风格效果 一、简单介绍 二、素描画风格效果实现原理 三、案例简单实现步骤 一、简单介绍 Python是一种跨…

react native 实现自定义底部导航与路由文件配置

首先先把需要的一些库引入 yarn install react-navigation/native yarn install react-native-screens react-native-safe-area-context yarn install react-navigation/native-stack yarn add react-navigation/bottom-tabs 创建路由文件及四个底部导航页面 router文件下的bot…

python 深度学习 记录遇到的报错问题12

本篇继python 深度学习 记录遇到的报错问题11_undefined symbol: __nvjitlinkadddata_12_1, version-CSDN博客 目录 一、AttributeError: module ‘tensorflow‘ has no attribute ‘app‘ 二、AttributeError: module tensorflow has no attribute placeholder 三、Attribu…