source: josm/trunk/src/org/openstreetmap/josm/io/imagery/OsmosnimkiOffsetServer.java@ 3847

Last change on this file since 3847 was 3847, checked in by Upliner, 13 years ago

Initial support for Komzpa's osmosnimki imagery offset server

File size: 2.2 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.io.imagery;
3
4import java.io.BufferedReader;
5import java.io.InputStreamReader;
6import java.net.URL;
7import java.net.URLEncoder;
8
9import org.openstreetmap.josm.Main;
10import org.openstreetmap.josm.data.coor.EastNorth;
11import org.openstreetmap.josm.data.coor.LatLon;
12import org.openstreetmap.josm.data.imagery.ImageryInfo;
13import org.openstreetmap.josm.data.preferences.StringProperty;
14
15public class OsmosnimkiOffsetServer implements OffsetServer {
16 public static StringProperty PROP_SERVER_URL = new StringProperty("imagery.offsetserver.url","http://offset.osmosnimki.ru/offset/v0?");
17 private String url;
18
19 public OsmosnimkiOffsetServer(String url) {
20 this.url = url;
21 }
22
23 @Override
24 public boolean isLayerSupported(ImageryInfo info) {
25 try {
26 URL url = new URL(this.url + "action=CheckAvailability&id=" + URLEncoder.encode(info.getFullUrl(), "UTF-8"));
27 final BufferedReader rdr = new BufferedReader(new InputStreamReader(url.openConnection().getInputStream(), "UTF-8"));
28 String response = rdr.readLine();
29 if (response.contains("\"offsets_available\": true")) return true;
30 } catch (Exception e) {
31 e.printStackTrace();
32 }
33 return false;
34 }
35
36 @Override
37 public EastNorth getOffset(ImageryInfo info, EastNorth en) {
38 LatLon ll = Main.proj.eastNorth2latlon(en);
39 try {
40 URL url = new URL(this.url + "action=GetOffsetForPoint&lat=" + ll.lat() + "&lon=" + ll.lon() + "&id=" + URLEncoder.encode(info.getUrl(), "UTF-8"));
41 final BufferedReader rdr = new BufferedReader(new InputStreamReader(url.openConnection().getInputStream(), "UTF-8"));
42 String s = rdr.readLine();
43 int i = s.indexOf(',');
44 if (i == -1) return null;
45 String sLon = s.substring(1,i);
46 String sLat = s.substring(i+1,s.length()-1);
47 return Main.proj.latlon2eastNorth(new LatLon(Double.valueOf(sLat),Double.valueOf(sLon))).sub(en);
48 } catch (Exception e) {
49 e.printStackTrace();
50 return null;
51 }
52 }
53
54}
Note: See TracBrowser for help on using the repository browser.