m4-w-fast 1.0.16 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/README.md +249 -151
  2. package/dist/index.cjs +1 -1
  3. package/dist/index.js +1 -1
  4. package/dist/index.mjs +1 -1
  5. package/dist/intersect.worker.js +2 -2
  6. package/dist/isoBands.worker.js +1 -1
  7. package/dist/m4-w-fast.umd.js +1 -1
  8. package/dist/raster-overlay/color.js +1 -1
  9. package/dist/raster-overlay/core.js +1 -1
  10. package/dist/raster-overlay/index.cjs +2 -2
  11. package/dist/raster-overlay/index.d.ts +2 -1
  12. package/dist/raster-overlay/index.js +1 -1
  13. package/dist/raster-overlay/index.mjs +2 -2
  14. package/dist/raster-overlay/leaflet-renderers/cpuRenderer.js +1 -1
  15. package/dist/raster-overlay/leaflet-renderers/createRenderer.js +1 -1
  16. package/dist/raster-overlay/leaflet-renderers/rasterRendererUtils.d.ts +52 -0
  17. package/dist/raster-overlay/leaflet-renderers/rasterRendererUtils.js +1 -0
  18. package/dist/raster-overlay/leaflet-renderers/renderer.d.ts +7 -3
  19. package/dist/raster-overlay/leaflet-renderers/webgl2Renderer.d.ts +6 -3
  20. package/dist/raster-overlay/leaflet-renderers/webgl2Renderer.js +1 -1
  21. package/dist/raster-overlay/leaflet-renderers/webglRenderer.js +1 -1
  22. package/dist/raster-overlay/leaflet-renderers/webgpuRenderer.d.ts +114 -0
  23. package/dist/raster-overlay/leaflet-renderers/webgpuRenderer.js +1 -1
  24. package/dist/raster-overlay/leafletLayer.d.ts +19 -4
  25. package/dist/raster-overlay/leafletLayer.js +1 -1
  26. package/dist/raster-overlay/m4-w-raster-overlay.umd.js +2 -2
  27. package/dist/raster-overlay/query.d.ts +11 -0
  28. package/dist/raster-overlay/query.js +1 -0
  29. package/dist/raster-overlay/types.d.ts +123 -2
  30. package/dist/readFile.js +1 -1
  31. package/dist/road-overlay/coordinateTransform.d.ts +1 -0
  32. package/dist/road-overlay/coordinateTransform.js +1 -0
  33. package/dist/road-overlay/index.cjs +2 -0
  34. package/dist/road-overlay/index.d.ts +9 -0
  35. package/dist/road-overlay/index.js +1 -0
  36. package/dist/road-overlay/index.mjs +2 -0
  37. package/dist/road-overlay/leaflet-renderers/createRenderer.d.ts +8 -0
  38. package/dist/road-overlay/leaflet-renderers/createRenderer.js +1 -0
  39. package/dist/road-overlay/leaflet-renderers/renderer.d.ts +82 -0
  40. package/dist/road-overlay/leaflet-renderers/renderer.js +1 -0
  41. package/dist/road-overlay/leaflet-renderers/webgpuRenderer.d.ts +55 -0
  42. package/dist/road-overlay/leaflet-renderers/webgpuRenderer.js +1 -0
  43. package/dist/road-overlay/leafletLayer.d.ts +24 -0
  44. package/dist/road-overlay/leafletLayer.js +1 -0
  45. package/dist/road-overlay/m4-w-road-overlay.umd.js +2 -0
  46. package/dist/road-overlay/options.d.ts +15 -0
  47. package/dist/road-overlay/options.js +1 -0
  48. package/dist/road-overlay/roadData.d.ts +16 -0
  49. package/dist/road-overlay/roadData.js +1 -0
  50. package/dist/road-overlay/roadGeometry.d.ts +7 -0
  51. package/dist/road-overlay/roadGeometry.js +1 -0
  52. package/dist/road-overlay/roadMesh.d.ts +7 -0
  53. package/dist/road-overlay/roadMesh.js +1 -0
  54. package/dist/road-overlay/types.d.ts +154 -0
  55. package/dist/road-overlay/types.js +1 -0
  56. package/package.json +3 -2
package/README.md CHANGED
@@ -1,29 +1,34 @@
1
1
  # m4文件绘图程序
2
2
 
