これには、rgeos
パッケージのgDistance
機能を試してみることができます。例として、以下の例を見てみましょう。これはこのold threadから書き直しました。それが役に立てば幸い。
require(rgeos)
require(sp)
# Make some polygons
grd <- GridTopology(c(1,1), c(1,1), c(10,10))
polys <- as.SpatialPolygons.GridTopology(grd)
# Make some points and label with letter ID
set.seed(1091)
pts = matrix(runif(20 , 1 , 10) , ncol = 2)
sp_pts <- SpatialPoints(pts)
row.names(pts) <- letters[1:10]
# Plot
plot(polys)
text(pts , labels = row.names(pts) , col = 2 , cex = 2)
text(coordinates(polys) , labels = row.names(polys) , col = "#313131" , cex = 0.75)
# Find which polygon each point is nearest
cbind(row.names(pts) , apply(gDistance(sp_pts , polys , byid = TRUE) , 2 , which.min))
# [,1] [,2]
#1 "a" "86"
#2 "b" "54"
#3 "c" "12"
#4 "d" "13"
#5 "e" "78"
#6 "f" "25"
#7 "g" "36"
#8 "h" "62"
#9 "i" "40"
#10 "j" "55"
「空間インデックス」とはどういう意味ですか? –
@RomanLuštrik:kdツリーのようなデータ構造を意味します。 http://en.wikipedia.org/wiki/Spatial_index#Spatial_indexこのデータ構造は、3000ポリゴンデータセットの検索を高速化します。 – krlmlr
通常、rgeosパッケージはジオメトリ操作のための最善の策です。適切なときに空間インデックスを使用していることは確かです。 GEOS Cライブラリに基づいています。 – Spacedman