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

Openlayers:如何注册一个新的坐标系统

OpenLayers中默认支持 WGS84和Web墨卡托两种坐标系统。但是如果想将地图设置为其它的坐标系统或者使用其它的坐标系统的数据就需要进行手动注册。本文就将介绍如何在OpenLayers中注册一个新的坐标系统并使用。


1.注册新坐标系统的基本步骤

首先需要借助proj4 库来定义一个新的坐标系统,然后使用ol/proj/proj4/register方法将新的坐标系统注册到OpenLayers中。

import { register } from "ol/proj/proj4";
import proj4 from "proj4";proj4.defs("EPSG:4547","+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs +type=crs"
);
register(proj4);

补充介绍

proj4js 是 JavaScript 实现的坐标投影转换库,可在不同地理坐标系统(如 WGS84、UTM、Web 墨卡托)间进行转换。它基于 PROJ.4 库,支持 EPSG 代码和自定义投影配置,广泛应用于 Leaflet、OpenLayers 等 GIS 工具中。

2.proj4.defs 方法

proj4.defs 是 proj4 库提供的一个方法,用于定义新的投坐标系统。它接受两个参数:

  1. 坐标系统的标识符,通常遵循 EPSG 标准,这里使用的是 "EPSG:4547"。EPSG 代码是一种全球通用的地理坐标系统和投影系统的标识符,方便在不同的地理信息系统(GIS)软件和数据中统一引用。
  2. 坐标系统的具体定义,以 proj4 字符串的形式表示。proj4 字符串是一种描述地理投影参数的文本格式,包含了投影类型、原点、缩放因子、椭球体等关键信息。

3.如何获取proj4字符串

我们在使用proj4.defs方法定义坐标系统时,一定会遇到一个问题:不知道某个坐标系统的 proj4 字符串是什么。

其实可以在 EPSG的 官网(EPSG.io: Coordinate Systems Worldwide)中根据 WKID 查找对应的 proj4 字符串。

首先进入官网。

输入想要查找的坐标系统的 WKID ,然后点击搜索按钮。

查找到坐标系统后,点击查看详情。(根据介绍可以看到 EPSG: 4547是一个投影坐标系统,它的大地基准是 CGCS2000,使用的投影是以东经114°经线为中央经线的 3°带高斯克吕格投影)

在详情页面中拖动到最下面就可以查看到 proj4字符串或者proj4.defs的代码:

4.使用新注册的坐标系统

注册了新的坐标系统后可以用于坐标的转换。

//将 EPSG:4326 的坐标 转换为EPSG:4547
transform([113.17756338652154, 23.701191837626297],"EPSG:4326","EPSG:4547")// 将 EPSG:4547 的GeoJSON数据转换为EPSG:4326
const features = new GeoJSON().readFeatures(data, {dataProjection: "EPSG:4547",featureProjection: "EPSG:4326",
});

或者用来作为视图的坐标系统。

  const map = new Map({target: "map",layers: [],view: new View({projection: "EPSG:4547",center:transform([113.17756338652154, 23.701191837626297],"EPSG:4326","EPSG:4547"),zoom: 12,}),controls: [],});//添加天地图底图addTdtBaseLayer(map, tdt_api_key, "vec", "w", "wmts");

参考资料

  1. openlayers自定义坐标系&加载自定义坐标系图层_openlayers projection-CSDN博客
  2. Openlayers 坐标系全面解析-CSDN博客
  3. OpenLayers地图投影与坐标系统 (进阶三)_openlayers坐标系-CSDN博客
  4. openlayers 加载天地图及自定义EPSG:4490坐标系以及axisOrientation的值为enu或neu的问题_openlayers axisorientation-CSDN博客

相关文章:

  • 【数字图像处理】半开卷复习提纲
  • 建筑迈向绿色发展之路,楼宇自控成建筑可持续发展关键技术
  • 室内定位:热门研究方向与未解难题深度解析
  • 培训机构教务管理系统软件的功能有哪些?
  • 【c语言】动态内存分配
  • Python继承
  • 全息美AISEO引领AIGEO新趋势
  • C++ 函数声明,定义与命名空间的关系
  • Linux操作
  • 25.第二阶段x64游戏实战-分析物品相关数据
  • CoreDNS 的无状态设计与动态数据源
  • 044-代码味道-数据类
  • 《Deepseek从入门到精通》清华大学中文pdf完整版
  • 基于智能推荐的就业平台的设计与实现(招聘系统)(SpringBoot Thymeleaf)+文档
  • VTEP是什么
  • [MySQL数据库] SQL优化
  • MyBatis-Plus 常用用法总结
  • 电脑自带画图工具,提取颜色
  • 软考软件评测师——计算机组成与体系结构(CPU指令系统)
  • 脚本语言Lua
  • 俄乌直接谈判结束
  • 降水较常年同期少五成,安徽四大水利工程调水超11亿方应对旱情
  • 广西等地旱情缓解,水利部针对甘肃启动干旱防御Ⅳ级响应
  • 证监会发布《上市公司募集资金监管规则》,6月15日起施行
  • 南京江宁区市监局通报:盒马一批次猕猴桃检出膨大剂超标
  • 习近平复信中国丹麦商会负责人