r - 如何从 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,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
解决方案
这是关于spatstat
包裹的问题。
的结果density.lpp
是 class 的对象linim
。对于任何此类对象,您都可以使用它as.data.frame
来提取数据。这会为网络上的每个样本点生成一个数据框。对于每个采样点,数据是xc, yc
(最近像素中心的坐标)、x,y
(网络上采样点的精确坐标)、seg
(分段标识符)、tp
(沿分段values
的相对位置)和(密度值)。如果按seg
列拆分数据框,您将获得网络各个段的数据。
但是,您似乎需要有关density.lpp
. 为了在计算阶段获得足够的准确性,density.lpp
将每个网络段细分为许多短段(使用一组复杂的规则)。当最终结果离散化为对象并返回时,此信息将丢失。linim
该属性"dx"
报告在计算阶段使用的短段的长度,仅此而已。
如果您直接给我发电子邮件,我可以向您展示如何提取内部信息。
推荐阅读
- javascript - 使用Javascript根据索引将一个数组拆分为多个数组
- php - Windows 升级后 xampp 服务器不工作,我想在新窗口 11 中备份我的旧项目数据
- ios - viewport-fit=cover 不将视口扩展到 iOS Safari 上的状态栏区域(缺口附近)
- arrays - Laravel Collection/Array 找出两个结果之间的差异
- python - 如何在 Windows 11 中正确设置 pyspark?
- firebase - 由于双重加载配置错误,无法部署 Firebase 功能
- java - 我如何让用户将图像从画廊保存到他的 SharedPreferences?
- android - Android:在画布上使用适当的 x 和 y 位置以及 scaleX 和 scaleY 因子缩放位图和文本
- python - Python:如何从分箱和频率表创建直方图
- javascript - 反应 MUI 分页导致 MUI 导航栏中溢出