UNPKG

all-airports

Version:

Serves as an independent data scraping module, complete with ontology and full scraping ability for the airports of the world

80 lines (79 loc) 4.75 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var funktologies_1 = require("funktologies"); var getUuid = require("uuid-by-string"); var constants_1 = require("../constants/constants"); var globalStore_1 = require("../constants/globalStore"); var country_code_lookup_tables_1 = require("../utils/country-code-lookup-tables"); var country_to_id_1 = require("../utils/country-to-id"); // Populate remaining airports from npm list function getAirportsFromNpm() { Object.values(country_code_lookup_tables_1.airportDataList).forEach(function (ap) { // Fetch or create airport entity var airportId = constants_1.consts.ONTOLOGY.INST_AIRPORT + getUuid(ap.iata); if (!airportId) { return; // No IATA code, no id. No id, no airport. } var airportObjectProp = {}; if (!globalStore_1.store.airports[airportId]) { airportObjectProp = funktologies_1.entityMaker(constants_1.consts.ONTOLOGY.HAS_AIRPORT, constants_1.consts.ONTOLOGY.ONT_AIRPORT, airportId, "" + (ap.name || 'N/A')); globalStore_1.store.airports[airportId] = airportObjectProp[constants_1.consts.ONTOLOGY.HAS_AIRPORT]; } else { return; // If already in system, it already has this source's data. } if (ap.name) { globalStore_1.store.airports[airportId].datatypeProperties[constants_1.consts.ONTOLOGY.DT_NAME] = ap.name; } if (ap.iata) { globalStore_1.store.airports[airportId].datatypeProperties[constants_1.consts.ONTOLOGY.DT_IATA_CODE] = ap.iata; } var lat = ap.lat; var lng = ap.lon; if (lat && lng) { var geoId = constants_1.consts.ONTOLOGY.INST_GEO_LOCATION + getUuid(ap.iata); var objectProp = {}; if (globalStore_1.store.locations[geoId]) { objectProp[constants_1.consts.ONTOLOGY.HAS_LOCATION] = globalStore_1.store.locations[geoId]; } else { objectProp = funktologies_1.entityMaker(constants_1.consts.ONTOLOGY.HAS_LOCATION, constants_1.consts.ONTOLOGY.ONT_GEO_LOCATION, geoId, "Geographic Location for " + (ap.name || 'N/A')); globalStore_1.store.locations[geoId] = objectProp[constants_1.consts.ONTOLOGY.HAS_LOCATION]; globalStore_1.store.airports[airportId].objectProperties.push(funktologies_1.entityRefMaker(constants_1.consts.ONTOLOGY.HAS_LOCATION, objectProp)); } var locAttr = objectProp[constants_1.consts.ONTOLOGY.HAS_LOCATION]; var datatypeProp = {}; if (locAttr && locAttr.datatypeProperties) { locAttr.datatypeProperties[constants_1.consts.WGS84_POS.LAT] = Number(lat); locAttr.datatypeProperties[constants_1.consts.WGS84_POS.LONG] = Number(lng); locAttr.datatypeProperties[constants_1.consts.WGS84_POS.LAT_LONG] = lat + ", " + lng; } else { datatypeProp[constants_1.consts.WGS84_POS.LAT] = Number(lat); datatypeProp[constants_1.consts.WGS84_POS.LONG] = Number(lng); datatypeProp[constants_1.consts.WGS84_POS.LAT_LONG] = lat + ", " + lng; locAttr.datatypeProperties = datatypeProp; } } var countryISO = ap.iso; var countryId = country_to_id_1.countryToId(country_code_lookup_tables_1.isoCodeToDataCode(countryISO)); // Associate Country if (countryISO) { globalStore_1.store.airports[airportId].objectProperties.push(funktologies_1.entityRefMaker(constants_1.consts.ONTOLOGY.HAS_COUNTRY, globalStore_1.store.countries, countryId)); globalStore_1.store.countries[countryId].objectProperties.push(funktologies_1.entityRefMaker(constants_1.consts.ONTOLOGY.HAS_AIRPORT, airportObjectProp)); // Get relative size of airport (small, medium, large) if (ap.size) { globalStore_1.store.airports[airportId].datatypeProperties[constants_1.consts.ONTOLOGY.DT_RELATIVE_SIZE] = ap.size; } // Get type of airport (heliport, military, seaplanes, closed) if (ap.type) { globalStore_1.store.airports[airportId].datatypeProperties[constants_1.consts.ONTOLOGY.DT_TYPE] = ap.type; } // Get status of airport (open, closed) if (ap.status) { globalStore_1.store.airports[airportId].datatypeProperties[constants_1.consts.ONTOLOGY.DT_STATUS] = ap.status ? 'Open' : 'Closed'; } } }); } exports.getAirportsFromNpm = getAirportsFromNpm;