R에서 osmdata를 사용한 지오 코딩

이전 게시물에서 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)

Leave a Reply

답글 남기기

이메일 주소는 공개되지 않습니다.

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.

Close

메타