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
JavaScript
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;
;