风玫瑰叠加在地图上

时间:2017-10-02 13:43:48

标签: maps ggmap openair

我有来自多个气象站的风数据,我有每个气象站的坐标。我想使用电台的lat和long将地面上的风玫瑰覆盖在地图上。在R中有这样做的直接方式吗?

这就是我迄今为止在R中所做的。我将windroses保存为png,然后将其叠加在地图上。

#######################################
########produce map of GTA##############
#######################################
ggmap=get_map(location=c(left=-80.7 , bottom=43 , right=-77.7 , top=44.9))
gta=ggmap(ggmap)+ scale_y_continuous(limits=c(43.2, 44.5))



 ####################################################
###########for loop to make wind roses##############
###################################################

data_list<- list.files(path= "/home/npak/Documents/weather_data/meso_west_data/", pattern = "\\.csv$", recursive = FALSE, full.names = TRUE)

l<-length(data_list)



for (i in 1:l){

  header<-readLines(data_list[i], 8)
  variables = strsplit(header, ',')
  vars=variables[[7]]  
  info= strsplit(header, ':')
  lat= as.numeric(info[[3]][2])  
  long= as.numeric(info[[4]][2])
  elev= as.numeric(info[[5]][2])
  name=info[[2]][2]


  data <- read.table(data_list[i], header= FALSE, sep=",", col.names = paste0("V",seq_len(30)), fill=TRUE, skip=8)

  missing= length(data)-length(vars)
  colnames(data)= c(vars, rep("Empty", missing) )

  print(unique(data$Station_ID))

  data$ws<-data$wind_speed_set_1
  data$wd<-data$wind_direction_set_1
  data$date<- as.POSIXct(data$Date_Time, format = "%Y-%m-%d %H:%M")
  ID<-unique(data$Station_ID)


  png(filename=(file<- paste('/home/npak/Documents/weather_data/meso_west_data/map_1year/', ID ,'all_year_map.png')), 
      width = 2400, height = 2400,bg = "transparent")
 windRose(data,  
           breaks = c(1.5,3.3,5.5,8),
           max.freq = 25
           ,paddle = FALSE, 
          ,  annotate = FALSE, key= FALSE,
           auto.text = FALSE, ,grid.line = list(lty =0, value= 10),
          cols=c("red", "red2", "red3", "red4"))
  #,annotate = FALSE, key= FALSE)
  #dev.off()
  dev.off.crop(file=file)


  mypng <- readPNG(file<- paste('/home/npak/Documents/weather_data/meso_west_data/map_1year/', ID ,'all_year_map.png')) 


  gta=gta+inset_raster(mypng, ymin = lat-0.2,ymax= lat+0.2,xmin = long-0.2,xmax = long+0.2)


}

######################################################
###############save map into png#######################################
##########################################################

png('/home/npak/Documents/weather_data/meso_west_data/map_1year/gta_annual.png', 
    width = 2400, height = 2400)
print(gta)
dev.off()

但它看起来并不那么好。现在我用透明背景保存png图像,但轴和框架仍然存在,这使得地图看起来有点乱。这就是它的样子:

Windroses overlayed on map

所以我正在寻找类似的东西,但要直接在地图上绘制而不是使用png图片。

0 个答案:

没有答案