/[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 2706 by torben, Mon Aug 31 09:35:29 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;  import java.util.HashMap;
8  import java.util.List;  import java.util.List;
9  import java.util.Map;  import java.util.Map;
# Line 15  import java.util.logging.Level; Line 13  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 84  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;                  int antalDaekkedeAdresser = -1;
90                                    
91                  if (testRun == false) {                  if (testRun == false) {
# Line 106  public class LookupMain { Line 105  public class LookupMain {
105                          antalDaekkedeAdresser = db.hentAlleDaekkedeAdresser();                          antalDaekkedeAdresser = db.hentAlleDaekkedeAdresser();
106                          logger.info( "AlleDaekkedeAdresser.length=" + antalDaekkedeAdresser );                          logger.info( "AlleDaekkedeAdresser.length=" + antalDaekkedeAdresser );
107                                                    
108                          Map<Short, List<GeoPoint>> addrHoList = db.getDaekkedeAdresserHO();                          Map<Short, List<Adresse>> addrHoList = db.getDaekkedeAdresserHO();
109                                                    
110                          Map<Short, KDTree<GeoPoint>> hoTrees = new HashMap<Short,KDTree<GeoPoint>>();                          Map<Short, KdTree<Adresse>> hoTrees = new HashMap<Short,KdTree<Adresse>>();
111                                                    
112                          for ( Map.Entry<Short, List<GeoPoint>> entry : addrHoList.entrySet() ) {                          for ( Map.Entry<Short, List<Adresse>> entry : addrHoList.entrySet() ) {
113                                  short ho = entry.getKey();                                  short ho = entry.getKey();
114                                  List<GeoPoint> geopoints = entry.getValue();                                  List<Adresse> geopoints = entry.getValue();
115                                                                    
116                                  logger.info("Opbygger KDTree for " + ho + " - antal=" + geopoints.size() );                                  logger.info("Opbygger KDTree for " + ho + " - antal=" + geopoints.size() );
117                                  KDTree<GeoPoint> addressTree = new KDTree<GeoPoint>( geopoints );                                  
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);                                                            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 129  public class LookupMain { Line 133  public class LookupMain {
133                          for (Adresse qAdresse : ikkeDaekkede) {                          for (Adresse qAdresse : ikkeDaekkede) {
134                                                                    
135                                  short ho = qAdresse.ho;                                  short ho = qAdresse.ho;
136                                  KDTree<GeoPoint> addressTree = hoTrees.get(ho);                                  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 187  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("Fuld load done (beregning) : " + formatMilliSeconds(elapsedBeregn) );
206                  logger.info("Antal daekkede : " + antalDaekkedeAdresser );                  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 );

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

  ViewVC Help
Powered by ViewVC 1.1.20