# Madrid transit access — open sample

Public transport accessibility for Madrid, measured on a 250 m grid. This is a sample: one
window of a full municipal run, published so the data can be opened and checked rather than
taken on trust.

- **572 cells** of 6305 in the full run, 250 m each
- A box extending 3 km north, south, east and west of 40.4168, -3.7038
- `madrid-transit-access-sample.gpkg` — GeoPackage, EPSG:3035, opens directly in QGIS

## What it measures

Every figure describes the **scheduled** service: what the operators' published timetables say
runs, on one representative service day. That is deliberate. Accessibility, planning and
site-selection questions ask what service a location is provided with, and a schedule-based
answer is stable, reproducible from public data, and recomputable by anyone who doubts it.

**It does not measure whether services ran on time.** No realtime feed, vehicle position or
arrival observation is used anywhere in this dataset. Punctuality is a different question and
would need a different input.

Per cell: walk time to the nearest stop and to the nearest frequent stop across three time
windows, stops within 800 m, departures per hour, the modes serving the cell, a PTAL-style
access index and band, residents reachable in 30/45/60 minutes, and service/quality flags.

## Provenance

| | |
|---|---|
| Run | `aad4ae941323` |
| Code version | `9962fb32ab2f` |
| Specification | `5195dd40ff93d3c8…` |
| Licence register | `b9ab15310e45bd9e…` |
| Service day | 2026-07-29 (termtime-2026) |
| Quality gate | pass_with_unevaluated — 51 checks recorded |

The code version is a digest of the pipeline's own source, not a number set by hand, so two runs
of different code cannot claim the same identity. Every figure in this file traces to that run,
and the run's manifest records which checks ran and what each returned.

## How these figures compare with the operators' own timetables

Every other check in this pipeline tests our code against our own assumptions. This one does not:
the reference numbers come from Metro de Madrid, EMT, Renfe and CRTM. Each comparison carries a
source URL, a verbatim quote and a retrieval date, and the reference set is hash-pinned, so the
comparison cannot be made to pass by editing what an operator said.

Both sides are the planned timetable — the operators' passenger-facing publication against
their own machine-readable feed. This is a consistency check between two things the same
organisation publishes, not a measurement of real-world performance.

Take the largest disagreement in the set. **Metros Ligeros de Madrid**, at Pinar de Chamartín (Metro Ligero ML1).

Metros Ligeros de Madrid's own published timetable says:

> Domingos y festivos · Desde las 6:05 · 20 Minutos

For the sunday window that works out to **2.5 to 3.5 departures an hour**.
Reading the same operator's machine-readable schedule feed, we compute **4.75**.

That is a real disagreement between two things the same operator publishes, and it is unresolved.
Source: https://www.metrosligerosdemadrid.es/horarios/

Across the full set:

| mode | entries compared | within the published band | ratio range (ours ÷ published midpoint) |
|---|---|---|---|
| EMT bus | 10 | **7 / 10** | 0.62 to 1.03 |
| Metro Ligero | 3 | **2 / 3** | 0.72 to 1.58 |
| Metro de Madrid | 28 | **24 / 28** | 0.89 to 1.32 |
| **all** | **41** | **33 / 41** | |

Timetables publish a range — "every 7 to 10 minutes" — rather than a single figure, so a
result counts as agreeing when it falls anywhere inside the published range. **8 of
41 comparisons fall outside it**: 5 higher than published and
3 lower. The ratio column compares our figure with the middle of the published range.

These differences are unresolved, and they are published here rather than omitted.

Every comparison in the set is in **`accuracy-comparison.json`** beside this file: the operator, the line,
the stop, their published sentence quoted verbatim, a link to the page it came from, our figure
and theirs. Nothing in it depends on trusting us -- follow a link, read the timetable, check the
number.

## What is not in this file

**The stops and lines themselves.** Those are near-verbatim extracts of the operators' feeds.
This file contains measurements derived from them: no source record survives, and a timetable
cannot be reconstructed from it. Per-cell references to individual operator stop identifiers are
excluded for the same reason. The columns published here are an explicit allow-list, so nothing
new reaches this file without a decision.

The per-row provenance field is also excluded — it is one identical value repeated per cell,
and its content is the provenance table above.

## Licence

Published under the **Open Database License (ODbL) 1.0**, a share-alike licence. Use it commercially, build on it,
redistribute it. If you redistribute this data or a database derived from it, do so under the
same licence and keep the attributions below. Full terms: <https://opendatacommons.org/licenses/odbl/>

Share-alike here is a deliberate grant for a free sample, not an acknowledgement that the source
licences required it. A free sample has no exclusivity to protect, so the simplest licence is the
right one; that choice says nothing about the terms on which any other work derived from the same
sources is offered.

### Required attribution

These are licence terms, not courtesy. Reproduce them wherever this data is published.

- Pesaresi, M., Schiavina, M., Politis, P., Freire, S., Krasnodębska, K., Uhl, J. H., ... Kemper, T. (2024). Advances on the Global Human Settlement Layer by joint assessment of Earth Observation and population survey data. International Journal of Digital Earth, 17(1). https://doi.org/10.1080/17538947.2024.2390454
- **Powered by CRTM** — with a link to https://www.crtm.es/, noting that the data is processed (datos explotados).
- **Powered by EMT de Madrid** — with a link to https://www.emtmadrid.es/.
- **Renfe, CC BY 4.0**
- **© OpenStreetMap contributors**

## Limitations

- One representative service day, not an average across the year.
- **Metro de Madrid** (`gtfs_metro_madrid`), published as valid to 2026-05-27, 63 days before this run's service day. The operator had not republished when the inputs were locked, so the most
  recent published timetable was used and its departures are matched by weekday rather than
  by exact date — a lower-precision path than the other feeds receive. Where the lapsed
  timetable still described unchanged service the effect is nil; where service changed in the
  interval, that operator's figures are out of date by that margin.
- The area boundary is Madrid's OpenStreetMap administrative relation, not the official INE/IGN
  municipal boundary.
- Transit lines are a representative-pattern reconstruction, not the operators' own route shapes.
- PTAL band boundaries follow the published method; the band table itself is a documented default
  rather than a Madrid-specific citation.

---

Questions, or want this for another city or boundary? The full municipal dataset, the methodology
and the per-run audit trail are available on request.
