计算相对于 X Y 坐标的最近点

问题描述

我试图找到关于 X 和 Y 坐标的最近点,相对于他们自己的土地覆盖类别和区域。但是,我希望按照此图处理与通常的最近点不同的替代方法,以便我可以避免距离为 0。

Diagram

通常是两点A和B之间最近的点;然后我们对 A 和 B 使用它们之间的距离。但是,我希望通过使用 A 和 B 之间最近的距离来解决这个问题,这样只有 A 或 B 具有该距离值,因此另一个点选择下一个离它最近的距离,等等。

鉴于上图;假设 C 和 B 与 A 的距离为偶数,使得 C 和 B 之间的距离大于它们到 A 的距离,则选择到 A 的距离。

我已经尝试过函数 nn2 但是,它并没有像提到的那样有效地间隔点,因为它会选择两点之间的距离,并将该距离用于两个点。有没有办法做到这一点?

输出可能如下所示:

    X      Y  year landcover pland_change encounter ly_name          distance   ID    points    
     <dbl>  <dbl> <int> <chr>            <dbl>     <dbl> <chr>         200       1      4
1  -7.62e6 5.86e6  2011 barren         -0.143     0.0253 Prairie_~      18       2      8
2  -7.22e6 5.86e6  2011 barren         -0.143     0.0392 Prairie_~      180      3      2
3  -7.22e6 5.86e6  2011 barren         -0.143     0.0392 Prairie_~      200      4      5
4  -7.39e6 5.86e6  2011 barren         -0.0556    0.0246 Prairie_~      100      5      7
5  -7.40e6 5.85e6  2011 barren         -0.0833    0.0608 Prairie_~      200      6      6
6  -7.70e6 5.85e6  2011 barren         -0.143     0.0297 Prairie_~      150      7      1

其中distance计算km中点之间的距离,ID代表数据框中每个唯一的点,points代表ID已映射到。

可重现的代码

structure(list(X = c(-7615907.15123233,-7215137.15123233,-7390337.15123233,-7399097.15123233,-7696937.15123233,-7438517.15123233,-7655327.15123233,-7158197.15123233,-7534877.15123233,-7383767.15123233,-7657517.15123233,-7661897.15123233,-7659707.15123233,-7469177.15123233,-7322447.15123233,-7664087.15123233,-7712267.15123232,-7762637.15123232,-7710077.15123232,-7791107.15123232,-6897587.15123233,-7486697.15123233,-6915107.15123233,-6917297.15123233,-6926057.15123233,-6923867.15123233,-6921677.15123233,-6919487.15123233,-7379387.15123233,-7431947.15123233,-7434137.15123233,-7563347.15123233,-7436327.15123233,-7491077.15123233,-6928247.15123233,-6930437.15123233,-7591817.15123233,-7587437.15123233,-7585247.15123233),Y = c(5862248.2876254,5862248.2876254,5860168.2876254,5858088.2876254,5851848.2876254,5849768.2876254,5845608.2876254,5837288.2876254,5831048.2876254,5814408.2876254,5812328.2876254,5795688.2876254,5793608.2876254,5791528.2876254,5789448.2876254,5787368.2876254,5785288.2876254,5783208.2876254,5781128.2876254,5754088.2876254,5727048.2876254,5712488.2876254,5691688.2876254,5677128.2876254,5675048.2876254,5666728.2876254,5658408.2876254,5656328.2876254,5654248.2876254,5652168.2876254,5650088.2876254,5641768.2876254,5639688.2876254,5637608.2876254,5633448.2876254,5625128.2876254,5623048.2876254,5620968.2876254,5604328.2876254,5604328.2876254),year = c(2011L,2011L,2011L
),landcover = c("barren","barren","barren"),pland_change = c(-0.142857149243355,-0.142857149243355,-0.0555555559694767,-0.0833333358168602,-0.100000001490116,-0.0909090936183929,-0.0714285746216774,-0.25,-0.111111111938953,-0.16666667163372,-0.200000002980232,-0.125,-0.0666666701436043),encounter = c(0.0253428258001804,0.0392075702548027,0.024617126211524,0.0607607066631317,0.0296789277344942,0.0201033502817154,0.0209894124418497,0.0282098408788443,0.0349848158657551,0.0268693752586842,0.0563336089253426,0.036945529282093,0.0309623349457979,0.0585363209247589,0.0344486609101295,0.0461014062166214,0.0652390494942665,0.0118494974449277,0.0565750412642956,0.0135372998192906,0.0245329532772303,0.0230230912566185,0.0269634630531073,0.0287500899285078,0.0237087737768888,0.0222366657108068,0.044706467539072,0.0369599983096123,0.0324387364089489,0.0607137344777584,0.0287552513182163,0.0309876725077629,0.0271823368966579,0.0260571390390396,0.0502644516527653,0.0283330343663692,0.0202347375452518,0.0247625224292278,0.019514724612236,0.0214884802699089,0.0190866030752659,0.0576938390731812,0.0110736573114991,0.0114547843113542,0.0123803708702326,0.036116398870945,0.0347733832895756,0.0433427914977074
),ly_name = c("Prairie_Potholes","Prairie_Potholes","Prairie_Potholes")),row.names = c(NA,-50L),class = c("tbl_df","tbl","data.frame"))

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)