【问题标题】:Convert Julian days into radians (or similar)将儒略日转换为弧度(或类似)
【发布时间】:2016-02-14 22:25:13
【问题描述】:

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

我想对我的数据做很多事情,但作为一个例子,我想栅格化一些列并输出一些地图。对于我的大多数专栏,我可以通过以下方式轻松做到这一点:

df.raster <- rasterize(df.sp, base.raster, field = "column", fun=median) 
plot(df.raster)

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

我的儒略天数列从 1 到 366 运行,反映了特定年份中发生事件的日期。我的数据涵盖多年,但我的儒略日列在每年年初再次从 1 开始。

我尝试了一些方法,包括转换为弧度,但到目前为止没有任何效果。任何帮助将不胜感激!

【问题讨论】:

  • 如果您将鼠标悬停在“julian-date”标签上,您将看到与该标签关联的儒略日期的实际定义。在某些情况下可能更容易使用相关的日期数字,例如Lillian date。将常规日期转换为这些日期数字之一的算法已广泛使用。小心 R 语言中草率的一天 # 定义。
  • 是的,我确实注意到标签中的实际定义,最初在倒数第二段中有一点说明我的“朱利安日期”不符合该定义。但是,使用 Julian days 标签似乎是最有可能将我的问题标记给对我的问题有经验并可以提供如何解决它的示例的人的方法。 @杰拉德阿什顿
  • 我建议使用真实的官方 Julian 日期或更短的 Lillian 日期,这可能是解决您问题的方法,因为例如,2015 年 12 月 31 日是 Lillian 日期 158227 和 Jan. 2016 年 1 月 1 日是 Lillian 日期 158228,因此 Lillian 日期在数字上是相邻的,如您所愿。
  • 啊,谢谢!我会调查的!我想合并我的数据,所以我有(例如)我拥有的所有 15 年数据中 1 月 1 日的平均值,但这可能是一个起点@GerardAshton

标签: r radians julian-date


【解决方案1】:

为了得到我想要的,我首先必须将“儒略日”列缩放为度数,然后我可以使用 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。

【讨论】:

    猜你喜欢
    • 2013-07-30
    • 1970-01-01
    • 1970-01-01
    • 2021-08-02
    • 1970-01-01
    • 2021-01-15
    • 1970-01-01
    • 1970-01-01
    • 2013-07-21
    相关资源
    最近更新 更多