返回 BIM 与 IFC 博客
城市数字孪生是城市某一局部的 3D 模型,并与那里正在发生的事情保持连接。模型说明什么东西在什么位置:地面、建筑、街道,以及其中的各类资产。连接则说明它们此刻处于什么状态:一个单车停车桩空了,一辆公交车停在停靠位上,一列火车晚点了。
数字孪生联盟(Digital Twin Consortium)将数字孪生定义为“对现实世界实体和过程的虚拟表示,并以指定的频率和保真度保持同步”[dtc]。大多数 3D 城市模型缺少的正是“频率”这一部分。本文用三个你现在就能打开的孪生,说明其余部分是什么样子;它们都基于各自城市的开放数据构建,并在浏览器中运行。
要点
- 数字孪生是模型加上与所建模场所之间的实时连接。缺少这种连接的 3D 城市模型只是一张好地图,算不上孪生。
- 城市孪生由五层叠加而成:地面、城市环境、精细的资产模型、绑定和实时状态。每一层来自不同的来源,按各自的节奏刷新。
- 只要数据发布方允许浏览器请求,整套结构就能基于开放数据在访问者的浏览器中运行:不需要平台,也不需要我们自己的服务器。
- 下文的巴塞罗那、赫尔辛基和东京案例都是实时的:单车停车桩、公交停靠位和一个车站出入口,都由所在城市的数据源着色。
模型怎样才算孪生
需要三样东西,而第三样常常被人忽略:
- 一个真实场所的模型:包含其中各个对象的几何、标识和数据,并放置在它们真实所在的位置。
- 与该场所当前状态的连接,并以已知的频率刷新:公交车每秒一次,单车停车桩每分钟一次,空气质量每小时一次。
- 对这些状态加以利用:显示在模型上,按规则检查并发出警报,保存为可以回放的历史记录。
没有第二样,你得到的是 3D 城市模型,它依然有用:日本通过 PLATEAU 发布其城市的开放模型[plateau],赫尔辛基也发布了自己的模型[helsinki3d],大多采用开放的 CityGML 标准[citygml]。这类模型与孪生之间的区别,逐步拆解见 BIM 与数字孪生的区别。
城市孪生的五层结构
巴塞罗那孪生的五层结构,自下而上从地形到实时读数。所有数字都取自它的场景文件。
- 地面 承载其余各层的高程模型。在巴塞罗那,用的是 ICGC 的 5 m 地形模型,这样模型就立在街面上,而不是悬浮在上方或陷进地面。
- 城市环境 资产周围的建筑和街道,这里取自 OpenStreetMap,并与模型采用相同的投影绘制,这样地图上的路缘石就能与 IFC 中的路缘石对齐。
- 资产模型 你关心的对象,精细建模:这里是八个 IFC 4.3 文件,包括喷泉、带停车桩的 Bicing 站点、一个地铁出入口和一个电动汽车充电桩,每个都按自身的地理配准放置。
- 绑定 把数据源与构件联系起来的环节:哪个数据源、其中哪个设备、哪些 IFC 构件、什么数值对应什么颜色。没有绑定,实时数据只是模型旁边的一串数字。
- 实时状态 读数本身,各有各的节奏:Bicing 每 60 秒一次,电动汽车充电桩每 5 分钟一次,空气质量每 15 分钟一次。读数一旦比数据源允许的时效更旧,就会变灰,而不会被当作最新数据。
大部分工作量和大部分故障都出在层与层之间:模型偏离所在街道几米;停车桩是组合构件的组成部分,导致绑定一个构件也找不到;数据源的时间戳与表面含义不符。下面每个案例都分别讲到其中一种情况。
三个实时案例
每个案例都由一个场景文件加上所在城市的开放数据驱动。打开后,点击任意对象即可查看其数据,用“探索”可在各个实时点位之间跳转。
巴塞罗那:单车停车桩与电动汽车充电桩
实时的加泰罗尼亚广场
巴塞罗那 3D 地图上的八个 IFC 模型。Bicing 停车桩和 Endolla 充电桩车位的颜色取自城市的数据源。

打开交互式 IFC 查看器
广场周围有八个经过地理配准的 IFC 模型,Bicing 65 号站点和一个路边充电桩绑定到各自的实时数据源,交通和空气质量则作为地图图层显示。从数据源到着色的停车桩,完整的搭建过程见加泰罗尼亚广场实时数字孪生。
赫尔辛基:停靠位上的公交车
赫尔辛基中央火车站旁的 Elielinaukio:公交车进站、停靠、开门时,对应的停靠位会随之变色。
三个 IFC 模型(火车站、大教堂和公交总站),以及九个绑定到 HSL 实时车辆位置的停靠位;这些位置通过 MQTT 推送,每辆公交车大约每秒一条。为什么用 MQTT 而不是 GTFS-Realtime,以及站点 ID 如何对应到停靠位,见基于 MQTT 的实时公交总站孪生。
东京:一个车站出入口和一个电车站
都厅前站 A4 出口:都营标志显示大江户线的运行状态,站名标牌显示停在站台的列车,公交站牌杆显示刚经过的公交车。
两座车站绑定到 ODPT 开放数据:列车位置、线路状态,以及在页面上解码的都营公交 GTFS-Realtime 数据源。详细内容,以及 ODPT 能告诉你什么、不能告诉你什么,见基于 ODPT 开放数据的东京车站孪生。
数据如何到达模型
三种传输方式,一条规则:只有发布方发送 CORS 头,浏览器才能读取该数据源。
每个请求都从访问者的浏览器直接发往发布方。只有发布方在响应中带上 CORS 头,这才可行;CORS 头允许其他网站上的页面读取响应。巴塞罗那的共享单车和充电数据源、HSL 的 MQTT 数据流以及 ODPT 的公共端点都带有 CORS 头;HSL 的 GTFS-Realtime 数据源则没有,所以赫尔辛基孪生改用 MQTT 数据流。
浏览器孪生的边界
- 私有数据或需要密钥的数据。浏览器和数据源之间需要一台服务器。
- 大规模仿真。覆盖整个街区的洪水、能耗或人流模型,所需的计算量超出了一个网页应当承担的范围。
- 控制。能开关设备的孪生需要身份认证、审计记录和可靠的连接,而不是一个公开链接。
- 手机。完整场景已在桌面浏览器上测试过;在手机上尚未实测。
用你自己的模型搭建一个
- 把你的 IFC 放到地图上 在 3D 地图上打开它,检查它是否落在应有的位置:如何在 3D 地图上查看 IFC。
- 位置不对就修正地理配准 大多数位置错误的模型,都是缺少 IfcMapConversion 或其设置有误:IFC 坐标与地理配准。
- 添加数据源和绑定 将设备数据源指向一个返回 CORS 头的数据接口,再按 IFC 类加名称或按 GlobalId 把它绑定到构件。
- 分享出去 把它保存为场景文件,或打包进一个链接,然后嵌入到大家日常工作的地方:如何嵌入 IFC 查看器。
什么是城市数字孪生?三个可以直接打开的实时案例