Cesium学习笔记之第三章

一、Cesium前端实现倾斜摄影数据单体化

查看Cesium SDK包示例 Classification.html

二、动态单体化

整体思路:

1、找到一个倾斜摄影数据中一个建筑物底面shp,获取其中一点的x,y,及高程z

选取x,y,z/2 将其转换为世界坐标

var position = Cesium.Cartesian3.fromDegrees(x, y, z);

2、套用代码

var center = new Cesium.Cartesian3(position.x, position.y, position.z);// 输入已转换得到的世界坐标
var modelMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(center);// 其中以提供的原点为中心的东北向上轴到提供的椭球的固定参考系
// Cesium.Matrix3.fromHeadingPitchRoll(headingPitchRoll, result) → Matrix3 第一个参数 headingPitchRoll 第二个参数result
// Cesium.HeadingPitchRoll(heading, pitch, roll) → HeadingPitchRoll heading 航向,pitch 俯仰,roll 滚动
var hprRotation = Cesium.Matrix3.fromHeadingPitchRoll(new Cesium.HeadingPitchRoll(2.619728786416368, 0.0, 0.0));// 旋转 
var hpr = Cesium.Matrix4.fromRotationTranslation(hprRotation, new Cesium.Cartesian3(0.0, 0.0, -2.0));

// 获取矩阵
Cesium.Matrix4.multiply(modelMatrix, hpr, modelMatrix);

var buildingHighlight = scene.primitives.add(new Cesium.ClassificationPrimitive({
    geometryInstances : new Cesium.GeometryInstance({
        geometry : Cesium.BoxGeometry.fromDimensions({
            vertexFormat : Cesium.PerInstanceColorAppearance.VERTEX_FORMAT,// 相切关系
            dimensions : new Cesium.Cartesian3(89.0, 66.5, 49.0) // 三个参数为长,宽,高
        }),
        modelMatrix : modelMatrix,
        attributes : {
            color : Cesium.ColorGeometryInstanceAttribute.fromColor(new Cesium.Color(1.0, 0.0, 0.0, 0.5)),
            show : new Cesium.ShowGeometryInstanceAttribute(true)
        },
        id : 'volume'
    }),
    classificationType : Cesium.ClassificationType.CESIUM_3D_TILE
}));

3、在初始化时将建筑物底面shp生成一个box的entity隐藏,绑定点击事件,点击事件促发,走第一步第二步代码

 

二、设置最大最小显示级别

viewer.scene.screenSpaceCameraController.minimumZoomDistance = 1200;

viewer.scene.screenSpaceCameraController.maximumZoomDistance = 2500;

理论来源:

PS:后续小编的主要精力放到GIS理论开发知识的大众化的道路了,通过浅显易懂的语言,结合多年行业应用开发,通过微信订阅号传播(每周更新三篇文章及相关GIS编码知识),为GIS的发展尽微博之力。终极目标是让GIS不再专业,让GIS更加大众,使得GIS深入各行业应用,让每位GISER都有一股自豪感!以下是我的微信订阅号二维码,感兴趣的可以交流沟通!

一位更懂IT的GISER,一位更懂GIS的IT

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

dinxin横刀一笑

意思不意思那是你的意思

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

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

打赏作者

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

抵扣说明:

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

余额充值