将朱利安天数转换为弧度(或类似)

时间:2016-01-27 14:52:54

标签: r radians julian-date

我有一个n行的数据框,每行对应一个空间和时间的单个事件。数据框包含包含空间坐标和Julian天数的列以及其他几列附加数据。

我想对我的数据做各种各样的事情,但作为一个例子,我想光栅化一些列并输出一些地图。对于我的大多数专栏,我可以使用以下内容轻松完成:

{{1}}

然而,对于朱利安时代,这是没有意义的,因为它是周期性的。 365/366与1相邻,但R不知道这一点,因此使用中位函数不会为我提供有意义的数字。我正在寻找一种方法将我的朱利安天列转换成一个反映这一点的新列,这使我能够为朱利安日创建一个有意义值的栅格。

我的朱利安时代专栏从1-366开始,反映了特定年份内举办活动的那一天。我的数据涵盖多年,但我的Julian days专栏从每年年初的1开始。

我尝试过一些事情,包括转换为弧度,但到目前为止还没有任何工作。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

为了获得我想要的东西,我首先必须将我的“Julian days”列缩放到度,然后我可以使用aspace包中的as_radians函数将度数转换为弧度,然后我可以在弧度上使用循环统计:

# Scale Julian days to degrees

df$degrees <- (df$jday/366)*360

# Convert degrees to radians

df$radians <- as_radians(df$degrees)

# Convert df to a spatial object

df.sp <- df
coordinates(df.sp) <- ~ x + y
proj4string(df.sp) <- proj4string(coordinates)

# Rasterise radians

radians.raster <- rasterize(df.sp, base.raster, field = "radians", fun = mean.circular)

# Plot rasterised radians

plot(radians.raster)

目前这些数字会略微不准确,因为(转换为度数时)闰年应该除以366而非闰年除以365但我会用一个查看年份的简单循环来解决这个问题(也包含在我的df)每行并适当使用366/365。