CesiumJS 导出完整指南:截图、录像、数据导出 3 类需求一次说清
【免费下载链接】cesiumAn open-source JavaScript library for world-class 3D globes and maps :earth_americas:项目地址: https://gitcode.com/GitHub_Trending/ce/cesium
你在 CesiumJS 里搭好 3D 地理可视化场景后,总要把成果带出去:截一张图、录一段视频,或把地理数据导出成文件。这篇 CesiumJS 导出指南覆盖截图、录像、数据导出三条路,按先选型、后操作的顺序讲清楚每一步怎么做,关键处都标了接口名和源码位置。
🧭 CesiumJS 导出选型:截图、录像、数据导出各适合什么
要"画面"、要"过程"还是要"数据",先想清楚再动手,三者产物完全不同:
| 需求 | 适合场景 | 产物 |
|---|---|---|
| CesiumJS 截图 | 汇报配图、成果存档,只要当前这一帧 | 单张 PNG |
| CesiumJS 录像 | 相机飞行、实体动画、时间动态的全过程 | 一段视频 |
| CesiumJS 数据导出 | 把实体、属性、时间信息交给其他软件继续用 | GeoJSON / CZML / KML 文件 |
📷 CesiumJS 截图:如何把当前场景存成 PNG
要的是"当前这一帧"时走这条路。CesiumJS 把场景渲染在 Canvas 上,你用 toDataURL 把画布转成 PNG 数据串,再触发浏览器下载即可。你调用 toDataURL 时,实际发生的是浏览器把 WebGL 画布当前帧读回内存并编码成图片数据,全程不用手动搭管道。
注意:等场景完全加载后再截——瓦片、模型、后处理都渲染完再动手,否则会截到半成品。
🎬 CesiumJS 录像:帧率与分辨率怎么选
要的是"过程"时走录像路线。CesiumJS 没有内置录像接口,标准做法是用浏览器原生的 MediaRecorder 包一层:你对 canvas 的 captureStream() 开始录制,实际发生的是浏览器把逐帧画面流实时编码成视频文件,相机移动、实体动画、时间动态都能被完整录下。
帧率建议 30fps,文件体积和流畅度平衡得最好;分辨率跟随 Canvas 实际尺寸,按需缩放。注意:编码会占用性能,硬件有限时先把分辨率降下来再开录,避免录制过程卡顿。
📦 CesiumJS 数据导出:GeoJSON、CZML、KML 各管什么
要的是"数据"而不是画面时,把实体导出成对应格式即可,三者分工明确:
- GeoJSON:管点、线、面等几何要素,GIS 工具拿来即用
- CZML:管时间动态数据,位置、样式随时长变化的内容可完整保留
- KML:管第三方兼容,Google Earth 等工具直接打开
加载端源码在 GeoJsonDataSource.js、CzmlDataSource.js、KmlDataSource.js;导出侧的完整示例见 export-kml,里面演示了 exportKml 接口和把模型、贴图打包进 KMZ 的完整流程。
提醒:选格式只看下游——给 GIS 用选 GeoJSON,要时间回放选 CZML,给 Google Earth 用户选 KML。
🚀 进阶:脚本控制相机批量自动截图与自定义导出参数
需要多角度、多场景出图时,用脚本驱动相机逐个飞到位、每停稳一帧截一次,比手动快且角度可控。仓库的端到端测试页 CesiumPage.js 就是一个 Playwright 驱动的 CesiumJS 页面封装,可以直接参考它做无头批量出图。
自定义导出与渲染参数则看引擎源码:分辨率缩放、后处理等开关集中在 Scene.js,改这里的配置就能控制出图质量与格式。
三条路各归各位:画面存 PNG、过程存视频、数据存 GeoJSON/CZML/KML,对照开头的选型表对号入座就能开工。
【免费下载链接】cesiumAn open-source JavaScript library for world-class 3D globes and maps :earth_americas:项目地址: https://gitcode.com/GitHub_Trending/ce/cesium
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考