data analysis & visualization

주소를 위경도로 변환

공간정보 오픈 플랫폼에서 제공하는 위도, 경도를 주소로 변환하는 방법과 주소를 위도, 경도로 바꾸는 방법을 알아보고자 한다. 

 

공간정보오픈플랫폼

 


회원가입을 한 뒤 위와 같이 접속

 

좌표계 설정

 

요청 변수 설정

api key

key=''

#address
add=c('대구대','경주시 성건동') 

post=paste0('http://api.vworld.kr/req/address?service=address&request=getCoord&key=',key,
'&address=',add,'&type=road')

 

CRS 등 &CRS=EPSG:4326 처럼 추가로 입력하면 된다.

 

iconv는 인코딩을 변경하는 코드이며, URLencode는 URL에 맞게 변환하는 코드이다.

 

url=sapply((iconv(post, from = "cp949", to = "UTF-8")),URLencode) 
library(XML) 
library(rjson) 
url_query=sapply(url,function(x){readLines(x,encoding='UTF-8')}) 

data.frame(dplyr::rbind_list(lapply(
sapply(url_query,function(x){paste0(x,collapse = '')}),
function(x)data.frame(fromJSON(x)))))[,20:21] 

URL이 여러개 입력될 것을 고려하여 sapply를 사용하였다. 

readLines는 URL을 불러오는 코드이며, fromJSON을 통해 api를 리스트형식으로 받아올 수 있다.

 

위경도를 주소로 변환

lonlat을 '128.3,38.3'처럼 만들어 post에 입력

입력된 URL을 앞에서와 같이 json형식으로 받아옴.

lonlat=data.frame(dplyr::rbind_list(lapply(sapply(url_query,
function(x){paste0(x,collapse = '')}),
function(x)data.frame(fromJSON(x)))))[,20:21] 

lonlat=paste0(lonlat[,1],',',lonlat[,2]) 
post=paste0('http://api.vworld.kr/req/address?service=address&request=getAddress&key=',key,
'&point=',lonlat,'&type=road') 

url=sapply(iconv(post, from = "cp949", to = "UTF-8"),URLencode) 
library(XML) 
library(rjson) 
url_query=sapply(url,function(x){readLines(x,encoding='UTF-8')}) 
# url_query <- readLines(url,encoding='UTF-8') 

data.frame(dplyr::rbind_list(lapply(sapply(url_query,function(x){paste0(x,collapse = '')}),
function(x)data.frame(fromJSON(x))))) 



불러오는 중입니다...

 

 

공간정보 오픈플랫폼 오픈API

Geocoder API 2.0 레퍼런스 Geocoder API 2.0 레퍼런스입니다. API 버전 : Geocoder API 2.0 레퍼런스 Geocoder API 1.0 레퍼런스 소개 좌표를 주소로 변환하는 서비스를 제공합니다. 요청URL을 전송하면 지오코딩 서비스를 사용하실 수 있으며 일일 지오코딩 요청건수는 최대 30,000건 입니다. 단, API 요청은 실시간으로 사용하셔야 하며 별도의 저장장치나 데이터베이스에 저장할 수 없습니다. 좌표를 주소정보

www.vworld.kr

 

 

'R' 카테고리의 다른 글

[ggplot2] 시각화 정리  (0) 2019.12.08
[R][SQL] RMariaDB 외부 접속 설정하기  (0) 2019.11.29
[ggmap] pie chart 그리기 예제  (0) 2019.11.26
ddply와 setDT 비교  (0) 2019.11.11
[공공데이터 포털] 버스 정류소 API 가져오기  (0) 2019.11.02