- 积分
- 2415
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2012-11-25
- 最后登录
- 1970-1-1
|
楼主 |
发表于 2014-4-27 20:00:35
|
显示全部楼层
本帖最后由 po_po1 于 2014-4-27 20:01 编辑
1
2 data = numpy.zeros(var.shape)
var[:] = data
另一种赋值方法是使用函数assignValue。同样的,assignValue调用中值必须和 netCDF变量shape相同。
1
2 data = numpy.zeros(var.shape)
var.assignValue(data)
________________________________________
获得一个netCDF变量的值
使用getValue()函数实现。注意值存放在numpy数组中。和赋值一样,有两种方法获得 一个netCDF变量的值。
1
2 NumericArray = var.getValue()
NumericArray - a Numeric Python array object
例如:
1 data = var.getValue()
另一种方法是使用numpy语法。
1
2 data = NetCDFVariable[:]
data - a Numeric Python array object just like the one above
例如:
1 data = var[:]
________________________________________
获得一个netCDF变量的维名字
获得一个netCDF变量的维名字方法和获得一个NetCDF文件的维名字一样。由于 “dimensions”是一个属性,不需要括号。
1 dimNames = NetCDFVariable.dimensions
例如:
1 dimNames = var.dimensions
________________________________________
创建一个netCDF变量属性
通过python自带的setattr()函数创建netCDF变量的属性。注意函数 “getValue”,”assignValue”,”typecode”在python被当做属性,所以创建的变量属性名字 不要和这些函数名字冲突。
setattr(NetCDFVariable, attName, attValue)
NetCDFVariable = a netCDFVariable object
attName - the name of the attribute
attValue - the value of the attribute
例如: attName = "newAtt"
attValue = "newAttValue"
setattr(var, attName, attValue)
________________________________________
获得一个netCDF变量属性值
使用getattr()函数实现。
attData = getattr(NetCDFVariable, attName)
attData - value of the attribute
NetCDFVariable = a netCDFVariable object
attName - the name of the attribute
________________________________________
获得所有变量属性列表
获得一个netCDF变量整个属性列表和获得一个netCDF文件所有全局属性类似。dir()函 数返回属性名字列表。警告:该列表总是包括元素:”assignValue”,”getValue”,”typecode”
1 attList = dir(NetCDFVariable)
________________________________________
代码实例
#-*-coding:utf-8-*-
import numpy as np
from Scientific.IO import NetCDF
#创建NetCDF文件对象
ncfile = NetCDF.NetCDFFile(r'e:\test.nc','w')
#创建变量前,先创建维
ncfile.createDimension('longitude',360)
ncfile.createDimension('latitude',181)
ncfile.createDimension('levelist',37)
ncfile.createDimension('time',24)
#获得NetCDF文件所有维、某一维值
print ncfile.dimensions
print ncfile.dimensions['time']
print ncfile.dimensions.keys()
#创建变量
ncfile.createVariable('ps','d',('longitude','latitude','time',))
ncfile.createVariable('p','d',('longitude','latitude','levelist','time',))
#获得NetCDF变量及其值
print ncfile.variables
print ncfile.variables.keys()
print ncfile.variables['ps']
#创建全局属性
setattr(ncfile, 'Conventions', 'CF-1.0')
setattr(ncfile, 'history', '2013-8-23UTC')
#获得全局属性,及某一全局属性值
print dir(ncfile)
print getattr(ncfile, 'history')
#判断是否存在某一全局属性
if hasattr(ncfile, 'Conventions'):
print 'Conventions exists in ncfile'
#显示将数据写入文件
ncfile.sync()
#获得NetCDF变量对象
ps = ncfile.variables['ps']
p = ncfile.variables['p']
#获得变量的类型及shape
print ps.typecode()
print p.shape
#对与NetCDF变量相同shape的临时数组赋值
data1 = np.zeros(ps.shape)
data2 = np.ones(p.shape)
#对NetCDF变量赋值,两种方法
ps[:] = data1
p.assignValue(data2)
#获得NetCDF变量值,两种方法
psValue = ps[:]
pValue = p.getValue()
#创建NetCDF变量的局部属性
setattr(ps, 'long_name', 'pressure of surface')
setattr(p, 'units', 'hPa')
#获得某一变量属性的值
print getattr(ps, 'long_name')
#获得变量的所有属性
print dir(ps)
#关闭NetCDF文件对象
ncfile.close()
________________________________________
总结:
本文介绍了NetCDF的python接口Scientific.IO.NetCDF模块。模块主要有两个操作对象: NetCDFFile和NetCDFFile.variables[varName]。通过对象的方法实现创建、获得对应维 数、变量名称和值。使用python自带的dir()、setattr()等函数对变量属性和全局属性操作。
|
|