資源簡介
基于netcdfAll-4.2.jar 讀取氣象科學(xué)數(shù)據(jù)(.nc格式)文件,解析數(shù)據(jù)內(nèi)容后,通過GDAL解析生成tiff文件,tiff文件的灰度值就是對于氣象科學(xué)數(shù)據(jù)的監(jiān)測值,基于tiff數(shù)據(jù),結(jié)合gis軟件,可以生產(chǎn)在b/s瀏覽的地圖圖層,可實(shí)現(xiàn)基于地圖,展示氣象科學(xué)數(shù)據(jù)。

代碼片段和文件信息
import?java.io.IOException;
import?org.gdal.gdal.Dataset;
import?org.gdal.gdal.gdal;
import?org.gdal.osr.osr;
import?ucar.ma2.ArrayDouble;
import?ucar.ma2.ArrayFloat;
import?ucar.nc2.NetcdfFile;
import?ucar.nc2.Variable;
import?util.GdalUtil;
public?class?NcData?{
public?static?void?main(String?args[])?throws?Exception?{
String?filename?=?“E://項(xiàng)目/36國家山洪災(zāi)害/氣象nc數(shù)據(jù)展示/小時(shí)雨量/Z_SURF_C_BABJ_20170809044642_P_CMPA_RT_CHN_0P05_HOR-PRE-2017080904.nc“;
String?fileout?=?“E:/test/A.tif“;
float[]?rainIn?=?null;
double[]?latsIn?=?null;
double[]?lonsIn?=?null;
NetcdfFile?dataFile?=?null;
try?{
dataFile?=?NetcdfFile.open(filename?null);
Variable?latVar?=?dataFile.findVariable(“l(fā)atitude“);
if?(latVar?==?null)?{
System.out.println(“Cant?find?Variable?latitude“);
return;
}
Variable?lonVar?=?dataFile.findVariable(“l(fā)ongitude“);
if?(lonVar?==?null)?{
System.out.println(“Cant?find?Variable?longitude“);
return;
}
Variable?rainVar?=?dataFile.findVariable(“rain“);
if?(rainVar?==?null)?{
System.out.println(“Cant?find?Variable?rain“);
return;
}
if?(latVar.getDimensions().size()?!=?1)?{
System.out.println(“?fail?to?get?the?dimensions?of?variable?latitude“);
return;
}
//?Read?the?latitude?and?longitude?coordinate?variables?into?arrays
//?latsIn?and?lonsIn.
ArrayDouble.D1?latArray;
ArrayDouble.D1?lonArray;
latArray?=?(ArrayDouble.D1)?latVar.read();
lonArray?=?(ArrayDouble.D1)?lonVar.read();
int[]?shape?=?latArray.getShape();
latsIn?=?new??double[shape[0]];
for?(int?i?=?0;?i? latsIn[i]?=?latArray.get(i);
}
shape?=?lonArray.getShape();
lonsIn?=?new?double[shape[0]];
for?(int?j?=?0;?j? lonsIn[j]?=?lonArray.get(j);
}
ArrayFloat.D3?rainArray;
rainArray?=?(ArrayFloat.D3)?rainVar.read();
int?xSize?=?lonsIn.length;
int?ySize?=?latsIn.length;
rainIn?=new?float[xSize*ySize];
for?(int?i?=?0;?i? for?(int?j?=?0;?j? rainIn[(ySize-i-1)*xSize+?j]?=?rainArray.get(0i?j);
}
}
GdalUtil.gdalInit();
org.gdal.gdal.Driver?driver?=?gdal.GetDriverByName(“GTiff“);
double?xllcorner?=?lonsIn[0];
double?xcellsize?=?(lonsIn[lonsIn.length-1]?-?lonsIn[0])/xSize;
double?ycellsize?=?(latsIn[latsIn.length-1]?-?latsIn[0])/ySize;
double?yllcorner?=latsIn[latsIn.length-1]?;
Dataset?dataset?=?driver.Create(fileout?xSize?ySize?1?gdal.GetDataTypeByName(“Float32“));
dataset.SetGeoTransform(new?double[]{xllcornerxcellsize0yllcorner0-ycellsize});
dataset.SetProjection(osr.SRS_WKT_WGS84);
dataset.GetRasterBand(1).SetNoDataValue(0);
dataset.GetRasterBand(1).WriteRaster(0?0xSize?ySize??rainIn);
dataset.FlushCache();
String?gdalwarpPath =?“D:/java/gdalwarp.exe?--config?GDAL_FILENAME_IS_UTF8?NO“;?//通過配置文件配置
String?chinaRegion?=?“E:/te
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件???11880607??2017-08-11?17:19??netcdfAll-4.2.jar
?????文件?????134672??2017-08-21?13:40??gdal.jar
?????文件???????3710??2017-08-21?15:30??NcData.java
-----------?---------??----------?-----??----
?????????????12018989????????????????????3
評論
共有 條評論