返回 BIM 与 IFC 博客
工具与对比 · 2026-10-10 · 12 分钟
在浏览器中对 IFC 模型做暴雨内涝模拟:设置指南
暴雨来袭时,水会流向哪里?会不会到达门口?一个已地理配准的 IFC 模型,加上其下方的地面和周边街道,就足以在浏览器里、不到一分钟内给出初步答案。本文介绍如何设置模拟,让这个答案有参考价值,以及如何解读结果。
IFC Viewer Online 中的暴雨内涝模拟:W Barcelona 酒店的 IFC 模型位于 Barceloneta 的三维地图上,周围以蓝色显示一场极端暴雨的最大淹没水深
“如果两小时内降雨 120 mm,水会流向哪里?会不会到达门口?”这个问题会出现在设计评审和规划沟通中,附近街道每次被暴雨淹没时也会被提起。通常的答案是去请水力顾问,或者直到项目后期都没有答案。
一个已地理配准的 IFC 模型,本身就包含初步回答所需的大部分信息:建筑的位置、占地轮廓和首层。再加上其下方的地面和周边街道,二维暴雨内涝模拟就能在浏览器中、几秒之内显示地表水在哪里流动、在哪里汇集,有多深、流得多快。它是示意性的,不是经认证的研究;本指南讲的就是如何设置,让这个示意值得参考。
要点
- 内涝模拟的好坏取决于地面。请使用地图的地形起伏或 DEM,并在相信任何一个数字之前,先读一遍“模拟识别到的内容”报告。
- 单元尺寸是尺度问题:门和路缘石用 1 m,一个街区用 2 m,一个片区用 5 m。
- 保持 OpenStreetMap 周边环境开启。硬化的街道、能吸水的公园、墙体、相邻的建筑以及已经消失的河流,都会改变水的去向。
- 结果包括最大淹没水深、流速和到达时间,以及低于旁边水位的门、空间和设备,并可导出为 GeoTIFF 供 GIS 使用。
- 它回答的是“地表水会在哪里汇集?”,而不是“这是否合规?”。没有排水管网,河流涨水也还不能作为输入。
试一试:Hotel Vela 上的一场极端暴雨
在加泰罗尼亚制图与地质研究所的地形上加载 W Barcelona 酒店的 IFC 模型和来自 OpenStreetMap 的周边环境,然后在你的显卡上运行两小时 120 mm 的降雨。地图在联系其数据提供方之前会征求你的同意。

