library(RColorBrewer) library(tmap) source("aosm.r") getMapdata <- function(file,distance=NULL) { cities <- read.csv(file,stringsAsFactors=FALSE) if(is.null(distance)) { distance <- as.numeric(cities$distance) } mapdata <- list() mapdata$cities <- as.character(cities$city) mapdata$names <- as.character(cities$name) mapdata$data <- list() for(i in 1:nrow(cities)) { string <- paste0(cities$city[i],"\n1\n") adj <- distance[i]/111.325 string <- paste0(string,cities$lng[i]-adj," ",cities$lat[i]+adj,"\n") string <- paste0(string,cities$lng[i]+adj," ",cities$lat[i]+adj,"\n") string <- paste0(string,cities$lng[i]+adj," ",cities$lat[i]-adj,"\n") string <- paste0(string,cities$lng[i]-adj," ",cities$lat[i]-adj,"\n") string <- paste0(string,cities$lng[i]-adj," ",cities$lat[i]+adj,"\n") string <- paste0(string,"END\nEND") writeChar(string,paste0(cities$city[i],"_",distance[i],".poly")) mapdata$data[i] <- aosm(cities$city[i],paste0(cities$city[i],"_",distance[i]),"t_building","default","polygon") print(paste0(cities$name[i]," - completed!")) } return(mapdata) } plotMaps <- function(mapdata,size,colour=NULL) { nc <- length(mapdata$cities) for(i in 1:nc) { if(is.null(colour)) { col <- sample(brewer.pal(5,"Set1"),1) } else { col <- colour } mapplot <- tm_shape(mapdata$data[[i]])+ tm_polygons(col=col,border.alpha=0)+ tm_layout( fontfamily="Baskerville", title.color=col, title.bg.color="white", title = paste0(toupper(mapdata$names[i])," "), title.position = c("right","bottom"), title.size = 0.25*size/1000, frame = TRUE, outer.margin = 0.01, inner.margin = c(0.028,0.01,0.01,0.01) ) save_tmap(mapplot,paste0(mapdata$cities[i],".png"),width=size,height=size) } } mapdata <- getMapdata("cities.csv") plotMaps(mapdata,5000)