ol加载CGCS2000服务、投影注册

1.加载cgcs2000服务

openlayers 默认支持的坐标系有4326(基于wgs84坐标系)和3857(墨卡托投影)两种。所以如果我们想要使用比如4490坐标系,就需要先注册。

是否需要调用 addProjection

  • 大多数情况下:在 proj4 注册后,OpenLayers 会自动处理投影的添加和更新。所以通常不需要显式调用 addProjection

  • 什么时候需要手动调用 addProjection

    如果你手动定义了一个新的投影或者需要修改 OpenLayers 默认的投影配置,你才需要调用 addProjection。但对于 proj4 已经注册过的投影,OpenLayers 会自动管理投影的添加。

 npm install proj4 --save

将投影重新注册,图层方法加载禁用事业群框架方法,事业群框架默认4326.也可以在框架地图初始化时重新注册proj4,将新投影赋值给new View

import proj4 from "proj4";
import { register } from "ol/proj/proj4";
import {Projection,addProjection,} from "ol/proj";

cgcs4490() {
    proj4.defs(
      "EPSG:4490",
      'GEOGCS["China Geodetic Coordinate System 2000",DATUM["China_2000",SPHEROID["CGCS2000",6378137,298.257222101,AUTHORITY["EPSG","1024"]],AUTHORITY["EPSG","1043"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4490"]]'
    );
    register(proj4);
    const projection = new Projection({
      code: "EPSG:4490",
      units: "degrees",
      axisOrientation: "neu",
    });
    projection.setExtent([-180, -90, 180, 90]);
    projection.setWorldExtent([-180, -90, 180, 90]);
    addProjection(projection);
  }

  // 加载服务
  createLayerByUrl(url, name, params = {}) {
    let tokenStr = "";
    if(url.includes('tianditu')){
      let index = url.indexOf("?");
    if (index === -1) {
      tokenStr = "?token=" + newToken;
    } else {
      tokenStr = "&token=" + newToken;
    }
    }
    let source = new XYZ({
      url: url + tokenStr,
      projection: params.projection || "EPSG:4490",
      maxZoom: 18,
    });
    let layer = new Tile({
      preload: Infinity,
      zIndex: params.zIndex || 10,
      name,
      title: params.title||name,
      visible: params.visible,
      source,
      serverStyle: params.serverStyle || null,
      serverUrlName: params.serverUrlName || null,
    });
    // source.setTileLoadFunction(wmtsTileLoadFunction);
    //将绘制层添加到地图容器中
    this.map.addLayer(layer);
    return layer;
  }

2.2000介绍 

2000国家大地坐标系,是中国当前最新的国家大地坐标系,英文名称为China Geodetic Coordinate System 2000,英文缩写为CGCS2000。
2000国家大地坐标系的原点为包括海洋和大气的整个地球的质量中心;2000国家大地坐标系的Z轴由原点指向历元2000.0的地球参考极的方向,该历元的指向由国际时间局给定的历元为1984.0的初始指向推算,定向的时间演化保证相对于地壳不产生残余的全球旋转,X轴由原点指向格林尼治参考子午线与地球赤道面(历元2000.0)的交点,Y轴与Z轴、X轴构成右手正交坐标系。采用广义相对论意义下的尺度。

ol 默认不支持2000坐标系,但是很多项目中使用的就是2000坐标系。具体定义方式如下。

proj4.defs(
      "EPSG:4490",
      'GEOGCS["China Geodetic Coordinate System 2000",DATUM["China_2000",SPHEROID["CGCS2000",6378137,298.257222101,AUTHORITY["EPSG","1024"]],AUTHORITY["EPSG","1043"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4490"]]'
    );
    ol.proj.proj4.register(proj4);
    //重写projection4490,
    var projection = new ol.proj.Projection({
      code: "EPSG:4490",
      units: "degrees",
      axisOrientation: "neu",
    });
    projection.setExtent([-180, -90, 180, 90]);
    projection.setWorldExtent([-180, -90, 180, 90]);
    ol.proj.addProjection(projection);

2.投影介绍

EPSG 用于标识不同的地理空间参考系统,包括坐标系统、地理坐标系、投影坐标系等。这些标识符可用于许多应用程序和地理信息系统软件,以确保数据在不同系统之间的正确转换和处理。现在,EPSG已被Open Geospatial Consortium(OGC)承认并管理,成为了一个全球性的标准。
EPSG 是将常用的坐标系、投影、地理坐标系等地理空间参考系统的名称、参数、定义等信息进行标准化,并赋予一个唯一编码。

关系表

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

查询方式

查询EPSG,使用这个网站:https://epsg.io/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值