{"id":26218511,"url":"https://github.com/alifeee/europe-trips","last_synced_at":"2026-03-07T06:31:54.793Z","repository":{"id":279982110,"uuid":"940632659","full_name":"alifeee/europe-trips","owner":"alifeee","description":"collection of gpx/geojson files mapping train routes from trips to europe","archived":false,"fork":false,"pushed_at":"2025-05-14T16:07:29.000Z","size":9133,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-16T06:46:39.099Z","etag":null,"topics":["europe","geojson","interrail","maplibre-gl-js"],"latest_commit_sha":null,"homepage":"http://alifeee.co.uk/europe-trips/","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alifeee.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-02-28T14:18:36.000Z","updated_at":"2025-05-14T16:07:34.000Z","dependencies_parsed_at":"2025-05-30T11:55:44.578Z","dependency_job_id":"b2abf7b2-5058-402e-8dd2-3b5822291581","html_url":"https://github.com/alifeee/europe-trips","commit_stats":null,"previous_names":["alifeee/trips-to-europe","alifeee/europe-trips"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/alifeee/europe-trips","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alifeee%2Feurope-trips","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alifeee%2Feurope-trips/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alifeee%2Feurope-trips/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alifeee%2Feurope-trips/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alifeee","download_url":"https://codeload.github.com/alifeee/europe-trips/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alifeee%2Feurope-trips/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30209086,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-07T05:23:27.321Z","status":"ssl_error","status_checked_at":"2026-03-07T05:00:17.256Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["europe","geojson","interrail","maplibre-gl-js"],"created_at":"2025-03-12T13:17:23.889Z","updated_at":"2026-03-07T06:31:54.767Z","avatar_url":"https://github.com/alifeee.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# trips-to-europe\n\nA collection of GPX/GeoJson traces from trips to Europe. They look the best when trains are involved. The best reason to be anti-flying.\n\nview on \u003chttps://alifeee.co.uk/europe-trips/\u003e\n\nTrips:\n\n- [2018-08 Paris](./2018-08%20Paris/)\n- [2022-07 interrail](./2022-07%20interrail/)\n- [2023-07 keptp](./2023-07%20keptp/)\n- [2024-12 CCC](./2024-12%20CCC/)\n- [2025-04 blummit](./2025-04%20blummit/)\n\n![screenshot of a map with a GPS trace overlaid](./images/CCC_trip_geojson.png)\n\n## Collecting GPX traces\n\nHow to get GPX files. Empty rows I haven't done before but \u003chttps://brouter.damsy.net/\u003e may be apt.\n\n| mode of transport | site(s) | output format |\n| --- | --- | --- |\n| train | route on \u003chttps://brouter.damsy.net/\u003e and export | gpx |\n| car/bus | route on \u003chttps://brouter.damsy.net/\u003e and export | gpx |\n| ferry | find ID via query on [OSM](https://www.openstreetmap.org) ([e.g.,](https://www.openstreetmap.org/way/1343490175)), then run query like `way(1343490175); out geom;` on \u003chttps://overpass-turbo.eu/\u003e and export | geojson/gpx/kml |\n| bike | ??? | ??? |\n| plane | ??? | ??? |\n| on foot | ??? | ??? |\n\n## Converting filetypes\n\nThe `gdal-bin` package can probably do whatever conversion you want. If you're going from gpx, you may need to add `tracks` to the command. Also, the `from`/`to` arguments seem swapped (`to` is first).\n\n```bash\nsudo apt install gdal-bin\n# convert GEOJSON -\u003e KML\nogr2ogr route.kml route.geojson\n# convert GPX -\u003e GEOJSON\nogr2ogr route.geojson route.gpx tracks\n```\n\n## Viewing data\n\nView files nicely (as a preview) on:\n\n| filetype | website | notes |\n| --- | --- | --- |\n| `.gpx` | \u003chttps://gpx.studio/app\u003e | |\n| `.geojson` | \u003chttps://geojson.io/\u003e | |\n| `.kml` | ??? | |\n| other | ??? | |\n\n## Combining GPX traces\n\nName the traces something nice, that when sorted, is in order.\n\nI don't know how to combine/merge `.gpx` files. I do know how to merge `.geojson` files, so I just turn them into those and merge that.\n\n```bash\n# convert to geojson\nmkdir geojson\nfor file in gpx/*; do\n  bn=\"${file#*/}\"\n  ogr2ogr \"geojson/${bn%*.gpx}.geojson\" \"${file}\" tracks\ndone\n```\n\n…combine geojson\n\n```bash\n# combine geojson\nendfile=\"all.geojson\"\nwhile read file; do\n  cat \"${file}\";\ndone \u003c\u003c\u003c $(find geojson -type f | sort -n) | jq -c --slurp '{\n    \"type\": \"FeatureCollection\",\n    \"name\": \"combined\",\n    \"features\": ([.[] | .features[0]])\n}' \u003e \"${endfile}\"\n# remove \"messages\" and \"times\" from properties (from brouter train router)\n#   and remove height coordinate from coordinate strings\ncat \"${endfile}\" \\\n  | jq -c '\n    .features[].properties |= del(.messages) |\n    .features[].properties |= del(.times) |\n    .features[] |= (\n      if .geometry.type == \"MultiLineString\" then\n        .geometry.coordinates |= (.[] |= (.[] |= del(.[2])))\n      elif .geometry.type == \"LineString\" then\n        .geometry.coordinates |= (.[] |= del(.[2]))\n      else\n        .\n      end\n  )'\\\n  | sponge \"${endfile}\"\n```\n\ncombine all geojson files into one:\n\n```bash\nfiles=(\"2018-08 Paris/all.geojson\" \"2022-07 interrail/all.geojson\" \"2023-07 keptp/all.geojson\" \"2024-12 CCC/all.geojson\" \"2025-04 blummit/all.geojson\")\nfor file in \"${files[@]}\"; do\n  printf '{\"key\": \"%s\", \"value\": ' \"${file}\"\n  cat \"${file}\" | jq -c\n  printf \"}\"\ndone | jq --slurp -c 'from_entries' \u003e all.json\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falifeee%2Feurope-trips","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falifeee%2Feurope-trips","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falifeee%2Feurope-trips/lists"}