SuperMap iClient3D for WebGL教程(空間分析)- 坡度坡向分析

坡度和坡向是兩個(gè)重要的地形特征因子颜阐,在地形表面分析中起到重要作用。其中吓肋,坡度是地表面上某一點(diǎn)的切面和水平面所成的夾角凳怨,坡度值越大,地勢(shì)越陡峭是鬼;坡度值越小肤舞,地勢(shì)越平坦。而坡度變化的方向稱為坡向均蜜,指每個(gè)像元到其相鄰像元方向上值的變化率最大的下坡方向李剖,表示地表面某一位置斜坡方向變化的量度。

三維坡度坡向分析用于計(jì)算柵格數(shù)據(jù)集中各像元的坡度值囤耳,及像元坡度面的朝向篙顺。坡度用度數(shù)表示的分析結(jié)果的范圍是0到90°;坡向計(jì)算的范圍是0到360°充择,以正北方0°為開始德玫,按順時(shí)針移動(dòng),回到正北方以360°結(jié)束椎麦。
在SuperMap iClient3D for WebGL中宰僧,我們?nèi)绾螌?shí)現(xiàn)坡度坡向分析尼

一.準(zhǔn)備數(shù)據(jù),發(fā)布服務(wù)

1.數(shù)據(jù)集右鍵观挎,選擇“生成緩存
image.png
2.彈出“生成場(chǎng)景緩存”對(duì)話框撒桨,如下圖所示
image.png

這里需要注意的是需勾選上“帶法線”以及選擇“Tin地形
不要使用場(chǎng)景右鍵生成場(chǎng)景緩存,因?yàn)檫@樣生成的tin地形是不帶法線的键兜,無(wú)法進(jìn)行坡度坡向分析;

3.新建球面場(chǎng)景穗泵,將第二步生成的tin地形加入普气,保存場(chǎng)景以及工作空間,再通過(guò)iServer發(fā)布成三維服務(wù)即可

二.WebGL實(shí)現(xiàn)坡度坡向分析

1.加載iserver的Tin地形
 var viewer = new Cesium.Viewer('cesiumContainer', {
                infoBox: false,
                terrainProvider: new Cesium.CesiumTerrainProvider({
                    url: 'http://192.168.15.83:8090/iserver/services/3D-demo3/rest/realspace/datas/JingjinTerrain2',
                    //地形服務(wù)源自SuperMap iServer發(fā)布時(shí)需設(shè)置isSct為true
                    isSct: true, 
                   //是否請(qǐng)求頂點(diǎn)法線
                    requestVertexNormals: true
                })
            });
2.初始化坡度設(shè)置對(duì)象 SlopeSetting

屬性說(shuō)明:
ColorTable :獲取或設(shè)置顏色表佃延;
ColorTableMaxKey :獲取或設(shè)置顏色表(ColorTable)的最大鍵值现诀;
ColorTableMinKey :獲取或設(shè)置顏色表(ColorTable)的最小鍵值夷磕;
CoverageArea :獲取或設(shè)置參與坡度分析的區(qū)域。
DisplayMode : 獲取或設(shè)置呈現(xiàn)模式仔沿,共有SlopeSettingEnum.ARROW坐桩,SlopeSettingEnum.FACE,SlopeSettingEnum.FACE_AND_ARROW封锉,SlopeSettingEnum.NONE4中模式绵跷;
MaxVisibleValue : 獲取或設(shè)置最大可見值。
MinVisibleValue : 獲取或設(shè)置最小可見值成福。
Opacity : 獲取或設(shè)置透明度碾局。([0.0,1.0],0.0完全透明奴艾,1.0完全不透明)

            //初始化SlopeSetting并設(shè)置相關(guān)屬性
            var slope = new Cesium.SlopeSetting();
            slope.DisplayMode = Cesium.SlopeSettingEnum.DisplayMode.FACE_AND_ARROW;
            slope.MaxVisibleValue = 0;
            slope.MinVisibleValue = 90;
            var colorTable = new Cesium.ColorTable();
            colorTable.insert(0, new Cesium.Color(230 / 255, 198 / 255, 1));
            colorTable.insert(20, new Cesium.Color(210 / 255, 150 / 255, 1));
            colorTable.insert(30, new Cesium.Color(190 / 255, 100 / 255, 1));
            colorTable.insert(50, new Cesium.Color(165, 50 / 255, 1));
            colorTable.insert(80, new Cesium.Color(157 / 255, 0, 1));
            slope.ColorTable = colorTable;
            slope.Opacity = 0.5;
           //執(zhí)行坡度坡向分析
            slope.CoverageArea = positions;
            viewer.scene.globe.SlopeSetting = {
            //坡度設(shè)置
            slopeSetting: slope,
            //分析范圍模式:
            //ARM_REGION:繪制區(qū)域參與分析
            //ARM_NONE:全部區(qū)域不參與分析
            //ARM_ALL:全部區(qū)域參與分析
            analysisMode: Cesium.HypsometricSettingEnum.AnalysisRegionMode.ARM_REGION
            };
