CesiumJS导出功能:截图、录像、KMZ三种结果一次拿齐

发布时间:2026/11/7 18:55:53

CesiumJS导出功能:截图、录像、KMZ三种结果一次拿齐 CesiumJS导出功能截图、录像、KMZ三种结果一次拿齐【免费下载链接】cesiumAn open-source JavaScript library for world-class 3D globes and maps :earth_americas:项目地址: https://gitcode.com/GitHub_Trending/ce/cesium做汇报、留证、交接时你常需要把 CesiumJS 场景变成可交付的文件一张当前视角的截图、一段相机飞行录像或一份能塞进 Google Earth 的地理数据。CesiumJS 的导出路径恰好覆盖这三类结果——画面导出走 Canvas 与 MediaRecorder数据导出走内置的Cesium.exportKml全部在浏览器端完成无需服务端。 能力边界总览先分清哪些是库原生提供的、哪些要你自己拼。画面类导出截图/录像依赖 WebGL Canvas 的标准能力数据类导出依赖 Entity 集合KML 序列化在 exportKml.js 里实现。注意Cesium3DTileset、Primitive 这类图层对象不在exportKml的输入范围内。能力输入输出适用场景截图渲染完成的 canvasPNGDataURL 字符串或 Blob汇报配图、问题留证录像场景持续渲染 相机动画WebM 视频文件演示回放、方案汇报KML/KMZ 数据导出dataSource.entities集合.kml文本或.kmz压缩包向 Google Earth、GIS 工具交接实体数据GeoJSON/CZML无原生导出函数需自行序列化JSON 文本矢量分析、时间动态数据存档 最短路径跑通以截图为例从 0 到拿到第一张图只要四步打开 CesiumJS 页面构造 Viewer 时加一行contextOptions: { webgl: { preserveDrawingBuffer: true } }——它告诉 WebGL 每帧渲染后保留画面缓冲否则下一帧会清屏你截到的就是空白。调用viewer.camera.flyTo把相机定位到目标视角并监听viewer.camera.moveEnd等视角稳定。调用截图拿到 PNG 的 DataURLviewer.scene.render(); const dataUrl viewer.canvas.toDataURL(image/png);检查dataUrl是否为非空data:image/png开头的字符串然后用URL.createObjectURL或直接赋给a download落盘。录像同理换掉第 3 步用viewer.canvas.captureStream(30)拿到画面流喂给MediaRecorder即可。数据导出则直接对已加载的 DataSource 调Cesium.exportKml一个示例见下文场景拆解。 按场景拆解用法汇报材料里嵌入当前视角解决什么问题截图要在渲染完成时抓抓到半透明加载帧或空白帧汇报图就废了。具体做法在camera.moveEnd回调里执行scene.render()再调canvas.toDataURL(image/png)把相机停稳和立即抓帧绑在一起。关键参数toDataURL的格式参数固定传image/png因为汇报图需要无损、支持透明底若场景有半透明材质PNG 比 JPEG 少一次色带失真。相机飞行过程的演示录像解决什么问题静态图讲不清相机轨迹和时序需要把flyTo过程录成视频。具体做法调用canvas.captureStream(30)生成 MediaStream再用new MediaRecorder(stream, { mimeType: video/webm })开始录制在相机动画结束后调用recorder.stop()并在ondataavailable里收集 Blob。关键参数帧率建议 30fps再高体积近翻倍肉眼差异很小timeslice不传即可默认按内部缓冲切块避免小文件碎片。实体数据交接给 Google Earth解决什么问题项目里用 Entity 描述的点位、路径、模型要交给第三方 GIS 工具KML/KMZ 是兼容性最高的格式。具体做法加载 DataSource 后调用官方示例同款流程把模型等外部文件打进 KMZ参考 export-kml 沙盒示例const { kmz } await Cesium.exportKml({ entities: dataSource.entities, kmz: true, modelCallback: modelCallback, });关键参数实体里含ModelGraphics时modelCallback是必填的回调要把 glTF 换成 COLLADA.dae路径并把.dae与贴图通过externalFiles挂进 KMZ缺回调会直接抛 RuntimeErrorkmz: true让库用 zip 把 KML 和外部文件打包单文件交付最省事。⚖️ 关键参数与取舍参数建议取值理由副作用preserveDrawingBuffer需要截图/录像就传true关闭时帧渲染完即清屏toDataURL只能拿到空白默认false见 Context.js 的选项说明缓冲常驻显存低端设备内存占用上升长期开着可能轻微拖累帧率captureStream帧率30fps再高体积近翻倍而飞行镜头的肉眼差异很小帧率低于场景实际刷新率时快速转场会有轻微跳帧exportKml的kmz含外部资源时传trueKML 引用本地相对路径对方机器路径对不上就丢图KMZ 单包交付避免此问题压缩打包有耗时实体和纹理多时 Promise 等待变长贴图引用方式小图用 data URI大图走Resource.fetchBlob外挂库里对 data URI 会抓成 Blob 塞进 KMZtexture_${n}.pngdata URI 本身还比二进制大约 33% 体积贴图原样进包KMZ 体积随纹理尺寸线性增长️ 高频坑位与排查现象toDataURL返回的图片是纯黑或纯透明。原因preserveDrawingBuffer为默认false抓帧时缓冲已清。处理构造 Viewer 时开启该选项并务必在camera.moveEnd之后调用scene.render()再截图。现象实体含 3D 模型时exportKml报 RuntimeError。原因库里遇到ModelGraphics但未收到modelCallback直接抛错。处理补上回调返回 COLLADA 相对路径并把模型与贴图文件注册进externalFiles。现象KMZ 导出后体积远超预期几 MB 变成上百 MB。原因billboard 或 label 的贴图是 data URI被整体打包进 KMZ。处理大图改走Resource.fetchBlob外挂引用或先把贴图压缩到实际显示尺寸再导出。现象录像文件播放卡顿、丢帧严重。原因主线程每帧还跑着后处理和复杂材质编码帧跟不上渲染。处理录制前降低场景复杂度关postProcessStages中的增强效果或把渲染分辨率降半再录。 适用与不适用场景适合场景以 Entity 为主、交付目标是图片/视频/KML 类静态文件、且全程可跑在浏览器里的项目。不适合需要导出Cesium3DTileset或 Primitive 图层——exportKml只接受 Entity 集合3D Tiles 的交接要直接拷贝 tileset 资源需要时间动态数据的完整存档——CesiumJS 没有原生 CZML 导出得自己按 CZML 结构序列化 Entity 的时间属性工作量明显大于 KML需要服务端批量出图——浏览器方案受同源与内存限制批量渲染应改用 headless 方案逐视角出图。取舍一句话画面导出用 Canvas 标准 API 最稳数据导出只有 KML 是库内一站式完成的其余格式按目标系统选 GeoJSON 或 CZML 自行组装。CesiumJS 的导出核心就三条线Canvas 出图、MediaRecorder 出片、exportKml出数据。 按先保缓冲、再等视角稳定、最后抓结果的顺序操作三类交付物都能一次拿齐。【免费下载链接】cesiumAn open-source JavaScript library for world-class 3D globes and maps :earth_americas:项目地址: https://gitcode.com/GitHub_Trending/ce/cesium创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/11/2 1:35:57

