前端实现投影坐标和地理坐标系(CGCS2000)转换

news2024/9/24 19:18:49

前言

地理坐标系和投影坐标系是地理信息系统(GIS)和制图学中用于描述地球表面位置的两种不同的参考系统。它们在使用方式和应用场景上有显著的区别。

1、什么是地理坐标系和投影坐标系?

1.1、地理坐标系

地理坐标系是基于地球的三维球面模型来描述位置的系统。地理坐标系通常使用经度和纬度来表示地球表面的任何一个点。常见的地理坐标系:WGS1984(World Geodetic System 1984)、CGCS2000(China Geodetic Coordinate System 2000)等。

(1)纬度(Latitude):表示一个点相对于赤道的角度,范围是从-90°(南极)到90°(北极)。

(2)经度(Longitude):表示一个点相对于本初子午线的角度,范围是从-180°到180°。

地理坐标系是以地球椭球体或球体模型为基础,适合全球范围的定位,但因为地球表面是曲面的,在较大的范围内使用时可能不够精确。

1.2、投影坐标系

投影坐标系是将地球的三维曲面(通常是椭球体)投影到二维平面上来表示位置的系统。这种转换过程称为地图投影(Map Projection)。常见的投影坐标系墨卡托投影、高斯克吕格投影。

(1)投影方法:通过将地球表面的点投影到一个平面(通常是纸张或屏幕)上,从而将地理坐标转换为平面坐标。常见的投影方法包括墨卡托投影、兰伯特投影、UTM投影等。

(2)平面坐标:在投影坐标系中,位置通常用X(东向)和Y(北向)平面坐标来表示,适用于地图制作和本地区域的测量。

理坐标系虽然对空间位置有利,但难以进行距离、方位、面积的量算,所有需要投影坐标系要计算要素的面积、长度等信息。但它们会引入不同类型的变形(例如形状、面积或距离的变形),因此通常只在特定区域使用。

2、投影坐标系中投影带计算方法

地理坐标系和投影坐标系是相对应的,常见的对应关系

地理坐标系投影坐标系
WGS84墨卡托投影
CGCS200高斯克吕格投影

在进行投影坐标系转换时不同的经度位置的坐标转换参数并不一致,需要根据经度计算具体分带数

(WGS1984-UTM-ZONE-46N)(CGCS2000-3-Degree-GK-CM-105E)

我国基本比例尺地形图多采用高斯-克吕格投影(GK),为减少投影变形,高斯-克吕格投影分为3度或6度带投影。

计算公式:带号=(经度整数位/6)的整数部分+31

方式3度带计算方式6度带计算方式

计算方式

带号=(经度+1.5°)/3取整

带号=(经度+6°)/6取整

适用范围

1:1万比例尺的地形图按3°分带

1:2.5万~1:50万比例尺地形图按6°分带

例如:汶川县东经102°51′~103°44′、103/6≈17+31=48    即:WGS_1984_UTM_Zone_48N

CGCS2000投影带表示意义

CGCS2000_3_Degree_GK_CM_105E 

3°分带下的35带投影(横坐标没有带号)

CGCS2000_3_Degree_GK_Zone_35

3°分带下的35带投影(横坐标有带号)

CGCS2000_GK_CM_105E

6°分带下的18带投影(横坐标没有带号)

CGCS2000_GK_Zone_18

6°分带下的18带投影(横坐标有带号) 

3、前端如何实现投影坐标系转换为CGCS2000地理坐标系?

前端实现坐标系转换最常用的工具是proj4.js工具库。proj4.js是一个 JavaScript 库,用于在 Web 应用程序中执行地理坐标系统的转换。它是 Proj4 的 JavaScript 版本,适用于在浏览器中处理地理空间数据。以下是 Proj4.js 的一些关键特点:

1. 坐标转换:支持在不同的地理坐标系统之间进行转换,比如从 WGS84(常用于 GPS 数据)到 UTM 等。

2. 多种投影支持:与 Proj4 类似,Proj4.js 支持多种地理投影,例如墨卡托投影、兰伯特投影等,可以处理全球或局部的坐标转换需求。

3. 轻量级:作为一个 JavaScript 库,Proj4.js 设计为轻量且高效,适合在 Web 环境中使用,不会显著增加页面的负载。

4. 易于集成:可以与其他 JavaScript 地图库(如 Leaflet.js 和 OpenLayers)一起使用,扩展地图应用的功能。

