Cesium¶
Cesium is a both a JavaScript library and platform for visualising geographic information in 3D on a virtual globe similar to Google Earth. CesiumJS is an open source JavaScript library for visualising this data in a web browser without a plugin. It uses WebGL for hardware-accelerated graphics and supports dynamic-data visualization. Cesium provide a cloud hosting service called Cesium Ion which has free and paid tiers. Cesium are also working to advance the 3DTiles standard for streaming geographic datasets. Most recently Cesium have introduced a plugin for the Unreal Engine called Cesium For Unreal.
Personal Experience¶
In the past I had experiemented with CesiumJS in the browser but as most of my work was in Unity I didn't have much use for it. However the release of Cesium for Unreal provided a new means of interacting with the platform that better suited my existing workflow. After producing my own 3DTiles using FME, the potential for integrating CesiumJS with other web-based tools and frameworks reignited my interest. Typically I'd use the Unreal plugin for first-person, architectural and district scale experiences with higher end graphics, and use CesiumJS for district and regional scale visualisations and interactions via the web.
Tools & Software Integrations¶
- cesium-terrain-builder by the GeoData Institute. A C++ library and associated command line tools designed to create terrain tiles for use in the Cesium JavaScript library. For convenience the Technical University of Munich GIS department maintain a Docker container cesium-terrain-builder-docker.
Recommended Plugins¶
N/A
Resources¶
N/A
Notes and Troubleshooting¶
Configure Cesium for Offline Use¶
- The default imagery provider in CesiumJS is Cesium ion global imagery via Bing Maps. To use another provider pass it into the constructor for the
Viewerwidget. Otherwise, CesiumJS ships with a low-resolution set of images from Natural Earth II inAssets/Textures/NaturalEarthII. - The
BaseLayerPickeralso includes options for several sample online imagery and terrain sources. In an offline application you can disable that widget completely by passingbaseLayerPicker : falseto theViewerwidget's constructor.
const viewer = new Cesium.Viewer("cesiumContainer", {
imageryProvider: new Cesium.TileMapServiceImageryProvider({
url: Cesium.buildModuleUrl("Assets/Textures/NaturalEarthII"),
}),
baseLayerPicker: false,
geocoder: false,
});
Alternatively use the imageryProviderViewModels and terrainProviderViewModels options to configure the sources that will be available in your offline application.
Source: Offline Guide
Hide Cesium Timeline and Animation Controller¶
viewer = new Cesium.Viewer(‘cesiumContainer’, {
timeline: false,
animation: false,
});