SuperMap iClient3D for WebGL教程-

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

可视域分析是一个很常用的三维空间分析功能,传统的可视域分析是通过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)
}
可视域体

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

上一篇 下一篇

猜你喜欢

热点阅读