반응형

지오코딩(Geocoding)이란?

지오코딩(Geocoding)은 고유명칭(주소나, 산, 호수의 이름등)을 가지고 위도와 경도의 좌표값을 얻는 것을 말합니다.

가령, 서울특별시라는 고유명칭으로 서울특별시의 위도와 경도의 좌표값을 얻는 것이죠. 

지오코딩과는 반대로 위도와 경도의 좌표값으로 고유명칭을 얻는 것은 리버스 지오코딩(Reverse Geocoding)이라고 합니다.

 제가 못찾는 것인지는 모르겠지만 구글링을 해보면 구글 맵에서 위도, 경도를 얻을 수 있던데 제가 해보니까 위도, 경도의 좌표값이 나타나지가 않더라구요...

네이버 클라우드 플랫폼 Geocoding

 이번에 진행하고 있는 프로젝트에서 네이버 맵을 사용할 예정이라 Geocoding 또한 네이버에 있는 것으로 사용하려고 합니다.

 공식문서 를 따르면 요런식으로 예시가 나와있습니다.

 

sh명령어를 기반으로 예시를 들고 있습니다.

조금 더 아래로 내려서 요청 파라미터, 요청 헤더를 보고 필수 파라미터와 헤더만 가지고 PostMan에서 데이터 GET을 테스트해보았습니다.

BASE_URL 은

https://naveropenapi.apigw.ntruss.com/map-geocode/v2/geocode

이 부분을 사용하였습니다.

그 후 요청 파라미터 중 필수 파라미터인 주소만

string 타입으로 넣어주었습니다. 파라미터의 key값은 query로 해주었습니다.

요런식으로 주소 뒤에 query값으로 전달이 됩니다. 

이제 필수 헤더인

이 두 가지를 입력해주어야 하는데

저 값들은

네이버 플랫폼 - 콘솔 - Application에서 등록한 앱의 인증정보에 있습니다.

순서대로 Client ID, Client Secret 입니다.

앱 등록하는 과정은 

[안드로이드[Android]] - 안드로이드[Android] 안드로이드 네이버 오픈 지도 Api 연결하기

이 글을 참고해보면 될 것 같습니다.

 

 

헤더에도 예시와 같이 KEY와 VALUE 에 값을 입력해주면 됩니다.

파라미터와 헤더에 필수 값들을 입력한 후 Send를 누르면 데이터를 받아옵니다.

{
    "status": "OK",
    "meta": {
        "totalCount": 1,
        "page": 1,
        "count": 1
    },
    "addresses": [
        {
            "roadAddress": "서울특별시",
            "jibunAddress": "서울특별시",
            "englishAddress": "Seoul, Republic of Korea",
            "addressElements": [
                {
                    "types": [
                        "SIDO"
                    ],
                    "longName": "서울특별시",
                    "shortName": "서울특별시",
                    "code": ""
                },
                {
                    "types": [
                        "SIGUGUN"
                    ],
                    "longName": "",
                    "shortName": "",
                    "code": ""
                },
                {
                    "types": [
                        "DONGMYUN"
                    ],
                    "longName": "",
                    "shortName": "",
                    "code": ""
                },
                {
                    "types": [
                        "RI"
                    ],
                    "longName": "",
                    "shortName": "",
                    "code": ""
                },
                {
                    "types": [
                        "ROAD_NAME"
                    ],
                    "longName": "",
                    "shortName": "",
                    "code": ""
                },
                {
                    "types": [
                        "BUILDING_NUMBER"
                    ],
                    "longName": "",
                    "shortName": "",
                    "code": ""
                },
                {
                    "types": [
                        "BUILDING_NAME"
                    ],
                    "longName": "",
                    "shortName": "",
                    "code": ""
                },
                {
                    "types": [
                        "LAND_NUMBER"
                    ],
                    "longName": "",
                    "shortName": "",
                    "code": ""
                },
                {
                    "types": [
                        "POSTAL_CODE"
                    ],
                    "longName": "",
                    "shortName": "",
                    "code": ""
                }
            ],
            "x": "126.9783882",
            "y": "37.5666103",
            "distance": 0.0
        }
    ],
    "errorMessage": ""
}

정상적으로 통신이 되고 데이터를 받아올 수 있을 경우

이런식으로 데이터를 받아오고 x, y 를 통해 위도, 경도 좌표값을 구할 수 있습니다.

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기