MeteoInfo-Java解析与绘图教程(六)
MeteoInfo-Java解析与绘图教程(六)
这一节主要说的是我们取到自动站的数据,如何通过插值,转化成格点数据,并绘制图层
//从数据库查询cimiss数据
List<Map<String,Object>> list = DBUtil.getMapList("SELECT * FROM mete_stationpar_data_2021 WHERE DataTime = '2021-01-01 12:00:00' AND TEM IS NOT NULL");
//创建站点格点
StationData stationData = new StationData();
//循环数据将值塞入格点中
for (Map<String, Object> item : list) {
System.out.println(item);
stationData.addData(String.valueOf(item.get("Station_Name")),
Double.parseDouble(item.get("Lon").toString()),
Double.parseDouble(item.get("Lat").toString()),
Double.parseDouble(item.get("TEM").toString()));
}
//读取地图图层
VectorLayer altMap = MapDataManage.readMapFile_ShapeFile("C:\\Users\\Administrator\\Downloads\\阿勒泰地区\\阿勒泰地区.shp");
//创建网格设置参数
GridDataSetting gridDataSetting = new GridDataSetting();
//设定数据区域
gridDataSetting.dataExtent = altMap.getExtent();
//设定格点数
gridDataSetting.xNum = list.size();
gridDataSetting.yNum = list.size();
//创建插值设置
InterpolationSetting interpolationSetting = new InterpolationSetting();
//设定格点配置
interpolationSetting.setGridDataSetting(gridDataSetting);
//设定插值方法
interpolationSetting.setInterpolationMethod(InterpolationMethods.IDW_Radius);
//设定搜索半径
interpolationSetting.setRadius(10);
//设置最小点数
interpolationSetting.setMinPointNum(1);
//插值到格点
GridData gridData = stationData.interpolateData(interpolationSetting);
LegendScheme als = LgsUtil.readFromLgs("D:\\apache-tomcat-8.0.50\\alt色阶\\color\\ECMWF_HR\\TMP.lgs");
//绘制图层
VectorLayer layer = DrawMeteoData.createShadedLayer(gridData,als,"","",true);
//创建视图
MapView view = new MapView();
PolygonBreak pb = (PolygonBreak) altMap.getLegendScheme().getLegendBreak(0);
pb.setDrawFill(false);
pb.setOutlineColor(Color.GRAY);
layer = layer.clip(altMap);
//叠加图层
view.addLayer(layer);
view.addLayer(altMap); /**
* 通用方法,可以抽成工具类
*/
MapLayout layout = new MapLayout();
//去除图形边框
layout.getActiveMapFrame().setDrawNeatLine(false);
//区域边界
Extent extent = view.getExtent();
//设置矩形的宽和高
Rectangle bounds = new Rectangle(800, (int) (800 * 1D / extent.getWidth() * extent.getHeight()));
//设置地图边框
layout.setPageBounds(new Rectangle(0, 0, bounds.width, bounds.height));
//设置页面边框
layout.getActiveMapFrame().setLayoutBounds(new Rectangle(0, 0, bounds.width, bounds.height));
layout.getActiveMapFrame().setMapView(view);
layout.exportToPicture(PathUtil.getDeskPath()+"/1.png");
对于该方法主要有几个重点需要关注:
1.GridDataSetting 它是对矩阵做了布局设置
2.InterpolationSetting 它是对插值做了设置,InterpolationMethods就包含了几种插值法,但感觉效果最好的是IDW_Radius,而我们绘制的时候最舒服的方法还是克里金插值,如果可以的话,可以根据原理自己封装一个
图片展示:

