National Weather Service는 국립 디지털 예보 데이터베이스 (NDFD)에서 SOAP interface 및 REST interface의 일기 예보 정보를 추출하는 두 가지 웹 기반 API를 제공합니다. 둘 다 XML 방언 인 Digital Weather Markup Language (DWML)의 데이터를 반환합니다. 반환 될 수있는 데이터 요소는 here입니다.
IMO REST 인터페이스가 훨씬 사용하기 쉽습니다. 아래는 5 일 동안 우편 번호 10001 (Lower Manhattan)의 예상 온도, 상대 습도 및 풍속을 3 시간 단위로 추출하는 예입니다.
# NOAA NWS REST API Example
# 3-hourly forecast for Lower Mannhattan (Zip Code: 10001)
library(httr)
library(XML)
url <- "http://graphical.weather.gov/xml/sample_products/browser_interface/ndfdXMLclient.php"
response <- GET(url,query=list(zipCodeList="10001",
product="time-series",
begin=format(Sys.Date(),"%Y-%m-%d"),
Unit="e",
temp="temp",rh="rh",wspd="wspd"))
doc <- content(response,type="text/xml") # XML document with the data
# extract the date-times
dates <- doc["//time-layout/start-valid-time"]
dates <- as.POSIXct(xmlSApply(dates,xmlValue),format="%Y-%m-%dT%H:%M:%S")
# extract the actual data
data <- doc["//parameters/*"]
data <- sapply(data,function(d)removeChildren(d,kids=list("name")))
result <- do.call(data.frame,lapply(data,function(d)xmlSApply(d,xmlValue)))
colnames(result) <- sapply(data,xmlName)
# combine into a data frame
result <- data.frame(dates,result)
head(result)
# dates temperature wind.speed humidity
# 1 2014-11-06 19:00:00 52 8 96
# 2 2014-11-06 22:00:00 50 7 86
# 3 2014-11-07 01:00:00 50 7 83
# 4 2014-11-07 04:00:00 47 11 83
# 5 2014-11-07 07:00:00 45 14 83
# 6 2014-11-07 10:00:00 50 16 61
단일 요청으로 여러 우편 번호를 쿼리 할 수는 있지만 반환 된 XML을 구문 분석하기가 복잡합니다.
고마워요! 좋은 제안!400 개가 넘는 ZCTA를 기상 관측소에 맞추는 것은 고통이지만 미래에 재사용 할 수 있다면 가치가 있습니다. – ponyhd