se3dx-sdk 1.0.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 ADDED
@@ -0,0 +1,88 @@
1
+ ### 🚀 项目启动 (Project Startup)
2
+
3
+ 1. **安装依赖**
4
+ ```bash
5
+ npm install
6
+ # 或者
7
+ pnpm install
8
+ ```
9
+
10
+ 2. **启动演示项目 (Playground)**
11
+ ```bash
12
+ npm run play
13
+ ```
14
+ 访问: `http://localhost:5173` (具体端口视终端输出而定)
15
+
16
+ 3. **构建 SDK**
17
+ ```bash
18
+ npm run build
19
+ ```
20
+
21
+ ### 🗺️ se3d-sdk 功能封装清单
22
+
23
+ | 主模块 | 子模块 | 核心功能点(封装建议) |
24
+ | :--- | :--- | :--- |
25
+ | **1. 快速开始** | 场景创建 | 提供简洁的API创建三维场景(支持配置文件/json/原生Cesium方式) |
26
+ | | UI控件样板 | 封装常用UI控件(如缩放、底图切换)的快速引入与布局示例 |
27
+ | **2. 三维场景** | **场景配置** | 支持通过参数配置`scene`、`terrain`、`basemaps`、`layers`、`control`、`effect`、`thing`等 |
28
+ | | **场景控制** | 封装图层叠加/管理、地图事件、坐标系(chinaCRS)、多语言、场景销毁等基础控制 |
29
+ | | **背景控制** | 封装场景出图、自定义天空盒/背景图、DIV遮罩、反选遮罩等 (✅ 已实现) |
30
+ | | **相机视角** | 封装视角书签、视点飞行、环绕旋转、第一人称漫游、键盘漫游、视角限制、时序任务等 (✅ 已实现) |
31
+ | | **鼠标交互** | 封装坐标拾取、鼠标习惯切换、街景操作习惯等 (✅ 已实现) |
32
+ | | **视图对比** | 封装二三维切换、双屏对比、与Leaflet/OpenLayers联动等 (✅ 已实现) |
33
+ | **3. 三维地形** | 地形图层 | 封装标准地形服务加载(如天地图地形) |
34
+ | | **地形分析** | 封装地形开挖/压平/抬升、等高线、坡度坡向、淹没分析、地下模式等 (✅ 已实现) |
35
+ | **4. 瓦片底图** | **在线地图** | 统一封装国内外主流图商(天地图、高德、谷歌、Mapbox等)的加载接口 (✅ 已实现)<br>**坐标系支持**:明确支持EPSG:3857, 4326, 4490,并在底层处理坐标转换 (✅ 已实现) |
36
+ | | **标准服务** | 封装TMS、WMS、WMTS、ArcGIS服务、谷歌地球企业版等标准瓦片服务 (✅ 已实现) |
37
+ | | **本地数据** | 封装单张/局部图片、TIF文件、极坐标图等本地影像加载 (✅ 已实现) |
38
+ | | **图层控制** | 封装瓦片透明度/滤镜/事件、动态时序图、瓦片贴模型等高级控制 (✅ 已实现) |
39
+ | **5. 矢量图层** | **基础图层** | 封装Graphic、业务数据、DIV、glTF小模型、3DTiles、I3S、S3M等数据图层 |
40
+ | | **GeoJson图层** | 封装GeoJson加载及光晕线、建筑物立体面、渐变行政区、立体户型图等扩展样式 |
41
+ | | **本地文件** | 封装Excel/CSV、SHP、KML/KMZ、WKT等常见矢量文件格式的加载器 |
42
+ | | **WFS服务** | 封装与GeoServer、ArcGIS Server等标准WFS服务的交互 |
43
+ | | **服务查询** | 封装针对ArcGIS/GeoServer/iServer的矢量要素查询、POI查询、路径规划等 |
44
+ | **6. 3DTiles模型** | **模型类型** | 支持倾斜摄影、BIM、人工建模、点云、城市白模、3DGS等主流3DTiles类型 |
45
+ | | **单体化** | 封装模型内单体化、矢量叠加单体化、分层分户单体化及其编辑功能 |
46
+ | | **样式效果** | 封装建筑物样式切换、BIM分层/进度展示、自定义着色器(customShader)等 |
47
+ | | **模型分析** | 封装模型剖切、裁剪、压平、淹没模拟、限高分析、热力图等分析功能 |
48
+ | **7. 矢量对象** | **统一机制** | 建立统一的数据格式(坐标/样式/属性)、绘制编辑、对象聚合机制 |
49
+ | | **核心对象** | 封装点(含Primitive批量)、线、面、体(盒/球/圆锥)、模型(glTF)、文本、图标等 |
50
+ | | **高级对象** | 封装漫游路线、军标、动态水域、粒子特效、视频投射、雷达扫描、卫星推演等 (✅ 已实现) |
51
+ | | **专题应用** | 提供台风、智慧社区、数字城市、红蓝对抗等典型场景的组合示例 |
52
+ | | **空间计算** (新增) | 封装点/线/面的生成、最近点分析、求交、切割、等值面、网格生成等计算工具 |
53
+ | **8. 控件** | **信息窗** | 封装Popup、Tooltip、右键菜单等 |
54
+ | | **按钮/面板** | 封装视角复位、底图切换、全屏、比例尺、鹰眼图、导航球、时钟轴、时间线等 |
55
+ | | **控件管理** | 提供统一API来控制所有UI控件的显示/隐藏 |
56
+ | **9. 环境特效** | **天气特效** | 封装雨、雪、雾、云、闪电等天气效果 |
57
+ | | **后期特效** | 封装泛光、颜色校正、景深、夜视、黑白等屏幕后期处理效果 |
58
+ | **10. 分析工具** | **基础量算** | 封装距离、面积、高度、角度的实时测量工具 |
59
+ | | **高级分析** | 封装剖面、方量、通视、可视域、缓冲区、最短路径(基于地形)等分析 |
60
+ | **11. 其他图层** | **热力图** | 封装贴地/高度/动态/立体曲面热力图及色斑图(kriging插值) |
61
+ | | **气象数据** | 封装风向图、经纬向剖面、雷达图、等值体、格点动画等气象专用图层 |
62
+ | | **矢量瓦片** | 封装PBF、ArcGIS矢量瓦片,及用矢量瓦片方式加载GeoJson/SHP |
63
+ | | **态势图** | 封装动态点/线/面、蜂巢图、迁徙图等态势可视化图层 |
64
+ | | **特殊星球** | 封装月球、火星等离线或在线数据的快速加载 |
65
+
66
+ ### 💡 封装实现的注意事项与建议
67
+
68
+ 1. **命名规范与一致性**:
69
+ * **核心类**:建议遵循 `Se3d[模块][功能]` 的命名方式,如 `Se3dMap`、`Se3dTerrainAnalysis`。
70
+ * **API设计**:保持与Cesium原生的相似性以降低学习成本,但通过封装简化复杂性。例如,`viewer.scene.open('url')` 可封装为 `se3dMap.openBasemap('tdt')`。
71
+ * **配置项**:所有模块应支持统一的“参数对象”方式进行初始化,并与Mars3D的 `options` 风格看齐。
72
+
73
+ 2. **接口分层设计**:
74
+ * **底层(Core)**:直接封装Cesium原生API,提供基础的类和管理器(如`LayerManager`, `ControlManager`)。
75
+ * **上层(Widgets / Plugins)**:基于底层构建面向业务的组件。例如,`DrawPlugin` 调用 `GraphicLayer` 实现绘制功能。
76
+
77
+ 3. **性能优化内置**:
78
+ * **批量渲染**:对于大量点、线、面(如截图中的“大量盒子(合并渲染Primitive)”),SDK内部应自动判断并使用`Primitive` API进行合并渲染,对用户透明。
79
+ * **数据懒加载**:对于矢量瓦片、3DTiles等,遵循其原有的LOD机制,并提供简洁的配置接口。
80
+ * **内存管理**:封装`destroy`方法,确保图层、对象销毁时彻底释放Cesium资源,避免内存泄漏。
81
+
82
+ 4. **扩展性设计**:
83
+ * **插件机制**:允许用户通过SDK注册自定义的图层类型、分析算法或UI控件。例如,`Se3dPlotting.registerSymbol('myArrow', myArrowFunction)`。
84
+ * **事件机制**:建立统一的事件总线(如`se3dMap.on('layer-added', callback)`),方便用户监听SDK内部状态变化。
85
+
86
+ 5. **文档与示例**:
87
+ * **代码即文档**:使用JSDoc等工具,为每个公开的API生成详细注释,并能在IDE中智能提示。
88
+ * **示例驱动**:为清单中的每一个核心功能点,提供一个最小可运行的HTML示例,并直接放在SDK的 `examples` 目录下,方便验证和测试。
@@ -0,0 +1,4 @@
1
+ <svg width="64" height="64" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg">
2
+ <circle cx="32" cy="32" r="30" fill="#409EFF" />
3
+ <text x="32" y="38" font-family="Arial" font-size="24" fill="white" text-anchor="middle">S</text>
4
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg width="64" height="64" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg">
2
+ <circle cx="32" cy="32" r="30" fill="#409EFF" />
3
+ <text x="32" y="38" font-family="Arial" font-size="24" fill="white" text-anchor="middle">S</text>
4
+ </svg>
package/package.json ADDED
@@ -0,0 +1,53 @@
1
+ {
2
+ "name": "se3dx-sdk",
3
+ "version": "1.0.0",
4
+ "description": "A lightweight CesiumJS wrapper for Vue 3 with built-in tools and localization support.",
5
+ "main": "se3d-sdk.umd.js",
6
+ "module": "se3d-sdk.es.js",
7
+ "types": "se3d-sdk.es.d.ts",
8
+ "style": "style.css",
9
+ "sideEffects": [
10
+ "style.css"
11
+ ],
12
+ "exports": {
13
+ ".": {
14
+ "types": "./se3d-sdk.es.d.ts",
15
+ "import": "./se3d-sdk.es.js",
16
+ "require": "./se3d-sdk.umd.js"
17
+ },
18
+ "./style.css": "./style.css",
19
+ "./assets/*": "./assets/*",
20
+ "./cesium/*": "./cesium/*"
21
+ },
22
+ "files": [
23
+ "se3d-sdk.umd.js",
24
+ "se3d-sdk.es.js",
25
+ "se3d-sdk.es.d.ts",
26
+ "style.css",
27
+ "assets/**",
28
+ "cesium/**",
29
+ "README.md",
30
+ "LICENSE"
31
+ ],
32
+ "scripts": {
33
+ "test": "echo \"Error: no test specified\" && exit 1"
34
+ },
35
+ "keywords": [
36
+ "cesium",
37
+ "vue3",
38
+ "gis",
39
+ "earth",
40
+ "sdk"
41
+ ],
42
+ "author": "Se3d",
43
+ "license": "Apache-2.0",
44
+ "peerDependencies": {
45
+ "vue": "^3.4.0",
46
+ "mitt": "^3.0.0",
47
+ "element-plus": "^2.0.0",
48
+ "@element-plus/icons-vue": "^2.0.0"
49
+ },
50
+ "dependencies": {
51
+ "cesium": "1.136.0"
52
+ }
53
+ }