2014-11-05 4 views
1

우편 번호 표 영역 (ZCTA)으로 날씨 (온도, 복사열 등)를 다운로드하는 방법을 알아 내려고하고 있습니다. 센서스 데이터에는 ZCTA에 의한 센서스 정보가 있지만 이는 기상 데이터에 해당하지 않습니다.우편 번호로 테이블 데이터를 다운로드하십시오.

http://cdo.ncdc.noaa.gov/qclcd/QCLCD?prior=N 에서 정보를 찾았지만 알아 내지 못했습니다.

ZCTA를 통해 날씨 데이터를 다운로드 한 사람이 있습니까? 그렇지 않다면 누구나 기상 관측소 정보를 ZCTA로 전환 한 경험이 있습니까?

답변

0

날씨 데이터는 기상 관측소에서만 사용할 수 있으며 각 ZCTA의 기상 관측소는 없습니다 (ZCTA는 기상 관측소보다 훨씬 작음).

위도와 경도를 입력 할 수있는 noaa 웹 사이트에서 옵션을 보았습니다. 그러면 적절한 기상 관측소에서 날씨를 찾을 수 있습니다. 따라서 ZCTA를 위도/경도 쌍 (가운데, 임의의 모서리 등)으로 변환 할 수 있다면 웹 사이트에 제출할 수 있습니다. 그러나 많은 수의 ZCTA에 대해이 작업을 수행하면 중복 정보를 다운로드하게됩니다. 기상 관측소에 ZCTA를 한 번 매칭 한 다음 각 관측소에서 한 번만 날씨 정보를 다운로드 한 다음 ZCTA 데이터와 병합하는 것이 더 낫습니다.

+0

고마워요! 좋은 제안!400 개가 넘는 ZCTA를 기상 관측소에 맞추는 것은 고통이지만 미래에 재사용 할 수 있다면 가치가 있습니다. – ponyhd

1

National Weather Service는 국립 디지털 예보 데이터베이스 (NDFD)에서 SOAP interfaceREST 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을 구문 분석하기가 복잡합니다.

+0

코드를 공유해 주셔서 감사합니다. 내 문제는 필자는 16 시간 동안의 온도 (방사선) 데이터를 400 zcta 이상으로 16 년 이상 필요로한다. 기상 관측소를 zcta와 매치시키는 방법과 매달 데이터를 일괄 다운로드하는 방법을 알아야 할 것입니다. – ponyhd

0

NOAA QCLCD 데이터를 우편 번호로 가져 오려면 station.txt 파일의 위도/경도 값을 사용하고 인구 조사 데이터와 비교해야합니다. 이는 GIS 관련 도구를 통해서만 수행 할 수 있습니다. 그런 다음 우편 번호가있는 스테이션 포함하는 결정뿐만 아니라 데이터베이스에 인구 조사국에서 ZCTA를로드 할 필요가

ST_MakePoint(longitude, latitude) 

: 내 솔루션을 사용하면 ST_MakePoint 기능을 사용할 수 있도록 PostGIS 활성화 된 데이터베이스를 사용하는 것입니다. ST_Contains 함수가 도움이 될 것입니다. 나는 분명 열 이름에 대한 가정을 만들고 있어요

SELECT s.wban, z.zip5, s.state, s.location 
    FROM public.station s 
    INNER JOIN public.zip z 
     ON ST_Contains(z.way, ST_MakePoint(s.longitude, s.latitude) 

하지만, 위의 좋은 출발점이되어야합니다 :

ST_Contains(zip_way, ST_MakePoint(longitude, latitude)) 

전체 쿼리는 다음과 같이 보일 수 있습니다.

QGIS (무료) 또는 ArcGIS (비싼)를 사용하여 동일한 작업을 수행 할 수 있어야합니다. PostGIS 지원 데이터베이스를 설치하는 데 소요되는 오버 헤드를 없애기는하지만, 해당 소프트웨어 패키지에서 필요한 단계를 잘 알고 있지는 않습니다.