# DroneMapUK A browser-based UK drone airspace planning tool built with MapLibre GL JS. Visualises the airspace restrictions, protected areas, and managed land relevant to UK drone operations in a single interactive map. > **Planning aid only.** Always verify with official CAA sources and check NOTAMs at [aurora.nats.co.uk](https://www.aurora.nats.co.uk/) before any flight. ![DroneMapUK screenshot](screenshot.png) --- ## Features - **NATS AIP Airspace** — parses the official NATS AIXM 5.1 XML dataset in a Web Worker (off the main thread) to render Restricted, Prohibited, CTR, CTA, TMA, RAS, and TMZ zones with per-type toggles and colour coding - **Flight Restriction Zones (FRZ)** — 5 km radius circles around ~40 UK licensed aerodromes, hardcoded from CAA reference points - **Danger / Restricted Areas** — load your own GeoJSON (e.g. converted from NATS ENR 5.1 KMZ) - **MoD / Military Areas** — load your own GeoJSON - **National Parks (GB)** — fetched automatically from the OS Open Geography Portal ArcGIS REST API - **Royal Parks (London)** — 8 London parks with approximate boundaries - **SSSIs** — England auto-loaded viewport-lazy from Natural England ArcGIS API (zoom ≥ 8); Scotland/Wales via file upload - **Forestry managed land** — load GeoJSON from Forestry England, FLS Scotland, or NRW Wales - **GPS location tracking** — live position with accuracy circle, auto-centres on first fix - **Map styles** — Terrain, Satellite, Streets (MapTiler) - **3D terrain** — MapTiler terrain-rgb-v2 DEM with pitch and sky layer - **Hillshade overlay** — best on Satellite style --- ## How it works The app is three plain files — `index.html`, `style.css`, and `app.js` — with no build step, no bundler, and no framework. | Concern | Detail | |---|---| | Map rendering | [MapLibre GL JS 4.x](https://maplibre.org/) via CDN | | Base tiles | [MapTiler](https://maptiler.com) (requires a free API key) | | NATS parsing | `nats-worker.js` Web Worker — receives the 72 MB AIXM XML as an `ArrayBuffer`, parses GML geometry (GeodesicString, CircleByCenterPoint, ArcByCenterPoint), and posts GeoJSON back to the main thread | | API key storage | `localStorage` key `droneMapUK_maptilerKey` | | SSSI loading | Viewport-lazy fetch from Natural England ArcGIS FeatureServer, debounced 450 ms on map move | | National Parks | Single fetch from OS Open Geography Portal on map load | | Style switching | Uses MapLibre `idle` event (not `style.load`) to re-add sources and layers after `setStyle()` | --- ## Setup 1. Get a free API key at [maptiler.com](https://maptiler.com) 2. Serve the directory from a local web server — the NATS XML fetch requires HTTP, not `file://` ```bash # Python python3 -m http.server 8080 # Node npx serve . ``` 3. Open `http://localhost:8080` in a browser and enter your MapTiler key when prompted --- ## NATS airspace data Download the official NATS AIP dataset from [nats-uk.ead-it.com](https://nats-uk.ead-it.com/cms-nats/opencms/en/uas-restriction-zones/) and place the extracted XML file at the path referenced in `app.js`: ``` EG_AIP_DS_20260514_XML/EG_AIP_DS_FULL_20260514.xml ``` Update `NATS_XML_PATH` in `app.js` if your filename differs. --- ## GeoJSON data sources | Layer | Source | |---|---| | Danger / Restricted | [NATS UAS Zones](https://nats-uk.ead-it.com/cms-nats/opencms/en/uas-restriction-zones/) | | Forestry England | [data-forestry.opendata.arcgis.com](https://data-forestry.opendata.arcgis.com/) | | FLS Scotland | [ArcGIS Viewer](https://www.arcgis.com/apps/webappviewer/index.html?id=e4b9f5f437474e0481a3cec097e4c2ec) | | NRW Wales | [datamap.gov.wales](https://datamap.gov.wales/) | | SSSIs (Scotland/Wales) | [Natural England / Defra Open Data](https://naturalengland-defra.opendata.arcgis.com/) | --- ## Attribution Map tiles © [MapTiler](https://maptiler.com) · Data © [OpenStreetMap contributors](https://www.openstreetmap.org/copyright) A [Bournemouth Technology](https://bournemouthtechnology.co.uk) product