R ggmap:用救济数据覆盖欧洲大纲(GTOPO30)

时间:2018-02-22 10:30:43

标签: r ggmap

我面临的问题是将欧洲大纲与欧洲环境署的救济数据叠加在一起。

我找到了一个有价值的资源来代表来自欧洲的ggmap here数据。可以下载所需的管理边界here。 但是,我想用欧洲的浮雕(GTOPO30),而不是用谷歌地图覆盖欧洲大纲。我找到了相应的数据here

但是,我无法将两张图组合在一起。我想问题出在不同的协调系统中:

管理边界示例: 长拉特 16.56577 47.63857 救济案例:
值x y 38 124.5 196.5

相应的图表看起来像this

非常感谢任何帮助!

这是我的代码:

library(rgdal)
library(rgeos)
library(maptools)
library(ggplot2)
library(ggmap)
library(raster)
library(dplyr)

setwd("your working directory")

# read in background relief
relief <- raster("elevation9x9/elevation9x9.tif")
relief_spdf <- as(relief, "SpatialPixelsDataFrame")
relief <- as.data.frame(relief_spdf) %>% 
  rename(value = `elevation9x9`)

# read administrative boundaries
eurMap <- readShapePoly(fn="NUTS_2010_60M_SH/data/NUTS_RG_60M_2010.shp")
eurMapDf <- fortify(eurMap[eurMap$STAT_LEVL_==0,],region="NUTS_ID")

# read downloaded data
eurEdu <- read.csv("educ_thexp_1_Data.csv", stringsAsFactors = F)
eurEdu$Value <- as.double(eurEdu$Value) #format as numeric

# merge map and data
eurEduMapDf <- merge(eurMapDf, eurEdu, by.x="id", by.y="GEO")
eurEduMapDf <- eurEduMapDf[order(eurEduMapDf$order),]

#limit data to main Europe
lon <- c(54.78333,24.08464,-31.26192,59.34569)
lat <- c(80.56667,34.83469,39.45479,62.21215)
europe.limits = data.frame(lon,lat)

eurEduMapDf <- subset(eurEduMapDf, long > min(europe.limits$lon) & long < max(europe.limits$lon) & lat > min(europe.limits$lat) & lat < max(europe.limits$lat))

p <-    ggplot() +
        geom_raster(data = relief, aes(x = x, y = y, alpha = value)) +
        geom_polygon(data=eurEduMapDf, aes(x=long, y=lat, group=group, fill=Value)) + coord_equal() +
        geom_path(data=eurEduMapDf, aes(x=long, y=lat, group=group), color='white')

0 个答案:

没有答案