基于 HTML5 WebGL 的智慧城市(一)
前言
中共中央、国务院在今年12月印发了《长江三角洲区域一体化发展规划纲要》(下文简称《纲要》),并发出通知,要求各地区各部门结合实际认真贯彻落实。
《纲要》强调,要提升基础设施互联互通水平,打造数字长三角,协同建设新一代信息基础设施,共同推动重点领域智慧应用。大力发展基于物联网、大数据、人工智能的专业化服务,提升各领域融合发展、信息化协同和精细化管理水平。围绕城市公共管理、公共服务、公共安全等领域,支持有条件的城市建设基于人工智能和 5G 物联的城市大脑集群。
城市治理和管理不仅是国家治理体系的重要组成部分,同时也是全球互联网治理体系的重要载体和构建网络空间命运共同体的重要基础。上个月我们发布了一篇文章《基于 HTML5 WebGL 构建智能城市 3D 场景》,大体介绍了如何使用 ht.js 快速 3D 建模,展示了良好的可视化效果,今天继续探讨智慧城市的应用。
demo: http://www.hightopo.com/demo/city/
功能点
- 应急响应
- 交通情况
- 城市漫游
- 工程情况
1.应急响应
随着城市化、工业化、信息化进程加快,各种风险隐患层出不穷,突发事件频繁发生,已经从“非常态化”的偶发事件演变成了“常态化”的频发事件,直接威胁着公众的生命财产安全。为了及时、有效、妥善地处置各种城市突发事件,必须建立统一领导的指挥系统、常备不懈的保障系统和防患未然的防范系统,。

上图主要以 2/3D 联动的方式,依次展示了在面对突发情况下,城市应急救援的响应过程。
步骤:事故定位->告警设施自启动->电力切断->油气截断阀启动->周边情况->确认告警范围->通知学校->医院准备->应急人员准备->交通规划->应急方案预备->应急方案启动->应急资源触发->现场方案预备->现场方案启动->人员进场->作业中)
实现思路:首先对模型进行分组,并在相应的图元上标记 tag ,使用 ht.Default.startAnim() 来完成每一步的动画效果,然后拼接动画即可实现上图中的 3D 动画效果。至于右边的 2D 步骤显示面板的联动,因为本 demo 采用的是 ht.js 来实现的, ht.DataModel 作为承载 Data 数据的模型,管理着 Data 数据的增删以及事件派发,右侧的 2D 面板里的步骤也是一个个 Data ,我们只要对其进行数据绑定,在动画执行到某一时刻,通过动态修数据来控制图元的透明度等样式就可以实现 2/3D 联动了。demo 中的事故地点,点击可跳转到另一个室内定位的 案例 。
// 事故定位动画主要代码
animStep_1() {
let process_01 = this.main.g2d.dm().getDataByTag("process_01");
process_01.s("opacity", 1);
let emergencyResponseParent_1 = this.main.g3d
.dm()
.getDataByTag("emergencyResponseParent_1");
this.setVisible(emergencyResponseParent_1, true, "children");
let children = this.getChildren(emergencyResponseParent_1);
children.forEach(i => {
i.s("shape3d.transparent", true);
i.s("shape3d.opacity", 0);
});
this.main.anim = ht.Default.startAnim({
duration: 2000,
easing: t => {
return t;
},
finishFunc: () => {
this.animStep_2();
}, // 动画结束后调用的函数。
action: (v, t) => {
this.setStepPanel(process_01, t, 4);
if (t <= 0.25) {
children[0].s("shape3d.opacity", 5 * Ease.easeOutSine(t));
} else if (t <= 0.375) {
children[1].s(
"shape3d.opacity",
8 * Ease.easeOutSine(t - 0.25)
);
} else if (t <= 0.5) {
children[2].s(
"shape3d.opacity",
8 * Ease.easeOutSine(t - 0.375)
);
}
}
});
}
2.交通情况
先上图:

从应用领域来看,目前我国智慧交通主要应用在公路交通信息化、城市道路交通管理服务信息化以及城市公交信息化领域。伴随着数字化转型,政府主动牵头智慧城市建设,未来市场潜力巨大。该功能点能更直观有效的反应当前的道路交通情况,使各地政府更加有效的、科学的管理交通,发挥出大城市的交通效能。常规的 2D 效果图已经不满足于当下的需求了,伴随着大数据、云计算、5G、AI、边缘计算等技术的发展成熟,3D 可视化更能直观的、有效的反馈信息。当然,3D 可视化离不开一款强大的图形引擎。本模块只是简单地模拟了交通状况,并未继续拓展。
3.城市漫游

