Data & Sources
Last reviewed: 2026-06-18
The travel planner combines open data (OpenStreetMap, Wikidata, public-transport timetables) with the trail route, which the Stockholm Archipelago Trail owns. Every object states its source, licence and freshness, and carries a persistent identifier — so it can be verified, reused, and corrected at the right place.
Map & data attribution
Map data & base-map tiles © OpenStreetMap contributors, licensed ODbL 1.0; tiles built with Protomaps. Places from OpenStreetMap (ODbL) and Wikidata (CC0). Ferry timetables via Trafiklab / Waxholmsbolaget. Trail route © Stockholm Archipelago Trail, licensed CC BY 4.0.
Full per-source licences and links in the table below.
Upstream sources
- OpenStreetMap — places, islands, reserves
- Wikidata & Commons — names, photos, links
- Trafiklab — ferry timetables
- Hjärtstartarregistret — AEDs
- grillplatser.nu — firepits
- SAT trail master — the route (we own this)
This planner
- Filters to the trail & cross-links sources
- Mints persistent identifiers sat:<type>:<uid>
- Tracks per-field provenance & freshness
- Versions the route, archives every change
Published
- The map — this app
- /data/… — open files (GeoJSON, JSON-LD)
- /api/objects/<id> — object resolver
- Permalinks — /?id=<satId> (canonical share form, any object type), or typed /?poi= / /?section= / /?pier= / /?vessel=
1Who owns what
We are the source of truth for the trail itself, and a consumer / re-publisher of everything else. Fix data at its source and the fix benefits every map that uses it.
| Dataset | Source of truth | Licence | Our role |
|---|---|---|---|
Trail route + stages | Stockholm Archipelago Trail | CC BY 4.0 | Source of truth |
Places (POIs) | OpenStreetMap | ODbL 1.0 | Consumer / re-publisher |
Names, photos, cross-links | Wikidata / Wikimedia Commons | CC0 / per photo | Consumer |
Defibrillators (AED) | Sveriges Hjärtstartarregister | Registry API terms | Consumer |
Firepits (grillplatser) | grillplatser.nu | CC0 / CC BY / CC BY-SA | Consumer |
Ferry timetables | Waxholmsbolaget / Trafiklab | Open transport data | Consumer |
Base map | OpenStreetMap (via Protomaps) | ODbL 1.0 | Self-hosted tiles |
Problem reports | This planner | Private | Source of truth |
Routing, reachability, reliability scores | This planner | — | Derived / computed |
2Sources & attribution
| Source | What we use it for | Licence | Updated |
|---|---|---|---|
The trail route stockholmarchipelagotrail.com ↗ |
The hiking route geometry for each stage of the Stockholm Archipelago Trail. | CC BY 4.0 © Stockholm Archipelago Trail | On trail updates |
OpenStreetMap openstreetmap.org/copyright ↗ |
Points of interest (food, water, toilets, shops, viewpoints, shelters, …), island outlines, and nature-reserve areas. | ODbL 1.0 © OpenStreetMap contributors | On demand + regular re-publish |
Trail surface & difficulty metadata
openstreetmap.org/copyright ↗
|
Surface type, difficulty (SAC scale), trail visibility, width and trail photos for each stage, derived from the mapped Stockholm Archipelago Trail ways in OpenStreetMap. | ODbL 1.0 © OpenStreetMap contributors · photos per Wikimedia Commons licence | On trail rebuild |
Wikidata wikidata.org ↗ |
Multilingual place names, photographs, and links to external databases. | CC0 1.0 public-domain dedication | Weekly |
Wikimedia Commons commons.wikimedia.org ↗ |
Photographs on place cards, and hero photos in the pier modals. Pier photos were matched stop-by-stop via Wikidata’s brygga class (Q133867301 ↗) and the salgo60 ferry-stops dataset ↗. | Per image author + licence credited in the app | With POI / pier refresh |
Sveriges Hjärtstartarregister hjartstartarregistret.se ↗ |
Defibrillator (AED) locations and their availability hours shown on the map. | Registry API terms © Swedish Resuscitation Council | Daily |
grillplatser.nu grillplatser.nu ↗ |
Firepit / barbecue sites — position, facilities and photos. grillplatser.nu is the source of truth; each firepit links back to its page there to view & update at the source. | CC0 / CC BY / CC BY-SA © grillplatser.nu | On POI refresh |
Waxholmsbolaget ferry timetables trafiklab.se ↗ |
Departure times, routes, and seasonal calendars used to plan the boat legs. | Open transport data via Trafiklab / Samtrafiken (GTFS) | Per season |
ResRobot (Trafiklab) trafiklab.se — ResRobot ↗ |
Used to detect departures that require advance booking (call-to-order lines). | Open transport data via Trafiklab | With timetables |
SAT Passport locations /data/sat-passport-locations.json ↗ |
Which places sell the SAT hiking passport and where it can be stamped — flagged on the matching place cards. A thin membership list (identity + role only); join to OpenStreetMap / Wikidata for names & coordinates. Seeded from salgo60 ↗. | CC BY 4.0 membership © SAT; identity ODbL / CC0 | On data refresh |
Protomaps (base map) protomaps.com ↗ |
The map background (base tiles, hillshade, contours) — self-hosted vector tiles, built from OpenStreetMap data and served from our own storage. | ODbL 1.0 © OpenStreetMap contributors; tiles built with Protomaps | On tile rebuild |
Per-place provenance in the app: every place card shows its own “last updated” date, links to the source object and its full edit history, and carries a persistent identifier with a shareable permalink.
3Persistent identifiers
Every object this planner publishes carries a permanent identifier:
Examples: sat:trail:daesy (the trail itself), sat:section:3hz5y (a stage), sat:poi:sjwtd (a place), sat:pier:25njf (a ferry pier), sat:vessel:3kjzv (a ferry vessel).
- Frozen. The uid is opaque, minted once, and never changes or gets reused — even if the object’s name, slug or upstream database id changes.
- Old identifiers resolve forever. Every external identifier an object has ever had (OpenStreetMap id, Wikidata QID, …) is kept in an append-only concordance. Look any of them up and you reach the current object.
- Resolvable. The canonical web resolution of an identifier is https://<this host>/api/objects/<id> — a stable JSON record with links to the live data, the upstream sources and the archive.
- Tombstones, not dead links. When an object leaves the dataset its identifier keeps resolving (HTTP 410) to a record of what it was and which identifiers it carried.
- No lock-in. The identifier is the compact string, not a URL — it stays valid if this service moves hosts. The concordance table is CC0 so anyone can re-create the mapping.
4Open data: the trail — we own the master
The trail route, its stages and curated descriptions — the one dataset where we are the source of truth. The trail is a first-class object (sat:trail:daesy), published as GeoJSON-LD following the Swedish national specification for trails as linked data ↗ with schema.org vocabulary: name, activity category, total length, elevation, the managing organisation, and an ordered itinerary of all stages in the official north-to-south order.
Endpoints
| Endpoint | Contents |
|---|---|
| /data/trail.jsonld | The whole trail as one GeoJSON-LD document (odta:Trail + schema.org): identity, category, total length, elevation, provider organisation, ordered stage itinerary, and the full route geometry (stages + connector legs). |
| /data/catalog.jsonld | DCAT-AP-SE catalogue describing this dataset — harvestable by Sveriges dataportal ↗ and other DCAT aggregators (publisher, licence, theme, spatial extent, distributions, contact point). |
| /data/sections-index.json | All stages: satId, uid, slug, version, routeVersion, updated, orderInTrail, distance, difficulty, blurb. |
| /data/geojson/islands/<slug>.geojson | Current route per stage. Self-describing: a top-level metadata block and the route feature’s properties both carry satId / version / routeVersion. |
| /data/history/sections/<slug>/index.json | List of archived route versions for a stage. |
| …/route-v<n>.geojson | A specific past route version — cite an exact route, not just a number. |
| …/route-v<n>.gpx | The same route version as a downloadable GPX track — washed geometry with elevation, for GPS devices and apps. Carries satId / version / routeVersion in its metadata. |
| /api/objects/<satId> | Machine-readable record for one stage: name, description, length, version/routeVersion, licence, and links to the live GeoJSON, the archive and the version-pinned route (GeoJSON + GPX). Accepts sat:section:<uid>, the bare uid or the slug. sat:trail:<uid> returns the full trail document. |
| /?id=<satId> or /?section=<ref> | Permalink — opens the stage in the app. The share button copies the canonical /?id=sat:section:<uid> (one form for every object type, survives sharing via Facebook/social). The typed /?section= also works and accepts slug, uid or sat:section:<uid>. |
Stage identity & versioning
| Field | Meaning |
|---|---|
| satId | Permanent identity, sat:section:<uid>. Never changes — cite this. |
| slug | Human handle used in URLs and filenames (e.g. orno). May change; the satId never does. |
| version | Bumps on any change — description or route. |
| routeVersion | Bumps only when the walked geometry changes; keys the route archive. |
| orderInTrail | The stage’s position in the official north-to-south order (1–20). |
Trail data © Stockholm Archipelago Trail, licensed CC BY 4.0 — attribute when reusing. Endpoints are best-effort and may change — open an issue if you build on them.
5Open data: places — upstream owns the master
An attributed projection of upstream open data, filtered to the trail. OpenStreetMap, Wikidata and the registries are the source of truth — consume and correct it there. Use these endpoints for permalinks, provenance and a trail-scoped extract.
| Endpoint | Contents | Licence |
|---|---|---|
| /data/geojson/pois.geojson | Every place. Per feature: source, OpenStreetMap id + version/changeset, Wikidata QID, sameAs, derived reliability. Top-level metadata (licence, attribution, generated-at). | ODbL / CC0 |
| /data/history/pois/index.json …/<YYYY-MM-DD>.geojson | Dated snapshots of the place extract, written only when the data changes. | ODbL / CC0 |
| /api/aed | Defibrillators from Sveriges Hjärtstartarregister (daily). Each carries shr:<id> and, where cross-referenced in OpenStreetMap, that node’s verified position. | Registry API terms |
| /data/geojson/reserves.geojson | Nature-reserve outlines from OpenStreetMap, filtered to those the trail passes through. | ODbL 1.0 |
| /data/geojson/poi-concordance.json | Concordance table: every known external identifier (OpenStreetMap id, Wikidata QID, …) → the place’s permanent sat:poi:<uid>. Re-published on every data build. | CC0 |
| /data/pois-identity.json | The identity register itself: per place, its frozen uid, all identifiers ever associated with it (append-only), status and first-seen date. | CC0 |
| /data/piers-identity.json | Ferry-pier identity register: every pier and mainland hub with its frozen sat:pier:<uid>, GTFS stop-ids and slug history (append-only — GTFS ids rotate between exports; old references resolve forever). /api/objects/sat:pier:<uid> returns the record. | CC0 |
| /data/vessels-identity.json | Ferry-vessel identity register: every named vessel with its frozen sat:vessel:<uid>, Wikidata QID and GTFS-RT vehicle-id history (append-only — vehicle-ids rotate; old references resolve forever). /api/objects/sat:vessel:<uid> returns the record (schema.org Vehicle, with the Wikidata QID as sameAs). | CC0 |
| /api/objects/<id> | Machine-readable record for one place (JSON, open CORS, light JSON-LD). Accepts the canonical sat:poi:<uid> or any identifier the place has ever had — old ids resolve forever and the response normalises to the canonical one. A place that has left the dataset returns a tombstone (HTTP 410) with its identity and known identifiers, never a dead link. | — |
| /?id=<satId> or /?pier=<ref> | Permalink — opens the pier panel (departure board, photo). The pier’s share button copies the canonical /?id=sat:pier:<uid> (one form for every object type, survives sharing via Facebook/social). The typed /?pier= also works and accepts the slug or sat:pier:<uid>. | — |
| /?id=<satId> or /?vessel=<ref> | Permalink — focuses the vessel: opens its live-position popup if it is sailing now, otherwise an info card. The /?vessel= form accepts the sat:vessel:<uid>, the raw GTFS-RT vehicle-id or the Wikidata QID. | — |
| /?id=<satId> or /?poi=<id> | Permalink — opens the place in the app. The share button copies the canonical /?id=sat:poi:<uid> (one form for every object type, survives sharing via Facebook/social). The typed /?poi= also works; id is the canonical sat:poi:<uid>, and previous identifiers (e.g. osm:node:2550378999, wikidata:Q…, firepits’ grillplatser:<gid>) keep working. | — |
6Found an error?
Most place data lives in OpenStreetMap — edit it there and the fix flows back on the next refresh, benefiting every map that uses OpenStreetMap. For routing or trail issues, use “Report a problem” in the app.
Problem reports are not open data — they may contain personal information. Each report has a permanent identifier sat:report:<uuid>; only the person who submitted it can open its status at /report?id=<uuid>, showing the case number, status and any note from the team — received → in progress → resolved.