尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗Train station-to-station hiking on French GR paths -- car-free hiking made easy.
A Python pipeline fetches hiking routes, train stations, bus stops, and elevation data from open sources, then exports a catalog. An Astro static website displays routes on a map with filters, elevation profiles, section selection, and GPX download.
BUILD TIME RUNTIME (static files)
+-----------------------------------------+ +----------------------------+
| Python Pipeline | | Astro Static Site |
| | | |
| Overpass API --+ | | Leaflet Map + List/Filter |
| SNCF stations -+-> fetch -> match -> | | Elevation chart |
| GTFS bus data --+ geography -> | | Section selector + QR |
| SRTM tiles ----+ elevation -> | | | |
| export | | catalog.json |
| data/catalog.json | | /gpx/{id}.gpx |
| data/gpx/*.gpx | | /geojson/{id}.json |
| data/geojson/*.json | | /elevation/{id}.json |
| data/elevation/*.json | +----------------------------+
+-----------------------------------------+
The pipeline:
routes.yaml (176 trails with OSM relation IDs)catalog.json consumed by the websiteOn macOS, brew bundle at the repo root installs every native tool (uv, osmium-tool, gdal, tippecanoe, rclone, bun). Otherwise:
pois stage; tracks fall back to the Overpass API)cd pipeline
uv sync --all-extras
uv run python -m open_rando pipeline
pipeline chains five stages: tracks, gtfs, pois, link, catalog. The POI stage reads the local OSM extract index, so build it first (make -f Makefile.osm). Each stage also runs alone, see docs/SPLIT_PIPELINE.md.
Options:
uv run python -m open_rando pipeline --route "GR 13" # single route
uv run python -m open_rando pipeline --dry-run # list routes without processing
uv run python -m open_rando pipeline --retry-failed # only routes that failed before
uv run python -m open_rando pipeline --skip-gtfs # reuse the GTFS stop index
Pipeline output goes to ~/.local/share/open-rando/data/, cache to ~/.cache/open-rando/.
cd website
bun install
bun run dev
The dev server copies pipeline data into public/data/ automatically.
To build for production:
bun run build
Static output goes to website/dist/.
open-rando/
pipeline/ Python data pipeline
src/open_rando/
cli.py Entry point
config.py Constants (API config, search radius)
fetchers/ Overpass, SNCF, GTFS, SRTM, POI fetchers
processors/ Station matching, elevation, geography, slicing
exporters/ GPX, GeoJSON, elevation, catalog writers
routes.yaml Curated GR route catalog (176 trails)
website/ Astro static site
src/
pages/ Landing, app (list + map), route detail (FR + EN)
components/ ElevationChart, RouteCard, RouteFilters, RouteList, SearchableSelect
lib/ catalog.ts, i18n.ts, elevation.ts, route-filters.ts
docs/ Architecture, data sources, deployment
| Layer | Tech |
|---|---|
| Pipeline | Python 3.13+, Shapely, requests, gpxpy, pyyaml |
| Website | Astro, Leaflet, Tailwind CSS, qrcode-generator |
| Data sources | OpenStreetMap Overpass API, SNCF open data, transport.data.gouv.fr GTFS, OSRM, SRTM elevation tiles |
All data comes from open sources under the ODbL license.
route=hiking, ref~"^GR")railway=station / railway=halt), filtered for active service via SNCF datatourism=hotel|guest_house|hostel|camp_site) near the trail.hgt tiles, sampled every 50m along the trail# Lint and format (Python)
cd pipeline
uv run ruff check src/
uv run ruff format src/
# Type check
uv run mypy src/
Code and website: GPLv3
Data: ODbL (OpenStreetMap)