--- dao/DaoAdresseVedligehold/src/main/java/dk/daoas/adressevedligehold/dawa/DawaWebservice.java 2016/04/19 12:56:57 3005 +++ dao/DaoAdresseVedligehold/src/main/java/dk/daoas/adressevedligehold/dawa/DawaWebservice.java 2016/04/19 15:49:14 3006 @@ -1,9 +1,17 @@ package dk.daoas.adressevedligehold.dawa; +import java.io.File; +import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; +import java.util.Iterator; import java.util.List; +import java.util.Map; +import java.util.TreeMap; +import org.apache.commons.csv.CSVFormat; +import org.apache.commons.csv.CSVParser; +import org.apache.commons.csv.CSVRecord; import org.json.JSONArray; import org.json.JSONObject; @@ -30,8 +38,109 @@ DeduplicateHelper dedup = new DeduplicateHelper<>(); + public Map kommunerIRegion(int regionskode) throws IOException { + TimingHelper timer = new TimingHelper(); + + final String url = "http://dawa.aws.dk/kommuner"; + + Map result = new TreeMap<>(); + + String jsonStr = HttpUtil.getContentString(url, 5000); + JSONArray root = new JSONArray( jsonStr) ; + + for (int i=0; i adresserIKommune(int kommunekode) throws IOException { + + //Splitter splitter = Splitter.on(',').trimResults( CharMatcher.is('"') ); + + List
result = new ArrayList<>(); + + final String url = "http://dawa.aws.dk/adgangsadresser?kommunekode=" + kommunekode+ "&format=csv"; + + File file = File.createTempFile("dawa_" + kommunekode + "_", "csv"); + logger.info("Gemmer til " + file.getName() ); + HttpUtil.getContentToFile(url, file, 1000); + + TimingHelper timer = new TimingHelper(); + + logger.info("Loaded data elapsed:" + timer.getElapsed()); + timer = new TimingHelper(); + + + try (FileReader fin = new FileReader(file); + CSVParser parser = new CSVParser(fin, CSVFormat.EXCEL); + + ) { + + + Iterator it = parser.iterator(); + + it.next(); //Skip header line + + + while (it.hasNext()) { + CSVRecord rec = it.next(); + + Address a = new Address(); + a.vejkode = Short.parseShort( rec.get(4) ); + a.vejnavn = dedup.getInstance( rec.get(5) ); + String husnrStr = rec.get(7); + + a.husnr = Short.parseShort( husnrStr.replaceAll("[^\\d]","") ); + + if (a.husnr > 900) { + continue; + } + + a.husnrbogstav = dedup.getInstance( husnrStr.replaceAll("\\d", "") ); + + a.postnr = Short.parseShort( rec.get(9) ); + a.kommunekode = Short.parseShort( rec.get(13) ); + + + a.latitude = safeParseFloat( rec.get(22) ); + a.longitude = safeParseFloat( rec.get(22) ); + + result.add(a); + + } + } + file.delete(); + + logger.info("AdressCount:" + result.size() + " - " + timer.getElapsed() + "ms"); + + page++; + + return result; + } + + private float safeParseFloat(String str) { + if (str.equals("")) + return (float) 0.0; + + return Float.parseFloat(str); + + } - public List
lookup(int kommunekode) throws IOException { + public List
adresserIKommune_old(int kommunekode) throws IOException {