0.9.5 • Published 12 months ago

@ruijingrs/ol-raster-tile-layer v0.9.5

Weekly downloads
-
License
MIT
Repository
-
Last release
12 months ago

基于 Openlayers 的栅格数据瓦片图层

1. 介绍

欢迎使用中科锐景数据产品。

基于中科锐景的栅格数据瓦片服务,提供基于Openlayers的栅格数据瓦片图层,方便用户快速集成数据瓦片图层。

2. 安装

npm install @ruijingrs/ol-raster-tile-layer
# or
yarn add @ruijingrs/ol-raster-tile-layer

3. 基础使用(以 PM2.5 为例)

import { RasterTileLayer } from '@ruijingrs/ol-raster-tile-layer';

const instance = new RasterTileLayer({
  type: 'PM25',
  agg: 'daily',
  time: '2023/01/01 00:00:00',
  token: 'token from ruijing',
  opacity: 0.88,
  clipGeoJsonUrl: '/geojson/450000.json',
  pickTrigger: 'hover',
  pickDataCallback: (value) => {
    if (value) {
      // do something with value
    }
  },
});

const { dataTileLayer, clipLayer } = instance;

new Map({
  layers: [tianditu, tiandituAn, dataTileLayer, clipLayer],
  target: 'map',
  view: new View({
    projection: 'EPSG:3857',
    center: fromLonLat([108, 23]),
    zoom: 7,
    minZoom: 4,
    maxZoom: 16,
  }),
});

4. 参数说明

类型是否必填默认值说明
type必填-数据类型,目前支持 PM25PM10O3O3TCDNO2NO2TCDSO2CO2CH4COHCHOTMPPREVISRHPRSUVAUVBUVTAODTCOLORDCOLOR
agg必填-栅格数据聚合类型, 目前支持nonedailymonthly
time必填-栅格数据时间,格式为YYYY/MM/DD HH:mm:ss
token必填-获取栅格数据瓦片用户凭证
domainAndColors选填-数据值域及颜色配置,如需配置,建议数组长度大于4,如[{ min: 0, max: 45, color: '#01a0ff', }, { min: 45, max: 55, color: '#00c8c7', }, { min: 55, max: 65, color: '#00dc00', }, { min: 65, max: 75, color: '#a1e632', }, { min: 75, max: 85, color: '#e6dc33'}]
visible选填true图层是否可见
opacity选填1图层透明度
clipGeoJsonUrl选填-裁剪图层的 geojson 文件地址
pickTrigger选填'click'触发 pickDataCallback 的事件类型,目前支持 'click', 'hover'
pickDataCallback选填-当鼠标 hover 或者 click 时,返回当前像素点携带的数据

4.1 type(必填)

当前数据类型,指定后,将使用对应的解码公式解析源瓦片像素点所携带的数值。目前支持 PM25PM10O3O3TCDNO2NO2TCDSO2CO2CH4COHCHOTMPPREVISRHPRSUVAUVBUVTAODTCOLORDCOLOR

类型说明
PM25粒径小于或等于 2.5 微米的 颗粒物
PM10粒径在 10 微米以下的颗粒物
O3臭氧
O3TCD臭氧柱浓度
NO2二氧化氮
NO2TCD二氧化氮柱浓度
SO2二氧化硫
CO2二氧化碳
CH4甲烷
CO一氧化碳
HCHO甲醛
TMP温度
PRE降水
VIS能见度
RH相对湿度
PRS气压
UVA紫外线 A
UVB紫外线 B
UVT总辐射
AOD大气光学厚度
TCOLOR真彩图
DCOLOR假彩图

4.2 agg(必填)

栅格数据瓦片聚合类型

  • type取值CO2 时,agg只能设置为monthly
  • type取值O3O3TCDNO2NO2TCDSO2CH4COHCHO时,agg只能设置为daily
  • type取值TCOLORDCOLOR时,agg只能设置为none
  • type取值PM25PM10AODTMPPREVISRHPRSUVAUVBUVT时,agg可设置为nonedaily

4.3 time(必填)

栅格数据瓦片的数据时间,格式为YYYY/MM/DD HH:mm:ss,如2023/01/01 00:00:00

  • agg取值为none时,time可按小时聚合设置为2023/02/01 09:00:002023/02/01 10:00:00
  • agg取值为daily时,小时只能为00点, 如2023/02/20 00:00:00
  • agg取值为monthly时,time可设置为当月第一天的00点,如2023/02/01 00:00:00

4.4 token(必填)

获取栅格数据瓦片的用户凭证

4.5 domainAndColor(可选)

包含值域最大值和最小值及颜色的数组,如

