淹沒(méi)分析是指根據(jù)指定的最大没炒、最小高程值及淹沒(méi)速度帜矾,動(dòng)態(tài)模擬某區(qū)域水位由最小高程漲到最大高程的淹沒(méi)過(guò)程豺型,是GIS分析中常用的功能,常用于模擬洪澇災(zāi)害過(guò)程饼齿。在SuperMap的三維產(chǎn)品中淹沒(méi)分析是通過(guò)分層設(shè)色的方式實(shí)現(xiàn)饲漾,以空間高度為強(qiáng)度值,在不同的高度設(shè)置不同的顏色缕溉,動(dòng)態(tài)修改覆蓋顏色的高度考传,實(shí)現(xiàn)淹沒(méi)過(guò)程動(dòng)態(tài)模擬。
下面來(lái)看實(shí)現(xiàn)過(guò)程证鸥。
一伙菊、設(shè)置顏色表
var colorTable = new Cesium.ColorTable();
function setColorTable(colorTable, key) {
switch (key) {
case "1":
colorTable.insert(71, new Cesium.Color(0, 39/255, 148/255));
colorTable.insert(0, new Cesium.Color(149/255, 232/255, 249/255));
break;
case "2":
colorTable.insert(71, new Cesium.Color(162/255, 251/255, 194/255));
colorTable.insert(0, new Cesium.Color(1, 103/255, 103/255));
break;
case "3":
colorTable.insert(71, new Cesium.Color(230/255, 198/255, 1));
colorTable.insert(0, new Cesium.Color(157/255, 0, 1));
break;
case "4":
colorTable.insert(71, new Cesium.Color(210/255, 15/255, 15/255));
colorTable.insert(54, new Cesium.Color(221/255, 224/255, 7/255));
colorTable.insert(36, new Cesium.Color(20/255, 187/255, 18/255));
colorTable.insert(18, new Cesium.Color(0, 161/255, 1));
colorTable.insert(0, new Cesium.Color(9/255, 9/255, 212/255));
break;
case "5":
colorTable.insert(71, new Cesium.Color(186/255, 1, 229/255));
colorTable.insert(0, new Cesium.Color(26/255, 185/255, 156/255));
break;
default:
break;
}
}
顏色表按照不同的空間高度,設(shè)置不同的顏色敌土,中間高度對(duì)應(yīng)顏色自動(dòng)插值,形成色帶运翼。
二返干、分層設(shè)色類HypsometricSetting
該類主要用于制定三維模型渲染顯示方案。分層設(shè)色是地圖可視化的常用方式血淌,它通過(guò)一定的顏色變化次序或色調(diào)深淺來(lái)表達(dá)和區(qū)別三維數(shù)據(jù)的不同屬性矩欠。
HypsometricSetting的主要屬性:
ColorTable : 獲取或設(shè)置顏色表。
var hypsometricSetting = new Cesium.HypsometricSetting();
//設(shè)置顏色表
var colorTable = new Cesium.ColorTable();
colorTable.insert(900, new Cesium.Color(1, 0, 0));
colorTable.insert(600, new Cesium.Color(0, 0, 1));
hypsometricSetting.ColorTable= colorTable;
//獲取顏色表
var value= hypsometricSetting.ColorTable;
ColorTableMaxKey:獲取顏色表的最大key值悠夯。
var hypsometricSetting = new Cesium.HypsometricSetting();
var maxKey = hypsometricSetting.ColorTableMaxKey ;
ColorTableMinKey:獲取顏色表的最小key值癌淮。
var hypsometricSetting = new Cesium.HypsometricSetting();
var minKey = hypsometricSetting.ColorTableMinKey ;
CoverageArea:獲取或設(shè)置分層設(shè)色的區(qū)域
var hypsometricSetting = new Cesium.HypsometricSetting();
//設(shè)置分層設(shè)色區(qū)域
var pos = new Array();
pos.push(110.0);pos.push(40.03);pos.push(110.0);
pos.push(110.0);pos.push(40.001);pos.push(110.0);
pos.push(110.103);pos.push(40.001);pos.push(110.0);
pos.push(110.103);pos.push(40.03);pos.push(110.0);
hypsometricSetting.CoverageArea= pos;
//獲取分層設(shè)色區(qū)域
var value= hypsometricSetting.CoverageArea;
DisplayMode : 獲取或設(shè)置顯示模式。
var hypsometricSetting = new Cesium.HypsometricSetting();
//設(shè)置顯示模式
hypsometricSetting.DisplayMode= Cesium.HysometricSetting
Enum.DisplayMode.FACE;LineColor
//獲取顯示模式
var value= hypsometricSetting.DisplayMode;
emissionTexCoordUSpeed : 設(shè)置或獲取自發(fā)光紋理在U方向的運(yùn)動(dòng)速度沦补,整個(gè)紋理的U方向的紋理坐標(biāo)是從0.0到1.0乳蓄,速度單位是紋理坐標(biāo)的偏移量每秒
var hypsometricSetting = new Cesium.HypsometricSetting();
//設(shè)置自發(fā)光紋理在U方向的運(yùn)動(dòng)速度
var emissionTexCoordSpeed = value;
hypsometricSetting.emissionTexCoordUSpeed = emissionTexCoordSpeed;
//獲取自發(fā)光紋理在U方向的運(yùn)動(dòng)速度
var value= hypsometricSetting.emissionTexCoordUSpeed ;
emissionTextureUrl : 設(shè)置或獲取自發(fā)光紋理
var hypsometricSetting = new Cesium.HypsometricSetting();
//設(shè)置自發(fā)光紋理
var emissionTextureUrl = String;
hypsometricSetting.emissionTextureUrl = emissionTextureUrl;
//獲取自發(fā)光紋理
var value= hypsometricSetting.emissionTextureUrl ;
LineColor :獲取或設(shè)置等值線的顏色。
var hypsometricSetting = new Cesium.HypsometricSetting();
//設(shè)置線的顏色
var color = new Cesium.Color(1, 0, 0);
hypsometricSetting.LineColor = color;
//獲取線的顏色
var value= hypsometricSetting.LineColor ;
LineInterval :獲取或設(shè)置等值線的間隔夕膀。
var hypsometricSetting = new Cesium.HypsometricSetting();
//設(shè)置線的間隔
hypsometricSetting.LineInterval= 10;
//獲取線的間隔
var value= hypsometricSetting.LineInterval;
MaxVisibleValue : 獲取或設(shè)置最大可見值虚倒。
var hypsometricSetting = new Cesium.HypsometricSetting();
//設(shè)置最大可見值
hypsometricSetting.MaxVisibleValue = 150;
//獲取最大可見值
var value= hypsometricSetting.MaxVisibleValue;
MinVisibleValue :獲取或設(shè)置最小可見值美侦。
var hypsometricSetting = new Cesium.HypsometricSetting();
//設(shè)置最小可見值
hypsometricSetting.MinVisibleValue = 30;
//獲取最小可見值
var value= hypsometricSetting.MinVisibleValue;
noValueColor :設(shè)置或獲取無(wú)效顏色值,默認(rèn)白色
Opacity : 獲取或設(shè)置不透明度魂奥,取值范圍為0-1菠剩,其中0表示完全透明,1表示完全不透明耻煤。
var hypsometricSetting = new Cesium.HypsometricSetting();
//設(shè)置透明度
hypsometricSetting.Opacity = 0.5;
//獲取透明度
var value= hypsometricSetting.Opacity;
分層設(shè)色類支持s3mtileslayer和tin地形具壮,當(dāng)對(duì)s3mtileslayer設(shè)置時(shí),分層設(shè)色類的最大哈蝇、最小可見值為圖層的最大棺妓、最小強(qiáng)度值,當(dāng)對(duì)地形設(shè)置時(shí)买鸽,則為地形的高度值涧郊。
三、動(dòng)態(tài)修改最大可見值
setInterval(function(){
hyp.MaxVisibleValue = currentHeight;
}, 100)
最后來(lái)看下整體效果