MeteoInfo-Java解析与绘图教程(八)_java解析卫星FY-4A一级产品文件(HDF举例)
MeteoInfo-Java解析与绘图教程(八)_java解析卫星一级产品文件(HDF举例)
最近解析卫星数据遇到了一级产品,它的解析方式与之前文章说的有些不同,特此补充一下
卫星的一级产品,里面是没有经纬度的,并且里面只有通道数据,同时一级产品也分500KM,1000KM,2000KM,4000KM,解析思路是一样的,我就直接用4000KM举例了
首先我们要确定文件里面都有那些数据
String path = "D:\\解析数据\\卫星\\Z_SATE_C_BAWX_20220416084552_P_FY4A-_AGRI--_N_REGC_1047E_L1-_FDI-_MULT_NOM_20220416083836_20220416084253_4000M_V0001.HDF";
MeteoDataInfo meteo = new MeteoDataInfo();
meteo.openNetCDFData(path);
//查询文件存放参数名称
List<String> list = meteo.getDataInfo().getVariableNames();

打印出来,发现参数有NOMObsColumn(行列号表),NOMChannel(通道数据,共计14个)以及对应的CALChannel(定标数据,对应通道数据也有14个)
这样就确定了文件里有14个通道的数据了

我这里就拿01通道要数据渲染
String path = "D:\\解析数据\\卫星\\Z_SATE_C_BAWX_20220416084552_P_FY4A-_AGRI--_N_REGC_1047E_L1-_FDI-_MULT_NOM_20220416083836_20220416084253_4000M_V0001.HDF";
MeteoDataInfo meteo = new MeteoDataInfo();
meteo.openNetCDFData(path);
//行列位置读取
Array column = meteo.read("NOMObsColumn");
//数据
Array array = meteo.read("NOMChannel01");
//获取x,y下标数
int[] shape = array.getShape();
//获取x起点,y起点
Index index = array.getIndex();
GridData grid = new GridData(0, 0.1, shape[1], 0, 0.1, shape[0]);
grid.missingValue = -1;
//第一有效值,最后有效值,平分除二
for(int i=0; i<column.getSize()/2; i++){
//2字节,第一个值
int x = column.getShort(i * 2);
//2字节,最后一个值
int y = column.getShort(i * 2 + 1);
if(x != -1 && y != -1){
for(int j=x; j<=y; j++){
index.set(i, j);
grid.data[shape[0] - i - 1][j] = array.getShort(index);
}
}
}
RasterLayer layer = DrawMeteoData.createRasterLayer(grid, "");
MapView view = new MapView();
view.addLayer(layer);
MeteoinfoUtil.drawImage(view, grid.getXNum(), "D:/Data/1.png");
卫星一级产品绘图核心部分就是NOMObsColumn的应用,我们首先要确定这个的用处

数据是网格数据,但有效的数据每一行都是有限的,第一有效值就是开头,最后有效值就是结尾,所以行列号有2列,行和网络数据的y相同

