globalAirportTraffic = {
const rawRouteData = await d3.text(
"https://raw.githubusercontent.com/jpatokal/openflights/master/data/routes.dat"
);
const routHeading =
"airline,airlineID,sourceAirportCode,sourceAirportID,destinationAirportCode,destinatinAirportID,codeshare,stops,equipment\n";
const routeData = d3.csvParse(routHeading + rawRouteData, d3.autoType);
const rawAirportData = await d3.text(
"https://raw.githubusercontent.com/jpatokal/openflights/master/data/airports.dat"
);
const airportDataHeading =
"AirportID,Name,City,Country,IATA,ICAO,Latitude,Longitude,Altitude,Timezone,DST,Tz,Type,Source\n";
const airportData = d3.group(
await d3.csvParse(airportDataHeading + rawAirportData, d3.autoType),
d => d.IATA
);
return routeData
.filter(d => {
mutable feedback = [d.sourceAirportCode, d.destinationAirportCode, d];
const s_airport = airportData.get(d.sourceAirportCode);
const t_airport = airportData.get(d.destinationAirportCode);
return s_airport && t_airport;
})
.map(d => {
const s_airport = airportData.get(d.sourceAirportCode)[0];
const t_airport = airportData.get(d.destinationAirportCode)[0];
return {
airline: d.airline,
sourceLat: s_airport.Latitude,
sourceLon: s_airport.Longitude,
targetLat: t_airport.Latitude,
targetLon: t_airport.Longitude
};
});
}