Ticket #6532: imagery-xml.patch

File imagery-xml.patch, 14.2 KB (added by bastiK, 15 years ago)

xml format for imagery sources (first draft)

  • src/org/openstreetmap/josm/gui/layer/WMSLayer.java

     
    695695                    oos.writeInt(imageSize);
    696696                    oos.writeDouble(info.getPixelPerDegree());
    697697                    oos.writeObject(info.getName());
    698                     oos.writeObject(info.getFullUrl());
     698                    oos.writeObject(info.getExtendedUrl());
    699699                    oos.writeObject(images);
    700700                    oos.close();
    701701                }
     
    734734                imageSize = ois.readInt();
    735735                info.setPixelPerDegree(ois.readDouble());
    736736                doSetName((String)ois.readObject());
    737                 info.setUrl((String) ois.readObject());
     737                info.setExtendedUrl((String) ois.readObject());
    738738                images = (GeorefImage[][])ois.readObject();
    739739                ois.close();
    740740                fis.close();
  • src/org/openstreetmap/josm/gui/preferences/ImageryPreference.java

     
    591591                case 0:
    592592                    return info.getName();
    593593                case 1:
    594                     return info.getFullUrl();
     594                    return info.getExtendedUrl();
    595595                case 2:
    596596                    return (info.getImageryType() == ImageryType.WMS || info.getImageryType() == ImageryType.HTML) ?
    597597                            (info.getPixelPerDegree() == 0.0 ? "" : info.getPixelPerDegree()) :
     
    609609                    info.setName((String) o);
    610610                    break;
    611611                case 1:
    612                     info.setUrl((String)o);
     612                    info.setExtendedUrl((String)o);
    613613                    break;
    614614                case 2:
    615615                    info.setPixelPerDegree(0);
     
    658658                case 0:
    659659                    return info.getName();
    660660                case 1:
    661                     return info.getFullUrl();
     661                    return info.getExtendedUrl();
    662662                }
    663663                return null;
    664664            }
  • src/org/openstreetmap/josm/io/imagery/OsmosnimkiOffsetServer.java

     
    2525    @Override
    2626    public boolean isLayerSupported(ImageryInfo info) {
    2727        try {
    28             URL url = new URL(this.url + "action=CheckAvailability&id=" + URLEncoder.encode(info.getFullUrl(), "UTF-8"));
     28            URL url = new URL(this.url + "action=CheckAvailability&id=" + URLEncoder.encode(info.getExtendedUrl(), "UTF-8"));
    2929            System.out.println(tr("Querying offset availability: {0}", url));
    3030            final BufferedReader rdr = new BufferedReader(new InputStreamReader(url.openConnection().getInputStream(), "UTF-8"));
    3131            String response = rdr.readLine();
     
    4141    public EastNorth getOffset(ImageryInfo info, EastNorth en) {
    4242        LatLon ll = Main.getProjection().eastNorth2latlon(en);
    4343        try {
    44             URL url = new URL(this.url + "action=GetOffsetForPoint&lat=" + ll.lat() + "&lon=" + ll.lon() + "&id=" + URLEncoder.encode(info.getFullUrl(), "UTF-8"));
     44            URL url = new URL(this.url + "action=GetOffsetForPoint&lat=" + ll.lat() + "&lon=" + ll.lon() + "&id=" + URLEncoder.encode(info.getExtendedUrl(), "UTF-8"));
    4545            System.out.println(tr("Querying offset: {0}", url.toString()));
    4646            final BufferedReader rdr = new BufferedReader(new InputStreamReader(url.openConnection().getInputStream(), "UTF-8"));
    4747            String s = rdr.readLine();
  • src/org/openstreetmap/josm/data/imagery/ImageryLayerInfo.java

     
    1717import org.openstreetmap.josm.Main;
    1818import org.openstreetmap.josm.data.imagery.ImageryInfo.ImageryType;
    1919import org.openstreetmap.josm.data.Bounds;
     20import org.openstreetmap.josm.io.imagery.ImageryReader;
    2021import org.openstreetmap.josm.io.MirroredInputStream;
     22import org.openstreetmap.josm.tools.Utils;
     23import org.xml.sax.SAXException;
    2124
    2225public class ImageryLayerInfo {
    2326
     
    2629    static ArrayList<ImageryInfo> defaultLayers = new ArrayList<ImageryInfo>();
    2730
    2831    private final static String[] DEFAULT_LAYER_SITES = {
    29         "http://josm.openstreetmap.de/maps"
     32        "resource://data/imagery.xml" // TODO : create wiki site
    3033    };
    3134
    3235    private ImageryLayerInfo() {
     
    5053        Collection<String> defaults = Main.pref.getCollection(
    5154                "imagery.layers.default", Collections.<String>emptySet());
    5255        ArrayList<String> defaultsSave = new ArrayList<String>();
    53         for(String source : Main.pref.getCollection("imagery.layers.sites", Arrays.asList(DEFAULT_LAYER_SITES)))
    54         {
     56        for (String source : Main.pref.getCollection("imagery.layers.sites", Arrays.asList(DEFAULT_LAYER_SITES))) {
     57            if (clearCache) {
     58                MirroredInputStream.cleanup(source);
     59            }
     60            MirroredInputStream stream = null;
     61            try {
     62                stream = new MirroredInputStream(source, -1);
     63                ImageryReader rd = new ImageryReader(stream);
     64                Collection<ImageryInfo> result = rd.parse();
     65                defaultLayers.addAll(result);
     66            } catch (IOException ex) {
     67                Utils.close(stream);
     68                ex.printStackTrace();
     69                continue;
     70            } catch (SAXException sex) {
     71                Utils.close(stream);
     72                sex.printStackTrace();
     73                continue;
     74            }
     75           
     76            if (true) continue;
     77           
    5578            try
    5679            {
    5780                if (clearCache) {
     
    114137                                if (!defaults.contains(url)) {
    115138                                    for (ImageryInfo i : layers) {
    116139                                        if ((i.getImageryType() == ImageryType.WMS && url.equals(i.getUrl()))
    117                                                 || url.equals(i.getFullUrl())) {
     140                                                || url.equals(i.getExtendedUrl())) {
    118141                                            force = false;
    119142                                        }
    120143                                    }
  • src/org/openstreetmap/josm/data/imagery/ImageryInfo.java

     
    4141
    4242    private String name;
    4343    private String url = null;
     44    private boolean defaultEntry = false;
    4445    private String cookies = null;
    4546    private String eulaAcceptanceRequired= null;
    4647    private ImageryType imageryType = ImageryType.WMS;
     
    5455    private String attributionLinkURL;
    5556    private String termsOfUseURL;
    5657
     58    public ImageryInfo() {
     59    }
     60
    5761    public ImageryInfo(String name) {
    5862        this.name=name;
    5963    }
    6064
    6165    public ImageryInfo(String name, String url) {
    6266        this.name=name;
    63         setUrl(url);
     67        setExtendedUrl(url);
    6468    }
    6569
    6670    public ImageryInfo(String name, String url, String eulaAcceptanceRequired) {
    6771        this.name=name;
    68         setUrl(url);
     72        setExtendedUrl(url);
    6973        this.eulaAcceptanceRequired = eulaAcceptanceRequired;
    7074    }
    7175
    7276    public ImageryInfo(String name, String url, String eulaAcceptanceRequired, String cookies) {
    7377        this.name=name;
    74         setUrl(url);
     78        setExtendedUrl(url);
    7579        this.cookies=cookies;
    7680        this.eulaAcceptanceRequired = eulaAcceptanceRequired;
    7781    }
    7882
    7983    public ImageryInfo(String name, String url, String cookies, double pixelPerDegree) {
    8084        this.name=name;
    81         setUrl(url);
     85        setExtendedUrl(url);
    8286        this.cookies=cookies;
    8387        this.pixelPerDegree=pixelPerDegree;
    8488    }
     
    8690    public ArrayList<String> getInfoArray() {
    8791        ArrayList<String> res = new ArrayList<String>();
    8892        res.add(name);
    89         res.add((url != null && !url.isEmpty()) ? getFullUrl() : null);
     93        res.add((url != null && !url.isEmpty()) ? getExtendedUrl() : null);
    9094        res.add(cookies);
    9195        if(imageryType == ImageryType.WMS || imageryType == ImageryType.HTML) {
    9296            res.add(pixelPerDegree != 0.0 ? String.valueOf(pixelPerDegree) : null);
     
    105109        ArrayList<String> array = new ArrayList<String>(list);
    106110        this.name=array.get(0);
    107111        if(array.size() >= 2 && !array.get(1).isEmpty()) {
    108             setUrl(array.get(1));
     112            setExtendedUrl(array.get(1));
    109113        }
    110114        if(array.size() >= 3 && !array.get(2).isEmpty()) {
    111115            this.cookies=array.get(2);
     
    177181        this.pixelPerDegree = ppd;
    178182    }
    179183
     184    public void setDefaultMaxZoom(int defaultMaxZoom) {
     185        this.defaultMaxZoom = defaultMaxZoom;
     186    }
     187
     188    public void setDefaultMinZoom(int defaultMinZoom) {
     189        this.defaultMinZoom = defaultMinZoom;
     190    }
     191   
    180192    public void setMaxZoom(int maxZoom) {
    181193        this.maxZoom = maxZoom;
    182194    }
     
    201213        termsOfUseURL = text;
    202214    }
    203215
    204     public void setUrl(String url) {
     216    public void setExtendedUrl(String url) {
    205217        CheckParameterUtil.ensureParameterNotNull(url);
    206218       
    207219        defaultMaxZoom = 0;
     
    239251        return this.url;
    240252    }
    241253
     254    public void setUrl(String url) {
     255        this.url = url;
     256    }
     257
     258    public boolean isDefaultEntry() {
     259        return defaultEntry;
     260    }
     261
     262    public void setDefaultEntry(boolean defaultEntry) {
     263        this.defaultEntry = defaultEntry;
     264    }
     265
    242266    public String getCookies() {
    243267        return this.cookies;
    244268    }
     
    259283        return eulaAcceptanceRequired;
    260284    }
    261285
    262     public String getFullUrl() {
     286    public void setEulaAcceptanceRequired(String eulaAcceptanceRequired) {
     287        this.eulaAcceptanceRequired = eulaAcceptanceRequired;
     288    }
     289
     290    public String getExtendedUrl() {
    263291        return imageryType.getUrlString() + (defaultMaxZoom != 0
    264292            ? "["+(defaultMinZoom != 0 ? defaultMinZoom+",":"")+defaultMaxZoom+"]" : "") + ":" + url;
    265293    }
     
    315343        return imageryType;
    316344    }
    317345
     346    public void setImageryType(ImageryType imageryType) {
     347        this.imageryType = imageryType;
     348    }
     349
    318350    public static boolean isUrlWithPatterns(String url) {
    319351        return url != null && url.contains("{") && url.contains("}");
    320352    }
  • data/imagery.xml

     
     1<?xml version="1.0"?>
     2<imagery>
     3    <!--"true;OpenStreetMap (Mapnik);tms[18]:http://tile.openstreetmap.org/;;;osm;osm;osm"-->
     4    <entry>
     5        <name>Bing</name>
     6        <type>bing</type>
     7        <default>true</default>
     8    </entry>
     9    <entry>
     10        <name>Landsat</name>
     11        <type>wms</type>
     12        <default>true</default>
     13        <url><![CDATA[http://irs.gis-lab.info/?layers=landsat&]]></url>
     14    </entry>
     15    <entry>
     16        <name>Yahoo Sat</name>
     17        <type>html</type>
     18        <url><![CDATA[http://josm.openstreetmap.de/wmsplugin/YahooDirect.html?]]></url>
     19    </entry>
     20    <entry>
     21        <name>MapQuest Open Aerial</name>
     22        <type>tms</type>
     23        <default>true</default>
     24        <url><![CDATA[http://oatile1.mqcdn.com/naip/{zoom}/{x}/{y}.png]]></url>
     25    </entry>
     26    <entry>
     27    <!--"false;SPOTMaps (France);http://spotmaps.youmapps.org/cgi-bin/mapserv?map=/home/ortho/ortho.map&service=wms&version=1.1.1&srs=EPSG:4326&request=GetMap&layers=spotmaps4osm&format=image/jpeg&FORMAT=image/jpeg&VERSION=1.1.1&SERVICE=WMS&REQUEST=GetMap&Layers=demo&;http://www.youmapps.org/licenses/EULA-OSM-J-{lang}.html"-->
     28        <name>SPOTMaps (France)</name>
     29        <type>wms</type>
     30        <url><![CDATA[http://spotmaps.youmapps.org/cgi-bin/mapserv?map=/home/ortho/ortho.map&service=wms&version=1.1.1&srs=EPSG:4326&request=GetMap&layers=spotmaps4osm&format=image/jpeg&FORMAT=image/jpeg&VERSION=1.1.1&SERVICE=WMS&REQUEST=GetMap&Layers=demo&]]></url>
     31        <eula mandatory='true'><![CDATA[http://www.youmapps.org/licenses/EULA-OSM-J-{lang}.html]]></eula>
     32    </entry>
     33    <entry>
     34    <!--"false;OpenPT Map;tms[5,16]:http://openptmap.de/tiles;;45.7,5.9,55.0,17.3;osm;osm;osm"-->
     35        <name>OpenPT Map</name>
     36        <type>tms</type>
     37        <url><![CDATA[http://openptmap.de/tiles]]></url>
     38        <min-zoom>5</min-zoom>
     39        <max-zoom>16</max-zoom>
     40        <bounds min-lat='45.7' min-lon='5.9' max-lat='55.0' max-lon='17.3'/>
     41        <attribution-text mandatory='true'>© OpenStreetMap contributors, CC-BY-SA</attribution-text>
     42        <attribution-url>http://openstreetmap.org/</attribution-url>
     43    </entry>
     44    <entry>
     45    <!--"false;ÖPNV;tms[18]:http://tile.xn-  -pnvkarte-m4a.de/tilegen;;;osm;osm;osm"-->
     46        <name>ÖPNV</name>
     47        <type>tms</type>
     48        <url><![CDATA[http://tile.xn--pnvkarte-m4a.de/tilegen]]></url>
     49        <max-zoom>18</max-zoom>
     50
     51        <attribution-text mandatory='true'>© OpenStreetMap contributors, CC-BY-SA</attribution-text>
     52        <attribution-url>http://openstreetmap.org/</attribution-url>
     53        <terms-of-use-text>Background terms of use</terms-of-use-text>
     54        <terms-of-use-url>http://www.openstreetmap.org/copyright</terms-of-use-url>
     55        <!-- just for test - we don't really want a logo in this case -->
     56        <logo-image>http://wiki.openstreetmap.org/w/images/c/c8/Public-images-osm_logo.png</logo-image>
     57        <logo-url>http://wiki.openstreetmap.org/</logo-url>
     58    </entry>
     59</imagery>