【问题标题】:Finding euclidean distance between separate but linked points confined by an irregular polygon window查找由不规则多边形窗口限制的独立但链接点之间的欧几里德距离
【发布时间】:2015-10-16 00:16:49
【问题描述】:

我关注Finding euclidean distance in R{spatstat} between points, confined by an irregular polygon window 的帖子到最后,一切顺利,太好了。但是,在我的情况下,我想获取数据 A 中的点到数据 B 中的点的距离,但前提是两个数据集具有相同的 ID 值。我的问题可以遵循Finding euclidean distance in R{spatstat} between points, confined by an irregular polygon window 中的示例,但使用两个 Pts 数据帧,而不是查找 Pts 中的点之间的距离,如果 Pts1$ID == Pts2$ID(假设您添加和 ID 列)。在 Pts1 和 Pts2 中都有许多级别的 ID。

【问题讨论】:

    标签: r polygon euclidean-distance r-raster spatstat


    【解决方案1】:

    免责声明:这是在没有测试任何代码的情况下编写的,因此不能保证它可以正常工作,但它提供了解决问题的直接方法。

    函数gdistance::costDistance接受第三个参数来指定从第二个参数中的点到第三个参数中的点的距离,因此拥有数据A和数据B应该没有问题。

    现在为每个 ID 执行此操作:如何简单地将点集拆分为每个 ID 的单独的点集,然后在 for 循环中为每个点执行距离代码?

    如果 ABdata.frames 和你的坐标,IDAIDB 是具有相同水平的因子,表示点的 ID,那么你可以拆分成列表并像这样计算距离(假设您已经从链接到的答案中运行了相应的代码):

    Alist <- split(A, IDA)
    Blist <- split(B, IDB)
    rslt <- list()
    for(i in seq_along(Alist)){
        rslt[[i]] <- costDistance(tr1, Alist[[i]], Blist[[i]])
    }
    

    【讨论】:

    • 这很有用,但 Alist 和 Blist 需要为 SpatialPoints() 才能运行 costDistance()。也许在拆分之前转换为 SpatialPoints()?
    • 我没有对此进行测试,但参数文档说:fromCoords:第一组点位置('SpatialPoints',矩阵或数字类) toCoords:第二,可选的点位置集(' SpatialPoints',矩阵或数值类)
    • 是的,您可以设置 to 和 form 坐标。但是,当它只需要计算具有相同标识符的点之间的距离时,它会计算 17 X 10000 距离。
    • 数字 17 和 10000 对我来说毫无意义。我在您的问题中没有看到任何地方提到它们。我怎么知道计算这个距离数是对还是错?您是否使用 for 循环中的拆分数据列表执行此操作?您能否分享一些示例代码,以便我们准确了解您在做什么?
    猜你喜欢
    • 2014-05-21
    • 2011-01-29
    • 2019-07-10
    • 2015-12-03
    • 2012-07-03
    • 1970-01-01
    • 1970-01-01
    • 2018-09-23
    • 2020-12-25
    相关资源
    最近更新 更多