基于 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 可视化应用
前言 在工业互联网以及物联网的影响下,人们对于机械的管理,机械的可视化,机械的操作可视化提出了更高的要求.如何在一个系统中完整的显示机械的运行情况,机械的运行轨迹,或者机械的机械动作显得尤为的重要,因 ...
随机推荐
- centos批量创建用户并发送邮件,(修订版)
# cat user_create.sh echo -n "创建用户输入C,删除用户输入D!" read name function monitor() { if [ " ...
- $Poj2083/AcWing118\ Fractal$ 模拟
$AcWing$ $Sol$ 一年前做过差不多的南蛮图腾,当时做出来还是很有成就感的$OvO$ $N<=7$,就是模拟模拟,预处理一下,$over$ $Code$ #include<bit ...
- CF1272E. Nearest Opposite Parity 题解 广度优先搜索
题目链接:http://codeforces.com/contest/1272/problem/E 题目大意: 有一个长度为n的数组 \(a\) ,数组坐标从 \(1\) 到 \(n\) . 假设你现 ...
- 11 个最佳的 Python 编译器和解释器
原作:Archie Mistry 翻译:豌豆花下猫@Python猫 原文:https://morioh.com/p/765b19f066a4 Python 是一门对初学者友好的编程语言,是一种多用途的 ...
- C# DataTable数据类型判断
当我们从数据中获取到数据,一般会使用 DataTable 接收,然后会遍历每行数据.由于从数据库中读取的数据可能为空,比如我们的编译代码如下: foreach (DataRow datarow in ...
- JUnit 5和Selenium基础(二)
使用Selenium内置的PageFactory实现页面对象模式 在这一部分中,将通过Selenium的内置PageFactory支持类来介绍Page Object模式的实现.PageFactory提 ...
- 三、Spring Cloud之软负载均衡 Ribbon
前言 上一节我们已经学习了Eureka 注册中心,其实我们也使用到了Ribbon ,只是当时我们没有细讲,所以我们现在一起来学习一下Ribbon. 什么是Ribbon 之前接触到的负载均衡都是硬负载均 ...
- 键盘优雅弹出与ios光标乱飘解决方案
前言 在移动开发中,会遇到这样的情况,比如说有一个输入框在最底部的时候,我们弹起输入框,输入框不会在输入键盘上. 说明白简单点就是,输入框被键盘挡住了.而且在原生中,输入框应该正好在输入键盘上,但是h ...
- Python Django配置Mysql数据库
1 在项目中找到setting文件 打开 2 在里面找到 3 将Databases里面的数据改成 DATABASES = { 'default': { #引擎设置为Mysql 'ENGINE': 'd ...
- 修理牛棚 贪心 USACO
今天开始终于可以刷USACO的题啦 准备每一道都发一个题解 1010: 1.3.2 Barn Repair 修理牛棚 时间限制: 1 Sec 内存限制: 128 MB提交: 9 解决: 7[提交] ...