R 中的 USNO REST API

Pat*_*ick 2 api r jsonlite

我正在尝试使用 htrr 和 jsonlite 包从美国海军天文台 Rest API中提取月出和设定时间。但是,我不断收到错误消息,请提供 MM/DD/YYYY 格式的日期。我相信我就是这样,所以很困惑。

library(httr)
library(jsonlite)

GET("https://aa.usno.navy.mil/api/rstt/oneday?date=09/20/2005&coords=47.60,-122.33")
Run Code Online (Sandbox Code Playgroud)

akr*_*run 5

该消息令人困惑,但似乎我们可能需要传入 YYYY-MM-DD 格式

out <- GET("https://aa.usno.navy.mil/api/rstt/oneday?date=2005-09-20&coords=47.60,-122.33")
Run Code Online (Sandbox Code Playgroud)

-输出

out
Response [https://aa.usno.navy.mil/api/rstt/oneday?date=2005-09-20&coords=47.60,-122.33]
  Date: 2022-07-24 18:43
  Status: 200
  Content-Type: application/json
  Size: 1.26 kB
{
  "apiversion": "3.0.0", 
  "geometry": {
    "coordinates": [
      -122.33, 
      47.6
    ], 
    "type": "Point"
  }, 
  "properties": {
...
Run Code Online (Sandbox Code Playgroud)

然后,提取content

library(dplyr)
library(rrapply)
> rrapply(content(out)$properties$data, how = "bind")
  closestphase.day closestphase.month closestphase.phase closestphase.time closestphase.year       curphase day day_of_week fracillum isdst label
1               18                  9          Full Moon             02:01              2005 Waning Gibbous  20     Tuesday       92% FALSE  NULL
  month moondata.1.phen moondata.1.time moondata.2.phen moondata.2.time moondata.3.phen moondata.3.time sundata.1.phen sundata.1.time
1     9            Rise           02:57   Upper Transit           09:57             Set           17:15            Set          02:13
      sundata.2.phen sundata.2.time       sundata.3.phen sundata.3.time sundata.4.phen sundata.4.time sundata.5.phen sundata.5.time tz year
1 End Civil Twilight          02:43 Begin Civil Twilight          13:23           Rise          13:54  Upper Transit          20:03  0 2005
Run Code Online (Sandbox Code Playgroud)

通过查看网页,更明显的是ieformat指定似乎不正确

在此输入图像描述

  • 很好的发现......有关于遵守记​​录格式的争论。 (2认同)