利用CesiumEarth快速制作城市建筑白模及演示场景

本文概述​

本文主要介绍如何通过CesiumEarth手工绘制建筑底面,设置建筑高度,按颜色区分类别,形成可查询每一栋建筑信息的三维场景,场景搭建时间只需1小时,若具备现成的城市建筑底面数据,直接导入CesiumEarth并调整相应的参数,半小时即可搭建城市建筑模型的三维演示场景

场景效果​

城市建筑白模三维场景效果如下

点击建筑白模可查询信息

一、进入CesiumEarth并默认加载基础图层​

从首页点击进入三维地球(加载默认图层)

默认图层包含天地图影像、天地图注记、CesiumIon地形三个图层

二、绘制建筑底面数据​

新建矢量图层​

输入图层名称,选择新建数据,设置矢量类型为面,输入字段名称(名称,简介,高度,颜色)

添加建筑底面​

选中建筑信息图层,点击矢量图层属性,点击添加要素

在编辑属性选项卡中输入要素对应的属性内容,并在高度和颜色字段中设定白模的高度和颜色值

在编辑图形选项卡中绘制建筑底面,右键结束编辑,点击确认后添加完毕

若想白模更加精细,只需在绘制底面时勾勒出更多的线条即可

若以正射影像作为地图参考,绘制出的白模精度更高

三、调整矢量面参数​

默认参数下,面仅仅以多边形面的形式渲染,此时需要对渲染模式进行更改

使二维面变成三维立体模型​

选中建筑信息图层,点击设置按钮,调出图层设置界面

按如下参数进行调整,给模型赋予高度,变成三维立体模型

二维面变成三维立体模型

polygonOutlineShow = 1 polygonExtrudedHeight = 10:高度 polygonPerPositionHeight = 1

给模型赋予颜色​

此时模型默认颜色为白色透明,此处将模型的颜色从字段中读取,字段中可按建筑类型赋予不同的颜色

本例中颜色值已经在矢量图层数据中事先进行的预设,具体如下

预设的颜色值

工业区=#ffcccc 住宅区=#ccccff 商业区=#ccffcc

在图层设置中,按如下参数进行调整

赋予颜色

polygonColor = #FFFFFF:颜色 polygonOutlineColor = #FFFFFF:颜色

此时已完成城市建筑白模的场景搭建

点击某一栋白模可查看建筑信息

三、显示名称​

每一栋建筑白模可选择是否显示名称,只需开启label功能,参数如下

显示名称

labelShow = 1 labelField = 名称 labelFillColor = #FF0000:颜色

全部体块显示名称信息,会显得有些杂乱,此时可以在图层中增加字段,动态控制labelShow参数

显示名称

labelShow = 1:显示名称

附上本场景的cedb数据​

直接复制cedb数据,可浏览查看,同时也支持移动端查看

CesiumEarth官网地址: http://www.cesiumearth.com PC端地址如下:CesiumEarth|数字孪生三维引擎 移动端地址如下: http://m.cesiumearth.com

[{"title":"天地图","children":[{"title":"卫星影像","url":"http://{s}.tianditu.com/DataServer?T=img_w&X={x}&Y={y}&L={z}&tk=0f84da9fd48038ea3bd8de15ff9fb4c2","subdomains":["t0","t1","t2","t3","t4","t5","t6","t7"],"checked":false,"type":"ImageryURL","format":"image/jpeg","tileMatrixSetID":"GoogleMapsCompatible","key":"on0yqe9mbinzyl9d","tileAlpha":"1.0","tileBrightness":"1.0","tileColorToAlpha":"","tileColorToAlphaThreshold":"0.0","tileContrast":"1.0","tileGamma":"1.0","tileHue":"0.0","tileSaturation":"1.0","tileRectangle":"","tileCutoutRectangle":"","tileMaximumLevel":"18","tileMinimumLevel":"0","isTarget":false},{"title":"卫星影像注记","url":"http://t{s}.tianditu.com/cia_w/wmts?service=wmts&request=GetTile&version=1.0.0&LAYER=cia&tileMatrixSet=w&