Wheelchair-Accessible Routing with Geonorge WMS Layers & OpenLayers

Problem

Norwegian public mapping (Kartverket) provides WMS layers for accessibility obstacles — stairs, curbs, slopes > 6%. But no user-friendly way to visualize them for wheelchair users.

Projects

ProjectRepoPlatformLanguage
RullUtRullUtAndroidKotlin
Tilgjengelighet-WMS-OpenLayersTilgjengelighet-WMS-OpenLayersWebTypeScript

Data Source

Statens kartverk — Tilgjengelighet WMS

  • Layers: tilgjengelighet_obstacles, tilgjengelighet_surface
  • SRS: EPSG:3857 (Web Mercator)
  • Access: Free with attribution

Web App (OpenLayers)

// src/map.ts
import { Map, View } from 'ol';
import TileLayer from 'ol/layer/Tile';
import WMTS from 'ol/source/WMTS';
import WMS from 'ol/source/ImageWMS';

const wmsSource = new WMS({
  url: 'https://wms.geonorge.no/skwms1/tilgjengelighet',
  params: { LAYERS: 'tilgjengelighet_obstacles' },
  serverType: 'geoserver',
  crossOrigin: 'anonymous'
});

const map = new Map({
  target: 'map',
  layers: [
    new TileLayer({ source: new OSM() }),
    new TileLayer({ source: wmsSource })
  ],
  view: new View({ center: [ ... ], zoom: 16 })
});

Features:

  • Opacity slider for WMS overlay
  • Color-blind safe palette
  • WCAG 2.1 AA compliant (tested with wcag-skill)
  • Mobile responsive

Android App (Kotlin)

Built with Mapbox SDK + GeoServer WMS.

Core features:

  • Offline tile caching for rural areas
  • Route calculation avoiding obstacles (OSRM custom profile)
  • Voice guidance for curb height / surface type
// Route avoidance profile
val avoidObstacles = mapboxStyle.addLayer(
  SymbolLayer("obstacles")
    .withProperties(
      property("icon-image", "warning"),
      property("text-field", "{obstacle_type}")
    )
)

Impact

Used by:

  • Oslo Municipality accessibility office
  • Norwegian Association of Wheelchair Users (Norsk Forbund for Revmatikerne)
  • Tested during Arendalsuka 2024

Maps should be accessible too.