[Android] Reverse Geocoder (구주소 / 지번주소 출력하기 - OpenAPI2)

2014. 8. 28. 14:20Programing/Android / Java

정부에서 신주소 정책을 펴면서 구주소의 정보가 신주소로 옮겨가고 있습니다.
이로 인해 구글에서 제공하는 Geocoder가 무용지물이 되어가고 있네요;;;;;
에효~~~
그래서 이를 해결할 수 있는 방법을 소개할까 합니다.

바로 통계청에서 제공해주는 OpenAPI2를 사용하는 것입니다.
신청도 간단하고 사용법도 그리 어렵지는 않습니다.




먼저, 어떠한 API가 제공되고 어떻게 사용하는지 숙지하시기 바랍니다.

[좌표 변환]


Reverse Geocoder [역지오코더]


그 다음, 사용을 위한 API 인증코드를 발급 받습니다.

[신청하기]
http://sgis.kostat.go.kr/OpenAPI2/contents/index.vw > 로그인 > 인증키 발급 > API키 인증신청

 
몇 시간 이후 인증이 되었는지 확인 합니다.

[API 인증 확인]
http://sgis.kostat.go.kr/OpenAPI2/contents/index.vw > 로그인 > 인증키 발급 > API키 인증신청 > 신청내역
 

인증까지 정상적으로 되었다고 하면, 아래 경로로 이동을 해서 인증코드를 확인합니다.

[API 키값 확인]
http://sgis.kostat.go.kr/ > OPEN API 발급키


여기서 하나 알아야 할 점이 있습니다.
OepnAPI2에서 제공하는 Reverse Geocoder는 TM_M(중부원점) 이라는 좌표코드로 동작이 되게 되어 있습니다.
그럼 어떻게 해야 하나?

GPS 좌표(경위도 좌표 LL_W) 를 중부원점 좌표(TM_M)으로 변경을 하시면 됩니다.
그 이후, 중부원점 좌표를 가지고 Reverse Geocoder를 사용하시면 됩니다.

(Geocoder를 사용하시는 경우에는 Geocoder를 하신다음 나오는 중부원점 좌표를 다시 GPS 좌표로 변경하시면 됩니다.)

이게 대체 먼 소리야?
하시는 분들을 위해서 아래 예제를 첨부하겠습니다.

[GPS 좌표]

Latitude (Y) = 37.37386681765356, Longitude (X) = 127.13037633014983

 

[좌표 변환]

http://sgis.kostat.go.kr/OpenAPI2/coordConversion.do?apikey=[인증코드]&fromSrs=LL_W&toSrs=TM_M&posX=127.13037633014983&posY=37.37386681765356
{"toSrs" : "TM_M" , "posX" : "211479.29919786062" , "posY" : "430208.38469312584"}

 

[역 지오코더]

Type = 1 : 신주소 / Type = 2 : 구주소

http://sgis.kostat.go.kr/OpenAPI2/reversegeocoder.do?apikey=[인증코드]&type=2&reqCnt=3&posX=211479.29919786062&posY=430208.38469312584
[{"address" : "경기도 성남시 분당구 분당동 34" , "posX" : "211463.8341674997" , "posY" : "430217.78323754965"},{"address" : "경기도 성남시 분당구 분당동 34" , "posX" : "211469.11959999986" , "posY" : "430210.9601000007"},{"address" : "경기도 성남시 분당구 분당동 34" , "posX" : "211498.93654080277" , "posY" : "430233.9581176377"}]



마지막으로, Android에서 사용하시기 위해서는 JSON을 사용하시면 됩니다.