sandbox-node/pbf/index.js

55 lines
1.5 KiB
JavaScript
Raw Normal View History

2022-05-26 07:54:28 +02:00
const fs = require('fs');
2022-06-23 22:10:08 +02:00
const debug=require('debug')('debug');
2022-05-26 07:23:40 +02:00
const gtfsRt=require('../../proto2js/js/gtfs-rt.js');
const Pbf = require('pbf');
2022-05-26 07:06:26 +02:00
run().catch(err => {
2022-05-26 07:23:40 +02:00
debug('run: error');
2022-05-26 07:06:26 +02:00
console.log(err)
});
async function run() {
2022-05-26 07:23:40 +02:00
debug('run started...');
const FeedMessage = gtfsRt.FeedMessage;
2022-05-26 07:54:28 +02:00
debug('read gtfs-rt feed from file');
2022-09-08 10:26:12 +02:00
const buffer=fs.readFileSync('./vehicle-positions');
2022-05-26 07:54:28 +02:00
if(buffer instanceof Buffer){
debug('buffer is instance of Buffer');
debug('read buffer and create pbf');
const pbf = new Pbf(buffer);
2022-05-26 08:03:46 +02:00
debug('create feed');
const feed = FeedMessage.read(pbf);
debug('use feed');
if('header' in feed){
debug('feed has header');
2022-05-26 07:54:28 +02:00
}else{
2022-05-26 08:03:46 +02:00
debug('feed has header NOT');
2022-05-26 07:54:28 +02:00
}
2022-05-26 08:03:46 +02:00
let feedCount=0;
feed.entity.forEach(entity => {
2022-09-08 10:26:12 +02:00
debug('feed has entity at index: '+feedCount);
2022-05-26 08:03:46 +02:00
feedCount++;
2022-05-26 08:23:13 +02:00
const vehiclePos = entity.vehicle;
if (vehiclePos) {
2022-09-08 10:26:12 +02:00
debug('entity has vehicle position');
2022-05-26 08:23:13 +02:00
const { trip, position, vehicle } = vehiclePos;
if (trip && position && vehicle) {
2022-09-08 10:26:12 +02:00
debug('vehiclePos has either trip, position or vehicle');
const latitude = position.latitude;
if(latitude){
debug('position has latitude: '+latitude);
}
2022-05-26 08:23:13 +02:00
}else{
2022-09-08 10:26:12 +02:00
debug('vehiclePos misses either trip, latitude or vehicle');
2022-05-26 08:23:13 +02:00
}
}else{
debug('entity misses vehicle');
}
2022-05-26 08:03:46 +02:00
});
debug('feedCount: '+feedCount);
2022-05-26 07:54:28 +02:00
}else{
debug('buffer is NOT instance of Buffer');
}
2022-05-26 07:23:40 +02:00
debug('run done.');
2022-05-26 07:06:26 +02:00
}