源码分析之Leaflet中常见坐标系3857、4326等

发布于:2025-05-01 ⋅ 阅读:(26) ⋅ 点赞:(0)

CRS.EPSG3857

概述

CRS.EPSG3857CRS.EPSG900913都是基于Web Mercator 投影(球形墨卡托投影)的坐标系,用于地理信息系统中的投影转换,是互联网地图(如 Google Maps、OpenStreetMap)的事实标准

源码分析

源码实现

CRS.EPSG3857CRS.EPSG9000913的源码实现如下:

export var EPSG3857 = Util.extend({}, Earth, {
  code: "EPSG:3857", // 标准编码,表示基于WGS84坐标系下的Web Mercator投影
  projection: SphericalMercator, // 使用球形墨卡托投影,简化椭球模型为球体
  // 定义坐标变换矩阵,将投影后的平面坐标(米)转换为标准化的像素坐标
  transformation: function () {
    var scale = 0.5 / (math.PI * SphericalMercator.R);
    return toTransformation(scale, 0.5, -scale, 0.5);
  },
});

// EPSG900913是EPSG3857的别名,用于向后兼容,已被弃用
export var EPSG900913 = Util.extend({}, EPSG3857, {
  code: "EPSG:900913",
});

注意事项

  1. 坐标翻转 ​​:Y 轴变换中的负号 (-scale) 确保地图顶部对应高纬度。
  2. 兼容性​​:EPSG:900913 仅用于兼容旧系统,新项目应使用 EPSG:3857
  3. 性能优化​​:球形模型简化计算,适合高频渲染的在线地图。

总结

CRS.EPSG3857CRS.EPSG9000913都是基于 Web Mercator 投影的标准坐标系,适用于互联网地图的显示和地理信息系统的投影转换。它们简化了投影计算,提供了高精度的地图显示效果,是现代互联网地图服务的标准。


CRS.EPSG4326

概述

CRS.EPSG4326是一个地理坐标系,基于等距圆柱投影,对应EPSG:4326(WGS84 地理坐标),符合EPSG:4326标准,适用于全球定位系统(GPS)、导航等需要精确坐标的场景。

源码分析

源码实现

CRS.EPSG4326的源码实现如下:

export var EPSG4326 = Util.extend({}, Earth, {
  code: "EPSG:4326", //标识符,代表WGS84,经纬度直接作为坐标值
  projection: LonLat, // 等距圆柱投影,直接映射
  // 坐标变换矩阵
  transformation: toTransformation(1 / 180, 1, -1 / 180, 0.5),
});
变换矩阵详解

作用

  • X 轴 ​​:将经度 [-180°, 180°] 映射到 [0, 2](因 1/180 \* 180 + 1 = 2),进一步缩放后适配瓦片坐标。
  • Y 轴 ​​:将纬度 [-90°, 90°] 映射到 [1, 0](翻转方向,确保原点在左上角)。
  • 归一化 ​​:最终坐标范围调整为 [0, 1],方便瓦片索引计算

EPSG:4326 和 EPSG:3857 对比

特性 EPSG:4326 EPSG:3857 (Web Mercator)
​ ​ 投影类型 ​​ 等距圆柱投影 球形墨卡托投影
​​ 坐标单位 ​​ 经纬度(度数) 米(平面坐标)
​​ 高纬度变形 ​​ 无(保留真实比例) 严重拉伸(两极区域)
​​ 适用场景 ​​ GIS 数据叠加、科学可视化 在线地图(Google Maps 等)
​​ 瓦片标准 ​​ TMS XYZ(Slippy 地图)

总结

CRS.EPSG4326 是一个精确、适合全球定位系统的地理坐标系,适用于需要精确坐标的应用。


CRS.EPSG3395

概述

CRS.EPSG3395是一个投影坐标系,基于椭球体墨卡托投影,符合EPSG:3395标准,适用于航海、航空等需要高精度投影的场景。

源码分析

源码实现

CRS.EPSG3395的源码实现如下:

export var EPSG3395 = Util.extend({}, Earth, {
  code: "EPSG:3395", // 坐标系标识符,遵循EPSG标准
  projection: Mercator, // 使用椭球体墨卡托投影,考虑了地球扁率
  // 定义从平面坐标到地图像素坐标的线性变换矩阵
  transformation: (function () {
    var scale = 0.5 / (Math.PI * Mercator.R);
    return toTransformation(scale, 0.5, -scale, 0.5);
  })(),
});

注意事项

  1. ​​ 精度匹配​​:确保瓦片服务与 CRS 匹配,否则显示错位。
  2. 坐标循环​​:默认不循环经度(wrapLng: null),需手动处理地图边缘。
  3. ​ 性能优化​​:椭球体投影计算复杂,高频操作时需关注性能

总结

CRS.EPSG3395 是一个高精度、适合航海、航空等场景的投影坐标系,适用于需要精确显示的地图应用。


网站公告

今日签到

点亮在社区的每一天
去签到