我正在开展一个项目,该项目将原始二进制雷达数据从国家气象局 ftp 站点导入服务器。使用天气和气候工具包数据导出工具,我将数据转换为 netCDF 文件。以下是对 .nc 文件执行“ncdump -h”命令的结果:
netcdf last {
dimensions:
lat = 800 ;
lon = 1200 ;
time = 1 ;
variables:
double cref(time, lat, lon) ;
cref:long_name = "Level-III Composite Reflectivity (16 levels / 248 nm)" ;
cref:missing_value = -999. ;
cref:units = "dBZ" ;
double lat(lat) ;
lat:units = "degrees_north" ;
lat:spacing = "0.010995604400775773" ;
lat:datum = "NAD83 - NOAA Standard" ;
double lon(lon) ;
lon:units = "degrees_east" ;
lon:spacing = "0.010983926942902655" ;
lon:datum = "NAD83 - NOAA Standard" ;
int time(time) ;
time:units = "seconds since 1970-1-1" ;
// global attributes:
:title = "Level-III Composite Reflectivity (16 levels / 248 nm) 22:23:47 UTC 10/20/2016" ;
:Conventions = "CF-1.0" ;
:History = "Exported to NetCDF-3 CF-1.0 conventions by the NOAA Weather and Climate Toolkit (version 3.7.9) \n",
"Export Date: Thu Oct 20 16:11:07 EDT 2016" ;
:geographic_datum_ESRI_PRJ = "GEOGCS[\"GCS_North_American_1983\",DATUM[\"D_North_American_1983\",SPHEROID[\"GRS_1980\",6378137,298.257222101]],PRIMEM[\"Greenwich\",0],UNIT[\"Degree\",0.0174532925199433]]" ;
:geographic_datum_OGC_WKT = "GEOGCS[\"NAD83\", DATUM[\"NAD83\", SPHEROID[\"GRS_1980\", 6378137.0, 298.25722210100002],TOWGS84[0,0,0,0,0,0,0]], PRIMEM[\"Greenwich\", 0.0], UNIT[\"degree\",0.017453292519943295], AXIS[\"Longitude\",EAST], AXIS[\"Latitude\",NORTH]]" ;
}
我想找到 cref 变量的最大条目,我可以使用 python 中的 netCDF4 和 numpy 库轻松完成:
import netCDF4
import numpy
netcdf = netCDF4.Dataset("last.nc")
var = netcdf.variables['cref']
print(numpy.nanmax(var))
print(numpy.nanmin(var))
但是,我希望过滤 netCDF 文件,以便仅在给定纬度/经度的一定距离内找到最大值和最小值。换句话说,我希望围绕指定的纬度/经度“裁剪”一个指定半径的圆。我已经找到了如何通过另一个 SO 线程裁剪一个正方形,但无法弄清楚一个圆圈是如何工作的。