如何从density.lpp绘制特定段

我使用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

如何从density.lpp绘制特定段

z15dgh354588 回答:如何从density.lpp绘制特定段

这是关于spatstat软件包的问题。

density.lpp的结果是类linim的对象。对于任何此类对象,可以使用as.data.frame提取数据。这将为网络上的每个采样点生成一个带有一行的数据帧。对于每个采样点,数据分别为xc,yc(最近像素中心的坐标),x,y(网络上采样点的精确坐标),seg(段的标识符),{{1 }}(沿线段的相对位置)和tp(密度值)。如果按values列拆分数据帧,则将获得网络的单个网段的数据。

但是,似乎您可能需要有关seg内部工作的信息。为了在计算阶段达到足够的精度,density.lpp将每个网络段细分为许多短段(使用一组复杂的规则)。当最终结果离散化为density.lpp对象并返回时,该信息将会丢失。属性linim报告在计算阶段使用的短段的长度,仅此而已。

如果您直接给我发电子邮件,我可以告诉您如何提取内部信息。

本文链接:https://www.f2er.com/2356885.html

大家都在问