X-Git-Url: https://git.argeo.org/?p=gpl%2Fargeo-suite.git;a=blobdiff_plain;f=knowledge%2Forg.argeo.support.geonames%2Fsrc%2Forg%2Fargeo%2Fsupport%2Fgeonames%2FImportGeonamesAdmin.java;h=9af5987fa98a945176d3a6b6951dfeef3a8cd9a5;hp=1801fefef3e4ea47b3e875666dbbc170c98db4b9;hb=f1bad89ca61df0dc06b1304f147cf1c35d54803f;hpb=56e0ce8ed36343091ebd9f31150ef5d02ef454c3 diff --git a/knowledge/org.argeo.support.geonames/src/org/argeo/support/geonames/ImportGeonamesAdmin.java b/knowledge/org.argeo.support.geonames/src/org/argeo/support/geonames/ImportGeonamesAdmin.java index 1801fef..9af5987 100644 --- a/knowledge/org.argeo.support.geonames/src/org/argeo/support/geonames/ImportGeonamesAdmin.java +++ b/knowledge/org.argeo.support.geonames/src/org/argeo/support/geonames/ImportGeonamesAdmin.java @@ -20,6 +20,8 @@ public class ImportGeonamesAdmin { /** Loads the data. */ public void parse(InputStream in) { + Map countryGeonameIds = new HashMap<>(); + Map admin1GeonameIds = new HashMap<>(); CsvParser csvParser = new CsvParser() { @Override @@ -28,27 +30,24 @@ public class ImportGeonamesAdmin { return; GeonamesAdm geonamesAdm = new GeonamesAdm(tokens); geonamesAdms.put(geonamesAdm.getGeonameId(), geonamesAdm); -// String featureName = tokens.get(7); -// String geonameId = tokens.get(0); -// String name = tokens.get(1); -// Double lat = Double.parseDouble(tokens.get(4)); -// Double lng = Double.parseDouble(tokens.get(5)); -// switch (featureName) { -// case "ADM1": -// case "ADM4": -// String adminCode1 = tokens.get(10); -// System.out.println( -// geonameId + " " + featureName + " " + lat + "," + lng + " " + adminCode1 + " " + name); -// break; -// default: -// break; -// } - + if (geonamesAdm.getAdmLevel().equals("PCLI")) + countryGeonameIds.put(geonamesAdm.getCountryCode(), geonamesAdm.getGeonameId()); + if (geonamesAdm.getAdmLevel().equals("ADM1")) + admin1GeonameIds.put(geonamesAdm.getAdminCode1(), geonamesAdm.getGeonameId()); } }; csvParser.setSeparator('\t'); csvParser.setNoHeader(true); csvParser.parse(in, StandardCharsets.UTF_8); + + // fill upper levels + for (GeonamesAdm adm : geonamesAdms.values()) { + adm.getUpperLevelIds()[0] = countryGeonameIds.get(adm.getCountryCode()); + if (adm.getLevel() > 0) + adm.getUpperLevelIds()[1] = admin1GeonameIds.get(adm.getAdminCode1()); + adm.mapUpperLevels(geonamesAdms); + } + } public Map getGeonamesAdms() { @@ -76,19 +75,19 @@ public class ImportGeonamesAdmin { } public static void main(String[] args) throws IOException { - String country = "allCountries"; - // String country = "CI"; - try (InputStream in = Files - .newInputStream(Paths.get(System.getProperty("user.home") + "/gis/data/geonames/" + country + ".txt")); - OutputStream out = Files.newOutputStream( - Paths.get(System.getProperty("user.home") + "/gis/data/geonames/" + country + "-adm.txt"))) { - ImportGeonamesAdmin.filterGeonamesAdm(in, out); - } -// try (InputStream in = Files.newInputStream( -// Paths.get(System.getProperty("user.home") + "/gis/data/geonames/" + country + "-adm.txt"))) { -// ImportGeonamesAdmin importGeonamesAdmin = new ImportGeonamesAdmin(); -// importGeonamesAdmin.parse(in); +// String country = "allCountries"; + String country = "CI"; +// try (InputStream in = Files +// .newInputStream(Paths.get(System.getProperty("user.home") + "/gis/data/geonames/" + country + ".txt")); +// OutputStream out = Files.newOutputStream( +// Paths.get(System.getProperty("user.home") + "/gis/data/geonames/" + country + "-adm.txt"))) { +// ImportGeonamesAdmin.filterGeonamesAdm(in, out); // } + try (InputStream in = Files.newInputStream( + Paths.get(System.getProperty("user.home") + "/gis/data/geonames/" + country + "-adm.txt"))) { + ImportGeonamesAdmin importGeonamesAdmin = new ImportGeonamesAdmin(); + importGeonamesAdmin.parse(in); + } } }