1
2
3 import sys, binary, ais_msg_5, aisstring
4 from BitVector import BitVector
5
6 first=None
7 lineNum = 0
8 for line in file('5.ais'):
9 lineNum += 1
10 if lineNum % 50000==0: sys.stderr.write('lineNum:'+str(lineNum)+'\n')
11 if lineNum > 1100: sys.exit('early')
12 if None==first:
13 first = line
14 try:
15 if '1'!=first.split(',')[2]:
16
17 first = None
18 except:
19 print 'skip 1b', first
20 first = None
21
22 continue
23
24 fields1 = first.split(',')
25 fields2 = line.split(',')
26
27 try:
28 if fields2[2]=='1':
29 first=line
30 continue
31
32 if (fields1[2]!='1'):
33
34 continue
35 if (fields2[2]!='2'):
36
37 continue
38 if (fields1[3] != fields2[3]):
39
40 continue
41 if (fields1[4] != fields2[4]):
42
43 continue
44 except:
45 print 'skip6',fields1,fields2
46 first=None
47 continue
48
49 try:
50 msgPayload = first.split(',')[5] + line.split(',')[5]
51
52 bv = binary.ais6tobitvec(msgPayload[:40])
53
54
55
56
57
58 mmsi = int(bv[8:38])
59 name = aisstring.decode(bv[112:232])
60
61 print mmsi,name
62 except:
63 sys.stderr.write('\n# ERROR: '+first.strip()+' '+line)
64
65 first = None
66