tds-map-methods 0.0.0-stage → 0.1.0

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/package.json CHANGED
@@ -1,6 +1,32 @@
1
1
  {
2
2
  "name": "tds-map-methods",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "description": "Map methods extracted from tds demo.",
6
+ "publishConfig": {
7
+ "access": "public"
8
+ },
9
+ "main": "./index.cjs",
10
+ "module": "./index.js",
11
+ "types": "./types/components/map/methods/index.d.ts",
12
+ "exports": {
13
+ ".": {
14
+ "types": "./types/components/map/methods/index.d.ts",
15
+ "import": "./index.js",
16
+ "require": "./index.cjs"
17
+ }
18
+ },
19
+ "peerDependencies": {
20
+ "ol": "^10.7.0",
21
+ "@turf/turf": "^7.3.1",
22
+ "dayjs": "^1.11.19",
23
+ "d3-contour": "^4.0.2",
24
+ "lodash-es": "^4.17.22"
25
+ },
26
+ "files": [
27
+ "index.js",
28
+ "index.cjs",
29
+ "types",
30
+ "README.md"
31
+ ]
32
+ }
@@ -0,0 +1,25 @@
1
+ import ImageCanvasSource from "ol/source/ImageCanvas";
2
+ import ImageLayer from "ol/layer/Image";
3
+ type ExtentLike = [number, number, number, number];
4
+ export declare class ArrowLayer {
5
+ map: Layer.Map;
6
+ options: any;
7
+ contourCache: Map<string, any>;
8
+ constructor(map: Layer.Map, options: any);
9
+ add(): Promise<ImageLayer<ImageCanvasSource>>;
10
+ getArrowParams(): Promise<{
11
+ grayArr: number[];
12
+ width: number;
13
+ height: number;
14
+ }>;
15
+ getArrowSource(options: any): ImageCanvasSource;
16
+ createArrowCanvasSource(data: any, bbox: ExtentLike, options: {
17
+ pixelStep?: number;
18
+ fontSize?: number;
19
+ color?: string;
20
+ }): ImageCanvasSource;
21
+ getSourceFromCache(): ImageCanvasSource;
22
+ delete(): void;
23
+ toggleVisible(visible: boolean): void;
24
+ }
25
+ export {};
@@ -0,0 +1 @@
1
+ export declare function CommonMethods(): void;
@@ -0,0 +1,76 @@
1
+ import type Map from "ol/Map";
2
+ import VectorLayer from "ol/layer/Vector";
3
+ type LegendItem = {
4
+ name?: string;
5
+ scope?: number[];
6
+ color: string;
7
+ };
8
+ type IsolineConfig = {
9
+ legend?: LegendItem[];
10
+ legendScope?: [number, number] | [];
11
+ scope?: [number, number];
12
+ lineWidth?: number;
13
+ /** 等值线线宽,未配置时兼容使用 lineWidth。 */
14
+ isolineLineWidth?: number;
15
+ /** Whether isoline smoothing is enabled. Defaults to true. */
16
+ isolineSmooth?: boolean;
17
+ /** Isoline smoothing level: 0 disables smoothing, 1-3 progressively increase it. */
18
+ isolineSmoothness?: number;
19
+ isolineColor?: string | boolean;
20
+ /** 等值面边界线颜色,未配置时沿用当前等值线颜色。 */
21
+ isolineBorderColor?: string;
22
+ /** 是否使用等值面按图例分级填色。 */
23
+ isolineFill?: boolean;
24
+ /** 是否沿等值线显示数值。 */
25
+ showIsolineValue?: boolean;
26
+ showIsolineLabel?: boolean;
27
+ opacity?: number;
28
+ zIndex?: number;
29
+ [key: string]: unknown;
30
+ };
31
+ export type IsolineOptions = {
32
+ id: string;
33
+ url: string;
34
+ time?: unknown;
35
+ authorization?: string;
36
+ signal?: AbortSignal;
37
+ config: IsolineConfig;
38
+ };
39
+ type Coordinate = [number, number];
40
+ type IsolineGeometry = {
41
+ type: "LineString" | "MultiLineString";
42
+ coordinates: Coordinate[] | Coordinate[][];
43
+ value: number;
44
+ };
45
+ type IsolinePolygonGeometry = {
46
+ type: "Polygon" | "MultiPolygon";
47
+ coordinates: Coordinate[][] | Coordinate[][][];
48
+ value: number;
49
+ };
50
+ /** 在地图上添加等值线向量图层。 */
51
+ export declare function addIsolineLayer(options: {
52
+ map: Map;
53
+ id: string;
54
+ isolineGeoJSON: IsolineGeometry[];
55
+ contourGeoJSON?: IsolinePolygonGeometry[];
56
+ colorMap: string | Record<number, string>;
57
+ fillColorMap?: Record<number, string>;
58
+ fillContours?: boolean;
59
+ fillOpacity?: number;
60
+ lineWidth?: number;
61
+ showLabel?: boolean;
62
+ zIndex?: number;
63
+ visible?: boolean;
64
+ /** Reuse parsed OpenLayers features while only the visible legend range changes. */
65
+ geometryCacheKey?: string;
66
+ visibleThresholds?: number[];
67
+ }): VectorLayer<any, any>;
68
+ /** 根据灰度格点生成并添加等值线,重复请求会复用生成结果。 */
69
+ export declare function createIsoline(map: Map, options: IsolineOptions): Promise<VectorLayer<any, any>>;
70
+ /** 预加载若干时间点的等值线到缓存。 */
71
+ export declare function preloadIsoline(options: IsolineOptions, timeList: unknown[]): Promise<void>;
72
+ /** 删除等值线图层,并使未完成的同图层请求失效。 */
73
+ export declare function removeIsolineLayer(map: Map, className: string): void;
74
+ /** 切换显示/隐藏。 */
75
+ export declare function toggleIsolineLayer(map: Map, className: string, show: boolean): void;
76
+ export {};
@@ -0,0 +1,28 @@
1
+ import type Map from "ol/Map";
2
+ import VectorLayer from "ol/layer/Vector";
3
+ import VectorSource from "ol/source/Vector";
4
+ type LegendItem = {
5
+ name?: string;
6
+ scope?: number[];
7
+ color: string;
8
+ };
9
+ export type MicContourOptions = {
10
+ className: string;
11
+ filePath: string;
12
+ authorization?: string;
13
+ signal?: AbortSignal;
14
+ legend?: LegendItem[];
15
+ legendScope?: [number, number] | [];
16
+ zIndex?: number;
17
+ opacity?: number;
18
+ visible?: boolean;
19
+ showText?: boolean;
20
+ showFillcolor?: boolean;
21
+ showIsoline?: boolean;
22
+ showPointMarkers?: boolean;
23
+ };
24
+ /** Parse a MICAPS file and atomically replace its related vector layers. */
25
+ export declare function createMicContour(map: Map, options: MicContourOptions): Promise<VectorLayer<VectorSource<any>, any>>;
26
+ /** Remove all layers created for a MICAPS dataset and invalidate pending renders. */
27
+ export declare function removeMicContour(map: Map, className: string): void;
28
+ export {};
@@ -0,0 +1,81 @@
1
+ import ImageCanvasSource from "ol/source/ImageCanvas";
2
+ import ImageLayer from "ol/layer/Image";
3
+ type ExtentLike = [number, number, number, number];
4
+ type ScopeLike = [number, number] | [] | undefined;
5
+ type ValueTransformContext = {
6
+ x: number;
7
+ y: number;
8
+ width: number;
9
+ height: number;
10
+ source: "raw" | "smooth";
11
+ };
12
+ type ValueTransformFn = (value: number, context: ValueTransformContext) => number | null | undefined;
13
+ type ContourRing = number[][];
14
+ type ContourPolygon = ContourRing[];
15
+ type ContourMultiPolygon = ContourPolygon[];
16
+ type ContourFill = {
17
+ threshold: number;
18
+ path: Path2D;
19
+ color: string;
20
+ };
21
+ type CachedRasterRender = {
22
+ canvas: HTMLCanvasElement;
23
+ renderMask: (number | undefined)[][];
24
+ renderValues: (number | undefined)[][];
25
+ contourFills?: ContourFill[];
26
+ };
27
+ type CachedContourData = {
28
+ schemaVersion: number;
29
+ uniqueThresholds: number[];
30
+ rawArr2D: (number | undefined)[][];
31
+ smoothArr2D: (number | undefined)[][];
32
+ extent: ExtentLike;
33
+ width: number;
34
+ height: number;
35
+ };
36
+ export declare class FcstLayer {
37
+ map: Layer.Map;
38
+ options: any;
39
+ contourCache: Map<string, any>;
40
+ contourLoadingTasks: globalThis.Map<string, Promise<CachedContourData | null>>;
41
+ rasterRenderCache: globalThis.Map<string, CachedRasterRender>;
42
+ rasterRenderLoadingTasks: globalThis.Map<string, Promise<CachedRasterRender | null>>;
43
+ layerData: any;
44
+ ready: Promise<any>;
45
+ private sourceRequestVersion;
46
+ private abortController;
47
+ constructor(map: Layer.Map, options: any);
48
+ private beginSourceRequest;
49
+ private isCurrentRequest;
50
+ private getRequestOptions;
51
+ private getContourCacheKey;
52
+ private setCachedContourData;
53
+ private getRasterRenderCacheKey;
54
+ private setCachedRasterRender;
55
+ add(): Promise<ImageLayer<ImageCanvasSource>>;
56
+ getSourceFromParams(options?: any): Promise<ImageCanvasSource>;
57
+ getOrLoadContourData(options?: any): Promise<CachedContourData | null>;
58
+ getValueByLonLat(lon: number, lat: number, useSmooth?: boolean): Promise<number | null>;
59
+ getValueByLngLat(lng: number, lat: number, useSmooth?: boolean): Promise<number | null>;
60
+ getSourceFromCache(options?: any): Promise<ImageCanvasSource>;
61
+ getFcstRasterSource(options: any, runtimeOptions?: any): Promise<ImageCanvasSource>;
62
+ getValueTransformFn(options?: any): ValueTransformFn | undefined;
63
+ applyValueTransformValue(value: number, context: ValueTransformContext, transformFn?: ValueTransformFn): number;
64
+ applyValueTransform2D(data2D: (number | undefined)[][], source: ValueTransformContext["source"], transformFn?: ValueTransformFn): (number | undefined)[][];
65
+ isMaskSmoothEnabled(options?: any): boolean;
66
+ getMaskSmoothIterations(options?: any): number;
67
+ chaikinSmoothRing(ring: ContourRing, iterations?: number): ContourRing;
68
+ smoothMaskContourPolygons(polygons: ContourMultiPolygon, iterations: number): ContourMultiPolygon;
69
+ createVisibleMaskContourPath(rawArr2D: (number | undefined)[][], width: number, height: number, scope?: ScopeLike, smooth?: boolean, runtimeOptions?: any): Path2D;
70
+ createIsolineContourPath(valueArr2D: (number | undefined)[][], width: number, height: number, scope?: ScopeLike, runtimeOptions?: any): Path2D;
71
+ createIsolineContourFills(valueArr2D: (number | undefined)[][], width: number, height: number, thresholds: number[], colorsRGBA: [number, number, number, number][], scope?: ScopeLike, runtimeOptions?: any): ContourFill[];
72
+ createScopeMaskCanvas(valueArr2D: (number | undefined)[][], width: number, height: number, scope?: ScopeLike): HTMLCanvasElement;
73
+ createLegendEdgeColorCanvas(valueArr2D: (number | undefined)[][], width: number, height: number, firstThreshold: number, lastThreshold: number, firstColor: [number, number, number, number], lastColor: [number, number, number, number]): HTMLCanvasElement;
74
+ createFcstCanvasSource(rasterCanvas: HTMLCanvasElement, dataExtent: ExtentLike, colorMode?: Layer.LayerMode, rawArr2D?: (number | undefined)[][], scope?: ScopeLike, runtimeOptions?: any, contourFills?: ContourFill[], contourValues?: (number | undefined)[][], selectedEdgeCanvas?: HTMLCanvasElement | null): ImageCanvasSource;
75
+ /** 预加载图层 */
76
+ preload(url: string): Promise<void>;
77
+ delete(): void;
78
+ toggleVisible(visible: boolean): void;
79
+ updateParams(newOptions: any): Promise<void>;
80
+ }
81
+ export {};
@@ -0,0 +1,30 @@
1
+ import ImageCanvasSource from "ol/source/ImageCanvas";
2
+ import ImageLayer from "ol/layer/Image";
3
+ type ExtentLike = [number, number, number, number];
4
+ type ScopeLike = [number, number] | [] | undefined;
5
+ type ContourRing = number[][];
6
+ type ContourPolygon = ContourRing[];
7
+ type ContourMultiPolygon = ContourPolygon[];
8
+ export declare class FcstLayer {
9
+ map: Layer.Map;
10
+ options: any;
11
+ contourCache: Map<string, any>;
12
+ layerData: any;
13
+ constructor(map: Layer.Map, options: any);
14
+ add(): Promise<ImageLayer<ImageCanvasSource>>;
15
+ getSourceFromParams(): Promise<ImageCanvasSource>;
16
+ getSourceFromCache(): Promise<ImageCanvasSource>;
17
+ getFcstRasterSource(options: any): Promise<ImageCanvasSource>;
18
+ isMaskSmoothEnabled(): boolean;
19
+ getMaskSmoothIterations(): number;
20
+ chaikinSmoothRing(ring: ContourRing, iterations?: number): ContourRing;
21
+ smoothMaskContourPolygons(polygons: ContourMultiPolygon, iterations: number): ContourMultiPolygon;
22
+ createVisibleMaskContourPath(rawArr2D: (number | undefined)[][], width: number, height: number, scope?: ScopeLike, smooth?: boolean): Path2D;
23
+ createFcstCanvasSource(rasterCanvas: HTMLCanvasElement, dataExtent: ExtentLike, colorMode?: Layer.LayerMode, rawArr2D?: (number | undefined)[][], scope?: ScopeLike): ImageCanvasSource;
24
+ /** 预加载图层 */
25
+ preload(): Promise<void>;
26
+ delete(): void;
27
+ toggleVisible(visible: boolean): void;
28
+ updateParams(newOptions: any): Promise<void>;
29
+ }
30
+ export {};
@@ -0,0 +1,62 @@
1
+ import ImageCanvasSource from "ol/source/ImageCanvas";
2
+ import ImageLayer from "ol/layer/Image";
3
+ type ExtentLike = [number, number, number, number];
4
+ type GridValueTransformContext = {
5
+ x: number;
6
+ y: number;
7
+ width: number;
8
+ height: number;
9
+ source: "raw";
10
+ };
11
+ type GridValueTransformFn = (value: number, context: GridValueTransformContext) => number | null | undefined;
12
+ type CachedGridData = {
13
+ schemaVersion: number;
14
+ rawArr2D: (number | undefined)[][];
15
+ extent: ExtentLike;
16
+ width: number;
17
+ height: number;
18
+ };
19
+ type GridDataInput = {
20
+ rawArr2D: (number | undefined)[][];
21
+ extent: ExtentLike;
22
+ width: number;
23
+ height: number;
24
+ };
25
+ export declare function setLinkedGridLayer(id: string, layer: GridLayer): void;
26
+ export declare function getLinkedGridLayer(id: string): GridLayer;
27
+ export declare function deleteLinkedGridLayer(id: string): void;
28
+ export declare function forEachLinkedGridLayer(callback: (layer: GridLayer) => void): void;
29
+ export declare function clearLinkedGridLayerMap(): void;
30
+ export declare class GridLayer {
31
+ map: Layer.Map;
32
+ options: Layer.Config;
33
+ contourCache: Map<string, CachedGridData>;
34
+ externalGridDataProvider?: () => Promise<GridDataInput | null>;
35
+ constructor(map: Layer.Map, options: Layer.Config, externalGridDataProvider?: () => Promise<GridDataInput | null>);
36
+ getClassName(): string;
37
+ getRuntimeConfig(): Layer.Config["config"] & Record<string, any>;
38
+ add(): Promise<ImageLayer<ImageCanvasSource>>;
39
+ getCacheKey(): string;
40
+ getOrLoadGridData(): Promise<CachedGridData | null>;
41
+ getSourceFromCache(): Promise<ImageCanvasSource>;
42
+ getSourceFromParams(): Promise<ImageCanvasSource>;
43
+ getTextDrawOptions(): {
44
+ pixelStep: number;
45
+ fontSize: number;
46
+ decimals: number;
47
+ fontColor: string;
48
+ strokeColor: string;
49
+ strokeWidth: number;
50
+ fontFamily: string;
51
+ useDevicePixelRatio: boolean;
52
+ };
53
+ isValueInScope(value: number, scope?: [number, number] | []): boolean;
54
+ interpolateValue(rawArr2D: (number | undefined)[][], width: number, height: number, dataX: number, dataY: number): number;
55
+ getValueTransformFn(): GridValueTransformFn | undefined;
56
+ applyValueTransformValue(value: number, context: GridValueTransformContext): number;
57
+ createGridCanvasSource(data: CachedGridData): ImageCanvasSource;
58
+ delete(): void;
59
+ toggleVisible(visible: boolean): void;
60
+ updateParams(newOptions: Layer.Config): Promise<void>;
61
+ }
62
+ export {};
@@ -0,0 +1,16 @@
1
+ /// <reference path="../../../../typings/layer.d.ts" />
2
+ export * from "./common";
3
+ export * from "./layer";
4
+ export * from "./utils";
5
+ export * from "./fcstLayer";
6
+ export * from "./girdLayer";
7
+ export * from "./arrowLayer";
8
+ export * from "./micLayer";
9
+ export * from "./createMic";
10
+ export * from "./createIsoline";
11
+ export * from "./isolineLayer";
12
+ export * from "./webgpuRaster";
13
+ export * from "./windLayer";
14
+ export * from "./windShaft";
15
+ export * from "./wmsLayer";
16
+ export * from "./typhoonLayer";
@@ -0,0 +1,18 @@
1
+ import type Map from "ol/Map";
2
+ import { type IsolineOptions } from "./createIsoline";
3
+ type ManagedIsolineOptions = Omit<IsolineOptions, "url"> & {
4
+ url?: string;
5
+ type: string | string[];
6
+ };
7
+ export declare class IsolineLayer {
8
+ map: Map;
9
+ options: ManagedIsolineOptions;
10
+ ready: Promise<void>;
11
+ private abortController;
12
+ constructor(map: Map, options: ManagedIsolineOptions);
13
+ private render;
14
+ delete(): void;
15
+ toggleVisible(visible: boolean): void;
16
+ updateParams(newOptions: ManagedIsolineOptions): Promise<void>;
17
+ }
18
+ export {};
@@ -0,0 +1,39 @@
1
+ import { Map } from "ol";
2
+ type WmsLayerColorOptions = {
3
+ styles?: string;
4
+ colorScaleRange?: string | [number, number];
5
+ numColorBands?: string | number;
6
+ aboveMaxColor?: string;
7
+ belowMinColor?: string;
8
+ bgColor?: string;
9
+ logScale?: boolean | string;
10
+ };
11
+ type MapInitConfig = {
12
+ center?: [number, number];
13
+ zoom?: number;
14
+ layers?: any[];
15
+ };
16
+ export declare function initMap(target: string | HTMLElement, config?: MapInitConfig): Promise<Map>;
17
+ /**
18
+ * 根据classname获取对应图层
19
+ * @param className 图层的className
20
+ */
21
+ export declare function getLayerByClassName(map: Map, className: string): import("ol/layer/Base").default;
22
+ /**
23
+ * 移除图层
24
+ * @param className 图层的className
25
+ */
26
+ export declare function removeLayer(map: Map, className: string): void;
27
+ export declare function addTile(map: Map, layer: any): void;
28
+ export declare function removeTile(map: Map, layerId: string): void;
29
+ export declare function toggleLayerShowHide(map: Map | undefined, layerId: string, visible: boolean): void;
30
+ export declare function loadLayer(map: Map | undefined, options: Layer.Config): void;
31
+ export declare function removeLayerById(layerId: string): void;
32
+ export declare function clearAllLayers(): void;
33
+ export declare function toggleVisibleById(layerId: string, visible: boolean): void;
34
+ export declare function updateLayer(options: Layer.Config): void;
35
+ export declare function updateWmsLayerColor(layerId: string, colorOptions: WmsLayerColorOptions): void;
36
+ export declare function getLoadedLayers(): any[];
37
+ export declare function getLoadedLayerOptions(): Layer.Config[];
38
+ export declare function getValueByLonLat(map: Map | undefined, layerId: string, lon: number, lat: number, useSmooth?: boolean): Promise<number | null>;
39
+ export {};
@@ -0,0 +1,28 @@
1
+ type MicOptions = Layer.Config & Record<string, any>;
2
+ export declare class MicLayer {
3
+ map: Layer.Map;
4
+ options: MicOptions;
5
+ ready: Promise<any>;
6
+ private sourceRequestVersion;
7
+ private abortController;
8
+ constructor(map: Layer.Map, options: MicOptions);
9
+ private beginSourceRequest;
10
+ getMicContourOptions(filePath: string): {
11
+ className: string;
12
+ filePath: string;
13
+ authorization: string;
14
+ legend: any;
15
+ legendScope: any;
16
+ zIndex: number;
17
+ opacity: number;
18
+ showText: any;
19
+ showFillcolor: any;
20
+ showIsoline: any;
21
+ showPointMarkers: any;
22
+ };
23
+ add(): Promise<void>;
24
+ delete(): void;
25
+ toggleVisible(visible: boolean): void;
26
+ updateParams(newOptions: Layer.Config & Record<string, any>): Promise<void>;
27
+ }
28
+ export {};
@@ -0,0 +1,54 @@
1
+ import type { FeatureLike } from "ol/Feature";
2
+ import VectorSource from "ol/source/Vector";
3
+ import { Style } from "ol/style";
4
+ import { type TyphoonDetail, type TyphoonListItem, type TyphoonPoint } from "@/request/typhoon";
5
+ type TrackKind = "obs" | "fcst";
6
+ type TyphoonLayerOptions = Layer.Config & {
7
+ config: Layer.Config["config"] & {
8
+ typhoonConfig?: {
9
+ dataPath?: string;
10
+ typhoonNums?: string[];
11
+ sourcePriority?: string[];
12
+ showForecast?: boolean;
13
+ fitToExtent?: boolean;
14
+ };
15
+ };
16
+ };
17
+ export declare class TyphoonLayer {
18
+ map: Layer.Map;
19
+ options: TyphoonLayerOptions;
20
+ abortController: AbortController | null;
21
+ styleCache: globalThis.Map<string, Style>;
22
+ constructor(map: Layer.Map, options: TyphoonLayerOptions);
23
+ getClassName(): string;
24
+ getConfig(): {
25
+ dataPath?: string;
26
+ typhoonNums?: string[];
27
+ sourcePriority?: string[];
28
+ showForecast?: boolean;
29
+ fitToExtent?: boolean;
30
+ } & {
31
+ dataPath?: string;
32
+ typhoonNums?: string[];
33
+ sourcePriority?: string[];
34
+ showForecast?: boolean;
35
+ fitToExtent?: boolean;
36
+ };
37
+ add(): Promise<void>;
38
+ getSelectedTyphoonNums(list: TyphoonListItem[]): string[];
39
+ getPrimarySource(detail: TyphoonDetail, kind: TrackKind): string;
40
+ getLastPoint(points: TyphoonPoint[]): TyphoonPoint;
41
+ findForecastBasePoint(obsPoints: TyphoonPoint[], forecastPoint: TyphoonPoint | undefined): TyphoonPoint;
42
+ getForecastAnchorPoint(detail: TyphoonDetail, sourceName: string, forecastPoints: TyphoonPoint[], primaryObsSource: string | undefined): TyphoonPoint;
43
+ render(list: TyphoonListItem[], details: TyphoonDetail[]): void;
44
+ appendTyphoonFeatures(source: VectorSource, detail: TyphoonDetail, meta: TyphoonListItem | undefined, color: string): void;
45
+ addLineFeature(source: VectorSource, points: TyphoonPoint[], properties: Record<string, unknown>): void;
46
+ addPointFeatures(source: VectorSource, points: TyphoonPoint[], properties: Record<string, unknown>): void;
47
+ addForecastLabelFeature(source: VectorSource, point: TyphoonPoint, properties: Record<string, unknown>): void;
48
+ createStyle(feature: FeatureLike): Style;
49
+ getGradeColor(grade: string, fallback: string): string;
50
+ delete(): void;
51
+ toggleVisible(visible: boolean): void;
52
+ updateParams(newOptions: TyphoonLayerOptions): void;
53
+ }
54
+ export {};
@@ -0,0 +1,95 @@
1
+ import { Dayjs } from "dayjs";
2
+ export declare function resolveSymFunction<T extends (...args: any[]) => any>(candidate: unknown): T | undefined;
3
+ /** bbox经纬度转3857 */
4
+ export declare function bboxFromLonlatTo3857(bbox: [number, number, number, number]): [number, number, number, number];
5
+ /** 线性插值 */
6
+ export declare function lerp(a: number, b: number, t: number): number;
7
+ /**
8
+ * 对二维数组进行高斯模糊
9
+ * @param data 输入二维数组
10
+ * @param width 宽度
11
+ * @param height 高度
12
+ * @param kernelSize 卷积核大小,默认5
13
+ * @param sigma 标准差,默认1.2
14
+ * @returns 模糊后的二维数组
15
+ */
16
+ export declare function gaussianBlur2D(data: (number | undefined)[][], width: number, height: number, kernelSize?: number, sigma?: number): (number | undefined)[][];
17
+ export declare function normalizeSmoothnessLevel(value: unknown, defaultValue?: number, maxValue?: number): number;
18
+ export declare function smoothGridByLevel(data: (number | undefined)[][], width: number, height: number, value: unknown): number[][];
19
+ /**
20
+ * 像素坐标转EPSG:3857坐标
21
+ * @param x 像素x
22
+ * @param y 像素y
23
+ * @param width 图像宽度
24
+ * @param height 图像高度
25
+ * @param extent 地图范围[minX, minY, maxX, maxY],EPSG:3857
26
+ * @returns [coordX, coordY] EPSG:3857坐标
27
+ */
28
+ export declare function pixelTo3857(x: number, y: number, width: number, height: number, extent: [number, number, number, number]): [number, number];
29
+ export declare function pixelToLngLat(x: number, y: number, width: number, height: number, bbox: [number, number, number, number]): [number, number];
30
+ export declare function convertContourGeoJSONToLngLat(contourGeoJSON: any[], width: number, height: number, bbox: [number, number, number, number]): any[];
31
+ /**
32
+ * 将等值线GeoJSON中的像素坐标转换为EPSG:3857坐标
33
+ * @param contourGeoJSON 生成的等值线GeoJSON对象数组
34
+ * @param width 图像宽度
35
+ * @param height 图像高度
36
+ * @param extent 地图范围[minX, minY, maxX, maxY],EPSG:3857
37
+ * @returns 坐标已转换的等值线GeoJSON对象数组
38
+ */
39
+ export declare function convertContourGeoJSONTo3857(contourGeoJSON: any[], width: number, height: number, extent: [number, number, number, number]): any[];
40
+ export declare function bilinearInterpolate(arr: Float32Array, x: number, y: number, width: number, height: number): number;
41
+ /**
42
+ * 从图片获取灰度数据,并返回归一化的灰度数组
43
+ * @param src 图片路径
44
+ * @param scope 灰度值对应的实际数据范围 [min, max]
45
+ * @param scopeBoundaries 范围边界,超过最大最小值是否忽略,true: 忽略-取undefined,false: 不忽略-取最大最小值
46
+ * @param authorization 请求头 Authorization
47
+ * @param options 额外选项,detectNoDataByBorderColor 控制是否启用边界背景色无值识别
48
+ * @returns Promise<number[] | undefined[]> 灰度数组,透明像素为undefined
49
+ */
50
+ export declare function getGrayDataFromImage(src: string, scope: [number, number], scopeBoundaries?: [boolean, boolean], authorization?: string, options?: {
51
+ detectNoDataByBorderColor?: boolean;
52
+ }): Promise<{
53
+ grayArr: (number | undefined)[];
54
+ width: number;
55
+ height: number;
56
+ }>;
57
+ export declare function parseCssNumber(s: string): number;
58
+ export declare function parseAlpha(s: string): number;
59
+ export declare function clampByte(v: number): number;
60
+ /**
61
+ * 解析 css 颜色字符串(#rrggbb/#rgb 或 rgb()/rgba())到 [r,g,b,a(0..255)]
62
+ */
63
+ export declare function parseColorToRGBA(col: string): [number, number, number, number];
64
+ export declare function getLegendItemsByScope(legend: Layer.Legend, legendScope?: [number, number] | []): Layer.Legend;
65
+ export declare function getLegendValueScope(legend: Layer.Legend, legendScope?: [number, number] | []): [number, number] | undefined;
66
+ export declare function generateLegend(legend: Layer.Legend, legendScope?: [number, number] | []): {
67
+ uniqueThresholds: number[];
68
+ colorMap: Record<number, string>;
69
+ };
70
+ type ContourParamsResult = {
71
+ width: number;
72
+ height: number;
73
+ extent: [number, number, number, number];
74
+ rawArr2D: (number | undefined)[][];
75
+ smoothArr2D: (number | undefined)[][];
76
+ uniqueThresholds: number[];
77
+ colorMap: {
78
+ [key: number]: string;
79
+ };
80
+ } | undefined;
81
+ /** 根据灰度图获取对应数据 */
82
+ export declare function getContourParams(options: Layer.Config): Promise<ContourParamsResult>;
83
+ /** 根据bbox比例自适应宽高 */
84
+ export declare function getWidthAndHeight(extent: [number, number, number, number], maxWidth: number, maxHeight: number): {
85
+ width: number;
86
+ height: number;
87
+ };
88
+ export declare function getUrlFromTime(el: any, time: string | Dayjs): string | string[];
89
+ /**
90
+ * 把单个数值映射为 rgba 数组(0..255)
91
+ * thresholds: 排序后的阈值数组
92
+ * colorsRGBA: 与 thresholds 对应的 rgba 数组(每项为 [r,g,b,a])
93
+ */
94
+ export declare function mapValueToRGBA(val: number, thresholds: number[], colorsRGBA: [number, number, number, number][], colorMode: Layer.LayerMode): [number, number, number, number];
95
+ export {};
@@ -0,0 +1,13 @@
1
+ type RasterColorizeOptions = {
2
+ width: number;
3
+ height: number;
4
+ rawArr2D: (number | undefined)[][];
5
+ smoothArr2D: (number | undefined)[][];
6
+ thresholds: number[];
7
+ colorsRGBA: [number, number, number, number][];
8
+ colorMode: Layer.LayerMode;
9
+ scope?: [number, number] | [];
10
+ softenMaskEdge?: boolean;
11
+ };
12
+ export declare function renderFcstCanvasByWebGPU(options: RasterColorizeOptions): Promise<HTMLCanvasElement>;
13
+ export {};
@@ -0,0 +1,23 @@
1
+ import { FcstLayer } from "./fcstLayer";
2
+ type ExtentLike = [number, number, number, number];
3
+ export type WindVectorData = {
4
+ width: number;
5
+ height: number;
6
+ u: Float32Array;
7
+ v: Float32Array;
8
+ extent: ExtentLike;
9
+ };
10
+ export declare class WindLayer extends FcstLayer {
11
+ private windVectorCache;
12
+ private windVectorLoadingTasks;
13
+ private normalizeUrls;
14
+ private parseScopeValue;
15
+ private getComponentScope;
16
+ private buildWindSpeedGrid;
17
+ private prepareGrid;
18
+ private getWindVectorCacheKey;
19
+ getOrLoadWindVectorData(options?: any): Promise<WindVectorData | null>;
20
+ getOrLoadContourData(options?: any): Promise<any>;
21
+ getSourceFromParams(options?: any): Promise<import("ol/source").ImageCanvas>;
22
+ }
23
+ export {};