使用qmap将地图范围设置为最小和最大纬度/经度

时间:2016-10-13 21:58:20

标签: r ggplot2 ggmap qmap

我有许多人的点数据,并使用for循环为每个人生成地图。有些人每天比其他人旅行得更远,因此每个人的范围/缩放需要不同。在一个循环中,我一直在为每个人使用质心来生成qmap的地图,但还需要为每个人获得唯一的范围/缩放。

我已经在下面生成了一个可重现的示例,其中IndID BBB与IndID AAA相比具有较小的归属范围(不会远行)。对于每个人,我导出一个地图,虽然下面我已经将结果地图写入list对象以获得再现性。

library(ggmap)
set.seed(123)
dat1 <- data.frame(IndID = rep("AAA", 100),
                   Lat = sample(seq(45.500,45.900, 0.001), 100,  replace = T),
                   Long = sample(seq(111.2,111.805, 0.001), 100, replace = T)*-1)


dat2 <- data.frame(IndID = rep("BBB", 100),
                   Lat = sample(seq(45.655,45.700, 0.001), 100,  replace = T),
                   Long = sample(seq(111.4,111.5, 0.001), 100, replace = T)*-1)


dat <- rbind(dat1, dat2)

###Look at the Points
MeanLat <- mean(dat$Lat, na.rm = TRUE) 
MeanLon <- mean(dat$Long, na.rm = TRUE) 

BaseMap <- qmap(location = c(lon = MeanLon, lat = MeanLat), zoom = 10,  maptype = "terrain")

BaseMap + geom_point(aes(x = Long, y = Lat, color = IndID), data = dat, size = 4)+
  scale_colour_manual(values = c("darkblue","red"),drop=FALSE) 

###Make list and run loop
Maps <- list()

for( i in unique(dat$IndID)){
  #Subset data to IndID i
  IndDat <- subset(dat, IndID == i)

  #Get mean lat and long for IndID i
  MeanLat <- mean(IndDat$Lat, na.rm = TRUE) 
  MeanLon <- mean(IndDat$Long, na.rm = TRUE) 

  #Get base map
  BaseMap <- qmap(location = c(lon = MeanLon, lat = MeanLat), zoom = 10,  maptype = "terrain")

  #plot points on base map 
  FnlMap <- BaseMap + geom_point(aes(x = Long, y = Lat, color = IndID), data = IndDat, size = 4)+
    scale_colour_manual(values = c("darkblue","red"),drop=FALSE) 

  #Store in list object
  Maps[[i]] <- FnlMap
}

Maps$AAA
Maps$BBB

在这种情况下,zoom的{​​{1}}参数设置为10.这适用于AAA,但不适用于BBB,使用缩放13可以更好地查看。

我正在为许多人生成地图,并希望为循环中的每个人定义适当的缩放/范围。我没有依赖qmap参数,而是想使用min和max lat和long值来设置范围,但在zoom中似乎不可能。

任何建议都将不胜感激。

0 个答案:

没有答案