SuperMap iClient3D for WebGL教程- 淹没分析

淹没分析是指根据指定的最大、最小高程值及淹没速度,动态模拟某区域水位由最小高程涨到最大高程的淹没过程,是GIS分析中常用的功能,常用于模拟洪涝灾害过程。在SuperMap的三维产品中淹没分析是通过分层设色的方式实现,以空间高度为强度值,在不同的高度设置不同的颜色,动态修改覆盖颜色的高度,实现淹没过程动态模拟。
下面来看实现过程。
一、设置颜色表

        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;
            }
        }

颜色表按照不同的空间高度,设置不同的颜色,中间高度对应颜色自动插值,形成色带。
二、分层设色类HypsometricSetting

该类主要用于制定三维模型渲染显示方案。分层设色是地图可视化的常用方式,它通过一定的颜色变化次序或色调深浅来表达和区别三维数据的不同属性。
HypsometricSetting的主要属性:
ColorTable : 获取或设置颜色表。

var hypsometricSetting = new Cesium.HypsometricSetting();
//设置颜色表
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:获取或设置分层设色的区域

var hypsometricSetting = new Cesium.HypsometricSetting();
//设置分层设色区域
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;
//获取分层设色区域
var value= hypsometricSetting.CoverageArea;

DisplayMode : 获取或设置显示模式。

var hypsometricSetting = new Cesium.HypsometricSetting();
//设置显示模式
hypsometricSetting.DisplayMode= Cesium.HysometricSetting
Enum.DisplayMode.FACE;LineColor
//获取显示模式
var value= hypsometricSetting.DisplayMode;

emissionTexCoordUSpeed : 设置或获取自发光纹理在U方向的运动速度,整个纹理的U方向的纹理坐标是从0.0到1.0,速度单位是纹理坐标的偏移量每秒

var hypsometricSetting = new Cesium.HypsometricSetting();
//设置自发光纹理在U方向的运动速度
var emissionTexCoordSpeed = value;
hypsometricSetting.emissionTexCoordUSpeed = emissionTexCoordSpeed;
//获取自发光纹理在U方向的运动速度
var value= hypsometricSetting.emissionTexCoordUSpeed ;

emissionTextureUrl : 设置或获取自发光纹理

var hypsometricSetting = new Cesium.HypsometricSetting();
//设置自发光纹理
var emissionTextureUrl = String;
hypsometricSetting.emissionTextureUrl = emissionTextureUrl;
//获取自发光纹理
var value= hypsometricSetting.emissionTextureUrl ;

LineColor :获取或设置等值线的颜色。

var hypsometricSetting = new Cesium.HypsometricSetting();
//设置线的颜色
var color = new Cesium.Color(1, 0, 0);
hypsometricSetting.LineColor = color;
//获取线的颜色
var value= hypsometricSetting.LineColor ;

LineInterval :获取或设置等值线的间隔。

var hypsometricSetting = new Cesium.HypsometricSetting();
//设置线的间隔
hypsometricSetting.LineInterval= 10;
//获取线的间隔
var value= hypsometricSetting.LineInterval;

MaxVisibleValue : 获取或设置最大可见值。

var hypsometricSetting = new Cesium.HypsometricSetting();
//设置最大可见值
hypsometricSetting.MaxVisibleValue = 150;
//获取最大可见值
var value= hypsometricSetting.MaxVisibleValue;

MinVisibleValue :获取或设置最小可见值。

var hypsometricSetting = new Cesium.HypsometricSetting();
//设置最小可见值
hypsometricSetting.MinVisibleValue = 30;
//获取最小可见值
var value= hypsometricSetting.MinVisibleValue;

noValueColor :设置或获取无效颜色值,默认白色
Opacity : 获取或设置不透明度,取值范围为0-1,其中0表示完全透明,1表示完全不透明。

var hypsometricSetting = new Cesium.HypsometricSetting();
//设置透明度
hypsometricSetting.Opacity = 0.5;
//获取透明度
var value= hypsometricSetting.Opacity;

分层设色类支持s3mtileslayer和tin地形,当对s3mtileslayer设置时,分层设色类的最大、最小可见值为图层的最大、最小强度值,当对地形设置时,则为地形的高度值。
三、动态修改最大可见值

setInterval(function(){
    hyp.MaxVisibleValue = currentHeight;
}, 100)

最后来看下整体效果


淹没分析.gif
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,490评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,581评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,830评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,957评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,974评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,754评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,464评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,357评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,847评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,995评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,137评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,819评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,482评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,023评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,149评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,409评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,086评论 2 355

推荐阅读更多精彩内容

  • 本文首发于个人博客:Lam's Blog - 【OpenGL-ES】二维纹理,文章由MarkDown语法编写,可能...
    格子林ll阅读 3,782评论 0 9
  • HTML标签解释大全 一、HTML标记 标签:!DOCTYPE 说明:指定了 HTML 文档遵循的文档类型定义(D...
    米塔塔阅读 3,247评论 1 41
  • 1、概述 前面几篇文章OpenGL ES 3.0(一)综述 、OpenGL ES 3.0(二)GLSL与着色器 讨...
    高丕基阅读 3,061评论 0 7
  • 本周周末的时间几乎全部用来上课,正好学习的内容中包含信息管理和空间管理,收纳便是其中的一部分,于是本周的读书临时调...
    小熊的蜂蜜罐子阅读 1,084评论 0 6
  • 今天中午爸爸不回家吃饭了,妈妈带我去买饭,好多人在等着,老板说五六分钟就好,可是我们等了好大一会才买上,弟...
    王辰溪阅读 242评论 0 0