当前位置: 首页 > news >正文

网站源代码制作四大门户网站对比分析

网站源代码制作,四大门户网站对比分析,万维网域名注册网站,怎么样推广最有效最快速概述 最近在用node做一个shp文件的上传入库的功能,使用的是shapefile库,但是在入库的时候由于dbf文件字符集的原因导致数据的入库失败或者不能正确的显示。于是几经搜索资料,找到了一个可行的方法,跟大家分享一下。 shapefile简…

概述

最近在用node做一个shp文件的上传入库的功能,使用的是shapefile库,但是在入库的时候由于dbf文件字符集的原因导致数据的入库失败或者不能正确的显示。于是几经搜索资料,找到了一个可行的方法,跟大家分享一下。

shapefile简介

Shapefile-js提供了编写简单的JavaScript程序以读取ESRI Shapefile 以及关联的属性文件的功能,它可以在网页端使用,也可在Node.js环境下使用,node安装后也可在终端使用。

npm i shapefile

Node中使用:

var shapefile = require("shapefile");shapefile.open("example.shp").then(source => source.read().then(function log(result) {if (result.done) return;console.log(result.value);return source.read().then(log);})).catch(error => console.error(error.stack));

web中使用:

<!DOCTYPE html>
<script src="https://unpkg.com/shapefile@0.6"></script>
<script>shapefile.open("https://cdn.rawgit.com/mbostock/shapefile/master/test/points.shp").then(source => source.read().then(function log(result) {if (result.done) return;console.log(result.value);return source.read().then(log);})).catch(error => console.error(error.stack));</script> 

终端中可以快速将shp转换为json文件。

shp2json example.shp

dbf文件

dbf文件由头记录数据记录组成。头记录定义该表的结构并包含与表相关的其他信息。
image.png

BDF文件头的详细格式如下表:

image.png

如上表,dbf文件的语言驱动ID在第29个字节。下表为各字符集对应的编码。

IDCodepageDescription
10x01437
20x02850
30x031252
40x0410000
80x08865
90x09437
100x0A850
110x0B437
130x0D437
140x0E850
150x0F437
160x10850
170x11437
180x12850
190x13932
200x14850
210x15437
220x16850
230x17865
240x18437
250x19437
260x1A850
270x1B437
280x1C863
290x1D850
310x1F852
340x22852
350x23852
360x24860
370x25850
380x26866
550x37850
640x40852
770x4D936
780x4E949
790x4F950
800x50874
870x57Current ANSI CP
880x581252
890x591252
1000x64852
1010x65866
1020x66865
1030x67861
1040x68895
1050x69620
1060x6A737
1070x6B857
1080x6C863
1200x78950
1210x79949
1220x7A936
1230x7B932
1240x7C874
1340x86737
1350x87852
1360x88857
1500x9610007
1510x9710029
1520x9810006
2000xC81250
2010xC91251
2020xCA1254
2030xCB1253
2040xCC1257

通过上表,我们可得知中文对应的Id为77,因此代码实现的时候我们可以这么做判断:

  async parseFields(file) {try {// 检查DBF文件是否存在const dbfExists = await existsAsync(file.dbfFilePath);if (!dbfExists) {logger.error(`DBF文件不存在: ${file.dbfFilePath}`);return [];}console.log('start open Dbf file...', file.dbfFilePath);// 读取DBF文件的前几个字节来检测编码const buffer = await readFileAsync(file.dbfFilePath);// DBF文件的语言驱动ID在第29个字节(0-based索引为28)// http://shapelib.maptools.org/codepage.html?d=1563413688103const languageDriverId = buffer[29];let charset = 'UTF-8';if (languageDriverId === 77) {charset = 'GBK';}logger.info(`DBF文件字符集检测结果: ${charset} (languageDriverId: ${languageDriverId})`);// 使用检测到的字符集打开DBF文件let source = null;try {source = await shapefile.openDbf(file.dbfFilePath, {encoding: charset});} catch (error) {// 如果使用检测到的字符集打开失败,尝试使用GBK(中文环境常用)logger.error(`使用${charset}打开DBF文件失败:`, error);charset = 'GBK';source = await shapefile.openDbf(file.dbfFilePath, {encoding: charset});}// 使用shapefile库读取DBF文件const fields = [];// 获取字段信息if (source._fields) {for (const field of source._fields) {const fieldTypeDixt = {C: 'String',N: 'Number',D: 'Date',F: 'Number',}fields.push({name: field.name,type: fieldTypeDixt[field.type] || 'String',size: field.length,decimal: field.decimal});}}return {fields: fields,charset: charset};} catch (error) {logger.error('解析字段信息失败:', error);return [];}}
}
http://www.dtcms.com/a/431337.html

相关文章:

  • 教学网站开发背景及意义怎样下载黑龙江人社app
  • 系统环境异常、网络适配难,黑科技一站式解决
  • 【APK安全】系统管理器安全风险与防御指南
  • 有做淘宝网站的在线网络制作系统
  • 【VSCode中Java开发环境配置的三个层级之Maven篇】(Windows版)
  • 10.1 刷题心得
  • 前端-Vue工程化
  • 深圳企业网站制作中心用网站做CAN总线通信好吗
  • 中山移动网站建设报价三室一厅二卫装修效果图
  • .net商城网站开发做封面的地图网站
  • 复习一下Cpp(1)
  • 什么网站访问量公司变更地址需要多少钱
  • final字段单元测试
  • 车载Class D功放电源脚烧蚀可能原因
  • 34线城市做网站推广最新新闻事件摘抄
  • 嵌入式ARM程序高级调试技能:26. ARM Linux CPU高负载分析:系统调用过多导致的线程高负载案例
  • 无锡企业自助建站系统网站开发和游戏开发的区别
  • 外贸网站平台都有哪些平台毕业设计做网站简单吗
  • dotnet-sdk-5.0.408-win-x64安装教程(附详细步骤和附安装包)
  • 数据要素X_解读 第三批“数据要素×”典型案例——金融服务领域【附全文阅读】
  • 一篇文章讲清Prompt、Agent、MCP、Function Calling
  • 网站栏目设计方案物流网络货运平台
  • 异步静态Sdram操作
  • 淘宝客的网站是怎么做的运城学院教务网络管理系统
  • 天津哪里做网站东莞网站建设服务有什么用
  • 网站原型设计和版式设计网站设计哪家公司好
  • 详解doris基础
  • 利用表单大师做网站济南建网站app
  • 网站需求分析文档懒人办公ppt模板免费
  • Java 集合框架之 List 全面解析(从概念到实践)