これは、RANN
パッケージを使用した1つの方法です。このアプローチはthis postに示されているものに類似していますが、1組の点に適合しています(リンクされた点は集合Aの最も近い点を集合Bの各点に近づけることでした)。上記
xy <- read.table(text='point x y
1 1601774 14544454
2 1616574 14579422
3 1608698 14572922
4 1602948 14572990
5 1607355 14573871
6 1615336 14578178
7 1603398 14574495
8 1605153 14570727
9 1606758 14573845
10 1606655 14570953', header=TRUE, row.names=1)
library(RANN)
closest <- nn2(data=xy, k=2)[[1]]
、我々はdata
引数に、ポイント、xy
のあなたの単一のセットを供給し、そして最も近い点が焦点であるので、我々はnn2
は(各点に最寄りのポイントを見つけたいことを指定自体)。 nn2
関数は、次の2つの要素を持つリストを返します。k
の最も近い点(クエリされた点ごとに)のそれぞれのインデックスのベクトル(この場合は行列)。距離のベクトル(行列)である。私は距離には興味がないと仮定しているので、結果を最初の要素にサブセット化します。
私たちの問題では、結果は、2列目の行列で、最初の列のクエリされた点のインデックスと2番目の列の最も近い点のインデックスを与えます。
closest
## [,1] [,2]
## [1,] 1 8
## [2,] 2 6
## [3,] 3 5
## [4,] 4 7
## [5,] 5 9
## [6,] 6 2
## [7,] 7 4
## [8,] 8 10
## [9,] 9 5
## [10,] 10 8
は、最寄りの点の座標の行列を取得するには、使用することができます:デフォルト
nn2
ことで
xy[closest[, 2], ]
は、kd木を使用しています - あなたはtreetype='bd'
を試してみることをお勧めします。
ようこそスタックオーバーフロー!小さなサンプルデータセットを含めてください(私はNAD27座標系に精通していませんし、他の人もそうかもしれないと思います)。さらに、この操作を実行しようとしたコードを含めてください。 – josliber
なぜマイナス点?それは良い質問です。彼に質問の編集を依頼してください。 – Soheil
'sp :: spDists'や' rgeos :: gDistance'が助けなければなりませんが、まずいくつかのことを試す必要があります(人々は単にコードを書くつもりではありません) – hrbrmstr