키워드를 입력하면 주어진 키워드의 위도와 경도를 검색하는 프로그램을 만들었다. 


가끔 필요할 때마다 프로그램 짜는게 너무 귀찮아졌다. (항상 대충 만들어서 나중에 재활용하기가 안좋더라고요.)
그래서 이번에 아주 예쁘게 만들어 필요하신 분에게 배포까지 하기로 결심했음...


Download: 

search_loc_to_lon_lat.py

프로그램의 개요는 다음과 같다.


-1: Pre-requirement

 - Python 2.x    (제작은 python 2.7에서...)

 - No additional Lib

 - Daum과 Naver의 API KEY!!! (이건 코드 안에 주석으로 자세히 설명해두었습니다.)


0. 실행 방법: python 프로그램.py  (실행 옵션은 이렇게 치면 나와요...)


 자세히...

 USAGE: python program.py -i (--input) input.txt -e (--encoding) cp949 - (--output) output.txt -s x,y (y,x)

 Default input encoding\t: utf-8

 Default output\t\t: save in result.txt

 Default output seq.\t: x\ty


1. Input

  - Input.txt 로부터 키워드를 읽어온다. 한 줄에 하나씩 키워드가 있어야 함.

예시: 

==== input.txt

인천광역시 중구청

철원군청

ㄱㄱㄱㄱㄱ

성균관대학교 자연과학캠퍼스



2. Output

  - 옵션에서 지정한 파일 이름 혹은 result.txt 로 저장

예시:

==== result.txt

#이름 x(경도) y(위도)

"인천광역시 중구청" 126.62161335 37.4738403028

"철원군청" 127.313518298 38.1469249461

ㄱㄱㄱㄱㄱ None None

"성균관대학교 자연과학캠퍼스" 126.97467286 37.2934204446


3. 특징 (별건 없지만...)

 - Input 파일의 인코딩을 지정해줄 수 있음. 그래서 운영체제 따위 가리지 않음. 인코딩 따로 변환할 필요도 없음.

 - Outputx coordinate와 y coordinate 의 순서를 정할 수 있음


4. 한계점

 - 국내용.... -.-


구글 맵에서 해보려고 했으나 지금 우리나라 주소만을 대상으로 위,경도 좌표가 필요해서 네이버 api를 사용하려고 한다.

 

주소를 가지고 api를 통해 위도, 경도 좌표를 얻는 일을 geocoding이라고 한다. (거꾸로 위도, 경도 좌표로 주소를 얻을 수도 있는데 이를 reverse geocoding이라고 부른다.) 이건 복잡하게 api에서 javascript를 부르고 코드를 짤 필요가 없을 것 같이 느껴질텐데, 맞다. 그럴 필요가 별로 없다. 홈페이지에 지도 넣고 부가기능 넣는게 더 힘든 일이다.

 

국내에서는(현재 날짜로 대충 2013년 4월 30일) NAVER map API를 사용할 수 있다. 다음 API도 있지만 아직 확인하지는 않았다. 네이버 서버자원이 더 풍부할테니 네이버에 신세좀 져야겠다.

 

1. 우선 API key를 발급받는다. 무한정 쿼리를 날려서 정보를 얻어올 수 없다. 그래서 key를 받고 하루에 정해진 양만큼을 써야한다. 근데 그 양도 꽤 많다.

 

https://dev.naver.com/openapi/register

 

지도 API 키를 등록한 후에 키를 저장해놓자.

 

2. 이제 절반 한거다. ㅎㅎㅎㅎㅎgeocoding을 하려면 다음과 같은 규칙으로 주소를 만들어 넣으면 된다.

1. http://openapi.map.naver.com/api/geocode.php?

2. key=test

3. &encoding=utf-8

4. &coord=tm128

5. &query=경기도성남시정자1동25-1

 

2번은 키를 넣는 부분이다. 아까 받은 key를 넣으시라.

3번은 인코딩을 정하는 부분인데 그냥 흔히 쓰는 utf-8로 고고

4번은 coodination을 정하는 곳이다. tm128(이게 중부원점 좌표인가 그럴텐데?)과 위경도 좌표계가 있다. 위경도는 latlng 을 넣으면 된다.

5번은 진짜 주소다.

(레퍼런스 : http://dev.naver.com/openapi/apis/map/javascript_2_0/reference#coordtrans)

 

이렇게 만든 주소(1+2+3+4+5, 합쳐서 15가 아님!)를 브라우저에 넣고 엔터를 치면 된다. XML로 결과값을 주는데 이걸 사용하기 좋은 언어로 파싱하면 된다.

 

참 쉽지요?

 

+ Recent posts