도로명 주소를 한국GPS 로 받으려고 합니다.
구글 API 를 사용해서 좌표를 GPS 로 변경 할 수 있지만, 이렇게 하면, 몇몇 주소들은 undefined 되는 값이 나온다. 이 사실을 인지했을 때에는 이미 늦어버린 후였고. 어쩔수 없이 다른 방법을 통해서 GPS 좌표를 구해서 DB에 구해서 작업을 하려고 한다.
내가 개발자는 아니어서 개인적으로는 네이버나 다음 API 를 이용해서 GEOCODER를 통해서 해결하면 되는 일이겠다 생각하지만, 개발사입장에서는 그게 쉬운일이 아닌가 보다. (왜 어려운지 모르겠다.)
아무튼 google spreadsheet 로 도로명 주소를 gps 좌표로 보려고 합니다.
준비물
- 네이버 or 다음 개발자 등록
- 구글 계정
순서
(네이버 개발자)를 기준으로 작업을 하려고한다.
네이버 API 를 사용하기 위해서는 개발자 등록을 해야한다.
네이버에 애플리케이션 등록(API 이용신청)을 합니다.
Naver-Client-ID 획득
Naver-Client-Secret 획득
애플리케이션 정보는 보는 곳에서 위의 정보를 얻어올 수 있습니다.
스프레드시트를 불러서 스크립트 작성을 시작 합니다.
저는 주소를 좌표로 변환하는 API 를 사용해서 하려고 합니다.
주소 -> 좌표 | 변환 API GET | https://openapi.naver.com/v1/map/geocode (json) https://openapi.naver.com/v1/map/geocode.xml (xml) | JSON / XML | 주소를 좌표로 변환 |
JSON 를 사용해서 하려고 햇는데, google spreadsheet API 문서를 보니 jsonParse
기능이 이제 지원을 안한다는 문구가 있어서 부득이 XML
을 사용했습니다.
function getXML(addr) {
var point = {};
var apiURL = 'https://openapi.naver.com/v1/map/geocode.xml?query='+addr;
var option = {
'method' : 'get',
'headers' : {
'X-Naver-Client-Id' : '네이버 클라이언트 아이디',
'X-Naver-Client-Secret' : '네이버 시크릿'
}
};
var xml = UrlFetchApp.fetch(apiURL,option).getContentText();
var doc = XmlService.parse(xml);
var root = doc.getRootElement();
Logger.log(xml);
var lng = root.getChild('items').getChild('item').getChild('point').getChild('x').getText();
var lat = root.getChild('items').getChild('item').getChild('point').getChild('y').getText();
point = { lng : lng, lat : lat};
return point;
}
function myFunction() {
var sheet = SpreadsheetApp.getActiveSheet();
var cell = sheet.getActiveCell(); // active cell
var addr = cell.getValue();
Logger.log(addr);
var point = getXML(addr);
// 오른쪽 두개에 입력하기
var cellright2 = cell.offset(0, 2);
var cellright3 = cell.offset(0, 3);
// 입력
cellright2.setValue(point.lat);
cellright3.setValue(point.lng);
}
네이버 클라이언트 아이디와 시크릿 코드를 코드에 삽입합니다.
주소를 입력해 둔 시트에 가서 커서를 올려둡니다.
스크립트 입력 페이지에서 스크립트를 실행합니다.
커서 오른쪽 두칸뒤애 좌표가 추가되는 것을 확인 할 수 있습니다.
조금편하게 사용하게 GUI 를 추가를 하고 잇는 중입니다만, 금방 때려칠 꺼 같은 귀찮음!
반응형
'컴퓨터' 카테고리의 다른 글
방수방진에 대해서 (0) | 2017.07.31 |
---|---|
sgminer 에서 다른 GPU를 못 잡을 때 (0) | 2017.07.28 |
Hyper-v 에 Centos 를 설치 및 네트워크 설정 (0) | 2017.07.16 |
ublock 네이버카페 막힘 해결하기 (0) | 2017.07.12 |
맥에서 omvs 사용하기 (0) | 2017.04.25 |