UNPKG

all-airports

Version:

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

88 lines (87 loc) 5.6 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"); var airportDataLocal = require("../assets/airports-source.json"); function getAirportsFromGeoJson() { Object.values(airportDataLocal.features).forEach(function (ap) { var airportProps = ap.properties; var airportName = airportProps.name && airportProps.name.replace('Int\'l', 'International'); var airportLocation = ap.geometry.coordinates; // No IATA code, no id. No id, no airport. if (!airportProps.iata_code) { return; } // Fetch or create airport entity var airportId = constants_1.consts.ONTOLOGY.INST_AIRPORT + getUuid(airportProps.iata_code); var airportObjectProp = {}; if (!!globalStore_1.store.airports[airportId]) { airportObjectProp[constants_1.consts.ONTOLOGY.HAS_AIRPORT] = globalStore_1.store.airports[airportId]; } else { airportObjectProp = funktologies_1.entityMaker(constants_1.consts.ONTOLOGY.HAS_AIRPORT, constants_1.consts.ONTOLOGY.ONT_AIRPORT, airportId, "" + airportName); globalStore_1.store.airports[airportId] = airportObjectProp[constants_1.consts.ONTOLOGY.HAS_AIRPORT]; } if (airportName) { globalStore_1.store.airports[airportId].datatypeProperties[constants_1.consts.ONTOLOGY.DT_NAME] = airportName; } if (airportProps.gps_code) { globalStore_1.store.airports[airportId].datatypeProperties[constants_1.consts.ONTOLOGY.DT_ICAO_CODE] = airportProps.gps_code; } if (airportProps.iata_code) { globalStore_1.store.airports[airportId].datatypeProperties[constants_1.consts.ONTOLOGY.DT_IATA_CODE] = airportProps.iata_code; } if (airportProps.wikipedia) { globalStore_1.store.airports[airportId].datatypeProperties[constants_1.consts.ONTOLOGY.DT_WIKI_URI] = airportProps.wikipedia; } var geoId = constants_1.consts.ONTOLOGY.INST_GEO_LOCATION + getUuid(airportProps.iata_code); 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 " + airportName); 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] = airportLocation[1]; locAttr.datatypeProperties[constants_1.consts.WGS84_POS.LONG] = airportLocation[0]; locAttr.datatypeProperties[constants_1.consts.WGS84_POS.LAT_LONG] = airportLocation[1] + ", " + airportLocation[0]; } else { datatypeProp[constants_1.consts.WGS84_POS.LAT] = airportLocation[1]; datatypeProp[constants_1.consts.WGS84_POS.LONG] = airportLocation[0]; datatypeProp[constants_1.consts.WGS84_POS.LAT_LONG] = airportLocation[1] + ", " + airportLocation[0]; locAttr.datatypeProperties = datatypeProp; } var airportSourceObject = globalStore_1.store.airportTable[airportProps.iata_code || '']; var countryISO = airportSourceObject && airportSourceObject.iso; // Associate Country if (countryISO) { var countryId = country_to_id_1.countryToId(country_code_lookup_tables_1.isoCodeToDataCode(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 (airportSourceObject.size) { globalStore_1.store.airports[airportId].datatypeProperties[constants_1.consts.ONTOLOGY.DT_RELATIVE_SIZE] = airportSourceObject.size; } // Get type of airport (heliport, military, seaplanes, closed) if (airportSourceObject.type) { globalStore_1.store.airports[airportId].datatypeProperties[constants_1.consts.ONTOLOGY.DT_TYPE] = airportSourceObject.type; } // Get status of airport (open, closed) if (airportSourceObject.status) { globalStore_1.store.airports[airportId].datatypeProperties[constants_1.consts.ONTOLOGY.DT_STATUS] = airportSourceObject.status ? 'Open' : 'Closed'; } } }); } exports.getAirportsFromGeoJson = getAirportsFromGeoJson; ;