3

ここに945のジオコーディングされた場所のセットがあります。各場所にはIDと特定の人口があります。

"ID","LON","LAT","POPULATION"
1,86.648064,22.80682,386
2,86.65358,22.81848,655
3,86.670502,22.78508,624
4,86.685028,22.842409,708
5,86.716599,22.866791,987
6,86.734879,22.87911,415
7,86.736687,23.112619,715

私は、すべての場所について、半径10km以内のすべての村の合計人口を把握しようとしています。

すべてのポイントの距離を計算するのは簡単です。

coords = read.csv("filepath/coords.csv", header=T, stringsAsFactors=F)
coords.matrix = data.matrix(coords[,c(2,3)])

library(sp)
dist = list()
for(i in 1:nrow(coords.matrix)) {
  dist[[i]] = (spDistsN1(coords.matrix, coords.matrix[i,], longlat=T)) #See: http://hosho.ees.hokudai.ac.jp/~kubo/Rdoc/library/sp/html/spDistsN1.html
}
dist = do.call(rbind, dist)

これにより、この945X945マトリックスが得られます。しかし、これらのセルをIDおよび対応する母集団に関連付けるにはどうすればよいですか?

4

1 に答える 1

3

マトリックスの距離がKMであると仮定すると、次のdistように実行できると思います。

coords$POPIN10KM <- sapply(1:nrow(dist),function(i)sum(coords$POPULATION[dist[i,]<10]))

これにより、データフレームに列が追加され、10KM以内の人口が示されます。

于 2012-04-04T11:48:44.450 に答える