华信气象业务算法组件库V1.0使用说明_第1页
华信气象业务算法组件库V1.0使用说明_第2页
华信气象业务算法组件库V1.0使用说明_第3页
华信气象业务算法组件库V1.0使用说明_第4页
华信气象业务算法组件库V1.0使用说明_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

气象业务算法基础组件库使用说明手册华云信息技术工程有限公司2020年

BUFR解码基础组件组件说明BUFR解码基础组件主要用来解析国内外的BUFR格式数据,目前支持国外的WMO,NCEP等正式发布的模板,同时支持国内地面小时分钟、酸雨辐射、大气成分等模板。组件接口描述组件类清单表STYLEREF1\s1SEQ表\*ARABIC\s11BUFR组件类清单类名类功能描述BUFRDecoderBUFR解码类BUFRDecoder类包名com.hitec.dhs.mdac.bufr成员方法列表表STYLEREF1\s1SEQ表\*ARABIC\s12BUFRDecoder类成员方法列表方法返回类型方法描述java.util.List<Message>bufrFileScanner(com.hitec.ucar.unidata.io.RandomAccessFileraf)java.util.List<java.util.List<DataDescriptor>>decodeBufrMessage(Messagemessage,com.hitec.ucar.unidata.io.RandomAccessFileraf)方法详情bufrFileScanner/***函数描述:遍历BUFR文件中BUFR数据集及Message*参数:*raf:文件对象*返回值:返回Message数据集*异常:无*/publicjava.util.List<Message>bufrFileScanner(com.hitec.ucar.unidata.io.RandomAccessFileraf)decodeBufrMessage/***函数描述:解析BUFR数据集中的气象要素以及质量控制码*参数:*message:bufrFileScanner解析后的message*raf:文件对象*返回值:返回气象要素集合*异常:无*/publicjava.util.List<java.util.List<DataDescriptor>>decodeBufrMessage(Messagemessage,com.hitec.ucar.unidata.io.RandomAccessFileraf)组件接口使用组件推介使用maven工程引用,目前的版本为1.0.0,maven私服仓库地址:<repository> <id>hitec-repos</id> <name>HitecRepository</name> <url>:8081/repository/maven-public/</url></repository>pom.xml中引用组件库<dependency> <groupId>com.hitec.mdac</groupId> <artifactId>dhs-bufr</artifactId> <version>1.0.0</version></dependency>组件使用详细测试说明如下:publicstaticvoidmain(String[]args)throwsException{ BUFRDecoderbufrDecoder=newBUFRDecoder(); //BUFR数据文件 RandomAccessFilerandomAccessFile=newRandomAccessFile("D:\\cmadass\\testdata\\A_ISCC01RPMM050000CCA_C_BABJ_20201005002711_41566.bin","r"); //获取BUFRMessage,每一个Message为一个站点数据数据集 List<Message>messages=bufrDecoder.bufrFileScanner(randomAccessFile); //获取第一个数据集 Messagemessage=messages.get(0); //ids为BUFR第一段的描述信息,BUFR主表标志,使用标准的WMOFM-94BUFR表 message.ids.getMasterTableId(); //数据源中心 message.ids.getCenterId(); //数据源子中心 message.ids.getSubCenterId(); //数据类型 message.ids.getCategory(); //国际数据子类型 message.ids.getSubCategory(); //国内数据子类型 message.ids.getLocalSubCategory(); //BUFR主表的版本号 message.ids.getMasterTableVersion(); //本地表版本号 message.ids.getLocalTableVersion(); //第三段数据模板描述符 List<DataDescriptor>dataDescriptors=message.getMessageRootDataDescriptor(); //解析Message List<List<DataDescriptor>>dList=bufrDecoder.decodeBufrMessage(message,randomAccessFile); //解析出来的要素 for(List<DataDescriptor>list:dList){ for(DataDescriptordataDescriptor:list){ //为质控码及紧跟后面要素的质控码 if(dataDescriptor.getFxyName().equalsIgnoreCase("0-31-22")){ }else{ //要素的数据描述符 System.out.println(dataDescriptor.getFxyName()); //数据编码基准值 System.out.println(dataDescriptor.refVal); //数据解码要素值 System.out.println(dataDescriptor.value); //数据编码宽度 System.out.println(dataDescriptor.getBitWidth()); //数据缩放比例 System.out.println(dataDescriptor.getScale()); } } }GRIB格式解码基础组件组件说明GRIB1格式解码基础组件主要用来解析GRIB1/GRIB2格式数据。组件接口描述组件类清单表STYLEREF1\s2SEQ表\*ARABIC\s11GRIB组件类清单类名类功能描述Grib1FileReaderGRIB1格式解码类Grib2FileReaderGRIB2格式解码类Grib1FileReader类包名com.hitec.mdac.dhs.grib成员方法列表表STYLEREF1\s2SEQ表\*ARABIC\s12Grib1FileReader类成员方法列表方法返回类型方法描述List<Grib1Record>getRecords(RandomAccessFilerandomAccessFile)MeteoGridDatagetMeteoGridData(Grib1Recordgrib1Record,RandomAccessFilerandomAccessFile)方法详情getRecords/***函数描述:遍历GRIB1文件获取Grib1Record记录列表*参数:*randomAccessFile:文件对象*返回值:返回Grib1Record记录数据集*异常:Exception*/publicList<Grib1Record>getRecords(RandomAccessFilerandomAccessFile)getMeteoGridData/***函数描述:将Grib1Record记录转换为MeteoGridData网格数据*参数:*grib1Record:Grib1Record记录信息*randomAccessFile:文件对象*返回值:返回气象网格数据对象*异常:Exception*/publicMeteoGridDatagetMeteoGridData(Grib1Recordgrib1Record,RandomAccessFilerandomAccessFile)Grib2FileReader类包名com.hitec.mdac.dhs.grib成员方法列表表STYLEREF1\s2SEQ表\*ARABIC\s13Grib2FileReader类成员方法列表方法返回类型方法描述List<Grib2Record>getRecords(RandomAccessFilerandomAccessFile)List<Grib2Record>getRecords(Stringfilename)voidGRIB2Dump(Stringfilename,Stringout)MeteoGridDatagetMeteoGridData(Grib2Recordgrib2Record,RandomAccessFilerandomAccessFile)方法详情getRecords/***函数描述:遍历GRIB2文件获取Grib2Record记录列表*参数:*randomAccessFile:文件对象*返回值:返回Grib2Record记录数据集*异常:Exception*/publicList<Grib2Record>getRecords(RandomAccessFilerandomAccessFile)getRecords/***函数描述:遍历GRIB2文件获取Grib2Record记录列表*参数:*filename:文件名*返回值:返回Grib2Record记录数据集*异常:Exception*/publicList<Grib2Record>getRecords(Stringfilename)GRIB2Dump/***函数描述:查看GRIB2文件的基本信息*参数:*filename:文件名*返回值:无*异常:Exception*/publicvoidGRIB2Dump(Stringfilename,Stringout)getMeteoGridData/***函数描述:将Grib2Record记录转换为MeteoGridData网格数据*参数:*grib2Record:Grib2Record记录信息*randomAccessFile:文件对象*返回值:返回气象网格数据对象*异常:Exception*/publicMeteoGridDatagetMeteoGridData(Grib2Recordgrib2Record,RandomAccessFilerandomAccessFile)组件接口使用组件推介使用maven工程引用,目前的版本为1.0.0,maven私服仓库地址:<repository> <id>hitec-repos</id> <name>HitecRepository</name> <url>:8081/repository/maven-public/</url></repository>pom.xml中引用组件库<dependency> <groupId>com.hitec.mdac</groupId> <artifactId>dhs-grib</artifactId> <version>1.0.0</version></dependency>组件使用详细测试说明如下:packagecom.hitec.mdac.dhs.grib;importjava.util.List;importcom.hitec.mdac.dhs.grib.Grib2FileReader;importucar.nc2.grib.grib2.Grib2Record;publicclassGribFileReaderTest{ publicstaticvoidmain(String[]args){ //文件名 Stringfilename="D:\\CMADAAS\\DATA\\NAFP\\ECMF\\20200601\\ECMF_TEM_100_2020060100_GLB_1_2.grib2"; //构建GRIB2文件解码对象 Grib2FileReadergribFileReader=newGrib2FileReader(); try{ //获取GRIB2文件的基本信息 gribFileReader.GRIB2Dump(filename,""); //获取Grib2Record记录列表 List<Grib2Record>grib2Records=gribFileReader.getRecords(filename); System.out.println(grib2Records.size()); for(Grib2Recordgrib2Record:grib2Records){ //输出Grib2Record记录数据 System.out.println(grib2Record.toString()); } }catch(Exceptione){ e.printStackTrace(); } }}NETCDF解码基础组件组件说明NETCDF解码基础组件主要用来解析NETCDF格式数据,目前支持NETCDF3/NETCDF4格式的数据。组件接口描述组件类清单表STYLEREF1\s3SEQ表\*ARABIC\s11NETCDF组件类清单类名类功能描述NetcdfDataDecoderNETCDF解码类NetcdfDataDecoder类包名cdf成员方法列表表STYLEREF1\s3SEQ表\*ARABIC\s12NetcdfDataDecoder类成员方法列表方法返回类型方法描述voidopen(StringfileName)voidclose()float[]getData(StringvarName)float[]getData(StringvarName,int[]origin,int[]shape)IntgetData(StringuserEleName,StringvarName,HashMap<String,String>dimVarVal,com.hitec.dhs.meteodata.RetGridScalar2DretGridScalar2D)intgetData(StringuUserEleName,StringuVarName,StringvUserEleName,StringvVarName,HashMap<String,String>dimVarVal,com.hitec.dhs.meteodata.RetGridVector2DretGridVector2D)float[]getData(StringvarName,HashMap<String,String>dimVarVal,StringBufferunits)HashMap<String,String>getGolbalAttributes()ArrayList<Dimension>getDimensions()ArrayList<String>getVariableNames()intfindIndexArray(float[]array,floatvalue)方法详情open/***函数描述:打开文件,并读取全局属性、维度列表、变量名列表*参数:*fileName:打开文件名*返回值:无*异常:无*/voidopen(StringfileName)close/***函数描述:关闭打开文件*参数:*返回值:无*异常:无*/voidclose()getData/***函数描述:获取指定要素变量的数据*参数:*varName:要素变量名*返回值:float[]*异常:Exception*/publicfloat[]getData(StringvarName)getData/***函数描述:读取指定形状的要素数据*参数:*varName:要素变量名*origin:读取要素数据的起始位置*shape:读取要素数据的长度*返回值:float[]*异常:IOException;InvalidRangeException*/publicfloat[]getData(StringvarName,int[]origin,int[]shape)getData/***函数描述:获取格点要素场数据*参数:*userEleName:面向用户的要素名称*varName:要素长名*dimVarVal:要素变量维度名值对<维度名,维度值>,经纬度除外*retGridScalar2D返回读取要素格点场数据*返回值:0-成功-1-失败*异常:IOException;InvalidRangeException*/publicintgetData(StringuserEleName,StringvarName,HashMap<String,String>dimVarVal,com.hitec.dhs.meteodata.RetGridVector2DretGridScalar2D)getData/***函数描述:获取格点矢量场数据*参数:*userEleName:面向用户的U分量要素名称*uVarName:U分量要素变量名称*vUserEleName:面向用户的V分量要素名称*vVarName:V分量要素变量名称*dimVarVal:要素变量维度名值对<维度名,维度值>,经纬度除外*retGridVector2D返回读取要素格点场数据*返回值:0-成功-1-失败*异常:IOException;InvalidRangeException*/publicintgetData(StringuUserEleName,StringuVarName,StringvUserEleName,StringvVarName,HashMap<String,String>dimVarVal,com.hitec.dhs.meteodata.RetGridVector2DretGridVector2D)getData/***函数描述:获取要素变量数据*参数:*varName:要素变量名称*dimVarVal:要素变量维度名值对<维度名,维度值>,经纬度除外*units:存储要素单位*返回值:float[]成功返回要素变量数据,失败返回null*异常:IOException;InvalidRangeException*/publicfloat[]getData(StringvarName,HashMap<String,String>dimVarVal,StringBufferunits)getGolbalAttributes/***函数描述:获取文件全局属性*参数:*返回值:HashMap<String,String>全局属性列表*异常:无*/publicHashMap<String,String>getGolbalAttributes()getDimensions/***函数描述:获取维度信息*参数:*返回值:ArrayList<Dimension>维度列表*异常:无*/publicArrayList<Dimension>getDimensions()getVariableName/***函数描述:获取变量名称*参数:*返回值:ArrayList<String>*异常:无*/publicArrayList<String>getVariableNames()组件接口使用组件推介使用maven工程引用,目前的版本为1.0.0,maven私服仓库地址:<repository> <id>hitec-repos</id> <name>HitecRepository</name> <url>:8081/repository/maven-public/</url></repository>pom.xml中引用组件库<dependency> <groupId>com.hitec.mdac</groupId> <artifactId>dhs-netcdf</artifactId> <version>1.0.0</version></dependency>组件使用详细测试说明如下:packagecdf;importjava.util.ArrayList;importjava.util.HashMap;importjava.util.Iterator;importjava.util.Map;importorg.omg.CORBA.INTERNAL;importcom.hitec.dhs.meteodata.RetGridScalar2D;importcom.hitec.dhs.meteodata.RetGridVector2D;importucar.nc2.Dimension;/***Netcdf格式数据解码测试**/publicclassNetcdfDataDecoderTest{publicstaticvoidmain(String[]args){StringfileName="D:\\CMADAAS\\DATA\\NAFP\\ECMF\\20201001\\ECMF_TEM_100_2020100100_GLB_1_2.grib2";NetcdfDataDecoderdecoder=newNetcdfDataDecoder("lat","lon","time");//打开文件decoder.open(fileName);//获取全局属性System.out.println("--------------输出全局属性------------");HashMap<String,String>attrs=decoder.getGolbalAttributes();for(Map.Entry<String,String>entry:attrs.entrySet()){ System.out.println(entry.getKey()+"="+entry.getValue()); }//获取维度列表System.out.println("--------------输出维度名------------");ArrayList<Dimension>dims=decoder.getDimensions();for(Iteratoriterator=dims.iterator();iterator.hasNext();){ Dimensiondimension=(Dimension)iterator.next(); System.out.println(dimension.getFullName()+"="+dimension.getLength()); }//获取变量名System.out.println("--------------输出变量名------------");ArrayList<String>vars=decoder.getVariableNames();for(Stringvar:vars){ System.out.println(var); }try{float[]datas=decoder.getData("Temperature_isobaric");StringBufferunits=newStringBuffer();HashMap<String,String>dimVarVal=newHashMap<String,String>();dimVarVal.put("time","48");dimVarVal.put("isobaric","85000");datas=decoder.getData("Temperature_isobaric",dimVarVal,units);datas=decoder.getData("Temperature_isobaric",newint[]{0,0,0,0},newint[]{1,1,361,720});RetGridScalar2DretGridScalar2D=newRetGridScalar2D();decoder.getData("TEM","Temperature_isobaric",dimVarVal,retGridScalar2D);RetGridVector2DretGridVector2D=newRetGridVector2D();decoder.getData("TEM","Temperature_isobaric","TEM","Temperature_isobaric",dimVarVal,retGridVector2D); }catch(Exceptione){ e.printStackTrace(); }decoder.close();}}NETCDF编码基础组件组件说明NETCDF编码基础组件主要用来NETCDF格式数据文件的生成,目前支持NETCDF4格式的数据。组件接口描述组件类清单表STYLEREF1\s4SEQ表\*ARABIC\s11NETCDF组件类清单类名类功能描述NetcdfDataEncoderNETCDF编码类NetcdfDataEncoder类包名cdf成员方法列表表STYLEREF1\s4SEQ表\*ARABIC\s12NetcdfDataEncoder类成员方法列表方法返回类型方法描述voidNetcdfDataEncoder(StringfileName)booleanaddGlobalAttr(StringattrName,StringattrVal)voidaddDimension(StringdimName,intdimLen)voidaddVariable(StringvariableName,DataTypedataType,StringdimNameString,ArrayList<Attribute>varAttrs)booleancreateNcFile()booleanclose()booleanWriteData(StringvariableName,Arraydata)方法详情构造函数/***函数描述:构造函数*参数:*fileName:文件名*返回值:无*异常:IOException*/NetcdfDataEncoder(StringfileName)addGlobalAttr/***函数描述:添加全局属性*参数:*attrName:全局属性名称*attrVal:全局属性值*返回值:true-成功false-失败*异常:无*/addGlobalAttr(StringattrName,StringattrVal)addDimension/***函数描述:添加维度*参数:*dimName:维度名称*dimLen:维度长度*返回值:无*异常:Exception*/addDimension(StringdimName,intdimLen)addVariable/***函数描述:添加变量*参数:*variableName:变量名*dataType:变量数据类型*dimNameString:变量维度名称字符串*varAttrs:变量属性*返回值:无*异常:Exception*/addVariable(StringvariableName,DataTypedataType,StringdimNameString,ArrayList<Attribute>varAttrs)createNcFile/***函数描述:生成NC文件*参数:无*返回值:true-成功false-失败*异常:无*/createNcFile()close/***函数描述:关闭文件*参数:无*返回值:true-成功false-失败*异常:无*/publicbooleanclose()WriteData/***函数描述:写入要素变量数据*参数:*variableName:要素变量名称*data:要素数据*返回值:true-成功false-失败*异常:无*/publicbooleanWriteData(StringvariableName,Arraydata)组件接口使用组件推介使用maven工程引用,目前的版本为1.0.0,maven私服仓库地址:<repository> <id>hitec-repos</id> <name>HitecRepository</name> <url>:8081/repository/maven-public/</url></repository>pom.xml中引用组件库<dependency> <groupId>com.hitec.mdac</groupId> <artifactId>dhs-netcdf</artifactId> <version>1.0.0</version></dependency>组件使用详细测试说明如下:packagecdf;importjava.util.ArrayList;importjava.util.Random;importucar.ma2.ArrayFloat;importucar.ma2.DataType;importucar.ma2.Index;importucar.nc2.Attribute;publicclassNetcdfDataEncoderTest{ publicstaticvoidmain(String[]args){ StringncFileName="./test.nc"; try{ //1.构建netcdf文件编码对象 NetcdfDataEncoderncEncoder=newNetcdfDataEncoder(ncFileName); //2.添加nc文件全局属性 ncEncoder.addGlobalAttr("_NCProperties","version=4,netcdf=5.3.3"); //3.添加维度 intlatDimLen=180; intlonDimLen=360; ncEncoder.addDimension("lat",latDimLen); ncEncoder.addDimension("lon",lonDimLen); //4.添加变量 ArrayList<Attribute>varAttrs=newArrayList<Attribute>(); varAttrs.add(newAttribute("long_name","latitude")); varAttrs.add(newAttribute("units","Degrees_north")); ncEncoder.addVariable("lat",DataType.FLOAT,"lat",varAttrs); varAttrs.clear(); varAttrs.add(newAttribute("long_name","longitude")); varAttrs.add(newAttribute("units","Degrees_east")); ncEncoder.addVariable("lon",DataType.FLOAT,"lon",varAttrs); varAttrs.clear(); varAttrs.add(newAttribute("long_name","PRE")); varAttrs.add(newAttribute("units","mm")); ncEncoder.addVariable("PRE",DataType.FLOAT,"latlon",varAttrs); //5.生成nc文件 ncEncoder.createNcFile(); //写入lat变量数据 floatlatStart=-90; floatlatStep=1; ArrayFloatlatVal=newArrayFloat.D1(latDimLen); for(inti=0;i<latDimLen;i++){ latVal.setFloat(i,latStart+i*latStep); } ncEncoder.WriteData("lat",latVal); //写入lon变量数据 floatlonStart=0; floatlonStep=1; ArrayFloatlonVal=newArrayFloat.D1(lonDimLen); for(inti=0;i<lonDimLen;i++){ lonVal.setFloat(i,lonStart+i*lonStep); } ncEncoder.WriteData("lon",lonVal); //写入PRE变量数据 Randomrandom=newRandom(); float[][]preData=newfloat[latDimLen][lonDimLen]; for(inti=0;i<latDimLen;i++){ for(intj=0;j<lonDimLen;j++){ preData[i][j]=random.nextFloat(); } } ArrayFloatpreVal=newArrayFloat.D2(latDimLen,lonDimLen); Indexindex=preVal.getIndex(); for(inti=0;i<latDimLen;i++){ for(intj=0;j<lonDimLen;j++){ preVal.setFloat(index.set(i,j),preData[i][j]); } } ncEncoder.WriteData("PRE",preVal); ncEncoder.close(); }catch(Exceptione){ e.printStackTrace(); } }}HDF解码基础组件组件说明HDF解码基础组件主要用来解析HDF格式数据,目前支持HDF5格式的数据。组件接口描述组件类清单表STYLEREF1\s5SEQ表\*ARABIC\s11HDF组件类清单类名类功能描述HdfDataDecoderHDF解码类HdfDataDncoder类包名com.hitec.dhs.mdac.hdf成员方法列表表STYLEREF1\s5SEQ表\*ARABIC\s12HdfDataDncoder类成员方法列表方法返回类型方法描述voidopen(StringfileName)voidclose()ArrayreadData(StringvarName,Sectionsection)方法详情open/***函数描述:打开文件*参数:*fileName:文件名*返回值:无*异常:IOException,Exception*/open(StringfileName)close/***函数描述:关闭文件*参数:无*返回值:无*异常:无*/publicvoidclose()readData/***函数描述:读取要素变量数据*参数:*varName:要素变量名称*section:读取要素范围*返回值:数据数组*异常:IOException,InvalidRangeException*/readData(StringvarName,Sectionsection)组件接口使用组件推介使用maven工程引用,目前的版本为1.0.0,maven私服仓库地址:<repository> <id>hitec-repos</id> <name>HitecRepository</name> <url>:8081/repository/maven-public/</url></repository>pom.xml中引用组件库<dependency> <groupId>com.hitec.mdac</groupId> <artifactId>dhs-hdf</artifactId> <version>1.0.0</version></dependency>组件使用详细测试说明如下:packagecom.hitec.mdac.dhs.hdf;importjava.io.IOException;importucar.ma2.Section;/***HDF格式解码测试*/publicclassHdfDataDecoderTest{ publicstaticvoidmain(String[]args){ StringfileName="C:\\Users\\wufy\\Desktop\\Z_SATE_C_BAWX_20201125001644_P_FY4A-_AGRI--_N_DISK_1047E_L1-_GEO-_MULT_NOM_20201125000000_20201125001459_4000M_V0001.HDF"; HdfDataDecoderhdfDecoder=newHdfDataDecoder(); try{ hdfDecoder.open(fileName); Sectionsection=newSection(newint[]{2748,2748}); short[]data=(short[])hdfDecoder.readData("ColumnNumber",section).get1DJavaArray(short.class); System.out.println(data[0]); }catch(IOExceptione){ e.printStackTrace(); }catch(Exceptione){ e.printStackTrace(); } }}GRADS解码基础组件组件说明GRADS解码基础组件主要用来解析GRADS格式数据。组件接口描述组件类清单表STYLEREF1\s6SEQ表\*ARABIC\s11GRADS组件类清单类名类功能描述GrADSDecoderGRADS解码类GrADSDecoder类包名com.hitec.dhs.meteodata.nafp.grads成员方法列表表STYLEREF1\s6SEQ表\*ARABIC\s12GrADSDecoder类成员方法列表方法返回类型方法描述ParseResult<com.hitec.dhs.meteodata.nafp.bean.GrADSData>decoder(Stringfilename)ParseResult<com.hitec.dhs.meteodata.nafp.bean.GrADSData>decoder(Filefile)ParseResult<com.hitec.dhs.meteodata.nafp.bean.GrADSData>decoder(byte[]bytes)ParseResult<com.hitec.dhs.meteodata.nafp.bean.GrADSData>decoder(RandomAccessFilerandomAccessFile)方法详情decoder/***函数描述:GrADS数据解析*参数:*fileName:文件绝对路径*返回值:ParseResult<com.hitec.dhs.meteodata.nafp.bean.GrADSData>解码结果集*异常:无*/publicParseResult<com.hitec.dhs.meteodata.nafp.bean.GrADSData>decoder(Stringfilename)decoder/***函数描述:GrADS数据解析*参数:*file:待解码的文件*返回值:ParseResult<com.hitec.dhs.meteodata.nafp.bean.GrADSData>*解码结果集*异常:无*/publicParseResult<com.hitec.dhs.meteodata.nafp.bean.GrADSData>decoder(Filefile)decoder/***函数描述:GrADS数据解析*此接口不适合对外调用,GrADS要根据文件路径寻找ctl描述文件*参数:*bytes:文件字节数据*返回值:ParseResult<com.hitec.dhs.meteodata.nafp.bean.GrADSData>*解码结果集*异常:Exception*/publicParseResult<com.hitec.dhs.meteodata.nafp.bean.GrADSData>decoder(byte[]bytes)decoder/***函数描述:GrADS数据解析*参数:*randomAccessFile:文件对象*返回值:ParseResult<com.hitec.dhs.meteodata.nafp.bean.GrADSData>*解码结果集*异常:Exception*/publicParseResult<com.hitec.dhs.meteodata.nafp.bean.GrADSData>decoder(RandomAccessFilerandomAccessFile)3.3组件接口使用组件推介使用maven工程引用,目前的版本为1.0.0,maven私服仓库地址:<repository> <id>hitec-repos</id> <name>HitecRepository</name> <url>:8081/repository/maven-public/</url></repository>pom.xml中引用组件库<dependency> <groupId>com.hitec.mdac</groupId> <artifactId>dhs-grads</artifactId> <version>1.0.0</version></dependency>组件使用详细测试说明如下:publicstaticvoidmain(String[]args)throwsException{ Stringdat="E:\\CIMISS2\\NAFP\\Z_NAFP_C_BABJ_2019051412_P_CAMS-CPEFS-ANCN_12.dat";IDataDecoder<ParseResult<GrADSData>>decoder=newGrADSDecoder();//打开文件decoder.decoder(dat);//解析文件}AWX解码基础组件组件说明AWX解码基础组件主要用来解析AWX格式数据。组件接口描述组件类清单表STYLEREF1\s7SEQ表\*ARABIC\s11AWX组件类清单类名类功能描述AwxDecoderAWX解码类AwxDecoder类包名com.hitec.dhs.meteodata.sate.awx成员方法列表表STYLEREF1\s7SEQ表\*ARABIC\s12AwxDecoder类成员方法列表方法返回类型方法描述ParseResult<com.hitec.dhs.meteodata.sate.bean.AwxData>decoder(Stringfilename)ParseResult<com.hitec.dhs.meteodata.sate.bean.AwxData>decoder(Filefile)ParseResult<com.hitec.dhs.meteodata.sate.bean.AwxData>decoder(byte[]bytes)ParseResult<com.hitec.dhs.meteodata.sate.bean.AwxData>decoder(RandomAccessFilerandomAccessFile)com.hitec.dhs.meteodata.sate.bean.AwxDatagetAwxData(byte[]bytes)无parseFileBaseInfo(com.hitec.dhs.meteodata.GridDatagridData,com.hitec.dhs.meteodata.sate.bean.AwxHeadLevel2QuantifiedLatticelattice)double[][]parseData(byte[]bytes,com.hitec.dhs.meteodata.sate.bean.AwxHeadLevel2QuantifiedLatticelattice)Stringcom.hitec.dhs.meteodata.sate.bean.AwxHeadLevel1parseHeadLevel1(byte[]bytes)com.hitec.dhs.meteodata.sate.bean.AwxHeadLevel2QuantifiedLatticeparseQuantifiedLattice(byte[]bytes)com.hitec.dhs.meteodata.sate.bean.AwxHeadLevel2QuantifiedLatticeparseStaticSatelliteImage(byte[]bytes)shorttoInt16(byte[]bytes,intoffset)double[][]convert1DTo2D(double[]array1D,intnumRow,intnumLine)doublestringToDouble(Stringvalue)booleanisExistFile(Filefile)方法详情decoder/***函数描述:awx数据解析*参数:*fileName:文件绝对路径*返回值:ParseResult<com.hitec.dhs.meteodata.sate.bean.AwxData>解码结果集*异常:无*/publicParseResult<com.hitec.dhs.meteodata.sate.bean.AwxData>decoder(Stringfilename)decoder/***函数描述:awx数据解析*参数:*file:待解码的文件*返回值:ParseResult<com.hitec.dhs.meteodata.sate.bean.AwxData>*解码结果集*异常:无*/publicParseResult<com.hitec.dhs.meteodata.sate.bean.AwxData>decoder(Filefile)decoder/***函数描述:awx数据解析*参数:*bytes:文件字节数据*返回值:ParseResult<com.hitec.dhs.meteodata.sate.bean.AwxData>*解码结果集*异常:Exception*/publicParseResult<com.hitec.dhs.meteodata.sate.bean.AwxData>decoder(byte[]bytes)decoder/***函数描述:awx数据解析*参数:*randomAccessFile:文件对象*返回值:ParseResult<com.hitec.dhs.meteodata.sate.bean.AwxData>*解码结果集*异常:Exception*/publicParseResult<com.hitec.dhs.meteodata.sate.bean.AwxData>decoder(RandomAccessFilerandomAccessFile)组件接口使用组件推介使用maven工程引用,目前的版本为1.0.0,maven私服仓库地址:<repository> <id>hitec-repos</id> <name>HitecRepository</name> <url>:8081/repository/maven-public/</url></repository>pom.xml中引用组件库<dependency> <groupId>com.hitec.mdac</groupId> <artifactId>dhs-awx</artifactId> <version>1.0.0</version></dependency>组件使用详细测试说明如下:publicstaticvoidmain(String[]args)throwsException{ StringfileName="E:\\CIMISS2\\FY2G\\awx\\SATE_L3_F2G_VISSR_MWB_OTG_CTA-20191018-0600.AWX";StringfileName1="E:\\CIMISS2\\FY2G\\awx\\SATE_L2_F2G_VISSR_MWB_LBT_SEC_LCN-IR1-20200317-0000.AWX";IDataDecoder<ParseResult<AwxData>>awxDecoder=newAwxDecoder();IDataDecoder<ParseResult<AwxData>>awxDecoder1=newAwxDecoder();ParseResult<AwxData>decoder=awxDecoder.decoder(fileName);ParseResult<AwxData>decoder1=awxDecoder1.decoder(fileName1);AwxDataawxData=decoder.getData().get(0);System.out.println(awxData.gridData);System.out.println(decoder1.getData().get(0).toString());}Cressman插值算法组件组件说明Cressman插值组件主要实现通过Cressman插值算法将站点数据插值成格点数据。组件接口描述组件类清单表STYLEREF1\s8SEQ表\*ARABIC\s11Cressman算法类清单类名类功能描述CressmanCressman插值算法类Cressman类包名com.hitec.mdac.dhs.algorithm成员方法列表表STYLEREF1\s8SEQ表\*ARABIC\s12Cressman算法类成员方法列表方法返回类型方法描述booleanInitialize(doubleXlb,doubleYlb,doubleXrt,doubleYrt,doubleXDelt,doubleYDelt)double[][]Execute(List<MPoint>points,doubleundef,List<Double>radlist)方法详情Initialize/***函数描述:初始化函数*参数:*Xlb:x轴左下角值*Ylb:y轴左下角值*Xrt:x轴右上角值*Yrt:x轴右上角值*Xdelt:x方向间隔*Ydelt:y方向间隔*返回值:boolean*异常:无*/publicstaticbooleanInitialize(doubleXlb,doubleYlb,doubleXrt,doubleYrt,doubleXDelt,doubleYDelt)Execute/***函数描述:*参数:*points:数据点*undef:无效值定义*radlist:插值半径*返回值:double[][]*异常:无*/publicstaticdouble[][]Execute(List<MPoint>points,doubleundef,List<Double>radlist)5.3组件接口使用组件推介使用maven工程引用,目前的版本为1.0.0,maven私服仓库地址:<repository> <id>hitec-repos</id> <name>HitecRepository</name> <url>:8081/repository/maven-public/</url></repository>pom.xml中引用组件库<dependency> <groupId>com.hitec.mdac</groupId> <artifactId>dhs-algorithm</artifactId> <version>1.0.0</version></dependency>组件使用详细测试说明如下://主类packagecom.hitec.mdac.dhs.algorithm;importjava.io.IOException;publicclassmainTest{ publicstaticvoidmain(String[]args)throwsIOException{ CressmanTest.TestCressman(); }}//测试类packagecom.hitec.mdac.dhs.algorithm;importjava.io.BufferedReader;importjava.io.File;importjava.io.FileReader;importjava.io.FileWriter;importjava.io.IOException;importjava.util.ArrayList;importjava.util.List;importcom.hitec.mdac.dhs.algorithm.Cressman;importcom.hitec.mdac.dhs.algorithm.MPoint;publicclassCressmanTest{ publicstaticvoidTestCressman()throwsIOException{ System.out.println("组件描述:"+Cressman.s_Strname); //1.初始化参数 doubleXlb=70; doubleXrt=135; doubleYlb=10; doubleYrt=50; doubleXDelt=0.5; doubleYDelt=0.5; doubleundef=99999; List<Double>radlist=newArrayList<Double>(); radlist.add(15.0); radlist.add(12.0); radlist.add(10.0); radlist.add(8.0); radlist.add(5.0); booleanIsInit=Cressman.Initialize(Xlb,Ylb,Xrt,Yrt,XDelt,YDelt); if(IsInit){ System.out.println("1.参数初始化成功!"); //2.加载输入数据 Filedirectory=newFile("."); Stringfn=null; try{ fn=directory.getCanonicalPath(); }catch(IOExceptionex){ } fn=fn+File.separator+"SURF_CHN_MUL_HOR_N.txt";//文件格式,行:测站号|纬度|经度|气温|降水 FileReaderreader=newFileReader(fn); BufferedReaderinput=newBufferedReader(reader); input.readLine(); Stringline=null; List<MPoint>points=newArrayList<MPoint>(); while((line=input.readLine())!=null){ String[]numbers=line.split("\t"); doublex=Double.parseDouble(numbers[2]);//经度 doubley=Double.parseDouble(numbers[1]);//纬度 doubleval=Double.parseDouble(numbers[4]);//numbers[3]:气温;numbers[4]:降水 points.add(newMPoint(x,y,val)); } input.close(); System.out.println("2.输入数据加载成功!"); longst=System.currentTimeMillis();//计时开始 //3.执行处理过程(插值函数) double[][]res=Cressman.Execute(points,undef,radlist); longed=System.currentTimeMillis();//计时结束 System.out.println("3.插值处理完成,耗时:"+(ed-st)+"ms"); //4.插值结果写入文件 inti,j; try{ FilefileOut=newFile("Rain_Cressmen_Java.txt"); FileWriterout=newFileWriter(fileOut);//文件写入流 for(i=0;i<Cressman.Y.length;i++){ for(j=0;j<Cressman.X.length;j++){ if(Math.abs(res[i][j]-undef)<1e-3){ res[i][j]=Double.NaN; } out.write(Cressman.Y[i]+"\t"+Cressman.X[j]+"\t"+res[i][j]+"\n"); } } out.close(); } catch(Exceptione){ System.out.println("写文件出错"); } System.out.println("4.插值结果写入文件成功!"); } else{ System.out.println("1.参数初始化出错!"); return; }}}反距离权重插值组件组件说明反距离权重插值组件主要实现通过反距离权重插值算法将站点数据插值成格点数据。组件接口描述组件类清单表STYLEREF1\s9SEQ表\*ARABIC\s11反距离权重插值组件类清单类名类功能描述IDWRadius反距离权重插值组件类IDWRadius类包名com.hite

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论