SuperMap iClient3D for WebGL教程-

2019-07-26  本文已影响0人  Mr桔子先生

阴影率分析是一个很常用的三维空间分析功能,是对一定的空间在指定的时间范围内,分析日照的情况。通常只能分析之后对结果进行简单的查询,这个分析功能在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
        });
    }

})

下面来看下对比效果


阴影率分析分屏对比

本节课程就到这里,欢迎评论、转发、留言。

上一篇 下一篇

猜你喜欢

热点阅读