2013-10-10 6 views
0

으로 추출하십시오. http://www.bom.gov.au/climate/data/ 변전소 번호, 예를 들어 009572를 입력 할 수 있습니다. 변수 (예 : 온도)와 유형 (최대)을 선택하십시오. "데이터 가져 오기"를 클릭하면 "모든 연도의 데이터"링크가있는 페이지로 이동합니다. 그것을 클릭하면 zip 파일이 생깁니다. this questions에 대해 알고 있지만 여기에는 zip 파일에 대한 직접 링크가 없습니다. 호주 R & D 웹 사이트에서 날씨 데이터 추출을 자동화 할 수 있습니까?호주 BOM 기상 데이터를 프로그래밍 방식으로 R

+0

그것은 읽을 가치가있을 것입니다 http://forums.whirlpool.net.au/archive/1309587 – mnel

+0

우편에 대한 궁극적 인 URL로 전달받을 서로 다른 매개 변수를 봐 파일 (http://www.bom.gov.au/jsp/ncc/cdio/weatherData/av?p_display_type=dailyZippedDataFile&p_stn_num=009572&p_c=-18462391&p_nccObsCode=123&p_startYear=1985)을 참조하여 전달 된 값과 비교할 수 있는지 확인하십시오. HTML 폼. 매우 간단한 일치가있는 경우 R과 함께 사용하기 위해 URL을 붙여 넣기 만하면됩니다. – A5C1D2H2I1M1N2O1R2T1

답변

1

metvurst는 여기 즉시 다운로드하기 위해 수행 한 코드 그리고 그것은 또한 당신의 p_c 문제를 해결합니다. 원할 경우 기능을 향상시킬 수 있습니다.

#daily code = 136 
#monthy code = 139 

bomdata<- function(station,code){ 
for(i in 1: length(station)){ 
p.url<-paste("http://www.bom.gov.au/jsp/ncc/cdio/weatherData/av?p_stn_num=",station[i],"&p_display_type=availableYears&p_nccObsCode=",code,sep ="") 
download.file(p.url,"test.txt") 
filelist <- list.files(pattern = ".txt") 
foo<- file(filelist,"r") 
text<- suppressWarnings(readLines(foo)) 
close(foo) 
l<- regexpr(":",text[1]) 
m<- unlist(gregexpr(",", text[1], perl = TRUE)) 
pc<- substr(text[1],l[[1]]+1,l[[1]]+(m[2]-(l[[1]]+1))) 
url<-paste("http://www.bom.gov.au/jsp/ncc/cdio/weatherData/av?p_display_type=dailyZippedDataFile&p_stn_num=",station[i],"&p_c=",pc,"&p_nccObsCode=",code,"&p_startYear=2013", sep ="") 
suppressWarnings(download.file(url,paste(station[i],".zip",sep= ""), mode = "wb")) 
unlink("test.txt") 
} 
} 

bomdata(073137,136) 
+0

감사합니다. 나는 그것을 점검하고 당신의 대답을 받아 들일 것이다. 우리가 발견 한 p_c 문제에 대한 대안은 RCurl을 통해 이루어졌습니다. Google은 해당 솔루션을 사용하는 패키지를 개발해 왔지만 귀하의 제안이 훨씬 더 효과적 일 수 있습니다. 우리는 또한 경고를 억제해야했습니다. – andrekos

+0

쿨 !! 게시 유지. 나는 어떤 코멘트도 추가하지 않았다. 내가 한 일은 텍스트 파일에 저장하여 각 스테이션의 p_c 값을 추출한 다음 마지막 다운로드 링크에 p_c 값을 추가하고 zip 파일로 저장하는 것입니다. – Dipangkar

+0

예, 문제가 해결되었습니다. 잘 했어. 두 가지 솔루션의 어떤 부분이 패키지에서 사용하기에 가장 적합한 부분인지 알 수 있습니다. – andrekos

0

download.file()에서이 작업을 수행하는 방법을 여전히 볼 수 없지만 다음은 Chrome에서 "다운로드하기 전에 각 파일을 저장할 위치 묻기"기능이 거의 실행되지 않습니다. 나는 그것이 역 역에서 어떻게 변화하는지 무엇을 p_c = -18465084 방법을 알고 있다면

system(paste('"C:/Documents and Settings/UserName/Local Settings/Application Data/Google/Chrome/Application/chrome.exe"', 
     '-url http://www.bom.gov.au/jsp/ncc/cdio/weatherData/av?p_display_type=dailyZippedDataFile&p_stn_num=009572&p_c=-18465084&p_nccObsCode=136'), wait = FALSE) 

그 때 나는 다양한 국번을 통해 paste0() 및 루프를 사용할 수 있습니다.

+0

다소 관련성이 있습니다. http://www.gliffy.com/publish/3949748/ – andrekos

1

시도해 볼 수 있습니다. metvurst 패키지에서 사용하는 코드 시퀀스입니다.

## SET URL FOR DATA DOWNLOAD 
url <- "http://www.bom.gov.au/ntc/IDO70004/IDO70004_" 

## YEARS TO BE DOWNLOADED 
yr <- 1993:2012 

## READ DATA FOR ALL YEARS FROM URL INTO LIST 
fijilst <- lapply(seq(yr), function(i) { 
read.csv(paste(url, yr[i], ".csv", sep = ""), na.strings = c(-9999, 999)) 
}) 
+0

그래, 아직까지는 다음과 같은 것이 필요합니다. 개별 호주 기상 관측소. 제공 한 코드는 http://www.bom.gov.au/oceanography/projects/spslcmp/data/data.shtml에 나열된 ID 번호/파일 이름으로 작동합니다. 이는 호주가 아닙니다. – andrekos