我使用density.lpp进行内核密度估计。我想在其中选择特定细分,然后通过所选细分来绘制估算值。例如,我有一条道路是两个路段的组合。每个段的长度不同,所以我不知道每个段被除以多少。
这是顶点和路段ID的位置。 https://www.dropbox.com/s/fmuul0b6lus279c/R.csv?dl=0
这是我用来在网络上创建空间线数据帧和随机点并获得密度估计的代码。
有没有一种方法可以知道每个段被除以多少?或者,如果我要绘制所选段的位置与估计的关系图,该怎么办?使用dimyx = 100可以创建199个估计点,但我不知道其中有多少个属于Swid = 1或Swid = 2。
我使用的一种方法是,使用gDistance
可以很好地解决此问题,因为这些段连接到一个方向,但是当有4种连接方式时,某些lambda值连接到另一个不属于的段到那个段。我提供图片并圈出2个点,当我使用gDistance
时,这些点与其他线段相连。有任何想法吗?
R=read.csv("R.csv",header=T,sep=",")
R2.1=dplyr::select(R,X01,Y01,Swid)
coordinates(R2.1) = c("X01","Y01")
proj4string(R2.1)=CRS("+proj=utm +zone=17 +datum=NAD83 +units=m +no_defs +ellps=GRS80 +towgs84=0,0")
plot(R2.1,main="nodes on the road")
##
LineXX <- lapply(split(R2.1,R2.1$Swid),function(x) Lines(list(Line(coordinates(x))),x$Swid[1L]))
##
linesXY <- SpatialLines(LineXX)
data <- data.frame(Swid = unique(R2.1$Swid))
rownames(data) <- data$Swid
lxy <- SpatialLinesDataFrame(linesXY,data)
proj4string(lxy)=proj4string(trtrtt.original)
W.1=as.linnet.SpatialLines(lxy)
Rand1=runiflpp(250,W.1)
Rand1XY=coords(Rand1)[,1:2]
W2=owin(xrange=c(142751.98,214311.26),yrange=c(3353111,3399329))
Trpp=ppp(x=Rand1XY$x,y=Rand1XY$y,window=W2) ### planar point object
L.orig=lpp(Trpp,W.1) # discrete
plot(L.orig,main="Original with accidents")
S1=bw.scott(L.orig)[1] # in case to change bandwitdh
Try274=density(L.orig,S1,distance="path",continuous=TRUE,dimyx=100)
L=as.linnet(L.orig)
length(Try274[!is.na(Try274$v)])
[1] 199