阴影率分析是一个很常用的三维空间分析功能,是对一定的空间在指定的时间范围内,分析日照的情况。通常只能分析之后对结果进行简单的查询,这个分析功能在SuperMap iClient3D for WebGL产品中不能对分析结果进行设置颜色,实现方案对比分屏显示困难。
这节课程就来对上诉的问题进行解决和实现。
本节课程分为两部分:
1、阴影率分析结果重绘
2、阴影率分析分屏对比
一、阴影率分析结果重绘
首先通过阴影率分析事件获取分析结果
shadowQuery.queryPointsEvent.addEventListener(function(e) {
console.log(e)
})
再循环分析结果,将分析结果重新绘制
e.forEach(function(a) {
ar color = getColor(a.shadowRatio)
viewer.entities.add({
position: a.position,
point: {
color: color,
pixelSize: 5,
show: true,
outlineWidth: 1,
outlineColor: Cesium.Color.YELLOW,
disableDepthTestDistance: 0,
}
})
})
最终,清除分析结果
shadowQuery.qureyRegion({
position: [0, 0],
bottom: 0,
extend: 0
});
二、阴影率分析分屏对比
在城市设计、规划等行业中,经常用到分屏对比功能,对比不同的建设方案对周围环境的影响。在SuperMap iClient3D for WebGL中支持kml图层设置分屏,可将阴影率分析结果绘制到kml图层中来实现分屏对比。
首先,初始化kml图层
kmldatasource1.setVisibleInViewport(0, false)
kmldatasource1.setVisibleInViewport(1, true)
注意,阴影率分析类也需要要初始化两个。
然后获取结果进行绘制
shadowQuery.queryPointsEvent.addEventListener(function(e) {
var pointCollection = viewer.scene.primitives.add(new Cesium.PointPrimitiveCollection())
if(shadowQuery._extend > 0) {
kmldatasource.entities.removeAll()
e.forEach(function(a) {
var color = getColor(a.shadowRatio)
kmldatasource.entities.add({
position: a.position,
point: {
color: color,
pixelSize: 5,
show: true,
outlineWidth: 1,
outlineColor: Cesium.Color.YELLOW,
disableDepthTestDistance: 0,
}
})
})
shadowQuery.qureyRegion({
position: [0, 0],
bottom: 0,
extend: 0
});
}
})
下面来看下对比效果
本节课程就到这里,欢迎评论、转发、留言。