我有一个 netCDF 文件,其中包含多个气旋位置(纬度、经度)和特定时间南半球的气温。
我想要的是从每个气旋位置的中心提取 10 测地线度数(~1110 公里)半径范围内的温度值。这个想法是确定与每个气旋相关的温度值(假设距气旋中心的最大径向距离为 10º),并绘制一个仅包含这些温度值的全局 contourf 地图。
我在这里搜索了很多,但我只找到了适用于与一个特定经纬度中心的距离的代码(比如这个:如何从纬度和经度值的中心位置找到半径内的值)。
我一直在研究如何同时为多个中心应用 Haversine 公式。
import xarray as xr
import numpy as np
import matplotlib.pyplot as plt
d = xr.open_dataset('cyc_temp.nc')
lat = d['lat']
lon = d['lon']
cyc_pos = d['id'][:,:]
temp = d['temp'][:,:]
# Haversine formula
def haversine(lon1, lat1, lon2, lat2):
# convert decimal degrees to radians
lon1 = np.deg2rad(lon1)
lon2 = np.deg2rad(lon2)
lat1 = np.deg2rad(lat1)
lat2 = np.deg2rad(lat2)
# haversine formula
dlon = lon2 - lon1
dlat = lat2 - lat1
a = np.sin(dlat/2)**2 + np.cos(lat1) * np.cos(lat2) * np.sin(dlon/2)**2
c = 2 * np.arcsin(np.sqrt(a))
r = 6371
return c * r
如果有人可以帮助我,我会很感激。
红糖糍粑
相关分类