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 被设计用来描述数 ...
随机推荐
- Linux学习之路(RPM和YUM)
rpm包的管理 介绍: 一种用于互联网下载包的打包及安装工具(类似windows中的setup).它包含在某些Linux分发版中.它生成具有RPM扩展名的文件.RPM是RedHat软件包管理工具缩写, ...
- Nacos入门学习&实践
文中涉及到了一些模块代码没有给出,我一并上传到github了,可以整个项目clone下来进行调试. 地址:https://github.com/stronglxp/springcloud-test 1 ...
- webdriver xpath
aa=wd.find_elements_by_xpath('//a') for a in aa: print(a.text) #显示所有A标签中文本 aa=wd.find_elements_by_xp ...
- C语言:源代码兼容WINDOWS LINUX
使用库函数之前,应该用#include引入对应的头文件.这种以#号开头的命令称为预处理命令.C语言源文件要经过编译.链接才能生成可执行程序:1) 编译(Compile)会将源文件(.c文件)转换为目标 ...
- Spring总结之SpringMvc上
一.简介 Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架. 二.流程架构 1.用户发送请求至 前端控制器DispatcherServlet ...
- Spring总结之事务
Spring事务 1)定义 事务是指多个操作单元组成的集合,多个操作单元是整体不可分割的,要么都成功,要么都不成功.必须遵守四个原则(ACID) ●原子性(Atomicity):即事务是不可分割的最小 ...
- Spark—RDD编程常用转换算子代码实例
Spark-RDD编程常用转换算子代码实例 Spark rdd 常用 Transformation 实例: 1.def map[U: ClassTag](f: T => U): RDD[U] ...
- ubuntu18.04安装redis-desktop-manager
通过proxychains4 clone项目,否则安装不成功 教程:https://www.cnblogs.com/bignode/p/9254500.html 1 git clone --recur ...
- JavaScript实现拖放效果
JavaScript实现拖放效果 笔者实现该效果也是套用别人的轮子的.传送门 然后厚颜无耻的贴别人的readme~,笔者为了方便查阅就直接贴了,有不想移步的可以看这篇.不过还是最好请到原作者的GitH ...
- P7362 [eJOI 2020 Day2] XOR Sort
P7362 [eJOI 2020 Day2] XOR Sort 题意 给你一个长度为 \(n\) 的序列,每次操作可以将一个数异或上相邻的一个数,求将序列改为严格单调递增序列或严格单调不降序列的操作次 ...