ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 지도 경로탐색 오픈API 소개(OpenRouteService)
    Giljabi.kr 기능 2019. 4. 6. 09:38

     

    http://www.giljabi.kr 

     

    대한민국의 모든 경로

     

    www.giljabi.kr

     

    카카오지도가 최근에 다양한 기능을 제공하고 있습니다. 대기설정 레이어에 기온, 미세먼지, 초미세먼지등등.. 하지만 이런 기능은 아직까지 API로 제공되지 않아 좀 아쉽습니다. 

     

    그리고 경로탐색 기능 역시 제공되지 않습니다. giljabi에서 제공하는 gpx/tcx 관련 기능도 제법 많이 개선되어 경로 탐색기능을 어떻게 넣을까 고민하고 있습니다. 

     

    어떤 서비스가 있는지 찾다가 openstreetmap을 이용한 OpenRouteService를 검토하기 시작하였습니다.

     

    경로를 만들고 고도정보 만들고 2번의 작업을 하지 않고 꿩도 먹고 알도 먹는 방법을 사용하려고 합니다. 세상은 아는 아는 많큼 보이는게 맞나 봅니다. 구글만 계속 파고 있다보니 다른게 안보였나 봅니다.

    GRTM GIS정보를 사용하여 고도정보를 만드는 방법을 테스트 하던중에 opensteetmap은 어떤 정보를 제공하나 살펴보다가 알게 되었습니다.  다양한 기능을 제공하는데 경로 탐색과 함께 고도정보를 함께 보여 주더군요. 경로의 데이터는 [126.920628, 37.614804, 10.5] 이런 3차원의 좌표 리스트를 제공합니다.  고도 정보는 google를 계속 사용하고 경로와 고도를 함께 구하는 것은 OpenRouteService를 사용하려고 합니다.

     

    문제는, 이 기능을 어디에 넣을 것인가 하는 고민입니다. 웨이포인트 편집기능과 경로편집 기능이 나누어져 있는데 어디에 넣을 것인가 하는 결정을 아직 못하고 있습니만, 웨이포인트 편집 기능에 넣는것이 합리적일것으로 보입니다.

     

    OpenRouteService 간단한 사용설명서입니다. api키를 생성하면 아래와 같은 화면을 볼 수 있습니다. 여러가지 호출방법중 하나인데 간단명료합니다.

    아래에는 언어별로 코드를 보여주는데 사용할 언어를 선택하고 이걸 복사해서 사용하면 됩니다. 참 쉽죠?

     

    실제로 테스한 java code와 좌표는 다음과 같습니다. 아래코드는 고도정보는 없는 상태입니다.

     

    이중에서 경로데이터 부분만 데이터를 만들어 보면 

    Body: {
    "type":"FeatureCollection",
    "features":[{"bbox":[126.920628,37.614804,126.9242,37.616392],
    "type":"Feature",
    "properties":{
    "segments":[
    {"distance":381.7,"duration":74.7,
    "steps":[
    {"distance":337.1,"duration":67.4,"type":11,"instruction":"Head east on 연서로22길","name":"연서로22길","way_points":[0,13]},
    {"distance":44.7,"duration":7.3,"type":1,"instruction":"Turn right onto 통일로","name":"통일로","way_points":[13,16]},
    {"distance":0.0,"duration":0.0,"type":10,"instruction":"Arrive at 통일로, straight ahead","name":"-","way_points":[16,16]}
    ]
    }
    ],
    "summary":{"distance":381.7,"duration":74.7},"way_points":[0,16]},
    "geometry":{
    "coordinates":[
    [126.920628,37.614804],[126.920753,37.614832],[126.921057,37.614966],[126.921336,37.615089],
    [126.921573,37.615193],[126.921957,37.615362],[126.922257,37.615493],[126.922503,37.6156],
    [126.922746,37.615706],[126.923222,37.615913],[126.923259,37.615942],[126.923301,37.615984],
    [126.923704,37.616274],[126.923855,37.616392],[126.924003,37.616266],[126.9242,37.6161],
    [126.9242,37.6161]],
    "type":"LineString"
    }
    }],
    "bbox":[126.920628,37.614804,126.9242,37.616392],
    "metadata":{"attribution":"openrouteservice.org | OpenStreetMap contributors","service":"routing","timestamp":1554477678397,
    "query":{
    "coordinates":[[126.920628,37.614804],[126.9242,37.6161]],"profile":"cycling-road","format":"json"},
    "engine":{"version":"5.0","build_date":"2019-03-11T11:00:43Z"}
    }
    }

    경로를 그리는데 필료한 정보는 붉은색으로 된 부분을 polyline으로 그려주면 됩니다.

     

    OpenRouteService의 사용비용은 기부도 받고, 사용한도에 따라 비용도 책정되어 있습니다. 무료사용 범위는2,500request/day, 40request/min 이 정도면 사용하는데 큰 문제는 없을것 같습니다.

     

    https://openrouteservice.org

     

    Openrouteservice

    The spatial services API with plenty of features.

    openrouteservice.org

    끝.

    댓글

Designed by Tistory.