geolocalize
Version:
Comuni Italiani
88 lines (86 loc) • 17.8 kB
JavaScript
;
var fs = require("fs");
var _ = require("lodash");
var Comuni = require("./comuni.json");
var Regioni = require("./regioni.json");
var countries = require("countryjs");
var Countries = countries.all();
var all = Countries;
var tests = [all[0], all[1]];
var use = all;
var Geobuilds = [];
var continents = [];
var continent_exists = false;
var subcontinent_exists = false;
var country_exists = false;
_.map(use, function (countryjs) {
continent_exists = false;
var bcords = [];
if (countryjs.geoJSON && countryjs.geoJSON.features && countryjs.geoJSON.features[0] && countryjs.geoJSON.features[0].geometry && countryjs.geoJSON.features[0].geometry.coordinates) {
bcords = countryjs.geoJSON.features[0].geometry.coordinates;
}
var Capital;
var Country = { tz: countryjs.timezones, subcontinent: countryjs.subregion, continent: countryjs.region, capital: Capital, latlng: countryjs.latlng, nativeName: countryjs.nativeName, name: countryjs.name, states: [], boundaries: bcords, currencies: countryjs.currencies, isoLang: countryjs.languages };
if (Country.name === "Italy") {
_.map(Regioni, function (p) {
_.map(p.cities, function (t) {
if (t.nativeName === "Roma") {
console.log("Roma");
Country.tz = ["Europe/Rome"];
Country.states.push({
country: "Italy",
continent: countryjs.region,
subcontinent: countryjs.subregion,
name: "Italy",
nativeName: "Italia",
latlng: Country.latlng,
regions: Regioni,
boundaries: Country.boundaries,
capital: t,
isoLang: Country.isoLang,
tz: Country.tz
});
}
});
});
}
var Subcontinent = { name: countryjs.subregion, countries: [Country], boundaries: [] };
var Continent = { name: countryjs.region, subcontinents: [Subcontinent], boundaries: [] };
_.map(continents, function (continent) {
subcontinent_exists = false;
if (continent.name === Continent.name) {
continent_exists = true;
_.map(continent.subcontinents, function (subcontinent) {
if (subcontinent.name === Subcontinent.name) {
subcontinent_exists = true;
country_exists = false;
_.map(subcontinent.countries, function (country) {
if (country.name === Country.name) {
country_exists = true;
}
});
if (!country_exists) {
console.log("country");
subcontinent.countries.push(Country);
}
}
});
if (!subcontinent_exists) {
console.log("subcontinent_exists");
continent.subcontinents.push(Subcontinent);
}
}
});
if (!continent_exists) {
continents.push(Continent);
console.log("subcontinent_exists");
}
});
fs.writeFile("./world.json", JSON.stringify(continents), { encoding: "utf-8" }, function (err) {
if (err) {
console.log(err);
}
else {
}
});
//# sourceMappingURL=data:application/json;base64,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QztRQUNOLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDcEIsQ0FBQztJQUFDLElBQUksQ0FBQyxDQUFDO0lBQ1IsQ0FBQztBQUVMLENBQUMsQ0FBQyxDQUFBIiwiZmlsZSI6ImNyZWF0ZVdvcmxkLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXG5cblxuXG5cbmltcG9ydCAqIGFzIGZzIGZyb20gXCJmc1wiO1xuaW1wb3J0ICogYXMgYXN5bmMgZnJvbSBcImFzeW5jXCI7XG5pbXBvcnQgKiBhcyBfIGZyb20gXCJsb2Rhc2hcIjtcblxubGV0IENvbXVuaTogSUNvbXVuZVtdID0gcmVxdWlyZShcIi4vY29tdW5pLmpzb25cIik7XG5cbmxldCBSZWdpb25pOiBJR2VvY29kZXNbXSA9IHJlcXVpcmUoXCIuL3JlZ2lvbmkuanNvblwiKTtcblxubGV0IGNvdW50cmllcyA9IHJlcXVpcmUoXCJjb3VudHJ5anNcIik7XG5cbmxldCBDb3VudHJpZXM6IElDb3VudHJ5anNbXSA9IGNvdW50cmllcy5hbGwoKTtcblxuXG5cblxuaW50ZXJmYWNlIElHZW9jb2RlcyB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHByb3ZpbmNlczogSUdlb1tdO1xuICAgIGNpdGllczogSUNpdHlbXVxufVxuXG5cblxuaW50ZXJmYWNlIElDaXR5IHtcbiAgICBuYXRpdmVOYW1lOiBzdHJpbmc7XG4gICAgbGF0aXR1ZGU6IG51bWJlcjtcbiAgICBsb25naXR1ZGU6IG51bWJlcjtcbiAgICB6aXBjb2RlOiBudW1iZXI7XG4gICAgY2l0eUNvZGU6IHN0cmluZztcbiAgICBzdGF0ZTogc3RyaW5nO1xuICAgIGNvdW50cnk6IHN0cmluZztcbiAgICBpc29MYW5nOiBzdHJpbmc7XG4gICAgdHo6IHN0cmluZztcbiAgICBjdXJyZW5jeTogc3RyaW5nO1xuICAgIGN1cnJlbmN5U3ltYm9sOiBzdHJpbmc7XG4gICAgZGlzdGFuY2U/OiBudW1iZXI7XG4gICAgc3ViY29udGluZW50OiBzdHJpbmc7XG4gICAgY29udGluZW50OiBzdHJpbmc7XG4gICAgcmVnaW9uOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBJR2VvIHtcbiAgICBuYXRpdmVOYW1lOiBzdHJpbmc7XG4gICAgemlwY29kZTogc3RyaW5nO1xuICAgIGNpdGllczogSUNpdHlbXTtcbiAgICBtYWluOiBJQ2l0eTtcbiAgICBsYXRpdHVkZTogbnVtYmVyO1xuICAgIGxvbmdpdHVkZTogbnVtYmVyO1xuXG59XG5cbmludGVyZmFjZSBJQ29tdW5lIHtcbiAgICBub21lOiBzdHJpbmc7XG4gICAgY29kaWNlOiBudW1iZXI7XG4gICAgbGF0aXR1ZGU6IG51bWJlcjtcbiAgICBsb25naXR1ZGU6IG51bWJlcjtcbiAgICB6b25hOiB7XG4gICAgICAgIG5vbWU6IHN0cmluZztcbiAgICAgICAgY29kaWNlOiBudW1iZXI7XG4gICAgfSxcbiAgICByZWdpb25lOiB7XG4gICAgICAgIGNvZGljZTogbnVtYmVyO1xuICAgICAgICBub21lOiBzdHJpbmc7XG4gICAgfSxcbiAgICBjbToge1xuICAgICAgICBjb2RpY2U6IHN0cmluZztcbiAgICAgICAgbm9tZTogc3RyaW5nO1xuICAgIH0sXG4gICAgcHJvdmluY2lhOiB7XG4gICAgICAgIGNvZGljZTogbnVtYmVyO1xuICAgICAgICBub21lOiBzdHJpbmc7XG4gICAgfSxcbiAgICBzaWdsYTogc3RyaW5nO1xuICAgIGNvZGljZUNhdGFzdGFsZTogc3RyaW5nO1xuICAgIGNhcDogbnVtYmVyO1xuICAgIHN0YXRlOiBzdHJpbmc7XG4gICAgY291bnRyeTogc3RyaW5nO1xuICAgIHppcGNvZGU6IHN0cmluZztcblxufVxuXG5pbnRlcmZhY2UgSUJvdW5kYXJ5IHtcblxuICAgIGxhdGl0dWRlOiBudW1iZXI7XG4gICAgbG9uZ2l0dWRlOiBudW1iZXI7XG5cbn1cblxuaW50ZXJmYWNlIElnZW9KU09OZmVhdHVyZXMge1xuICAgIFwidHlwZVwiOiBzdHJpbmc7XG4gICAgXCJpZFwiOiBzdHJpbmc7XG4gICAgXCJwcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgbmFtZTogc3RyaW5nO1xuICAgIH0sXG4gICAgXCJnZW9tZXRyeVwiOiB7XG4gICAgICAgIHR5cGU6IHN0cmluZztcbiAgICAgICAgY29vcmRpbmF0ZXM6IFtcbiAgICAgICAgICAgIElCb3VuZGFyeVtdXG4gICAgICAgIF1cbiAgICB9XG59XG5cbmludGVyZmFjZSBJQ291bnRyeWpzIHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgYWx0U3BlbGxpbmdzOiBzdHJpbmdbXTtcbiAgICBhcmVhOiBudW1iZXI7XG4gICAgXCJib3JkZXJzXCI6IHN0cmluZ1tdO1xuICAgIGNhbGxpbmdDb2Rlczogc3RyaW5nW107XG4gICAgY2FwaXRhbDogc3RyaW5nO1xuICAgIGN1cnJlbmNpZXM6IHN0cmluZ1tdO1xuICAgIGRlbW9ueW06IHN0cmluZztcbiAgICBmbGFnOiBzdHJpbmc7XG4gICAgZ2VvSlNPTjoge1xuICAgICAgICB0eXBlOiBzdHJpbmc7XG4gICAgICAgIGZlYXR1cmVzOiBJZ2VvSlNPTmZlYXR1cmVzW107XG4gICAgfTtcbiAgICBJU086IHtcbiAgICAgICAgMjogc3RyaW5nO1xuICAgICAgICAzOiBzdHJpbmc7XG4gICAgICAgIGFscGhhMjogc3RyaW5nO1xuICAgICAgICBhbHBoYTM6IHN0cmluZztcbiAgICB9O1xuICAgIGxhbmd1YWdlczogc3RyaW5nW107XG4gICAgbGF0bG5nOiBudW1iZXJbXTtcbiAgICBuYXRpdmVOYW1lOiBzdHJpbmc7XG4gICAgcG9wdWxhdGlvbjogbnVtYmVyO1xuICAgIHByb3ZpbmNlczogc3RyaW5nW107XG4gICAgcmVnaW9uOiBzdHJpbmc7XG4gICAgc3VicmVnaW9uOiBzdHJpbmc7XG4gICAgdGltZXpvbmVzOiBzdHJpbmdbXTtcbiAgICBcInRsZFwiOiBzdHJpbmdbXTtcbiAgICBcInRyYW5zbGF0aW9uc1wiOiB7XG4gICAgICAgIGRlOiBzdHJpbmc7XG4gICAgICAgIGVzOiBzdHJpbmc7XG4gICAgICAgIGZyOiBzdHJpbmc7XG4gICAgICAgIGphOiBzdHJpbmc7XG4gICAgICAgIGl0OiBzdHJpbmc7XG4gICAgfTtcbiAgICB3aWtpOiBzdHJpbmc7XG59XG5cblxuY29uc3QgYWxsID0gQ291bnRyaWVzO1xuY29uc3QgdGVzdHMgPSBbYWxsWzBdLCBhbGxbMV1dO1xuXG5jb25zdCB1c2UgPSBhbGw7XG5cblxuaW50ZXJmYWNlIElzdGF0ZSB7XG4gICAgcmVnaW9uczogSUdlb2NvZGVzW107XG4gICAgYm91bmRhcmllczogSUJvdW5kYXJ5W11bXTtcbiAgICBjYXBpdGFsOiBJQ2l0eTtcbiAgICBuYXRpdmVOYW1lOiBzdHJpbmc7XG4gICAgbGF0bG5nOiBudW1iZXJbXTtcbiAgICBpc29MYW5nOiBzdHJpbmdbXTtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdHo6IHN0cmluZ1tdO1xuICAgIGNvdW50cnk6IHN0cmluZztcbiAgICBzdWJjb250aW5lbnQ6IHN0cmluZztcbiAgICBjb250aW5lbnQ6IHN0cmluZztcblxufVxuXG5pbnRlcmZhY2UgSUNvdW50cnkge1xuICAgIHN0YXRlczogSXN0YXRlW107XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGJvdW5kYXJpZXM6IElCb3VuZGFyeVtdW107XG4gICAgbmF0aXZlTmFtZTogc3RyaW5nO1xuICAgIGNhcGl0YWw6IElDaXR5O1xuICAgIGN1cnJlbmNpZXM6IHN0cmluZ1tdO1xuICAgIGlzb0xhbmc6IHN0cmluZ1tdO1xuICAgIGxhdGxuZzogbnVtYmVyW107XG4gICAgdHo6IHN0cmluZ1tdO1xuICAgIHN1YmNvbnRpbmVudDogc3RyaW5nO1xuICAgIGNvbnRpbmVudDogc3RyaW5nO1xuXG59XG5cbmludGVyZmFjZSBJU3ViY29udGluZW50IHtcblxuICAgIG5hbWU6IHN0cmluZztcbiAgICBjb3VudHJpZXM6IElDb3VudHJ5W107XG4gICAgYm91bmRhcmllczogSUJvdW5kYXJ5W107XG59XG5cbmludGVyZmFjZSBJR2VvYnVpbGQge1xuXG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHN1YmNvbnRpbmVudHM6IElTdWJjb250aW5lbnRbXTtcbiAgICBib3VuZGFyaWVzOiBJQm91bmRhcnlbXTtcblxufVxuXG5cblxuY29uc3QgR2VvYnVpbGRzOiBJR2VvYnVpbGRbXSA9IFtdO1xuXG5cblxuY29uc3QgY29udGluZW50czogSUdlb2J1aWxkW10gPSBbXVxuXG5cbmxldCBjb250aW5lbnRfZXhpc3RzID0gZmFsc2U7XG5sZXQgc3ViY29udGluZW50X2V4aXN0cyA9IGZhbHNlO1xubGV0IGNvdW50cnlfZXhpc3RzID0gZmFsc2U7XG5cblxuXy5tYXAodXNlLCBmdW5jdGlvbiAoY291bnRyeWpzKSB7XG5cblxuICAgIGNvbnRpbmVudF9leGlzdHMgPSBmYWxzZTtcblxuICAgIGxldCBiY29yZHMgPSBbXTtcblxuICAgIGlmIChjb3VudHJ5anMuZ2VvSlNPTiAmJiBjb3VudHJ5anMuZ2VvSlNPTi5mZWF0dXJlcyAmJiBjb3VudHJ5anMuZ2VvSlNPTi5mZWF0dXJlc1swXSAmJiBjb3VudHJ5anMuZ2VvSlNPTi5mZWF0dXJlc1swXS5nZW9tZXRyeSAmJiBjb3VudHJ5anMuZ2VvSlNPTi5mZWF0dXJlc1swXS5nZW9tZXRyeS5jb29yZGluYXRlcykge1xuICAgICAgICBiY29yZHMgPWNvdW50cnlqcy5nZW9KU09OLmZlYXR1cmVzWzBdLmdlb21ldHJ5LmNvb3JkaW5hdGVzO1xufVxuXG4gICAgbGV0IENhcGl0YWw6IElDaXR5O1xuICAgIGxldCBDb3VudHJ5OiBJQ291bnRyeSA9IHsgdHo6IGNvdW50cnlqcy50aW1lem9uZXMsIHN1YmNvbnRpbmVudDogY291bnRyeWpzLnN1YnJlZ2lvbiwgY29udGluZW50OiBjb3VudHJ5anMucmVnaW9uLCBjYXBpdGFsOiBDYXBpdGFsLCBsYXRsbmc6IGNvdW50cnlqcy5sYXRsbmcsIG5hdGl2ZU5hbWU6IGNvdW50cnlqcy5uYXRpdmVOYW1lLCBuYW1lOiBjb3VudHJ5anMubmFtZSwgc3RhdGVzOiBbXSwgYm91bmRhcmllczogYmNvcmRzLCBjdXJyZW5jaWVzOiBjb3VudHJ5anMuY3VycmVuY2llcywgaXNvTGFuZzogY291bnRyeWpzLmxhbmd1YWdlcyB9XG4gICAgaWYgKENvdW50cnkubmFtZSA9PT0gXCJJdGFseVwiKSB7XG4gICAgICAgIF8ubWFwKFJlZ2lvbmksIGZ1bmN0aW9uIChwKSB7XG4gICAgICAgICAgICBfLm1hcChwLmNpdGllcywgZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICBpZiAodC5uYXRpdmVOYW1lID09PSBcIlJvbWFcIikge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIlJvbWFcIilcbiAgICAgICAgICAgICAgICAgICAgQ291bnRyeS50eiA9IFtcIkV1cm9wZS9Sb21lXCJdO1xuICAgICAgICAgICAgICAgICAgICBDb3VudHJ5LnN0YXRlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50cnk6IFwiSXRhbHlcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbmVudDogY291bnRyeWpzLnJlZ2lvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YmNvbnRpbmVudDogY291bnRyeWpzLnN1YnJlZ2lvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiSXRhbHlcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hdGl2ZU5hbWU6IFwiSXRhbGlhXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYXRsbmc6IENvdW50cnkubGF0bG5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVnaW9uczogUmVnaW9uaSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvdW5kYXJpZXM6IENvdW50cnkuYm91bmRhcmllcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhcGl0YWw6IHQsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc29MYW5nOiBDb3VudHJ5Lmlzb0xhbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICB0ejogQ291bnRyeS50elxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0pXG4gICAgfVxuICAgIGxldCBTdWJjb250aW5lbnQ6IElTdWJjb250aW5lbnQgPSB7IG5hbWU6IGNvdW50cnlqcy5zdWJyZWdpb24sIGNvdW50cmllczogW0NvdW50cnldLCBib3VuZGFyaWVzOiBbXSB9XG5cbiAgICBsZXQgQ29udGluZW50OiBJR2VvYnVpbGQgPSB7IG5hbWU6IGNvdW50cnlqcy5yZWdpb24sIHN1YmNvbnRpbmVudHM6IFtTdWJjb250aW5lbnRdLCBib3VuZGFyaWVzOiBbXSB9XG5cblxuICAgIF8ubWFwKGNvbnRpbmVudHMsIGZ1bmN0aW9uIChjb250aW5lbnQpIHtcblxuICAgICAgICBzdWJjb250aW5lbnRfZXhpc3RzID0gZmFsc2U7XG5cblxuICAgICAgICBpZiAoY29udGluZW50Lm5hbWUgPT09IENvbnRpbmVudC5uYW1lKSB7XG4gICAgICAgICAgICBjb250aW5lbnRfZXhpc3RzID0gdHJ1ZTtcbiAgICAgICAgICAgIF8ubWFwKGNvbnRpbmVudC5zdWJjb250aW5lbnRzLCBmdW5jdGlvbiAoc3ViY29udGluZW50KSB7XG5cblxuICAgICAgICAgICAgICAgIGlmIChzdWJjb250aW5lbnQubmFtZSA9PT0gU3ViY29udGluZW50Lm5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgc3ViY29udGluZW50X2V4aXN0cyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGNvdW50cnlfZXhpc3RzID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIF8ubWFwKHN1YmNvbnRpbmVudC5jb3VudHJpZXMsIGZ1bmN0aW9uIChjb3VudHJ5KSB7XG5cblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvdW50cnkubmFtZSA9PT0gQ291bnRyeS5uYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRyeV9leGlzdHMgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgICAgICAgIGlmICghY291bnRyeV9leGlzdHMpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJjb3VudHJ5XCIpXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YmNvbnRpbmVudC5jb3VudHJpZXMucHVzaChDb3VudHJ5KVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9KVxuXG5cbiAgICAgICAgICAgIGlmICghc3ViY29udGluZW50X2V4aXN0cykge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwic3ViY29udGluZW50X2V4aXN0c1wiKVxuXG4gICAgICAgICAgICAgICAgY29udGluZW50LnN1YmNvbnRpbmVudHMucHVzaChTdWJjb250aW5lbnQpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG5cbiAgICB9KVxuXG5cbiAgICBpZiAoIWNvbnRpbmVudF9leGlzdHMpIHtcblxuICAgICAgICBjb250aW5lbnRzLnB1c2goQ29udGluZW50KVxuICAgICAgICBjb25zb2xlLmxvZyhcInN1YmNvbnRpbmVudF9leGlzdHNcIilcblxuICAgIH1cblxuXG59KVxuXG5cbmZzLndyaXRlRmlsZShcIi4vd29ybGQuanNvblwiLCBKU09OLnN0cmluZ2lmeShjb250aW5lbnRzKSwgeyBlbmNvZGluZzogXCJ1dGYtOFwiIH0sIGZ1bmN0aW9uIChlcnIpIHtcbiAgICBpZiAoZXJyKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGVycilcbiAgICB9IGVsc2Uge1xuICAgIH1cblxufSkiXSwic291cmNlUm9vdCI6Ii9zb3VyY2UvIn0=