fig = plt.figure(figsize=(12, 8))
ax = plt.axes(projection=ccrs.PlateCarree())
ax.set_extent([1.0, 2.5, 50.5, 51.5])
 
ax.set_facecolor("#1a1c1e")
ax.add_feature(cfeature.LAND, facecolor="#323539")
 
# 抽出した海域に含まれるユニークなMMSIを取得
all_vessels = df_dover["MetaData.MMSI"].unique()
 
for mmsi in all_vessels:
    vessel_data = df_dover[df_dover["MetaData.MMSI"] == mmsi].sort_values("time_utc")
 
    # 2点以上の位置情報がある場合のみ描画
    if len(vessel_data) > 1:
        line, = ax.plot(
            vessel_data["Message.PositionReport.Longitude"],
            vessel_data["Message.PositionReport.Latitude"],
            linewidth=1, alpha=0.5, transform=ccrs.PlateCarree()
        )
 
        # 最新位置の抽出と方位マーカーの配置
        latest_pos = vessel_data.iloc[-1]
        ax.scatter(
            latest_pos["Message.PositionReport.Longitude"],
            latest_pos["Message.PositionReport.Latitude"],
            s=80, color=line.get_color(),
            # マーカー(3, 0, 回転角)で三角形を作成
            marker=(3, 0, -latest_pos["Message.PositionReport.Cog"]),
            zorder=5, transform=ccrs.PlateCarree()
        )
 
plt.show()

fig.savefig("figure4.png", dpi=300, bbox_inches="tight")
plt.close(fig)
