将绘图限制为r中的shapefile边界

时间:2012-09-07 13:53:02

标签: r gps plot shapefile

我使用density.ppp分析了一个GPS点数据集,以生成一种点强度热图,如下所示:

enter image description here

但是,我希望图像仅限于shapefile的边框,类似于下面的内容:

enter image description here

第一张图片称为

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

其中case @ coords是每个兴趣点的GPS坐标,x是shapefile,它提供地理单位的轮廓。

使用此代码调用第二个图像:

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

有谁知道如何做到这一点?也许用plot()是不可能的,我需要另一个包。

另外,我计划的下一步是将此图片叠加在从GoogleEarth导入的地图上。我还不确定如何做到这一点,但是如果我将其解决,我会发布答案

非常感谢

1 个答案:

答案 0 :(得分: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)