# earthsdk3-code **Repository Path**: cesiumlab/earthsdk3-code ## Basic Information - **Project Name**: earthsdk3-code - **Description**: earthsdk3是earthsdk2的底层重构,引擎模块化拆分,依赖重整,代码优化精简,多引擎快速扩展,自定义对象快速扩展; - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: https://earthsdk.com/earthui/index.html - **GVP Project**: No ## Statistics - **Stars**: 17 - **Forks**: 16 - **Created**: 2024-09-24 - **Last Updated**: 2026-05-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # EarthSDK 3

EarthSDK

立即体验快速上手示例中心API 文档EarthUI 开源地址

简体中文 | English

--- ## 简介 EarthSDK 是一套基于 **JavaScript/TypeScript** 的开源免费三维地球可视化二次开发框架。整套框架**独立于渲染引擎之外**,不依赖特定引擎,与可视化引擎互为插件。它不是简单的封装层,而是**赋能原生引擎**,实现了数字孪生项目所需的全部基础功能和效果,并支持**一套代码多引擎无缝切换**。 EarthSDK 最初于 2019 年发布,经历多次重大迭代: | 时间 | 版本 | 说明 | | ------------- | ---------- | ----------------------------------------- | | 2019 年 | EarthSDK 1 | 依赖 Cesium 引擎,提供大量易用性扩展 | | 2022 年 11 月 | EarthSDK 2 | 整合 Cesium 与 Unreal Engine 两种引擎实现 | | 2024 年 10 月 | EarthSDK 3 | 模块化拆分,支持灵活组合不同引擎模块 | ## 核心特性 ### 多引擎支持 EarthSDK 3 目前支持以下渲染引擎,多引擎秒切换,未来还将扩展更多: | 引擎 | 包名 | 说明 | | ----------------- | ------------------ | ------------------------------- | | **Cesium JS** | `earthsdk3-cesium` | 浏览器端 WebGL 地球可视化渲染 | | **Unreal Engine** | `earthsdk3-ue` | 本地/云端高质量渲染,支持像素流 | | **OpenLayers** | `earthsdk3-ol` | 二维地图可视化渲染 | | **H5 WebGL** | `earthsdk3-h5` | UE 在浏览器中以 WebGL 方式运行 | ### 丰富的场景对象 EarthSDK 3 内置 **100+ 种场景对象**,涵盖数字孪生各类应用场景: - **数据加载**: 3DTileset、glTF 模型、影像图层、地形图层、矢量数据等 - **地理矢量**: GeoJSON、多边形、线串、矩形、拉伸多边形、贝塞尔曲线等 - **分析工具**: 视域分析、日照分析、淹没分析、控高分析、天际线分析、体积测量等 - **测量工具**: 距离测量、面积测量、高度测量、方向测量、位置测量等 - **特效对象**: 动态水面、爆炸粒子、火焰粒子、高斯溅射等 - **可视化**: POI、文本标签、图片标签、热力图、聚合图层等 - **地形编辑**: 挖掘、裁剪平面、盒子裁剪等 ### 多样化部署方式 EarthSDK 3 支持根据项目需求灵活选择部署模式: | 部署方式 | 技术栈 | 适用场景 | | -------------- | --------------------------------- | ------------------------------ | | **WebGL 渲染** | EarthSDK JS + Cesium JS | 纯浏览器端渲染,零部署 | | **像素流渲染** | EarthSDK JS + UE + ESForUE + ESSS | 云渲染,高画质,支持大规模场景 | | **本地大屏** | EarthSDK JS + UE + ESWebView | 本地部署,低延迟,高画质 | | **H5 模式** | EarthSDK JS + H5 | UE 以 WebGL 方式在浏览器运行 |

ESObjectsManager

