이전 게시물에서 R의 Leaflet 패키지를 사용하여지도 기반 히트 맵 분포도를 생성하는 방법을 시연했습니다.이 예제에서는 위치를 Open Street Map API에 문자열로 보낸 다음 위도 및 경도 좌표를 반환으로받는 함수를 구현했습니다. JSON 형식의 값.
이 글에서는 “복잡한”기능을 구현하지 않고도 osmdata 패키지를 사용하여 지오 코딩 부분을 실현하는 방법을 보여 드리겠습니다.
먼저 위치로 사용할 일련의 도시와 마을을 정의합니다. 미리 정의 된 헤더 이름과 행 및 열 개수가있는 빈 데이터 프레임 템플릿에 추가합니다.
# 지오 코딩 프로세스를 채우기 위해 데이터 프레임 템플릿을 정의
data_df = as.data.frame(matrix(nrow=20,ncol=4))
colnames(data_df) = c("location","lat","long","values")
# 도시와 마을 이름을 위치로 추가
data_df$location = c("Siegen, Germany", #1
"Kreuztal, Germany", #2
"Netphen, Germany", #3
"Olpe, Germany", #4
"Freudenberg, Germany", #5
"Hilchenbach, Germany", #6
"Wilnsdorf, Germany", #7
"Betzdorf, Germany", #8
"Dillenburg, Germany", #9
"Marburg, Germany", #10
"Biedenkopf, Germany", #11
"Koblenz, Germany", #12
"Erndtebrück, Germany", #13
"Herborn, Germany", #14
"Cölbe, Germany", #15
"Haiger, Germany", #16
"Krombach, Germany", #17
"Wenden, Germany", #18
"Betzdorf, Germany", #19
"Münchhausen, Germany" #20
)
다음으로 R의 osmdata 패키지를 사용하여 위치를 지오 코딩합니다.
# R에서 osmdata 패키지 가져 오기
library(osmdata)
# 위치를 지오 코딩하기 위해 getbb () 함수 사용
for(i in 1:nrow(data_df)){
coordinates = getbb(data_df$location[i])
data_df$long[i] = (coordinates[1,1] + coordinates[1,2])/2
data_df$lat[i] = (coordinates[2,1] + coordinates[2,2])/2
}
이제 데이터 프레임에는 위치 이름과 지오 코딩 된 경도 및 위도 좌표가 포함됩니다. 또한 위치별로 무작위로 분포 된 관찰 값을 추가합니다 (이는 히트 맵 플롯의 색상 강도를 정의합니다).
# 위치별로 무작위로 분포 된 값 추가 (균일 분포)
data_df$values = runif(n = 20, min = 0, max = 100)
마지막 단계에서는 R의 Leaflet을 사용하여 위치 별 관측 값 분포를 표시하는 히트 맵을 생성합니다.
# leaflet, leaflet.extras 및 magrittr 가져 오기
library(leaflet)
library(leaflet.extras)
library(magrittr)
# Google 트렌드에 따라 버거 검색 강도에 대한 히트 맵 생성
data_df %>%
leaflet() %>%
addTiles() %>%
addProviderTiles(providers$OpenStreetMap.DE) %>%
setView(mean(data_df$long),mean(data_df$lat),8) %>%
addHeatmap(lng=~long,lat=~lat,intensity=~values,max=100,radius=30,blur=20)
최적화 및 시뮬레이션을 전문으로하는 산업 엔지니어 (R, Python, SQL, VBA)
Leave a Reply