On this page
Most modern basemaps are vector tiles: compact Mapbox Vector Tile (MVT) archives styled at render time by MapLibre or Mapbox GL. Most TAK deployments need those same maps on Android tablets in ATAK and on laptops in WinTAK, often with no network at all. Bridging the two is a rendering and packaging problem, and getting it wrong produces either a 40 GB tablet or a blurry map.
What TAK clients actually read
ATAK and WinTAK are raster-first map engines. Out of the box they consume:
- Online tile sources described by a small XML file (a “map source” or
tile.xml) pointing at an XYZ, WMS or WMTS endpoint. - Offline raster archives: MBTiles and GeoPackage containing PNG/JPEG tiles, plus legacy SQLite and cache formats.
- Overlays: KML/KMZ, GeoJSON (via import), GPX, shapefiles and elevation (DTED) for terrain tools.
What they do not do natively, at the time of writing, is style MVT vector tiles on the device the way a MapLibre app does. Plugins exist and the situation improves with each release, but for a fleet of devices you cannot upgrade on demand the reliable path is: keep the vector tiles and the style as the source of truth, and render raster pyramids from them for the field.
The tile pyramid, and why zoom 18 hurts
Web Mercator tiles quadruple with every zoom level. For a 50 × 50 km area of operations the counts look harmless until zoom 16, then explode. The table uses tile widths at the equator; at 45° latitude tiles are about 30% narrower on the ground, so counts rise further.
| Zoom | Tile width | Tiles | ≈ Size |
|---|---|---|---|
| z12 | 9.8 km | 36 | 1 MB |
| z14 | 2.4 km | 441 | 8 MB |
| z16 | 611 m | 7k | 118 MB |
| z18 | 153 m | 108k | 1.8 GB |
Two conclusions follow. First, cap the maximum zoom per use case: z14–15 is enough for vehicle navigation and situational awareness, z16–17 for dismounted operations in built-up areas, z18+ only for small target areas. Second, mix styles by zoom: a light topo style to z14 across the whole AO, imagery only inside named objectives.
Pipeline: vector tiles → style → raster pyramid
- 01
Build or obtain the vector tiles
OpenStreetMap-derived tiles fromplanetilerortippecanoe, your own PostGIS layers viaST_AsMVT, or a commercial archive. Store them as an MVT MBTiles or PMTiles file — this is the asset you version and keep. - 02
Design the style for print, not for screens
A MapLibre style JSON tuned for rasterisation: higher-contrast roads, fewer labels at low zoom, no hover or interactive layers, fonts and sprites served locally. Raster tiles cannot re-flow labels, so what you render is what the operator gets. - 03
Render the pyramid headlessly
A MapLibre GL Native renderer (throughtileserver-glor a small Node/Python service) draws each tile of the requested extent and zoom range to PNG/JPEG and writes it into a raster MBTiles. Render at 512 px and downsample, or use the@2xvariant for high-DPI tablets. - 04
Write metadata and validate
Fill the MBTilesmetadatatable (name, format, bounds, minzoom, maxzoom, type). ATAK uses it for the layer name and extent; missing bounds mean the layer shows up but cannot be zoomed to. - 05
Package and distribute
Ship as a TAK data package (a zip with a manifest) through TAK Server, or side-load into the device's imagery folder. See below.
For connected devices, the same style becomes an online map source — one XML file the operator imports once:
MBTiles vs PMTiles vs data packages
| MBTiles (raster) | PMTiles | TAK data package | |
|---|---|---|---|
| What it is | SQLite file of z/x/y tiles + metadata | Single-file archive read by HTTP range requests; no server logic | Zip with a manifest: MBTiles/GeoPackage, KML, map sources, elevation |
| TAK support | Native in ATAK and WinTAK (import to imagery) | Not read natively — serve through a tiny proxy or convert to MBTiles for offline | Native: imported by Mission Package tool or pushed by TAK Server |
| Best at | Offline basemaps on the device | Cheap online serving from object storage / CDN, no tile server | Distribution: one artefact per AO with everything the unit needs |
| Updates | Replace the file (or attach a diff-rendered overlay) | Replace the file; clients fetch new ranges | Versioned packages via Data Sync; devices pull the new one |
| Watch out | Large files on FAT-formatted SD cards (4 GB limit) | Browser-first ecosystem; TAK needs the proxy hop | Manifest UIDs must be stable or devices duplicate layers |
In practice the three are layers of one workflow, not rivals: PMTiles for serving the rendered pyramid online with zero infrastructure, MBTiles for the offline copy on the device, and a data package to get that MBTiles — plus overlays and elevation — onto a hundred devices consistently.
Distribution and updates
- Sizing: one package per AO per style, named with zoom range and render date. Keep individual files under 2 GB so they transfer and verify quickly.
- TAK Server Data Sync / missions: attach the package to a mission; subscribed devices receive it and later versions automatically.
- Scheduled re-renders: when the vector source or the style changes, re-render only the affected zoom range and publish a new version; the manifest UID stays the same so the client replaces rather than duplicates.
- Side-loading fallback: for air-gapped units, the same MBTiles copied to
atak/imagery/works without a server.
We have shipped this pipeline enough times to turn parts of it into products: Vector To Raster renders vector tile styles to raster MBTiles, Offline Map Data Generator builds area-of-operations packages, and Map Data Generator TilePackage targets the Esri tile package formats for ArcGIS-based units.
TAK data packages & offline basemapsAO basemap packages, tile.xml sources, overlays and elevation — built on a schedule or per request.Vector To RasterOur app for rendering vector tile styles into raster MBTiles for TAK and other offline clients.Offline Map Data GeneratorPackage basemaps for an area of operations, ready for ATAK, WinTAK and iTAK.Map Data Generator TilePackageThe same workflow producing Esri tile packages for ArcGIS field apps.Takeaways
Takeaways
- 01Keep vectors and the style as the source of truth; render raster pyramids for TAK from them so every update is reproducible.
- 02Cap zoom per use case and mix styles by zoom. z14–15 for vehicles, z16–17 for dismounted work, imagery only inside objectives.
- 03MBTiles on the device, PMTiles online, data packages for distribution — one workflow, three containers.
- 04Metadata and manifest UIDs are not optional. Bounds make the layer zoomable; stable UIDs make updates replace instead of duplicate.