猿问

用于下载和处理 GTFS zip 文件的 Javascript

我尝试下载、解压缩和处理GTFSzip 格式的文件。下载和解压缩工作正常,但尝试将 txt 文件gtfs-utils与gtfsFunc(). 输出未定义。延迟只是为了测试目的而硬编码。


const dl = new DownloaderHelper('http://www.bkk.hu/gtfs/budapest_gtfs.zip', __dirname);

dl.on('end', () => console.log('Download Completed'))

dl.start();


myVar = setTimeout(zipFunc, 30000);

function zipFunc() {

    console.log('Unzipping started...');

    var zip = new AdmZip("./budapest_gtfs.zip");

    var zipEntries = zip.getEntries();

    zip.extractAllTo("./gtfsdata/", true);

  }


myVar = setTimeout(gtfsFunc, 40000);

function gtfsFunc() {

    console.log('Processing started...');

    const readFile = name => readCsv('./gtfsdata/' + name + '.txt')

    const filter = t => t.route_id === 'M4'


    readStops(readFile, filter)

    .then((stops) => {

        const someStopId = Object.keys(stops)[0]

        const someStop = stops[someStopId]

        console.log(someStop)

    })

}


一只名叫tom的猫
浏览 100回答 2
2回答

POPMUISE

您正在尝试使用 route_id 字段过滤停止文件,而此 txt 没有此字段。停止的字段有:stop_id, stop_name, stop_lat, stop_lon, stop_code, location_type, parent_station, wheelchair_boarding, stop_direction也许您需要的是读取 Trips.txt 文件而不是 Stops.txt,因为该文件有route_id字段。您可以使用 readTrips 函数完成此操作:const readTrips = require("gtfs-utils/read-trips");你的 gtfsFunc 将是:function gtfsFunc() {  console.log("Processing started...");  const readFile = (name) => {    return readCsv("./gtfsdata/" + name + ".txt").on("error", console.error);  };  //I used 5200 because your Trips.txt contains routes id with this value  const filterTrips = (t) => t.route_id === "5200";  readTrips(readFile, filterTrips).then((stops) => {    console.log("filtered stops", stops);    const someStopId = Object.keys(stops)[0];    const someStop = stops[someStopId];    console.log("someStop", someStop);  });}或者如果你真正想要的是阅读 Stops.txt,你只需要改变你的过滤器const filter = t => t.route_id === 'M4'使用一些有效的字段,例如:const filter = t => t.stop_name=== 'M4'

繁花如伊

停止数据没有route_id字段。您应该尝试其他数据,例如Trip或Route您可以查看数据文件的第一行,看看它们有哪些字段。GTFS数据结构在这里
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答