2012-09-07 193 views
3

我已經分析的使用density.ppp以產生一排序的點的強度,熱圖的GPS的點的數據集在r中shape文件的邊界,如下所示:限制陰謀

enter image description here

然而,我想圖像被限定於shape文件的邊界,類似於下面:

enter image description here

第一圖像被稱爲

x <- readShapePoly("dk.shp") 
xlim<-c(min(912),max(920)) 
ylim<-c(min(8023),max(8030)) 
a<-ppp([email protected][,1], [email protected][,2], xlim, ylim, unitname=c("km")) 
plot(density.ppp(a, 0.1), col=COLORS) 
plot(x, add=T, border="white") 

其中cases @ coords是每個感興趣點的GPS座標,而x是一個爲地理單位提供輪廓的shapefile。

plot(x, axes=T, col=COLORS, border="White") 

有誰知道這是如何做到:

第二圖像使用此代碼叫什麼?也許這是不可能的情節(),我會需要另一個包。

順便說一句,我打算做的下一步是將此圖片疊加在從GoogleEarth導入的地圖上。我還沒有確定怎麼做,要麼,但會後的答案,如果當我工作了

千恩萬謝

+0

你使用什麼軟件包? maptools和spatstat? – GSee

+0

那麼,第一個'plot()'使用上面提供的'xlim'和'ylim'。如果你想手動調整它們,使用'plot(...,ylim = c(0,100),xlim = c(0,100)' 你可以從調用'x @ bbox'的shapefile中找到xlim和ylim的值。 –

+0

If你的形狀邊界很好定義,你應該能夠用'多邊形'重疊繪圖,在形狀邊界和圖形邊界之間定義多邊形,並用白色或其他背景色填充該區域,但我打賭一些'ggplot ''或'maptools'專家會用正確的答案來響應:-) –

回答

4

density.ppp結果有(V),其中包含的信息矩陣,如果在繪製之前,interst多邊形之外的點會更改爲NA,那麼它們將不會繪圖。這是一個這樣做的例子:

library(maptools) 
library(sp) 
library(spatstat) 

xx <- readShapePoly(system.file("shapes/sids.shp", package="maptools")[1], 
     IDvar="FIPSNO", proj4string=CRS("+proj=longlat +ellps=clrk66")) 

x <- rnorm(25, -80, 2) 
y <- rnorm(25, 35, 1) 

tmp <- density(ppp(x,y, xrange=range(x), yrange=range(y))) 
plot(tmp) 
plot(xx, add=TRUE) 
points(x,y) 

tmp2 <- SpatialPoints(expand.grid(tmp$yrow, tmp$xcol)[,2:1], 
    proj4string=CRS(proj4string(xx))) 

tmp3 <- over(tmp2, xx) 

tmp$v[ is.na(tmp3[[1]]) ] <- NA 

plot(tmp) 
plot(xx, add=TRUE) 
+0

非常感謝Greg,它非常完美! –