如何修复 AIS COG 值

问题描述

我目前正在处理包含字段 MMSI、Timestamp、LAT、LON、SOG、COG 等的 AIS 数据集。这里,COG 是地面航向,支持的 COG 值范围从 0 到 360 度。但是数据集在某些行中包含负值。我想知道是否有任何公式或规则可以将其转换为 0-360。由于我正在使用 python,如果有人知道如何在 Python 中执行此操作将不胜感激,但任何公式都可以工作。为方便起见,我附上了示例数据集的屏幕截图。

Sample AIS Dataset

解决方法

要将角度转换为 0 到 360 度之间的值,请求除以 360 度的模数:

df["COG_0_to_360"] = df["COG"]%360

示例:

-10%360 == 350
10%360 == 10
,

这是我的最终代码:

def COG_0_To_360(cog):
    cog = np.fmod(cog,360.0)
    cog = np.where(cog < 0.0,cog + 360.0,cog)
    return np.abs(cog)

df['COG'] = COG_0_To_360(df['COG'])

示例:

values = [-170,-10,-390,-355,250,-440]
print(COG_0_To_360(values))

[190  350  330  5  250  280]