OTKGlobeEngine
OTKGlobeEngine is a map engine. It draws a 3D globe with satellite imagery, terrain, map features, military symbols and 3D models, and it keeps working when the network goes away.
It's written in C++ and runs on Windows, Linux, the Raspberry Pi 4 and 5, macOS, iOS, Android, FreeBSD, OpenBSD and NetBSD. Programs use it through a plain C API, so it can be called from C, C++, C#, Java, Kotlin or Swift. The download page has packages for all of those.
It behaves like the map engine inside the TAK apps (ATAK, WinTAK), but it was written from scratch and contains no TAK code. It is not affiliated with, endorsed by, or associated with tak.gov, the TAK Product Center, or the makers of any TAK product.
Kernel and engine
Like TAK, it comes in two layers. The kernel holds the geospatial and data services and needs no graphics hardware: file formats, import planning, feature queries, elevation, line of sight, coordinates, geodesics, the magnetic model, the tile cache and the network layer. Servers and tools can use it on its own. The engine is the renderer built on top of it. The overview lists what each one contains.
What it does
- Globe and flat map, imagery from tile servers, WMS, WMTS, MBTiles, PMTiles, GeoPackage, osmdroid, RMaps, OsmAnd and GDAL; terrain from DTED, SRTM, Cesium terrain (quantized-mesh and heightmap, online, ion or local folders), PMTiles and Terrarium.
- KML/KMZ with network links, models and extrusion, GeoJSON, GPX, Shapefile with projections, CSV, CoT with ATAK iconsets, and TAK data packages, with labels and picking.
- MIL-STD-2525 symbols, MGRS/UTM/GARS grids and coordinates, magnetic declination, range rings, bullseyes, range and bearing, line of sight, viewshed and contours.
- Sun and moon, twilight times and night illumination for NVG planning; drone video footprints from MISB KLV metadata.
- glTF, OBJ and COLLADA models and 3D Tiles: photogrammetry, Google Photorealistic 3D Tiles, Cesium ion, Draco and KTX2 compression.
- Offline and airgapped networks: a cache that serves old tiles when servers are unreachable, region downloads, MBTiles/GeoPackage transfer.
- VR and AR headsets through OpenXR, and side-by-side stereo.
The formats page has the full compatibility matrix, and embedding shows how to put the engine in an app.
License
The license is 0BSD: use it for anything, change it, sell it, relicense it. You don't have to credit it or keep a copyright notice. The libraries it bundles keep their own (mostly MIT-style) licenses, listed in third-party licenses.
Building
To build it from source you need CMake and a C++20 compiler:
git clone https://github.com/grangedevgroup-code/OTKGlobeEngine cd OTKGlobeEngine cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release cmake --build build build/apps/viewer/otk_viewer
Bug reports and patches go to the issue tracker. Security problems go to the address on the security page instead.
