【发布时间】:2013-05-03 03:20:58
【问题描述】:
我目前正在做一个项目,我有一个点特征——点特征包括 142 个点——和多个多边形(大约 10 个)。我想计算 R 中每个点与最近的多边形特征之间的距离。
我目前的方法很乏味,而且有点啰嗦。我目前正计划计算每个点和每个多边形之间的距离。例如,我将计算 142 点与多边形 A 之间的距离、142 点与多边形 B 之间的距离、142 点与多边形 C 之间的距离等。以下是这些距离计算之一的示例代码:
dist_cen_polya <- dist2Line(centroids_coor, polygonA_shp)
完成这些计算后,我会编写一个代码来选择每个点和最近的多边形之间的最小/最近距离。问题是这个过程很乏味。
有谁知道可以最大限度地减少计算工作量/计算时间的包/代码?我真的很想使用一个包来比较一个指向最近的多边形特征或计算一个点和所有感兴趣的多边形之间的距离?
谢谢。
【问题讨论】:
-
从你的最后一段来看,你似乎有一个数学问题:找到一个比进行以下比较更好的算法,对吧?这可能更适合数学 SE。
-
spatstat包也许可以做你想做的事。我不是该工具集的专家,因此无法确定。 -
有了这里涉及的数字,10 个多边形和 142 个点(1420 个距离!)蛮力应该不是问题。如果你不喜欢 for 循环,
plyr包应该可以帮助你。 -
如果您的多边形足够小可以近似为点(即从点到多边形中心的距离足够接近从点到多边形边缘的距离),您可以使用 Voronoi 镶嵌(又名 Dirichlet镶嵌)在多边形的中心(使用
deldir包),然后一个点所在的Voronoi瓦片将对应于它最近的多边形。 -
@shujaa 我必须对另外二十组点和多边形执行相同的程序。因此,我将接近 20,000 距离。我希望让它不那么啰嗦。
标签: r polygon distance point nearest-neighbor