2016-05-30 5 views
0

Im, делающий карту choropleth из Аргентины, в которой Im собираюсь построить некоторые данные.Уменьшение времени обработки для shp map choropleth

Я могу разместить карту без проблем, а также отобразить на ней некоторые данные. Например, как это:

enter image description here

Проблема в том, я думаю, что R является предоставлением карты в слишком высоком качестве (что мне не нужно) и время обработки принимают возрасты. (~ 3 минуты) Чтобы отобразить этот choropleth. Это код im, использующий.

arg_shp <- readOGR("ARG_adm_shp/ARG_adm1.shp", "ARG_adm1") 


puntos <- read.csv("puntos.csv", sep = ",", header = T) 

arg_pv <- fortify(arg_shp, region = "NAME_1") 

gg <- ggplot() 
gg <- gg + geom_map(data=arg_pv, map=arg_pv, 
        aes(long, lat, map_id=id), 
        color="#2b2b2b", size=0.15, fill=NA) 
gg <- gg + coord_map() 
gg <- gg + ggthemes::theme_map() 



gg + geom_map(data = puntos, aes(map_id = Provincia, fill = Puntos), 
       map = arg_pv) 

Или, альтернативно, я попытался использовать что-то подобное, чтобы понять, не имеет значения.

ggplot() + geom_map(data = puntos, aes(map_id = Provincia, fill = Puntos), 
        map = arg_pv) + expand_limits(x = arg_pv$long , y = arg_pv$lat) 

После попытки некоторых данных им хорошо известно, что код, который делает обработку займет много времени, очевидно, что

expand_limits

Как принимает информацию для всех данных 259K пункты в таблице укрепления.

Любые идеи, чтобы справиться с этим?

+0

В ggplot() + geom_map (data = puntos, aes (map_id = Provincia, fill = Puntos), map = arg_pv) + expand_limits (x = arg_pv $ long, y = arg_pv $ lat) ', интересно, вам понадобится только min и max long и lat. Прямо сейчас, мне кажется, что вы используете все значения long и lat. – jazzurro

ответ

2

ОБНОВЛЕНО для нового пути ggplot2 отображения "работает" O_o

Это:

library(maptools) 
library(rgdal) 
library(raster) 
library(rgeos) 
library(ggplot2) 
library(ggalt) 
library(ggthemes) 
library(viridis) 
library(magrittr) 

# as stated in the other answer, this is the same as your shapefile 
arg_adm <- raster::getData('GADM', country='ARG', level=1) 

# make the polygons a bit less verbose 
gSimplify(arg_adm, 0.01, topologyPreserve=TRUE) %>% 
    SpatialPolygonsDataFrame([email protected]) -> arg_adm 

# turn them into a data frame 
arg_map <- fortify(arg_adm, region="NAME_1") 

# use a gd projection for this region 
arg_proj <- "+proj=aeqd +lat_0=-37.869859624840764 +lon_0=-66.533203125" 

# reproducibly simulate some data 
set.seed(1492) 
puntos <- data.frame(id=c("Buenos Aires", "Córdoba", "Catamarca", "Chaco", "Chubut", 
          "Ciudad de Buenos Aires", "Corrientes", "Entre Ríos", "Formosa", 
          "Jujuy", "La Pampa", "La Rioja", "Mendoza", "Misiones", "Neuquén", 
          "Río Negro", "Salta", "San Juan", "San Luis", "Santa Cruz", 
          "Santa Fe", "Santiago del Estero", "Tierra del Fuego", "Tucumán"), 
        value=sample(100, 24)) 

# plot it 
gg <- ggplot() 

# necessary in the new world of ggplot2 mapping O_o 
gg <- gg + geom_blank(data=arg_map, aes(long, lat)) 

# draw the base polygon layer 
gg <- gg + geom_map(data=arg_map, map=arg_map, 
        aes(map_id=id), 
        color="#b2b2b2", size=0.15, fill=NA) 
# fill in the polygons 
gg <- gg + geom_map(data=puntos, map=arg_map, 
        aes(fill=value, map_id=id), 
        color="#b2b2b2", size=0.15) 

gg <- gg + scale_fill_viridis(name="Scale Title") 
gg <- gg + coord_proj(arg_proj) 
gg <- gg + theme_map() 
gg <- gg + theme(legend.position=c(0.8, 0.1)) 
gg 

enter image description here

ОКАЗЫВАЕТ действительно быстро на моей системе:

benchplot(gg) 

##  step user.self sys.self elapsed 
## 1 construct  0.000 0.000 0.000 
## 2  build  0.029 0.002 0.031 
## 3 render  0.206 0.006 0.217 
## 4  draw  0.049 0.001 0.051 
## 5  TOTAL  0.284 0.009 0.299 

Постарайтесь выполнить вышеупомянутую идиому против того, что вы делаете, или опубликовать вывод dput(puntos) в свой вопрос, чтобы он был воспроизводимым. Кроме того: продолжающееся включение всего окна RStudio в ваши вопросы действительно не является ни полезным, ни минимальным.

+0

Не могу поблагодарить вас. Это тоже очень быстро влияет на меня. Большое спасибо, почему другой рендеринг был настолько медленным? –

+0

Не совсем уверен, так как я не пытался реплицировать ваши данные и методы. Это «стандартный» способ выполнять операции ГИС, используя ggplot2. Это все о слоях, как в «реальных» программах ГИС. – hrbrmstr

+0

Получил это. Вы сделали это так просто. –