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