UNPKG

geojson2gtfs

Version:

A tiny nodeJs cli app to transform geoJson files (describing an onDemand informal public transport routes) to its corresponding GTFS entities.

67 lines (60 loc) 1.81 kB
function gtfsTripsFileFields() { return [ { value: 'tripId', label: 'trip_id' }, { value: 'routeId', label: 'route_id' }, { value: 'serviceId', label: 'service_id' }, { value: 'tripHeadSign', label: 'trip_headsign' }, { value: 'shapeId', label: 'shape_id' }, ]; } function getTripId(geoJsonFileIndex) { return `T${geoJsonFileIndex + 1}`; } // function getRouteID(geoJsonFileIndex) { function getRouteID(route) { return route.values[0].routeId; } function getServiceId(settings, serviceIndex) { if (settings.calendarSettings[serviceIndex].serviceId) return settings.calendarSettings[serviceIndex].serviceId; throw "The settings file must have a valid serviceId field"; } function getTripHeadSign(geoJsonObject) { if (geoJsonObject.features[0].properties.agency) return `${geoJsonObject.features[0].properties.agency}`; if (geoJsonObject.features[0].properties.agencia) return `${geoJsonObject.features[0].properties.agencia}`; throw "The geoJson file must have an agency field"; } exports.tripsObjectGenerator = function(geoJsonObject, settings, geoJsonFileIndex, route, shapeId) { return { fields: gtfsTripsFileFields(), values: [ { tripId: getTripId(geoJsonFileIndex), routeId: getRouteID(route), serviceId: getServiceId(settings, 0), tripHeadSign: getTripHeadSign(geoJsonObject), shapeId: shapeId } ] }; } exports.tripsObjectFields = function() { return { fields: gtfsTripsFileFields(), values: [] }; }