Skip to content

Instantly share code, notes, and snippets.

@borgar
Last active March 9, 2016 12:53
Show Gist options
  • Save borgar/82db45c67d0a03037ed3 to your computer and use it in GitHub Desktop.
Save borgar/82db45c67d0a03037ed3 to your computer and use it in GitHub Desktop.
Marey's Train Timetable
license: mit
height: 500
border: no

This recreates E. J. Marey's Paris-Lyon 1880's graphical train schedule using aproximate data.

Stations are separated vertically in proportion to geography; thus, the slope of the line reflects the actual speed of the train: the steeper the line, the faster the train.

<!DOCTYPE html>
<meta charset='utf-8'>
<style>
svg {
font: 10px sans-serif;
}
.grid rect,
.grid line {
stroke: #ccc;
fill: none;
}
.grid .min {
stroke: #eee;
font-family: serif;
}
.grid .x text {
text-anchor: middle;
}
.grid .y text {
text-anchor: start;
}
.grid .y text.major {
text-transform : uppercase;
}
.grid .y text.minor {
font: italic 1em serif;
}
.trains {
stroke: #866;
fill: none;
stroke-width: 1;
}
.trains path {
stroke-opacity: .5;
}
.trains .north {
stroke: #c00;
stroke-width: 1;
}
.trains .major {
stroke-opacity: 1;
stroke-width: 1.2;
}
</style>
<body>
<script src="//d3js.org/d3.v3.min.js"></script>
<script>
var margin = { top: 13, right: 15, bottom: 13, left: 77 },
width = 960 - margin.left - margin.right,
height = 500 - margin.top - margin.bottom,
time_domain = [ new Date( 1882, 0, 1, 6, 0 ),
new Date( 1882, 0, 2, 6, 0 ) ],
x = d3.time.scale().domain( time_domain ).range([ 0, width ]),
timeFmt = function ( d ) {
if ( d.getMinutes() ) return '';
var h = d.getHours();
if ( h === 12 ) { return 'MIDI'; }
if ( h === 0 ) { return 'MINUIT'; }
return h % 12;
};
var svg = d3.select( 'body' ).append( 'svg' )
.attr( 'width', width + margin.left + margin.right )
.attr( 'height', height + margin.top + margin.bottom )
.append( 'g' )
.attr( 'transform', `translate(${margin.left},${margin.top})` );
svg.append( 'defs' )
.append( 'clipPath' )
.attr( 'id', 'plotclip' )
.append( 'rect' )
.attr( 'x', 0 )
.attr( 'y', 0 )
.attr( 'width', width )
.attr( 'height', height );
// frame
var grid = svg.append( 'g' )
.attr( 'class', 'grid' );
grid.append( 'rect' )
.attr( 'id', 'plot' )
.attr( 'width', width )
.attr( 'height', height );
// time axis
var timeTicks = grid.selectAll( '.x' )
.data( x.ticks( d3.time.minute, 10 ) ).enter()
.append( 'g' )
.attr( 'class', 'x' )
.attr( 'transform', d => `translate(${x(d)},0)` );
timeTicks.append( 'line' )
.attr( 'class', d => d.getMinutes() ? 'min' : 'x' )
.attr( 'y2', height );
timeTicks.append( 'text' )
.attr( 'y', -3 )
.text( timeFmt );
timeTicks.append( 'text' )
.attr( 'y', height )
.attr( 'dy', '1em' )
.text( timeFmt );
d3.json( 'trains.json', function ( train ) {
var stations = d3.values( train.station )
.sort( (a, b) => a.km - b.km ),
y = d3.scale.linear()
.domain([ 0, stations[stations.length-1].km ])
.range([ 0, height ]);
// stops
var stopTicks = grid.selectAll( '.y' )
.data( stations ).enter().append( 'g' )
.attr( 'class', 'y' )
.attr( 'transform', d => `translate(0,${y(d.km)})` );
stopTicks.append( 'line' )
.attr( 'x2', width );
stopTicks.append( 'text' )
.attr( 'x', 5 - margin.left )
.attr( 'dy', '.32em' )
.attr( 'class', d => d.major ? 'major' : 'minor' )
.text( d => d.title );
// trains
var line = d3.svg.line()
.x( d => x( Date.parse( d.date ) ) )
.y( d => y( train.station[ d.station ].km ) );
var tracks = svg.append( 'g' )
.attr( 'class', 'trains' )
.attr( 'clip-path', 'url(#plotclip)' )
.selectAll( 'path' )
.data( train.lines ).enter();
tracks.append( 'path' )
.attr( 'd', d => line( d.stops ) )
.attr( 'class', d => d.direction + (d.major?' major':''));
// redrawn to create a circular overlap
tracks.append( 'path' )
.attr( 'd', d => line( d.stops ) )
.attr( 'transform', `translate(${-width},0)` )
.attr( 'class', d => d.direction + (d.major?' major':'') );
});
</script>
{
"station": {
"paris": {
"id": "paris",
"title": "Paris",
"major": true,
"km": 0
},
"moret": {
"id": "moret",
"title": "Moret",
"major": false,
"km": 65
},
"montereau": {
"id": "montereau",
"title": "Montereau",
"major": true,
"km": 75
},
"laroche": {
"id": "laroche",
"title": "Laroche",
"major": false,
"km": 150
},
"tonnerre": {
"id": "tonnerre",
"title": "Tonnerre",
"major": true,
"km": 187.4
},
"nuits": {
"id": "nuits",
"title": "Nuits·s-Raviéres",
"major": false,
"km": 218
},
"laumes": {
"id": "laumes",
"title": "Les laumes",
"major": false,
"km": 250
},
"dijon": {
"id": "dijon",
"title": "Dijon",
"major": true,
"km": 306
},
"chagny": {
"id": "chagny",
"title": "Chagny",
"major": false,
"km": 358
},
"chalon": {
"id": "chalon",
"title": "Chalon·s-Saône",
"major": false,
"km": 372.5
},
"macon": {
"id": "macon",
"title": "Mâcon",
"major": true,
"km": 430.7
},
"st-germain": {
"id": "st-germain",
"title": "St. Germain",
"major": false,
"km": 480
},
"lyon": {
"id": "lyon",
"title": "Lyon",
"major": true,
"km": 501.5
}
},
"lines": [
{
"direction": "south",
"stops": [
{
"station": "paris",
"date": "1882-01-01T06:33"
}, {
"station": "montereau",
"date": "1882-01-01T08:20"
}, {
"station": "montereau",
"date": "1882-01-01T08:25"
}, {
"station": "laroche",
"date": "1882-01-01T10:05"
}, {
"station": "laroche",
"date": "1882-01-01T10:15"
}, {
"station": "tonnerre",
"date": "1882-01-01T11:05"
}, {
"station": "tonnerre",
"date": "1882-01-01T11:25"
}, {
"station": "nuits",
"date": "1882-01-01T12:00"
}, {
"station": "nuits",
"date": "1882-01-01T12:05"
}, {
"station": "dijon",
"date": "1882-01-01T14:15"
}, {
"station": "dijon",
"date": "1882-01-01T14:25"
}, {
"station": "chagny",
"date": "1882-01-01T15:35"
}, {
"station": "chagny",
"date": "1882-01-01T15:40"
}, {
"station": "macon",
"date": "1882-01-01T17:20"
}, {
"station": "macon",
"date": "1882-01-01T17:30"
}, {
"station": "st-germain",
"date": "1882-01-01T18:42"
}, {
"station": "st-germain",
"date": "1882-01-01T18:45"
}, {
"station": "lyon",
"date": "1882-01-01T19:22"
}
],
"id": "jza2-3cmu"
}, {
"direction": "south",
"stops": [
{
"station": "paris",
"date": "1882-01-01T06:55"
}, {
"station": "moret",
"date": "1882-01-01T09:00"
}, {
"station": "moret",
"date": "1882-01-01T09:03"
}, {
"station": "montereau",
"date": "1882-01-01T09:21"
}, {
"station": "montereau",
"date": "1882-01-01T09:30"
}, {
"station": "laroche",
"date": "1882-01-01T11:40"
}, {
"station": "laroche",
"date": "1882-01-01T11:43"
}, {
"station": "tonnerre",
"date": "1882-01-01T12:51"
}, {
"station": "tonnerre",
"date": "1882-01-01T13:11"
}, {
"station": "laumes",
"date": "1882-01-01T14:50"
}, {
"station": "laumes",
"date": "1882-01-01T14:55"
}, {
"station": "dijon",
"date": "1882-01-01T16:48"
}, {
"station": "dijon",
"date": "1882-01-01T17:08"
}, {
"station": "chalon",
"date": "1882-01-01T19:48"
}, {
"station": "chalon",
"date": "1882-01-01T20:01"
}, {
"station": "macon",
"date": "1882-01-01T21:45"
}, {
"station": "macon",
"date": "1882-01-01T21:52"
}, {
"station": "lyon",
"date": "1882-01-02T00:04"
}
],
"id": "iv0m-1eaa"
}, {
"direction": "south",
"stops": [
{
"station": "paris",
"date": "1882-01-01T09:00"
}, {
"station": "montereau",
"date": "1882-01-01T11:45"
}
],
"id": "hn7m-fz3n"
}, {
"direction": "south",
"major": true,
"stops": [
{
"station": "paris",
"date": "1882-01-01T11:02"
}, {
"station": "montereau",
"date": "1882-01-01T12:34"
}, {
"station": "montereau",
"date": "1882-01-01T12:41"
}, {
"station": "laroche",
"date": "1882-01-01T14:06"
}, {
"station": "laroche",
"date": "1882-01-01T14:11"
}, {
"station": "tonnerre",
"date": "1882-01-01T14:55"
}, {
"station": "tonnerre",
"date": "1882-01-01T15:02"
}, {
"station": "nuits",
"date": "1882-01-01T15:35"
}, {
"station": "dijon",
"date": "1882-01-01T17:24"
}, {
"station": "dijon",
"date": "1882-01-01T18:00"
}, {
"station": "chagny",
"date": "1882-01-01T19:01"
}, {
"station": "chagny",
"date": "1882-01-01T19:08"
}, {
"station": "chalon",
"date": "1882-01-01T19:21"
}, {
"station": "chalon",
"date": "1882-01-01T19:27"
}, {
"station": "macon",
"date": "1882-01-01T20:30"
}, {
"station": "macon",
"date": "1882-01-01T20:34"
}, {
"station": "lyon",
"date": "1882-01-01T22:05"
}
],
"id": "belh-3chj"
}, {
"direction": "south",
"stops": [
{
"station": "paris",
"date": "1882-01-01T12:21"
}, {
"station": "moret",
"date": "1882-01-01T14:33"
}, {
"station": "montereau",
"date": "1882-01-01T14:52"
}, {
"station": "montereau",
"date": "1882-01-01T15:02"
}, {
"station": "laroche",
"date": "1882-01-01T17:14"
}, {
"station": "laroche",
"date": "1882-01-01T17:17"
}, {
"station": "tonnerre",
"date": "1882-01-01T18:23"
}, {
"station": "tonnerre",
"date": "1882-01-01T18:42"
}, {
"station": "nuits",
"date": "1882-01-01T19:29"
}, {
"station": "nuits",
"date": "1882-01-01T19:33"
}, {
"station": "laumes",
"date": "1882-01-01T20:25"
}, {
"station": "laumes",
"date": "1882-01-01T20:31"
}, {
"station": "dijon",
"date": "1882-01-01T22:19"
}
],
"id": "1l45-a9cy"
}, {
"direction": "south",
"stops": [
{
"station": "paris",
"date": "1882-01-01T15:04"
}, {
"station": "moret",
"date": "1882-01-01T16:49"
}, {
"station": "moret",
"date": "1882-01-01T16:53"
}, {
"station": "montereau",
"date": "1882-01-01T17:11"
}, {
"station": "montereau",
"date": "1882-01-01T17:18"
}, {
"station": "laroche",
"date": "1882-01-01T19:08"
}, {
"station": "laroche",
"date": "1882-01-01T19:13"
}, {
"station": "tonnerre",
"date": "1882-01-01T20:12"
}, {
"station": "tonnerre",
"date": "1882-01-01T20:32"
}, {
"station": "nuits",
"date": "1882-01-01T21:10"
}, {
"station": "nuits",
"date": "1882-01-01T21:15"
}, {
"station": "laumes",
"date": "1882-01-01T22:05"
}, {
"station": "laumes",
"date": "1882-01-01T22:07"
}, {
"station": "dijon",
"date": "1882-01-01T23:43"
}, {
"station": "dijon",
"date": "1882-01-01T23:57"
}, {
"station": "chagny",
"date": "1882-01-02T01:12"
}, {
"station": "chagny",
"date": "1882-01-02T01:22"
}, {
"station": "chalon",
"date": "1882-01-02T01:47"
}, {
"station": "chalon",
"date": "1882-01-02T02:20"
}, {
"station": "macon",
"date": "1882-01-02T03:48"
}, {
"station": "macon",
"date": "1882-01-02T04:02"
}, {
"station": "lyon",
"date": "1882-01-02T06:05"
}
],
"id": "go80-c6vq"
}, {
"direction": "south",
"stops": [
{
"station": "paris",
"date": "1882-01-01T15:25"
}, {
"station": "montereau",
"date": "1882-01-01T18:06"
}, {
"station": "montereau",
"date": "1882-01-01T18:19"
}, {
"station": "laroche",
"date": "1882-01-01T20:36"
}, {
"station": "laroche",
"date": "1882-01-01T20:42"
}, {
"station": "tonnerre",
"date": "1882-01-01T21:48"
}
],
"id": "5bv3-3r29"
}, {
"direction": "south",
"stops": [
{
"station": "paris",
"date": "1882-01-01T17:29"
}, {
"station": "moret",
"date": "1882-01-01T19:44"
}, {
"station": "montereau",
"date": "1882-01-01T20:06"
}
],
"id": "3u39-5jgz"
}, {
"direction": "south",
"stops": [
{
"station": "dijon",
"date": "1882-01-01T20:46"
}, {
"station": "chagny",
"date": "1882-01-01T22:17"
}, {
"station": "chagny",
"date": "1882-01-01T22:23"
}, {
"station": "chalon",
"date": "1882-01-01T22:52"
}
],
"id": "h335-1puy"
}, {
"direction": "south",
"stops": [
{
"station": "macon",
"date": "1882-01-01T14:08"
}, {
"station": "st-germain",
"date": "1882-01-01T15:50"
}, {
"station": "lyon",
"date": "1882-01-01T16:43"
}
],
"id": "2ifu-8ck8"
}, {
"direction": "south",
"stops": [
{
"station": "macon",
"date": "1882-01-01T19:04"
}, {
"station": "st-germain",
"date": "1882-01-01T20:44"
}, {
"station": "st-germain",
"date": "1882-01-01T20:48"
}, {
"station": "lyon",
"date": "1882-01-01T21:37"
}
],
"id": "ctfb-9cvz"
}, {
"direction": "south",
"major": true,
"stops": [
{
"station": "paris",
"date": "1882-01-01T19:12"
}, {
"station": "montereau",
"date": "1882-01-01T20:33"
}, {
"station": "montereau",
"date": "1882-01-01T20:42"
}, {
"station": "laroche",
"date": "1882-01-01T21:54"
}, {
"station": "laroche",
"date": "1882-01-01T22:02"
}, {
"station": "tonnerre",
"date": "1882-01-01T22:39"
}, {
"station": "tonnerre",
"date": "1882-01-01T22:43"
}, {
"station": "laumes",
"date": "1882-01-01T23:48"
}, {
"station": "dijon",
"date": "1882-01-02T00:58"
}, {
"station": "dijon",
"date": "1882-01-02T01:05"
}, {
"station": "chagny",
"date": "1882-01-02T01:52"
}, {
"station": "chagny",
"date": "1882-01-02T01:59"
}, {
"station": "macon",
"date": "1882-01-02T03:09"
}, {
"station": "macon",
"date": "1882-01-02T03:12"
}, {
"station": "lyon",
"date": "1882-01-02T04:26"
}
],
"id": "2xn7-hn5g"
}, {
"direction": "south",
"major": true,
"stops": [
{
"station": "paris",
"date": "1882-01-01T19:59"
}, {
"station": "montereau",
"date": "1882-01-01T21:32"
}, {
"station": "montereau",
"date": "1882-01-01T21:38"
}, {
"station": "laroche",
"date": "1882-01-01T23:05"
}, {
"station": "laroche",
"date": "1882-01-01T23:12"
}, {
"station": "tonnerre",
"date": "1882-01-01T23:53"
}, {
"station": "tonnerre",
"date": "1882-01-02T00:03"
}, {
"station": "nuits",
"date": "1882-01-02T00:33"
}, {
"station": "nuits",
"date": "1882-01-02T00:38"
}, {
"station": "laumes",
"date": "1882-01-02T01:11"
}, {
"station": "dijon",
"date": "1882-01-02T02:30"
}, {
"station": "dijon",
"date": "1882-01-02T02:39"
}, {
"station": "chagny",
"date": "1882-01-02T03:39"
}, {
"station": "chagny",
"date": "1882-01-02T03:40"
}, {
"station": "chalon",
"date": "1882-01-02T04:02"
}, {
"station": "chalon",
"date": "1882-01-02T04:09"
}, {
"station": "macon",
"date": "1882-01-02T05:08"
}, {
"station": "macon",
"date": "1882-01-02T05:16"
}, {
"station": "lyon",
"date": "1882-01-02T07:02"
}
],
"id": "ffcj-frej"
}, {
"direction": "south",
"major": true,
"stops": [
{
"station": "paris",
"date": "1882-01-01T20:40"
}, {
"station": "montereau",
"date": "1882-01-01T22:14"
}, {
"station": "montereau",
"date": "1882-01-01T22:22"
}, {
"station": "laroche",
"date": "1882-01-01T23:37"
}, {
"station": "laroche",
"date": "1882-01-01T23:42"
}, {
"station": "tonnerre",
"date": "1882-01-02T00:27"
}, {
"station": "tonnerre",
"date": "1882-01-02T00:38"
}, {
"station": "laumes",
"date": "1882-01-02T01:52"
}, {
"station": "dijon",
"date": "1882-01-02T03:00"
}, {
"station": "dijon",
"date": "1882-01-02T03:11"
}, {
"station": "chagny",
"date": "1882-01-02T04:03"
}, {
"station": "chagny",
"date": "1882-01-02T04:10"
}, {
"station": "chalon",
"date": "1882-01-02T04:28"
}, {
"station": "chalon",
"date": "1882-01-02T04:30"
}, {
"station": "macon",
"date": "1882-01-02T05:38"
}, {
"station": "macon",
"date": "1882-01-02T06:00"
}, {
"station": "lyon",
"date": "1882-01-02T07:25"
}
],
"id": "98rg-ijyr"
}, {
"direction": "south",
"stops": [
{
"station": "paris",
"date": "1882-01-01T21:19"
}, {
"station": "moret",
"date": "1882-01-01T23:41"
}, {
"station": "moret",
"date": "1882-01-01T23:45"
}, {
"station": "montereau",
"date": "1882-01-02T00:02"
}, {
"station": "montereau",
"date": "1882-01-02T00:05"
}, {
"station": "laroche",
"date": "1882-01-02T02:13"
}
],
"id": "kyf9-c9ff"
}, {
"direction": "south",
"stops": [
{
"station": "paris",
"date": "1882-01-01T22:42"
}, {
"station": "moret",
"date": "1882-01-02T00:42"
}, {
"station": "montereau",
"date": "1882-01-02T01:03"
}, {
"station": "montereau",
"date": "1882-01-02T01:11"
}, {
"station": "laroche",
"date": "1882-01-02T03:02"
}, {
"station": "laroche",
"date": "1882-01-02T03:10"
}, {
"station": "tonnerre",
"date": "1882-01-02T04:14"
}, {
"station": "tonnerre",
"date": "1882-01-02T04:25"
}, {
"station": "laumes",
"date": "1882-01-02T06:15"
}, {
"station": "laumes",
"date": "1882-01-02T06:25"
}, {
"station": "dijon",
"date": "1882-01-02T08:17"
}, {
"station": "dijon",
"date": "1882-01-02T08:39"
}, {
"station": "chagny",
"date": "1882-01-02T10:09"
}, {
"station": "chagny",
"date": "1882-01-02T10:13"
}, {
"station": "chalon",
"date": "1882-01-02T10:42"
}, {
"station": "chalon",
"date": "1882-01-02T10:54"
}, {
"station": "macon",
"date": "1882-01-02T12:39"
}, {
"station": "macon",
"date": "1882-01-02T12:51"
}, {
"station": "lyon",
"date": "1882-01-02T15:12"
}
],
"id": "hcd3-9wwb"
}, {
"direction": "south",
"stops": [
{
"station": "montereau",
"date": "1882-01-02T05:00"
}, {
"station": "laroche",
"date": "1882-01-02T07:07"
}, {
"station": "laroche",
"date": "1882-01-02T07:16"
}, {
"station": "tonnerre",
"date": "1882-01-02T08:20"
}, {
"station": "tonnerre",
"date": "1882-01-02T08:26"
}, {
"station": "nuits",
"date": "1882-01-02T09:12"
}, {
"station": "nuits",
"date": "1882-01-02T09:17"
}, {
"station": "laumes",
"date": "1882-01-02T10:11"
}, {
"station": "dijon",
"date": "1882-01-02T12:03"
}, {
"station": "dijon",
"date": "1882-01-02T12:18"
}, {
"station": "chagny",
"date": "1882-01-02T13:50"
}, {
"station": "chalon",
"date": "1882-01-02T14:21"
}, {
"station": "chalon",
"date": "1882-01-02T14:32"
}, {
"station": "macon",
"date": "1882-01-02T16:19"
}, {
"station": "macon",
"date": "1882-01-02T16:28"
}, {
"station": "st-germain",
"date": "1882-01-02T18:08"
}, {
"station": "lyon",
"date": "1882-01-02T19:00"
}
],
"id": "8ouk-cw0p"
}, {
"direction": "south",
"stops": [
{
"station": "chalon",
"date": "1882-01-01T06:05"
}, {
"station": "macon",
"date": "1882-01-01T07:50"
}, {
"station": "macon",
"date": "1882-01-01T08:06"
}, {
"station": "st-germain",
"date": "1882-01-01T09:45"
}, {
"station": "st-germain",
"date": "1882-01-01T09:50"
}, {
"station": "lyon",
"date": "1882-01-01T10:40"
}
],
"id": "7aau-axfy"
}, {
"direction": "south",
"stops": [
{
"station": "macon",
"date": "1882-01-01T06:14"
}, {
"station": "st-germain",
"date": "1882-01-01T07:55"
}, {
"station": "st-germain",
"date": "1882-01-01T08:00"
}, {
"station": "lyon",
"date": "1882-01-01T08:52"
}
],
"id": "938z-57xd"
}, {
"direction": "north",
"stops": [
{
"station": "lyon",
"date": "1882-01-01T13:47"
}, {
"station": "st-germain",
"date": "1882-01-01T14:37"
}, {
"station": "st-germain",
"date": "1882-01-01T14:39"
}, {
"station": "macon",
"date": "1882-01-01T16:19"
}, {
"station": "macon",
"date": "1882-01-01T16:29"
}, {
"station": "chalon",
"date": "1882-01-01T18:16"
}, {
"station": "chalon",
"date": "1882-01-01T18:28"
}, {
"station": "chagny",
"date": "1882-01-01T19:04"
}, {
"station": "chagny",
"date": "1882-01-01T19:08"
}, {
"station": "dijon",
"date": "1882-01-01T20:43"
}
],
"id": "9n4f-6omm"
}, {
"direction": "north",
"stops": [
{
"station": "lyon",
"date": "1882-01-01T10:54"
}, {
"station": "macon",
"date": "1882-01-01T13:28"
}
],
"id": "i7va-k5zm"
}, {
"direction": "north",
"stops": [
{
"station": "lyon",
"date": "1882-01-01T08:10"
}, {
"station": "st-germain",
"date": "1882-01-01T08:56"
}, {
"station": "st-germain",
"date": "1882-01-01T08:59"
}, {
"station": "macon",
"date": "1882-01-01T10:40"
}
],
"id": "leti-bu6r"
}, {
"direction": "north",
"stops": [
{
"station": "tonnerre",
"date": "1882-01-01T19:32"
}, {
"station": "laroche",
"date": "1882-01-01T20:47"
}, {
"station": "laroche",
"date": "1882-01-01T20:54"
}, {
"station": "montereau",
"date": "1882-01-01T23:07"
}
],
"id": "ftkx-3rwv"
}, {
"direction": "north",
"stops": [
{
"station": "lyon",
"date": "1882-01-02T04:51"
}, {
"station": "st-germain",
"date": "1882-01-02T05:34"
}, {
"station": "st-germain",
"date": "1882-01-02T05:40"
}, {
"station": "macon",
"date": "1882-01-02T07:35"
}, {
"station": "macon",
"date": "1882-01-02T07:45"
}, {
"station": "chalon",
"date": "1882-01-02T09:21"
}, {
"station": "chalon",
"date": "1882-01-02T09:53"
}, {
"station": "chagny",
"date": "1882-01-02T10:27"
}, {
"station": "chagny",
"date": "1882-01-02T10:36"
}, {
"station": "dijon",
"date": "1882-01-02T12:08"
}, {
"station": "dijon",
"date": "1882-01-02T12:36"
}, {
"station": "laumes",
"date": "1882-01-02T14:26"
}, {
"station": "laumes",
"date": "1882-01-02T14:32"
}, {
"station": "nuits",
"date": "1882-01-02T15:22"
}, {
"station": "nuits",
"date": "1882-01-02T15:28"
}, {
"station": "tonnerre",
"date": "1882-01-02T16:16"
}, {
"station": "tonnerre",
"date": "1882-01-02T16:27"
}, {
"station": "laroche",
"date": "1882-01-02T17:38"
}, {
"station": "laroche",
"date": "1882-01-02T17:40"
}, {
"station": "montereau",
"date": "1882-01-02T19:57"
}, {
"station": "montereau",
"date": "1882-01-02T20:07"
}, {
"station": "moret",
"date": "1882-01-02T20:26"
}, {
"station": "moret",
"date": "1882-01-02T21:07"
}, {
"station": "paris",
"date": "1882-01-02T23:33"
}
],
"id": "hut3-29h6"
}, {
"direction": "north",
"major": true,
"stops": [
{
"station": "lyon",
"date": "1882-01-01T06:46"
}, {
"station": "st-germain",
"date": "1882-01-01T07:18"
}, {
"station": "st-germain",
"date": "1882-01-01T07:23"
}, {
"station": "macon",
"date": "1882-01-01T08:22"
}, {
"station": "macon",
"date": "1882-01-01T08:26"
}, {
"station": "chalon",
"date": "1882-01-01T09:33"
}, {
"station": "chalon",
"date": "1882-01-01T09:38"
}, {
"station": "chagny",
"date": "1882-01-01T09:54"
}, {
"station": "chagny",
"date": "1882-01-01T10:00"
}, {
"station": "dijon",
"date": "1882-01-01T11:03"
}, {
"station": "dijon",
"date": "1882-01-01T11:30"
}, {
"station": "laumes",
"date": "1882-01-01T12:44"
}, {
"station": "laumes",
"date": "1882-01-01T12:46"
}, {
"station": "tonnerre",
"date": "1882-01-01T13:54"
}, {
"station": "tonnerre",
"date": "1882-01-01T14:01"
}, {
"station": "laroche",
"date": "1882-01-01T14:45"
}, {
"station": "laroche",
"date": "1882-01-01T14:50"
}, {
"station": "montereau",
"date": "1882-01-01T16:16"
}, {
"station": "montereau",
"date": "1882-01-01T16:24"
}, {
"station": "paris",
"date": "1882-01-01T18:01"
}
],
"id": "lcry-6ry2"
}, {
"direction": "north",
"stops": [
{
"station": "montereau",
"date": "1882-01-01T13:59"
}, {
"station": "paris",
"date": "1882-01-01T16:46"
}
],
"id": "4jwu-cr56"
}, {
"direction": "north",
"stops": [
{
"station": "lyon",
"date": "1882-01-01T09:28"
}, {
"station": "st-germain",
"date": "1882-01-01T10:01"
}, {
"station": "st-germain",
"date": "1882-01-01T10:04"
}, {
"station": "macon",
"date": "1882-01-01T11:18"
}, {
"station": "macon",
"date": "1882-01-01T11:25"
}, {
"station": "chalon",
"date": "1882-01-01T12:38"
}, {
"station": "chalon",
"date": "1882-01-01T12:44"
}, {
"station": "chagny",
"date": "1882-01-01T13:07"
}, {
"station": "chagny",
"date": "1882-01-01T13:15"
}, {
"station": "dijon",
"date": "1882-01-01T14:22"
}, {
"station": "dijon",
"date": "1882-01-01T14:34"
}, {
"station": "laumes",
"date": "1882-01-01T16:09"
}, {
"station": "nuits",
"date": "1882-01-01T16:52"
}, {
"station": "tonnerre",
"date": "1882-01-01T17:27"
}, {
"station": "tonnerre",
"date": "1882-01-01T17:34"
}, {
"station": "laroche",
"date": "1882-01-01T18:45"
}, {
"station": "laroche",
"date": "1882-01-01T18:53"
}, {
"station": "montereau",
"date": "1882-01-01T20:34"
}, {
"station": "montereau",
"date": "1882-01-01T20:39"
}, {
"station": "moret",
"date": "1882-01-01T20:55"
}, {
"station": "paris",
"date": "1882-01-01T22:35"
}
],
"id": "hb1j-3nx9"
}, {
"direction": "north",
"stops": [
{
"station": "chalon",
"date": "1882-01-01T06:36"
}, {
"station": "chagny",
"date": "1882-01-01T07:18"
}, {
"station": "chagny",
"date": "1882-01-01T07:21"
}, {
"station": "dijon",
"date": "1882-01-01T08:52"
}, {
"station": "dijon",
"date": "1882-01-01T09:17"
}, {
"station": "laumes",
"date": "1882-01-01T11:06"
}, {
"station": "laumes",
"date": "1882-01-01T11:12"
}, {
"station": "nuits",
"date": "1882-01-01T12:09"
}, {
"station": "tonnerre",
"date": "1882-01-01T12:59"
}, {
"station": "tonnerre",
"date": "1882-01-01T13:11"
}, {
"station": "laroche",
"date": "1882-01-01T14:12"
}, {
"station": "laroche",
"date": "1882-01-01T14:52"
}, {
"station": "montereau",
"date": "1882-01-01T17:07"
}, {
"station": "montereau",
"date": "1882-01-01T17:28"
}, {
"station": "moret",
"date": "1882-01-01T17:44"
}, {
"station": "moret",
"date": "1882-01-01T17:52"
}, {
"station": "paris",
"date": "1882-01-01T20:18"
}
],
"id": "bkul-j15q"
}, {
"direction": "north",
"stops": [
{
"station": "tonnerre",
"date": "1882-01-01T06:01"
}, {
"station": "laroche",
"date": "1882-01-01T07:10"
}, {
"station": "laroche",
"date": "1882-01-01T07:13"
}, {
"station": "montereau",
"date": "1882-01-01T09:15"
}, {
"station": "montereau",
"date": "1882-01-01T09:33"
}, {
"station": "moret",
"date": "1882-01-01T09:48"
}, {
"station": "moret",
"date": "1882-01-01T09:50"
}, {
"station": "paris",
"date": "1882-01-01T11:46"
}
],
"id": "6fi6-kfmg"
}, {
"direction": "north",
"stops": [
{
"station": "laroche",
"date": "1882-01-01T06:13"
}, {
"station": "montereau",
"date": "1882-01-01T08:26"
}, {
"station": "montereau",
"date": "1882-01-01T08:35"
}, {
"station": "moret",
"date": "1882-01-01T08:51"
}, {
"station": "moret",
"date": "1882-01-01T08:56"
}, {
"station": "paris",
"date": "1882-01-01T11:20"
}
],
"id": "dav2-hdk8"
}, {
"direction": "north",
"stops": [
{
"station": "lyon",
"date": "1882-01-01T16:23"
}, {
"station": "st-germain",
"date": "1882-01-01T17:11"
}, {
"station": "st-germain",
"date": "1882-01-01T17:18"
}, {
"station": "macon",
"date": "1882-01-01T18:55"
}, {
"station": "macon",
"date": "1882-01-01T19:11"
}, {
"station": "chalon",
"date": "1882-01-01T20:59"
}
],
"id": "bnd7-hr8d"
}, {
"direction": "north",
"stops": [
{
"station": "lyon",
"date": "1882-01-01T17:24"
}, {
"station": "st-germain",
"date": "1882-01-01T18:10"
}, {
"station": "st-germain",
"date": "1882-01-01T18:16"
}, {
"station": "macon",
"date": "1882-01-01T19:57"
}
],
"id": "6k7w-czdk"
}, {
"direction": "north",
"major": true,
"stops": [
{
"station": "lyon",
"date": "1882-01-01T19:06"
}, {
"station": "macon",
"date": "1882-01-01T20:26"
}, {
"station": "macon",
"date": "1882-01-01T20:32"
}, {
"station": "chalon",
"date": "1882-01-01T21:29"
}, {
"station": "chagny",
"date": "1882-01-01T21:50"
}, {
"station": "chagny",
"date": "1882-01-01T21:57"
}, {
"station": "dijon",
"date": "1882-01-01T22:52"
}, {
"station": "dijon",
"date": "1882-01-01T23:07"
}, {
"station": "laumes",
"date": "1882-01-02T00:20"
}, {
"station": "nuits",
"date": "1882-01-02T00:54"
}, {
"station": "nuits",
"date": "1882-01-02T01:00"
}, {
"station": "tonnerre",
"date": "1882-01-02T01:28"
}, {
"station": "tonnerre",
"date": "1882-01-02T01:33"
}, {
"station": "laroche",
"date": "1882-01-02T02:12"
}, {
"station": "laroche",
"date": "1882-01-02T02:19"
}, {
"station": "montereau",
"date": "1882-01-02T03:29"
}, {
"station": "montereau",
"date": "1882-01-02T03:33"
}, {
"station": "paris",
"date": "1882-01-02T05:11"
}
],
"id": "c673-b2sh"
}, {
"direction": "north",
"stops": [
{
"station": "lyon",
"date": "1882-01-01T23:42"
}, {
"station": "macon",
"date": "1882-01-02T01:40"
}, {
"station": "macon",
"date": "1882-01-02T01:57"
}, {
"station": "chalon",
"date": "1882-01-02T03:19"
}, {
"station": "chalon",
"date": "1882-01-02T03:24"
}, {
"station": "chagny",
"date": "1882-01-02T03:49"
}, {
"station": "chagny",
"date": "1882-01-02T03:56"
}, {
"station": "dijon",
"date": "1882-01-02T05:12"
}, {
"station": "dijon",
"date": "1882-01-02T05:36"
}, {
"station": "laumes",
"date": "1882-01-02T07:27"
}, {
"station": "laumes",
"date": "1882-01-02T07:35"
}, {
"station": "nuits",
"date": "1882-01-02T08:22"
}, {
"station": "nuits",
"date": "1882-01-02T08:25"
}, {
"station": "tonnerre",
"date": "1882-01-02T09:19"
}, {
"station": "tonnerre",
"date": "1882-01-02T09:35"
}, {
"station": "laroche",
"date": "1882-01-02T10:50"
}, {
"station": "montereau",
"date": "1882-01-02T13:05"
}, {
"station": "montereau",
"date": "1882-01-02T13:16"
}, {
"station": "moret",
"date": "1882-01-02T13:30"
}, {
"station": "moret",
"date": "1882-01-02T13:36"
}, {
"station": "paris",
"date": "1882-01-02T15:30"
}
],
"id": "ij5o-euqp"
}, {
"direction": "north",
"stops": [
{
"station": "lyon",
"date": "1882-01-01T20:20"
}, {
"station": "st-germain",
"date": "1882-01-01T21:05"
}, {
"station": "st-germain",
"date": "1882-01-01T21:10"
}, {
"station": "macon",
"date": "1882-01-01T22:50"
}
],
"id": "ba4t-212y"
}, {
"direction": "north",
"stops": [
{
"station": "lyon",
"date": "1882-01-01T19:55"
}, {
"station": "st-germain",
"date": "1882-01-01T20:25"
}, {
"station": "st-germain",
"date": "1882-01-01T20:29"
}, {
"station": "macon",
"date": "1882-01-01T21:46"
}, {
"station": "macon",
"date": "1882-01-01T21:54"
}, {
"station": "chalon",
"date": "1882-01-01T23:23"
}, {
"station": "chalon",
"date": "1882-01-01T23:44"
}, {
"station": "chagny",
"date": "1882-01-02T00:14"
}, {
"station": "chagny",
"date": "1882-01-02T00:21"
}, {
"station": "dijon",
"date": "1882-01-02T01:41"
}
],
"id": "gb2g-ds04"
}, {
"direction": "north",
"major": true,
"stops": [
{
"station": "lyon",
"date": "1882-01-01T19:29"
}, {
"station": "macon",
"date": "1882-01-01T21:02"
}, {
"station": "macon",
"date": "1882-01-01T21:17"
}, {
"station": "chalon",
"date": "1882-01-01T22:24"
}, {
"station": "chalon",
"date": "1882-01-01T22:30"
}, {
"station": "chagny",
"date": "1882-01-01T22:50"
}, {
"station": "chagny",
"date": "1882-01-01T22:56"
}, {
"station": "dijon",
"date": "1882-01-01T23:58"
}, {
"station": "dijon",
"date": "1882-01-02T00:09"
}, {
"station": "laumes",
"date": "1882-01-02T01:20"
}, {
"station": "nuits",
"date": "1882-01-02T01:58"
}, {
"station": "tonnerre",
"date": "1882-01-02T02:31"
}, {
"station": "tonnerre",
"date": "1882-01-02T02:42"
}, {
"station": "laroche",
"date": "1882-01-02T03:22"
}, {
"station": "laroche",
"date": "1882-01-02T03:30"
}, {
"station": "montereau",
"date": "1882-01-02T05:00"
}, {
"station": "montereau",
"date": "1882-01-02T05:03"
}, {
"station": "moret",
"date": "1882-01-02T05:20"
}, {
"station": "paris",
"date": "1882-01-02T06:54"
}
],
"id": "825j-2ocb"
}, {
"direction": "north",
"stops": [
{
"station": "montereau",
"date": "1882-01-02T05:20"
}, {
"station": "moret",
"date": "1882-01-02T05:39"
}, {
"station": "moret",
"date": "1882-01-02T05:45"
}, {
"station": "paris",
"date": "1882-01-02T08:10"
}
],
"id": "3hmz-csys"
}, {
"direction": "north",
"stops": [
{
"station": "dijon",
"date": "1882-01-02T02:25"
}, {
"station": "laumes",
"date": "1882-01-02T04:09"
}, {
"station": "laumes",
"date": "1882-01-02T04:12"
}, {
"station": "nuits",
"date": "1882-01-02T04:55"
}, {
"station": "nuits",
"date": "1882-01-02T05:01"
}, {
"station": "tonnerre",
"date": "1882-01-02T05:48"
}
],
"id": "67vq-f56h"
}, {
"direction": "north",
"major": true,
"stops": [
{
"station": "lyon",
"date": "1882-01-01T22:34"
}, {
"station": "macon",
"date": "1882-01-01T23:49"
}, {
"station": "macon",
"date": "1882-01-01T23:56"
}, {
"station": "chagny",
"date": "1882-01-02T01:10"
}, {
"station": "chagny",
"date": "1882-01-02T01:17"
}, {
"station": "dijon",
"date": "1882-01-02T02:08"
}, {
"station": "dijon",
"date": "1882-01-02T02:20"
}, {
"station": "laumes",
"date": "1882-01-02T03:39"
}, {
"station": "tonnerre",
"date": "1882-01-02T04:38"
}, {
"station": "tonnerre",
"date": "1882-01-02T04:49"
}, {
"station": "laroche",
"date": "1882-01-02T05:24"
}, {
"station": "laroche",
"date": "1882-01-02T05:31"
}, {
"station": "montereau",
"date": "1882-01-02T06:46"
}, {
"station": "montereau",
"date": "1882-01-02T06:55"
}, {
"station": "paris",
"date": "1882-01-02T08:31"
}
],
"id": "j4bu-4ihv"
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment