--- dao/FuldDaekningWorker/src/dk/daoas/fulddaekning/LookupMain.java 2015/06/14 16:42:08 2591 +++ dao/FuldDaekningWorker/src/dk/daoas/fulddaekning/LookupMain.java 2015/07/13 10:16:41 2597 @@ -6,7 +6,9 @@ import java.io.File; import java.io.FileReader; import java.sql.SQLException; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.Set; import java.util.logging.FileHandler; import java.util.logging.Level; @@ -35,7 +37,7 @@ - private static List alleDaekkedeAdresser; + @@ -85,6 +87,8 @@ long start = System.currentTimeMillis(); + int antalDaekkedeAdresser = -1; + if (testRun == false) { logger.info("Finder postnumre"); @@ -99,10 +103,21 @@ logger.info("Henter alle daekkede adresser"); - alleDaekkedeAdresser = db.hentAlleDaekkedeAdresser(); - logger.info( "AlleDaekkedeAdresser.length=" + alleDaekkedeAdresser.size()); + antalDaekkedeAdresser = db.hentAlleDaekkedeAdresser(); + logger.info( "AlleDaekkedeAdresser.length=" + antalDaekkedeAdresser ); - KDTree addressTree = new KDTree(alleDaekkedeAdresser); + Map> addrHoList = db.getDaekkedeAdresserHO(); + + Map> hoTrees = new HashMap>(); + + for ( Map.Entry> entry : addrHoList.entrySet() ) { + short ho = entry.getKey(); + List geopoints = entry.getValue(); + + logger.info("Opbygger KDTree for " + ho + " - antal=" + geopoints.size() ); + KDTree addressTree = new KDTree( geopoints ); + hoTrees.put(ho, addressTree); + } db.resetResultTable(); @@ -113,6 +128,8 @@ for (Adresse qAdresse : ikkeDaekkede) { + short ho = qAdresse.ho; + KDTree addressTree = hoTrees.get(ho); LookupResult result = new LookupResult(); result.bedsteAdr = (Adresse) addressTree.findNearest(qAdresse); @@ -173,7 +190,7 @@ logger.info("Fuld load done : " + formatMilliSeconds(elapsed) ); - logger.info("Antal daekkede : " + alleDaekkedeAdresser.size() ); + logger.info("Antal daekkede : " + antalDaekkedeAdresser ); logger.info("Antal ikke-daekkede : " + ikkeDaekkede.length ); logger.info("Heraf, antal fundne : " + antalFundne ); logger.info("Fandt adresser til : " + (antalFundne*100.0)/ikkeDaekkede.length + "%" );