简单的绘制基本上都结束了,我也在不停的研究,有新东西我会公布出来,如果大家也有想法可以私聊我来交流一下,让我们对气象开发更加简单舒服
MeteoInfo-Java解析与绘图教程(六)的更多相关文章
- MeteoInfo-Java解析与绘图教程(一)
MeteoInfo-Java解析与绘图教程(一) 已经进入开发行业很多年了,这两年一直从事气象开发行业,为此对气象绘图有了新的见解 像色斑图与卫星图一直都有python去绘制,在偶然的情况下,我接触到 ...
- MeteoInfo-Java解析与绘图教程(八)_java解析卫星FY-4A一级产品文件(HDF举例)
MeteoInfo-Java解析与绘图教程(八)_java解析卫星一级产品文件(HDF举例) 最近解析卫星数据遇到了一级产品,它的解析方式与之前文章说的有些不同,特此补充一下 卫星的一级产品,里面是没 ...
- MeteoInfo-Java解析与绘图教程(三)
MeteoInfo-Java解析与绘图教程(三) 上文我们说到简单绘制色斑图(卫星云图),但那种效果可定不符合要求,一般来说,客户需要的是在地图上色斑图的叠加,或者是将图片导出分别是这两种效果 当然还 ...
- MeteoInfo-Java解析与绘图教程(四)
MeteoInfo-Java解析与绘图教程(四) 上文我们说到,将地图叠加在色斑图上,但大部分都是卫星绘图,现在开始讲解micaps数据绘图,同样也是更多自定义配置 首先我们解析micaps数据,将之 ...
- MeteoInfo-Java解析与绘图教程(五)
MeteoInfo-Java解析与绘图教程(五) 最近太忙了,终于有时间继续写了,上文说到了基本上的绘图方法,但缺少色阶呈现,一般图叠加着地图上,后端不需要管色阶,但也要注意web页面色阶和我们的生成 ...
- MeteoInfo-Java解析与绘图教程(七)_图层添加站点名称或区域名称
MeteoInfo-Java解析与绘图教程(七)_图层添加站点名称或区域名称 在上文说了用自动站的数据经过插值绘制色斑图,这种一般是在geoserver上叠加图片呈现,但遇到后端导出图片,我们又想添加 ...
- SpringBoot进阶教程(六十八)Sentinel实现限流降级
前面两篇文章nginx限流配置和SpringBoot进阶教程(六十七)RateLimiter限流,我们介绍了如何使用nginx和RateLimiter限流,这篇文章介绍另外一种限流方式---Senti ...
- CRL快速开发框架系列教程六(分布式缓存解决方案)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
- C#微信公众号开发系列教程六(被动回复与上传下载多媒体文件)
微信公众号开发系列教程一(调试环境部署) 微信公众号开发系列教程一(调试环境部署续:vs远程调试) C#微信公众号开发系列教程二(新手接入指南) C#微信公众号开发系列教程三(消息体签名及加解密) C ...
- java 解析XML文档
Java 解析XML文档 一.解析XML文档方式: 1.DOM方式:将整个XML文档读取到内存中,按照XML文件的树状结构图进行解析. 2.SAX方式:基于事件的解析,只需要加载XML中的部分数据,优 ...
随机推荐
- 系统编程-进程-exec系列函数超级详解(带各种实操代码)
我的相关博文: 系统编程-进程-close-on-exec机制 PART1 exec系列函数功能简介 exec系列函数登场 常规操作是先fork一个子进程,然后在子进程中调用exec系列函数执行新的 ...
- CPU性能测试基准(Dhrystone)学习
简介 Dhrystone是测量处理器运算能力的最常见基准程序之一,常用于处理器的整型运算性能的测量.程序是用C语言编写的,因此C编译器的编译效率对测试结果也有很大影响. Dhrystone是由Rein ...
- Android性能优化(一)—— 启动优化,冷启动,热启动,温启动
APP启动方式 App启动方式分三种:冷启动(cold start).热启动(hot start).温启动(warm start) ▲ 冷启动 系统不存在App进程(APP首次启动或APP被完全杀死) ...
- ARM64 SMP多核启动(下)- PSCI
4.支持psci情况 上面说了pin-table的多核启动方式,看似很繁琐,实际上并不复杂,无外乎主处理器唤醒从处理器到指定地址上去执行指令,说他简单是相对于功能来说的,因为他只是实现了从处理器的启动 ...
- 00 通过 Pytorch 实现 Transformer 框架完整代码
博客配套视频链接: https://space.bilibili.com/383551518?spm_id_from=333.1007.0.0 b 站直接看 配套 github 链接:https:// ...
- python中利用变量解压列表、元组、字符串、字典、文件对象、迭代器和生成器等序列
一.如果知道序列中元素的个数,可以直接进行变量赋值. coords = (102, 40) lon, lat = coords print(lon) print(lat) text = "n ...
- KubeSphere 对 Apache Log4j 2 远程代码执行最新漏洞的修复方案
Apache Log4j 2 是一款开源的日志记录工具,被广泛应用于各类框架中.近期,Apache Log4j 2 被爆出存在漏洞,漏洞现已公开,本文为 KubeSphere 用户提供建议的修复方案. ...
- KubeSphere 社区双周报 | 4.8 深圳站 Meetup 火热报名中 | 2023.3.17-3.30
KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书.新增的讲师证书以及两周内提交过 commit 的贡献者,并对近期重要的 PR 进行解析,同时还包含了线上/线下活动和布道推广等一系列 ...
- java的split方法的转义字符
一.实例 我们都知道 String s="ad,dfjdlfs,df,s,dfl"; 执行 String re[]=s.split(","); 则re ...
- JS 转盘抽奖效果
阅读原文,微信扫描二维码, 手机关注公共号酒酒酒酒,搜索 JS 转盘抽奖效果 效果图 前置条件: 开发环境:windows 开发框架:js 编辑器:HbuilderX 正文开始 <!DOCTYP ...