2017-03-28 7 views
0

내 주요 목표는 여러 공간 폴리곤을 맵에 결합한 다음 변수의 레벨에 따라 색상을 지정하는 것입니다. 같은 방식으로다른 레벨로 공간적 다각형을 색칠 R

Normandie_names <- c("Basse-Normandie", "Haute-Normandie") 
Normandie_index <- which(france$NAME_1 %in% Normandie_names) 
regionOfInterest_Normandie <- gUnionCascaded(france[Normandie_index, ]) 
Normandie  <- regionOfInterest_Normandie %>% geometry 
Normandie  <- sapply([email protected], slot, "area") %>% 
{which(. == max(.))} %>% Normandie[.] 
Normandie$Name <- "Normandie" 

2) 제 2 영역 :

france <- getData("GADM", country = "FRA", level = 5)  

다음, 나는대로 몇 지역을 병합 :

는 GADM 데이터를 그 내가 먼저 청소 할 및 집계하려면
Bourgogne_Franche_Comte_names <- c("Bourgogne", "Franche-Comté") 
Bourgogne_Franche_Comte_index <- which(france$NAME_1 %in%  
Bourgogne_Franche_Comte_names) 
regionOfInterest_Bourgogne_Franche_Comte <- 

gUnionCascaded(france[Bourgogne_Franche_Comte_index, ]) 
Bourgogne_Franche_Comte<-regionOfInterest_Bourgogne_Franche_Comte%>% geometry 
Bourgogne_Franche_Comte<- sapply([email protected], slot, "area") %>% 
{which(. == max(.))} %>% Bourgogne_Franche_Comte[.] 
Bourgogne_Franche_Comte$Name <- "Bourgogne_Franche_Comte" 

이제 2 개의 공간 폴리곤이 있지만 외부 값에 따라 색상을 지정하고 싶습니다. l et는 Bourgogne_Franche_Comte 값이 100이고 Normandie 값이 30이라고 말합니다. 같은 색이지만 다른 레벨 (예 : 어둡거나 밝은 녹색).

먼저 나는 두 개의 공간 다각형을 병합 할 생각 :

joined <- union(Normandie, Bourgogne_Franche_Comte) 

어쩌면 플롯 기능 만을 사용

plot(joined, col = joined$Value) 

포인트는 희망의 색상과 수준을 제어 할 수 있다는 것입니다 색상 - 값에 따라 다릅니다.

도움을 청합니다!

+0

재현 가능한 예를 제공해주십시오. GADM은 널리 사용되는 데이터 세트라는 점을 잘 알고 있지만 사용하고있는 데이터와 동일한 데이터를 얻을 수있는 준비가 된 코드를 제공하거나 장난감을 만드는 것만으로도 도움을 줄 수 있다면 좋을 것입니다. 문제를 설명하기 위해 처음부터 쉐이프 파일을 작성한 예입니다. – JanLauGe

답변

0

당신의 방법은, 당신은 spatialpolygon 개체에 직접 which를 사용하는 동안 지역을 선택하는 방법을 단순화 할 수

을 단순화. 예를 들어
:

Normandie_names <- c("Basse-Normandie", "Haute-Normandie") 
Normandie <- france[which(france$NAME_1 %in% Normandie_names),] 

당신은 두 개의 다각형을 결합 rbind를 사용할 수 있습니다

joined <- rbind(Normandie, Bourgogne_Franche_Comte) 

SpatialPolygonsDataFrame으로, 당신은 당신의 다각형에 외부 데이터를 추가 할 수 있습니다. heat.colors과 같은 팔레트를 사용하여 값에 따라 다각형을 색칠 할 수 있습니다.
따라서, 전체 스크립트는 다음과 같을 것이다 : 나는 다각형 한 번만 병합하는 벡터를 지정하여 gUnaryUnion를 사용하는 것이 좋습니다 완전한 프랑스 다각형

을 유지

library(sp) 
library(rgdal) 
library(raster) 
library(rgeos) 
library(dplyr) 
library(ggplot2) 

# Load data 
france <- getData("GADM", country = "FRA", level = 5) 

# Select features --------------- 
# Select Normandie 
Normandie_names <- c("Basse-Normandie", "Haute-Normandie") 
Normandie <- france[which(france$NAME_1 %in% Normandie_names),] 
Normandie.sp.tmp <- gUnaryUnion(Normandie) 
# Add external data to Normandie 
Normandie.sp <- SpatialPolygonsDataFrame(
    Normandie.sp.tmp, 
    data = data.frame(region = "Normandie", value = 30)) 

# Select Bourgogne 
Bourgogne_Franche_Comte_names <- c("Bourgogne", "Franche-Comté") 
Bourgogne <- france[which(france$NAME_1 %in% Bourgogne_Franche_Comte_names),] 
Bourgogne.sp.tmp <- gUnaryUnion(Bourgogne) 
# Add external data to Bourgogne 
Bourgogne.sp <- SpatialPolygonsDataFrame(
    Bourgogne.sp.tmp, 
    data = data.frame(region = "Bourgogne_Franche_Comte", value = 100)) 

# Merge both polygons with their data 
Regions.sp <- rbind(Normandie.sp, Bourgogne.sp) 

plot(Regions.sp, col = rev(heat.colors(50))[Regions.sp$value/2]) 

클리너 방법. 그런 다음 외부 데이터를 추가 할 수 있습니다.

# Create vector to define which regions will be united 
Union.vector <- rep(0, length(france)) 
Union.vector[which(france$NAME_1 %in% Normandie_names)] <- 1 
Union.vector[which(france$NAME_1 %in% Bourgogne_Franche_Comte_names)] <- 2 

# Unite regions 
Region.union.sp <- gUnaryUnion(france, id = Union.vector) 

# Add external dataset 
Region.union.sp.data <- SpatialPolygonsDataFrame(
    Region.union.sp, 
    data = data.frame(
    value = c(0, 30, 100), 
    region = c("all", "Normandie", "Bourgogne_Franche_Comte")), 
    match.ID = FALSE) 

plot(Region.union.sp.data, 
    col = rev(heat.colors(51))[1 + Region.union.sp.data$value/2])