3款开源Web版ER图工具实战指南:MySQL正向/逆向工程

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/7 18:55:03

武义报考电工证多少钱?学历不高也能报上名

武义报考电工证多少钱?学历不高也能报上名 你是不是也觉得学历不高,武义报考电工证怕报不上名?其实不然,很多和你一样的朋友,都是从零基础起步,最终考取了电工证。武义报考电工证多少钱?别急,看完这篇你就明白了。…

2026/11/7 18:55:03

安庆望江县考电工证千万别踩坑,工地太忙根本没时间复习考试

安庆望江县考电工证千万别踩坑,工地太忙根本没时间复习考试 工地太忙根本没时间复习考试,这不是个例,是很多一线施工人员的共同痛点。尤其是像安庆望江县这样的建筑大县,电工作业岗位需求量大,考电工证成了很多人的刚需。但很多人在报名、备考、考试过程…

2026/11/7 18:55:03

持电工证上岗作业考不过白交培训费?教你避坑

持电工证上岗作业考不过白交培训费?教你避坑 怕考不过白交培训费?别让几张纸耽误你赚钱的机会。特别是像你这种郑州劳务班组的负责人,天天跟电工打交道, 持电工证上岗作业 不是摆设,而是 含金量…

2026/11/7 18:55:03

武汉劳动路电工证怎么考 官方报名入口在哪找

武汉劳动路电工证怎么考 官方报名入口在哪找 你现在正在找电工证,因为公司要求必须持证上岗,或者你刚入行想找工作,但手里没有特种作业操作证,这可真是让人头疼。别急, 武汉劳动路电工证 虽然听着有点陌生,但它其实是全国统一的 低压电工证…

2026/11/7 18:50:03

合川低压电工证哪里考多少钱才不被中介坑

合川低压电工证哪里考多少钱才不被中介坑 你是不是也和我一样,听说要考低压电工证,但不知道 合川低压电工证哪里考 ,怕被中介忽悠,还担心 多少钱 一个证?别急,今天就来聊聊怎么在合川这地方,安全、靠谱地拿到低压电工证。…

2026/11/7 14:54:47

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/7 14:50:12

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/7 0:03:08

郑州报考避坑指南:电工证和钳工证怎么选?实操考试心里没底怕挂科

郑州报考避坑指南:电工证和钳工证怎么选?实操考试心里没底怕挂科 实操考试心里没底怕挂科?你不是一个人。特别是在郑州这样的城市,很多施工企业负责人和一线作业人员在报考电工证和钳工证时都面临着同样的困惑。到底该考哪个证?哪个更适合自己?哪个证书…

2026/11/7 0:03:08

广西电工证办理流程全解析:外省证怎么转?在哪考最靠谱?

广西电工证办理流程全解析:外省证怎么转?在哪考最靠谱? 之前考的证在外省能不能转过来?这个问题我遇到太多了,今天就拿广西电工证办理流程来具体说说,别再走弯路了。广西电工证的报考、复审、继续教育这些环节,如果你不了解,真的会吃大亏,尤其对于从…

2026/11/7 0:03:08

电气电工证都有哪些保姆级教程

电气电工证都有哪些保姆级教程 你是不是正愁不知道去哪报名,怕被中介坑?别急,这篇保姆级教程专为河南初次报考人员准备,帮你搞清楚 电气电工证都有哪些 ,以及如何避开那些坑。 电气电工证都有哪些?别被五花八门的证书搞懵了…

2026/11/7 14:54:47

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/7 14:50:12

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