import os
import glob
from pandas.core.frame import DataFrame
import csv
import pandas as pd
import numpy as np
import datetime
mmsi = '219670000'
files = './data/dataset/ais'
outfiles = './data/dataset/3.1'
def findmmsi(mmsi,files,outfiles):
# 按照mmsi号查找报文信息
filelist = os.listdir(files)
speed = []
lon = []
lat = []
time=[]
# 遍历文件列表中的每个文件
# 遍历文件列表中的每个文件
for file in filelist:
# 构建当前文件的完整路径
input_file_path = os.path.join(files, file)
# 打开当前文件
with open(input_file_path, 'r') as table:
# 逐行读取文件内容,分割成列表并筛选出符合条件的记录
for line in table:
data = line.strip().split(',')
if len(data) > 5 and data[2] == mmsi:
time.append(datetime.datetime.strptime(data[0], '%d/%m/%Y %H:%M:%S'))
if data[8].isnumeric():
speed.append(float(data[8]))
else:
speed.append(' ')
lon.append(float(data[4]))
lat.append(float(data[3]))
df = pd.DataFrame({'time': time, 'lon': lon, 'lat': lat, 'cog': lon})
df = df.sort_values(by='time')
print(df)
input_file_with_name = file.replace(".csv", f"_{mmsi}.csv")
# 拼接完整的文件路径
full_path = os.path.join(outfiles, input_file_with_name)
# 保存文件
df.to_csv(full_path, index=False, encoding='utf-8')
print("finish")
findmmsi(mmsi,files,outfiles)
数据样例: