tds-map-methods 0.1.2 → 0.1.4
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.
- package/README.md +275 -0
- package/index.cjs +7 -7
- package/index.js +983 -972
- package/package.json +1 -1
- package/types/components/map/methods/utils.d.ts +6 -0
package/README.md
CHANGED
|
@@ -168,6 +168,281 @@ loadLayer(map, {
|
|
|
168
168
|
});
|
|
169
169
|
~~~
|
|
170
170
|
|
|
171
|
+
## 图层参数配置
|
|
172
|
+
|
|
173
|
+
<code>loadLayer</code> 的第二个参数是 <code>Layer.Config</code>。建议先配置公共字段,再根据图层类型补充 <code>config</code> 下的专用字段。
|
|
174
|
+
|
|
175
|
+
### 顶层参数
|
|
176
|
+
|
|
177
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
178
|
+
| --- | --- | --- | --- |
|
|
179
|
+
| <code>id</code> | <code>string</code> | 是 | 图层唯一标识;更新、显隐和删除都依赖它 |
|
|
180
|
+
| <code>title</code> | <code>string</code> | 是 | 图层标题,供业务菜单或图例使用 |
|
|
181
|
+
| <code>label</code> | <code>string</code> | 是 | 图层显示标签 |
|
|
182
|
+
| <code>type</code> | <code>LegendType</code> 或数组 | 是 | <code>gradual</code>、<code>grid</code>、<code>isoline</code>、<code>uv</code>、<code>wms</code> 等 |
|
|
183
|
+
| <code>filePath</code> | <code>string</code> | 是 | TDS 数据目录或文件路径 |
|
|
184
|
+
| <code>fallbackFilePath</code> | <code>string</code> | 否 | 主目录不可用时使用的备用目录 |
|
|
185
|
+
| <code>url</code> | <code>string</code> | 否 | 直接数据地址或已经解析出的数据集 URL |
|
|
186
|
+
| <code>serviceBaseUrl</code> | <code>string</code> | 否 | 仅覆盖当前图层的全局服务前缀 |
|
|
187
|
+
| <code>show</code> | <code>boolean</code> | 否 | 初始是否显示,默认显示 |
|
|
188
|
+
| <code>icon</code> | <code>string</code> | 否 | 业务菜单图标名称 |
|
|
189
|
+
| <code>fileListType</code> | <code>file</code> 或 <code>menu</code> | 否 | 目录节点类型 |
|
|
190
|
+
| <code>unit</code> | <code>string</code> | 否 | 数据单位 |
|
|
191
|
+
| <code>authorization</code> | <code>string</code> | 否 | 当前图层请求使用的 Authorization |
|
|
192
|
+
| <code>fallbackAuthorization</code> | <code>string</code> | 否 | 备用目录请求使用的 Authorization |
|
|
193
|
+
| <code>time</code> | <code>string</code> 或 <code>Dayjs</code> | 否 | 请求的数据时次 |
|
|
194
|
+
| <code>config</code> | <code>object</code> | 是 | 范围、图例、渲染模式和类型专用配置 |
|
|
195
|
+
|
|
196
|
+
<code>serviceBaseUrl</code> 和 <code>authorization</code> 的优先级通常是:图层字段或本次请求参数 → 全局 <code>configureMapMethods</code> 配置 → 默认值。
|
|
197
|
+
|
|
198
|
+
### config 通用参数
|
|
199
|
+
|
|
200
|
+
| 参数 | 类型 | 说明 |
|
|
201
|
+
| --- | --- | --- |
|
|
202
|
+
| <code>extent</code> | <code>[west, south, east, north]</code> | 数据经纬度范围,使用 EPSG:4326 顺序 |
|
|
203
|
+
| <code>mode</code> | <code>discrete</code>、<code>gradient</code>、<code>grid</code> | 离散色带、渐变色带或网格模式 |
|
|
204
|
+
| <code>legend</code> | <code>LegendItem[]</code> | 色带配置;每项包含 <code>name</code>、<code>scope</code> 和 <code>color</code> |
|
|
205
|
+
| <code>legendType</code> | <code>visible</code>、<code>legend</code>、<code>grid</code>、<code>gradual</code> | 图例显示方式 |
|
|
206
|
+
| <code>legendScope</code> | <code>[]</code> 或 <code>[start, end]</code> | 按图例下标选择范围,采用左闭右开区间;空数组表示不限制 |
|
|
207
|
+
| <code>scope</code> | <code>[min, max]</code> | 数据值域;不设置时通常从 TDS 自动获取 |
|
|
208
|
+
| <code>zIndex</code> | <code>number</code> | 图层层级,值越大越靠上 |
|
|
209
|
+
| <code>opacity</code> | <code>number</code> | 透明度,范围 0 到 1 |
|
|
210
|
+
| <code>lineWidth</code> | <code>number</code> | 等值线宽度 |
|
|
211
|
+
| <code>isolineLineWidth</code> | <code>number</code> | 等值线宽度,优先于 <code>lineWidth</code> |
|
|
212
|
+
| <code>isolineSmooth</code> | <code>boolean</code> | 是否平滑等值线,默认开启 |
|
|
213
|
+
| <code>isolineSmoothness</code> | <code>number</code> | 平滑级别;0 关闭,1 到 3 逐级增强 |
|
|
214
|
+
| <code>alignWithIsoline</code> | <code>boolean</code> | 色斑图是否复用等值线的平滑数值场和边界 |
|
|
215
|
+
| <code>isolineColor</code> | <code>string</code> 或 <code>boolean</code> | 等值线颜色;<code>true</code> 表示跟随图例 |
|
|
216
|
+
| <code>isolineBorderColor</code> | <code>string</code> | 等值面边界颜色 |
|
|
217
|
+
| <code>isolineFill</code> | <code>boolean</code> | 是否绘制分级等值面 |
|
|
218
|
+
| <code>showIsolineValue</code> | <code>boolean</code> | 是否沿等值线显示数值 |
|
|
219
|
+
| <code>showText</code> | <code>boolean</code> | MICAPS 是否显示文本 |
|
|
220
|
+
| <code>showFillcolor</code> | <code>boolean</code> | MICAPS 是否填色 |
|
|
221
|
+
| <code>showIsoline</code> | <code>boolean</code> | MICAPS 是否显示等值线 |
|
|
222
|
+
| <code>showPointMarkers</code> | <code>boolean</code> | MICAPS 是否显示符号点 |
|
|
223
|
+
| <code>smooth</code> | <code>boolean</code> | 是否平滑掩膜边缘 |
|
|
224
|
+
| <code>smoothIterations</code> | <code>number</code> | Chaikin 平滑迭代次数,建议 1 到 3 |
|
|
225
|
+
| <code>valueTransform</code> | 函数或字符串 | 绘制和查询前转换栅格值;返回空值表示无效像素 |
|
|
226
|
+
| <code>valueTransformAffectsScope</code> | <code>boolean</code> | 转换结果是否参与 <code>scope</code> 过滤,默认参与 |
|
|
227
|
+
| <code>cache</code> | <code>boolean</code> | 旧版缓存开关,当前版本不建议依赖 |
|
|
228
|
+
| <code>layerConfig</code> | <code>object</code> | TDS/WMS 原始请求参数 |
|
|
229
|
+
| <code>gridConfig</code> | <code>object</code> | 网格数值绘制配置 |
|
|
230
|
+
| <code>windConfig</code> | <code>object</code> | 风场预留扩展配置;当前版本主要使用通用字段和 <code>layerConfig</code> |
|
|
231
|
+
| <code>windShaftConfig</code> | <code>object</code> | 风羽绘制配置 |
|
|
232
|
+
| <code>typhoonConfig</code> | <code>object</code> | 台风路径配置 |
|
|
233
|
+
|
|
234
|
+
图例项格式:
|
|
235
|
+
|
|
236
|
+
~~~ts
|
|
237
|
+
const legend = [
|
|
238
|
+
{ name: "0-10", scope: [0, 10], color: "#3b82f6" },
|
|
239
|
+
{ name: "10-20", scope: [10, 20], color: "#22c55e" },
|
|
240
|
+
{ name: "20+", scope: [20, 9999], color: "#ef4444" },
|
|
241
|
+
];
|
|
242
|
+
~~~
|
|
243
|
+
|
|
244
|
+
完整配置示例:
|
|
245
|
+
|
|
246
|
+
~~~ts
|
|
247
|
+
const layerOptions: Layer.Config = {
|
|
248
|
+
id: "temperature",
|
|
249
|
+
title: "温度",
|
|
250
|
+
label: "Temperature",
|
|
251
|
+
type: "gradual",
|
|
252
|
+
filePath: "/data/temperature",
|
|
253
|
+
time: "2026-10-28T00:00:00Z",
|
|
254
|
+
authorization: "Basic ...",
|
|
255
|
+
config: {
|
|
256
|
+
extent: [70, 15, 140, 55],
|
|
257
|
+
mode: "gradient",
|
|
258
|
+
legendType: "gradual",
|
|
259
|
+
legendScope: [],
|
|
260
|
+
scope: [-40, 50],
|
|
261
|
+
legend,
|
|
262
|
+
opacity: 0.85,
|
|
263
|
+
zIndex: 10,
|
|
264
|
+
isolineSmooth: true,
|
|
265
|
+
isolineSmoothness: 1,
|
|
266
|
+
},
|
|
267
|
+
};
|
|
268
|
+
|
|
269
|
+
loadLayer(map, layerOptions);
|
|
270
|
+
~~~
|
|
271
|
+
|
|
272
|
+
### layerConfig:TDS/WMS 参数
|
|
273
|
+
|
|
274
|
+
<code>layerConfig</code> 会被合并到 WMS 或 TDS 请求中。常用字段如下:
|
|
275
|
+
|
|
276
|
+
| 参数 | 说明 |
|
|
277
|
+
| --- | --- |
|
|
278
|
+
| <code>LAYERS</code> | WMS 图层名;风场通常传 U、V 两个分量名称数组 |
|
|
279
|
+
| <code>ELEVATION</code> | 高度层或气压层 |
|
|
280
|
+
| <code>TIME</code> | 时间参数;由图层 <code>time</code> 生成时会覆盖此值 |
|
|
281
|
+
| <code>BBOX</code> | 请求范围,由 <code>extent</code> 自动生成 |
|
|
282
|
+
| <code>WIDTH</code>、<code>HEIGHT</code> | 图片尺寸,由 <code>imageSize</code> 和范围自动计算 |
|
|
283
|
+
| <code>STYLES</code> | WMS 样式名 |
|
|
284
|
+
| <code>COLORSCALERANGE</code> | 色带范围,通常由 <code>scope</code> 自动生成 |
|
|
285
|
+
| <code>NUMCOLORBANDS</code> | 色带级数 |
|
|
286
|
+
| <code>ABOVEMAXCOLOR</code>、<code>BELOWMINCOLOR</code>、<code>BGCOLOR</code> | 超出范围和背景颜色策略 |
|
|
287
|
+
| <code>LOGSCALE</code> | 是否使用对数色阶 |
|
|
288
|
+
| <code>SERVICE</code>、<code>VERSION</code>、<code>REQUEST</code>、<code>FORMAT</code>、<code>SRS</code> | 标准 WMS 参数 |
|
|
289
|
+
| <code>TINTCOLOR</code> | 将 WMS 图片统一着色的特殊参数 |
|
|
290
|
+
|
|
291
|
+
业务传入的 <code>BBOX</code>、<code>TIME</code>、<code>WIDTH</code>、<code>HEIGHT</code> 和 <code>COLORSCALERANGE</code> 可能被包重新计算。需要改变这些值时,应优先调整 <code>extent</code>、<code>time</code>、<code>scope</code> 和全局 <code>imageSize</code>。
|
|
292
|
+
|
|
293
|
+
WMS 图层示例:
|
|
294
|
+
|
|
295
|
+
~~~ts
|
|
296
|
+
loadLayer(map, {
|
|
297
|
+
id: "temperature-wms",
|
|
298
|
+
title: "温度 WMS",
|
|
299
|
+
label: "Temperature",
|
|
300
|
+
type: "wms",
|
|
301
|
+
filePath: "/data/temperature.nc",
|
|
302
|
+
url: "/wms/data/temperature.nc",
|
|
303
|
+
serviceBaseUrl: "/server",
|
|
304
|
+
config: {
|
|
305
|
+
extent: [70, 15, 140, 55],
|
|
306
|
+
mode: "gradient",
|
|
307
|
+
legendType: "gradual",
|
|
308
|
+
legend,
|
|
309
|
+
opacity: 0.8,
|
|
310
|
+
layerConfig: {
|
|
311
|
+
LAYERS: "Temperature",
|
|
312
|
+
STYLES: "default-scalar/seq-Rainbow",
|
|
313
|
+
COLORSCALERANGE: "-40,50",
|
|
314
|
+
NUMCOLORBANDS: 250,
|
|
315
|
+
TRANSPARENT: true,
|
|
316
|
+
FORMAT: "image/png",
|
|
317
|
+
VERSION: "1.1.1",
|
|
318
|
+
},
|
|
319
|
+
},
|
|
320
|
+
});
|
|
321
|
+
~~~
|
|
322
|
+
|
|
323
|
+
### gridConfig:网格数值
|
|
324
|
+
|
|
325
|
+
| 参数 | 默认值 | 说明 |
|
|
326
|
+
| --- | --- | --- |
|
|
327
|
+
| <code>pixelStep</code> | 40 | 网格文字像素间距,最小 8 |
|
|
328
|
+
| <code>fontSize</code> | 14 | 文字大小,单位 px,最小 10 |
|
|
329
|
+
| <code>decimals</code> | 1 | 小数位数 |
|
|
330
|
+
| <code>fontColor</code> | #000 | 文字颜色 |
|
|
331
|
+
| <code>strokeColor</code> | #fff | 文字描边颜色 |
|
|
332
|
+
| <code>strokeWidth</code> | 2 | 描边宽度 |
|
|
333
|
+
| <code>fontFamily</code> | Arial, sans-serif | 字体 |
|
|
334
|
+
| <code>useDevicePixelRatio</code> | false | 是否按设备像素比绘制 |
|
|
335
|
+
|
|
336
|
+
~~~ts
|
|
337
|
+
loadLayer(map, {
|
|
338
|
+
...layerOptions,
|
|
339
|
+
type: ["gradual", "grid"],
|
|
340
|
+
config: {
|
|
341
|
+
...layerOptions.config,
|
|
342
|
+
gridConfig: {
|
|
343
|
+
pixelStep: 40,
|
|
344
|
+
fontSize: 14,
|
|
345
|
+
decimals: 1,
|
|
346
|
+
fontColor: "#111827",
|
|
347
|
+
strokeColor: "#ffffff",
|
|
348
|
+
strokeWidth: 2,
|
|
349
|
+
fontFamily: "Arial, sans-serif",
|
|
350
|
+
useDevicePixelRatio: true,
|
|
351
|
+
},
|
|
352
|
+
},
|
|
353
|
+
});
|
|
354
|
+
~~~
|
|
355
|
+
|
|
356
|
+
### windShaftConfig:风羽
|
|
357
|
+
|
|
358
|
+
| 参数 | 默认值 | 说明 |
|
|
359
|
+
| --- | --- | --- |
|
|
360
|
+
| <code>pixelStep</code> | 40 | 风羽采样像素步长,最小 8 |
|
|
361
|
+
| <code>fontSize</code> | 26 | 风羽尺寸,最小 10 |
|
|
362
|
+
| <code>color</code> | rgb(255,255,255) | 风羽颜色 |
|
|
363
|
+
| <code>minWindSpeed</code> | 0.01 | 过滤低于该值的风速 |
|
|
364
|
+
| <code>speedLevelStep</code> | 2 | 风速分级步长 |
|
|
365
|
+
| <code>maxLevel</code> | 30 | 风速级别上限 |
|
|
366
|
+
| <code>spriteCellSize</code> | 32 | 风羽雪碧图单格尺寸 |
|
|
367
|
+
| <code>baseFontSize</code> | 32 | 图标缩放基准字号 |
|
|
368
|
+
| <code>iconYOffsetRatio</code> | 0.7 | 图标 Y 轴偏移比例 |
|
|
369
|
+
| <code>firstRowMaxLevel</code> | 3 | 雪碧图第一行最大等级 |
|
|
370
|
+
| <code>firstRowStartX</code> | 28 | 雪碧图第一行起始 X 坐标 |
|
|
371
|
+
| <code>firstRowY</code> | 4 | 雪碧图第一行 Y 坐标 |
|
|
372
|
+
| <code>secondRowOffsetX</code> | 4 | 雪碧图第二行 X 偏移 |
|
|
373
|
+
| <code>secondRowY</code> | 5 | 雪碧图第二行 Y 坐标 |
|
|
374
|
+
|
|
375
|
+
风场和风羽通常组合使用:
|
|
376
|
+
|
|
377
|
+
~~~ts
|
|
378
|
+
loadLayer(map, {
|
|
379
|
+
id: "wind",
|
|
380
|
+
title: "10 米风场",
|
|
381
|
+
label: "Wind",
|
|
382
|
+
type: ["uv", "grid", "windShaft"],
|
|
383
|
+
filePath: "/data/wind",
|
|
384
|
+
config: {
|
|
385
|
+
extent: [70, 15, 140, 55],
|
|
386
|
+
mode: "gradient",
|
|
387
|
+
legendType: "gradual",
|
|
388
|
+
legend: windLegend,
|
|
389
|
+
scope: [0, 60],
|
|
390
|
+
layerConfig: {
|
|
391
|
+
LAYERS: [
|
|
392
|
+
"u-component_of_wind_height_above_ground",
|
|
393
|
+
"v-component_of_wind_height_above_ground",
|
|
394
|
+
],
|
|
395
|
+
},
|
|
396
|
+
windShaftConfig: {
|
|
397
|
+
pixelStep: 20,
|
|
398
|
+
fontSize: 18,
|
|
399
|
+
color: "rgb(255,255,255)",
|
|
400
|
+
minWindSpeed: 0.01,
|
|
401
|
+
speedLevelStep: 2,
|
|
402
|
+
},
|
|
403
|
+
},
|
|
404
|
+
});
|
|
405
|
+
~~~
|
|
406
|
+
|
|
407
|
+
### typhoonConfig:台风路径
|
|
408
|
+
|
|
409
|
+
| 参数 | 说明 |
|
|
410
|
+
| --- | --- |
|
|
411
|
+
| <code>serviceBaseUrl</code> | 台风 JSON 服务前缀,覆盖全局台风服务地址 |
|
|
412
|
+
| <code>dataPath</code> | TDS fileServer 下的台风 JSON 目录 |
|
|
413
|
+
| <code>typhoonNums</code> | 只加载指定台风编号;不传则使用列表中的默认台风 |
|
|
414
|
+
| <code>sourcePriority</code> | 实况和预报来源优先级 |
|
|
415
|
+
| <code>showForecast</code> | 是否显示预报路径 |
|
|
416
|
+
| <code>fitToExtent</code> | 加载后是否自动缩放到路径范围,默认开启 |
|
|
417
|
+
|
|
418
|
+
~~~ts
|
|
419
|
+
loadLayer(map, {
|
|
420
|
+
id: "typhoon",
|
|
421
|
+
title: "台风路径",
|
|
422
|
+
label: "Typhoon",
|
|
423
|
+
type: "typhoon",
|
|
424
|
+
filePath: "data/script/mdp_typhoon/output",
|
|
425
|
+
authorization: "Basic ...",
|
|
426
|
+
config: {
|
|
427
|
+
extent: [100, 5, 180, 50],
|
|
428
|
+
mode: "gradient",
|
|
429
|
+
legendType: "legend",
|
|
430
|
+
legend: typhoonLegend,
|
|
431
|
+
typhoonConfig: {
|
|
432
|
+
dataPath: "data/script/mdp_typhoon/output",
|
|
433
|
+
typhoonNums: ["2415"],
|
|
434
|
+
sourcePriority: ["BABJ|WTPQ20", "RJTD|WTPQ51"],
|
|
435
|
+
showForecast: true,
|
|
436
|
+
fitToExtent: true,
|
|
437
|
+
},
|
|
438
|
+
},
|
|
439
|
+
});
|
|
440
|
+
~~~
|
|
441
|
+
|
|
442
|
+
### 参数更新规则
|
|
443
|
+
|
|
444
|
+
<code>updateLayer</code> 会按 <code>id</code> 更新通过 <code>loadLayer</code> 管理的相关图层;如果同时创建了关联的 <code>grid</code> 或 <code>windShaft</code> 图层,也会同步更新。直接使用 <code>createIsoline</code> 或 <code>createMicContour</code> 创建的底层图层,应使用对应的删除和显隐方法管理。
|
|
445
|
+
|
|
171
446
|
## 图层管理
|
|
172
447
|
|
|
173
448
|
~~~ts
|