494 for (var t = 0; t < tripNames.length; t++) {
495 var trip = tripNames[t]
496 var segs = segmentsByTrip[trip]
497 var features = []
498 var stops = {}
498 var stops = {} // name → { coord, transitCount, totalCount }
499 for (var j = 0; j < segs.length; j++) {
500 var s = segs[j]
501 var isTransitSeg = s.mode.toLowerCase().indexOf('transit') !== -1
502 features.push({
503 type: 'Feature',
504 properties: {
505 layer: isFlightMode(s.mode) ? 'flight' : 'route',
506 from: s.from, to: s.to, date: s.date, mode: s.mode,
507 },
508 geometry: { type: 'LineString', coordinates: isFlightMode(s.mode) ? flightCoordinates(s.fromCoord, s.toCoord) : [s.fromCoord, s.toCoord] },
509 })
509 stops[s.from] = s.fromCoord
510 stops[s.to] = s.toCoord
510 if (!stops[s.from]) stops[s.from] = { coord: s.fromCoord, transitCount: 0, totalCount: 0 }
511 if (!stops[s.to]) stops[s.to] = { coord: s.toCoord, transitCount: 0, totalCount: 0 }
512 stops[s.from].totalCount++
513 stops[s.to].totalCount++
514 if (isTransitSeg) { stops[s.from].transitCount++; stops[s.to].transitCount++ }
515 }
516 var stopNames = Object.keys(stops)
517 for (var k = 0; k < stopNames.length; k++) {
518 var st = stops[stopNames[k]]
519 var isTransit = st.transitCount === st.totalCount && st.totalCount > 0
520 features.push({
521 type: 'Feature',
516 properties: { layer: 'stop', name: stopNames[k] },
517 geometry: { type: 'Point', coordinates: stops[stopNames[k]] },
522 properties: { layer: 'stop', name: stopNames[k], transit: isTransit },
523 geometry: { type: 'Point', coordinates: st.coord },
524 })
525 }
526 var geoName = trip.replace(/\.md$/, '') + '.geojson'
527 try {