可視域分析是一個(gè)很常用的三維空間分析功能而芥,傳統(tǒng)的可視域分析是通過GPU分析出結(jié)果律罢,然后把結(jié)果繪制出來,這樣的結(jié)果只能看,既沒有準(zhǔn)確的結(jié)果參數(shù)也不能進(jìn)行空間計(jì)算误辑。
本節(jié)課程就來講解一個(gè)不太一樣的應(yīng)用案例沧踏,將可視域分析變成一個(gè)既可以看也可以計(jì)算的結(jié)果。
實(shí)現(xiàn)的步驟大致分為三個(gè)步驟:
1巾钉、前端可視域分析
2翘狱、空間分析服務(wù)構(gòu)建幾何體
3、可視域分析幾何體繪制和計(jì)算
一砰苍、前端可視域分析
可視域分析在SuperMap iClient3D for WebGL中有范例代碼潦匈,這里就不在贅述。
可視域分析
二赚导、空間分析服務(wù)構(gòu)建幾何體
SuperMap iSever提供了空間分析服務(wù)茬缩,可以通過空間分析服務(wù)構(gòu)建可視域體。這里需要準(zhǔn)備任意的空間分析服務(wù)即可吼旧。
首先獲取可視域體參數(shù)凰锡,主要是前面一步分析出來的可視域體的結(jié)果點(diǎn)
var ViewshedParameter = viewshed3D.getViewshedParameter()
然后構(gòu)建請(qǐng)求參數(shù)
var param = {
"viewerPoint": ViewshedParameter.viewPosition,
"point3DsList": ViewshedParameter.point3DList,
"radius": ViewshedParameter.distance,
"lonlat": true,
"viewShedType": "VISIBLEBODY"
}
viewShedType分為可視域體和不可視域體
最后執(zhí)行post請(qǐng)求
var queryObjJSON = JSON.stringify(param);
$.ajax({
type: "post",
url: url,
data: queryObjJSON,
success: function(result) {}
})
三、可視域分析幾何體繪制和計(jì)算
通過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)
}
可視域體
這節(jié)課程就到這里圈暗,歡迎轉(zhuǎn)發(fā)掂为、評(píng)論、留言厂置。