어제 저녁부터 ggmap에 네이버 맵 연동을 해볼 생각으로 코딩을 좀 했는데, 쓸만한 수준의 구현체가 나와 공유하고자 글을 쓴다.
ggmap이 위치 정보 시각화에 상당히 편리한 패키지임에도 국내 전용 지도가 아니어서 다양한 정보를 접할 수 없는 불편한 점이 있었는데, 네이버 staticmap API를 이용해 이 부분을 해결했다.
이걸 구현하는데, 지도의 X,Y 좌표와 그래프의 X,Y 좌표 연동을 하는게 가장 힘든 부분이었던것 같다(이를 위해 맵의 줌 레벨과 맵 해상도로 계산을 좀 해야했다).
위치 정보를 기반으로 주변의 POI(Points of Interest)를 함께 봐야 했던 나로서는 필요한 구현이라 생각한다. 구글맵은 이런 정보가 정말 부실하다.
예로서 지진 데이터와 네이버 맵을 기반으로 수도권 진원지 분포를 그려봤다. 네이버 지도에 traffic레이어를 추가해 현재(2013-08-09 12:21:09) 교통 현황도 올려봤다(지진과 별 상관은 없지만…).
eq <- read.table(url("http://dl.dropbox.com/u/8686172/eq.csv", encoding = "euc-kr"),
sep = "\t", header = T, stringsAsFactors = F)
eq$latitude <- unlist(strsplit(eq$latitude, " "))[seq(from = 1, to = nrow(eq),
by = 2)]
eq$longitude <- unlist(strsplit(eq$longitude, " "))[seq(from = 1, to = nrow(eq),
by = 2)]
library(lubridate)
eq$longitude <- as.double(eq$longitude)
eq$latitude <- as.double(eq$latitude)
eq$year <- as.factor(substr(eq$date, 1, 4))
eq$date <- ymd_hm(eq$date)
cent <- c(126.96136, 37.52962)
library(ggmap)
bmap <- ggmap(get_navermap(center = cent, level = 4, baselayer = "default",
overlayers = c("anno_satellite", "traffic"), marker = data.frame(cent[1],
cent[2]), key = "c75a09166a38196955adee04d3a51bf8", uri = "www.r-project.org"),
extent = "device", base_layer = ggplot(eq, aes(x = longitude, y = latitude)))
bmap + geom_point(aes(size = power, colour = date), data = eq, alpha = 0.7) +
geom_density2d()
현재 위 네이버 지도가 포함된 ggmap은 필자의 github에 올라가 있다. 아래와 같은 명령어를 사용하면 설치해서 사용 가능하다.
조만간 ggmap 패키지에 통합요청을 할 생각이다.
library(devtools)
install_github("ggmap", "haven-jeon")
center=c(lon=127.90, lat=36.45)
get_navermap(center = center, color=”bw”, level =3, baselayer = “default”,
overlayers = “traffic”, key = “c75a09166a38196955adee04d3a51bf8”, uri = “www.r-project.org”),
extent = “panel”
, maprange=FALSE
)
와
get_navermap(center = center, color=”bw” , baselayer = “default”,
overlayers = “traffic”, key = “c75a09166a38196955adee04d3a51bf8”, uri = “www.r-project.org”),
extent = “panel”
, maprange=FALSE
)
에서 level=3을 지정하지 않으면 색깔이 회색으로 가능하지만, level 값을 주면 color로 환원됩니다.
너무 늦게 답장을 드렸네요. ^^;
아직 https://github.com/dkahle/ggmap 에 결합되지는 않았으니 제 repo를 이용하시기 바랍니다.
https://github.com/haven-jeon/ggmap
설치가 귀찮으시다면, 옵션중에 “force=TRUE”를 첨부하시면 됩니다.
이제 갓 R공부를 시작한 1인 입니다.
본 예제 실행시 다음과 같은 에러가 발생합니다.
Error in ggmap(get_navermap(center = cent, level = 4, baselayer = “default”, :
could not find function “get_navermap”
navermap을 사용하기 위해서 설치해야 하는 Library가 있는지요?
도움을 받을 수 있을까요?
https://github.com/dkahle/ggmap 를 참고하시기 바랍니다.