如何将二维地图里不同的坐标系抽取成公共对象

前言

二维地图里,可能用到的EPSG(The European Petroleum Survey Group,欧洲石油调查组织)坐标系如下所示:

  • 4326
  • 4490
  • 3857
  • 900913

如何将上面的不同坐标系抽取到同一个对象里呢?

正文

代码如下所示:


/**
 * 坐标系
 * @typedef {Object} CoordinateReferenceSystem
 * @property {number} CODE 坐标系编码
 * @property {string} EPSG epsg编码
 */

/**
 * 当前支持的坐标系枚举
 * @typedef {Object} CRS
 * @property {CoordinateReferenceSystem} EPSG3857 WebMercator投影坐标系
 * @property {CoordinateReferenceSystem} EPSG4326 WGS84坐标系
 * @property {CoordinateReferenceSystem} EPSG4490 CGCS2000坐标系
 * 
 */
const CRS = {};

CRS.EPSG4326 = {
    CODE: 4326,
    EPSG: 'EPSG:4326'
}

CRS.EPSG4490 = {
    CODE: 4490,
    EPSG: 'EPSG:4490'
}

CRS.EPSG3857 = {
    CODE: 3857,
    EPSG: 'EPSG:3857'
}

CRS.EPSG900913 = {
    CODE: 900913,
    EPSG: 'EPSG:900913'
}

export default CRS;

export function equalsCRS(crs1, crs2) {
    if (validateCRS(crs1) && validateCRS(crs2)) {
        if (crs1.CODE === crs2.CODE) {
            return true;
        }
    }
    return false;
}

export function validateCRS(crs) {
    if (crs === undefined || crs == null || Object.prototype.toString.call(crs) != '[object Object]') {
        return false;
    }
    for (let key in CRS) {
        if (CRS[key].CODE === crs.CODE) {
            return true;
        }
    }
    return false;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值