博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
从网页获取图片
阅读量:4610 次
发布时间:2019-06-09

本文共 18765 字,大约阅读时间需要 62 分钟。

从中央气象台获取卫星云图的例子,代码如下:

url:

package com.jointsky.jointframe.test;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.URL;import java.net.URLConnection;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;import java.util.HashMap;import java.util.Map;/** * 从中国气象台网站获取卫星云图的例子 * @author Administrator * */public class GetSatelliteCloudImageTest {        //格式化时间        private static SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");        private static SimpleDateFormat sdf2 = new SimpleDateFormat("HH:mm:ss");        private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");        private static SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy/MM/dd/");        private static SimpleDateFormat sdf4 = new SimpleDateFormat("yyyyMMdd");        private static SimpleDateFormat sdf5 = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");                /**         * 主函数         * @param args         */        public static void main(String[] args) {        //每日卫星云图第一张数据的时间是"03:59:59",但是接近整点的时候才会发布;最后一张图片是23:45的,放在00:00:00之后到00:10:00之间取数据        //不取数据的开始时间(时间在每天的00:10:00到03:59:59秒之间不取数据)        String beginTime = " 00:10:00";        //不去数据的结束时间        String endTime = " 03:59:59";                Date date = new Date();        //当前时间(无时分秒)        String currentTime1 = sdf1.format(date);        Date begin = new Date();        Date end =  new Date();        Date current =  new Date();        String b = currentTime1+beginTime;        String e = currentTime1+endTime;        try {            begin = sdf.parse(b);            end = sdf.parse(e);            current = date;            //current = sdf.parse(currentTime1+" "+currentTime2);        } catch (ParseException e1) {            e1.printStackTrace();        }        //before方法:begin时间在当前时间current返回true        if (begin.before(current)&&current.before(end)) {            return;        }else {            try {                String url = getImageUrl(date);                String filename = getImageName(date,getTimeCode(date));                Map
map = download(url, filename); //图片名称 String imageName = (String) map.get("filename"); //预报时间 String forecastTime = (String) map.get("forecastTime"); //图片路径 String imagePath = (String) map.get("imagePath"); System.out.println("图片名称:"+imageName+";预报时间:"+forecastTime+";路径:"+imagePath); } catch (Exception e1) { e1.printStackTrace(); } } } /** * 获取卫星云图的url地址 * @return * @throws Exception */ public static String getImageUrl(Date date) throws Exception { //"http://image.nmc.cn/product/2017/03/24/WXCL/medium/SEVP_NSMC_WXCL_ASC_E99_ACHN_LNO_PY_20170324071500000.JPG" String url = "http://image.nmc.cn/product/"; //图片名称 String imageName = "SEVP_NSMC_WXCL_ASC_E99_ACHN_LNO_PY_"; //时间编码 String timeCode = getTimeCode(date); Integer code = Integer.parseInt(timeCode); //url前部出现的时间 String time = sdf3.format(date); String name_time = ""; if (code>=1945) { //前一天 Date timex = new Date(date.getTime() - 86400000); name_time = sdf4.format(timex); }else { name_time = sdf4.format(date); } //图片格式 String imgLayout = "00000.JPG"; url = url + time + "WXCL/medium/" + imageName + name_time + timeCode + imgLayout; return url; } /** * 获取预报时间对应的时间代码 * @param date * @return * @throws Exception */ public static String getTimeCode(Date date) throws Exception { //当前日期 String currentDate = sdf1.format(date); if (sdf.parse(currentDate+" 03:59:00").before(date)&&(sdf.parse(currentDate+" 04:30:00")).after(date)||(sdf.parse(currentDate+" 04:30:00")).equals(date)) { return "1945"; }else if (sdf.parse(currentDate+" 04:30:00").before(date)&&(sdf.parse(currentDate+" 04:59:59")).after(date)||(sdf.parse(currentDate+" 04:59:59")).equals(date)) { return "2015"; }else if (sdf.parse(currentDate+" 04:59:59").before(date)&&(sdf.parse(currentDate+" 05:30:00")).after(date)||(sdf.parse(currentDate+" 05:30:00")).equals(date)) { return "2045"; }else if (sdf.parse(currentDate+" 05:30:00").before(date)&&(sdf.parse(currentDate+" 05:59:59")).after(date)||(sdf.parse(currentDate+" 05:59:59")).equals(date)) { return "2115"; }else if (sdf.parse(currentDate+" 05:59:59").before(date)&&(sdf.parse(currentDate+" 06:30:00")).after(date)||(sdf.parse(currentDate+" 06:30:00")).equals(date)) { return "2145"; }else if (sdf.parse(currentDate+" 06:30:00").before(date)&&(sdf.parse(currentDate+" 06:59:59")).after(date)||(sdf.parse(currentDate+" 06:59:59")).equals(date)) { return "2215"; }else if (sdf.parse(currentDate+" 06:59:59").before(date)&&(sdf.parse(currentDate+" 07:30:00")).after(date)||(sdf.parse(currentDate+" 07:30:00")).equals(date)) { return "2245"; }else if (sdf.parse(currentDate+" 07:30:00").before(date)&&(sdf.parse(currentDate+" 07:59:59")).after(date)||(sdf.parse(currentDate+" 07:59:59")).equals(date)) { return "2315"; }else if (sdf.parse(currentDate+" 07:59:59").before(date)&&(sdf.parse(currentDate+" 08:30:00")).after(date)||(sdf.parse(currentDate+" 08:30:00")).equals(date)) { return "2345"; }else if (sdf.parse(currentDate+" 08:30:00").before(date)&&(sdf.parse(currentDate+" 08:30:00")).after(date)||(sdf.parse(currentDate+" 08:59:59")).equals(date)) { return "0015"; }else if (sdf.parse(currentDate+" 08:59:59").before(date)&&(sdf.parse(currentDate+" 09:30:00")).after(date)||(sdf.parse(currentDate+" 09:30:00")).equals(date)) { return "0045"; }else if (sdf.parse(currentDate+" 09:30:00").before(date)&&(sdf.parse(currentDate+" 09:59:59")).after(date)||(sdf.parse(currentDate+" 09:59:59")).equals(date)) { return "0115"; }else if (sdf.parse(currentDate+" 09:59:59").before(date)&&(sdf.parse(currentDate+" 10:30:00")).after(date)||(sdf.parse(currentDate+" 10:30:00")).equals(date)) { return "0145"; }else if (sdf.parse(currentDate+" 10:30:00").before(date)&&(sdf.parse(currentDate+" 10:59:59")).after(date)||(sdf.parse(currentDate+" 10:59:59")).equals(date)) { return "0215"; }else if (sdf.parse(currentDate+" 10:59:59").before(date)&&(sdf.parse(currentDate+" 11:30:00")).after(date)||(sdf.parse(currentDate+" 11:30:00")).equals(date)) { return "0245"; }else if (sdf.parse(currentDate+" 11:30:00").before(date)&&(sdf.parse(currentDate+" 11:59:59")).after(date)||(sdf.parse(currentDate+" 11:59:59")).equals(date)) { return "0315"; }else if (sdf.parse(currentDate+" 11:59:59").before(date)&&(sdf.parse(currentDate+" 12:30:00")).after(date)||(sdf.parse(currentDate+" 12:30:00")).equals(date)) { return "0345"; }else if (sdf.parse(currentDate+" 12:30:00").before(date)&&(sdf.parse(currentDate+" 12:59:59")).after(date)||(sdf.parse(currentDate+" 12:59:59")).equals(date)) { return "0415"; }else if (sdf.parse(currentDate+" 12:59:59").before(date)&&(sdf.parse(currentDate+" 13:30:00")).after(date)||(sdf.parse(currentDate+" 13:30:00")).equals(date)) { return "0445"; }else if (sdf.parse(currentDate+" 13:30:00").before(date)&&(sdf.parse(currentDate+" 13:59:59")).after(date)||(sdf.parse(currentDate+" 13:59:59")).equals(date)) { return "0515"; }else if (sdf.parse(currentDate+" 13:59:59").before(date)&&(sdf.parse(currentDate+" 14:30:00")).after(date)||(sdf.parse(currentDate+" 14:30:00")).equals(date)) { return "0545"; }else if (sdf.parse(currentDate+" 14:30:00").before(date)&&(sdf.parse(currentDate+" 14:59:59")).after(date)||(sdf.parse(currentDate+" 14:59:59")).equals(date)) { return "0615"; }else if (sdf.parse(currentDate+" 14:59:59").before(date)&&(sdf.parse(currentDate+" 15:30:00")).after(date)||(sdf.parse(currentDate+" 15:30:00")).equals(date)) { return "0645"; }else if (sdf.parse(currentDate+" 15:30:00").before(date)&&(sdf.parse(currentDate+" 15:59:59")).after(date)||(sdf.parse(currentDate+" 15:59:59")).equals(date)) { return "0715"; }else if (sdf.parse(currentDate+" 15:59:59").before(date)&&(sdf.parse(currentDate+" 16:30:00")).after(date)||(sdf.parse(currentDate+" 16:30:00")).equals(date)) { return "0745"; }else if (sdf.parse(currentDate+" 16:30:00").before(date)&&(sdf.parse(currentDate+" 16:59:59")).after(date)||(sdf.parse(currentDate+" 16:59:59")).equals(date)) { return "0815"; }else if (sdf.parse(currentDate+" 16:59:59").before(date)&&(sdf.parse(currentDate+" 17:30:00")).after(date)||(sdf.parse(currentDate+" 17:30:00")).equals(date)) { return "0845"; }else if (sdf.parse(currentDate+" 17:30:00").before(date)&&(sdf.parse(currentDate+" 17:59:59")).after(date)||(sdf.parse(currentDate+" 17:59:59")).equals(date)) { return "0915"; }else if (sdf.parse(currentDate+" 17:59:59").before(date)&&(sdf.parse(currentDate+" 18:30:00")).after(date)||(sdf.parse(currentDate+" 18:30:00")).equals(date)) { return "0945"; }else if (sdf.parse(currentDate+" 18:30:00").before(date)&&(sdf.parse(currentDate+" 18:59:59")).after(date)||(sdf.parse(currentDate+" 18:59:59")).equals(date)) { return "1015"; }else if (sdf.parse(currentDate+" 18:59:59").before(date)&&(sdf.parse(currentDate+" 19:30:00")).after(date)||(sdf.parse(currentDate+" 19:30:00")).equals(date)) { return "1045"; }else if (sdf.parse(currentDate+" 19:30:00").before(date)&&(sdf.parse(currentDate+" 19:59:59")).after(date)||(sdf.parse(currentDate+" 19:59:59")).equals(date)) { return "1115"; }else if (sdf.parse(currentDate+" 19:59:59").before(date)&&(sdf.parse(currentDate+" 20:30:00")).after(date)||(sdf.parse(currentDate+" 20:30:00")).equals(date)) { return "1145"; }else if (sdf.parse(currentDate+" 20:30:00").before(date)&&(sdf.parse(currentDate+" 20:59:59")).after(date)||(sdf.parse(currentDate+" 20:59:59")).equals(date)) { return "1215"; }else if (sdf.parse(currentDate+" 20:59:59").before(date)&&(sdf.parse(currentDate+" 21:30:00")).after(date)||(sdf.parse(currentDate+" 21:30:00")).equals(date)) { return "1245"; }else if (sdf.parse(currentDate+" 21:30:00").before(date)&&(sdf.parse(currentDate+" 21:59:59")).after(date)||(sdf.parse(currentDate+" 21:59:59")).equals(date)) { return "1315"; }else if (sdf.parse(currentDate+" 21:59:59").before(date)&&(sdf.parse(currentDate+" 22:30:00")).after(date)||(sdf.parse(currentDate+" 22:30:00")).equals(date)) { return "1345"; }else if (sdf.parse(currentDate+" 22:30:00").before(date)&&(sdf.parse(currentDate+" 22:59:59")).after(date)||(sdf.parse(currentDate+" 22:59:59")).equals(date)) { return "1415"; }else if (sdf.parse(currentDate+" 22:59:59").before(date)&&(sdf.parse(currentDate+" 23:30:00")).after(date)||(sdf.parse(currentDate+" 23:30:00")).equals(date)) { return "1445"; }else if (sdf.parse(currentDate+" 23:30:00").before(date)&&(sdf.parse(currentDate+" 22:59:59")).after(date)||(sdf.parse(currentDate+" 23:59:59")).equals(date)) { return "1515"; }else if (sdf.parse(currentDate+" 23:59:59").before(date)&&(sdf.parse(currentDate+" 23:59:59")).after(date)||(sdf.parse(currentDate+" 23:59:59")).equals(date)) { return "1545"; }else if ((sdf.parse(currentDate+" 00:00:00").before(date)||sdf.parse(currentDate+" 00:00:00").equals(date))&&(sdf.parse(currentDate+" 03:59:59").after(date))||sdf.parse(currentDate+" 03:59:59").equals(date)) { return "1545"; } return null; } /** * 根据时间和时间代码获取到新命名的卫星云图文件名 * @param date * @param timeCode * @return * @throws Exception */ public static String getImageName(Date date,String timeCode) throws Exception { String time = sdf1.format(date); if ("1945".equals(timeCode)) { return time+"-03-45-00.JPG"; }else if ("2015".equals(timeCode)) { return time+"-04-15-00.JPG"; }else if ("2045".equals(timeCode)) { return time+"-04-45-00.JPG"; }else if ("2115".equals(timeCode)) { return time+"-05-15-00.JPG"; }else if ("2145".equals(timeCode)) { return time+"-05-45-00.JPG"; }else if ("2215".equals(timeCode)) { return time+"-06-15-00.JPG"; }else if ("2245".equals(timeCode)) { return time+"-06-45-00.JPG"; }else if ("2315".equals(timeCode)) { return time+"-07-15-00.JPG"; }else if ("2345".equals(timeCode)) { return time+"-07-45-00.JPG"; }else if ("0015".equals(timeCode)) { return time+"-08-15-00.JPG"; }else if ("0045".equals(timeCode)) { return time+"-08-45-00.JPG"; }else if ("0115".equals(timeCode)) { return time+"-09-15-00.JPG"; }else if ("0145".equals(timeCode)) { return time+"-09-45-00.JPG"; }else if ("0215".equals(timeCode)) { return time+"-10-15-00.JPG"; }else if ("0245".equals(timeCode)) { return time+"-10-45-00.JPG"; }else if ("0315".equals(timeCode)) { return time+"-11-15-00.JPG"; }else if ("0345".equals(timeCode)) { return time+"-11-45-00.JPG"; }else if ("0415".equals(timeCode)) { return time+"-12-15-00.JPG"; }else if ("0445".equals(timeCode)) { return time+"-12-45-00.JPG"; }else if ("0515".equals(timeCode)) { return time+"-13-15-00.JPG"; }else if ("0545".equals(timeCode)) { return time+"-13-45-00.JPG"; }else if ("0615".equals(timeCode)) { return time+"-14-15-00.JPG"; }else if ("0645".equals(timeCode)) { return time+"-14-45-00.JPG"; }else if ("0715".equals(timeCode)) { return time+"-15-15-00.JPG"; }else if ("0745".equals(timeCode)) { return time+"-15-45-00.JPG"; }else if ("0815".equals(timeCode)) { return time+"-16-15-00.JPG"; }else if ("0845".equals(timeCode)) { return time+"-16-45-00.JPG"; }else if ("0915".equals(timeCode)) { return time+"-17-15-00.JPG"; }else if ("0945".equals(timeCode)) { return time+"-17-45-00.JPG"; }else if ("1015".equals(timeCode)) { return time+"-18-15-00.JPG"; }else if ("1045".equals(timeCode)) { return time+"-18-45-00.JPG"; }else if ("1115".equals(timeCode)) { return time+"-19-15-00.JPG"; }else if ("1145".equals(timeCode)) { return time+"-19-45-00.JPG"; }else if ("1215".equals(timeCode)) { return time+"-20-15-00.JPG"; }else if ("1245".equals(timeCode)) { return time+"-20-45-00.JPG"; }else if ("1315".equals(timeCode)) { return time+"-21-15-00.JPG"; }else if ("1345".equals(timeCode)) { return time+"-21-45-00.JPG"; }else if ("1415".equals(timeCode)) { return time+"-22-15-00.JPG"; }else if ("1445".equals(timeCode)) { return time+"-22-45-00.JPG"; }else if ("1515".equals(timeCode)) { return time+"-23-15-00.JPG"; }else if ("1545".equals(timeCode)) { return time+"-23-45-00.JPG"; } return null; } /** * 下载文件到本地 * @param urlString 被下载的文件地址 * @param filename 本地文件名 * @throws Exception 各种异常 */ public static Map
download(String urlString, String filename) throws Exception { Map
map = new HashMap
(); String path = ""; Date time = sdf5.parse(filename); String forecastTime = sdf.format(time); String imagePath = "D:/Jointsky/JointFrame/satelliteCloudImage/"; String[] filenames = filename.split("\\."); String[] strs = filenames[0].split("-"); for (int i = 0; i < strs.length; i++) { imagePath = imagePath + strs[i]+"/"; } path = imagePath; imagePath = imagePath + filename; // 构造URL URL url = new URL(urlString); // 打开连接 URLConnection con = url.openConnection(); // 输入流 InputStream is = con.getInputStream(); // 1K的数据缓冲 byte[] bs = new byte[1024]; // 读取到的数据长度 int len; //判断如果文件夹存在则保存,不存在则创建 File file = new File(path); if (!file.exists()) { if (!file.isDirectory()) { file.mkdirs(); } try { file.createNewFile(); } catch (IOException e) { e.printStackTrace(); } } // 输出的文件流 OutputStream os = new FileOutputStream(imagePath); // 开始读取 while ((len = is.read(bs)) != -1) { os.write(bs, 0, len); } // 完毕,关闭所有链接 os.close(); is.close(); //预测时间 if (!forecastTime.equals("")&&forecastTime!=null) { map.put("forecastTime", forecastTime); } //图片名称 if (!filename.equals("")&&filename!=null) { map.put("filename", filename); } //图片存放路径 if (!path.equals("")&&path!=null) { if (!filename.equals("")&&filename!=null) { map.put("imagePath", path+filename); } } return map; } public static SimpleDateFormat getSdf1() { return sdf1; } public static void setSdf1(SimpleDateFormat sdf1) { GetSatelliteCloudImageTest.sdf1 = sdf1; } public static SimpleDateFormat getSdf2() { return sdf2; } public static void setSdf2(SimpleDateFormat sdf2) { GetSatelliteCloudImageTest.sdf2 = sdf2; } public static SimpleDateFormat getSdf() { return sdf; } public static void setSdf(SimpleDateFormat sdf) { GetSatelliteCloudImageTest.sdf = sdf; } public static SimpleDateFormat getSdf3() { return sdf3; } public static void setSdf3(SimpleDateFormat sdf3) { GetSatelliteCloudImageTest.sdf3 = sdf3; } }
View Code

 

转载于:https://www.cnblogs.com/shuilangyizu/p/6628453.html

你可能感兴趣的文章
差分放大电路设计
查看>>
checkbox下面的提示框 鼠标移入时显示,移出时隐藏
查看>>
SpringMVC(五) RequestMapping 请求参数和请求头
查看>>
AsyncDisplayKit
查看>>
难受就哭,开心就笑
查看>>
Junit常用操作
查看>>
[原]VS2012编译GLEW 1.11
查看>>
vod_play.html修改播放器页面模板
查看>>
Python 常用的内置函数
查看>>
Console 程序在任务计划程序无法读写文件
查看>>
Visual Studio 2017创建XAML文件
查看>>
第三十章 网路编程------线程
查看>>
C++第9周项目3参考——利息计算器
查看>>
元音字母
查看>>
一个用户多个订单
查看>>
BZOJ4009: [HNOI2015]接水果
查看>>
Flask filter过滤器
查看>>
个人简介
查看>>
Go语言核心之美-必读
查看>>
【Jsp】JSP自己定义标签与MODEL1、MODEL2标准
查看>>