image.png

可以參考SuperMap iClient3D for WebGL官網(wǎng)范例http://support.supermap.com.cn:8090/webgl/examples/editor.html#terrainSlopeAnalysis 查看屬性改變后的效果净当;
接下來(lái) 我們對(duì)上面的官方實(shí)例做一點(diǎn)點(diǎn)改變,在繪制面移動(dòng)時(shí)蕴潦,實(shí)時(shí)進(jìn)行坡度坡向分析像啼,主要修改 handlerPolygon.movingEvt事件
主要代碼如下:

           handlerPolygon.movingEvt.addEventListener(function (windowPosition) {
               // handlerPolygon在繪制面的過(guò)程,會(huì)存在polyline這個(gè)對(duì)象潭苞,
              // 可根據(jù)他判斷節(jié)點(diǎn)數(shù)忽冻,當(dāng)大于3個(gè)時(shí),即可拿到節(jié)點(diǎn)做坡度坡向分析
               if (handlerPolygon.polyline != undefined && handlerPolygon.polyline.positions.length > 2) {
                   //轉(zhuǎn)換坐標(biāo) 獲取經(jīng)緯度以及高度
                   var array = [].concat(handlerPolygon.polyline.positions);
                   var positions = [];
                   for (var i = 0, len = array.length; i < len; i++) {
                       var cartographic = Cesium.Cartographic.fromCartesian(array[i]);
                       var longitude = Cesium.Math.toDegrees(cartographic.longitude);
                       var latitude = Cesium.Math.toDegrees(cartographic.latitude);
                       var h = cartographic.height;
                       if (positions.indexOf(longitude) == -1 && positions.indexOf(latitude) == -1) {
                           positions.push(longitude);
                           positions.push(latitude);
                           positions.push(h);
                       }
                   }
                   //執(zhí)行分析
                   slope.CoverageArea = positions;
                   viewer.scene.globe.SlopeSetting = {
                       slopeSetting: slope,
                       analysisMode: Cesium.HypsometricSettingEnum.AnalysisRegionMode.ARM_REGION
                   };
               }
           });

效果如圖:


dx.gif
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末萄传,一起剝皮案震驚了整個(gè)濱河市甚颂,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌秀菱,老刑警劉巖振诬,帶你破解...
    沈念sama閱讀 219,188評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異衍菱,居然都是意外死亡赶么,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門脊串,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)辫呻,“玉大人,你說(shuō)我怎么就攤上這事琼锋》殴耄” “怎么了?”我有些...
    開封第一講書人閱讀 165,562評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵缕坎,是天一觀的道長(zhǎng)怖侦。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么匾寝? 我笑而不...
    開封第一講書人閱讀 58,893評(píng)論 1 295
  • 正文 為了忘掉前任搬葬,我火速辦了婚禮,結(jié)果婚禮上艳悔,老公的妹妹穿的比我還像新娘急凰。我一直安慰自己,他們只是感情好猜年,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評(píng)論 6 392
  • 文/花漫 我一把揭開白布抡锈。 她就那樣靜靜地躺著,像睡著了一般码倦。 火紅的嫁衣襯著肌膚如雪企孩。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,708評(píng)論 1 305
  • 那天袁稽,我揣著相機(jī)與錄音勿璃,去河邊找鬼。 笑死推汽,一個(gè)胖子當(dāng)著我的面吹牛补疑,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播歹撒,決...
    沈念sama閱讀 40,430評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼莲组,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了暖夭?” 一聲冷哼從身側(cè)響起锹杈,我...
    開封第一講書人閱讀 39,342評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎迈着,沒(méi)想到半個(gè)月后竭望,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,801評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡裕菠,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評(píng)論 3 337
  • 正文 我和宋清朗相戀三年咬清,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片奴潘。...
    茶點(diǎn)故事閱讀 40,115評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡旧烧,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出画髓,到底是詐尸還是另有隱情掘剪,我是刑警寧澤,帶...
    沈念sama閱讀 35,804評(píng)論 5 346
  • 正文 年R本政府宣布奈虾,位于F島的核電站杖小,受9級(jí)特大地震影響肆汹,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜予权,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望浪册。 院中可真熱鬧扫腺,春花似錦、人聲如沸村象。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)厚者。三九已至躁劣,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間库菲,已是汗流浹背账忘。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留熙宇,地道東北人鳖擒。 一個(gè)月前我還...
    沈念sama閱讀 48,365評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像烫止,于是被迫代替她去往敵國(guó)和親蒋荚。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容