2013-05-21 9 views
2

Joe Wheatley (http://joewheatley.net/ncep-global-forecast-system/)의 훌륭한 게시물에이어서 나는 온도 글로벌지도를 제작했습니다. 하지만, 해안선을 그리기보다는 maptools 패키지를 사용하여 국가 테두리를 그려 보려고했습니다. 동북아 국가 테두리 만 표시 될 때 문제가 발생합니다. 내가 알아낼 수없는 뭔가를 놓쳐 야한다. 여전히 stackoverflow와 google을 찾고있다. 당신이 도울 수 있기를 바랍니다. 내가 사용한다, 여기 국가 별 maptools로 그려보기 - R

내가

loc=file.path("ftp://ftp.ncep.noaa.gov/pub/data/nccf/com/gfs/prod/gfs.2013052100/gfs.t00z.sfluxgrbf03.grib2") 
download.file(loc,"temp.grb",mode="wb") 

system("wgrib2 -s temp.grb | grep :TMP: | wgrib2 -i temp.grb -netcdf TMP.nc",intern=T) 
system("wgrib2 -s temp.grb | grep :LAND: | wgrib2 -i temp.grb -netcdf temp.nc",intern=T) 

library(ncdf) 
landFrac <-open.ncdf("LAND.nc") 
lon <- get.var.ncdf(landFrac,"longitude") 
lat <- get.var.ncdf(landFrac,"latitude") 

temp=open.ncdf("TMP.nc") 
t2m.mean <- get.var.ncdf(temp,"TMP_2maboveground") 


library("fields") 
library("sp", lib.loc="/usr/lib/R/site-library") 
library("maptools", lib.loc="/usr/lib/R/site-library") 

day="DIA" 

png(filename="gfs.png",width=1215,height=607,bg="white") 

rgb.palette <- colorRampPalette(c("snow1","snow2","snow3","seagreen","orange","firebrick"), space = "rgb")#colors 
image.plot(lon,lat,t2m.mean,col=rgb.palette(200),main=as.expression(paste("GFS 24hr Average 2M Temperature",day,"00 UTC",sep="")),axes=T,legend.lab="o C") 
data(wrld_simpl) 
plot(wrld_simpl, add = TRUE) 

dev.off() 

을 (대부분 조의 게시물에서 나오는) 사용하고 코드이며,이 이미지는이 세계지도입니다

enter image description here

을 생산 지역 (유럽 등)을 추출하려면 image.plot의 xlim 및 ylim

EDIT : 임시 URL을 추가했습니다. 노스 캐롤라이나 어떤 도움을 주시면 감사하겠습니다

http://ubuntuone.com/29DKAeRjUCiCzLblgfSLc9

파일, 감사

답변

8

이 데이터는 [-180, 180] wrld_simpl은 경도에 정렬 설정하지만 그리드 데이터를 명확하게 [0360]입니다. ?

plot(elide(wrld_simpl, shift = c(360, 0)), add = TRUE) 

패키지 래스터 회전 자르고 이동 /를 포함하여, 다음과 같이 결합 recentre 데이터를 다른 도구가 있습니다 : 당신이 가지고 있기 때문에 maptools는 플롯에 수정 된 사본을 추가하려면이 시도로드. 그것은 당신이 필요로하는 것에 달려 있습니다.

또 다른 그래픽 대안은 바로지도 패키지

library(maps) 
map("world2", add = TRUE) 

그 중 하나가 플롯 위의 시작을 완료하기 위해 노력할 것에 "world2"를 사용하는 것입니다. Fixing maps library data for Pacific centred (0°-360° longitude) display

+0

우수한 대답, 평소와 같이

다음은이 관련된 또 다른 토론입니다. –

+0

안녕하세요, 'plot (elid (wrld_simpl, shift = c (360, 0)), add = TRUE)'대체 plot (wrld_simpl, add = TRUE)'? 감사. – pacomet

+0

거의 완벽한 솔루션입니다. 하지만 지금은 국경이지도 외부에서 플롯되고 전설의 오른쪽면에 있습니다. 유럽 ​​국경은지도 안의 왼쪽에 표시되는 것이 아니라 오른쪽에 표시됩니다. – pacomet

3

당신은이 작업을 수행 할 수 있습니다 :

library(raster) 
r <- raster("temp.nc") 
r <- rotate(r) 
plot(r) 
+0

안녕하세요 @ 로버트 그게 내가 원하는 것입니다. 이제지도는 괜찮습니다. 고맙습니다. – pacomet