我想用basemap-python绘制等高线图。我使用了轮廓和轮廓函数,我有陆地上的数据,但我想屏蔽这些数据。轮廓是用底图自我掩盖的,但轮廓不是?如何像contourf一样屏蔽等高线图? 这里是图片链接:https://pasteboard.co/Iegz6ql.png
在用 global_land_mask 屏蔽您想要的陆地或海洋数据(请原谅忘记原始线程)之后,我有很长的路要在底图中绘制轮廓,如下所示。我也在寻找最快的方法来做到这一点。也许我们这里的朋友可以帮助我们。
import numpy as np
import glob
from global_land_mask import globe
##### searching current folder path
path0 = os.getcwd()
print(path0)
################################################
path1=path0+'/50-Merging/'
##os.makedirs(os.path.dirname(path1), exist_ok=True)
path3=path0+'/90-Masking-OCEAN/'
os.makedirs(os.path.dirname(path3), exist_ok=True)
folder1=glob.glob(path1+'Corr-*.dat')
#folder1=glob.glob(path1+'Corr-APR.dat')
for files1 in folder1:
print (files1)
dates=files1[-7:-4]
print(dates)
data4=np.loadtxt(files1)
lat=data4[:,0]
lon=data4[:,1]
rain_ave=data4[:,2]
print(max(rain_ave))
lat_min=min(lat)
lat_max=max(lat)
lon_min=min(lon)
lon_max=max(lon)
lats=[]
lons=[]
# for y,x in zip(lat,lon):
# land=globe.is_land(y,x)
# if land == True:
# lats.append(y)
# lons.append(x)
for y,x in zip(lat,lon):
ocean=globe.is_ocean(y,x)
if ocean == True:
lats.append(y)
lons.append(x)
in_lats1=lats
in_lons1=lons
########## methods finding 3rd value using closer points #################
ind=[]
for i in range(len(in_lats1)):
dist=(lat-in_lats1[i])**2+(lon-in_lons1[i])**2
ind.append(np.where(dist==np.min(dist))[0][0])
lat2=lat[ind]
lon2=lon[ind]
param_model2=rain_ave[ind]
data3=np.array([lat2,lon2,param_model2])
data3=np.transpose(data3)
fmt1='%s'
np.savetxt(path3+'90-Masking-OCEAN-'+dates+'.dat',data3,fmt=fmt1,delimiter='\t')