Hi everyone, I’m working with VEA Systems on a project supporting GICHD’s (Geneva International Centre for Humanitarian Demining) work on Explosive Remnants of War (ERW) in urban environments. Unlike traditional minefields, this is about mapping hazardous zones across complex urban terrain — buildings, infrastructure, and mixed-use areas where ERW risk needs to be visualized and tracked over time. We’re exploring how Cesium’s 3D geospatial visualization and digital twin capabilities could support this — terrain/building context, hazard zone overlays, and progress tracking of clearance operations. Worth noting that IMAS (International Mine Action Standards) tooling today is largely Esri ArcGIS-based, so we’re also thinking about how a Cesium approach would integrate with or complement that existing ecosystem. A few questions for the community: 1. Has anyone here built similar hazard-mapping or risk-visualization applications with CesiumJS or Cesium ion, particularly for urban/complex environments rather than open terrain? 2. Any recommended approach for layering custom hazard/risk zone data on top of 3D terrain and imagery? 3. Best practices for integrating Cesium with existing Esri ArcGIS-based data and workflows? Would love to learn from anyone who’s tackled similar use cases, or point me toward relevant examples/docs. Happy to share how this develops as we build it out. Thanks! Ed Vea, VEA Systems
Hi Ed, welcome to the community!
This sounds like a strong fit for CesiumJS. Some thoughts on each of your questions.
1. Similar applications
I’m not aware of a public demining or ERW application built on Cesium specifically, but risk and hazard visualization over urban 3D context is a well-trodden CesiumJS pattern, with adjacent examples in disaster response, emergency preparedness, and defense. The user stories on the Cesium blog are worth browsing. Hopefully others here with similar projects will chime in too.
2. Layering hazard/risk zones on 3D terrain and imagery
A typical stack for what you describe:
- Urban context: either Cesium World Terrain plus Cesium OSM Buildings (both streamed from Cesium ion), or Google Photorealistic 3D Tiles on their own (those include terrain and buildings already, so you don’t combine them with a separate terrain layer).
- Hazard zones: load polygons as GeoJSON, KML, or CZML. With
clampToGround, GeoJSON polygons drape onto terrain, and by settingclassificationTypethey can also drape onto 3D Tiles buildings, which matters in dense urban areas. See the Classification example in Sandcastle. - Attributes: properties on your GeoJSON/CZML features (hazard status, survey date, clearing organization, etc.) come through as entity properties, so clicking a zone shows them in the info box out of the box.
- Tracking over time: CZML is built for time-dynamic data. You can give each hazard zone intervals so its color, extent, or availability changes as clearance progresses, and scrub through the operation on the timeline. The CZML Polygon intervals and availability example shows the mechanics.
- Scale: if your hazard datasets grow large, Cesium ion recently added GeoJSON vector tiling, which converts big GeoJSON into 3D Tiles that stream efficiently and stay styleable and queryable per feature.
- Sensitivity: ERW data is often operationally sensitive. ion assets are private and token-scoped by default, and Cesium ion Self-Hosted exists if the data can’t leave your infrastructure.
3. Integrating with ArcGIS
There are several integration paths, roughly from loosest to tightest coupling:
ArcGisMapServerImageryProviderconsumes ArcGIS map services (MapServer) directly as imagery layers in CesiumJS, using pre-cached tiles when available or falling back to the dynamic export endpoint.ArcGISTiledElevationTerrainProviderdoes the same for ArcGIS elevation image services, as long as the service is tiled and in Web Mercator or WGS84.- CesiumJS has native I3S support, so Esri scene layers of type 3D object, building, and integrated mesh can be loaded directly with
I3SDataProvider. - For features, ArcGIS feature services can return GeoJSON (
f=geojsonon the query endpoint, when the layer’ssupportedQueryFormatsincludes geoJSON), which CesiumJS loads directly, or which you can tile through ion for larger datasets. - Going the other direction, ArcGIS added 3D Tiles support in Pro (3.2+) and the Maps SDK for JavaScript (4.29+, integrated mesh), so tilesets you produce with ion can generally be consumed on the Esri side too. Their support is partial though I believe: no point clouds, no implicit tiling, and limited 3D Tiles 1.1 features if I remember correctly
Given that the IMAS tooling ecosystem is ArcGIS-based, a pattern that works well is keeping ArcGIS as the system of record and using Cesium as the 3D visualization and communication layer, with both reading from the same feature services. That way you complement the existing workflow rather than migrating it.
Please do share your progress here as you go.
Thanks Darcy - I am going to take your advice and start in on the suggestions and then let you know of my progress. Ed