We’re a customer of Whirlyglobe and quite impressed with the cesium integration. What is the feasibility & cost involved with supporting the product in a offline format on a iOS device? Is this allowed? Can the data be realistically small enough?
I’m not exactly sure how much space this would use, but you should be able to run Cesium offline on your iOS device. You will need to store the imagery on the device. We include NatrualEarthII imagery that’s a pretty small size in Source/Assets/Textures/NaturalEarthII.
We would need to download various .terrain files to pull this off. We just need the terrain data at this time. Can we do that?
To answer your original question, Cesium has no limitations that prevent it from being used offline and storage capacity is the only real limitation. The official terrain dataset for the entire world currently clocks in at around 675 GB, but you can fit entire countries on an tablet or phone if you need maximum portability.
The other related answer is that the terrain format definitions are published by AGI and open, and there’s at least one open-source tool for generating your own Cesium terrain datasets ( https://github.com/geo-data/cesium-terrain-builder ). It relies on the GDAL library, so it’s able to read a wide variety of terrain formats like GeoTIFF and DTED.
For reference, the amount of disk space needed increases dramatically with the level of detail. A full world terrain dataset we generated is about 250MB for zoom levels 0-8, 500MB for zoom 9, 1.8GB for zoom 10, and 6.7GB for zoom 11. Also note that the standard TMS folder layout expects all files to be sitting on disk, and trying to move around the millions of files from higher zoom levels obviously becomes a real pain. The MBTiles format is a great alternative, as it just stuffs an arbitrary number of files into a single SQLite database. Moving around a single multi-GB file is a lot easier than moving around millions of 5KB files. However, whatever you use to server up the tile data obviously has to be smart enough to query tiles from the DB and serve those, instead of just grabbing static files off disk based on the URL Cesium requested.