有没有人可以帮助我,我从matlab R2013b中的.nc(netcdf)文件中读取数据。 我得到了这种变量
Variables:
time
Size: 1x1
Dimensions: time
Datatype: double
Attributes:
units = 'hours since 0001-01-01 01:00:00.0'
calendar = 'gregorian'
latitude
Size: 801x1
Dimensions: latitude
Datatype: single
Attributes:
units = 'degrees_north'
longitude
Size: 1501x1
Dimensions: longitude
Datatype: single
Attributes:
units = 'degrees_east'
DEN
Size: 1501x801x1
Dimensions: longitude,latitude,time
Datatype: single
Attributes:
least_significant_digit = 1
long_name = 'Density'
units = 'Density Index'
HGH
Size: 1501x801x1
Dimensions: longitude,latitude,time
Datatype: single
Attributes:
least_significant_digit = 1
long_name = 'High level'
units = 'm'
....etc
我需要这样的格式:
longitude, latitude = DEN
.... .... ...
.... .... ...
.... .... ...
所有数据。
我可以读取每个变量,如经度或DEN,但是像DEN和HGH这样有三维我不知道如何从DEN或HGH中经度和纬度合并。
你有什么建议吗,如果你有python或R的解决方案,请给出读取nc文件的方法。
提前致谢
答案 0 :(得分:0)
编辑:拼写错误
我为此推荐Python。
import netCDF4
filename = '/your/filename.nc'
# Read in the file
ncfile = netCDF4.Dataset(filename, 'r')
lat = ncfile.variables['latitude'][:,0]
lon = ncfile.variables['longitude'][:,0]
den = ncfile.variables['DEN'][:,:,0]
nlat, nlon = len(lat), len(lon)
# den is now 2D
for y in range(nlat):
for x in range(nlon):
print('Lat:{0}, Lon:{1}, DEN:{2}'.format(lat[y], lon[x], den[x,y]))
ncfile.close()
答案 1 :(得分:0)
在R中,您可以非常简单地使用包reshape
和ncdf
(在此示例中,由于您未提供netcdf文件,因此我每年都会使用NOAA气温数据集):
library(ncdf)
download.file("ftp://ftp.cdc.noaa.gov/Datasets/ncep/air.2004.nc",destfile="air.nc")
nc <- open.ncdf("air.nc") #Open the netcf file
dat <- get.var.ncdf(nc,'air') #Grabbing the data, in your case replace 'air' with 'DEN'
dat <- dat[,,1,1] #To simulate your 2D data, in your case you already have 2D data so you can skip that
lat <- get.var.ncdf(nc,'lat') #Grabbing the latitude, in your case replace 'lat' with 'latitude'
lon <- get.var.ncdf(nc,'lon') #Grabbing the longitude, in your case replace 'lon' with 'longitude'
此时您的数据是一个具有未命名维度的矩阵。让我们根据您的经度和纬度命名:
colnames(dat) <- lat
rownames(dat) <- lon
然后您正在寻找的只是以下结果:
library(reshape)
melt(dat)