由于计算机图形学和软硬件技术的快速发展,虚拟现实技术越来越为人们所重视。虚拟现实技术的应用一直是计算机应用领域的热点,虚拟现实技术的应用价值已经得到了广泛的认可。3D 漫游可以提供很好的用户交互体验,所以本 demo 也展示了这一功能。
借助于 HT,漫游功能的实现只要几行代码就可以实现了。ht.Shape 是极其强大的图元类型,这里绘制漫游路线就是使用其扩展子类 ht.Polyline ,绘制一条三维空间管道,然后通过获取该路径上的点来不断设置 eye 就行了。代码如下:
// 漫游动画
roamingAnim() {
// polyline
let polyline = this.main.g3d.dm().getDataByTag("polyline");
this.main.anim = ht.Default.startAnim({
duration: 15000,
easing: t => {
return t;
},
finishFunc: () => {
}, // 动画结束后调用的函数。
action: (v, t) => {
let length = this.main.g3d.getLineLength(polyline),
offset = this.main.g3d.getLineOffset(polyline, length * v),
point = offset.point,
px = point.x,
py = point.y,
pz = point.z;
this.main.g3d.setEye(
px ,
py ,
pz
);
this.main.g3d.setCenter(0, 0, 0);
}
});
}
4.工程情况

该页面主要展示了工程情况:大桥(戳)、盾构作业(戳)、海底隧道(戳)。
至此,该 demo 的功能点就介绍完了。


