ダウンロードされたデータには、率直なロケーションエラーが含まれているため、最初に行うべきことは、座標を適切な値に制限することです。
data.df <- read.csv("f:/temp/All_Africa_1997-2011.csv", header=TRUE, sep=",",row.names=NULL)
data.df <- subset(data.df, subset=(LONGITUDE >= -180 & LATITUDE >= -90))
グリッドセルの座標と識別子の計算は、緯度と経度の値から小数を切り捨てるだけです。(より一般的には、任意のラスターの場合、最初にそれらを中央に配置して単位セルサイズに縮小し、小数点以下を切り捨ててから、以下のコードに示すように元の位置に再拡大縮小しji
ます。)これらの座標を一意の識別子に組み合わせて、入力データフレームに添付し、CSVファイルとして拡張データフレームを書き出します。ポイントごとに1つのレコードがあります。
ji <- function(xy, origin=c(0,0), cellsize=c(1,1)) {
t(apply(xy, 1, function(z) cellsize/2+origin+cellsize*(floor((z - origin)/cellsize))))
}
JI <- ji(cbind(data.df$LONGITUDE, data.df$LATITUDE))
data.df$X <- JI[, 1]
data.df$Y <- JI[, 2]
data.df$Cell <- paste(data.df$X, data.df$Y)
代わりに、各グリッドセル内のイベントを要約した出力が必要な場合があります。これを説明するために、セルごとのカウントを計算し、セルごとに1レコードを出力します。
counts <- by(data.df, data.df$Cell, function(d) c(d$X[1], d$Y[1], nrow(d)))
counts.m <- matrix(unlist(counts), nrow=3)
rownames(counts.m) <- c("X", "Y", "Count")
write.csv(as.data.frame(t(counts.m)), "f:/temp/grid.csv")
他の要約についてfunction
は、の計算で引数を変更しますcounts
。(または、スプレッドシートまたはデータベースソフトウェアを使用して、セル識別子で最初の出力ファイルを要約します。)
チェックとして、グリッドの中心を使用してカウントをマップし、マップシンボルを見つけましょう。(地中海、ヨーロッパ、大西洋に位置する地点には疑わしい場所があります。それらの多くは、データ入力プロセスで緯度と経度を混同した結果であると思われます。)
count.max <- max(counts.m["Count",])
colors = sapply(counts.m["Count",], function(n) hsv(sqrt(n/count.max), .7, .7, .5))
plot(counts.m["X",] + 1/2, counts.m["Y",] + 1/2, cex=sqrt(counts.m["Count",]/100),
pch = 19, col=colors,
xlab="Longitude of cell center", ylab="Latitude of cell center",
main="Event counts within one-degree grid cells")
このワークフローは今