A production-focused engineering reference for the teams building indoor maps and wayfinding systems.
Floor-plan parsing · routing graphs · beacon & Wi-Fi positioning · deployment pipelines — grounded in real, runnable Python.
🌐 Read it live → www.indoor-mapping-wayfinding.com
Indoor mapping is not a flavour of outdoor GIS. Sub-metre precision, vertical topology, semantic enrichment, and deterministic routing pipelines all change the engineering surface area — and most of the practical knowledge is scattered across vendor docs, half-abandoned repos, and tribal memory.
This site pulls that knowledge into one coherent, deeply interlinked reference for the engineers
doing the work day to day: facilities-tech teams, GIS developers, indoor-navigation teams, and the
Python automation builders who turn a one-off script into a service. Every guide ships with
annotated, typed Python pulled from real pipelines — geopandas, shapely, networkx, ezdxf,
rtree, pyproj, opencv, scikit-learn — plus the validation, batching, positioning, and SDK
integration patterns that make it hold up in production.
52 pages · ~152,000 words · custom SVG diagrams on every overview and guide.
The reference is organised into four connected areas:
Turn DWG, DXF, SVG, and scanned/raster drawings into routable, topologically valid GeoJSON through deterministic vectorization pipelines — parsing, wall/door detection, attribute mapping, PDF & raster extraction, and async batch processing across large portfolios.
The spatial foundations: indoor coordinate reference systems for multi-building campuses, Z-axis and level modelling, POI taxonomy, accessible & multi-profile routing, and resilient fallback routing engines for indoor GIS.
Shipping and keeping maps trustworthy: JSON schema design, CI topology gating, vector-tile serving, cache invalidation, rollback triggers & versioning, and SDK integration for MapLibre GL, Mapbox GL, Apple Maps (IMDF), and React Native.
Placing a moving user on the map: Wi-Fi RSSI radio maps, BLE beacon trilateration and placement, particle-filter sensor fusion, and snapping noisy position fixes onto the routing graph.
- Runnable, not hand-wavy. Code blocks use typed signatures (PEP 484), real error handling, and logging — the kind of code you can lift into a pipeline, not pseudocode.
- One consistent data model. Everything speaks the same GeoJSON
FeatureCollectionenvelope and content-addressedtopology_hash, so parsing, positioning, and delivery stay interoperable. - Hand-authored diagrams. Each overview and guide carries an original, theme-aware, accessible inline SVG that explains the hardest concept on the page — no stock art.
- Deeply interlinked. Concepts link to their in-depth companion pages in context, so you can follow a topic from a high-level overview down to a single technique.
- Fast & offline-first. Built as a static Progressive Web App: installable, cached for offline reading, and tuned to a mobile performance budget so you can keep the references with you on a site walk.
- Accessible by construction. Pages are checked against WCAG 2 A/AA (contrast, alt text, link names, heading order, keyboard-scrollable regions).
- Eleventy (11ty) — static site generator
- Nunjucks + Markdown — templating and content
- Vanilla CSS & JavaScript — no framework runtime; a small progressive-enhancement layer
- Progressive Web App — web app manifest + service worker for offline caching
- Cloudflare Pages — hosting and deployment
npm install # install dependencies
npm run serve # local dev server with live reload
npm run build # production build into ./_siteThe build output is a fully static site in _site/ that can be served by any static host.
Issues and suggestions are welcome — corrections, new topics you'd like covered, or examples that didn't work in your environment. Open an issue on the GitHub organisation.
Content and code © the Indoor Mapping & Wayfinding Automation project. All rights reserved unless stated otherwise.
Explore the full reference → www.indoor-mapping-wayfinding.com