2016-10-12 2 views
-1

Kennen Sie eine Möglichkeit, eine WMS-Kachel als Bild (insbesondere .png) mit Java zu speichern?WMS-Kachel mit Java speichern

Ich habe eine Fliese, zum Beispiel:

http://mapy.geoportal.gov.pl/wss/service/img/guest/ORTO/MapServer/WMSServer?VERSION=1.1.1&SERVICE=WMS&REQUEST=GetMap&LAYERS=Raster&SRS=EPSG:4326&WIDTH=500&HEIGHT=500&TRANSPARENT=TRUE&FORMAT=image/png&BBOX=23.805441,50.98483844444444,23.807441,50.98594955555556&styles=

Mein Code sieht so aus:

public static void saveImage(String imageUrl, String destinationFile) throws IOException { 

    URL url = new URL(imageUrl); 
    InputStream is = url.openStream(); 
    OutputStream os = new FileOutputStream(destinationFile); 

    byte[] b = new byte[2048]; 
    int length; 

    while ((length = is.read(b)) != -1) { 
     os.write(b, 0, length); 
    } 

    is.close(); 
    os.close(); 
} 

Es ist für normale Bilder wie funktioniert http://www.delaval.com/ImageVaultFiles/id_15702/cf_5/st_edited/AYAbVD33cXEhPNEqWOOd.jpg

Soll ich eine spezielle Bibliothek verwenden ?

Antwort

0

Es scheint, dass maps.geoportal.gov.pl überprüft User-Agent Header und wenn Sie so verbinden, gibt es keine User-Agent Header an den Server gesendet. Wenn Sie diese Überschrift auf einen akzeptierten Wert setzen (z. B. Mozilla/5.0 scheint gültig zu sein), erhalten Sie das gewünschte Bild.

Also statt

InputStream is = url.openStream(); 

versuchen

URLConnection connection = url.openConnection(); 
connection.setRequestProperty("User-Agent", "Mozilla/5.0"); 
InputStream is = connection.getInputStream(); 

und sollte es funktionieren.

+0

Ja, es funktioniert! Vielen Dank – Brewer