/[projects]/dao/DaoAdresseService/src/dk/daoas/daoadresseservice/GeocodeHelper.java
ViewVC logotype

Annotation of /dao/DaoAdresseService/src/dk/daoas/daoadresseservice/GeocodeHelper.java

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2349 - (hide annotations) (download)
Mon Feb 23 15:02:48 2015 UTC (9 years, 3 months ago) by torben
File size: 3705 byte(s)
Load google keys from config
1 torben 2298 package dk.daoas.daoadresseservice;
2    
3     import java.io.IOException;
4 torben 2301 import java.net.URLEncoder;
5 torben 2298 import java.util.List;
6    
7     import com.google.code.geocoder.Geocoder;
8     import com.google.code.geocoder.GeocoderRequestBuilder;
9     import com.google.code.geocoder.model.GeocodeResponse;
10     import com.google.code.geocoder.model.GeocoderAddressComponent;
11     import com.google.code.geocoder.model.GeocoderRequest;
12     import com.google.code.geocoder.model.GeocoderResult;
13     import com.google.code.geocoder.model.GeocoderStatus;
14 torben 2301 import com.google.gson.Gson;
15 torben 2298
16 torben 2349 import dk.daoas.daoadresseservice.admin.ServiceConfig;
17 torben 2301 import dk.daoas.daoadresseservice.beans.OSMAddress;
18 torben 2321 import dk.daoas.daoadresseservice.util.HttpUtil;
19 torben 2301
20 torben 2298 public class GeocodeHelper {
21 torben 2349
22 torben 2298
23    
24 torben 2307 public static void main(String[] args) throws IOException {
25 torben 2349 ServiceConfig conf = new ServiceConfig();
26    
27 torben 2307 int post = 8700;
28     String vej = "Enebarvej";
29    
30     long start1 = System.currentTimeMillis();
31 torben 2349 System.out.println( "Google:" + GeocodeHelper.googleHelper(conf, post, vej) );
32 torben 2307 long stop1 = System.currentTimeMillis();
33    
34     long start2 = System.currentTimeMillis();
35     System.out.println( "OSM:" + GeocodeHelper.openstreetmapHelper(post, vej) );
36     long stop2 = System.currentTimeMillis();
37    
38     System.out.println("Google: " + (stop1-start1));
39     System.out.println("OSM: " + (stop2-start2));
40 torben 2298 }
41    
42 torben 2301 public static String openstreetmapHelper(int postnr, String vejnavn) {
43    
44     try {
45    
46     String encVej = URLEncoder.encode(vejnavn, "UTF-8");
47    
48     String url = "http://nominatim.openstreetmap.org/search?country=DK&street=" + encVej + "&postalcode=" + postnr + "&format=json&addressdetails=1";
49     //String url = "http://nominatim.openstreetmap.org/search?country=DK&street=" + encVej + "&format=json&addressdetails=1";
50     //System.out.println (url);
51    
52     String json = HttpUtil.getContentString(url, 1000);
53     //System.out.println(json);
54    
55     Gson gson = new Gson();
56     OSMAddress adrList[] = gson.fromJson(json, OSMAddress[].class);
57    
58     //System.out.println("Count: " + adrList.length);
59     if (adrList.length != 1)
60     return null;
61    
62     if (adrList[0].address != null) {
63     return adrList[0].address.road;
64     }
65    
66    
67     } catch (Exception e) {
68     System.out.println( "Error: " + e.getMessage() );
69     }
70     return null;
71     }
72    
73    
74    
75 torben 2349 public static String googleHelper(ServiceConfig conf, int postnr, String vejnavn) {
76 torben 2298 try {
77     //Todo: Load api key from context config
78 torben 2349 final Geocoder geocoder;
79     if ( conf.googleApiKey != null ) {
80     geocoder = new Geocoder(conf.googleApiUser, conf.googleApiKey); //Throws InvalidKeyException
81     } else {
82     geocoder = new Geocoder();
83     }
84 torben 2298
85 torben 2349
86 torben 2298 String search = vejnavn + ", " + postnr + ", Denmark";
87     GeocoderRequest geocoderRequest = new GeocoderRequestBuilder().setAddress(search).setLanguage("en").getGeocoderRequest();
88     GeocodeResponse geocoderResponse = geocoder.geocode(geocoderRequest);
89    
90    
91     //System.out.println( "Status: >" + geocoderResponse.getStatus() + "<");
92     if ( geocoderResponse.getStatus() != GeocoderStatus.OK) {
93 torben 2324 System.out.println("Google responded with " + geocoderResponse.getStatus() );
94 torben 2298 return null;
95     }
96    
97     List<GeocoderResult> resList = geocoderResponse.getResults();
98     //System.out.println( "Count: " + resList.size() );
99    
100     if (resList.size() != 1) {
101     return null;
102     }
103     GeocoderResult res = resList.get(0);
104    
105     List<GeocoderAddressComponent> compList = res.getAddressComponents();
106     for (GeocoderAddressComponent c : compList) {
107     //System.out.println(c);
108     if (c.getTypes().contains("route")) {
109     return c.getLongName();
110     }
111     }
112    
113 torben 2349 } catch (Exception e) {
114 torben 2298 System.out.println( "GoogleError: " + e.getMessage() );
115     }
116     return null;
117    
118     }
119    
120     }

  ViewVC Help
Powered by ViewVC 1.1.20