# What the mountain modes can honestly show A coverage audit run before building *I'm hiking!* and *I'm skiing!* properly, against the live APIs on 22 August 2026. Every figure below was measured, not inferred from documentation. The question it answers: **is the data there for every canton?** The short answer is that the *transport* half is uniformly there and the *terrain* half is not — and the gaps are specific enough to design around rather than discover halfway. ## The transport half: yes, everywhere The Open Journey Planner is the reliable lift inventory. Lift stops within 6 km of a resort centre, each checked for a live departure board, in **August**: | Place | Canton | Stops | Lift stops | Running today | |---|---|---:|---:|---| | Engelberg | OW | 40 | 7 | Brunni-Bahnen, Talst. Kabinenb., Titlis | | Adelboden | BE | 40 | 4 | Tschentenbahn, Silleren, Sillerenbahn | | Andermatt | UR | 29 | 6 | Gondelbahn Gütsch, Nätschen, Gütsch | | Villars-sur-Ollon | VD | 40 | 2 | télécabine, La Barboleuse | | Leysin | VD | 40 | 4 | station aval, Tête d'Aï, Berneuse | | Scuol | GR | 40 | 3 | pendicularas, Motta Naluns, Prui | | Airolo | TI | 20 | 3 | Pesciüm, Sasso della Boggia | | Weggis (lakeside) | LU | 40 | 4 | Luftseilbahn, Rigi Kaltbad | | Brienz (lakeside) | BE | 40 | 4 | Brienz BRB, Giessbach, Planalp | | Col du Grand-St-Bernard | VS | 4 | 0 | — a bus pass, correctly | | Appenzell | AI | 34 | 0 | nearest lift is at Wasserauen, ~7 km | Cable cars and rack railways are ordinary journeys with ordinary calls, so everything the plugin already does — departure boards, routes drawn on the map, following one — works on them unchanged. **Closure is readable, and distinguishable from an error.** A lift not running today answers `ok=false` with `StopEventProblemType` rather than an empty list. Asked again for a date in season it answers normally: Davos Jakobshorn returns nothing today and four departures from 10:00 on 15 January 2027. So "closed now, runs in winter" is answerable at the cost of one probe request. *Note for the implementation:* the panel currently treats `ok=false` as a network failure and raises the error banner. In a mode where half the lifts are seasonally shut that is wrong, and it is the first thing to change. ## The terrain half: partly ### Ski touring — rich, where routes exist `ch.swisstopo-karto.skitouren` is queryable and carries a full record: target_name Vermigelhütte target_altitude 2042 name_de/fr/it/en Von Andermatt difficulty_* L / F / F / F (SAC ski scale, four languages) ascent_time_label 03:00 h ascent_altitude 600 url_sac_* the SAC route portal, four languages Present at Andermatt (5 routes), Airolo (4), Col du Grand-St-Bernard (3), Col de la Forclaz (3), Scuol (1). **Absent at Engelberg, Adelboden, Villars and Leysin** — these are *touring* routes, so they exist where touring happens, not where lift-served skiing does. Some features carry a placeholder record reading "Pas d'info itinéraire disponible", so coverage is partial even inside a covered area. ### Hiking — the official network only `ch.astra.wanderland` returns named, numbered routes and their stage endpoints: chmobil_title Via Alpina (Altdorf (UR) - Engelberg) chmobil_route_number 1 chmobil_has_segment true Present at all twelve places tested except Weggis. But it is the SchweizMobil *official* network — national, regional and local numbered routes — not every footpath. The full footpath network is `ch.swisstopo.swisstlm3d-wanderwege`, which is **raster only**: it can be drawn, never queried. Summer routes carry no length, time or altitude. `ch.astra.winterwanderwege` does carry all of it — name, number, length, ascent, descent, minutes and the itinerary in words — but exists at only three of the twelve places. ### Altitude — yes, anywhere `api3.geo.admin.ch/rest/services/height` answers for any point, but wants LV95 rather than WGS84. swisstopo's documented approximation converts offline, so the projection costs no request: checked against Lake Brienz, which came back 563.7 m against an official 564 m, and Jungfraujoch at 3469 m. ## What is not there at all These are worth stating plainly because the obvious feature descriptions imply them: - **Downhill piste names.** Of 880 layers in the federal catalogue, exactly two mention lifts and **none** covers marked pistes. The winter national map (`ch.swisstopo.pixelkarte-farbe-winter`) *draws* pistes and lifts, as pixels; there is nothing behind them to query. Piste names, difficulty colours and open/closed status belong to the individual resorts, and are not open data. - **Mountain restaurants.** No federal POI layer. `ch.bfs.erreichbarkeit-restaurants` is an accessibility statistic, not a list of places to eat. - **SAC huts as such.** `ch.swisstopo.unterkuenfte-winter` sounds like the hut network and is not: it returned nothing at Vermigelhütte, Vignettes, Rotondohütte or Berneuse, and at Engstlenalp and Kleine Scheidegg it returned hotels. Huts do appear — as the *targets* of ski-touring routes, with their altitude and an SAC link — which is a different and narrower thing. - **A complete lift register from the map services.** `ch.bav.seilbahnen-bundeskonzession` covers only federally-licensed cableways: it names Davos–Höhenweg and Zermatt–Sunnegga, and returns **zero** at Engelberg, Villars and Leysin, where the planner lists seven, two and four lift stops. Useful for naming an installation, useless as an inventory. ## What this means for the two modes **I'm skiing!** can honestly be: every lift around you with its live departures and its closure state, the lift lines drawn, the ski-touring routes with their SAC difficulty, ascent time and altitude gain, and the hut or summit each one leads to. It cannot name a marked piste, and the panel should say so rather than let the winter map's pixels imply otherwise. **I'm hiking!** can honestly be: the official numbered routes with their stage endpoints, the full footpath network drawn underneath, the altitude of any point you touch, and the transport that reaches the trailhead — which is the part that already works and is the part a walker actually needs. The one design change both modes need: stops are currently sampled across the view *regardless of mode*, so at Davos six sampled stops might include two lifts. In a mountain mode the sampling has to prefer stops of the modes being shown, or the map of lifts will mostly be buses.