[공간정보오픈플렛폼]위경도 변환, 주소 변환
R2019. 11. 27. 13:45
공간정보 오픈 플랫폼에서 제공하는 위도, 경도를 주소로 변환하는 방법과 주소를 위도, 경도로 바꾸는 방법을 알아보고자 한다.
회원가입을 한 뒤 위와 같이 접속
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)))))
'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 |