赞
踩
NetCDF(network Common Data Form)是一种存储多种特殊数据(变量)的文件格式,如温度、湿度、气压、风速、风向。各种变量可以通过一个维度显示。
NetCDF文件中有多个字段,lat为纬度,lon为经度。其他的字段中有径流量、降水量等数据。
使用函数ncdisp(filename.nc)可以在命令窗口中以文本形式显示NetCDF数据源(source)中的所有组、维度、变量定义和所有属性。
每一个字段对应一个矩阵。类似JPEG形式的影像,每一个像元有一个属性值。使用函数ncread(filename,field)可以把某一字段的数据以字段的形式读取。这样以来,只需要根据lon和lat两个字段的经纬度,对这个矩阵添加地理配准,就能生成Geotiff格式的数据文件。
文件中的lon,lat两个字段储存经纬度数据是以两个一位数组的形式存储的。只需要经纬度的最大最小值就能确定影像的范围和地理位置。用函数georasterref添加地理配准,生成含地理配准的结构体数组R。最后用geotiffwrite函数把结构体数组R写入tiff文件。
完整Matlab代码如下:
clc ncfiles = ncinfo('F:\data\GLDAS_NOAH025_3H.A20141230.2100.020\GLDAS_NOAH025_3H.A20141230.0300.020.nc4'); % ncfiles = dir('F:\data\GLDAS_NOAH025_3H.A20141230.2100.020\GLDAS_NOAH025_3H.A20141230.0300.020.nc4'); N = length(ncfiles.Variables) ;%Variables变量的数量 for i = 1:N disp('成功转换');disp(i); ncfile = ncfiles.Variables(i).Name ; lat = ncread(ncfiles.Filename,'lat') ;%Filename是当前文件名字符型矩阵 lon = ncread(ncfiles.Filename,'lon') ; %%Change lon and lat to double lon = double(lon) ; lat = double(lat) ; A = ncread(ncfiles.Filename,ncfile) ; % A=rot90(A);逆时针旋转90度 A=A';%由于生成的图像倒了,需要转置 % Write the .grd data into geotiff R = georasterref('RasterSize',size(A),'LatitudeLimits',[min(lat),max(lat)],........ 'LongitudeLimits',[min(lon),max(lon)]); tiffile = strcat('F:\data\GLDAS_NOAH025_3H.A20141230.2100.020\GLDAS_NOAH025_3H.A20141230.0300.020.nc4',ncfile,'.tif') ; geotiffwrite(tiffile,A,R);
import arcpy from arcpy import env from arcpy.sa import * # Input data source arcpy.env.workspace = r'F:\seadata\2008peryear\core'#set the worksapce where NetCDF exist arcpy.env.overwriteOutput = True #If the file has already existed, it'll overwrite. # Set output folder OutputFolder = r'F:\seadata\2008peryear\West_pacific\temperature\\' # Loop through a list of files in the workspace NCfiles = arcpy.ListFiles("*.nc") for filename in NCfiles: inNCfiles = arcpy.env.workspace + "/" + filename fileroot = filename[11:17] +'temp' TempLayerFile = "time" outRaster = OutputFolder + "/" + fileroot # Process: Make NetCDF Raster Layer arcpy.MakeNetCDFRasterLayer_md(inNCfiles, "temp", "lon", "lat", TempLayerFile, "", "", "BY_VALUE") # Process: Copy Raster arcpy.CopyRaster_management(TempLayerFile, outRaster + ".tif", "", "", "", "NONE", "NONE", "") print (filename+r" has successfully been processed") print r'all have successfully been processed' print arcpy.GetMessages()
点击 Multidimension Tools toolbox ——Make net CDF Feature Layer,选择文件,再选择想要转换的变量字段,点击OK。
右击图层,点击Data—Export Data,选择保存的形式和位置,点击OK。
net CDF的详细介绍请参阅:
Physical Sciences Laboratory的官方网站
UCAR COMMUNITY PROGRAMS 官网
ArcGIS Resource Center
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。