0.4.3 • Published 1 year ago

@ruijingrs/leaflet-raster-tile-layer v0.4.3

Weekly downloads
-
License
MIT
Repository
-
Last release
1 year ago

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

1. 介绍

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

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

2. 安装

<script src="https://unpkg.com/leaflet@1.9.3/dist/leaflet.js"></script>
<!-- 引入对应版本js -->
<script src="https://unpkg.com/@ruijingrs/leaflet-raster-tile-layer@{Version}/dist/index.min.js"></script>

3. 基本使用

const map = L.map('map', {
  center: [24.59, 112.29],
  zoom: 4,
  minZoom: 2,
  maxZoom: 16,
});

const layer = L.TileLayer.rasterTile({
  type: 'PM25',
  time: '2023/02/20 00:00:00',
  agg: 'daily',
  token: 'token from ruijing',
  mode: 'show',
  pickDataCallback: (value) => {
    document.getElementById('value').innerHTML = value || '';
  },
  minNativeZoom: 0,
  // 重要,瓦片最大缩放级别,不设置会导致数据不显示
  maxNativeZoom: 7,
  // 设置正确的bounds可过滤不需要的瓦片请求,有效提高瓦片加载效率
  bounds: [
    [21.389163, 104.492109],
    [26.373805, 112.057692],
  ],
});

layer.addTo(map);

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图层是否可见
polygons选填-图层的显示区域,详细设置方法见setPolygons方法示例
opacity选填1图层透明度
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 opacity(可选)

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

4.7 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.9 pickTrigger(可选)

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

5. 图层方法

5.1 setType

重新设置图层的数据类型

document.getElementById('type').addEventListener('change', (e) => {
  const { value } = e.target;
  layer.setType(value);
});

5.2 setAgg

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

document.getElementById('agg').addEventListener('change', (e) => {
  const { value } = e.target;
  let time;

  if (value === 'daily') {
    time = '2023/02/20 00:00:00';
  }

  if (value === 'none') {
    time = '2023/02/20 09:00:00';
  }

  if (value === 'monthly') {
    time = '2023/02/01 00:00:00';
  }

  layer.setAgg(value);
  layer.setTime(time);
});

5.3 setTime

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

document.getElementById('btn').addEventListener('click', (e) => {
  layer.setTime('2023/02/20 00:00:00');
});

5.4 setDomainAndColor

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

document.getElementById('domain').addEventListener('click', (e) => {
  layer.setDomainAndColor([
    {
      min: 0,
      max: 20,
      color: '#3b82f6',
    },
    {
      min: 20,
      max: 40,
      color: '#a4cdff',
    },
    {
      min: 40,
      max: 60,
      color: '#f6e05e',
    },
  ]);
});

5.5 getCurrentDomainAndColor

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

document.getElementById('getDomain').addEventListener('click', (e) => {
  const value = layer.getCurrentDomainAndColor();
  console.log(value);
});

5.6 setPolygons

重新设置图层的裁切区域

document.getElementById('region').addEventListener('change', (e) => {
  const { value } = e.target;
  fetch(`/geojson/${value}.json`)
    .then((resp) => resp.json())
    .then((data) => {
      const geojson = L.geoJSON(data);
      layer.setPolygons([geojson.getLayers()[0]]);
    });
});

5.7 setOpacity

设置图层透明度(0-1)

// ...
document.getElementById('opacity').addEventListener('change', (e) => {
  const { value } = e.target;
  //
  layer.setOpacity(value);
});
0.4.3

1 year ago

0.4.2

1 year ago

0.4.1

1 year ago

0.4.0

1 year ago