### 响应式架构 - 基于 TypeScript 构建,提供完整的类型安全 - 内置响应式变量系统,支持数据绑定和变更通知 - 所有对象支持 JSON 序列化/反序列化 - 组件化设计模式,模块职责清晰 --- ## 安装 ### 环境要求 - Node.js >= 18 - pnpm / npm / yarn ### 安装 EarthSDK 核心包 ```sh # 安装核心 pnpm add earthsdk3 --save ``` ### 按需安装引擎包 EarthSDK 核心包是必装的,引擎包可根据业务需求选择: ```sh # Cesium 引擎(必选其一) pnpm add earthsdk3-cesium --save # Unreal Engine 引擎 pnpm add earthsdk3-ue --save # OpenLayers 引擎 pnpm add earthsdk3-ol --save ``` > 安装 `earthsdk3-cesium` 时需要额外安装[配置 Cesium](https://cesium.com/blog/2024/02/13/configuring-vite-or-webpack-for-cesiumjs/)。安装 `earthsdk3-ol` 时需要额外安装 `ol`(当前支持版本 `^7.1.0`)。 --- ## 快速开始 ### 初始化对象管理器 创建 `ESObjectsManager` 对象管理器,通过泛型参数注册需要使用的引擎: ```typescript import { ESObjectsManager } from "earthsdk3"; import { ESCesiumViewer } from "earthsdk3-cesium"; import { ESUeViewer } from "earthsdk3-ue"; import { ESOlViewer } from "earthsdk3-ol"; // 创建对象管理器,同时注册多个引擎 const objm = new ESObjectsManager(ESCesiumViewer, ESUeViewer, ESOlViewer); // 创建 Cesium 视口 const viewer = objm.createViewer({ type: "ESCesiumViewer", container: "container-id-or-element", }); //创建一个基础影像图层 const imageryLayer = objm.createSceneObjectFromJson({ id: "94f8b01b-8659-4a34-942b-15e6ece246ca", type: "ESImageryLayer", name: "全球影像", url: "https://server.arcgisonline.com/arcgis/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}", maximumLevel: 18, }); ```

EarthUI Demo

### 直接使用 如不方便使用构建工具,可通过 IIFE 方式直接引入: ```html
``` --- ## 核心 API ### ESObjectsManager 对象管理器,负责管理所有场景对象和视口实例,以下列出一部分。 | 方法 | 说明 | | ----------------------------------------------------------- | ------------------------ | | `createViewer(option)` | 创建视口实例 | | `createSceneObject(type, id?)` | 创建场景对象 | | `getSceneObject(option?)` | 按类型或 ID 获取场景对象 | | `destroySceneObject(obj)` | 销毁场景对象 | | `switchViewer(option, viewSync?, attributeSync?, destroy?)` | 切换视口 | | `createCesiumViewer(params)` | 创建 Cesium 视口 | | `createOpenLayersViewer(params)` | 创建 OpenLayers 视口 | | `createUeViewer(params)` | 创建 UE 视口 | ### ESViewer 视口基类,定义统一的视口操作接口,以下列出一部分。 | 方法 | 说明 | | ----------------------------------------------------- | ------------------ | | `flyTo(flyToParam, position, flyMode?)` | 飞行到目标位置 | | `flyIn(position, rotation?, duration?, flyMode?)` | 飞入动画 | | `pick(screenPosition)` | 拾取对象 | | `pickPosition(screenPosition)` | 获取地面坐标 | | `changeToWalk(position, jumpZVelocity?, eyeHeight?)` | 切换到步行模式 | | `changeToMap()` | 切换到地图模式 | | `changeToRotateGlobe(latitude?, height?, cycleTime?)` | 切换到旋转地球模式 | | `capture(resx?, resy?)` | 捕获视口图像 | --- ## 开发指南 ### 环境搭建 ```sh # 克隆仓库 git clone https://github.com/cesiumlab/earthsdk3-code.git # 安装依赖 pnpm install # 切换调试/构建模式 node change-mode.js debug # main 指向源码 # 启动开发模式 pnpm run dev-app1 ``` ### 构建 ```sh # 切换调试/构建模式 node change-mode.js build # main 指向发布产物 # 构建所有包 pnpm run build-earthsdk3 pnpm run build-earthsdk3-cesium pnpm run build-earthsdk3-ue pnpm run build-earthsdk3-ol ``` --- ## 许可证 本开发包版权归 [北京西部世界科技有限公司](https://www.bjxbsj.cn) 所有。 基于 [ISC 许可证](resources/LICENSE) 开源。 --- ## 社区与支持 - 🌐 官方网站: [www.earthsdk.com](https://www.earthsdk.com) - 🌏 公众号: 地球可视化实验室 - 🌐 公司官网: [北京西部世界科技有限公司](https://www.bjxbsj.cn) - 🌐 CesiumLab 地理信息基础数据处理平台: [CesiumLab](https://www.bjxbsj.cn/cesiumlab.html) - 🌐 PipeSer 管线管网云服务: [PipeSer](https://www.bjxbsj.cn/pipeser.html) - 🌐 ModelSer 实景三维数据分布式管理平台: [ModelSer](https://www.bjxbsj.cn/modelser.html) - 🌐 CIMRTS 城市信息模型数据服务平台: [CIMRTS](https://www.bjxbsj.cn/cimrts.html) - 🌐 TerrainRTS 地形高程数据实时切片服务平台: [CIMRTS](https://www.bjxbsj.cn/terrainrts.html) ---

Built with ❤️ by 北京西部世界科技有限公司