5.开源:Proj4.js 是开源的,社区支持活跃,可以在 GitHub 上获取代码并贡献。

        通过 Proj4.js,开发者可以在 Web 项目中轻松处理地理坐标转换,实现复杂的地理空间功能。proj4官网:PROJ4JS | Proj4js

3.1、根据地区经度计算出分带名称

例如:临沂地区经纬度位于117度左右,通过分带计算公式可以求出临沂地区的分度带为 39度带,则临沂地区对应的CGCS2000对应的高斯克吕格投影坐标系为:CGCS2000 / 3-degree Gauss-Kruger zone 39

(1)在https://epsg.io/ (是一个提供地理空间参考系统信息的在线平台,需要梯子)网站中根据分带名称搜索对应的分带信息和转换参数

 

(2)找到CGCS2000坐标系的转换参数

 

 

3.2、安装proj4.js实现坐标转换

 (1)安装

npm install proj4

(2)使用proj4结合上一步中找到的转换参数进行转换得到转换后的数据

// CGCS2000 / 3-degree Gauss-Kruger zone 39
let from_system = "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=39500000 +y_0=0 +ellps=GRS80 +units=m +no_defs +type=crs"

// China Geodetic Coordinate System 2000
let to_system = "+proj=longlat +ellps=GRS80 +no_defs +type=crs";


// transform
let trasnformLnglat = proj4(from_system,to_system,[39624337.6595,3876411.9272]);

// 输出  :  [118.36213558429172, 35.00875250]

参考文章

培训一:坐标系与投影、栅格与矢量数据-太原市水利水保科学研究院

高斯克吕格投影分带计算_高斯克吕格投影3度分带-CSDN博客

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

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

相关文章

虚拟机安装centos7-桥接模式

1、打开虚拟机,点击文件,选择新建虚拟机 2、选择典型,点击下一步 3、选择稍后安装操作系统,点击下一步 4、选择系统类型及版本,点击下一步,因centos7是Linux操作系统,且是64位的,所以…

隐藏的艺术:滥用 404 页面的新 Magecart 活动

介绍 一项新的、复杂的、隐蔽的 Magecart 网页窃取活动已针对 Magento 和 WooCommerce 网站展开。该活动的部分受害者与食品和零售行业的大型组织有关。 根据我们发现的证据,该活动已经持续了几周,在某些情况下甚至更长。该活动采用了一种我们以前从未遇到过的高级隐藏技术…

Linux 内核源码分析---组播/策略路由选择

