Best Practices for Converting Orthometric Heights to Ellipsoidal Heights in Cesium?

It is fairly common for us to receive data with orthometric heights. To view this in the correct location in Cesium, we need to determine the geoid offset and then apply a vertical translation to the asset, either before or after tiling.

We are interested in understanding how others in the Cesium community approach this problem, particularly at scale.

A few questions:

  1. What is the recommended workflow for handling orthometric height data in Cesium?
    • Do you generally convert orthometric heights to ellipsoidal heights prior to tiling?
    • Or do you apply offsets to the resulting tilesets after tiling?
  2. How do you handle large datasets that span multiple geoid grid cells or cover large geographic extents?
    • A single vertical offset is often insufficient when the geoid separation varies across the dataset.
    • Have you developed workflows for applying spatially varying corrections, either before or during tiling?
  3. I noticed that some orthometric references are supported in the new Cesium Design Tiler.
    • Are there plans to support additional vertical datums/geoid models, for example geoid grids available through the PROJ CDN?
    • If so, would this functionality eventually be available across other tilers, such as the Point Cloud Tiler?

Orthometric heights are extremely common in engineering, surveying, and national mapping datasets, so it would be great to understand both the current best practices and the long-term roadmap for supporting vertical datum transformations within the Cesium ecosystem.

  1. There are ways to embed the correct vertical datum into the data itself, depending on the data type. Cesium tilers for the most part respect whatever coordinate system they can derive from the metadata. For example, LAS (read the spec https://docs.ogc.org/cs/17-030r1/17-030r1.pdf) stores coordinate system information in geotiff keys. Geotiff heightmaps likewise store the coordinate system in geotiff keys. Try putting the correct coordinate system into your data with tools like gdal or las2las
  2. If you know the geoid your heights are in, you can put that in the coordinate system metadata for the data format you are working in (see above). For a geotiff heightmap, i would use gdal_translate — GDAL documentation . that looks like gdal_translate -a_srs EPSG:4326+5703 myFileWithoutGeoid.tiff myFileWithGeoid.tiff if i want NAVD88 GEOID12B for example. Then when Cesium sees this, the tilers know the right height to put your data. you must know the coordinate system and specify it correctly

You can usually translate whatever coordinate system you need into WKT2 to be able to specify and add them into your data with above tools and others like them. PROJ is helpful for that.