1
2
4 '''Unpack a imo_met_hydro message'''
5 r = {}
6 r['MessageID']=8
7 r['RepeatIndicator']=int(bv[6:8])
8 r['UserID']=int(bv[8:38])
9 r['Spare']=0
10 r['dac']=1
11 r['fid']=11
12 r['latitude']=Decimal(binary.signedIntFromBV(bv[56:80]))/Decimal('60000')
13 r['longitude']=Decimal(binary.signedIntFromBV(bv[80:105]))/Decimal('60000')
14 r['day']=int(bv[105:110])
15 r['hour']=int(bv[110:115])
16 r['min']=int(bv[115:121])
17 r['avewind']=int(bv[121:128])
18 r['windgust']=int(bv[128:135])
19 r['winddir']=int(bv[135:144])
20 r['windgustdir']=int(bv[144:153])
21 r['airtemp']=Decimal(binary.signedIntFromBV(bv[153:164]))/Decimal('10')
22 r['relhumid']=int(bv[164:171])
23 r['dewpoint']=Decimal(binary.signedIntFromBV(bv[171:181]))/Decimal('10')
24 r['airpressure']=Decimal(int(bv[181:190]))/Decimal('1')+Decimal('800')
25 r['airpressuretrend']=int(bv[190:192])
26 r['horizvis']=Decimal(int(bv[192:200]))/Decimal('10')
27 r['waterlevel']=Decimal(binary.signedIntFromBV(bv[200:209]))/Decimal('10')
28 r['waterleveltrend']=int(bv[209:211])
29 r['surfcurspeed']=Decimal(int(bv[211:219]))/Decimal('10')
30 r['surfcurdir']=int(bv[219:228])
31 r['curspeed2']=Decimal(int(bv[228:236]))/Decimal('10')
32 r['curdir2']=int(bv[236:245])
33 r['curlevel2']=int(bv[245:250])
34 r['curspeed3']=Decimal(int(bv[250:258]))/Decimal('10')
35 r['curdir3']=int(bv[258:267])
36 r['curlevel3']=int(bv[267:272])
37 r['sigwaveheight']=Decimal(int(bv[272:280]))/Decimal('10')
38 r['waveperiod']=int(bv[280:286])
39 r['wavedir']=int(bv[286:295])
40 r['swellheight']=Decimal(int(bv[295:303]))/Decimal('10')
41 r['swellperiod']=int(bv[303:309])
42 r['swelldir']=int(bv[309:318])
43 r['seastate']=int(bv[318:322])
44 r['watertemp']=Decimal(int(bv[322:332]))/Decimal('10')+Decimal('-10')
45 r['preciptype']=int(bv[332:335])
46 r['salinity']=Decimal(binary.signedIntFromBV(bv[335:344]))/Decimal('10')
47 r['ice']=int(bv[344:346])
48 r['Spare']=0
49 return r
50