2017-03-28 12 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)第二の領域:私は最初のきれいなことを行うとGADMデータを集約する

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

次に、私のように、いくつかの領域をマージ

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私はBourgogne_Franche_Comte値が100でノルマンディー値が30であると言っています。 同じ色であるがレベルの異なる暗いまたは明るい緑色)。

まず私は、2つの空間ポリゴンマージする考え:多分プロット機能を使用しますが、

plot(joined, col = joined$Value) 

ポイント希望の色とのレベルを制御することである

joined <- union(Normandie, Bourgogne_Franche_Comte) 

を色 - 値によって異なります。

助けてください!

+0

再現可能な例を示してください。私はGADMが広く使われているデータセットだと理解していますが、使用しているものと同じデータを得るための準備が整ったコードを提供することや、おもちゃを作ることによって、問題を説明するために最初から作成されたシェイプファイルの例。 – JanLauGe

答えて

0

あなたの方法は、あなたがspatialpolygonオブジェクトに直接whichを使用しているときは、地域を選択する方法を簡素化することができます

を簡素化。例えば

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

あなたは、2つのポリゴンを組み合わせることrbindを使用することができます。

joined <- rbind(Normandie, Bourgogne_Franche_Comte) 

SpatialPolygonsDataFrameでは、あなたのポリゴンに外部データを追加することができます。 heat.colorsのようなパレットを使用して、値に応じてポリゴンの色を付けることができます。
したがって、完全なスクリプトは次のようになります。

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]) 

完全なフランスポリゴンを保つクリーンな方法を、

私は一度だけマージするポリゴンベクトル指定してgUnaryUnionを使用することをお勧めします。次に、外部データを追加することができます。

# 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]) 
関連する問題