以上就是没有确定色阶的第一通道的绘制
对比卫星一级产品来说,最难的就是经纬度的问题,虽然官方给了对应的算法,但java的计算速度确实慢,导致出图不快(1分钟之内),目前还没有很好的方法,还需要思考
如果大家对经纬度这里有很好的想法,可以私聊我讨论一下,一起进步
MeteoInfo-Java解析与绘图教程(八)_java解析卫星FY-4A一级产品文件(HDF举例)的更多相关文章
- MeteoInfo-Java解析与绘图教程(一)
MeteoInfo-Java解析与绘图教程(一) 已经进入开发行业很多年了,这两年一直从事气象开发行业,为此对气象绘图有了新的见解 像色斑图与卫星图一直都有python去绘制,在偶然的情况下,我接触到 ...
- MeteoInfo-Java解析与绘图教程(三)
MeteoInfo-Java解析与绘图教程(三) 上文我们说到简单绘制色斑图(卫星云图),但那种效果可定不符合要求,一般来说,客户需要的是在地图上色斑图的叠加,或者是将图片导出分别是这两种效果 当然还 ...
- MeteoInfo-Java解析与绘图教程(四)
MeteoInfo-Java解析与绘图教程(四) 上文我们说到,将地图叠加在色斑图上,但大部分都是卫星绘图,现在开始讲解micaps数据绘图,同样也是更多自定义配置 首先我们解析micaps数据,将之 ...
- MeteoInfo-Java解析与绘图教程(五)
MeteoInfo-Java解析与绘图教程(五) 最近太忙了,终于有时间继续写了,上文说到了基本上的绘图方法,但缺少色阶呈现,一般图叠加着地图上,后端不需要管色阶,但也要注意web页面色阶和我们的生成 ...
- MeteoInfo-Java解析与绘图教程(七)_图层添加站点名称或区域名称
MeteoInfo-Java解析与绘图教程(七)_图层添加站点名称或区域名称 在上文说了用自动站的数据经过插值绘制色斑图,这种一般是在geoserver上叠加图片呈现,但遇到后端导出图片,我们又想添加 ...
- JAVA学习第四十八课 — IO流(二):文件的复制 & 缓冲区1
一.复制文本文件 将G盘的文本文件拷贝到D盘上 也就是 读取G盘中文本文件的数据.写入D盘中->连读带写 而剪切呢.就是连读带写后,删除原盘的文件 <span style="fo ...
- [转]Java NIO通俗易懂简明教程
Java NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API.本系列教程将有助于你学习和理解Java NIO. Java NIO提供了与 ...
- JAVA企业级开发-xml基础语法&约束&解析(04)
一.什么是xml html:超文本标记语言.它主要是用来封装页面上要显示的数据,最后通过浏览器来解析html文件,然后把数据展示在浏览器上.同样我们可以使用JS和DOM技术对html文件进行解析和操作 ...
- CRL快速开发框架系列教程八(使用CRL.Package)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
随机推荐
- 什么叫线程安全?servlet 是线程安全吗?
线程安全是编程中的术语,指某个函数.函数库在多线程环境中被调用时,能够 正确地处理多个线程之间的共享变量,使程序功能正确完成. Servlet 不是线程安全的,servlet 是单实例多线程的,当多个 ...
- Java 中的 ReadWriteLock 是什么?
读写锁是用来提升并发程序性能的锁分离技术的成果.
- 面试问题之数据库:SQL优化的具体操作
转载于:https://www.cnblogs.com/wangzhengyu/p/10412499.html SQL优化的具体操作: 1.尽量避免使用select *,返回无用的字段会降低查询效率. ...
- SublimeText 建立构建Node js系统
Sublime Text 3 构建系统:https://www.sublimetext.com/docs/3/build_systems.html 注意: 文档中出现的 shell_cmd 和 cmd ...
- jsp报错问题之“使用jstl的c标签choose报错Illegal text inside "c:choose" tag问题”
一.报错 [bessky_it][ERROR][2022-03-25 17:19:07] | PLATFORM | ):[c]鍜孾/com.bessky.pss.portal/purchase/sam ...
- java弹框
Java弹窗操作 1.任务简介 本博客介绍两种Java弹窗操作的方法,第一个种是通过弹出对话框显示用户输入的信息,第二种是通过用户输入数字的不同打开不同的程序. 2.弹出对话框的操作 1)任务内容编程 ...
- C语言break,return
C语言break,continue,return的相似与区别 相同点: 都改变了程序的执行流程 区别是:break 用于循环和switch分支,跳出它所在分支或循环体到它所在的模块的 ...
- 【分享】WeX5的正确打开方式(6)——数据组件初探
本文是[WeX5的正确打开方式]系列的第6篇文章,简单介绍一下WeX5中数据组件的特性和结构形式. 数据组件的由来 上一篇 WeX5绑定机制我们实现了一个简单的记账本应用,当时所有数据都用 JSON ...
- 解决Mui中popover 顶部弹出菜单弹出位置不准确以及无法收回的问题
前言 最近公司的项目转向使用Hbuilder开发移动端项目,其中想要通过在顶部标题栏加入弹出菜单的方式,来定位长列表的位置,如图所示. 问题 Mui的功能貌似还不是很完善,在使用这个弹出菜单的时候,发 ...
- 【babel+小程序】记“编写babel插件”与“通过语法解析替换小程序路由表”的经历
话不多说先上图,简要说明一下干了些什么事.图可能太模糊,可以点svg看看 背景 最近公司开展了小程序的业务,派我去负责这一块的业务,其中需要处理的一个问题是接入我们web开发的传统架构--模块化开发. ...