/[projects]/dao/FuldDaekningWorker/src/dk/daoas/fulddaekning/LookupMain.java
ViewVC logotype

Diff of /dao/FuldDaekningWorker/src/dk/daoas/fulddaekning/LookupMain.java

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2591 by torben, Sun Jun 14 16:42:08 2015 UTC revision 2707 by torben, Sun Sep 27 13:21:45 2015 UTC
# Line 1  Line 1 
1  package dk.daoas.fulddaekning;  package dk.daoas.fulddaekning;
2    
 import geocode.GeoPoint;  
 import geocode.kdtree.KDTree;  
   
3  import java.io.File;  import java.io.File;
4  import java.io.FileReader;  import java.io.FileReader;
5  import java.sql.SQLException;  import java.sql.SQLException;
6    import java.util.Collection;
7    import java.util.HashMap;
8  import java.util.List;  import java.util.List;
9    import java.util.Map;
10  import java.util.Set;  import java.util.Set;
11  import java.util.logging.FileHandler;  import java.util.logging.FileHandler;
12  import java.util.logging.Level;  import java.util.logging.Level;
13  import java.util.logging.Logger;  import java.util.logging.Logger;
14  import java.util.logging.SimpleFormatter;  import java.util.logging.SimpleFormatter;
15    
16    import com.jwetherell.algorithms.data_structures.KdTree;
17    
18  public class LookupMain {  public class LookupMain {
19                    
20           static class LookupResult {           static class LookupResult {
# Line 35  public class LookupMain { Line 37  public class LookupMain {
37                    
38                    
39                    
40          private static List<GeoPoint> alleDaekkedeAdresser;          
41    
42                    
43                    
# Line 82  public class LookupMain { Line 84  public class LookupMain {
84                                    
85                  int antalFundne = 0;                  int antalFundne = 0;
86                                    
87                                    long beregnStart =0;
88                  long start = System.currentTimeMillis();                  long start = System.currentTimeMillis();
89                    int antalDaekkedeAdresser = -1;
90                                    
91                  if (testRun == false) {                  if (testRun == false) {
92                                    
# Line 99  public class LookupMain { Line 102  public class LookupMain {
102                                                    
103    
104                          logger.info("Henter alle daekkede adresser");                          logger.info("Henter alle daekkede adresser");
105                          alleDaekkedeAdresser = db.hentAlleDaekkedeAdresser();                          antalDaekkedeAdresser = db.hentAlleDaekkedeAdresser();
106                          logger.info( "AlleDaekkedeAdresser.length=" + alleDaekkedeAdresser.size());                          logger.info( "AlleDaekkedeAdresser.length=" + antalDaekkedeAdresser );
107                                                    
108                          KDTree<GeoPoint> addressTree = new KDTree<GeoPoint>(alleDaekkedeAdresser);                          Map<Short, List<Adresse>> addrHoList = db.getDaekkedeAdresserHO();
109                            
110                            Map<Short, KdTree<Adresse>> hoTrees = new HashMap<Short,KdTree<Adresse>>();
111                            
112                            for ( Map.Entry<Short, List<Adresse>> entry : addrHoList.entrySet() ) {
113                                    short ho = entry.getKey();
114                                    List<Adresse> geopoints = entry.getValue();
115                                    
116                                    logger.info("Opbygger KDTree for " + ho + " - antal=" + geopoints.size() );
117                                    
118                                    @SuppressWarnings("unchecked")
119                                    List<KdTree.XYZPoint> tmpPoints = (List<KdTree.XYZPoint>)(List<?>) geopoints;
120                                    
121                                    KdTree<Adresse> addressTree = new KdTree<Adresse>( tmpPoints );
122                                    hoTrees.put(ho, addressTree);                          
123                            }
124                                                    
125                          db.resetResultTable();                          db.resetResultTable();
126                                    
127                            beregnStart = System.currentTimeMillis();
128                          logger.info("Starter beregning");                          logger.info("Starter beregning");
129                                    
130                          final int workerId = -1;                          final int workerId = -1;
# Line 113  public class LookupMain { Line 132  public class LookupMain {
132                                                    
133                          for (Adresse qAdresse : ikkeDaekkede) {                          for (Adresse qAdresse : ikkeDaekkede) {
134                                                                    
135                                    short ho = qAdresse.ho;
136                                    KdTree<Adresse> addressTree = hoTrees.get(ho);
137                                                                    
138                                  LookupResult result = new LookupResult();                                  LookupResult result = new LookupResult();
139                                  result.bedsteAdr = (Adresse) addressTree.findNearest(qAdresse);                                  Collection<Adresse> res = addressTree.nearestNeighbourSearch(1, qAdresse);
140                                    if (res.size() > 1 ) {
141                                            System.out.println("Returnerede mere end 1>" + res.size() );
142                                            System.exit(0);
143                                    }
144                                    result.bedsteAdr = res.iterator().next();
145                                    
146                                    //result.bedsteAdr = (Adresse) addressTree.findNearest(qAdresse);
147                                  result.bedsteAfstand = GeoPointHelper.beregnAfstand(qAdresse, result.bedsteAdr);                                  result.bedsteAfstand = GeoPointHelper.beregnAfstand(qAdresse, result.bedsteAdr);
148                                                    
149                                                    
# Line 170  public class LookupMain { Line 198  public class LookupMain {
198                                    
199                  long now = System.currentTimeMillis();                  long now = System.currentTimeMillis();
200                  long elapsed = now - start ;                  long elapsed = now - start ;
201                    long elapsedBeregn = now - beregnStart;
202                                    
203    
204                  logger.info("Fuld load done : " + formatMilliSeconds(elapsed) );                  logger.info("Fuld load done : " + formatMilliSeconds(elapsed) );
205                  logger.info("Antal daekkede : " + alleDaekkedeAdresser.size() );                  logger.info("Fuld load done (beregning) : " + formatMilliSeconds(elapsedBeregn) );
206                    logger.info("Antal daekkede : " + antalDaekkedeAdresser );
207                  logger.info("Antal ikke-daekkede : " + ikkeDaekkede.length );                  logger.info("Antal ikke-daekkede : " + ikkeDaekkede.length );
208                  logger.info("Heraf, antal fundne : " + antalFundne );                  logger.info("Heraf, antal fundne : " + antalFundne );
209                  logger.info("Fandt adresser til : " + (antalFundne*100.0)/ikkeDaekkede.length + "%" );                  
210                    logger.info( String.format("Fandt adresser til : %.2f %%", (antalFundne*100.0)/ikkeDaekkede.length ) );
211                    //logger.info("Fandt adresser til : " + (antalFundne*100.0)/ikkeDaekkede.length + "%" );
212          }          }
213    
214                    

Legend:
Removed from v.2591  
changed lines
  Added in v.2707

  ViewVC Help
Powered by ViewVC 1.1.20