Cesium加载三维点云数据

点云预处理

	点云数据的常见格式有ply,las,txt等格式,而Cesium不能直接加载,所以需要前期的数据处理,将点云数据处理成能够加载的类型

CloudCompare处理点云

在这里插入图片描述把现有的ply格式转为Cesiumlab可以处理的las格式

Cesiumlab切片

在这里插入图片描述
可以选择经纬度局部坐标系(不知道为什么选择wgs84(epgs4326),最后加载的样子有错误),此处的坐标在预览中作为指定位置
可以选择经纬度局部坐标系(不知道为什么选择wgs84(epgs4326),最后加载的样子有错误),此处的坐标在预览中作为指定位置

Cesium加载

<!DOCTYPE html>
<html lang="en">

<head>
    <!-- Use correct character set. -->
    <meta charset="utf-8">
    <!-- Tell IE to use the latest, best version. -->
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <!-- Make the application on mobile take up the full browser screen and disable user scaling. -->
    <meta name="viewport"
        content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no">
     <title>Hello World!</title>
    <!-- 本地 -->
    <script src="./Build/Cesium/Cesium.js"></script>
    <link rel="stylesheet" type="text/css" href="./Build/Cesium/Widgets/widgets.css" /> 
    
    <!-- 线上
    <script src="https://cesiumjs.org/releases/1.62/Build/Cesium/Cesium.js"></script>
    <script src="https://cesiumjs.org/releases/1.62/Apps/Sandcastle/Sandcastle-header.js"></script>
    <link href="https://cesiumjs.org/releases/1.62/Build/Cesium/Widgets/widgets.css" rel="stylesheet"> -->
</head>

<body>
      <div id="cesiumContainer"></div>
      <div id="toolbar" style="margin: 5px;padding: 2px 5px;position: absolute;top:50px"></div>
      <script>
        var viewer = new Cesium.Viewer('cesiumContainer', {
            selectionIndicator: false,
            infoBox: false, 
        });
        
            var longitude = 116.39123;
            var latitude = 39.905;
            var height = 1000;
            var heading = 0;
            var tileset = new Cesium.Cesium3DTileset({
                url:url //此处填入发布服务的网址
            });
            // tileset.style = new Cesium.Cesium3DTileStyle({
            //     color: {
            //         conditions: [
            //             // ["${height} > 0", "color('#FFF', 0.5)"],
            //             ['true', "color('#FFFF00', 0.5)"]
            //         ]
            //     }
            // });
           
            viewer.scene.primitives.add(tileset);
            tileset.readyPromise.then(function (argument) {
                var position = Cesium.Cartesian3.fromDegrees(longitude, latitude, height);
                var mat = Cesium.Transforms.eastNorthUpToFixedFrame(position);
                var rotationX = Cesium.Matrix4.fromRotationTranslation(Cesium.Matrix3.fromRotationZ(Cesium.Math.toRadians(heading)));
                Cesium.Matrix4.multiply(mat, rotationX, mat);
                tileset._root.transform = mat;
                viewer.camera.flyTo({ destination: Cesium.Cartesian3.fromDegrees(longitude, latitude, height + 1000) });    
            });  
    </script>
    
</body>
</html>

最后的Cesiumlab的展示结果
代码的展示结果
其中heading、pitch、roll可以设置旋转参数(我的好像没写pitch和roll)

ps:上面更改点云位置的代码,当点云数据量大时可能无法生效(我也不知道为什么),此时可以将点云用cloudcompare进行抽稀,将数据量减小,再使用代码更改位置即可。

  • 4
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值