On this page
- A twin is not a 3D model
- Why a twin needs GIS
- Interactive: the six layers of a GIS twin
- Formats and standards that matter
- Two stacks: ArcGIS and open standards
- Keeping it live: frequency, fidelity, IDs
- Interactive: a what-if flood on the twin
- Build it in levels
- Where GIS twins pay off
- Pitfalls we see
- A rollout that ships
- Takeaways
Most “digital twin” demos are a photoreal city you can fly through. They look great and answer nothing, because nothing in them changes when the real city does. A twin earns the name when it stays in step with the place it represents: the pump that tripped five seconds ago is red, the floor plan matches last month's refit, and the flood model runs against today's river level. GIS is what makes that possible. It puts every building, asset, sensor reading and simulation result in one coordinate system with one set of IDs. This post covers the layers, formats and feeds of a GIS-based twin, and the order we build them in.
A twin is not a 3D model
The Digital Twin Consortium's definition is the one we work to: a virtual representation of real-world entities and processes, synchronized at a specified frequency and fidelity. Each part of that sentence rules something out.
- Entities and processes. A twin models things with identity (this valve, this air handler, this bridge bearing) and how they behave, not only surfaces. A mesh with no IDs is a picture.
- Synchronized. Data flows from the real asset to the model, on a schedule or continuously. A model that was accurate on handover day and never updated is documentation.
- At a specified frequency and fidelity. Somebody decided how often each entity updates and how precise it needs to be. A pump needs seconds, a road surface condition needs months. A campus twin rarely needs millimetre geometry, while a tunnel clearance check does.
Why a twin needs GIS
You can build a twin of a single machine without a map. You can't build one of a campus, a utility, a port or a city without one, because the questions are spatial: which buildings are downstream of this main, which assets sit in the flood extent, which sensor belongs to which zone, what a crew can see from the gate. GIS supplies four things a game engine or BIM tool doesn't supply alone.
| GIS brings | What it means in a twin | What breaks without it |
|---|---|---|
| One coordinate reference | Every layer — BIM, LiDAR, cadastre, sensors — registered to a real CRS and a real vertical datum | The building floats 30 m above the terrain because BIM used a local origin and the mesh used ellipsoidal heights |
| Continuity of scale | Pan from a valve to its building, its pressure zone, its catchment and the region without switching tools | Separate 'site' and 'city' models that disagree at the boundary |
| The asset register | Features with IDs, attributes, owners, condition and — for networks — topology | Pretty geometry that can't be joined to work orders or sensors |
| Spatial analysis | Traces, overlays, viewsheds, flood extents, service areas and routing on the same data | Every what-if becomes a separate consulting project with an export |
The coordinate problem is worth spelling out, because it's where most GIS–BIM projects stall. BIM models are usually authored in a local project coordinate system: a survey point, a project base point and a true-north rotation. Photogrammetry and LiDAR come in a projected CRS, often with ellipsoidal heights from GNSS. Your city GIS uses a national grid with orthometric heights above a geoid. The differences run to tens of metres vertically in many regions. Pick one horizontal CRS and one vertical datum for the twin on day one, record the transformation for every source, and check it with surveyed control points, not by eye.
Interactive: the six layers of a GIS twin
We build twins as a stack of layers over the same ground. Each layer answers a different question, arrives in different formats and refreshes at a different rate. Hover to pause, or click a layer.
L1 · What does the place look like today?
Reality capture
Drone and aerial photogrammetry, airborne and mobile LiDAR, 360° imagery. Processed into integrated meshes, true orthos, classified point clouds and — increasingly — Gaussian splats for thin structures and vegetation that meshes handle badly.
Formats
Typical tools
Two things are easy to miss. First, the asset layer is the spine. Reality capture and BIM make the twin look right, but the feature layer with stable IDs and topology is what live data and analysis attach to. Second, the stack isn't built bottom-up in one go. A useful first release often has a coarse 3D base, a good asset layer and a single live feed. The photoreal capture can come later.
| Layer | Answers | Typical formats | Typical tools |
|---|---|---|---|
| L1 · Reality capture | What does the place look like today? | LAS / LAZ · COPC · I3S mesh · point cloud · 3D Tiles + glTF · KHR_gaussian_splatting | ArcGIS Reality · Drone2Map · ArcGIS Pro · CesiumJS |
| L2 · 3D base: terrain and buildings | Where is everything, in one coordinate system? | CityGML 3.0 · CityJSON · I3S 3D object · 3D Tiles · Elevation (COG · LERC) | ArcGIS Pro · CityEngine · PostGIS · CesiumJS |
| L3 · BIM and interiors | What is inside, and what is it made of? | IFC 4.3 (ISO 16739-1) · Revit · DWG · I3S building scene layer · Indoor floor plans | ArcGIS GeoBIM · ArcGIS for Autodesk · ArcGIS Indoors · BuildingSceneLayer |
| L4 · Assets and networks | What is connected to what, and who owns it? | Feature services · OGC API – Features · Utility network · PostGIS tables | ArcGIS Utility Network · ArcGIS Enterprise · PostGIS · pgRouting · GeoServer |
| L5 · Live state | What is happening right now? | MQTT · OPC UA · OGC SensorThings API · Stream services · WebSocket · Time-series tables | ArcGIS Velocity · GeoEvent Server · PostgreSQL time series · Dashboards |
| L6 · Analysis and simulation | What happens if…? | Scenario layers · Time-enabled results · Trace results (IDs) · Model outputs → features | ArcGIS Pro 3D analysis · ArcGIS Urban · ArcGIS Notebooks · Hydraulic / traffic models |
Formats and standards that matter
Twins outlive the software they start on, so the formats matter more than the viewer. The good news is that the 3D streaming problem is largely standardised now. The two formats that matter both have OGC status and are both supported by the major engines.
Capture & author
Drone & aerial imagery
JPEG / TIFF · GNSS · RTK
LiDAR & mobile mapping
LAS / LAZ · COPC
BIM & CAD
IFC 4.3 · Revit · DWG
City models
CityGML 3.0 · CityJSON
GIS features
Geodatabase · PostGIS
Systems & sensors
SCADA · BMS · IoT · CMMS
Model & convert
Reality mapping
Meshes · orthos · point clouds · splats
Georeference
Horizontal CRS + vertical datum
Semantic mapping
IFC classes → layers, IDs kept
Tiling & LOD
Spatial index · level of detail
Stream processing
Filter · geofence · join to asset ID
Stream (open formats)
I3S scene layers
OGC community standard
3D Tiles 1.1 + glTF
OGC community standard · Khronos
OGC API – Features
or ArcGIS feature services
SensorThings API · MQTT
or ArcGIS stream services
Render & act
ArcGIS Maps SDK for JavaScript
SceneView · BuildingSceneLayer
CesiumJS
3D Tiles · terrain · CZML time
Unreal / Unity
ArcGIS Maps SDKs · Cesium for Unreal
Dashboards & field apps
Ops rooms · crews · AR
| Standard | What it carries | Where it fits |
|---|---|---|
| I3S (Indexed 3D Scene Layers) | 3D objects, integrated meshes, point clouds, points and building scene layers with full BIM discipline/category structure | Esri's streaming format, published as an OGC community standard; native to ArcGIS scene services and the ArcGIS Maps SDKs |
| 3D Tiles 1.1 | Hierarchical tilesets of glTF content with implicit tiling and structured metadata per feature | OGC community standard since 2023; native to CesiumJS and widely supported, including 3D Tiles layers in ArcGIS at the time of writing |
| glTF 2.0 + KHR_gaussian_splatting | Meshes and materials; the new Khronos extension adds Gaussian splats | The payload inside 3D Tiles. Khronos released the splat extension in early 2026, with CesiumJS and ArcGIS among the first adopters |
| CityGML 3.0 · CityJSON | Semantic city models: buildings, roads, vegetation, water, with LODs and time-dependent properties | Exchange and storage of city models; convert to I3S or 3D Tiles for streaming |
| IFC 4.3 (ISO 16739-1) | Open BIM: spatial structure, elements, systems and properties, now including infrastructure (roads, rail, bridges, ports) | The vendor-neutral way to bring design and as-built models into the twin; keep IFC GlobalIds |
| LAS / LAZ · COPC | Point clouds; COPC is a cloud-optimised LAZ that clients can read by range request | Archive and analysis copy of LiDAR; stream as I3S point cloud or 3D Tiles |
| OGC SensorThings API | Things, locations, datastreams and observations over REST and MQTT | An open API for the live layer; a common alternative to proprietary IoT platform APIs |
Two stacks: ArcGIS and open standards
We build twins on both. The choice usually follows what the organisation already runs, not the 3D feature list, since both render large scenes well. Many real projects mix them, which the open formats above make possible.
| Layer | ArcGIS stack | Open-standards stack |
|---|---|---|
| Reality capture | ArcGIS Reality, Drone2Map, ArcGIS Pro with the Reality extension → I3S mesh, point cloud and splat layers | Photogrammetry output tiled to 3D Tiles; point clouds kept as COPC and tiled for streaming |
| 3D base | ArcGIS Pro, CityEngine for procedural models, elevation and scene services on ArcGIS Enterprise | PostGIS 3D geometries, CityGML / CityJSON, quantized-mesh terrain for CesiumJS |
| BIM | ArcGIS GeoBIM and ArcGIS for Autodesk, building scene layers from Revit / IFC | IFC converted to 3D Tiles with element properties as feature metadata |
| Assets & networks | Feature services, ArcGIS Utility Network, ArcGIS Indoors | PostGIS + pgRouting, served by GeoServer or OGC API – Features |
| Live state | ArcGIS Velocity or GeoEvent Server; stream layers in the web and native SDKs | MQTT broker, SensorThings API, time-series tables in PostgreSQL, WebSockets to the client |
| Apps | ArcGIS Maps SDK for JavaScript (SceneView), Experience Builder, Dashboards, Maps SDKs for Unity and Unreal | CesiumJS, deck.gl for dense overlays, MapLibre for 2D/2.5D companions, Cesium for Unreal |
Lean to ArcGIS when
- You already run ArcGIS Enterprise or ArcGIS Online and your asset register lives in a geodatabase
- You need a utility network, indoor positioning or out-of-the-box dashboards and field apps
- BIM arrives from Autodesk Construction Cloud and should flow in with its discipline structure
Lean to open standards when
- You want no per-seat or per-viewer licensing for a public-facing twin
- Your data already lives in PostGIS and your team ships web apps, not GIS apps
- You need full control of the renderer, e.g. a custom CesiumJS or game-engine experience
Whichever stack you pick, the live layer comes down to one join: feature ID to latest reading. In CesiumJS it looks like this. Buildings stream as 3D Tiles with an asset_id per feature, readings arrive over a WebSocket, and features are recoloured as tiles come into view.
Keeping it live: frequency, fidelity, IDs
Synchronisation is where twins quietly die. The fix is to write down, per entity type, where its truth lives, how often it changes, and how the change reaches the model. A single “refresh the twin” job won't work, because a pump and a floor plan change at very different rates.
| Entity | Source of truth | Frequency | How it reaches the twin |
|---|---|---|---|
| Pumps, valves, PRVs | SCADA historian | Seconds | OPC UA / MQTT gateway → Velocity, GeoEvent or a SensorThings service → stream layer |
| Room temperature, occupancy | BMS, IoT sensors | Seconds to minutes | MQTT → time-series table; latest value on the space feature |
| Vehicles, crews | AVL / mobile apps | Seconds | Stream service or WebSocket; tracks stored for replay |
| Asset condition, work orders | CMMS / EAM | On change, daily | Webhook or scheduled sync keyed by asset ID |
| As-built geometry, fit-outs | BIM / CAD, field survey | Weeks to months | Re-convert the changed model, republish the scene layer or tileset |
| Reality mesh, point cloud | Drone / LiDAR campaigns | Monthly to yearly | Re-capture the changed area, replace tiles for that extent |
| Forecasts (rain, river, demand) | External models | Hourly | Scheduled notebook writes scenario layers the what-if tools read |
One ID to join them all
Every row above ends in a join, so the twin needs an identity strategy before it needs a renderer. An asset has an IFC GlobalId in the design model, a GlobalID in the geodatabase, an equipment number in the CMMS and a tag name in SCADA. Pick one as the master (usually the GIS or CMMS ID), carry the others as attributes, and make every pipeline resolve to the master. Then check the joins with SQL. Twins that skip this end up matching sensors to buildings by nearest neighbour, which works in the demo and fails at the first multi-storey plant room.
If you're not on ArcGIS, the OGC SensorThings API makes the live layer queryable in a standard way. Things carry your master asset ID in their properties, and one request returns an asset's location and the latest value of each datastream:
Interactive: a what-if flood on the twin
Live state tells you what is happening. Simulation, run on the same model, shows what could happen next and what to do about it. Below is a small twin: a river valley, sixteen buildings, a substation (SUB-3), a clinic and a road network. Raise the water level, try a flood wall, and compare two ways of computing the extent.
- Area flooded
- 68%
- Buildings hit
- 9 / 16
- Road cells cut
- 8 / 16
- SUB-3
- flooded
- Clinic
- dry
SUB-3 floods. Try the flood wall — a prescriptive what-if on the same model.
Three points from the demo carry over to real projects:
- Connectivity matters. At 1.5 m the bathtub model floods the clinic, but the clinic sits in a pocket behind higher ground that the river can't reach until about 1.65 m. A bathtub model is fast and pessimistic. Real twins use hydraulic or hydrodynamic models that account for flow paths, drainage capacity and timing, then bring the results back into the scene as time-enabled layers.
- Impact is a join. “Buildings hit” and “road cells cut” are overlays of the flood extent with the asset layer. Swap in parcels, customers or critical facilities and you have an evacuation list or a crew-routing constraint.
- Prescriptive is a comparison. Adding the wall and re-running the scenario is the step from “what will happen” to “what should we do”. The wall protects SUB-3 up to about 2.1 m. Whether that's enough is a decision for engineers, now made on a shared model.
Build it in levels
Digital-twin maturity models vary in naming but agree on the progression. Each level depends on the one below. You can't predict what you can't describe, and nobody should let a model act on its own if it can't yet predict reliably.
Level 1
Descriptive
What is there?
3D base, BIM and the asset register in one CRS, with IDs.
Level 2
Informative
What is happening?
Live feeds joined to assets; alerts and dashboards by zone.
Level 3
Predictive
What will happen?
Forecasts and simulations run on current state, shown in the scene.
Level 4
Prescriptive
What should we do?
Options compared on the map: isolation plans, routes, defences.
Level 5
Autonomous
Act on its own?
Closed loop to control systems — rare, bounded, human-approved.
Level 5 is rarer than vendor slides suggest, and deliberately so. Control of physical assets stays in SCADA and OT systems with their own safety certification. The twin recommends, and a person or a bounded control loop acts. Plan for levels 1–3, and design the data so that 4 is possible later.
Where GIS twins pay off
| Domain | The twin answers | Core layers |
|---|---|---|
| Water and utilities | Which customers lose supply if this main breaks? Which zone is losing water tonight? | Utility network, SCADA, AMI, isolation traces |
| Campuses and facilities | Which spaces are under-used? Which air handler serves this room, and is it failing? | BIM, indoor maps, BMS and occupancy sensors |
| Cities and planning | What does this proposal do to shadows, sight lines, capacity and flood risk? | 3D base, zoning, proposals, scenario layers |
| Construction | Is the site where the schedule says it should be? Where do design and reality differ? | BIM, 4D sequencing, drone captures over time |
| Ports, airports, logistics | Where is every asset and vehicle, and what is blocking the flow? | 3D site model, AVL, gate and yard systems |
| Public safety and defence | What does the operator on the ground see, and what does the ops room know? | Terrain, reality mesh, live tracks, a common operating picture |
For the water case in depth, including isolation traces and SCADA on the network model, see ArcGIS Utility Network for water distribution. For the ops-room case, a twin is often the backdrop of a TAK-connected common operating picture. Our own Earth Explorer app shows a smaller version of the same idea: OGC sensor observations on a 3D globe, on a phone.
Pitfalls we see
Works
- One decision per first release, with a named user and a measurable result
- One CRS and vertical datum, checked against surveyed control points
- A master asset ID, with every feed and model resolving to it
- Streaming only the BIM categories and properties operations use
- Open streamed formats (I3S, 3D Tiles), so viewers can change later
- A synchronisation register with an owner per row
Does not
- Buying a city-wide photoreal mesh before anyone has asked a question of it
- Eyeballing BIM into place and discovering a 30 m height error in production
- Matching sensors to assets by proximity
- Publishing entire Revit models with every parameter, then wondering why mobile crashes
- One-off exports into a game engine that nobody can refresh
- A live feed with no monitoring, so the twin shows yesterday and nobody notices
A rollout that ships
- 01
Pick the decision and the user
“Plan valve isolations in minutes”, “cut space costs on campus”, “brief the council on flood options”. One decision sets which layers, fidelity and frequency you need. - 02
Write the synchronisation register
Entities, source systems, frequency, fidelity, the master ID and an owner per row. This page is the real specification of the twin. - 03
Build the ground truth
CRS and datum, 3D base, asset layer with IDs and topology. Bring in BIM for the buildings that matter to the decision. Capture reality only where it adds context. - 04
Connect one live feed end to end
From sensor to asset ID to the scene, with monitoring for staleness. One working feed shows more about the architecture than ten on a diagram. - 05
Ship one app to one team
A web scene for the ops room or a tablet app for crews. Put it in daily use, collect complaints, fix them. - 06
Add what-if, then widen
Scenario layers and simulation on the proven base, then the next decision, the next team and the next feed. The twin grows by use cases, not by layers.
Takeaways
Takeaways
- 01A twin is synchronised, not rendered. What makes it a twin is a model of entities that stays in step with reality at a frequency and fidelity someone chose.
- 02GIS is the frame. One CRS and datum, continuity from asset to region, an asset register with IDs, and spatial analysis on the same data.
- 03The asset layer is the spine. Reality capture and BIM make the twin look right. Features with stable IDs and topology are what live data and analysis join to.
- 04Stream open formats. I3S and 3D Tiles (with glTF, now including Gaussian splats) let you change engines without re-processing data.
- 05Synchronisation is a register, not a job. Each entity has its own source, frequency and owner, and one master ID joins them all.
- 06Grow by decisions. Describe, inform, predict. Get levels 1–3 working for one team before adding the next use case.