我正在尝试从ETOPO1数据中选择地中海的一个区域。
#从netCDF4导入数据集data = Dataset("ETOPO1_Bed_g_gdal.grd",'r') print(data.variables.keys()) #获取数据lon_range = data。变量['x_range'][:] lat_range = data。变量['y_range'][:] topo_range = data。Variables ['z_range'][:] spacing = data。变量['spacing'][:] dimension = data。变量['dimension'][:] z = data。变量['z'][:] lon_num =维度[0]lat_num =维度[1]#准备数组lon_input = np.zero (lon_num);lat_input = np.zero (lat_num) for i in range(lon_num): lon_input[i] = lon_range[0] + i * spacing[0] for i in range(lat_num): lat_input[i] = lat_range[0] + i * spacing[1] #创建2D数组lon, lat = np。meshgrid(lon_input, lat_input) #将2D数组从1D数组转换为z值topo = np。重塑(z, (lat_num, lon_num)) #选择区域lon_idx_min = np.abs(lon_input-12.6).argmin() lon_idx_max = np.abs(lon_input-13.4).argmin() lat_idx_min = np.abs(lat_input-43.8).argmin() lat_idx_max = np.abs(lat_input-44.2).argmin() #获取数据topo[lon_idx_min:lon_idx_max, lat_idx_min:lat_idx_max].data
这将返回一个空数组:
>>array([], shape=(0, 24), dtype=float64)
一个主要问题是:
我做错了什么?当我检查我切片的lat值(lat_input[lat_idx_max]等)时,它们是有意义的。然而,lon_idx_max和lon_idx_min高于len(topo)(11556和11604 vs 10801)。我想这就是问题所在,但我找不到原因。
一个额外的问题:
为什么如果我打开开关,然后我得到一些数据?请注意,数据没有意义(亚得里亚海-4000米…)