Package ais :: Module imo
[hide private]
[frames] | no frames]

Source Code for Module ais.imo

 1  #!/usr/bin/env python 
 2   
3 -def decode(bv, validate=False):
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