IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> node.js读写shp文件转换数据的坐标系 -> 正文阅读

[JavaScript知识库]node.js读写shp文件转换数据的坐标系

接上文:IDEA中配置运行node.js

一、安装所需的npm包

1.读写shp文件的js库gdal

安装命令

npm install gdal -g --save

node-gdal库地址:https://github.com/naturalatlas/node-gdal
文档地址:http://naturalatlas.github.io/node-gdal/classes/gdal.html

2.修改shp文件数据坐标系的js库gcoord

安装命令

npm install gcoord -g

gcoord库地址:https://github.com/hujiulong/gcoord

二、转换代码

两个包安装完成后就可以开始写代码啦,完整的转换代码如下:

const gcoord = require('gcoord');
const gdal = require("gdal");

//r只读  r+读取修改增加  w创建, ESRI Shapefile即shp格式的全称
var dataset = gdal.open("C:\\Users\\syc\\Desktop\\my_road_data\\sz_main_road_test\\mainRoad.shp", "r+", "ESRI Shapefile");
//获取shp文件的第一个图层,我们的这个地图只有一个图层所以layers.get(0)即可
var layer = dataset.layers.get(0);
//获取图层的的数据记录数,看看有没有正确读取到
console.log("number of features: " + layer.features.count());
var i = 0;
var sum = 0;
//遍历数据对每一条记录的坐标数据进行坐标系转换
layer.features.forEach((feature) => {

    //转换前
    // console.log(feature.fid);
    // console.log(feature.getGeometry().toJSON());
    // console.log(feature.fields.toJSON());

    //转换为JSON对象,用gcoord进行geom数据的坐标系转换
    var geojson = JSON.parse(feature.getGeometry().toJSON());
    gcoord.transform(geojson, gcoord.GCJ02, gcoord.WGS84);
    //转换后
    // console.log(geojson);

    //将转换后的数据保存回feature
    feature.setGeometry(gdal.Geometry.fromGeoJson(geojson));

    //将修改保存到shp文件中
    layer.features.set(feature.fid, feature);

    //对比发现保存后的数据点的经度的精度多出了一位,可能是保存浮点数过程中的一个小bug吧,不过没什么影响,尾数精度都十几位了
    // console.log(layer.features.get(feature.fid).getGeometry().toJSON());

    i++;
    sum++;
    if (i === 1000) {
        console.log("已完成数据转换" + sum + "条...............");
        i = 0;
    }
})
console.log("<-----------------转换完成,共转换完成"+ sum + "条数据------------------------>");

//测试时也可用迭代器方法进行迭代,更多操作请参考node-gdal使用文档
// var feature = layer.features.next();
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-02-28 15:20:07  更:2022-02-28 15:23:01 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 8:39:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码