What does your atmospheric model output? Georeferenced 2-dimensional raster imagery? Database attribute tables with X-Y or Z values? For how large or small an area?
Some of my friends work as mountain weather observers, and I wondered how you would visualize your atmospheric data in 3D…?
Imagery is draped over a terrain surface for 3D visualization by Cesium.
It is possible, using 3rd party tools, to develop custom terrain height models, which may be based on the earth’s surface or an artificial surface, such as a computer game environment.
I looked into this, hoping to develop an artificial surface for a few square km of mountainous terrain, using 3D modeling software (i.e. Blender, SketchUp). In the Cesium viewer, 3D mode, you can drape single (small) images, or image tiles for a large area, over custom terrain. I had difficulty converting my custom 3D surfaces into a (tiled) terrain provider format that was compatible with Cesium, and decided the complexity of this solution outweighed the benefits. It might be less complex to drape imagery over a simple custom terrain model, such as an ellipsoid surface extruded by a single height value.
If you could generate a 3D surface model of your data, for example, the 500 hpa elevation; then you could drape your georeferenced 2-dimensional raster imagery over this.
However, Cesium only supports one terrain, so with this approach, you could look down at your data layer overlaying the 3D globe from space, but you would not be able to see the earth’s surface underneath your data…
If your atmospheric model output could be converted into polygons (i.e., in GeoJSON format), then Cesium could be used to load and visualize these polygons floating above the earths surface. The polygons can be color-coded using an attribute, and can be transparent (%) or opaque. You could write code to sample terrain height-above-ellipsoid at each vertex of the polygon boundaries, and add that value to the meters above-earth-surface Z value of each vertex. I successfully load geoJSON polygons using this approach, but was not happy with the 3D visualization results; polygons with coincident boundary vertices did not display as edge-matched, continuous polygons in Cesium; at the map scale I was using, Cesium rendered scenes of the data that were unusable for our purpose.
A few footnotes:
There are multiple 3D terrain services that are publicly available for 3D visualization in Cesium, based on various digital elevation models of the earth’s real surface, (i.e.AGI’s STK World Terrain, ESRI’s World DTM Image Server).
Cesium’s default 3D height is above the ellipsoid, not above the earth’s surface. For an explanation of the difference between the two, search “geodesy”, which is beyond the scope of CesiumJS. One issue for Cesium developers is “ground collision”, when attempting to overlay GPS point as markers & billboard labels on 3D terrain, when the Z values are not “above ellipsoid”, or simply the wrong units (feet vs. meters). This could be an issue, if your atmospheric model output could be converted into a point cloud of discrete X-Y-Z label points.