예제 #1
0
def getNameMMSI(logfile,outfile):
    for line in logfile:
        fields = line.split(',')[:6]
        if '1'!=fields[2]: # Must be the start of a sequence
            continue
        if len(fields[5])<39: continue
        bv = binary.ais6tobitvec(fields[5][:39]) # Hacked for speed

        mmsi = ais_msg_5.decodeUserID(bv)
        name = aisstring.unpad(ais_msg_5.decodename(bv))
        outfile.write(str(mmsi)+' '+str(name)+'\n')
예제 #2
0
 #       lastMsgDict=None
        print 'mmsi',mmsi,'  count=',len(msgsByShip[mmsi])
        for line in msgsByShip[mmsi]:
            fields=line.split(',')
            if fields[5] == lastMsg:
                continue
#            if lastMsgDict!=None:

            lastMsg=fields[5]
            r = m5.decode(binary.ais6tobitvec(fields[5]))
            timestamp = fields[-1]
            col=0
            # MMSI and IMO numbers are too much for excel, so make them strings
            ws_report.write(ws_report_row,col,str(mmsi)); col += 1
            ws_report.write(ws_report_row,col,str(r['IMOnumber'])); col += 1
            ws_report.write(ws_report_row,col,aisstring.unpad(r['callsign'])); col += 1
            ws_report.write(ws_report_row,col,aisstring.unpad(r['name'])); col += 1
            ws_report.write(ws_report_row,col,r['shipandcargo']); col += 1
            ws_report.write(ws_report_row,col,r['dimA']); col += 1
            ws_report.write(ws_report_row,col,r['dimB']); col += 1
            ws_report.write(ws_report_row,col,r['dimC']); col += 1
            ws_report.write(ws_report_row,col,r['dimD']); col += 1
            ws_report.write(ws_report_row,col,r['ETAminute']); col += 1
            ws_report.write(ws_report_row,col,r['ETAhour']); col += 1
            ws_report.write(ws_report_row,col,float(r['draught'])); col += 1
            ws_report.write(ws_report_row,col,aisstring.unpad(r['destination'])); col += 1
            ws_report.write(ws_report_row,col,timestamp); col += 1


            # FIX: keep track of the last time reported and add that as a column along with number of the same messages.
            ws_report_row += 1