设置在 R 中生成 Delaunay 图的最大长度

Set maximum length for generating Delaunay graph in R

我试图在 R 中使用 spatstat 函数生成 Delaunay 三角剖分 'delaunay'。但是,我检查了文档,似乎没有设置最大长度的参数。 我注意到这个 post: How to set maximum length of triangle side in Delaunay triangulation in R? 这似乎和我想要的一样,但由于我的点模式很大,所以我更喜欢简单快速的解决方案。谢谢!

这是我的代码:

pts <- data.frame(readMat(paste('./TMA - Coordinates/HE_Rescaled_Coords/', core, 
'/HE.mat', sep = '')))
colnames(pts) <- c('x', 'y')
pts_ppp <- ppp(pts$x, pts$y, owin(poly = Region_HE))
delaunay_ppp <- delaunay(pts_ppp)  

我也愿意接受使用其他软件包中的其他功能的解决方案。只要快就好。

区域数据如下:https://livejohnshopkins-my.sharepoint.com/:u:/g/personal/hmi1_jh_edu/EU5YeWiKzXlIohj7WIbfE_kB52Nbh2soXSNdHwQVukYnLA?e=t9tCf9

这是积分数据:https://livejohnshopkins-my.sharepoint.com/:u:/g/personal/hmi1_jh_edu/EaIuRF913rtBpg3VHvlp6TkB1FUomrgUc3eeUeHbVPJ50g?e=cwg1os

Delaunay三角剖分是一种数学定义的三角剖分,不涉及最大线段长度的概念。如果要限制三角剖分中线段的最大长度,那就不是Delaunay三角剖分了,计算Delaunay三角剖分的算法不适用。

您必须指定在对段长度施加限制时希望发生的情况。该算法是否应该只删除太长的边?删除边太长的三角形?如果删除内容,则结果不再是原始点的三角剖分。您想生成不同的三角剖分吗?

如果X是你的点阵型,那么

Dtess <- delaunay(X)
Dnet <- delaunayNetwork(X)

将 Delaunay 三角剖分作为镶嵌 Dtess 和网络 Dnet。 从 Dnet 中删除比 lmax 长的边:

len <- lengths_psp(as.psp(Dnet))
Net <- thinNetwork(Dnet, retainedges = (len <= lmax))

Dtess 中删除至少有一条边长于 lmax 的三角形:

hypotenuse <- function(p) { max(lengths_psp(edges(p))) }
h <- sapply(tiles(Dtess), hypotenuse)
Tess <- Dtess[h <= lmax]