華信氣象業(yè)務(wù)算法組件庫V1.0使用說明_第1頁
華信氣象業(yè)務(wù)算法組件庫V1.0使用說明_第2頁
華信氣象業(yè)務(wù)算法組件庫V1.0使用說明_第3頁
華信氣象業(yè)務(wù)算法組件庫V1.0使用說明_第4頁
華信氣象業(yè)務(wù)算法組件庫V1.0使用說明_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

氣象業(yè)務(wù)算法基礎(chǔ)組件庫使用說明手冊(cè)華云信息技術(shù)工程有限公司2020年

BUFR解碼基礎(chǔ)組件組件說明BUFR解碼基礎(chǔ)組件主要用來解析國內(nèi)外的BUFR格式數(shù)據(jù),目前支持國外的WMO,NCEP等正式發(fā)布的模板,同時(shí)支持國內(nèi)地面小時(shí)分鐘、酸雨輻射、大氣成分等模板。組件接口描述組件類清單表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/***函數(shù)描述:遍歷BUFR文件中BUFR數(shù)據(jù)集及Message*參數(shù):*raf:文件對(duì)象*返回值:返回Message數(shù)據(jù)集*異常:無*/publicjava.util.List<Message>bufrFileScanner(com.hitec.ucar.unidata.io.RandomAccessFileraf)decodeBufrMessage/***函數(shù)描述:解析BUFR數(shù)據(jù)集中的氣象要素以及質(zhì)量控制碼*參數(shù):*message:bufrFileScanner解析后的message*raf:文件對(duì)象*返回值:返回氣象要素集合*異常:無*/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>組件使用詳細(xì)測試說明如下:publicstaticvoidmain(String[]args)throwsException{ BUFRDecoderbufrDecoder=newBUFRDecoder(); //BUFR數(shù)據(jù)文件 RandomAccessFilerandomAccessFile=newRandomAccessFile("D:\\cmadass\\testdata\\A_ISCC01RPMM050000CCA_C_BABJ_20201005002711_41566.bin","r"); //獲取BUFRMessage,每一個(gè)Message為一個(gè)站點(diǎn)數(shù)據(jù)數(shù)據(jù)集 List<Message>messages=bufrDecoder.bufrFileScanner(randomAccessFile); //獲取第一個(gè)數(shù)據(jù)集 Messagemessage=messages.get(0); //ids為BUFR第一段的描述信息,BUFR主表標(biāo)志,使用標(biāo)準(zhǔn)的WMOFM-94BUFR表 message.ids.getMasterTableId(); //數(shù)據(jù)源中心 message.ids.getCenterId(); //數(shù)據(jù)源子中心 message.ids.getSubCenterId(); //數(shù)據(jù)類型 message.ids.getCategory(); //國際數(shù)據(jù)子類型 message.ids.getSubCategory(); //國內(nèi)數(shù)據(jù)子類型 message.ids.getLocalSubCategory(); //BUFR主表的版本號(hào) message.ids.getMasterTableVersion(); //本地表版本號(hào) message.ids.getLocalTableVersion(); //第三段數(shù)據(jù)模板描述符 List<DataDescriptor>dataDescriptors=message.getMessageRootDataDescriptor(); //解析Message List<List<DataDescriptor>>dList=bufrDecoder.decodeBufrMessage(message,randomAccessFile); //解析出來的要素 for(List<DataDescriptor>list:dList){ for(DataDescriptordataDescriptor:list){ //為質(zhì)控碼及緊跟后面要素的質(zhì)控碼 if(dataDescriptor.getFxyName().equalsIgnoreCase("0-31-22")){ }else{ //要素的數(shù)據(jù)描述符 System.out.println(dataDescriptor.getFxyName()); //數(shù)據(jù)編碼基準(zhǔn)值 System.out.println(dataDescriptor.refVal); //數(shù)據(jù)解碼要素值 System.out.println(dataDescriptor.value); //數(shù)據(jù)編碼寬度 System.out.println(dataDescriptor.getBitWidth()); //數(shù)據(jù)縮放比例 System.out.println(dataDescriptor.getScale()); } } }GRIB格式解碼基礎(chǔ)組件組件說明GRIB1格式解碼基礎(chǔ)組件主要用來解析GRIB1/GRIB2格式數(shù)據(jù)。組件接口描述組件類清單表STYLEREF1\s2SEQ表\*ARABIC\s11GRIB組件類清單類名類功能描述Grib1FileReaderGRIB1格式解碼類Grib2FileReaderGRIB2格式解碼類Grib1FileReader類包名com.hitec.mdac.dhs.grib成員方法列表表STYLEREF1\s2SEQ表\*ARABIC\s12Grib1FileReader類成員方法列表方法返回類型方法描述List<Grib1Record>getRecords(RandomAccessFilerandomAccessFile)MeteoGridDatagetMeteoGridData(Grib1Recordgrib1Record,RandomAccessFilerandomAccessFile)方法詳情getRecords/***函數(shù)描述:遍歷GRIB1文件獲取Grib1Record記錄列表*參數(shù):*randomAccessFile:文件對(duì)象*返回值:返回Grib1Record記錄數(shù)據(jù)集*異常:Exception*/publicList<Grib1Record>getRecords(RandomAccessFilerandomAccessFile)getMeteoGridData/***函數(shù)描述:將Grib1Record記錄轉(zhuǎn)換為MeteoGridData網(wǎng)格數(shù)據(jù)*參數(shù):*grib1Record:Grib1Record記錄信息*randomAccessFile:文件對(duì)象*返回值:返回氣象網(wǎng)格數(shù)據(jù)對(duì)象*異常: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/***函數(shù)描述:遍歷GRIB2文件獲取Grib2Record記錄列表*參數(shù):*randomAccessFile:文件對(duì)象*返回值:返回Grib2Record記錄數(shù)據(jù)集*異常:Exception*/publicList<Grib2Record>getRecords(RandomAccessFilerandomAccessFile)getRecords/***函數(shù)描述:遍歷GRIB2文件獲取Grib2Record記錄列表*參數(shù):*filename:文件名*返回值:返回Grib2Record記錄數(shù)據(jù)集*異常:Exception*/publicList<Grib2Record>getRecords(Stringfilename)GRIB2Dump/***函數(shù)描述:查看GRIB2文件的基本信息*參數(shù):*filename:文件名*返回值:無*異常:Exception*/publicvoidGRIB2Dump(Stringfilename,Stringout)getMeteoGridData/***函數(shù)描述:將Grib2Record記錄轉(zhuǎn)換為MeteoGridData網(wǎng)格數(shù)據(jù)*參數(shù):*grib2Record:Grib2Record記錄信息*randomAccessFile:文件對(duì)象*返回值:返回氣象網(wǎng)格數(shù)據(jù)對(duì)象*異常: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>組件使用詳細(xì)測試說明如下: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"; //構(gòu)建GRIB2文件解碼對(duì)象 Grib2FileReadergribFileReader=newGrib2FileReader(); try{ //獲取GRIB2文件的基本信息 gribFileReader.GRIB2Dump(filename,""); //獲取Grib2Record記錄列表 List<Grib2Record>grib2Records=gribFileReader.getRecords(filename); System.out.println(grib2Records.size()); for(Grib2Recordgrib2Record:grib2Records){ //輸出Grib2Record記錄數(shù)據(jù) System.out.println(grib2Record.toString()); } }catch(Exceptione){ e.printStackTrace(); } }}NETCDF解碼基礎(chǔ)組件組件說明NETCDF解碼基礎(chǔ)組件主要用來解析NETCDF格式數(shù)據(jù),目前支持NETCDF3/NETCDF4格式的數(shù)據(jù)。組件接口描述組件類清單表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/***函數(shù)描述:打開文件,并讀取全局屬性、維度列表、變量名列表*參數(shù):*fileName:打開文件名*返回值:無*異常:無*/voidopen(StringfileName)close/***函數(shù)描述:關(guān)閉打開文件*參數(shù):*返回值:無*異常:無*/voidclose()getData/***函數(shù)描述:獲取指定要素變量的數(shù)據(jù)*參數(shù):*varName:要素變量名*返回值:float[]*異常:Exception*/publicfloat[]getData(StringvarName)getData/***函數(shù)描述:讀取指定形狀的要素?cái)?shù)據(jù)*參數(shù):*varName:要素變量名*origin:讀取要素?cái)?shù)據(jù)的起始位置*shape:讀取要素?cái)?shù)據(jù)的長度*返回值:float[]*異常:IOException;InvalidRangeException*/publicfloat[]getData(StringvarName,int[]origin,int[]shape)getData/***函數(shù)描述:獲取格點(diǎn)要素場數(shù)據(jù)*參數(shù):*userEleName:面向用戶的要素名稱*varName:要素長名*dimVarVal:要素變量維度名值對(duì)<維度名,維度值>,經(jīng)緯度除外*retGridScalar2D返回讀取要素格點(diǎn)場數(shù)據(jù)*返回值:0-成功-1-失敗*異常:IOException;InvalidRangeException*/publicintgetData(StringuserEleName,StringvarName,HashMap<String,String>dimVarVal,com.hitec.dhs.meteodata.RetGridVector2DretGridScalar2D)getData/***函數(shù)描述:獲取格點(diǎn)矢量場數(shù)據(jù)*參數(shù):*userEleName:面向用戶的U分量要素名稱*uVarName:U分量要素變量名稱*vUserEleName:面向用戶的V分量要素名稱*vVarName:V分量要素變量名稱*dimVarVal:要素變量維度名值對(duì)<維度名,維度值>,經(jīng)緯度除外*retGridVector2D返回讀取要素格點(diǎn)場數(shù)據(jù)*返回值:0-成功-1-失敗*異常:IOException;InvalidRangeException*/publicintgetData(StringuUserEleName,StringuVarName,StringvUserEleName,StringvVarName,HashMap<String,String>dimVarVal,com.hitec.dhs.meteodata.RetGridVector2DretGridVector2D)getData/***函數(shù)描述:獲取要素變量數(shù)據(jù)*參數(shù):*varName:要素變量名稱*dimVarVal:要素變量維度名值對(duì)<維度名,維度值>,經(jīng)緯度除外*units:存儲(chǔ)要素單位*返回值:float[]成功返回要素變量數(shù)據(jù),失敗返回null*異常:IOException;InvalidRangeException*/publicfloat[]getData(StringvarName,HashMap<String,String>dimVarVal,StringBufferunits)getGolbalAttributes/***函數(shù)描述:獲取文件全局屬性*參數(shù):*返回值:HashMap<String,String>全局屬性列表*異常:無*/publicHashMap<String,String>getGolbalAttributes()getDimensions/***函數(shù)描述:獲取維度信息*參數(shù):*返回值:ArrayList<Dimension>維度列表*異常:無*/publicArrayList<Dimension>getDimensions()getVariableName/***函數(shù)描述:獲取變量名稱*參數(shù):*返回值: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>組件使用詳細(xì)測試說明如下: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格式數(shù)據(jù)解碼測試**/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編碼基礎(chǔ)組件組件說明NETCDF編碼基礎(chǔ)組件主要用來NETCDF格式數(shù)據(jù)文件的生成,目前支持NETCDF4格式的數(shù)據(jù)。組件接口描述組件類清單表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)方法詳情構(gòu)造函數(shù)/***函數(shù)描述:構(gòu)造函數(shù)*參數(shù):*fileName:文件名*返回值:無*異常:IOException*/NetcdfDataEncoder(StringfileName)addGlobalAttr/***函數(shù)描述:添加全局屬性*參數(shù):*attrName:全局屬性名稱*attrVal:全局屬性值*返回值:true-成功false-失敗*異常:無*/addGlobalAttr(StringattrName,StringattrVal)addDimension/***函數(shù)描述:添加維度*參數(shù):*dimName:維度名稱*dimLen:維度長度*返回值:無*異常:Exception*/addDimension(StringdimName,intdimLen)addVariable/***函數(shù)描述:添加變量*參數(shù):*variableName:變量名*dataType:變量數(shù)據(jù)類型*dimNameString:變量維度名稱字符串*varAttrs:變量屬性*返回值:無*異常:Exception*/addVariable(StringvariableName,DataTypedataType,StringdimNameString,ArrayList<Attribute>varAttrs)createNcFile/***函數(shù)描述:生成NC文件*參數(shù):無*返回值:true-成功false-失敗*異常:無*/createNcFile()close/***函數(shù)描述:關(guān)閉文件*參數(shù):無*返回值:true-成功false-失敗*異常:無*/publicbooleanclose()WriteData/***函數(shù)描述:寫入要素變量數(shù)據(jù)*參數(shù):*variableName:要素變量名稱*data:要素?cái)?shù)據(jù)*返回值: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>組件使用詳細(xì)測試說明如下: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.構(gòu)建netcdf文件編碼對(duì)象 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變量數(shù)據(jù) 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變量數(shù)據(jù) 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變量數(shù)據(jù) 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解碼基礎(chǔ)組件組件說明HDF解碼基礎(chǔ)組件主要用來解析HDF格式數(shù)據(jù),目前支持HDF5格式的數(shù)據(jù)。組件接口描述組件類清單表STYLEREF1\s5SEQ表\*ARABIC\s11HDF組件類清單類名類功能描述HdfDataDecoderHDF解碼類HdfDataDncoder類包名com.hitec.dhs.mdac.hdf成員方法列表表STYLEREF1\s5SEQ表\*ARABIC\s12HdfDataDncoder類成員方法列表方法返回類型方法描述voidopen(StringfileName)voidclose()ArrayreadData(StringvarName,Sectionsection)方法詳情open/***函數(shù)描述:打開文件*參數(shù):*fileName:文件名*返回值:無*異常:IOException,Exception*/open(StringfileName)close/***函數(shù)描述:關(guān)閉文件*參數(shù):無*返回值:無*異常:無*/publicvoidclose()readData/***函數(shù)描述:讀取要素變量數(shù)據(jù)*參數(shù):*varName:要素變量名稱*section:讀取要素范圍*返回值:數(shù)據(jù)數(shù)組*異常: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>組件使用詳細(xì)測試說明如下: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解碼基礎(chǔ)組件組件說明GRADS解碼基礎(chǔ)組件主要用來解析GRADS格式數(shù)據(jù)。組件接口描述組件類清單表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/***函數(shù)描述:GrADS數(shù)據(jù)解析*參數(shù):*fileName:文件絕對(duì)路徑*返回值:ParseResult<com.hitec.dhs.meteodata.nafp.bean.GrADSData>解碼結(jié)果集*異常:無*/publicParseResult<com.hitec.dhs.meteodata.nafp.bean.GrADSData>decoder(Stringfilename)decoder/***函數(shù)描述:GrADS數(shù)據(jù)解析*參數(shù):*file:待解碼的文件*返回值:ParseResult<com.hitec.dhs.meteodata.nafp.bean.GrADSData>*解碼結(jié)果集*異常:無*/publicParseResult<com.hitec.dhs.meteodata.nafp.bean.GrADSData>decoder(Filefile)decoder/***函數(shù)描述:GrADS數(shù)據(jù)解析*此接口不適合對(duì)外調(diào)用,GrADS要根據(jù)文件路徑尋找ctl描述文件*參數(shù):*bytes:文件字節(jié)數(shù)據(jù)*返回值:ParseResult<com.hitec.dhs.meteodata.nafp.bean.GrADSData>*解碼結(jié)果集*異常:Exception*/publicParseResult<com.hitec.dhs.meteodata.nafp.bean.GrADSData>decoder(byte[]bytes)decoder/***函數(shù)描述:GrADS數(shù)據(jù)解析*參數(shù):*randomAccessFile:文件對(duì)象*返回值:ParseResult<com.hitec.dhs.meteodata.nafp.bean.GrADSData>*解碼結(jié)果集*異常: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>組件使用詳細(xì)測試說明如下: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解碼基礎(chǔ)組件組件說明AWX解碼基礎(chǔ)組件主要用來解析AWX格式數(shù)據(jù)。組件接口描述組件類清單表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/***函數(shù)描述:awx數(shù)據(jù)解析*參數(shù):*fileName:文件絕對(duì)路徑*返回值:ParseResult<com.hitec.dhs.meteodata.sate.bean.AwxData>解碼結(jié)果集*異常:無*/publicParseResult<com.hitec.dhs.meteodata.sate.bean.AwxData>decoder(Stringfilename)decoder/***函數(shù)描述:awx數(shù)據(jù)解析*參數(shù):*file:待解碼的文件*返回值:ParseResult<com.hitec.dhs.meteodata.sate.bean.AwxData>*解碼結(jié)果集*異常:無*/publicParseResult<com.hitec.dhs.meteodata.sate.bean.AwxData>decoder(Filefile)decoder/***函數(shù)描述:awx數(shù)據(jù)解析*參數(shù):*bytes:文件字節(jié)數(shù)據(jù)*返回值:ParseResult<com.hitec.dhs.meteodata.sate.bean.AwxData>*解碼結(jié)果集*異常:Exception*/publicParseResult<com.hitec.dhs.meteodata.sate.bean.AwxData>decoder(byte[]bytes)decoder/***函數(shù)描述:awx數(shù)據(jù)解析*參數(shù):*randomAccessFile:文件對(duì)象*返回值:ParseResult<com.hitec.dhs.meteodata.sate.bean.AwxData>*解碼結(jié)果集*異常: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>組件使用詳細(xì)測試說明如下: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插值組件主要實(shí)現(xiàn)通過Cressman插值算法將站點(diǎn)數(shù)據(jù)插值成格點(diǎn)數(shù)據(jù)。組件接口描述組件類清單表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/***函數(shù)描述:初始化函數(shù)*參數(shù):*Xlb:x軸左下角值*Ylb:y軸左下角值*Xrt:x軸右上角值*Yrt:x軸右上角值*Xdelt:x方向間隔*Ydelt:y方向間隔*返回值:boolean*異常:無*/publicstaticbooleanInitialize(doubleXlb,doubleYlb,doubleXrt,doubleYrt,doubleXDelt,doubleYDelt)Execute/***函數(shù)描述:*參數(shù):*points:數(shù)據(jù)點(diǎn)*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>組件使用詳細(xì)測試說明如下://主類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.初始化參數(shù) 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.參數(shù)初始化成功!"); //2.加載輸入數(shù)據(jù) Filedirectory=newFile("."); Stringfn=null; try{ fn=directory.getCanonicalPath(); }catch(IOExceptionex){ } fn=fn+File.separator+"SURF_CHN_MUL_HOR_N.txt";//文件格式,行:測站號(hào)|緯度|經(jīng)度|氣溫|降水 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]);//經(jīng)度 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.輸入數(shù)據(jù)加載成功!"); longst=System.currentTimeMillis();//計(jì)時(shí)開始 //3.執(zhí)行處理過程(插值函數(shù)) double[][]res=Cressman.Execute(points,undef,radlist); longed=System.currentTimeMillis();//計(jì)時(shí)結(jié)束 System.out.println("3.插值處理完成,耗時(shí):"+(ed-st)+"ms"); //4.插值結(jié)果寫入文件 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("寫文件出錯(cuò)"); } System.out.println("4.插值結(jié)果寫入文件成功!"); } else{ System.out.println("1.參數(shù)初始化出錯(cuò)!"); return; }}}反距離權(quán)重插值組件組件說明反距離權(quán)重插值組件主要實(shí)現(xiàn)通過反距離權(quán)重插值算法將站點(diǎn)數(shù)據(jù)插值成格點(diǎn)數(shù)據(jù)。組件接口描述組件類清單表STYLEREF1\s9SEQ表\*ARABIC\s11反距離權(quán)重插值組件類清單類名類功能描述IDWRadius反距離權(quán)重插值組件類IDWRadius類包名com.hite

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論