2013-08-07 59 views
1

假設我正在使用maptools繪製世界地圖上的國家,如果我想繪製一個國家,是否有一種方法可以繪製以不同顏色與這個國家接壤的國家?我使用的是帶有maptools shape文件wrld_simpl,所以說我繪製中國:R:使用maptools繪製鄰國

plot(wrld_simpl[wrld_simpl$NAME=='China',], col='red', add=T) 

有沒有方法可以讓我得到它的所有鄰國繪製到中國。我希望能夠爲很多不同的國家做到這一點,所以我最好想要一個通用解決方案,而不是僅針對中國。

回答

3

gTouchesgIntersects如何在rgeos

library(rgeos) 
library(maptools) 
wc <- subset(wrld_simpl, NAME == "China") 
world <- subset(wrld_simpl, !NAME == "China") 

創建一個向量來存儲測試:

tst <- logical(nrow(world)) 

做測試:

for (i in 1:nrow(world)) { 
    tst[i] <- gTouches(wc, world[i,]) 
} 

看到的結果是:

levels(world$NAME)[world$NAME[tst]] 
[1] "India" "Russia" 

plot(wc) 
plot(world[tst, ], add = TRUE, col = "grey") 

(在世界上沒有其他書信事務將進入,但gInterse cts似乎給出了更好的答案)。

強烈建議你把這些內置的數據集謹慎,你肯定需要得到你的手可靠的數據,如果你使用任何非平凡的目的這樣的一個工具。幾何和數據已經夠棘手了。 :)

for (i in 1:nrow(world)) { 
    tst[i] <- gIntersects(wc, world[i,]) 
} 
length(levels(world$NAME)[world$NAME[tst]]) 
[1] 14 
plot(world[tst, ], col = "firebrick") 
plot(wc, add = TRUE, col = "grey") 
+0

這是一個很好的解決方案,特別是與gIntersects,謝謝! – userk