在 Linux 实现中,组播路由选择不像单播路由选择那样可以由内核单独处理,组播守护程序种类繁多,如 mrouted 和 pimd,它们分别基于距离矢量组播路由选择协议(Distance Vector Multicast Routing Protocol,DVM…

《在数字化时代筑牢软件服务的稳定性防线》

📢博客主页:https://blog.csdn.net/2301_779549673 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! 📢本文由 JohnKi 原创,首发于 CSDN🙉 📢未来很长&#…

transform解题reserve

1.64位无壳,拖入ida检查。 选中函数按n键可以更改名称,便于分析和利用 。 重点: 2.分析加密过程,理解用于后续脚本编写。 str2以下表对应的元素作为索引遍历flag的每个元素赋值给str1数组,之后与新的str1每个元素异或…

数分基础(02)销售趋势分析

文章目录 销售趋势分析1. 数据集2. 销售趋势3. 步骤3.1 数据读取与预处理:3.2 计算按月、季度、年度的总销售额 4. 分析工具:Python 或 Excel5. Python5.1 Global_Superstore2.xlsx 文件位置5.2 读取数据集并检查其基本信息5.3 绘制趋势图来观察销售额的…

掌握C语言文件操作

1. 什么是文件 磁盘上的文件就是文件。 然而在程序设计中,我们所谈的文件有两种,一种是程序文件,另一种是数据文件(从文件功能的角度来分类的) 文件名 一个文件要有一个唯一的文件标识,以便用户识别和引用…

金蝶云星空开发简单账表《物料年采购入库报表》

文章目录 业务背景业务需求方案设计详细设计测试业务背景 系统现有功能不支持查询过去一年内所有物料的入库数,需要人工导出,然后再汇总。 业务需求 可以查询所有物料的入库数,多个物料,单个物料,多个组织,单个组织的入库数,以及支持查询入库数大于某个阈值。 方案设…

燃气灶行业分析、淘宝平台销售分析

内容:1.燃气灶(不含集成灶)整体行业分析 2.淘宝平台销量分析 3.针对性建议(涉及商业信息就略) 一、基本情况 (一)产品定义: 以液化石油气(液态)、人工煤…

DRF——router路由,parser解析器

文章目录 路由解析器1.JSONParser2.FormParser3.MultiPartParser4.FileUploadParser 路由 在之前进行drf开发时,对于路由我们一般进行两种配置: 视图继承APIView from django.urls import path from app01 import viewsurlpatterns [path(api/users/, …

趣味算法------尾部零的个数(C语言,python双重解法)

目录 题目描述&#xff1a; 解题思路&#xff1a; 具体代码&#xff1a; 注意&#xff1a; 题目描述&#xff1a; 给出数字 n(0<n<1000000)&#xff0c;计算出 n 阶乘尾部零的个数。 输入输出格式 输入格式 一个整数。 输出格式 一个整数。 输入输出样例 输入 11 输…

技术分享-商城篇-用户订单管理(十五)

前言 在前面的文章中&#xff0c;我们详细阐述了商品模块、购物模块、支付模块等B2B2C&#xff08;Business-to-Business-to-Consumer&#xff09;电商中核心基础模块&#xff0c;接下来我们来聊一下基础模块中最后一个环节订单模块&#xff0c;订单模块属于购物体系闭环内容&…

C语言典型例题50

《C程序设计教程&#xff08;第四版&#xff09;——谭浩强》 例题4.2 使用do……while语句循环求1234……100&#xff1b; 代码&#xff1a; //《C程序设计教程&#xff08;第四版&#xff09;——谭浩强》 //例题4.2 使用do……while语句循环求1234……100&#xff1b;#incl…

Axure RP实战:打造高效滑块验证码

Axure RP在验证码设计中的应用(滑块拖动) 前言 在数字化时代&#xff0c;验证码已成为保护用户账户安全和防止恶意攻击的重要工具。 它不仅提高了系统的安全性&#xff0c;还增加了用户对平台的信任度。 然而&#xff0c;验证码的设计并非易事&#xff0c;它需要在安全性和…

适用于 Windows 10 的最佳数据恢复免费软件是什么?

有没有适用于 Windows 10 的真正数据恢复免费软件&#xff1f;这篇文章将讨论这个话题&#xff0c;并分享什么是适用于 Windows 10/11/8.1/8/7/Vista/XP 的最佳数据恢复工具。 有没有适用于 Windows 10 的真正免费的数据恢复软件&#xff1f; 丢失重要数据&#xff0c;无论是由…

C++调用Python和numpy第三方库计算MFCC音频特征实现封装发布

文章目录 项目简介环境准备执行步骤1.新建python虚拟环境2.虚拟环境运行下python代码3.迁移虚拟环境4.编写Cmakelists.txt5.编写C代码6.编译项目7.测试 项目简介 深度学习程序的边缘部署以性能绝佳的C为主(⊙﹏⊙)&#xff0c;但遇到项目开发周期短&#xff0c;则以功能优先&am…

五、Centos7-安装Jenkins--吃灰去吧

克隆了一个base的虚拟机&#xff0c;用来安装Jenkins 2023年11月&#xff0c;Jenkins不支持centos7了。我们只是学习用&#xff0c;先看看吧。 &#xff08; 另一个人用别的操作系统安装的jenkins&#xff0c;可以参考 版权声明&#xff1a;本文为博主原创文章&#xff0c;…

mq可靠性

为了解决阻塞可以采用数据持久化 交换机持久化-可以在配置的时候配置durable 队列持久化-mq在设置时默认就是持久化&#xff0c;spring默认也是持久化 消息持久化&#xff0c;不是默认&#xff0c;需要在发送时对delivery_mode改为2&#xff08;持久&#xff09;&#xff0c;默…

系统架构师(每日一练23)

每日一练 1.软件活动主要包括软件描述、()、软件有效性验证和()&#xff0c;()定义了软件功能及使用限制。答案与解析 问题1 A.软件模型 B.软件需求 C.软件分析 D.软件开发 问题2 A.软件分析 B.软件测试 C.软件演化 D.软件开发 问题3 A.软件分析 B.软件测试 C.软件描述 D.软…

事件监听查看、监听器删除方法

前言 最近在开发过程中遇上了不知在哪加入的点击事件&#xff0c;导致页面跳转发生问题&#xff0c;需要找到该点击事件并将其取消掉。以下就是在完成该目标过程中使用、尝试的方法。 1、事件查看 使用网页开发者工具&#xff08;F12&#xff09;选取想查看的元素找到工具中…