Horizon Mapper
    Back to Map

    Methodology & Technical Details

    How Horizon Mapper builds travel-time zones, population overlays, and market stats

    Routing & Isochrones
    OpenRouteService (ORS) routing engine

    We generate isochrones with OpenRouteService (ORS). Each request asks ORS for a single whole-minute travel duration from 5 to 60 minutes, then returns a polygon boundary that follows real road geometry.

    • •Real road topology, speed limits, one-way streets, and turn restrictions
    • •Elevation-aware routing for cycling and walking profiles
    • •No straight-line shortcuts—every edge is a navigable segment

    Isochrones are cached in-memory (and in Redis when configured) to avoid repeated calls when you pan or tweak filters.

    Travel Profiles
    Mode-specific routing parameters

    Driving (Car)

    Posted speed limits and functional road classes, full turn restrictions and one-way handling. No live traffic; uses typical speeds.

    Cycling

    Prefers bike lanes and paths, avoids motorways, factors elevation. Typical speeds ~12–18 km/h.

    Walking

    Pedestrian paths, sidewalks, and footways with ~4.5–5 km/h baseline. Elevation-aware but favors shortest walkable paths.

    Population, GDP & Accessibility Grids
    WorldPop population + separately sourced context rasters

    Population and age structure use WorldPop 2020 estimates or 2030 projections. GDP per capita comes from a separate 1990–2022 gridded GDP series and currently uses its 2020 band in app statistics. Accessibility uses a separate 2015 minutes-to-cities raster. The runtime mirrors these sources to R2 for stable access.

    • •Population raster tiles use the COG-RGB path. Valid cells are values >= 1, transformed in log10, and normalized with country-relative bounds (min to p99.9).
    • •Color gradients are Gaussian-smoothed in the raster bake. The alpha edge is feathered separately to avoid stair-step borders without bleeding into empty space.
    • •Population tile precompute currently targets z4-z12; clients overzoom above z12 rather than requesting new higher zoom tiles.
    • •Global 1 km overlays are still masked by ISO polygons so neighboring countries do not bleed.
    • •Accessibility values are mean travel minutes inside each cell (lower is better) with fixed country scales.

    Raster tiles are cached in memory and R2. GeoJSON grid responses are still used where required by the metric path.

    How population is estimated inside a polygon
    POIs & Market Stats
    Overture Places PMTiles + WorldPop demographics

    POIs are streamed client-side from Overture Places PMTiles. The map no longer relies on runtime server-side POI fetches for rendering, which keeps pan/zoom interactions fast and stable.

    Demographic stats in the panel (totals, age bands, GDP, accessibility) use the same zone geometry sent to our population service; response metadata reports the source and precision used.

    From z10–z13, POIs render in preview mode because detailed category metadata is sparse in this snapshot. From z14+, category filters, named places, and full icon styling are applied.

    Limits & Assumptions
    Read before making decisions
    • ⚠Duration cap: 60-minute max per isochrone (ORS limit). Longer trips require self-hosted routing (Valhalla/GraphHopper).
    • ⚠No live traffic: Speeds are typical, not time-of-day aware.
    • ⚠Open-data coverage: Rural areas may have thinner road/POI metadata; results follow the underlying datasets.
    • ⚠Simplified profiles: Personal fitness, vehicle type, and private access controls are not fully captured.
    • ⚠Raster resolution: Population grids clamp to native cell size; very small polygons are highly sensitive to whether cell centers fall inside the boundary.
    Data Sources & Attribution
    Open data only

    Overture Maps Foundation (Places)

    POIs, category tags, and place metadata

    CDLA-Permissive 2.0

    OpenRouteService

    Isochrones and travel times

    Open data

    WorldPop (2020 estimate, 2030 projection)

    Population totals and age/sex bands

    CC-BY 4.0

    Kummu et al. gridded GDP (2020 app band)

    GDP per capita in PPP 2017 international dollars; Zenodo record 13943886

    CC-BY 4.0

    Accessibility to Cities (2015)

    Modeled minutes to the nearest city from a separately mirrored raster

    License record pending

    MapTiler

    Basemap vector tiles

    Starter plan

    MapTiler Geocoding

    Autocomplete geocoding and search

    Startup plan
    Explore Belgium in Maps
    A focused statistical-mapping project from Horizon Mapper

    For authoritative Belgian population, housing, mobility, income, business, and other local statistics, explore the companion map-first project created by Florent Chif.

    Open Belgium in Maps

    Built with open-source tools and open data by Florent Chif (Octet Studio)

    Start Mapping