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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理