图一,12月12日晚,厦门地铁2号线吕厝路口配套的物业开发地块施工现场发生塌陷,所幸没有造成人员伤亡,事故原因疑似管道破裂导致,水流将路基中的稳定土层掏空,加上路面上的汽车压力,导致路面坍塌。
图二,3月21日下午14:48左右,位于响水县生态化工园区的化工厂发生爆炸。近年来,多加化工厂爆炸,所造成的生命、财产损失不可估量。
一场场事故触目惊心,时刻提醒着我们要防患于未然。水是人类生活的源泉而随着城市的发展水污染问题也越来越严重,水资源监管和治理成为城市发展的一大困扰,水质监控不及时、水灾预警不及时更是直接关系到民生问题。而智慧水务的发展则能非常及时、准确的解决问题。假如有比较好的监控预警系统,这些事故发生的可能性将大大降低。后续会再写些关于智慧水务的文章,也会再拓展应急预案的场景案例。
基于 HTML5 WebGL 的智慧城市(一)的更多相关文章
- 基于 HTML5 WebGL 的智慧楼宇可视化系统
前言 可视化的智慧楼宇在 21 世纪是有急迫需求的,中国被世界称为"基建狂魔",全球高层建筑数量位居首位,所以对于楼宇的监控是必不可少.智慧楼宇可视化系统更多突出的是管理方面的功能 ...
- 基于 HTML5 WebGL 的智慧楼宇三维可视化监控
前言 可视化的智慧楼宇在 21 世纪是有急迫需求的,中国被世界称为"基建狂魔",全球高层建筑数量位居首位,所以对于楼宇的监控是必不可少.智慧楼宇可视化系统更多突出的是管理方面的功能 ...
- 基于 HTML5 WebGL 构建智能城市 3D 场景
前言 随着城市规模的扩大,传统的方式很难彻底地展示城市的全貌,但随着 3D 技术的应用,出现了 3D 城市群的方式以动态,交互式地把城市全貌呈现出来.配合智能城市系统,通过 Web 可视化的方式,使得 ...
- 基于 HTML5 WebGL 的 智慧楼宇能源监控系统
前言 21世纪,在能源危机和全球气候变暖的压力下,太阳能等可再生能源越来越受到关注,其中光伏建筑一体化逐渐成为绿色发展方式和生活方式,加强节能降耗,支持低碳产业和新能源.可再生能源发展,也已经成为国家 ...
- 基于 HTML5 WebGL 的加油站 3D 可视化监控
前言 随着数字化,工业互联网,物联网的发展,我国加油站正向有人值守,无人操作,远程控制的方向发展,传统的人工巡查方式逐渐转变为以自动化控制为主的在线监控方式,即采用数据采集与监控系统 SCADA.SC ...
- 基于 HTML5 WebGL 的地铁站 3D 可视化系统
前言 工业互联网,物联网,可视化等名词在我们现在信息化的大背景下已经是耳熟能详,日常生活的交通,出行,吃穿等可能都可以用信息化的方式来为我们表达,在传统的可视化监控领域,一般都是基于 Web SCAD ...
- 基于 HTML5 WebGL 的计量站三维可视化监控系统 Web 组态工控应用
得益于 HTML5 WebGL 技术的成熟,从技术上对工控管理的可视化,数据可视化变得简单易行!完成对工控设备的管理效率,资源管理,风险管理等的大幅度提高,同时也对国家工业4.0计划作出有力响应! 如 ...
- 基于 HTML5 WebGL 的 3D 风机 Web 组态工业互联网应用
基于 HTML5 WebGL 的 3D 风机 Web 组态工业互联网应用 前言 在目前大数据时代背景之下,数据可视化的需求也变得越来越庞大,在数据可视化的背景之下,通过智能机器间的链接并最终将人机链接 ...
- 基于 HTML5 WebGL 的挖掘机 3D 可视化应用
前言 在工业互联网以及物联网的影响下,人们对于机械的管理,机械的可视化,机械的操作可视化提出了更高的要求.如何在一个系统中完整的显示机械的运行情况,机械的运行轨迹,或者机械的机械动作显得尤为的重要,因 ...
随机推荐
- spring boot(三)Junit 测试controller
Junit测试Controller(MockMVC使用),传输@RequestBody数据解决办法 一.单元测试的目的 简单来说就是在我们增加或者改动一些代码以后对所有逻辑的一个检测,尤其是在我们后期 ...
- Docker Swarm Mode简介与核心概念
什么是Docker Swarm Docker Swarm是Docker官方的一种容器编排方案,用于管理跨主机的Docker容器,可以快速对指定服务进行水平扩展.部署.删除 一个Docker Swarm ...
- 【题解】BZOJ4241: 历史研究(魔改莫队)
[题解]BZOJ4241: 历史研究(魔改莫队) 真的是好题啊 题意 给你一个序列和很多组询问(可以离线),问你这个区间中\(\max\){元素出现个数\(\times\)元素权值} IOI国历史研究 ...
- 洛谷$P5329\ [SNOI2019]$字符串 字符串
正解:字符串 解题报告: 传送门$QwQ$ 有两个很妙的方法,分别港下$QwQ$ 首先为了表示方便,这里和题面一样设$s_i$表示去掉第$i$个字母得到的字符串.另设$lcp(i,j)$表示$suf_ ...
- 【uuid】- 唯一标识
2020-01-02 UUID ,Universally Unique Identifier ,通用唯一标识符. //定义一个生成 uuid 的方法const getUuid = () => { ...
- solr学习(一)安装与部署
经过测试,同步MongoDB数据到Solr的时候,Solr版本为8.4.0会出现连接不上的错误,8.3.0未经测试不知,博主测试好用的一版为8.2.0,但是官网已经下不到了,所以我会把下载链接放在文末 ...
- 从0开发3D引擎(五):函数式编程及其在引擎中的应用
目录 上一篇博文 函数式编程的优点与缺点 优点 缺点 为什么使用Reason语言 函数式编程学习资料 引擎中相关的函数式编程知识点 数据 不可变数据 可变数据 函数 纯函数 高阶函数 柯西化 参考资料 ...
- Could not write JSON: Infinite recursion (StackOverflowError);
转自:https://blog.csdn.net/east123321/article/details/80435051 在controller返回数据到统一json转换的时候,出现了json inf ...
- 用markdown写博客,看这一篇就够了
0. 前言 记得上次用markdown写博客,尽管我有markdown使用经验,但第一篇markdown博客还是不得已的"回滚"了. 传送门:记录一下第一次用markdown写博客 ...
- # 曹工说Spring Boot源码(10)-- Spring解析xml文件,到底从中得到了什么(context:annotation-config 解析)
写在前面的话 相关背景及资源: 曹工说Spring Boot源码(1)-- Bean Definition到底是什么,附spring思维导图分享 曹工说Spring Boot源码(2)-- Bean ...