HDF5 形式の生の毎日の海風データがあり、Numpy を使用してそれらを風速と風向に変換する方法を知りたいですか?</p>
生の毎日の海風データは、u.hdf5 と v.hdf5 の 2 つの HDF5 ファイルに保存されます。各 HDF5 ファイルには、緯度、経度、u(または v) の 3 つのコンテンツが含まれています。u(または v) 配列は 3D で、0 次元は時間 (0:00-24:00) を表します。私がする必要があるのは、u と v の配列を 1 時間ごと (つまり 0:00-1:00) にスライスし、次のコードを使用してそれらを風速と風向に変換することです。
#!/usr/bin/python2
import os
import sys
import math
def d2r(degree):
radian = degree * math.pi / 180.0
return (radian)
def r2d(radian):
degree = radian * 180.0 / math.pi
return (degree)
def uv2sd(u,v):
s = math.sqrt((u*u)+(v*v))
radian = math.atan2(u,v)
degree = r2d(radian)
if degree < 0:
degree = 360 + degree
return (s,d)
その後、緯度、経度、毎時の風速、風向 (s,d) 情報を含む別の HDF5 ファイルを作成する必要があります。
どうもありがとう!
以下のコードで試しましたが、うまくいきませんでした。
>>> import numpy
>>> import h5py
>>> import os
>>> import sys
>>> import math
>>> a=h5py.File('D:/Wind/u_100m/20100101.hdf5','r')
>>> b=a['u'].value
>>> c=b[0,:,:]
>>> cu=c
>>> d=h5py.File('D:/Wind/v_100m/20100101.hdf5','r')
>>> e=d['v'].value
>>> f=e[0,:,:]
>>> fv=f
>>> u=cu.reshape(-1)
>>> v=fv.reshape(-1)
>>> def d2r(d):
r=d*math.pi/180.0
return(r)
>>> def r2d(r):
d=r*180.0/math.pi
return(d)
>>> def uv2sd(u,v):
s=math.sqrt((u*u)+(v*v))
d=math.atan2(u,v)
if d<0:
d=360+d
return (s,d)
>>> print uv2sd(u,v)
Traceback (most recent call last):
File "<pyshell#55>", line 1, in <module>
print uv2sd(u,v)
File "<pyshell#54>", line 2, in uv2sd
s=math.sqrt((u*u)+(v*v))
TypeError: only length-1 arrays can be converted to Python scalars