目录
Openlayers 自定义坐标系(EPSG:4490 和 EPSG:4525)
EPSG:4326 & EPSG:3857
Openlayers 中常用的坐标系为 EPSG:4326 和 EPSG:3857,分别对应 WGS84 坐标系统中的地理坐标(经纬度)和投影坐标(X,Y)。EPSG:4326 通过经纬度记录坐标,方便存储,可读性高。Openlayers 中默认的坐标为 EPSG:3857,是一种墨卡托投影坐标,这种方式存储的坐标比较占用内存,而且可读性较差,但地图显示的效果比 EPSG:4326 好。通常,数据存储在 EPSG:4326中,显示在EPSG:3857中。这就需要使用 Openlayers 提供的坐标转换:
EPSG:4326 与 EPSG:3857 的坐标转换
在 Openlayers 中提供了坐标转换的功能:transform([x, y],fromCoordinate,toCoordinate) transform 需要传入三个参数:[x,y] 为需要转换的坐标,fromCoordinate 为该坐标的坐标系,toCoordinate 为需要转到的坐标系 。具体使用方法如下:
import {transform} from 'ol/proj';//导入方法
//EPSG:3857 转 EPSG:4326
console.log(transform([12202419, 4469830],"EPSG:3857","EPSG:4326"))
//EPSG:4326 转 EPSG:3857
console.log(transform([109.6162, 37.2201],"EPSG:4326","EPSG:3857"))
EPSG: 4490
在实际应用中 ,很多时候我们的数据源并不是 WGS84,就我国而言,大部分的地理空间数据都统一采用了 CGCS 2000 国家大地坐标系,而 EPSG:4490 对应的为 CGCS 2000 的地理坐标系,因此,在进行系统开发时,有时需要我们重新定义坐标系统。
关于空间坐标系对应的 EPSG 编号查询可参考:
EPSG 编号查询https://blog.csdn.net/qq_41441896/article/details/104525296
Openlayers 自定义坐标系(EPSG:4490 和 EPSG:4525)
Proj.4 是一个用于坐标转换的 JavaScript 库,结合 Openlayers 能够实现坐标系的定义和转换。
安装与引入:
cnpm install proj4 --save
import proj4 from 'proj4'
确定需要定义的坐标系统,比如以下坐标系统的定义
EPSG | 坐标系类型 | 详细信息 |
4490 | 地理坐标系 | GCS_China_Geodetic_Coordinate_System_2000 |
4525 | 投影坐标系 | CGCS2000 / 3-degree Gauss-Kruger zone 37 |
在 espsg 官网上搜索相应的编号:https://epsg.io/
proj4.defs("EPSG:4490","+proj=longlat +ellps=GRS80 +no_defs");
同样的方式查找到 EPSG: 4525 的信息:
proj4.defs("EPSG:4525","+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0=0 +ellps=GRS80 +units=m +no_defs");
在项目中使用:
proj4.defs([
["EPSG:4490","+proj=longlat +ellps=GRS80 +no_defs"],
["EPSG:4525","+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"]
]);
register(proj4);
这样就能在项目中使用 EPSG:4490 和 EPSG:4525 了,包括坐标转换:
console.log(transform([4107376, 37379693],"EPSG:4525","EPSG:4490"))