python - Python Netcfd4 NameError:未定义名称“lat_array”
问题描述
我试图启动一个示例 python 脚本,从 NetCDF4 (.nc) 文件中读取数据,但是当我尝试运行代码时,它给了我一个错误,说名称 lat_array 未定义。该代码是:
#!/usr/bin/python
#=========================================================
from netCDF4 import Dataset
import numpy as np
import matplotlib.pyplot as plt
#=========================================================
# SET TARGET DATA
#=========================================================
day=1
lat_target=45.0
lon_target=360-117.0
#=========================================================
# SET OPENDAP PATH
#=========================================================
pathname = 'http://thredds.northwestknowledge.net:8080/thredds/dodsC/agg_macav2metdata_huss_BNU-ESM_r1i1p1_historical_1950_2005_CONUS_daily.nc'
#=========================================================
# GET DATA HANDLES
#=========================================================
filehandle=Dataset(pathname,'r',format="NETCDF4")
lathandle=filehandle.variables['lat']
lonhandle=filehandle.variables['lon']
timehandle=filehandle.variables['time']
datahandle=filehandle.variables['specific_humidity']
#=========================================================
# GET DATA
#=========================================================
#get data
time_num=len(timehandle)
timeindex=range(day-1,time_num,365) #python starts arrays at 0
time=timehandle[timeindex]
lat = lathandle[:]
lon = lonhandle[:]
#=========================================================
#find indices of target lat/lon/day
lat_index = (np.abs(lat-lat_array)).argmin()
lon_index = (np.abs(lon-lon_array)).argmin()
#check final is in right bounds
if(lat[lat_index]>lat_target):
if(lat_index!=0):
lat_index = lat_index - 1
if(lat[lat_index]<lat_target):
if(lat_index!=len(lat)):
lat_index =lat_index +1
if(lon[lon_index]>lon_target):
if(lon_index!=0):
lon_index = lon_index - 1
if(lon[lon_index]<lon_target):
if(lon_index!=len(lon)):
lon_index = lon_index + 1
lat=lat[lat_index]
lon=lon[lon_index]
#=========================================================
#get data
data = datahandle[timeindex,lat_index,lon_index]
#=========================================================
# MAKE A PLOT
#=========================================================
yearref=1950
years = np.arange(yearref,yearref+len(time))
fig = plt.figure()
ax = fig.add_subplot(111)
ax.set_xlabel(u'Year')
ax.set_ylabel(u'Specific Humidity')
ax.set_title(u'Specific Humidity on Day %d ,\n %4.2f\u00b0N, %4.2f\u00b0W' % (day,lat, abs(360-lon)))
#ax.plot_date(x=time,y=data,fmt="b-")
ax.ticklabel_format(style='plain')
ax.plot(years,data,'b-')
plt.savefig("myPythonGraph.png")
plt.show()
在第 35 行:
#find indices of target lat/lon/day
lat_index = (np.abs(lat-lat_array)).argmin()
它说未定义 lat_array,但在示例中,从未定义过 lat_array!
解决方案
原来,原来的程序员忘记把它改成lat_target
. 所以它基本上lat_target
是代替lat_array
.
推荐阅读
- java - 如何在 Java Swing 应用程序中实现页面?
- python - 为什么用地图对象更新集合会破坏地图对象?
- python - 生成有效 IP 地址列表并在 Python Selenium 循环中随机使用
- assembly - 如何将定义的四元数(8 字节)作为参数传递给 32 位 NASM 程序集中的子程序
- python-3.x - 为什么服务器上的 Python 文件中的 f.write() 不起作用?
- ios - 如何在 Swift 中调整视图高度?
- php - Wordpress remove user registration for custom implementation
- ios - 如何使用 AVAudioPlayer 关闭视频中的音频?
- rest - WebSphere 8.5.5.9 和 Jersey 2.25
- google-maps - 如何在 Flutter 上使用 placeId 获取 Google Place?