const domainAndColor = [
  {
    min: 0,
    max: 5,
    color: '#34b300',
  },
  {
    min: 5,
    max: 10,
    color: '#3ecf00',
  },
  {
    min: 10,
    max: 15,
    color: '#46e800',
  },
  {
    min: 15,
    max: 20,
    color: '#99fd0b',
  },
  {
    min: 20,
    max: 25,
    color: '#a9ff00',
  },
  {
    min: 25,
    max: 30,
    color: '#daff00',
  },
  // ...
];

4.6 visible(可选)

图层是否可见,默认为 true。

4.7 opacity(可选)

图层的透明度,范围:0-1,默认为 1。

4.8 clipGeoJsonUrl(可选)

用于裁切图层的 GeoJSON 数据地址,如果不配置,则不进行裁切。

4.9 pickDataCallback(可选)

鼠标划过或者点击时,返回当前像素点携带的数据,返回值为数字或 null。

  • TCOLORDCOLOR类型不支持取值回调
  • 裁切瓦片后未显示部分也会返回数据,需根据经纬度范围自行判断。

数据类型对应单位

类型单位
PM25ug/m³
PM10ug/m³
O3ug/m³
O3TCDug/m³
NO2ug/m³
NO2TCD1e16molec./c㎡
SO2du
CO2PPM
CH4ppb
CO1e19molec./cm²
HCHO1e16molec./c㎡
TMP
PREmm
VISkm
RH%
PRShPa
UVAW/m²
UVBW/m²
UVTW/m²
AOD

4.10 pickTrigger(可选)

pickDataCallback的触发方式,目前支持hoverclick,默认为click

5. 实例方法

5.1 setType(type)

重新设置图层的数据类型

const instance = new RasterTileLayer({
  type: 'PM25',
  agg: 'daily',
  time: '2023/01/01 00:00:00',
  token: 'token from ruijing',
});

const { dataTileLayer, clipLayer } = instance;

document.querySelector('#typeSelect').addEventListener('change', (e) => {
  const { value } = e.target; // PM25 | PM10 | ....

  instance.setType(value);
});

5.2 setAgg(agg)

重新设置图层的数据聚合类型,注:setAgg一般与setTime配合使用

const instance = new RasterTileLayer({
  type: 'PM25',
  agg: 'daily',
  time: '2023/01/01 00:00:00',
  token: 'token from ruijing',
});

const { dataTileLayer, clipLayer } = instance;

document.querySelector('#aggSelect').addEventListener('change', (e) => {
  const { value } = e.target; // none | daily | monthly

  instance.setAgg(value);
});

5.3 setTime(time)

重新设置图层的数据聚合类型

const instance = new RasterTileLayer({
  type: 'PM25',
  agg: 'daily',
  time: '2023/01/01 00:00:00',
  token: 'token from ruijing',
});

const { dataTileLayer, clipLayer } = instance;

document.querySelector('#changeTimeBtn').addEventListener('click', (e) => {
  instance.setTime('2023/02/01 00:00:00');
});

5.4 setDomainAndColor(domainAndColor)

根据瓦片携带的数据,以配置的值域及颜色进行显示,TCOLORDCOLOR类型不支持设置值域及颜色

const instance = new RasterTileLayer({
  type: 'PM25',
  agg: 'daily',
  time: '2023/01/01 00:00:00',
  token: 'token from ruijing',
});

// 更新图层值域范围及颜色
const btn = document.querySelector('#btn');
btn.addEventListener('click', () => {
  instance.setDomainAndColors([
    {
      min: 0,
      max: 5,
      color: '#c60000',
    },
    {
      min: 5,
      max: 10,
      color: '#9d0056',
    },
    // ...
  ]);
});

5.5 getCurrentDomainAndColor()

获取当前图层值域范围和颜色,用于图例展示等。

const instance = new RasterTileLayer({
  type: 'PM25',
  agg: 'daily',
  time: '2023/01/01 00:00:00',
  token: 'token from ruijing',
});

const domainAndColor = instance.getCurrentDomainAndColor();

6. 图层方法

6.1 setOpacity(number)

设置图层透明度

// ...
const { dataTileLayer, clipLayer } = instance;

const rangeInput = document.querySelector('#range');
rangeInput.addEventListener('change', (e) => {
  dataTileLayer.setOpacity(e.target.value / 100);
});

6.2 setVisible(boolean)

设置图层可见性

// ...
const { dataTileLayer, clipLayer } = instance;

const btn = document.querySelector('#btn');
btn.addEventListener('click', () => {
  dataTileLayer.setVisible(!dataTileLayer.getVisible());
});
0.9.5

12 months ago

0.9.4

1 year ago

0.9.3

1 year ago

0.9.2

1 year ago

0.9.1

1 year ago

0.9.0

1 year ago

0.8.9

1 year ago

0.8.8

1 year ago

0.8.6

1 year ago

0.8.5

1 year ago

0.8.1

1 year ago

0.8.0

1 year ago