底图资源抓取与发布(一)

获取天地图瓦片图

 

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

}

 

posted @ 2015-06-05 13:43  vv_online  阅读(492)  评论(0编辑  收藏  举报