cesium-mars-op-cog 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/README.md +42 -0
- package/dist/adapters/openlayers.d.ts +31 -0
- package/dist/assets/cogTile.worker-BmAOLWmU.js +9703 -0
- package/dist/assets/cogTile.worker-BmAOLWmU.js.map +1 -0
- package/dist/cog.d.ts +58 -0
- package/dist/core/provider.d.ts +56 -0
- package/dist/core/types.d.ts +50 -0
- package/dist/favicon.ico +0 -0
- package/dist/hooks/useCogManager.d.ts +34 -0
- package/dist/hooks/useCogTif.d.ts +24 -0
- package/dist/index.d.ts +29 -0
- package/dist/index.js +582 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/cache.d.ts +14 -0
- package/dist/utils/crs.d.ts +5 -0
- package/dist/utils/geo.d.ts +14 -0
- package/dist/workers/cogTile.worker.d.ts +1 -0
- package/dist/workers/workerPool.d.ts +21 -0
- package/package.json +64 -0
package/dist/cog.d.ts
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @cog/cesium 公共 API 入口
|
|
3
|
+
*
|
|
4
|
+
* 提供简洁的工厂函数,返回 Cesium/Mars3D 可用的图层对象。
|
|
5
|
+
*
|
|
6
|
+
* 用法:
|
|
7
|
+
* // Cesium
|
|
8
|
+
* import { createCogProvider } from '@cog/cesium'
|
|
9
|
+
* const provider = await createCogProvider('http://.../image.tif')
|
|
10
|
+
* const layer = viewer.imageryLayers.addImageryProvider(provider)
|
|
11
|
+
* layer.alpha = 0.5
|
|
12
|
+
*
|
|
13
|
+
* // Mars3D (Mars3D = Cesium,用法完全一致)
|
|
14
|
+
* const provider = await createCogProvider('http://.../image.tif')
|
|
15
|
+
* const layer = map.imageryLayers.addImageryProvider(provider)
|
|
16
|
+
*
|
|
17
|
+
* // 或一步到位
|
|
18
|
+
* import { addCogLayerToMap } from '@cog/cesium'
|
|
19
|
+
* const layer = await addCogLayerToMap(map, 'http://.../image.tif')
|
|
20
|
+
* layer.alpha = 0.5
|
|
21
|
+
*/
|
|
22
|
+
import { CogImageryProvider } from './core/provider';
|
|
23
|
+
import type { CogProviderOptions } from './core/provider';
|
|
24
|
+
/** addCogLayerToMap 额外选项 */
|
|
25
|
+
export interface AddLayerOptions extends CogProviderOptions {
|
|
26
|
+
/** 透明度(默认 1.0) */
|
|
27
|
+
alpha?: number;
|
|
28
|
+
/** 是否飞向图层(默认 true) */
|
|
29
|
+
flyTo?: boolean;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* 创建并初始化一个 COG ImageryProvider
|
|
33
|
+
*
|
|
34
|
+
* @param url COG 文件地址
|
|
35
|
+
* @param options 配置选项
|
|
36
|
+
* @returns 已初始化的 CogImageryProvider,可直接传入 viewer.imageryLayers.addImageryProvider()
|
|
37
|
+
*/
|
|
38
|
+
export declare function createCogProvider(url: string, options?: CogProviderOptions): Promise<CogImageryProvider>;
|
|
39
|
+
/**
|
|
40
|
+
* 将 COG 影像直接添加到 Cesium/Mars3D 地图
|
|
41
|
+
*
|
|
42
|
+
* @param map Cesium.Viewer 或 Mars3D 地图实例(需有 imageryLayers.addImageryProvider)
|
|
43
|
+
* @param url COG 文件地址
|
|
44
|
+
* @param options 配置选项
|
|
45
|
+
* @returns 影像图层对象,可通过原生 API 操控(alpha、show、remove 等)
|
|
46
|
+
*/
|
|
47
|
+
export declare function addCogLayerToMap(map: {
|
|
48
|
+
imageryLayers: {
|
|
49
|
+
addImageryProvider: (provider: any) => any;
|
|
50
|
+
remove: (layer: any, destroy: boolean) => void;
|
|
51
|
+
};
|
|
52
|
+
camera?: {
|
|
53
|
+
flyTo: (opts: any) => void;
|
|
54
|
+
};
|
|
55
|
+
scene?: {
|
|
56
|
+
requestRender: () => void;
|
|
57
|
+
};
|
|
58
|
+
}, url: string, options?: AddLayerOptions): Promise<any>;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CogImageryProvider — Cesium/Mars3D 可用的 COG 影像提供者
|
|
3
|
+
*
|
|
4
|
+
* 实现 Cesium.ImageryProvider 接口,可直接传入 viewer.imageryLayers.addImageryProvider()。
|
|
5
|
+
* Mars3D 基于 Cesium,同样适用。
|
|
6
|
+
*
|
|
7
|
+
* 用法:
|
|
8
|
+
* const provider = new CogImageryProvider(url)
|
|
9
|
+
* await provider.init()
|
|
10
|
+
* const layer = viewer.imageryLayers.addImageryProvider(provider)
|
|
11
|
+
* layer.alpha = 0.5 // 原生 API 操控
|
|
12
|
+
*/
|
|
13
|
+
import { Rectangle, GeographicTilingScheme } from 'cesium';
|
|
14
|
+
export interface CogProviderOptions {
|
|
15
|
+
/** Worker 池大小,默认 max(2, min(6, CPU 核心数/2)) */
|
|
16
|
+
poolSize?: number;
|
|
17
|
+
/** 每个 Worker 最大并发任务数(默认 8) */
|
|
18
|
+
maxLoadPerWorker?: number;
|
|
19
|
+
/** 初始化超时毫秒(默认 30000) */
|
|
20
|
+
timeout?: number;
|
|
21
|
+
/** 瓦片缓存数量(默认 512) */
|
|
22
|
+
tileCacheSize?: number;
|
|
23
|
+
/** 影像透明度 0-1(默认 1.0,在 Worker 中与像素混合) */
|
|
24
|
+
alpha?: number;
|
|
25
|
+
}
|
|
26
|
+
export declare class CogImageryProvider {
|
|
27
|
+
readonly tileWidth = 256;
|
|
28
|
+
readonly tileHeight = 256;
|
|
29
|
+
readonly tilingScheme: GeographicTilingScheme;
|
|
30
|
+
readonly hasAlphaChannel = true;
|
|
31
|
+
readonly ready = true;
|
|
32
|
+
maximumLevel: number;
|
|
33
|
+
minimumLevel: number;
|
|
34
|
+
rectangle: ReturnType<typeof Rectangle.fromDegrees>;
|
|
35
|
+
_errorEvent: any;
|
|
36
|
+
get errorEvent(): any;
|
|
37
|
+
/** 影像的度坐标 bbox [west, south, east, north],用于 flyTo 等场景 */
|
|
38
|
+
get bboxDegrees(): readonly [number, number, number, number];
|
|
39
|
+
private _url;
|
|
40
|
+
private _options;
|
|
41
|
+
private _workerPool;
|
|
42
|
+
private _tileCache;
|
|
43
|
+
private _inflightRequests;
|
|
44
|
+
private _emptyTile;
|
|
45
|
+
private _destroyed;
|
|
46
|
+
private _bbox;
|
|
47
|
+
private _initialized;
|
|
48
|
+
constructor(url: string, options?: CogProviderOptions);
|
|
49
|
+
init(): Promise<void>;
|
|
50
|
+
/** 将 COG 原始 bbox 转换为度坐标 */
|
|
51
|
+
private _normalizeBbox;
|
|
52
|
+
isDestroyed(): boolean;
|
|
53
|
+
requestImage(x: number, y: number, level: number): Promise<HTMLCanvasElement | undefined>;
|
|
54
|
+
private _fetchTile;
|
|
55
|
+
destroy(): void;
|
|
56
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/** COG 图层初始化结果 */
|
|
2
|
+
export interface CogInitResult {
|
|
3
|
+
/** 地理边界框 [west, south, east, north](度坐标) */
|
|
4
|
+
bbox: [number, number, number, number];
|
|
5
|
+
/** CRS 类型:'4326' | '3857' | EPSG 代码字符串 */
|
|
6
|
+
crsType: string;
|
|
7
|
+
/** 最大瓦片级别 */
|
|
8
|
+
maxLevel: number;
|
|
9
|
+
/** 最小瓦片级别 */
|
|
10
|
+
minLevel: number;
|
|
11
|
+
}
|
|
12
|
+
/** 瓦片请求结果 */
|
|
13
|
+
export interface TileResult {
|
|
14
|
+
/** 瓦片是否为空(无交集) */
|
|
15
|
+
empty: boolean;
|
|
16
|
+
/** 渲染好的 ImageBitmap(empty=true 时无值) */
|
|
17
|
+
bitmap?: ImageBitmap;
|
|
18
|
+
}
|
|
19
|
+
/** 瓦片矩形(度坐标) */
|
|
20
|
+
export interface TileRect {
|
|
21
|
+
west: number;
|
|
22
|
+
south: number;
|
|
23
|
+
east: number;
|
|
24
|
+
north: number;
|
|
25
|
+
}
|
|
26
|
+
/** CogTileLayer 配置选项 */
|
|
27
|
+
export interface CogLayerOptions {
|
|
28
|
+
/** 透明度 0-1(默认 1) */
|
|
29
|
+
alpha?: number;
|
|
30
|
+
/** Worker 池大小(默认 CPU 核心数/2) */
|
|
31
|
+
poolSize?: number;
|
|
32
|
+
/** 每个 Worker 最大并发任务数(默认 2) */
|
|
33
|
+
maxLoadPerWorker?: number;
|
|
34
|
+
/** 初始化超时毫秒(默认 30000) */
|
|
35
|
+
timeout?: number;
|
|
36
|
+
}
|
|
37
|
+
/** 框架适配器接口 - 所有适配器实现此接口 */
|
|
38
|
+
export interface CogTileAdapter {
|
|
39
|
+
/** 获取图层边界框 [w, s, e, n] */
|
|
40
|
+
getBounds(): [number, number, number, number];
|
|
41
|
+
/** 获取瓦片级别范围 */
|
|
42
|
+
getLevelRange(): {
|
|
43
|
+
min: number;
|
|
44
|
+
max: number;
|
|
45
|
+
};
|
|
46
|
+
/** 请求瓦片数据 */
|
|
47
|
+
fetchTile(x: number, y: number, level: number): Promise<ImageBitmap | HTMLCanvasElement | null>;
|
|
48
|
+
/** 销毁释放资源 */
|
|
49
|
+
destroy(): void;
|
|
50
|
+
}
|
package/dist/favicon.ico
ADDED
|
Binary file
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
interface CogItem {
|
|
2
|
+
name: string;
|
|
3
|
+
url: string;
|
|
4
|
+
}
|
|
5
|
+
interface CogManagerOptions {
|
|
6
|
+
baseUrl?: string;
|
|
7
|
+
cogApiUrl?: string;
|
|
8
|
+
cogStaticBaseUrl?: string;
|
|
9
|
+
viewerOptions?: Record<string, any>;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* COG 图层管理器
|
|
13
|
+
*/
|
|
14
|
+
export declare function useCogManager(options?: CogManagerOptions): {
|
|
15
|
+
viewer: import("vue").ShallowRef<any, any>;
|
|
16
|
+
cogList: import("vue").Ref<{
|
|
17
|
+
name: string;
|
|
18
|
+
url: string;
|
|
19
|
+
}[], CogItem[] | {
|
|
20
|
+
name: string;
|
|
21
|
+
url: string;
|
|
22
|
+
}[]>;
|
|
23
|
+
selectedCog: import("vue").Ref<string, string>;
|
|
24
|
+
isLoading: import("vue").Ref<boolean, boolean>;
|
|
25
|
+
error: import("vue").Ref<string | null, string | null>;
|
|
26
|
+
initViewer: (containerId?: string) => Promise<void>;
|
|
27
|
+
fetchCogList: () => Promise<void>;
|
|
28
|
+
loadCOG: () => Promise<void>;
|
|
29
|
+
removeCOG: () => void;
|
|
30
|
+
flyTo: () => void;
|
|
31
|
+
switchCog: (url: string) => Promise<void>;
|
|
32
|
+
destroy: () => void;
|
|
33
|
+
};
|
|
34
|
+
export {};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { CogImageryProvider } from '../core/provider';
|
|
2
|
+
import type { CogProviderOptions } from '../core/provider';
|
|
3
|
+
interface CogLayerInfo {
|
|
4
|
+
imageryLayer: any;
|
|
5
|
+
layerId: string;
|
|
6
|
+
provider: CogImageryProvider;
|
|
7
|
+
bbox: [number, number, number, number];
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* [Vue Composable] COG 影像图层管理
|
|
11
|
+
*
|
|
12
|
+
* 基于 CogImageryProvider 的 Vue 封装,管理图层生命周期。
|
|
13
|
+
* 非 Vue 项目请直接使用 createCogProvider / addCogLayerToMap。
|
|
14
|
+
*/
|
|
15
|
+
export declare function useCogTif(getViewer: () => any): {
|
|
16
|
+
addCogLayer(id: string, url: string, options?: CogProviderOptions & {
|
|
17
|
+
alpha?: number;
|
|
18
|
+
flyTo?: boolean;
|
|
19
|
+
}): Promise<CogLayerInfo>;
|
|
20
|
+
removeCogLayer(id: string): void;
|
|
21
|
+
flyToCogLayer(id: string): void;
|
|
22
|
+
destroyCogTools(): void;
|
|
23
|
+
};
|
|
24
|
+
export {};
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @cog/cesium — COG (Cloud Optimized GeoTIFF) 影像加载库
|
|
3
|
+
*
|
|
4
|
+
* 在 CesiumJS / Mars3D / OpenLayers 中加载云端 GeoTIFF 影像。
|
|
5
|
+
* 支持 EPSG:4326 / 3857 / CGCS2000 等投影,ZSTD 压缩,多线程 Worker 解码。
|
|
6
|
+
*
|
|
7
|
+
* 用法:
|
|
8
|
+
* // === Cesium / Mars3D ===
|
|
9
|
+
* import { addCogLayerToMap } from '@cog/cesium'
|
|
10
|
+
* const layer = await addCogLayerToMap(viewer, 'http://.../image.tif')
|
|
11
|
+
* layer.alpha = 0.5 // 原生 API
|
|
12
|
+
*
|
|
13
|
+
* // === OpenLayers ===
|
|
14
|
+
* import { addCogLayerToOpenLayers } from '@cog/cesium'
|
|
15
|
+
* const layer = await addCogLayerToOpenLayers(olMap, 'http://.../image.tif')
|
|
16
|
+
* layer.setOpacity(0.5) // 原生 API
|
|
17
|
+
*/
|
|
18
|
+
export { CogImageryProvider } from './core/provider';
|
|
19
|
+
export type { CogProviderOptions } from './core/provider';
|
|
20
|
+
export { createCogProvider, addCogLayerToMap } from './cog';
|
|
21
|
+
export type { AddLayerOptions } from './cog';
|
|
22
|
+
export { addCogLayerToOpenLayers } from './adapters/openlayers';
|
|
23
|
+
export type { OpenLayersLayerOptions } from './adapters/openlayers';
|
|
24
|
+
export type { CogInitResult, CogLayerOptions, TileRect, TileResult } from './core/types';
|
|
25
|
+
export { LRUCache } from './utils/cache';
|
|
26
|
+
export { expandRectangle } from './utils/geo';
|
|
27
|
+
export type { BBox } from './utils/geo';
|
|
28
|
+
export { useCogTif } from './hooks/useCogTif';
|
|
29
|
+
export { useCogManager } from './hooks/useCogManager';
|