Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Python绘制二级NEXRAD雷达数据-TypeError:&x27;面具';对象不可调用_Python_Arrays_Matplotlib_Netcdf - Fatal编程技术网

用Python绘制二级NEXRAD雷达数据-TypeError:&x27;面具';对象不可调用

用Python绘制二级NEXRAD雷达数据-TypeError:&x27;面具';对象不可调用,python,arrays,matplotlib,netcdf,Python,Arrays,Matplotlib,Netcdf,大家好,我的社区 我是一名Python新手程序员(Python 3.8.1),希望在绘制NEXRAD 2级雷达图像方面获得一些帮助,这些图像是我从NOAA天气和气候工具包(我相信是网格化的NetCDF3文件)导出的,位于我使用basemap 1.2.1创建的底图之上。我在终端窗口(Mac OS Mojave 10.14.6)上通过miniconda使用Jupyter笔记本运行代码 下面是我的代码的第一部分,它定义了基础地图,并成功地沿着海岸线和纬度/经度线绘制了它(请注意,基础地图声明的坐标将绘

大家好,我的社区

我是一名Python新手程序员(Python 3.8.1),希望在绘制NEXRAD 2级雷达图像方面获得一些帮助,这些图像是我从NOAA天气和气候工具包(我相信是网格化的NetCDF3文件)导出的,位于我使用basemap 1.2.1创建的底图之上。我在终端窗口(Mac OS Mojave 10.14.6)上通过miniconda使用Jupyter笔记本运行代码

下面是我的代码的第一部分,它定义了基础地图,并成功地沿着海岸线和纬度/经度线绘制了它(请注意,基础地图声明的坐标将绘图绑定到南加州)

现在,这里是我的代码的第二部分,它将读取我从NOAA天气和气候工具包导出的网格化NetCDF3 NEXRAD文件(注意:该文件只有一个时间步)。在进行任何打印之前,代码停止

import netCDF4 as nc4
#-----------------------------------------------------------------------------------
#NEXRAD lvl 2 plotting using NetCDF file
#Read in NetCDF file variables: lat, lon, time, reflect. 
nc_file = nc4.Dataset('/Users/mariandob/Desktop/my-notebook/KNKX_V03_20120325_232219.nc', format='NETCDF3_CLASSIC')
nc_lat  = nc_file.variables['lat'][:]
nc_lon  = nc_file.variables['lon'][:]
nc_time = nc_file.variables['time'][:]
nc_reflect = nc_file.variables['Reflectivity'][:] 

lon,lat = np.meshgrid(nc_lon,nc_lat) #Unsure if this is necessary. 
#I believe each variable is 1-dimensional
#so I think doing this makes the lat/lon variables into 2-dimensional arrays 
#which is necessary for plotting.

x,y = map(lon,lat) #ERROR OCCURS HERE: TypeError: 'MaskedArray' object is not callable
我发现了一篇关于使用python绘制NetCDF文件的博文。本文作者使用发生错误的行将NetCDF文件的lat/lon坐标与basemap投影中的坐标相匹配。但是,当我尝试执行此操作时,会出现错误
“TypeError:'MaskedArray'对象不可调用”
。我尝试将屏蔽数组转换为numpy.ndarray,方法是用“0”填充屏蔽值,但似乎numpy数组也不可调用。我也不确定用“0”填充这些屏蔽值是否是一个好主意,但是我想测试一下,看看是否可以生成一个输出图(我不能)

有人知道我可能做错了什么吗?此外,是否有人能够提供以下信息:一旦找到解决此错误的方法,什么命令(pcolor、pcolormesh、fcontour?)将允许我绘制图像。从我在互联网上收集到的信息来看,与下面发布的代码相比,这个问题似乎与NEXRAD NetCDF文件本身更相关


感谢您提供任何链接、知识和/或其他帮助。如果这篇文章提供了太多和/或不相关的详细信息,我深表歉意。

您遇到了名称空间冲突
map
是一个Python标准函数,它接受两个函数并将一个函数的输出运行到另一个函数的输入,从而将它们粘合在一起

您已将
map
重新用作变量名。更改变量名

import netCDF4 as nc4
#-----------------------------------------------------------------------------------
#NEXRAD lvl 2 plotting using NetCDF file
#Read in NetCDF file variables: lat, lon, time, reflect. 
nc_file = nc4.Dataset('/Users/mariandob/Desktop/my-notebook/KNKX_V03_20120325_232219.nc', format='NETCDF3_CLASSIC')
nc_lat  = nc_file.variables['lat'][:]
nc_lon  = nc_file.variables['lon'][:]
nc_time = nc_file.variables['time'][:]
nc_reflect = nc_file.variables['Reflectivity'][:] 

lon,lat = np.meshgrid(nc_lon,nc_lat) #Unsure if this is necessary. 
#I believe each variable is 1-dimensional
#so I think doing this makes the lat/lon variables into 2-dimensional arrays 
#which is necessary for plotting.

x,y = map(lon,lat) #ERROR OCCURS HERE: TypeError: 'MaskedArray' object is not callable