我面临的问题是将欧洲大纲与欧洲环境署的救济数据叠加在一起。
我找到了一个有价值的资源来代表来自欧洲的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')