Использование функции PlotPolysOnStaticMap в RgoogleMaps: построение моих полигонов возвращает цвета в "дырах"
Как видно из заголовка, я пытаюсь построить полигоны с помощью функции PlotPolysonStaticMap в RgoogleMaps. Мой полигон является подмножеством из большого набора данных экорегионов Всемирного фонда дикой природы (WWF). Поскольку границы моего экорегиона ограничивают границы другого экорегиона, в моих полигонах должна быть "дыра" или пустое пространство. Когда я строю шейп-файл с помощью функции построения, отверстие выглядит белым. Когда я строю полигон поверх базовой карты из RgoogleMaps, дыра появляется в цвете, и я не знаю, как это изменить.
Полная карта доступна здесь. Это должно быть загружено и разархивировано для моего кода, чтобы работать.
library(rgdal)
library(RgoogleMaps)
library(PBSmapping)
WWF<-readOGR(dsn="wwf_terr_eco.shp",layer="wwf_terr_eco"
ACADIA<-WWF[WWF@data$ECO_NAME%in%c("New England-Acadian forests"),]
ACADIA <- SpatialPolygons(ACADIA@polygons,proj4string=ACADIA@proj4string)
add.alpha <- function(col, alpha=1){
if(missing(col))
stop("Please provide a vector of colours.")
apply(sapply(col, col2rgb)/255, 2,
function(x)
rgb(x[1], x[2], x[3], alpha=alpha))
}
mycol=add.alpha("#507415",alpha=.4)
terrMap<-GetMap(center=c(46,-66.8),zoom=6,maptype="terrain")
PlotOnStaticMap(terrMap)
PlotPolysOnStaticMap(terrMap, ACADIA_ONLY,col =mycol ,border = NULL, lwd = 0.25,
verbose = T)
Спасибо!
1 ответ
Я плохо знаю RgoogleMaps
пакет (кажется, ошибка исходит от функции PlotPolysOnStaticMap
поведение со сложными полигонами), поэтому я не могу точно ответить на ваш вопрос, но я вас с другой стороны, вы можете играть с OpenStreetMap
,
library(rgdal)
library(OpenStreetMap)
WWF<-readOGR(dsn="/home/delaye/Téléchargements/official/",layer="wwf_terr_ecos")
ACADIA<-WWF[WWF@data$ECO_NAME%in%c("New England-Acadian forests"),]
##reprojection with osm system
ACADIA<-spTransform(ACADIA,osm())
##alpha definition
add.alpha <- function(col, alpha=1){
if(missing(col))
stop("Please provide a vector of colours.")
apply(sapply(col, col2rgb)/255, 2,
function(x)
rgb(x[1], x[2], x[3], alpha=alpha))
}
mycol=add.alpha("#507415",alpha=.4)
##load data from osm (you can play with type='bing' to)
map.osm<-openmap(c(49.849184,-75.214844),c(42.013233,-59.877930),type="osm")
plot(map.osm)
##add you datalayer on the plot
plot(ACADIA,add=T,col=mycol)
и результат
Я надеюсь, что это может помочь