打开交互式 IFC 查看器
能模拟什么,不能模拟什么
雨水落在覆盖模型及其周边的规则网格的每个单元上。随后,水按局部惯性形式的二维浅水方程运动[bates2010],并采用 de Almeida 等人的通量加权方法[dealmeida2012]。水往低处流,在洼地积聚,绕墙而行;如果你允许,还会从边界流出。屋面把雨水交给其脚下的街道,地面则按土壤和地表覆盖情况下渗。
全部计算都在你的显卡上运行,使用 WebGPU;不支持时则使用 WebGL2。GPU 结果已与 CPU 参考实现对照:时间步数相同,水量在小数点后六位一致。每一步都会核算水量,面板会显示质量平衡误差,通常约为百万分之一。
它不模拟的内容:
- 排水管网。雨水口和管道不在模型中。屋面可以设为“排入排水管网”,被建筑围合的内院视为已排水,但街道上的水会一直留在街道上。
- 河流和海洋。输入是降雨。河流涨水或风暴潮还不能作为输入。
- 作为开口的门和窗。建筑是实体;模拟报告的是每个构件外侧的积水,而不是水是否进入。
- 风、波浪、泥沙和漂浮物。
逐步设置
- 打开已地理配准的模型 把你的 IFC 拖进查看器。如果它声明了自身位置(IfcMapConversion),地形和街道就会从正确的位置加载。如果没有,请先在地图上手动放置。
整合模型:把结构模型和建筑模型一起加载。缺少楼板和地下室墙的建筑模型会把首层识别为架空,面板会提示水会从其下方流过。
- 开启地图和地形起伏 依次选择“地图 → Show on map → Terrain”。第一次使用时,地图会征求你的同意,以联系其数据提供方。在加泰罗尼亚,地形起伏来自 ICGC 的 5 m 裸地表模型;其他地区则使用约 30 m 的全球拼接数据。
30 m 的地形起伏看不到路缘石或下沉式车道入口。对于真实场地,请在面板中导入 DEM(.asc 或 GeoTIFF)。
- 打开“内涝” 从工具栏打开,或选择“工具 → 内涝”。
- 选择网格 单元为 1、2 或 5 m,并在模型周围留出边距(默认 60 m)。
- 检查地面和建筑 保持“使用地图的地形起伏”“地图中的建筑作为障碍物”和“OpenStreetMap 周边环境”开启。屋面排至街道,除非你确定其雨水立管接入排水管网。
- 选择暴雨 共有四个预设,从 30 分钟 10 mm 到 2 小时 120 mm;也可以点“编辑”,以五分钟为间隔手绘你自己的降雨过程。然后设置雨停后继续模拟多长时间。
- 设置地表和土壤 糙率从铺装到茂密植被,土壤从不透水到砂质土。开启 OpenStreetMap 周边环境时,街道、公园和林地会逐个单元设置各自的取值。
- 选择边界 “水可流出”让水从区域流出。“封闭”则留住每一滴水:这是最不利工况,也是没有出口的汇水盆地的正确选择。
- 生成网格,再看它识别到了什么 点击“生成网格”,然后在运行任何模拟之前先检查报告(见下一节)。
- 开始模拟 在 100 × 100 个单元的网格上,一场两小时的暴雨只需几秒,即使用集成显卡也是如此。
面板从上到下,按做决定的顺序排列。此处:1 m 单元、地图的地形起伏、OpenStreetMap 周边环境、极端预设和封闭边界。
会改变结果的设置
| 设置 | 选项 | 何时重要 |
|---|
| 单元 | 1 · 2 · 5 m | 影响水流的最小要素必须至少有一个单元宽:在 5 m 单元上,15 cm 的路缘石并不存在。单元尺寸减半,单元数量变为四倍。 |
| 地面 | IFC 地形 › DEM › 地图地形起伏 › 填补 › 平面 | 第一个能提供数据的来源生效。演示平面只是占位:在它上面得到的结果几乎说明不了场地的情况。 |
| 将地面贴合到模型首层 | 开 · 关 | 当 IFC 声明的高程与地形相差超过 0.5 m 时。关闭时,一个悬浮在地面以上 2 m 的模型永远不会被淹;被埋入地下的模型则从一开始就被淹没。 |
| OpenStreetMap 周边环境 | 开 · 关 | 街道为硬化地面,公园可以吸水,墙体和相邻建筑会挡水,旧河道会被标出。关闭时,模型以外的一切都是同一种均匀地表。 |
| 屋面 | 排至街道 · 排入排水管网 | 大面积屋面的雨水落在其脚下。如果雨水立管接入排水管网,街道就一点也得不到。 |
| 暴雨 | 预设 · 手绘 | 总量和峰值都重要:45 分钟 60 mm 的峰值为 160 mm/h,2 小时 120 mm 的峰值为 120 mm/h。 |
| 土壤 | 不透水 · 压实土 · 壤土 · 砂质土 | Horton 下渗:开始时快,随着土壤湿润而变慢。砂质土开始时为 125 mm/h,之后为 25 mm/h;压实土先是 25,后为 3。 |
| 边界 | 水可流出 · 封闭 | 封闭是最不利工况:每一滴水都留在区域内,水会在最低的边界处积聚。 |
三个数据来源按可信度排序,组合成供求解器使用的同一个网格。
信任结果之前:模拟识别到了什么
点击“生成网格”后,面板会列出网格中包含的内容。花两分钟读这份报告,能省下一下午得出错误结论的时间。
巴塞罗那 Torre Poblenou:ICGC 5 m 地形起伏,来自 OpenStreetMap 的 93 条街道、3 条旧水道或暗渠和 36 栋建筑;模型声明的高程比周围地面高 1.8 m,因此地面被贴合到其首层。
- 地面:“地图地形起伏”或“导入的 DEM”。“平面”表示结果针对的是一个平坦的演示地表,而不是你的场地。
- 低分辨率地形:在加泰罗尼亚以外,地图的地形起伏为约 30 m 的数据。它看不到街道,因此任何需要细节的分析都应导入 DEM。
- 高程不符:模型声明的高程与周围地面不一致。值得在 IFC 中修正(IfcMapConversion.OrthogonalHeight)。
- 雨棚多于墙体:通常是只加载了建筑模型,而没有加载结构模型。
- 内院:视为由其自身的雨水口排水,因此不接收屋面雨水。
- OpenStreetMap 不可用或数据不完整:周边环境来自地图瓦片,不含水道和墙体,或因元素数量上限而被截断。点击“重新生成”会再次请求。
解读结果
有三种视图为水着色:“当前淹没深度”“最大淹没深度”(事件期间各处达到的最高水深)和“流速”。“流线”显示水的流动方向。“显示下限”会隐藏浅于阈值(默认 5 cm)的水,免得湿漉漉的路面看起来像被淹了。
巴塞罗那 Hotel Vela,2 m 单元,极端暴雨,水可流出:峰值时(第 55 分钟)有 6,772 m² 被淹。最深处超过 1 m,是相邻建筑墙脚的低洼点:这正是到现场需要查看的位置。
底部的时间轴以每秒 1、5 或 20 分钟模拟时间的速度回放整个事件,上方显示降雨,下方显示淹没面积。“探针”读取单个点:当前时刻的水深和流速、达到的最大水深、水到达的时间,以及整个事件的水深曲线。
峰值时(第 55 分钟)的流速与流线。流得快的水比它的深度所显示的更危险。
水会到达的门、空间和设备
模拟结束后,查看器会把模型中的门、窗、出入口(坡道、楼梯、电梯)、空间和设备,与各自旁边的最高水位进行比对,列出低于该水位的构件,并给出水深和水到达的时间。该列表显示在内涝面板中,也会作为一个分组出现在“验证”面板里。它不计入验证结果,也不计入 Health Score(健康评分)。
Poblenou,1 m 单元,极端暴雨,封闭边界:检查的九个构件中,有一个低于其旁边的水位。
最低点低于室外地面的构件(地下室、下沉式出入口)会单独列为“地面以下”。对它们而言,数值表示室外的积水深度;水是否进入,取决于模拟未建模的开口。在 Hotel Vela 上,共检查了 309 个构件,报告了三个,全部位于地面以下:两个地下室区域和首层大堂。
开启 OpenStreetMap 周边环境时,水到达的相邻建筑也会被列出:按水深从深到浅排序,OpenStreetMap 中有名称的会显示名称,并在地图上以琥珀色到红色勾出轮廓。点击即可飞到对应建筑。
导出
- 图像(PNG),图中绘有图例、时刻和“示意性”说明。
- 整个事件的视频,约 16 秒,每一帧都带有同样的图例。
- 整个网格的 GIS 文件:最大水深、最大流速和到达时间,格式为 GeoTIFF、ESRI ASCII 栅格或有水单元的 CSV。北向朝上;模型已地理配准时采用模型的坐标系(例如 EPSG:25831),建筑为无数据(NoData)。可以直接在 QGIS 或 ArcGIS 中打开。
运行速度
每秒计算对应的模拟时间
- 250 × 250 个单元(2 m:500 × 500 m): 1550×
- 500 × 500 个单元(2 m:1 × 1 km): 665×
- 1000 × 1000 个单元(2 m:2 × 2 km): 210×
集成显卡上的 WebGPU(AMD Radeon Vega,Ryzen 5 5600H),Chrome,2 m 城市测试案例。深水会让计算变慢:水深 1 m 时,速度约为一半。
上文的 Hotel Vela 算例为 130 × 114 个单元,在 WebGL2 上以约 690 倍实时速度运行:两个半小时的事件约 13 秒算完。
哪些数据会离开你的浏览器
与模型有关的数据一概不会。模拟读取已经加载的内容,结果保存在你的设备上。开启地图时,地图瓦片、地形起伏和 OpenStreetMap 周边环境来自公共数据提供方,它们会看到所在区域和你的 IP 地址,这与任何网络地图相同。地图在第一次请求前会征求你的同意,可在“地图 → Data and permission”中撤回。这些示例中的地形起伏来自 ICGC[icgc-met],周边环境来自 OpenStreetMap。
分享内涝结果之前
- 地面是真实的:使用地图的地形起伏或 DEM,而不是演示平面。
- IFC 与地形之间的任何高程不符都已弄清;如果是 IFC 有误,已在 IFC 中修正。
- 结构模型已与建筑模型一同加载,因此首层被识别为墙体,而不是雨棚。
- 单元尺寸足以看清你关注的对象:门和路缘石需要 1 m。
- 暴雨用数字说明(总量、历时、峰值),而不是说成“百年一遇暴雨”。 — 重现期属于特定地点。只有该地点的降雨统计数据,才能把它换算成毫米数。
- 图像或视频带有图例和“示意性”说明。导出时默认带有。
附近有被埋到街道下的河流?模拟会标出 OpenStreetMap 中的旧河道和管道化水道,并测量其上方的积水。详见暗河与内涝风险。如果要先把模型放到地图上,请参阅如何在三维地图上查看 IFC。
参考文献
- 用于高效二维洪水淹没模拟的浅水方程简单惯性格式 — Journal of Hydrology 387 · Bates, Horritt & Fewtrell. 本模拟求解的格式:规则网格上的局部惯性浅水方程。
- 提高二维洪水模拟中浅水方程简单格式的稳定性 — Water Resources Research 48 · de Almeida, Bates, Freer & Souvignet. 让该格式在很浅的薄层水流上保持稳定的通量加权方法。
- 高程:数字地形模型 — Institut Cartogràfic i Geològic de Catalunya. 本指南示例所用的 5 m 裸地表模型。
在浏览器中对 IFC 模型做暴雨内涝模拟:设置指南