2 ms·
The PNG format already allows grayscale 16bits / channel images. I regularly use this when rendering out depth maps from blender and ffmpeg seems to handle read
by tristanc 4y ago
The PNG format already allows grayscale 16bits / channel images. I regularly use this when rendering out depth maps from blender and ffmpeg seems to handle reading from these PNGs just fine (detecting the gray16 pixel format).
However I don’t know of any DEM tile apis that provide these sorts of PNGs but it sounds like a fun project!
Edit: I found this StackExchange post which shows how to generate 16-bit PNGs with gdal https://gis.stackexchange.com/questions/246934/translating-geotiff-to-16-bit-png-with-gdal https://gis.stackexchange.com/questions/246934/translating-g...
- tppiotrowski 4y agoI hacked up a quick script and converted https://s3.amazonaws.com/elevation-tiles-prod/terrarium/0/0/0.png https://s3.amazonaws.com/elevation-tiles-prod/terrarium/0/0/... to 16-bit (2 channel) PNG. Any value below sea level I set to 0. Any value above sea level I converted using the following formula: scaled = elevation * Math.floor[(256 * 256) / (8849 - 0)]; top_byte = scaled / 256; bottom_byte = scaled % 256; This provides accuracy to 1/7th of a meter compared to 1/10th of a meter with Mapbox but the tile size went from 104KB -> 25KB. For applications that can ignore elevations below sea level, this is a huge savings. Edit: the top level tile has a lot of ocean so the size savings are better than average. On a tile with no water, the savings appear to be around 50%.