一.将原始数据下载处理后按照MMSI分组提取出每个船舶的轨迹;
二.将文件处理为适合QGIS画图的格式
代码如下:
import os
import csv
# 输入文件夹路径和输出CSV文件路径
input_folder = './raw_9' # 替换为实际的输入文件夹路径
output_csv = './output0.csv' # 替换为你想要的输出CSV文件路径
# 处理每个CSV文件的函数
def process_csv_file(input_file):
# 获取文件名作为轨迹ID
filename = os.path.basename(input_file)
trajectory_id = os.path.splitext(filename)[0] # 使用文件名作为轨迹ID
with open(input_file, newline='') as csvfile:
reader = csv.reader(csvfile)
# 跳过第一行
next(reader)
lon_lats = []
for row in reader:
lon = row[1] # 假设第二列是经度
lat = row[2] # 假设第三列是纬度
lon_lats.append(f"{lon} {lat}")
# 将坐标格式化为所需的格式
trajectory_coordinates = ','.join(lon_lats)
trajectory_data = f"LINESTRING({trajectory_coordinates})"
return trajectory_id, trajectory_data
# 遍历输入文件夹中的每个CSV文件,写入到输出CSV文件
with open(output_csv, 'w', newline='') as output_csvfile:
writer = csv.writer(output_csvfile)
for filename in os.listdir(input_folder):
if filename.endswith('.csv'): # 确保只处理CSV文件
filepath = os.path.join(input_folder, filename)
trajectory_id, trajectory_data = process_csv_file(filepath)
writer.writerow([trajectory_id, trajectory_data])
print(f'生成的CSV文件: {output_csv}')
输出文件格式:
三.QGIs画图:
图层-添加图层-添加分割文本图层-
输出图层效果:
粗细:0.1
图层:变亮
要素:变量