我想选择一个地区的地中海ETOPO1数据。
#深度测量法从netCDF4导入数据集数据=数据集(“ETOPO1_Bed_g_gdal.grd”、“r”)打印(data.variables.keys ()) # lon_range =数据获取数据。变量[' x_range '] [:] lat_range =数据。变量[' y_range '] [:] topo_range =数据。变量[' z_range '][:]间距=数据。变量=[“间距”][:]维度数据。变量(“维度”][:]z =数据。变量[' z '] [:] lon_num维度[0]= lat_num =维度[1]#准备数组lon_input = np.zeros (lon_num);lat_input = np.zeros (lat_num)我的范围(lon_num): lon_input[我]= lon_range [0] + i *间距[0]我的范围(lat_num): lat_input[我]= lat_range [0] + i *间距[1]#创建二维数组经度,纬度= np。meshgrid (lon_input lat_input) # 2 d数组从一维数组转换为z值威尼斯平底渔船= 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() #威尼斯平底渔船获取数据(lon_idx_min: lon_idx_max lat_idx_min: lat_idx_max] . data
这将返回一个空数组:
> >阵列([],形状= (0,24),dtype = float64)
一个主要的问题:
1 -我做错了什么?当我检查经度纬度值我切片(lat_input [lat_idx_max]等)他们是有意义的。然而,lon_idx_max lon_idx_min高于len(威尼斯平底渔船)(11556 vs 10801和11604年)。我想这是问题,但我不能找到它的原因。
一个额外的问题:
2 -如果我为什么翻转经度和纬度给我一些数据吗?注意,数据没有意义(-4000米在亚得里亚海…)