pelias-geonames
Version:
Import pipleine to bring Geonames data into the Pelias Geocoder
115 lines (104 loc) • 2.6 kB
JavaScript
var through2 = require('through2');
var specialID = require('../../data/specialCases');
function featureCodeToLayerDefault(featureCode) {
switch (featureCode) {
case 'PCLI':
return 'country';
case 'PCLD':
case 'PCLIX':
return 'dependency';
case 'ADM1':
return 'region';
case 'ADM2':
return 'county';
case 'ADMD':
return 'localadmin';
case 'ADM3':
case 'PPL':
case 'PPLA':
case 'PPLA2':
case 'PPLA3':
case 'PPLA4':
case 'PPLC':
case 'PPLF':
case 'PPLG':
case 'PPLL':
case 'PPLS':
case 'LCTY':
case 'STLMT':
return 'locality';
case 'ADM4':
case 'ADM5':
case 'PPLX':
return 'neighbourhood';
default:
return 'venue';
}
}
function featureCodeToLayerGB(featureCode) {
switch (featureCode) {
case 'ADM1':
return 'macroregion';
default:
return featureCodeToLayerDefault(featureCode);
}
}
function featureCodeToLayerES(featureCode) {
switch (featureCode) {
case 'ADM1':
return 'macroregion';
default:
return featureCodeToLayerDefault(featureCode);
}
}
function featureCodeToLayerFR(featureCode) {
switch (featureCode) {
case 'ADM1':
return 'macroregion';
case 'ADM2':
return 'region';
case 'ADM3':
return 'macrocounty';
case 'ADM4':
return 'locality';
case 'LCTY':
return 'venue';
default:
return featureCodeToLayerDefault(featureCode);
}
}
function featureCodeToLayerIT(featureCode) {
switch (featureCode) {
case 'ADM1':
return 'macroregion';
default:
return featureCodeToLayerDefault(featureCode);
}
}
function featureCodeToLayer(featureCode, countryCode) {
switch (countryCode) {
case 'GB':
return featureCodeToLayerGB(featureCode);
case 'ES':
return featureCodeToLayerES(featureCode);
case 'FR':
return featureCodeToLayerFR(featureCode);
case 'IT':
return featureCodeToLayerIT(featureCode);
default:
return featureCodeToLayerDefault(featureCode);
}
}
function mapIDtoLayer(id){
return specialID[id];
}
function create() {
return through2.obj(function(data, enc, next) {
data.layer = mapIDtoLayer(data._id) || featureCodeToLayer(data.feature_code, data.country_code);
next(null, data);
});
}
module.exports = {
featureCodeToLayer: featureCodeToLayer,
create: create
};