我正在寻找一种方法来获取一个SpatialLines
对象内所有交叉点的 xy 坐标或SpatialLinesDataFrame
. 我找到了的函数gIntersect
,rgeos
但它只查看两个数据集之间的交集。由于我正在使用超过 50 万行的数据集,因此需要花费太多时间来为每一行创建一个单独的文件并检查是否有任何行与另一行相交。在 ArcMap 中有一个 Intersect 函数可以在几秒钟内完成,我想知道 R 中是否也有这样的函数。谢谢!
问问题
1146 次
1 回答
1
如果您将SpatialLines
对象转换为psp
对象,spatstat
则可以使用该spatstat
函数selfcrossing.psp
。但是,我不确定它将如何处理 50 万条线路,因为潜在的交叉点数量可能非常巨大。下面的代码生成一个随机段模式并找到自交叉。
请注意,此代码可能会占用大量内存并杀死 R,因此在处理 50 万行之前尝试逐步增加示例。下面的代码在我用了 5 年的笔记本电脑上使用了相当多的内存,运行时间为 5 秒。
set.seed(42)
N <- 1e4
x <- psp(runif(N), runif(N), runif(N), runif(N), owin(), check=FALSE)
y <- selfcrossing.psp(x)
于 2014-10-28T21:46:44.993 回答