다운로드 된 데이터에는 일부 위치 오류가 포함되어 있으므로 가장 먼저해야 할 일은 좌표를 합리적인 값으로 제한하는 것입니다.
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 파일로 작성하십시오. 포인트 당 하나의 레코드가 있습니다.
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)
대신 각 그리드 셀 내에서 이벤트를 요약하는 출력을 원할 수 있습니다. 이를 설명하기 위해 셀당 카운트를 계산하여 셀당 하나의 레코드로 출력합니다.
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")
이 워크 플로우는