3
- ![img.png](img.png)
3
+ [![npm version](https://img.shields.io/npm/v/m4-w-fast.svg)](https://www.npmjs.com/package/m4-w-fast)
4
+ [![npm downloads (monthly)](https://img.shields.io/npm/dm/m4-w-fast.svg)](https://www.npmjs.com/package/m4-w-fast)
5
+
6
+ [在线 demo](https://priestqing.github.io/m4-w-fast/)
7
+ ---
8
+ ![img_1.png](img_1.png)
4
9
 
5
10
  ### 更新说明
6
- - v1.0.1: 修复了安装在vite环境打包时woker不正常工作的问题
7
- - v1.0.2: 新增了一个可以单独获取某一个break的等值面方法 `getIsoBandsByLayerBreak(breaks: number[], break: number)`
8
- - **注意: 这个方法只用于取单等值面, 如果你需要获取所有等值面, 还是用 `getIsoBandsFast` 或者 `getIsoBandsFastByWorker` 方法**
9
- - v1.0.3:
10
- - 添加了m4文件换行符的兼容
11
- - 增加了配置项在解析的时候将开氏度转换为摄氏度 (K -> ℃) (-272.15)
12
- - `read.start({ convertTemKtoC: true })`
13
- - v1.0.4:
14
- - 提供了一个 `setParams(params: ParamsConfig, config?: ReadConfig)` 方法, 用于设置动态参数, 而非固定从文件获取数据
15
- - 拆解了 `start()` 方法中的 `json: JSONData[]` 拼装, 如果需要json数据, 可以调用 `getJsonData()` 方法获取
16
- - **注意: 这里获取到的数据,和`start(config? ReadConfig)`或`setParams(params: ParamsConfig, config?: ReadConfig)`中的config有关**
17
- - 扩展了 `ReadConfig` 配置项, 新增:
18
- - `plusOffset?: number` 数据偏移量, 默认无偏移
19
- - ~~`getIsoBandsFastByWorker()` 和 `clipDataByJson()` 方法新增了 `useCpuCount` 参数, 用于设置`CPU`使用数量, 默认为`navigator.hardwareConcurrency - 4`~~
20
- - v1.0.5:
21
- - `.start()`方法提供了一个Promise.reject的错误回调, 用于捕获文件读取错误
22
- - 优化了在少数情况下, 绘图会出现有值但没有被绘制的问题
23
- - v1.0.6:
24
- - 优化`getIsoBandsFast()`的绘图效果, 基于面积排序的结果存在一些未达预期的效果, 后续可能会撤销`getIsoBandsFastByWorker()`方法
25
- - v1.0.7:
26
- - 修复`getIsoBandsFast()`的结果在裁剪时不匹配的问题
11
+ - v1.1.1
12
+ - 新增基于 `Leaflet` + `WebGPU` 的道路图层方案, 支持将 `LineString` / `MultiLineString` 道路 GeoJSON 按栅格值着色
13
+ - v1.1.0
14
+ - 正式启动主推 `leaflet canvas图层`方案
15
+ - 现已支持`webgl2`, `webgpu`
16
+ - 增加了 `tooltip`属性, `raster:hover`,`raster:click`事件, 用于拾取当前鼠标所在的格点数据
17
+ - 裁图在计划中...
18
+ - v1.0.13
19
+ - 新增了基于`leaflet` + `webgl2`的绘图方案, 这个方案可以使用`tif`, `micaps4`, `setParams()`的方式获取到一个图层, 图层在变化的时候会进行重采样和插值, 理论上可以流畅的过滤数据或者放大不虚
20
+ - 后续计划增加`AMap`, `webgl`, `webgpu`方案.
21
+ - 裁剪数据也在计划中, 目前已知裁图在边界上会有锯齿状的边缘
22
+ - v1.0.12
23
+ - 新增 `getIsoBandsFastByMask(breaks: number[])` 方法, 和`getIsoBandsFast()`方法类似, 区别在于他做了数据挖孔, 可以给图层设置透明度而不影响图层的叠加效果
24
+ - v1.0.11
25
+ - 修复了在 `vite8` 环境下的验证问题, 导出更加严格
26
+ - v1.0.10
27
+ - 修复了 `getIsoBandsCanvas` 方法在`lat格距`为负值时结果不正确的问题
28
+ - v1.0.9:
29
+ - 新增`buildGridLineCanvas(options?: CanvasOptions)` 用于输出一个基于数据栅格的 `HTMLCanvasElement`, 只是个格子
30
+ - 新增`buildGridCanvas(breaks: number[], colors: (number[] | string)[], options?: CanvasOptions): HTMLCanvasElement | null` 用于输出一个基于数据栅格的 `HTMLCanvasElement`, 有填色
31
+ - 新增`buildGridCanvasClipByJson(breaks: number[], colors: (number[] | string)[], json: FeatureCollection, options?: CanvasOptions): HTMLCanvasElement | null` 用于输出一个基于数据栅格的 `HTMLCanvasElement`, 有填色并裁剪
27
32
  - v1.0.8:
28
33
  - 修复`getIsoBandsFast()`的返回类型兼容问题
29
34
  - 新增`getIsoBandsCanvas(breaks: number[], colors: (number[] | string)[], options?: CanvasOptions)` 用于输出一个 `HTMLCanvasElement` 方便做图片操作
@@ -31,111 +36,174 @@
31
36
  - ~~新增`buildGridCanvas(options?: CanvasOptions)` 用于输出一个基于数据栅格的 `HTMLCanvasElement`, 只是个格子~~
32
37
  - 新增`updateGridCanvas(points: Point[], updateVal: number)` 用于更新格点数据
33
38
  - 新增 `umd` 版本支持, 可以直接通过 `script` 标签引入使用, 全局注册变量命名为 `M4WFast`
34
- - v1.0.9:
35
- - 新增`buildGridLineCanvas(options?: CanvasOptions)` 用于输出一个基于数据栅格的 `HTMLCanvasElement`, 只是个格子
36
- - 新增`buildGridCanvas(breaks: number[], colors: (number[] | string)[], options?: CanvasOptions): HTMLCanvasElement | null` 用于输出一个基于数据栅格的 `HTMLCanvasElement`, 有填色
37
- - 新增`buildGridCanvasClipByJson(breaks: number[], colors: (number[] | string)[], json: FeatureCollection, options?: CanvasOptions): HTMLCanvasElement | null` 用于输出一个基于数据栅格的 `HTMLCanvasElement`, 有填色并裁剪
38
- - v1.0.10
39
- - 修复了 `getIsoBandsCanvas` 方法在`lat格距`为负值时结果不正确的问题
40
- - v1.0.11
41
- - 修复了在 `vite8` 环境下的验证问题, 导出更加严格
42
- - v1.0.12
43
- - 新增 `getIsoBandsFastByMask(breaks: number[])` 方法, 和`getIsoBandsFast()`方法类似, 区别在于他做了数据挖孔, 可以给图层设置透明度而不影响图层的叠加效果
44
- - v1.0.13
45
- - 新增了基于`leaflet` + `webgl2`的绘图方案, 这个方案可以使用`tif`, `micaps4`, `setParams()`的方式获取到一个图层, 图层在变化的时候会进行重采样和插值, 理论上可以流畅的过滤数据或者放大不虚
46
- - 后续计划增加`AMap`, `webgl`, `webgpu`方案.
47
- - 裁剪数据也在计划中, 目前已知裁图在边界上会有锯齿状的边缘
39
+ - v1.0.7:
40
+ - 修复`getIsoBandsFast()`的结果在裁剪时不匹配的问题
41
+ - v1.0.6:
42
+ - 优化`getIsoBandsFast()`的绘图效果, 基于面积排序的结果存在一些未达预期的效果, 后续可能会撤销`getIsoBandsFastByWorker()`方法
43
+ - v1.0.5:
44
+ - `.start()`方法提供了一个Promise.reject的错误回调, 用于捕获文件读取错误
45
+ - 优化了在少数情况下, 绘图会出现有值但没有被绘制的问题
46
+ - v1.0.4:
47
+ - 提供了一个 `setParams(params: ParamsConfig, config?: ReadConfig)` 方法, 用于设置动态参数, 而非固定从文件获取数据
48
+ - 拆解了 `start()` 方法中的 `json: JSONData[]` 拼装, 如果需要json数据, 可以调用 `getJsonData()` 方法获取
49
+ - **注意: 这里获取到的数据,和`start(config? ReadConfig)`或`setParams(params: ParamsConfig, config?: ReadConfig)`中的config有关**
50
+ - 扩展了 `ReadConfig` 配置项, 新增:
51
+ - `plusOffset?: number` 数据偏移量, 默认无偏移
52
+ - ~~`getIsoBandsFastByWorker()` 和 `clipDataByJson()` 方法新增了 `useCpuCount` 参数, 用于设置`CPU`使用数量, 默认为`navigator.hardwareConcurrency - 4`~~
53
+ - v1.0.3:
54
+ - 添加了m4文件换行符的兼容
55
+ - 增加了配置项在解析的时候将开氏度转换为摄氏度 (K -> ℃) (-272.15)
56
+ - `read.start({ convertTemKtoC: true })`
57
+ - v1.0.2: 新增了一个可以单独获取某一个break的等值面方法 `getIsoBandsByLayerBreak(breaks: number[], break: number)`
58
+ - **注意: 这个方法只用于取单等值面, 如果你需要获取所有等值面, 还是用 `getIsoBandsFast` 或者 `getIsoBandsFastByWorker` 方法**
59
+ - v1.0.1: 修复了安装在vite环境打包时woker不正常工作的问题
48
60
 
49
- ### 类型参照
50
- > ReadConfig
51
61
 
52
- | 参数 | 说明 | 类型 | 默认值 |
53
- |----|----|-----------|-------|
54
- | convertTemKtoC | 是否将温度从开氏度转换为摄氏度 | `boolean` | false |
55
- | plusOffset | 数据偏移量 | `number` | 无 |
62
+ ### 使用
63
+
64
+ 1. 安装这个库
65
+ ```shell
66
+ npm i m4-w-fast
67
+ ```
56
68
 
57
69
  ---
70
+ # leaflet canvas图层
71
+ - 理论上可以流畅的过滤数据或者放大不虚, 这可能是当前包体中显示最优的方案
72
+ - 现已支持 webgl2, webgpu
73
+ - UMD 使用 `M4WRasterOverlay`
58
74
 
59
- > ParamsConfig
75
+ ```ts
76
+ import { createRasterLeafletLayer, loadRasterGrid } from 'm4-w-fast/raster-overlay'
60
77
 
61
- | 参数 | 说明 | 类型 | 默认值 |
62
- |--------|----|------------|-----|
63
- | values | 数据值数组 | `number[]` | [] |
64
- | nx | 栅格列数 | `number` | 0 |
65
- | ny | 栅格行数 | `number` | 0 |
66
- | minLng | 最小经度 | `number` | 0 |
67
- | minLat | 最小纬度 | `number` | 0 |
68
- | gjLng | 经度分辨率 | `number` | 0 |
69
- | gjLat | 纬度分辨率 | `number` | 0 |
78
+ //...
70
79
 
71
- ---
80
+ const grid = await loadRasterGrid({
81
+ type: 'tif',
82
+ url: 'xxx'
83
+ })
72
84
 
73
- > JSONData
85
+ // micaps4
86
+ // const grid = await loadRasterGrid({
87
+ // type: 'micaps4',
88
+ // url: 'xxx'
89
+ // })
74
90
 
75
- | 参数 | 说明 | 类型 | 默认值 |
76
- |---|---|---|---|
77
- | lng | 经度 | `number` | 0 |
78
- | lat | 纬度 | `number` | 0 |
79
- | val | 数据值 | `number` | 0 |
91
+ // params
92
+ // const grid = await loadRasterGrid({
93
+ // type: 'params',
94
+ // params: {
95
+ // values: Array.from({ length: 512 * 256 }, () => Math.random() * 60 - 30),
96
+ // nx: 512,
97
+ // ny: 256,
98
+ // minLng: 70,
99
+ // minLat: 15,
100
+ // gjLng: 0.1,
101
+ // gjLat: 0.1,
102
+ // flipY: true, //是否翻转数据
103
+ // valueScale: 1
104
+ // }
105
+ // })
80
106
 
81
- ### 使用
107
+ const layer = createRasterLeafletLayer({
108
+ rendererType: 'webgl2',
109
+ grid,
110
+ colorStops: legend, // {min: number, max:number, color: string}[]
111
+ colorRange: {
112
+ minValue: Number(minInput.value), // 过滤的最小值
113
+ maxValue: Number(maxInput.value) // 过滤的最大值
114
+ },
115
+ opacity: 1,
116
+ colorMode: 'step', // 'step' | 'smooth'
117
+ sampleMode: 'interpolate', // 'interpolate' | 'cell'
118
+ pane: 'raster-pane',
119
+ tooltip: {
120
+ enabled: true,
121
+ formatter: (result) => {
122
+ return `<div>${result.value.toFixed(2)}</div>`
123
+ }
124
+ }
125
+ })
126
+
127
+ // layer.setColorRange({ minValue, maxValue }) 动态变化
128
+
129
+ layer.on('raster:hover', event => {
130
+ console.log(event.result)
131
+ })
132
+
133
+ layer.on('raster:click', event => {
134
+ console.log(event.result)
135
+ })
82
136
 
83
- 1. 安装这个库
84
- ```shell
85
- npm i m4-w-fast
86
137
  ```
87
138
 
88
- 2. 使用示例
89
- ```vue
90
- <script lang="ts" setup>
139
+ # 道路 WebGPU 图层
140
+
141
+ - 用于把道路 GeoJSON 叠加到 Leaflet 地图上, 并根据栅格数据采样值给道路着色
142
+ - 当前道路示例建议使用 `rendererType: 'webgpu'`, 浏览器需要支持 `navigator.gpu`
143
+ - 道路数据支持 `LineString` / `MultiLineString`
144
+ - `grid` 和 `source` 二选一传入, `grid` 可以通过 `loadRasterGrid()` 预加载
145
+ - 如果道路和栅格是 WGS84, 底图使用高德 GCJ-02, 设置 `coordinateTransform: 'wgs84-to-gcj02'`
146
+ - UMD 使用 `M4WRoadOverlay`。
147
+
148
+ ```ts
91
149
  import * as L from 'leaflet'
92
- import 'leaflet/dist/leaflet.css'
93
- import ReadFileM4Fast from 'm4-w-fast'
150
+ import { loadRasterGrid } from 'm4-w-fast/raster-overlay'
151
+ import { createRoadLeafletLayer } from 'm4-w-fast/road-overlay'
152
+ import type { RoadGeoJsonInput } from 'm4-w-fast/road-overlay'
94
153
 
95
- const file = '' // 这里是你的m4文件路径
154
+ const map = L.map('map', {
155
+ center: [35.97, 103.75],
156
+ zoom: 11
157
+ })
96
158
 
97
- const init = async() => {
98
- const read = new ReadFileM4Fast(file)
99
- await read.start()
100
- // 此时, 你已经有解析过的数据了
159
+ map.createPane('road-pane')
101
160
 
102
- // 开始计算等值面
103
- const break = [] // 这里取决于你的色标分级
104
- const isoBands = read.getIsoBandsFast(break)
161
+ const roadPane = map.getPane('road-pane')
105
162
 
106
- // 叠加绘图 leaflet为例
107
- L.geoJson(isoBands, {
108
- style(feature) {
109
- if (!feature) return {}
110
- const z = feature.properties.z
111
- const rgba = read.getColorFast(z, level, color)
112
- return {
113
- weight: 3,
114
- opacity: 1,
115
- color: 'red',
116
- stroke: false, // 如果你需要等值线开启他
117
- fillColor: rgba,
118
- fillOpacity: 0.5
119
- }
120
- }
121
- }).addTo(map)
122
-
123
- </script>
163
+ if (roadPane) {
164
+ roadPane.style.zIndex = '400'
165
+ }
166
+
167
+ // 这里是你的道路 GeoJSON, 只支持 LineString / MultiLineString
168
+ const roadsResponse = await fetch('/road.json')
169
+ const roads = await roadsResponse.json() as RoadGeoJsonInput
170
+
171
+ const grid = await loadRasterGrid({
172
+ type: 'micaps4',
173
+ url: '/2510270910.015'
174
+ })
175
+
176
+ const roadLayer = await createRoadLeafletLayer({
177
+ rendererType: 'webgpu',
178
+ coordinateTransform: 'wgs84-to-gcj02',
179
+ roads,
180
+ grid,
181
+ colorStops: legend,
182
+ colorRange: {
183
+ minValue: 0,
184
+ maxValue: 75
185
+ },
186
+ colorMode: 'step',
187
+ sampleMode: 'interpolate',
188
+ opacity: 1,
189
+ lineWidth: 8,
190
+ pane: 'road-pane'
191
+ })
192
+
193
+ roadLayer.addTo(map)
124
194
  ```
125
195
 
126
- 3. webWorker使用示例 (worker主要用来裁切文件)
127
- - **注意!`getIsoBandsFastByWorker()`即将弃用!, 请使用`getIsoBandsFast()`**
196
+ ---
197
+
198
+ # geojson图层
199
+ - UMD 使用 `M4WFast`
200
+
201
+ 2. 使用示例
128
202
  ```vue
129
203
  <script lang="ts" setup>
130
204
  import * as L from 'leaflet'
131
205
  import 'leaflet/dist/leaflet.css'
132
206
  import ReadFileM4Fast from 'm4-w-fast'
133
- import { getIsoWorkerUrl, getIntersectWorkerUrl } from 'm4-w-fast/worker-urls'
134
- import isoWorkerUrl from 'm4-w-fast/isoBands.worker.js?url'
135
- import intersectWorkerUrl from 'm4-w-fast/intersect.worker.js?url'
136
-
137
- import geojson from './620000.json'
138
- import type { FeatureCollection } from 'geojson'
139
207
 
140
208
  const file = '' // 这里是你的m4文件路径
141
209
 
@@ -146,15 +214,10 @@ const init = async() => {
146
214
 
147
215
  // 开始计算等值面
148
216
  const break = [] // 这里取决于你的色标分级
149
-
150
- // 如果数据量实在是大, 可以考虑用他来计算, 但是实测 180w条数据下也没必要用他
151
- const isoBands = await read.getIsoBandsFastByWorker(break, isoWorkerUrl)
152
-
153
- // 根据边界裁切文件
154
- const intersection = await read.clipDataByJson(isoBands, geojson as FeatureCollection, intersectWorkerUrl)
217
+ const isoBands = read.getIsoBandsFast(break)
155
218
 
156
219
  // 叠加绘图 leaflet为例
157
- L.geoJson(intersection, {
220
+ L.geoJson(isoBands, {
158
221
  style(feature) {
159
222
  if (!feature) return {}
160
223
  const z = feature.properties.z
@@ -170,6 +233,7 @@ const init = async() => {
170
233
  }
171
234
  }).addTo(map)
172
235
 
236
+ </script>
173
237
  ```
174
238
 
175
239
  3. 获取某一个break的等值面示例
@@ -207,52 +271,86 @@ read.setParams({
207
271
 
208
272
  ```
209
273
 
210
- ### leaflet图层
211
- - 理论上可以流畅的过滤数据或者放大不虚, 这可能是当前包体中显示最优的方案
274
+ ### 类型参照
212
275
 
213
- ```ts
214
- const grid = await loadRasterGrid({
215
- type: 'tif',
216
- url: 'xxx'
217
- })
276
+ > RasterLeafletLayerCreateOptions
277
+
278
+ | 参数 | 说明 | 类型 | 默认值 |
279
+ |----|----|----|----|
280
+ | `rendererType` | 渲染方式 | `'cpu' \| 'webgl' \| 'webgl2' \| 'webgpu'` | 必填 |
281
+ | `grid` | 栅格数据, 可通过 `loadRasterGrid()` 获取 | `RasterGrid` | 必填 |
282
+ | `colorStops` | 色标配置 | `{ min: number, max: number, color: string }[]` | 必填 |
283
+ | `colorRange` | 当前显示的数据范围, 常用于滑块过滤 | `{ minValue: number, maxValue: number }` | 色标最小最大值 |
284
+ | `opacity` | 图层透明度 | `number` | 渲染器默认值 |
285
+ | `colorMode` | 颜色映射模式 | `'step' \| 'smooth'` | `'step'` |
286
+ | `sampleMode` | 栅格采样模式 | `'interpolate' \| 'cell'` | `'interpolate'` |
287
+ | `pane` | Leaflet pane 名称 | `string` | Leaflet 默认 overlayPane |
288
+ | `tooltip` | 内置 tooltip 配置 | `RasterTooltipOptions` | 不启用 |
289
+ | `onHover` | 鼠标移动查询回调 | `(result) => void` | 无 |
290
+ | `onClick` | 鼠标点击查询回调 | `(result) => void` | 无 |
291
+
292
+ > RasterLeafletLayer
293
+
294
+ | 方法 | 说明 |
295
+ |----|----|
296
+ | `setParams(params)` | 使用参数方式更新栅格数据 |
297
+ | `setSource(source)` | 使用 `tif` / `micaps4` / `params` 数据源更新栅格数据 |
298
+ | `setGrid(grid)` | 直接更新栅格数据并重新上传纹理 |
299
+ | `setColorStops(colorStops)` | 动态更新色标 |
300
+ | `setColorRange(range)` | 动态更新显示值范围 |
301
+ | `setColorMode(colorMode)` | 动态切换色标模式, 支持 `step` / `smooth` |
302
+ | `setSampleMode(sampleMode)` | 动态切换采样模式, 支持 `interpolate` / `cell` |
303
+ | `setOpacity(opacity)` | 动态设置图层透明度 |
304
+ | `redraw()` | 手动重绘当前视口 |
305
+ | `getCanvas()` | 获取当前图层 canvas, 可用于导出图片 |
306
+ | `queryValueAt(point)` | 按统一 `x/y` 坐标查询栅格值 |
307
+ | `queryValueAtLatLng(latLng)` | 按 Leaflet 经纬度查询栅格值 |
218
308
 
219
- // micaps4
220
- // const grid = await loadRasterGrid({
221
- // type: 'micaps4',
222
- // url: 'xxx'
223
- // })
309
+ ---
224
310
 
225
- // params
226
- // const grid = await loadRasterGrid({
227
- // type: 'params',
228
- // params: {
229
- // values: Array.from({ length: 512 * 256 }, () => Math.random() * 60 - 30),
230
- // nx: 512,
231
- // ny: 256,
232
- // minLng: 70,
233
- // minLat: 15,
234
- // gjLng: 0.1,
235
- // gjLat: 0.1,
236
- // flipY: true, //是否翻转数据
237
- // valueScale: 1
238
- // }
239
- // })
311
+ > RoadLeafletLayer
240
312
 
241
- const layer = createRasterLeafletLayer({
242
- rendererType: 'webgl2',
243
- grid,
244
- colorStops: legend, // {min: number, max:number, color: string}[]
245
- colorRange: {
246
- minValue: Number(minInput.value), // 过滤的最小值
247
- maxValue: Number(maxInput.value) // 过滤的最大值
248
- },
249
- opacity: 1,
250
- renderMode: 'step',
251
- pane: 'raster-pane'
252
- })
313
+ | 方法 | 说明 |
314
+ |----|----|
315
+ | `redraw()` | 手动重绘道路图层 |
316
+ | `setOpacity(opacity)` | 动态设置道路透明度 |
317
+ | `setLineWidth(lineWidth)` | 动态设置道路线宽 |
318
+ | `setColorMode(colorMode)` | 动态切换色标模式, 支持 `step` / `smooth` |
319
+ | `setSampleMode(sampleMode)` | 动态切换采样模式, 支持 `interpolate` / `cell` |
320
+
321
+ ---
322
+
323
+ > ReadConfig
324
+
325
+ | 参数 | 说明 | 类型 | 默认值 |
326
+ |----|----|-----------|-------|
327
+ | convertTemKtoC | 是否将温度从开氏度转换为摄氏度 | `boolean` | false |
328
+ | plusOffset | 数据偏移量 | `number` | 无 |
329
+
330
+ ---
331
+
332
+ > ParamsConfig
333
+
334
+ | 参数 | 说明 | 类型 | 默认值 |
335
+ |--------|----|------------|-----|
336
+ | values | 数据值数组 | `number[]` | [] |
337
+ | nx | 栅格列数 | `number` | 0 |
338
+ | ny | 栅格行数 | `number` | 0 |
339
+ | minLng | 最小经度 | `number` | 0 |
340
+ | minLat | 最小纬度 | `number` | 0 |
341
+ | gjLng | 经度分辨率 | `number` | 0 |
342
+ | gjLat | 纬度分辨率 | `number` | 0 |
343
+
344
+ ---
345
+
346
+ > JSONData
347
+
348
+ | 参数 | 说明 | 类型 | 默认值 |
349
+ |---|---|---|---|
350
+ | lng | 经度 | `number` | 0 |
351
+ | lat | 纬度 | `number` | 0 |
352
+ | val | 数据值 | `number` | 0 |
253
353
 
254
- // layer.setColorRange({ minValue, maxValue }) 动态变化
255
- ```
256
354
 
257
355
  #### @author: wangrl
258
- #### 维护随缘
356
+ #### @email: a790283379@outlook.com