使用 Java 保存 WMS 磁贴
Saving WMS tile with Java
您知道使用 Java 将 WMS 磁贴另存为图像(尤其是 .png)的方法吗?
我有一个磁贴,例如:
我的代码如下:
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
这样的普通图像
我应该使用任何特殊的库吗?
似乎 maps.geoportal.gov.pl 检查 User-Agent
header 并且当您这样连接时,没有 User-Agent
header 发送到服务器。如果您将此 header 设置为某个可接受的值(例如 Mozilla/5.0
似乎有效),您将获得所需的图像。
所以
InputStream is = url.openStream();
尝试
URLConnection connection = url.openConnection();
connection.setRequestProperty("User-Agent", "Mozilla/5.0");
InputStream is = connection.getInputStream();
它应该可以工作。
您知道使用 Java 将 WMS 磁贴另存为图像(尤其是 .png)的方法吗?
我有一个磁贴,例如:
我的代码如下:
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
这样的普通图像我应该使用任何特殊的库吗?
似乎 maps.geoportal.gov.pl 检查 User-Agent
header 并且当您这样连接时,没有 User-Agent
header 发送到服务器。如果您将此 header 设置为某个可接受的值(例如 Mozilla/5.0
似乎有效),您将获得所需的图像。
所以
InputStream is = url.openStream();
尝试
URLConnection connection = url.openConnection();
connection.setRequestProperty("User-Agent", "Mozilla/5.0");
InputStream is = connection.getInputStream();
它应该可以工作。