MeteoInfo-Java解析与绘图教程(三)
MeteoInfo-Java解析与绘图教程(三)
上文我们说到简单绘制色斑图(卫星云图),但那种效果可定不符合要求,一般来说,客户需要的是在地图上色斑图的叠加,或者是将图片导出分别是这两种效果


当然还有一种是将边界上的数据去除掉,例如下图,这种是数据生成色斑图,不适用卫星,所以卫星云图不会裁剪数据,留到下节说明

首先说第一种,在前端geoserver上叠加图层的实现方式
MeteoDataInfo meteo = new MeteoDataInfo();
meteo.openAWXData("D:\\Download\\ANI_VIS_R04_20210812_0800_FY2G.AWX");
GridData grid = meteo.getGridData();
//色阶文件
String colorPath = "D:\\apache-tomcat-8.0.50\\alt色阶\\AWX.pal";
//绘制图层
RasterLayer layer = DrawMeteoData.createRasterLayer(grid, "",colorPath);
//创建视图
MapView view = new MapView();
//叠加图层
view.addLayer(layer);
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()+"/2.png");
这里我们需要注意的是区域边界是如何得出的,区域边界就是最大最小经纬度,而控制最大最小经纬度的度数就是数据,数据的本质就是二维数组,x与y就是经纬度,x和y对应的就是当前点的数值
下面就是第二种图片生成方式
MeteoDataInfo meteo = new MeteoDataInfo();
meteo.openAWXData("D:\\Download\\ANI_VIS_R04_20210812_0800_FY2G.AWX");
GridData grid = meteo.getGridData();
//色阶文件
String colorPath = "D:\\apache-tomcat-8.0.50\\alt色阶\\AWX.pal";
//绘制图层
RasterLayer layer = DrawMeteoData.createRasterLayer(grid, "",colorPath); //读取地图
VectorLayer xzmap = MapDataManage.readMapFile_ShapeFile("C:\\Users\\Administrator\\Documents\\WXWork\\1688854031041609\\Cache\\File\\2021-08\\中国_省界.shp"); //描述地图边界线
PolygonBreak pb = (PolygonBreak) xzmap.getLegendScheme().getLegendBreak(0);
//是否设置填充
pb.setDrawFill(false);
//设置轮廓大小
// pb.setOutlineSize(2f);
//设置轮廓颜色
pb.setOutlineColor(Color.white);
//创建视图
MapView view = new MapView();
//叠加图层
view.addLayer(layer);
view.addLayer(xzmap);
//创建地图页面设置类
MapLayout layout = new MapLayout();
//去除图形边框
layout.getActiveMapFrame().setDrawNeatLine(false);
//区域边界
Extent extent = xzmap.getExtent();
//设置矩形的宽和高
Rectangle bounds = new Rectangle(800, (int) (800 * 1D / extent.getWidth() * extent.getHeight()));
//设置地图边框
layout.setPageBounds(new Rectangle(0, 0, bounds.width+100, bounds.height+100));
//设置页面边框
layout.getActiveMapFrame().setLayoutBounds(new Rectangle(50, 50, bounds.width, bounds.height));
//设置缩放程度
view.zoomToExtent(extent);
//设置所有图层范围
view.setExtent(extent);
layout.getActiveMapFrame().setMapView(view);
layout.getActiveMapFrame().setDrawGridLine(true); layout.exportToPicture(PathUtil.getDeskPath()+"/2.png");
请注意,我将轮廓大小去除了,因为这个设置本质上是加粗样式,用了有些粗,所以一般都是使用默认配置
layout.getActiveMapFrame()这个方法就是获取活动布局图,是控制大部分样式的api,如果修改样式就是可以调用其中的api
下节讲解第三种图片生成方式
MeteoInfo-Java解析与绘图教程(三)的更多相关文章
- MeteoInfo-Java解析与绘图教程(一)
MeteoInfo-Java解析与绘图教程(一) 已经进入开发行业很多年了,这两年一直从事气象开发行业,为此对气象绘图有了新的见解 像色斑图与卫星图一直都有python去绘制,在偶然的情况下,我接触到 ...
- MeteoInfo-Java解析与绘图教程(七)_图层添加站点名称或区域名称
MeteoInfo-Java解析与绘图教程(七)_图层添加站点名称或区域名称 在上文说了用自动站的数据经过插值绘制色斑图,这种一般是在geoserver上叠加图片呈现,但遇到后端导出图片,我们又想添加 ...
- MeteoInfo-Java解析与绘图教程(八)_java解析卫星FY-4A一级产品文件(HDF举例)
MeteoInfo-Java解析与绘图教程(八)_java解析卫星一级产品文件(HDF举例) 最近解析卫星数据遇到了一级产品,它的解析方式与之前文章说的有些不同,特此补充一下 卫星的一级产品,里面是没 ...
- MeteoInfo-Java解析与绘图教程(四)
MeteoInfo-Java解析与绘图教程(四) 上文我们说到,将地图叠加在色斑图上,但大部分都是卫星绘图,现在开始讲解micaps数据绘图,同样也是更多自定义配置 首先我们解析micaps数据,将之 ...
- MeteoInfo-Java解析与绘图教程(五)
MeteoInfo-Java解析与绘图教程(五) 最近太忙了,终于有时间继续写了,上文说到了基本上的绘图方法,但缺少色阶呈现,一般图叠加着地图上,后端不需要管色阶,但也要注意web页面色阶和我们的生成 ...
- java解析xml的三种方法
java解析XML的三种方法 1.SAX事件解析 package com.wzh.sax; import org.xml.sax.Attributes; import org.xml.sax.SAXE ...
- Java 解析 XML
Java 解析 XML 标签: Java基础 XML解析技术有两种 DOM SAX DOM方式 根据XML的层级结构在内存中分配一个树形结构,把XML的标签,属性和文本等元素都封装成树的节点对象 优点 ...
- Fastify 系列教程三 (验证、序列化和生命周期)
Fastify 系列教程: Fastify 系列教程一 (路由和日志) Fastify 系列教程二 (中间件.钩子函数和装饰器) Fastify 系列教程三 (验证.序列化和生命周期) 验证 Fast ...
- XML基础+Java解析XML +几种解析方式的性能比较
XML基础+Java解析XML 一:XML基础 XML是什么: 可扩展的标记语言 XML能干什么: 描述数据.存储数据.传输(交换)数据. XML与HTML区别: 目的不一样 XML 被设计用来描述数 ...
随机推荐
- Ambiguous mapping found. Cannot map 'competeController' bean method
报错: Error creating bean with name 'org.springframework.web.servlet.mvc.method.annotation.RequestMapp ...
- 《PHP基础知识总结》系列分享专栏
总结PHP基础知识,对初学者还是高手都值得参考巩固. <PHP基础知识总结>已整理成PDF文档,点击可直接下载至本地查阅https://www.webfalse.com/read/2017 ...
- DawgCTF wp(re和crypto)
简单写写思路,想看详解的..我脚本有些丢失了..师傅请移步. 挂了个vpn,算正式打这种国际赛,全是英文.上去打了两天,昨晚晚上划水了一晚上补作业...,re那时候写出来三道,Potentially ...
- Java | Map集合
Map集合 在现实生活中,有非常多的东西,是和另外一种东西对应的,并且还是唯一的,比如:身份证号与个人,个人与手机,一夫一妻...等,这种关系就是对应关系,又叫做映射.Java为这种数据类型提供了专门 ...
- Docker 基础备忘录
Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的.可移植的.自给自足的容器.开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机).bare metal. ...
- 友链QAQ
队爷 : 天仙队爷%%% H 队:分块带师%%% KBY :比我小还比我强
- VBA收集
EXCEL启用宏 1.excel另存为"启用宏的XLSM"的文件格式 excel2007打开显示"宏的工具栏" 点击"左上角的OFFICE按钮&quo ...
- CSAPP:bomblab
BOMBLAB实验总结 CSAPP实验BOMB,很头疼,看不懂,勉强做完了. 答案是这样的: Border relations with Canada have never been better. ...
- debain9显卡
# Debian 9 "Stretch" deb http://httpredir.debian.org/debian/ stretch main contrib non-free ...
- js排序——sort()排序用法
sort() 方法用于对数组的元素进行排序,并返回数组.默认排序顺序是根据字符串Unicode码点. 语法:array.sort(fun):参数fun可选.规定排序顺序.必须是函数.注:如果调用该方法 ...