Как преобразовать время дня в радианы с 0 / 2Pi = восход и Pi = закат? - PullRequest
1 голос
/ 18 апреля 2019

У меня большой набор данных (непрерывный по месяцам), и мне нужно выполнить циклическую статистику, чтобы оценить потенциальное влияние циклов Диль.

Для этого я преобразовал все циклические данные в радианы.Мне нужно сделать то же самое со временем дня.Проблема, с которой я сталкиваюсь, заключается в следующем: я не хочу, чтобы 0 / 2Pi соответствовали 0h / 24h и Pi до полудня.Мне нужно, чтобы мои данные были стандартизированы, учитывая, что время восхода / захода солнца меняется в течение года.

Вместо этого мне нужно было бы установить 0 / 2Pi как время восхода, а Pi как время заката.Я искал везде и не мог найти решение.В научной статье используется этот метод, я связался с одним из авторов, но пока ответа нет.Вот предложение из статьи:

«Для стандартизации дневного света были рассчитаны радианные значения. Значения 0 и 2Pi представляют рассвет, а Pi представляет сумерки». Zein и др.., 2019

Я должен упомянуть, что я морской биолог, работающий над китообразными.У меня нет математического фона.И я кодирую в R. Я получал доступ к временам захода / восхода для каждого своего набора данных, используя sunriset () из пакета Maptools.

Большое спасибо заранее.

1 Ответ

0 голосов
/ 18 апреля 2019

Вы можете использовать getSunlightTimes в пакете suncalc.Вот попытка вычислить время, установив 0 для восхода солнца и π для заката.

library(suncalc)
library(hms)

#  tm = a time variable
tm <- as.hms(
  c(
    as.POSIXlt("2019-04-18 10:02:29"),
    as.POSIXlt("2019-04-18 15:10:00"),
    as.POSIXlt("2019-04-18 18:54:12")
  )
)

sun_t <- getSunlightTimes(as.Date("2019-04-18"), lat= 59.33, lon= 18.07, tz= "CET")

sunrise <- as.hms(sun_t$sunrise)
sunset <- as.hms(sun_t$sunset)

tm_pi <- as.numeric(tm - sunrise) * pi / as.numeric(sunset - sunrise)
...