我正在尝试添加Veneto(意大利地区)定义的功能图
通过image
和contour
:
image(X,Y,evalmati,col=heat.colors(100), xlab="", ylab="", asp=1,zlim=zlimits,main=title)
contour(X,Y,evalmati,add=T)
(在这里你可以找到对象:https://dl.dropboxusercontent.com/u/47720440/bounty.RData)
在Google地图背景上。
我尝试了两种方法:
PACKAGE RGoogleMaps
我下载了地图mbackground
MapVeneto<-GetMap.bbox(lonR=c(10.53,13.18),latR=c(44.7,46.76),size = c(640,640),MINIMUMSIZE=TRUE)
PlotOnStaticMap(MapVeneto)
但我不知道将image
和contour
定义的地图添加到地图有用的命令
PACKAGE loa
我试过这种方式:
lat.loa<-NULL
lon.loa<-NULL
z.loa<-NULL
nx=dim(evalmati)[1]
ny=dim(evalmati)[2]
for (i in 1:nx)
{
for (j in 1:ny)
{
if(!is.na(evalmati[i,j]))
{
lon.loa<-c(lon.loa,X[i])
lat.loa<-c(lat.loa,Y[j])
z.loa<-c(z.loa,evalmati[i,j])
}
}
}
GoogleMap(z.loa ~ lat.loa*lon.loa,col.regions=c("red","yellow"),labels=TRUE,contour=TRUE,alpha.regions=list(alpha=.5, alpha=.5),panel=panel.contourplot)
但情节不像第一个:
在这个情节的图例中,我有7种颜色,而情节只使用这些值。 image
情节更准确。
如何将image
绘图添加到GoogleMaps背景?
答案 0 :(得分:5)
我不是真的在这个主题内部,但是Lovelace,R。&#34;在R&#34中可视化空间数据的介绍。可能会帮助你 https://github.com/Robinlovelace/Creating-maps-in-R/raw/master/intro-spatial-rl.pdf来自&#34;使用ggmap&#34添加基本地图到ggplot2;来自https://github.com/Robinlovelace/Creating-maps-in-R/archive/master.zip
的小变化和数据library(dplyr)
library(ggmap)
library(rgdal)
lnd_sport_wgs84 <- readOGR(dsn = "./Creating-maps-in-R-master/data",
layer = "london_sport") %>%
spTransform(CRS("+init=epsg:4326"))
lnd_wgs84_f <- lnd_sport_wgs84 %>%
fortify(region = "ons_label") %>%
left_join(lnd_sport_wgs84@data,
by = c("id" = "ons_label"))
ggmap(get_map(location = bbox(lnd_sport_wgs84) )) +
geom_polygon(data = lnd_wgs84_f,
aes(x = long, y = lat, group = group, fill = Partic_Per),
alpha = 0.5)
答案 1 :(得分:5)
如果不强制使用GoogleMap地图(例如,如果您只需要在地图上显示海岸线+某些深度/高度信息),您可以使用包marmap
来执行您想要的操作。请注意,您需要在github上安装最新的marmap开发版本才能使用readGEBCO.bathy()
,因为最近更改了下载GEBCO文件时生成的文件格式。来自NOAA服务器的数据很好,但在您感兴趣的区域不是很准确(对于GEBCO,只有一分钟的分辨率 vs 半分钟)。以下是我用来制作地图的GEBCO的数据:GEBCO file
library(marmap)
# Get hypsometric and bathymetric data from either NOAA or GEBCO servers
# bath <- getNOAA.bathy(lon1=10, lon2=14, lat1=44, lat2=47, res=1, keep=TRUE)
bath <- readGEBCO.bathy("GEBCO_2014_2D_10.0_44.0_14.0_47.0.nc")
# Create color palettes for sea and land
blues <- c("lightsteelblue4", "lightsteelblue3", "lightsteelblue2", "lightsteelblue1")
greys <- c(grey(0.6), grey(0.93), grey(0.99))
# Plot the hypsometric/bathymetric map
plot(bath, land=T, im=T, lwd=.03, bpal = list(c(0, max(bath), greys), c(min(bath), 0, blues)))
plot(bath, n=1, add=T, lwd=.5) # Add coastline
# Transform your data into a bathy object
rownames(evalmati) <- X
colnames(evalmati) <- Y
class(evalmati) <- "bathy"
# Overlay evalmati on the map
plot(evalmati, land=T, im=T, lwd=.1, bpal=col2alpha(heat.colors(100),.7), add=T, drawlabels=TRUE) # use deep= shallow= step= to adjust contour lines
plot(outline.buffer(evalmati),add=TRUE, n=1) # Outline of the data
# Add cities locations and names
library(maps)
map.cities(country="Italy", label=T, minpop=50000)
由于您的evalmati
数据现在是bathy
对象,您可以在地图上调整其外观,就像调整地图背景一样(调整轮廓线的数量和宽度,调整颜色渐变)等)。 plot.bath()
同时使用image()
和contour()
,因此您应该能够获得与使用image()
绘图时相同的结果。有关更多示例,请查看plot.bathy()
的帮助和包装插图。