WebGIS开发中不同坐标系坐标转换问题
在 JavaScript 中,使用 proj4 库进行坐标系转换是一个非常常见的操作。proj4 是一个支持多种坐标系的 JavaScript 库,提供了从一种坐标系到另一种坐标系的转换功能。
以下是使用 proj4 进行坐标系转换的基本步骤:
1. 安装 proj4
你可以通过 npm 或直接引入 CDN 使用 proj4。
通过 npm 安装:
npm install proj4
通过 CDN 引入:
<script src="https://cdnjs.cloudflare.com/ajax/libs/proj4js/2.8.1/proj4.js"></script>
2. 示例:WGS84 转换为 Web Mercator
WGS84 是一个全球通用的地理坐标系(经纬度),而 Web Mercator 通常用于网络地图(比如 Google Maps、OpenStreetMap)。
以下是代码示例:
// 导入 proj4 (如果通过 CDN 引入,则不需要这行代码)
const proj4 = require('proj4');// 定义坐标系
const WGS84 = 'EPSG:4326'; // WGS84 坐标系
const WebMercator = 'EPSG:3857'; // Web Mercator 坐标系// 定义一个点的经纬度
const point = [116.397128, 39.916527]; // 北京天安门经纬度// 转换坐标
const convertedPoint = proj4(WGS84, WebMercator, point);console.log('转换后的坐标:', convertedPoint);
3. 自定义坐标系
如果你需要转换到某个自定义坐标系,可以通过 proj4 的 proj4.defs 定义。
示例:定义一个 CGCS2000 坐标系
// 定义 CGCS2000 (EPSG:4490)
proj4.defs("EPSG:4490", "+proj=longlat +datum=CGCS2000 +no_defs");// 从 WGS84 转换到 CGCS2000
const point = [116.397128, 39.916527]; // 北京天安门经纬度
const convertedPoint = proj4('EPSG:4326', 'EPSG:4490', point);console.log('CGCS2000 坐标:', convertedPoint);
4. 扩展:绑定坐标文件
如果你需要加载自定义的 .prj 或其他坐标文件,可以结合 proj4 和第三方工具(如 proj4leaflet)实现。
5. 常见 EPSG 代码对照表
| 坐标系名称 | EPSG 代码 |
|---|---|
| WGS84 (经纬度) | EPSG:4326 |
| Web Mercator | EPSG:3857 |
| CGCS2000 | EPSG:4490 |
| UTM 坐标系 | EPSG:326xx (北半球),EPSG:327xx (南半球) |
相关文章:
WebGIS开发中不同坐标系坐标转换问题
在 JavaScript 中,使用 proj4 库进行坐标系转换是一个非常常见的操作。proj4 是一个支持多种坐标系的 JavaScript 库,提供了从一种坐标系到另一种坐标系的转换功能。 以下是使用 proj4 进行坐标系转换的基本步骤: 1. 安装 proj4 你可以通过…...
【青牛科技】视频监控器应用
1、简介: 我司安防产品广泛应用在视频监控器上,产品具有性能优良,可 靠性高等特点。 2、图示: 实物图如下: 3、具体应用: 标题:视频监控器应用 简介:视频监控器工作原理是光&#x…...
AWTK-WIDGET-WEB-VIEW 实现笔记 (3) - MacOS
MacOS 上实现 AWTK-WIDGET-WEB-VIEW 有点麻烦,主要原因是没有一个简单的办法将一个 WebView 嵌入到一个窗口中。所以,我们只能通过创建一个独立的窗口来实现。 1. 创建窗口 我对 Object-C 不熟悉,也不熟悉 Cocoa 框架,在 ChatGPT…...
PgSQL即时编译JIT | 第1期 | JIT初识
PgSQL即时编译JIT | 第1期 | JIT初识 JIT是Just-In-Time的缩写,也就是说程序在执行的时候生成可以执行的代码,然后执行它。在介绍JIT之前,需要说下两种执行方式:解释执行和编译执行。其中解释执行是通过解释器,将代码逐…...
Go小记:使用Go实现ssh客户端
一、前言 SSH(Secure Shell)是一种用于在不安全网络上安全访问远程计算机的网络协议。它通过加密的方式提供远程登录会话和其他网络服务,保证通信的安全性和数据的完整性。 本文使用golang.org/x/crypto/ssh包来实现SSH客户端 可以通过go …...
Nginx Spring boot指定域名跨域设置
1、Nginx配置跨域: server {listen 80;server_name your-backend-service.com;location / {proxy_pass http://localhost:8080; # Spring Boot应用的内部地址proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-F…...
深入理解Redis(七)----Redis实现分布式锁
基于Redis的实现方式 1、选用Redis实现分布式锁原因: (1)Redis有很高的性能; (2)Redis命令对此支持较好,实现起来比较方便 2、使用命令介绍: (1)SETNX SETNX …...
Database Advantages (数据库系统的优点)
数据库管理系统(DBMS)提供了一种结构化的方式来存储、管理和访问数据,与传统的文件处理系统相比,数据库提供了许多显著的优点。以下是数据库系统的主要优势: 1. Data Integrity (数据完整性) 概念:数据完整…...
Qt桌面应用开发 第五天(常用控件)
目录 1.QPushButton和ToolButton 1.1QPushButton 1.2ToolButton 2.RadioButton和CheckBox 2.1RadioButton单选按钮 2.2CheckBox多选按钮 3.ListWidget 4.TreeWidget控件 5.TableWidget控件 6.Containers控件 6.1QScrollArea 6.2QToolBox 6.3QTabWidget 6.4QStacke…...
初识Linux · 信号处理 · 续
目录 前言: 可重入函数 重谈进程等待和优化 前言: 在前文,我们已经介绍了信号产生,信号保存,信号处理的主题内容,本文作为信号处理的续篇,主要是介绍一些不那么重要的内容,第一个…...
【Linux】虚拟地址空间,页表,物理内存
目录 进程地址空间,页表,物理内存 什么叫作地址空间? 如何理解地址空间的区域划分? 地址空间结构体 为什么要有地址空间? 页表 cr3寄存器 权限标记位 位置标记位 其他 每个存储单元是一个字节,一…...
C++ 并发专题 - 线程安全的单例模式
一:概述: 在C编程中,call_once 是一种机制,用于确保某个函数或代码段在多线程环境下仅被调用一次。这种机制常用于初始化资源、配置全局变量或执行只需执行一次的逻辑。在 C11 标准中,std::call_once 是由标准库提供的…...
Spring Boot汽车世界:资讯与技术的交汇
2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常…...
力扣 LeetCode 541. 反转字符串II(Day4:字符串)
解题思路: i可以成段成段的跳,而不是简单的i class Solution {public String reverseStr(String s, int k) {char[] ch s.toCharArray();// 1. 每隔 2k 个字符的前 k 个字符进行反转for (int i 0; i < ch.length; i 2 * k) {// 2. 剩余字符小于 …...
Django5 2024全栈开发指南(一):框架简介、环境搭建与项目结构
目录 一、Python Web框架要点二、Django流程2.1 Django介绍2.1.1 简介2.1.2 特点2.1.3 MVT模式2.1.4 Django新特性2.1.5 Django学习资料 2.2 搭建Django框架开发环境2.2.1 安装Python语言环境2.2.2 安装Django框架 2.3 创建Django项目2.4 Pycharm创建项目2.5 初试Django52.5.1 …...
Uniapp运行环境判断和解决跨端兼容性详解
Uniapp运行环境判断和解决跨端兼容性 开发环境和生产环境 uniapp可通过process.env.NODE_ENV判断当前环境是开发环境还是生产环境,一般用于链接测试服务器或者生产服务器的动态切换。在HX中,点击运行编译出来的代码是开发环境,点击发行编译…...
Linux设置开机自动执行脚本 rc-local
使用/etc/rc.local 1、启动rc-local服务 首先授予执行权限 chmod x /etc/rc.d/rc.local设置开启自启并启动 sudo systemctl enable rc-local sudo systemctl start rc-local查看状态 sudo systemctl status rc-local2、编写要执行的脚本 vim /home/start.sh #!/bin/bash…...
驱动开发小问题 -记录一下
1 D:\Windows Kits\10\Vsix\VS2022\10.0.26100.0\amd64 D:\Windows Kits\10\Vsix\VS2019 2 windows防火墙白板 无法设置通过powershell防火墙禁用 Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False 3 内核调试 vm虚拟机 设置成 NAT模式 ÿ…...
学习笔记018——若依框架数据权限功能的实现
ps:本文所使用的若依是前后端分离的v3.6.0版本。 1、建表 建立业务表的时候,需要在表中添加user_id和dept_id两个字段。(字段一定要一样,下文能体现) user_id:表中该条记录的创建人id dept_id࿱…...
Nginx文件下载服务器搭建
Nginx文件下载服务器搭建 80端口启动下载服务器, 下载/var/www/downloads目录下的文件,nginx.conf如下: server {listen 80;location /downloads/ {root /var/www/downloads;autoindex on; # 显示目录autoindex_localtime on;} }浏览器中访问ÿ…...
制造业备品备件管理痛点破解:磐石电气无人仓库解决方案
在制造业设备自动化、产线连续化运行需求日益提升的当下,备品备件、工装夹具、维修耗材及易损件等物资,已成为保障设备稳定运转、快速处置故障、降低非计划停机损失的核心支撑。尤其在电子制造、半导体、新能源、汽车零部件、电力电气等技术密集型行业&a…...
Chlorophyll印相稀缺资源包泄露!含19世纪银盐配方数字化映射表、327张原生植物扫描底片及MJ v6.2专用--style raw参数集(限今日领取)
更多请点击: https://intelliparadigm.com 第一章:Chlorophyll印相的技术起源与美学范式 Chlorophyll印相(叶绿素印相)并非传统摄影术的延伸,而是一种融合植物生物化学、光敏反应与数字图像处理的跨媒介实践。其技术雏…...
双强联袂,数智共舞 | 中聚信 × 金蝶启联巅峰对话,共探财税未来新航道
3 月 26 日,由金蝶软件(中国)有限公司、贵州启联科技有限公司联合主办,中聚信财税技术研究中心协办的「AI 时代 先进管理用金蝶」主题峰会,在贵阳国际生态会议中心圆满落幕。这场聚焦制造企业数字化转型与 AI 赋能管理…...
【AI原生架构黄金法则】:SITS 2026现场实录的7条反直觉设计铁律(仅限首批参会专家内部流出)
AI原生应用架构设计:SITS 2026技术专家实战经验分享 更多请点击: https://intelliparadigm.com 第一章:SITS 2026现场共识与AI原生架构范式跃迁 在SITS 2026全球智能系统技术峰会上,来自37个国家的架构师、AI平台工程师与标准化组…...
Encaustic不是滤镜!揭秘热蜡媒介物理特性如何反向重构MJ提示词结构:材料科学×AIGC的跨学科实践
更多请点击: https://intelliparadigm.com 第一章:Encaustic不是滤镜!——热蜡媒介的本质祛魅 Encaustic(热蜡绘画)常被误认为是数字图像处理中的一种“复古滤镜”,实则是一种拥有两千多年历史的实体绘画媒…...
Speechless:你的微博数字记忆永久保存方案,告别内容丢失焦虑
Speechless:你的微博数字记忆永久保存方案,告别内容丢失焦虑 【免费下载链接】Speechless 把新浪微博的内容,导出成 PDF 文件进行备份的 Chrome Extension。 项目地址: https://gitcode.com/gh_mirrors/sp/Speechless 你是否曾经历过精…...
别再到处找激活码了!手把手教你用vlmcsd在Windows上自建KMS服务器(附各版本密钥)
企业级Windows批量激活解决方案:安全高效的本地KMS部署指南 在数字化办公环境中,批量激活Windows操作系统一直是IT管理员面临的常见挑战。传统单机激活方式效率低下,而依赖外部KMS服务器又存在连接不稳定、隐私泄露等潜在风险。本文将深入探讨…...
绝地求生罗技鼠标宏实战指南:5步实现高效压枪技巧
绝地求生罗技鼠标宏实战指南:5步实现高效压枪技巧 【免费下载链接】logitech-pubg PUBG no recoil script for Logitech gaming mouse / 绝地求生 罗技 鼠标宏 项目地址: https://gitcode.com/gh_mirrors/lo/logitech-pubg 对于《绝地求生》玩家来说…...
MyBatis如何实现动态数据源切换?
MyBatis如何实现动态数据源切换 在现代应用中,特别是微服务架构中,使用多个数据库的情况越来越常见。MyBatis是一个流行的Java持久层框架,它允许我们方便地与多种数据库进行交互。在某些情况下,我们可能需要动态切换数据源&#x…...
从Kaggle竞赛到实战:基于XGBoost的Otto多分类产品识别系统构建
1. 从Kaggle竞赛到真实业务场景的跨越 第一次接触Otto数据集是在2015年的Kaggle竞赛上,当时只觉得这是个典型的多分类问题。直到去年为某跨境电商平台搭建商品自动分类系统时,我才真正理解这个案例的实战价值——90%的参赛者只关注模型精度,而…...
