닷넷/C#

C# 네이버 지도 API(AI Naver-Directions 5)를 이용해서 거리 구하기

FreeBear 2021. 5. 13. 18:25
반응형

단순히 좌표를 가지고 출발지와 도착지의 차익을 구하는 건 실제 사람이 겪는 거리와 다르다.

따라서 거리를 계산하려면 도로상황과 여러 변수들을 생각해서 계산이 이루어져야 한다.

그러나 일개 개인이 그것을 하기에는 많이 어렵다.

그러나 또 한 편으로는 네이버나 카카오에서 충분히 그런 자료들을 만들어놨음을 그들의 플랫폼을 살펴보면 충분히 알 수 있는 사실이다.

(비용만 지불하면 다 되는 세상이다.)

그 중에서 C#에서 네이버 지도 API 중 Directions 5 혹은 15를 사용하는 방법에 대해 기술한다.

* 상세 API 문서는 네이버 클라우드 플랫폼에서 제공 된다. 

 

driving - Directions 5

쿠키 제공 동의 당사는 고객님의 브라우징 기반 정보를 바탕으로 관련 정보 및 광고 제공을 위하여 지식 기반 쿠키를 사용합니다.

api.ncloud-docs.com

 

/// <summary>
/// 네이버 API 중 Directions 5를 통해서 출발지와 도착지 사이의 거리를 계산한다.
/// </summary>
/// <param name="start">출발지 좌표 / 예시) 127.1058342,37.3597078</param>
/// <param name="goal"> 도착지 좌표 / 예시) 129.0759853,35.1794697</param>
/// <returns>거리 단위는 meter이며, 예시의 좌표로 했을 때 distance는 385111이다.</returns>
private string CalculateDistance(string start, string goal)
{
    string distance = "";
    try
    {
        string url = string.Format("https://naveropenapi.apigw.ntruss.com/map-direction/v1/driving?start={0}&goal={1}&option=trafast", start, goal);

        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
        request.Method = "GET";
        request.ContentType = "application/x-www-form-urlencoded";
        request.Headers.Add("X-NCP-APIGW-API-KEY-ID", clientId);
        request.Headers.Add("X-NCP-APIGW-API-KEY", clientSecret);


        HttpWebResponse response = (HttpWebResponse)request.GetResponse();
        using (StreamReader reader = new StreamReader(response.GetResponseStream()))
        {
            string res = reader.ReadToEnd();
            JObject jObject = new JObject();
            jObject = JObject.Parse(res);
            distance = jObject["route"]["trafast"][0]["summary"]["distance"].ToString();
        }
    }
    catch (Exception ex)
    {
        distance = ex.Message;
    }

    return distance;
}

 

위 코드에서는 거리만 구했는데 전체 응답 결과에는 소요 시간과 거리, 예상 유류비, 통행 요금 정보를 제공하고 또한 경로마다 네비게이션처럼 길을 안내해 줄 수 있는 자료까지 있다.

상황에 따라, 본인의 서비스에 따라서 활용하면 좋을 듯 싶다.

 

반응형