Как исправить значения шестеренок AIS

#python #data-preprocessing #ais

Вопрос:

В настоящее время я работаю с набором данных AIS, содержащим поля MMSI, Метку времени, LAT, LON, SOG, COG и т.д. Здесь ВИНТИК находится над землей, и поддерживаемое значение винтика колеблется от 0 до 360 градусов. Но набор данных содержит отрицательные значения в некоторых строках. Мне хотелось бы знать, есть ли какая-либо формула или правило, чтобы преобразовать ее в 0-360. Поскольку я работаю с python, если кто-то знает, как это сделать на Python, будет признателен, но любая формула может сработать. Для удобства я прикрепил скриншот образца набора данных.Пример Набора данных AIS

Ответ №1:

Чтобы преобразовать угол между 0 и 360, найдите модуль деления на 360:

 df["COG_0_to_360"] = df["COG"]60
 

примеры:

 -1060 == 350
1060 == 10
 

Комментарии:

1. @faring Я также только что принял предложение о работе для компании, которая отслеживает данные AIS 🙂

2. Поздравляю @Tom McLean

Ответ №2:

Вот мой окончательный код:

 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]