获取天地图瓦片图
(106+180)/(256*R) = x
(90-29)/(256*R) = y
x:106.51199909503045, y:29.577790994552448
x:106.60744282061638, y:29.531699914840534
---------------------------------------------------------------------------------------
layer_10
---------------------------------------------------------------------------------------
(106.51199909503045+180)/(256*6.866455078125002E-4) = 1629.9349281850616 = 1629
,
(90-29.577790994552448)/(256*6.866455078125002E-4) = 343.73523345321263 = 343
(106.60744282061638+180)/(256*6.866455078125002E-4) = 1630.4778969350616= 1631
,
(90-29.531699914840534)/(256*6.866455078125002E-4) = 343.99744048446263 = 344
---------------------------------------------------------------------------------------
layer_11
---------------------------------------------------------------------------------------
(106.51199909503045+180)/(256*3.433227539062501E-4) = 3259.869856370123 = 3259
,
(90-29.577790994552448)/(256*3.433227539062501E-4) = 687.4704669064253 = 687
(106.60744282061638+180)/(256*3.433227539062501E-4) = 3260.955793870123= 3261
,
(90-29.531699914840534)/(256*3.433227539062501E-4) = 687.9948809689253 = 688
import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.net.URL; import java.net.URLConnection; import java.text.SimpleDateFormat; import java.util.Date; public class DownloadImage { public static void main(String[] args) throws Exception { String baseImgUrl = "http://www.digitalcq.com/RemoteRest/services/CQMap_IMG/MapServer/tile/"; String baseImgStorePath = "F:\tianditucq_img\_alllayers\"; boolean haveImgFlag = true; int k = 0; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date startTime = new Date(); System.out.println("start!"); System.out.println("-------------------------------------------"); System.out.println("开始时间:" + sdf.format(startTime)); for (int i = 8; i <= 17; i++) { haveImgFlag = false; String layerImgUrl = baseImgUrl + i + "/"; String layerImgPath = baseImgStorePath + i + "\"; int miny = 0; int maxy = 0; int minx = 0; int maxx = 0; if (i == 8) { } if (i == 10) { haveImgFlag = true; miny = 343; maxy = 344; minx = 1629; maxx = 1631; } if (i == 11) { haveImgFlag = true; miny = 687; maxy = 688; minx = 3259; maxx = 3261; } if (i == 12) { haveImgFlag = true; miny = 1374; maxy = 1376; minx = 6519; maxx = 6522; } if (i == 13) { haveImgFlag = true; miny = 2749; maxy = 2752; minx = 13039; maxx = 13044; } if (i == 14) { haveImgFlag = true; miny = 5499; maxy = 5504; minx = 26078; maxx = 26088; } if (i == 15) { haveImgFlag = true; miny = 10999; maxy = 11008; minx = 52157; maxx = 52176; } if (i == 16) { haveImgFlag = true; miny = 21999; maxy = 22016; minx = 104315; maxx = 104351; } if (i == 17) { haveImgFlag = true; miny = 43998; maxy = 44032; minx = 208631; maxx = 208702; } if (haveImgFlag) { int l = 0; System.out.print("layer_" + i + " start... "); for (int y = miny; y <= maxy; y++) { String layer_y_ImgUrl = layerImgUrl + y + "/"; String layer_y_ImgPath = layerImgPath + y + "\"; for (int x = minx; x < maxx; x++) { String imgUrl = layer_y_ImgUrl + x + ".png"; String imgName = x + ".png"; download(imgUrl, imgName, layer_y_ImgPath); k += 1; l += 1; } } System.out.println(l + "张图片!"); } } Date endTime = new Date(); System.out.println("finish! 合计 " + k + "张图片!"); System.out.println("结束时间:" + sdf.format(endTime)); System.out.println("-------------------------------------------"); System.out.println("end!"); System.out.println(""); Integer second = (int) (endTime.getTime() - startTime.getTime()) / 1000; System.out.println("耗时:" + second + "秒"); System.out.println("下载图片:" + k + "张!"); System.out.println("平均下载速度: 大约" + k / second + "张/秒"); } public static void download(String urlString, String filename, String savePath) throws Exception { URL url = new URL(urlString); URLConnection con = url.openConnection(); con.setConnectTimeout(5 * 1000); InputStream is = con.getInputStream(); byte[] bs = new byte[1024]; int len; File sf = new File(savePath); if (!sf.exists()) { sf.mkdirs(); } OutputStream os = new FileOutputStream(sf.getPath() + "\" + filename); while ((len = is.read(bs)) != -1) { os.write(bs, 0, len); } os.close(); is.close(); } }