【发布时间】:2020-11-15 11:33:44
【问题描述】:
我有一个 netCDF 文件,其中包含多个旋风位置(纬度、经度)和特定时间南半球的气温。
我想要的是提取距离每个气旋位置中心10测地线(~1110公里)半径内的温度值。我们的想法是识别与每个旋风分离器相关的温度值(假设距旋风分离器中心的最大径向距离为 10º)并绘制一个仅包含这些温度值的全局轮廓图。
我在这里进行了很多搜索,但我只找到了适用于距一个特定纬度中心的距离的代码(例如:how to find values within a radius from a central position of latitude and longitude value)。
我陷入了如何一次对多个中心应用 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
如果有人可以帮助我,我会很感激。
【问题讨论】:
-
转换为 pandas 数据框,并在此处调整建议以执行您需要执行的操作stackoverflow.com/questions/42877802/…
标签: python matplotlib netcdf python-xarray haversine