geojson2gtfs
Version:
A tiny nodeJs cli app to transform geoJson files (describing an onDemand informal public transport routes) to its corresponding GTFS entities.
66 lines (58 loc) • 1.9 kB
JavaScript
function gtfsAgencyFileFields() {
return [
{
value: 'agencyId',
label: 'agency_id'
},
{
value: 'agencyName',
label: 'agency_name'
},
{
value: 'agencyTimeZone',
label: 'agency_timezone'
},
{
value: 'agencyUrl',
label: 'agency_url'
}
];
}
function getAgencyId(geoJsonFileIndex) {
return `A${geoJsonFileIndex + 1}`;
}
function getAgencyName(geoJsonObject) {
if (geoJsonObject.features[0].properties.agency) return `Agency: ${geoJsonObject.features[0].properties.agency}`;
if (geoJsonObject.features[0].properties.agencia) return `Agencia: ${geoJsonObject.features[0].properties.agencia}`;
throw "The geoJson file must have an agency field";
}
function getAgencyTimeZone(settings) {
if (settings.agencySettings.agencyTimeZone) return settings.agencySettings.agencyTimeZone;
throw "The settings file must have a agencySettings.agencyTimeZone field";
}
function getAgencyUrl(settings) {
if (settings.agencySettings.agencyUrl) return settings.agencySettings.agencyUrl;
throw "The settings file must have a agencySettings.agencyUrl field";
}
exports.exportGetAgencyId = function(geoJsonFileIndex) {
return getAgencyId(geoJsonFileIndex);
}
exports.agencyObjectGenerator = function(geoJsonObject, settings, geoJsonFileIndex) {
return {
fields: gtfsAgencyFileFields(),
values: [
{
agencyId: getAgencyId(geoJsonFileIndex),
agencyName: getAgencyName(geoJsonObject),
agencyTimeZone: getAgencyTimeZone(settings),
agencyUrl: getAgencyUrl(settings)
}
]
};
}
exports.agencyObjectFields = function() {
return {
fields: gtfsAgencyFileFields(),
values: []
};
}