<!-- SPDX-License-Identifier: CC-BY-4.0 -->
# GTFS-Carto - draft 0.1

A draft editorial and cartographic data extension associated with GTFS.

## Motivation

The draft addresses presentation information such as route order on shared corridors, schematic geometry, short labels, cartographic stop hierarchy, frequency classes and map validity. The September 2026 research sample for Lurraldebus Ekialdebus reported 28 routes sharing one colour, missing stop codes, empty `trip_headsign` values and no structured Basque labels. This is a dated sample observation, not a statement about the current feed.

## Design

- GTFS-style CSV files use the `carto_` prefix, either inside a GTFS ZIP or in a separate `gtfs-carto.zip`. Geometry is represented in GeoJSON.
- Identifiers reference the corresponding GTFS identifiers.
- The design proposes mapping to NeTEx concepts such as `PrintedPresentation`, `AlternativePresentation` and `ShortName` for publication through national access points. The mapping requires validation.
- The extension contains stable, reusable editorial decisions. Product-specific label positions and manual adjustments belong in the engine's internal sidecar, not the shared data layer.

## Proposed files

| File | Presence | Contents |
|---|---|---|
| `carto_feed_info.txt` | Required | `carto_version`, `gtfs_feed_version`, `gtfs_sha256`, `publisher`, `license_spdx`, `contact_url`, `valid_from`, `valid_to`, `oti_version` |
| `carto_routes.txt` | Required | `route_id`, `map_code`, `family`, `screen_color`, `screen_text_color`, `print_color`, `print_color_system`, `cvd_safe_color`, `pattern`, `weight_rel`, `display_order`, `pictogram_shape`, `headsign_default_i18n`, `direction_name_0`, `direction_name_1` |
| `carto_stops.txt` | Required | `stop_id`, `map_name` (up to 24 characters), `map_name_long` (up to 40), `municipality`, `rank` (1-5), `hub_id`, `label_side_hint`, `min_scale_denominator`, `stop_direction`, `tactile_code`, `access_note_i18n` |
| `carto_hubs.txt` | Optional | `hub_id`, `hub_name`, `hub_short_name`, `hub_type`, `lat`, `lon` |
| `carto_labels_i18n.txt` | Optional | Short labels by language and product |
| `carto_frequency_classes.txt` | Proposed for OTI AA | `class_id`, `min_headway`, `max_headway`, `period`, `label`, `line_weight_rel`, `dash` |
| `carto_route_service.txt` | Optional; derivable | Frequency class by route, segment and period |
| `carto_corridors.geojson` | Optional | Corridor graph with per-edge route ordering in `line_order` |
| `carto_schematic.geojson` | Optional | Published schematic geometry and `layout_type` |
| `carto_products.txt` | Proposed for OTI AA | Published-product catalogue with validity, declared OTI level, URL and fingerprint |
| `carto_installations.txt` | Optional | Printed-product installation locations for expiry management |
| `carto_pictograms.txt` | Optional | Pictogram references and assignments |
| `carto_brand.txt` | Optional | Logos, typefaces and licence information |

Research document 04, section 6, contains the original field rationale. Complete schemas, validation and a real-feed example remain part of the draft work. The proposed path is a Gipuzkoa pilot, followed by feedback to MobilityData and validation of the NeTEx mapping; this does not imply endorsement by those organisations.

English is the primary language. The official project website is https://opentransitinformation.org.
