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
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");
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;
;
;