/[projects]/dao/DaoAdresseVedligehold/src/main/java/dk/daoas/adressevedligehold/afstandandenrute/OSRMHelper.java
ViewVC logotype

Annotation of /dao/DaoAdresseVedligehold/src/main/java/dk/daoas/adressevedligehold/afstandandenrute/OSRMHelper.java

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2889 - (hide annotations) (download)
Sat Jan 30 19:38:37 2016 UTC (8 years, 4 months ago) by torben
File size: 2482 byte(s)
move osrmHost to config
1 torben 2878 package dk.daoas.adressevedligehold.afstandandenrute;
2    
3     import java.util.Collection;
4     import java.util.logging.Level;
5     import java.util.logging.Logger;
6    
7     import com.google.gson.Gson;
8    
9 torben 2889 import dk.daoas.adressevedligehold.ServiceConfig;
10 torben 2878 import dk.daoas.adressevedligehold.beans.Address;
11     import dk.daoas.adressevedligehold.util.HttpUtil;
12    
13    
14     public class OSRMHelper {
15    
16    
17     final static Logger logger = Logger.getLogger( OSRMHelper.class.toString() );
18    
19 torben 2889
20 torben 2878 Gson gson = new Gson();
21    
22     final int port = 5000;
23 torben 2889 final String base_url = "http://" + ServiceConfig.getInstance().osrmHost + ":" + port;
24 torben 2878
25    
26 torben 2885 public Address getNearestTableHttp(Address a1, Collection<Address> haystack) throws Exception {
27 torben 2878
28    
29     Address bedsteAddress = null;
30    
31     Address hayArray[] = new Address[ haystack.size() ];
32     haystack.toArray(hayArray);
33    
34     StringBuilder sb = new StringBuilder();
35     sb.append(base_url);
36     sb.append("/table?src=").append(a1.latitude).append(",").append(a1.longitude);
37    
38     for(int i = 0; i<hayArray.length; i++) {
39     Address a = hayArray[i];
40     sb.append("&dst=").append( a.latitude ).append(",").append(a.longitude);
41     }
42    
43     try {
44    
45     String txtResponse = HttpUtil.getContentString(sb.toString(), 500, "UTF-8");
46    
47     OSRMDistanceTable table = gson.fromJson(txtResponse, OSRMDistanceTable.class);
48    
49     if (table.status != 200) {
50     logger.info("OSRM failed with message: " + table.status + " / "+ table.status_message);
51     return null;
52     }
53    
54     if ( table.distance_table[0].length != hayArray.length ) {
55     logger.log(Level.SEVERE, "Wrong number of results in matrix " + table.distance_table[0].length);
56    
57     System.out.println("--------------");
58     System.out.println("URL:");
59     System.out.println(sb.toString());
60     System.out.println("--------------");
61     System.out.println("Response:");
62     System.out.println(txtResponse);
63    
64    
65 torben 2887 throw new Exception("Wrong number of results in matrix");
66 torben 2878 }
67    
68     int bedsteTid = Integer.MAX_VALUE;
69    
70     for (int i = 0; i<table.distance_table[0].length; i++) {
71     if (table.distance_table[0][i] < bedsteTid) {
72     bedsteTid = table.distance_table[0][i];
73     bedsteAddress = hayArray[i];
74     }
75     }
76    
77    
78     } catch (Exception e) {
79     logger.log(Level.SEVERE, "Lookup failed", e);
80     System.out.println( sb.toString() );
81     System.out.println( a1 );
82 torben 2885 throw e; //Re-throw
83 torben 2878 }
84    
85     //return gson.fromJson(txtResponse, OSRMResponse.class);
86    
87    
88    
89     return bedsteAddress;
90     }
91    
92     }
93    
94    

  ViewVC Help
Powered by ViewVC 1.1.20