【发布时间】:2015-12-18 13:14:51
【问题描述】:
我不确定如何在卫星数据中获取风的 u 和 v 分量的导数。我以为我可以这样使用 numpy.gradient :
from netCDF4 import Dataset
import numpy as np
import matplotlib.pyplot as plt
GridSat = Dataset('analysis_20040713_v11l30flk.nc4','r',format='NETCDF4')
missing_data = -9999.0
lat = GridSat.variables['lat']
lat = lat[:]
lat[np.where(lat==missing_data)] = np.nan
lat[np.where(lat > 90.0)] = np.nan
lon = GridSat.variables['lon']
lon = lon[:]
lon[np.where(lon==missing_data)] = np.nan
uwind_data = GridSat.variables['uwnd']
uwind = GridSat.variables['uwnd'][:]
uwind_sf = uwind_data.scale_factor
uwind_ao = uwind_data.add_offset
miss_uwind = uwind_data.missing_value
uwind[np.where(uwind==miss_uwind)] = np.nan
vwind_data = GridSat.variables['vwnd']
vwind = GridSat.variables['vwnd'][:]
vwind_sf = vwind_data.scale_factor
vwind_ao = vwind_data.add_offset
miss_vwind = vwind_data.missing_value
vwind[np.where(vwind==miss_vwind)] = np.nan
uwind = uwind[2,:,:]
vwind = vwind[2,:,:]
dx = 28400.0 # meters calculated from the 0.25 degree spatial gridding
dy = 28400.0 # meters calculated from the 0.25 degree spatial gridding
dv_dx, dv_dy = np.gradient(vwind, [dx,dy])
du_dx, du_dy = np.gradient(uwind, [dx,dy])
File "<ipython-input-229-c6a5d5b09224>", line 1, in <module>
np.gradient(vwind, [dx,dy])
File "/Users/anaconda/lib/python2.7/site-packages/nump/lib/function_base.py", line 1040, in gradient
out /= dx[axis]
ValueError: operands could not be broadcast together with shapes (628,1440) (2,) (628,1440)
老实说,我不确定如何计算具有 (0.25x0.25) 度间距的卫星数据的中心差异。我也不认为我的 dx 和 dy 是正确的。如果有人对在卫星数据中进行这些类型的计算有一个好主意,我将不胜感激。谢谢!!
【问题讨论】:
-
这是一个有趣的问题。计算一组离散点的旋度与计算连续场有些不同。有几种方法可以解决:1)如果您想要“更平滑”的数据输出或有噪声输入信息,则取向量在 (i,j) 和八个(或更多)处的叉积的平均值) 周围的网格方块按与感兴趣的网格方块的距离加权。 2) 最简单的方法是仅在 4 个相邻的方格上使用第一种方法,但对角线特征的分辨率会较低。
-
3) 有一些数值方法可用于获取离散数据并将其映射为 n 阶连续函数,这将是“最佳”方法,但也是迄今为止计算量最大的方法实施起来很复杂。
-
numpy.gradient的文档在这方面有点狡猾,但正确的称呼是:gradient(vwind, dx, dy)。 IE。函数签名是gradient(f, *varargs, **kwargs),其中varargs是一个由“splat”或“unpack”运算符扩展的列表。 -
我删除了
curl标签,因为它指的是 Linux 工具,而不是数学概念。
标签: python numpy vector signal-processing weather