使用Java保存WMS磁贴

时间:2016-10-12 13:41:55

标签: java wms

您是否知道使用Java将WMS磁贴保存为图像(尤其是.png)的方法?

我有一块瓷砖,例如:

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=

我的代码如下:

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();
}

适用于http://www.delaval.com/ImageVaultFiles/id_15702/cf_5/st_edited/AYAbVD33cXEhPNEqWOOd.jpg

等普通图像

我应该使用任何特殊的库吗?

1 个答案:

答案 0 :(得分:0)

似乎maps.geoportal.gov.pl会检查User-Agent标头,当您像这样连接时,没有User-Agent标头发送到服务器。如果您将此标头设置为某个可接受的值(例如Mozilla/5.0似乎有效),您将获得所需的图像。

所以而不是

InputStream is = url.openStream();

尝试

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

它应该有用。