赞
踩
本文以cesium为例,重点了阐述了在智慧城市场景中,如何基于cesium进行城市级建筑模拟渲染,以及点击展示模型数据的属性信息,支持根据建筑的不同高度来渲染不同的颜色。
cesium支持将城市建筑信息转换成b3dm数据,通过api可进行展示。转换工具一般使用cesiumlab来进行。处理好的城市白膜数据如下:
第一步、通过Cesium3DTileset加载数据,代码如下:
- var tileset = new Cesium.Cesium3DTileset({
- url: "http://localhost:8086/data/baimo/changsha/tileset.json"
- });
- viewer.scene.primitives.add(tileset);
上述代码将会加载城市建筑数据。
第二步、展示数据属性信息,关键代码如下:
- tileset.readyPromise.then(function (tileset) {
- viewer.scene.primitives.add(tileset);
- }).otherwise(function (error) {
- console.log(error);
- });
第三步、根据建筑高度设置不同颜色,关键代码如下:
- tileset.style = new Cesium.Cesium3DTileStyle({
- color: {
- conditions: [
- ['${height} >= 200', "color('#D33038')"],//red
- ['${height} >= 150', "color('#2747E0')"],//blue
- ['${height} >= 100', "color('#D33B7D')"],//pink
- ['${height} >= 60', "color('#FF9742')"],//orange
- ['${height} >= 30', 'rgb(252, 230, 200)'],
- ['${height} >= 20', 'rgb(248, 176, 87)'],
- ['${height} >= 10', 'rgb(198, 106, 11)'],
- ['true', 'rgb(127, 59, 8)']]
- }
- });
需要注意的点,这里的height一定要在b3dm数据中包含的属性,否则会报错。具体的颜色信息,支持rgb也支持其他的方式进行设置。
整体效果如下:
总结:通过以上例子可掌握如何在cesium中加载城市建筑信息,如何展示模型的数据以及前端根据楼层高度来调节建筑的外观效果,有更深层次的应用欢迎交流。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。