美文网首页
SuperMap iClient3D for WebGL教程-

SuperMap iClient3D for WebGL教程-

作者: Mr桔子先生 | 来源:发表于2019-07-26 15:20 被阅读0次

    可视域分析是一个很常用的三维空间分析功能,传统的可视域分析是通过GPU分析出结果,然后把结果绘制出来,这样的结果只能看,既没有准确的结果参数也不能进行空间计算。
    本节课程就来讲解一个不太一样的应用案例,将可视域分析变成一个既可以看也可以计算的结果。
    实现的步骤大致分为三个步骤:
    1、前端可视域分析
    2、空间分析服务构建几何体
    3、可视域分析几何体绘制和计算
    一、前端可视域分析
    可视域分析在SuperMap iClient3D for WebGL中有范例代码,这里就不在赘述。


    可视域分析

    二、空间分析服务构建几何体
    SuperMap iSever提供了空间分析服务,可以通过空间分析服务构建可视域体。这里需要准备任意的空间分析服务即可。
    首先获取可视域体参数,主要是前面一步分析出来的可视域体的结果点

    var ViewshedParameter = viewshed3D.getViewshedParameter()
    

    然后构建请求参数

    var param = {
        "viewerPoint": ViewshedParameter.viewPosition,
        "point3DsList": ViewshedParameter.point3DList,
        "radius": ViewshedParameter.distance,
            "lonlat": true,
        "viewShedType": "VISIBLEBODY"
    }
    

    viewShedType分为可视域体和不可视域体
    最后执行post请求

    var queryObjJSON = JSON.stringify(param);
    $.ajax({
        type: "post",
        url: url,
        data: queryObjJSON,
        success: function(result) {}
    })
    

    三、可视域分析几何体绘制和计算
    通过s3mintance将返回的geometry绘制到场景中

    var resultObj = JSON.parse(result);
    var geometry = resultObj.geometry
    if (!geometry) {
        return;
    }
    
    var buffer = new Uint8Array(geometry.model).buffer;
    var position = geometry.position;
    var color = new Cesium.Color(0, 1, 0, 0.5);
    instanceColc.add('visibleBody', {
        position: Cesium.Cartesian3.fromDegrees(position.x, position.y, position.z),
        color: color
        }, buffer);
    
    if(resultObj) {
        alert('可视域体积:'+resultObj.infos[0].volume)
    }
    
    可视域体

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

    相关文章

      网友评论

          本文标题:SuperMap iClient3D for WebGL教程-

          本文链接:https://www.haomeiwen.com/subject/ylarrctx.html