Cesium场景导出为图片功能

Cesium场景导出为图片

前言

很多时候用户需要将场景导出为图片进行使用,Cesium可以通过canvas的方式将场景导出为图片文件,达到我们想要的效果

效果图

在这里插入图片描述

关键代码

export function saveToFile(scene) {
    let canvas = scene.canvas;
    let image = canvas.toDataURL("image/png").replace("image/png", "image/octet-stream");

    let link = document.createElement("a");
    let blob = dataURLtoBlob(image);
    let objurl = URL.createObjectURL(blob);
    link.download = "scene.png";
    link.href = objurl;
    link.click();

}

function dataURLtoBlob(dataurl) {
    let arr = dataurl.split(','),
        mime = arr[0].match(/:(.*?);/)[1],
        bstr = atob(arr[1]),
        n = bstr.length,
        u8arr = new Uint8Array(n);
    while (n--) {
        u8arr[n] = bstr.charCodeAt(n);
    }
    return new Blob([u8arr], { type: mime });
}

详情参见 Cesium实战专栏

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
要将Cesium模型导出为GeoJSON格式,需要经过以下步骤: 1. 使用Cesium的模型几何库获取模型的几何信息。例如,使用Cesium.Model.getMesh()获取模型的三角网格信息。 2. 将模型的几何信息转换为GeoJSON格式。GeoJSON是一种基于JSON的地理空间数据交换格式,它支持点、线、面等几何类型。将模型的几何信息转换为GeoJSON格式可以使用现有的JavaScript库,如Turf.js或geojson.js。 3. 将GeoJSON数据保存到文件中。可以使用JavaScript中的Blob对象将数据保存为文件,或使用服务器端代码将数据保存到文件中。 下面是一个示例代码,演示了如何将Cesium模型导出为GeoJSON格式: ```javascript var model = viewer.scene.primitives.get(0); var mesh = model.getMesh(); var coordinates = []; for (var i = 0; i < mesh.vertices.length; i += 3) { var x = mesh.vertices[i]; var y = mesh.vertices[i + 1]; var z = mesh.vertices[i + 2]; coordinates.push([x, y, z]); } var geojson = { type: 'Feature', geometry: { type: 'Polygon', coordinates: [coordinates] } }; var blob = new Blob([JSON.stringify(geojson)], {type: 'application/json'}); saveAs(blob, 'model.geojson'); ``` 在这个示例中,我们首先获取了场景中第一个模型的三角网格信息,然后将其转换为GeoJSON的多边形几何类型。最后将GeoJSON数据保存为名为“model.geojson”的文件。请注意,这个示例只是一个基本的示例,具体的实现可能会因为模型的复杂性和需求的不同而有所不同。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xt3d

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值