2015-06-24 69 views
1

我有,我想美國的地圖上繪製這個網格數據:https://www.dropbox.com/s/9khcjgtv8ipo2u5/windspeed.txt?dl=0如何繪製R中的地理參考數據集?

library(ggplot2) 
library(RColorBrewer) 
library(rgdal) 
library(sp) 
library(maps) 
options(max.print=5.5E5) 

all_data = read.table("windspeed.txt",header = TRUE) 

res=0.01 #spacing of row and col coords pre-specified 
origin_lat_lon=c(24.55, -130) 
all_data$row=(all_data$row)*res+origin_lat_lon[1] 
all_data$col=(all_data$col)*res+origin_lat_lon[2] 
coords = cbind(all_data$col, all_data$row) 
spdf = SpatialPointsDataFrame(coords, data=all_data) #sp = SpatialPoints(coords) 
proj4string(spdf) <- CRS("+init=epsg:4269") 

df=as.data.frame(spdf) 
myPalette <- colorRampPalette(rev(brewer.pal(10, "Spectral"))) 
usamap <- map_data("state") 
ggplot(data=df,aes(x=col,y=row,color=m)) + 
    geom_polygon(data=usamap, aes(x=long, y=lat,group=group),colour="black", fill="white")+ 
    geom_point()+ 
    scale_colour_gradientn(name = "Wind",colours = myPalette(10), limits=c(0,1))+ 
    xlab('Longitude')+ 
    ylab('Latitude')+ 
    theme_bw()+ 
    theme(line = element_blank())+ 
    theme(legend.position = c(.93,.20),panel.grid.major = element_line(colour = "#854440"))+ 
    ggsave("test.png",width=10, height=8,dpi=300) 

但我得到一個倒置的情節。你能幫忙嗎?

enter image description here

我以前得到了這裏的類似數據集的答案:相較於先前從你所提到的前一個問題有數據集時How to convert point data collected at grid interval to a georeferenced dataset in r?

+0

我想在你前面的例子中,#1線是北緯最北。在這種情況下,它是最南端的緯度。 –

+0

謝謝。我怎樣才能解決這個問題?我仍然完全不理解原始答案... – maximusdooku

+0

嘗試使用'origin_lat_lon = c(55.13,-130)'和'all_data $ row = origin_lat_lon [1] - (all_data $ row * res)'。 **但是**並不完全符合邊界。你真的**需要檢查數據集的邊界。 –

回答

0

你在這個CSV緯度值將恢復。所有你需要做的就是在這個新的數據集反轉行號:

右鍵你行之後:

all_data = read.table("windspeed.txt",header = TRUE) 

反轉使用行號:

max_row= max(all_data$row) 
all_data$row=max_row-all_data$row 

這應該照顧它。