인공지능이 추천하는 국내 관광 코스는?

인공지능이 추천하는 국내 관광 코스는?

(feat. 부산광역시, 여수시)

 

What? – 인기 관광 코스 찾기

<코로나19 이후 다시 주목받게 된 국내 여행>

 

 

  안녕하세요! SPH 데이터 컨설팅팀입니다. 무더운 여름, 더위를 피하기 위한 여행 계획은 다들 세우셨나요? 🏝
코로나19 이후 해외여행이 어려워지면서 국내 여행이 주목받고 있습니다. 해외여행은 코로나19 팬데믹 사태 이후에 관광객 수가 1990년 수준으로 급감하였다고 합니다. 한국만 보더라도 해외여행을 대체할 여행지로 제주도, 부산, 여수 등이 손꼽히고 있는데요!
여행이 핫 키워드인 요즘, SPH 데이터 컨설팅팀은 국내 관광코스를 추천드릴 수 있게 인공지능을 이용하여 야심 차게 분석해보았습니다. 

 

 힘들고 어려운 관광 코스가 아닌 사람들이 상식적으로 생각하는 여행 스케줄을 실제 빅데이터를 기반으로 관광 코스를 검증하면서, 관광 정책을 실제 기획하고 실행하는 정책 결정자분들께 인사이트를 제공할 수 있어 큰 의미가 있는 데이터 분석이었는데요. 한 번 같이 확인해보실까요?

 

“ 전주 관광할때 같이 방문할 수 있는 1타 3피 관광. 할 수 있을까?”

 분석에 앞서 저희가 원하는 최종 분석 목표에 대해 말씀드리자면 빅데이터를 통해 주요 관광 도시와 가장 효율적으로 연계될 수 있는 여타 도시를 찾아 관광 거점을 만들어내는 것입니다. 우리의 소중한 휴가를 부산뿐만 아니라 다른 지역까지 여행할 수 있다면? 뜻깊은 여행이 될 것 같습니다.

 

How? – 1/2 Data

 

 

 그렇다면 어떤 데이터를 이용해서 관광 코스를 선정해볼 수 있을까요? 맛집은 따로 광고하지 않아도 문지방 닳도록 손님이 끊이질 않습니다. 입소문으로 맛집이 되는 경우가 큰대요! 하지만 저희는 ‘소문’에 의지하지 않고 데이터에 기반하여 관광 코스를 선정해보려고 합니다. 데이터는 SK텔레콤 통신 데이터를 기반으로 분석해보려고 합니다.

 

<부산 광역시가 포함된 동선 데이터>

 

 통신 데이터에는 동선 데이터가 있습니다. 그리고 50만 개가 넘는 동선 데이터는 여행객의 행동 패턴이라고 볼 수 있습니다. 여행객이 남긴 발자취가 담긴 데이터인데요. 이 동선 데이터에는 성별, 나이 대, 그 동선을 이용한 인구 수 등이 포함되어 있습니다. SK 텔레콤의 전문 기술을 통해 추계된 인구 통계 데이터로써 SK 텔레콤 가입자 뿐만 아니라 전체 인구를 추산한 데이터를 기반으로 분석을 하여 데이터에 대한 정확도가 한층 더 높은 것을 알 수 있습니다. 

 

<통신 빅데이터 산출 기준>

 

 전체 동선 데이터 중 분석을 위해 선별한 데이터는 남부권입니다. 무더운 더위를 피하기 위해 경상도 · 전라도 여행을 고려하고 계시다면, 이번 분석 결과에 더 집중하시면 좋은 정보 얻어 가실 수 있을 것 같습니다! 또한 관광객이 아닌 거주민이 포함된다면 분석 결과에 오류가 있을 수 있으니, 2019년 사계절 비성수기와 통근, 통학 및 출퇴근 이동과 같은 일정한 패턴을 보이는 데이터는 제외했습니다. 

How? – 2/2 Analysis

 분석에는 딥러닝, 머신러닝 알고리즘을 이용했습니다. 인공지능이 추천한 관광 코스를 알기 위해 텍스트로 되어있는 동선 데이터를 네트워크 그래프로 변환하였는데요. 여기서 잠깐! 시퀀스 모델인 RNN이나 LSTM을 이용하지 않은 이유에 대해 여쭤보실 수 있습니다. 

“동선 ≠ 문장”

동선 데이터의 구조를 보자면 부산 → 완도라는 비정형 데이터로 이루어져 있습니다. 또한 부산 → 완도 → 부산과 같이 부산이 두 번 이상 포함되는 동선도 있으며 부산 → 완도처럼 전혀 다른 방향성을 지닌 데이터도 있습니다. 즉, 문장처럼 규칙이 있는 데이터가 아닌데요. 이와 같은 구조에서 RNN이나 LSTM을 이용한다면 부산 → 완도가 완도 → 부산보다 더 많이 언급될 경우 관광 코스 예측 시 부산 → 완도가 선정될 가능성이 큽니다. 하지만 저흰 동선 자체를 하나의 변수 데이터로 보기 위함이기에 네트워크 그래프로 표현하였습니다.

 

“수요가 있고 연계성이 좋은 동선 = 인기 관광 코스” 

 

관광 코스 선정에 있어서 주요 키워드인 PPI 알고리즘을 설명드리겠습니다. 위에 설명드린 동선의 네트워크 그래프 화가 끝났다면 가장 큰 두 축은 1. 동선 유사도(연계성)과 2. 군집분석(수요가 있는 동선 찾기)입니다. 지역에서 다른 지역으로 이동하기가 쉽고 많은 관광객들이 찾는 동선이라는 두 마리 토끼를 모두 잡는 지수를 산출해 하기 때문에 아래와 같은 과정을 갖게 되었습니다. 자칫 복잡해 보이지만 아래에서 쉽게 설명드리겠습니다.

 

<PPI 산출 알고리즘>

 

 

01. Graph Edit Distance (동선 유사도)

A동선과 B동선의 차이는?

 

 

 

 

 동선 유사도 (Graph Edit Distance)라는 단어가 생소하게 들리실 수 있을 것 같습니다. 쉽게 접근하자면, 부산 → 완도 동선과 하동 → 부산 동선의 차이점을 컴퓨터는 과연 어떻게 찾아낼까요? 네트워크 그래프로 표현된 동선의 차이점은 동선 유사도를 통해 산술적으로 나타낼 수 있는데요. 노드와 엣지로 표현된 동선들이 다른 동선으로 변환되는 데의 cost를 표현하기 때문에, 동선 유사도 수치가 높을수록 A동 선과 B 동선은 유사성이 떨어진다고 볼 수 있습니다. 그렇게 각 동선과 다른 50만 개의 동선들과의 동선 유사도를 계산하여 평균값을 내어 ‘이 동선은 다른 동선들과의 연계성이 높고/낮다’를 수치로 표현할 수 있습니다. 하지만 동선이 연계성이 가장 높다고 해서 무작정 인기 동선으로 선정하기에는 불충분합니다. 인기 동선은 ‘수요’가 있어야 인기 동선입니다. 그래서 소개드릴 두 번째 과정을 통해 수요가 높은 동선을 선정하였습니다.

 

02. 임베딩 (Embedding), 그리고 군집 분석

가장 인기있는 동선 그룹은?

 

 마지막 과정은 임베딩, 군집분석, 그리고 인기 동선 그룹 선정입니다.

 

<그래프 임베딩 시각화 도움 자료>

임베딩이란 무엇일까요? 임베딩은 컴퓨터가 이해할 수 있는 숫자 형태인 vector로 표현하는 과정이라고 생각하시면 쉽습니다. 부산 → 완도라는 동선을 컴퓨터는 이해하기 어려우니 벡터 형식으로 표현하여 분석할 수 있게 만드는 중요한 과정입니다. 50만 개 이상의 동선 네트워크 임베딩에는 Graph2vec이라는 모델을 이용했는데요. 이 모델을 이용하여 그래프의 클러스트링에 큰 효과를 보았다는 논문을 기반으로 Graph2vec 모델을 활용하였습니다. 

 

<임베딩 후 군집분석을 통해 3 그룹으로 나뉜 동선들>

 

 그렇게 그룹화가 된 동선들 중에서 평균 관광객 수가 가장 높은 그룹을 선정합니다. 선정된 그룹과 저희가 앞서 계산한 동선 유사도를 조합하여 가장 인기 있는 동선을 찾아낼 수 있습니다.
(자세한 PPI 산출식은 블로그 아래 링크로 신청하시면 발표 자료 및 논문에서 확인 가능합니다.)

<순천시 PPI 지수 결과 예시>

 

연계성이 높은 동선 (동선 유사도)와 수요가 높은 동선 (인기 동선 선정) 과정에 거쳐 산출한 PPI는 5점 만점으로 나타낼 수 있습니다. 5점일수록 순천과 연계할 수 있는 관광코스로 제격이라 볼 수 있는데요! 위의 표에서 순천시를 본다면, 순천시는 여수시, 광양, 고흥이 가장 연계성이 좋은 관광 코스로 나타났습니다. 1점대를 얻은 진주, 하동은 여수, 광양에 비해 관광 코스로 연계하기 다소 어려움이 있을 것이라는 것을 수치를 통해 이해할 수 있습니다. 

 

Where?

 

그렇다면 일련의 과정을 거쳐 나온 결과를 자세히 소개해 드리려고 합니다. 보여드릴 장소는 부산광역시와 여수시입니다! 

먼저 ‘여름 바다’하면 떠오르는 대표 관광지는 역시, 부산이지 않을까요?  😎

 

부산의 경우, 거제, 김해, 울산을 아우르는 관광 코스가 가장 인기 있는 코스로 나타났습니다.  특히 부산에서 통영, 그리고 거제시로 관광하는 코스와 부산에서 김해시로 가는 코스가 가장 인기 있었는데요! 여름 하면 부산 갈매기가 떠오르는 것처럼, 분석 결과에서도 여름에 가장 수요가 높은 것으로 나타났네요. 또한 10대, 30대 남성 관광객분들이라면 이 코스로 여행해보시면 좋을 것 같습니다. 

주요 관광 코스 외에도 두 번째로 인기 있는 지역들은 양산, 창원, 통영, 밀양 순으로 나타났습니다. 또한 동선 데이터가 방향성이 있기 때문에 네트워크 그래프에서도 부산에서 출발하는 동선이 인기 있는 동선들로 확인되네요. 부산에서 김해, 울산 등 다른 지역 탐방에는 대중교통 및 여러 환경에 의해 부산에서 출발하는 수요가 높은 것으로 보입니다.

 

 

여수 밤바다. 사실 밤바다 중에 가장 유명해진 밤바다는 여수 밤바다가 아닐까 싶습니다.
하지만 여수 밤바다와 함께 다른 유명 지역도 같이 관광한다면 그게 바로 일석이조, 일석삼조가 되지 않을까 싶은데요!

여수시의 경우 광주에서 여수시를 거쳐 순천시를 가는 코스와 여수시에서 순천시를 가는 코스가 가장 인기 있는 코스로 나타났습니다.  3지역과 2지역 모두 여수시는 순천시와 떼어놓을 수 없는 관광 코스라는 점에서 의미가 있는 것 같네요. 여수시에 들렸다가 순천 갈대밭 축제 (순천만 갈대축제)를 보러 가시는 관광객이 많을 거라 예측됩니다. 

여수 바다와 순천의 갈대밭이 인기 코스로 보이듯, 여수는 봄과 가을에 가장 인기 있는 관광지로 나타났습니다. 또한 남성, 여성, 20대 , 50대 등 부산과는 달리 다양한 성별, 연령대를 아우를 수 있는 관광 코스로 보여집니다.

 

 

 여수와 연계될 수 있는 관광 코스로 순천뿐만 아니라 남해, 광양, 고흥 등 인기 코스로 보이는 곳들이 다수 존재하여 여수시를 방문하실 때 위에 나열된 지역들도 고려해본다면 최고의 여행이 될 것 같습니다. 또한 여수시의 경우 여수에서 출발하는 코스가 인기가 많은 것으로 나타나, 여수시를 방문하고 남해 광양 등 주변 도시를 탐방하시는 것이 연계성이 가장 좋을 것으로 보입니다. 

 

이렇게 통신 데이터인 동선 데이터를 기반하여 인공지능이 선정한 가장 인기있는 관광 코스를 살펴봤습니다. 관광객의 발자취 데이터를 통해 인공지능을 활용한 찐 관광 코스를 알아보는 시간! 어떠셨나요?

이번 여행 계획을 세우고 계시는 분들에게 좋은 정보가 되었으면 하네요~

 

이상 SPH 데이터 컨설팅 팀이었습니다! 

 

 


 

연구 자료 및 발표 자료가 궁금하시다면?

데이터 컨설팅팀 발표 자료 및 논문 자료 다운로드:  인공지능 기반 관광코스 추천 

 

SPH는 Google Maps, SuperMap, Maxar Technologies 등 다양한 케이스에 존재하는 다양한 제품군을 보유하고있는 고객의 사례에 꼭 맞는  무료 세미나 및 인적 컨설팅을 제공하고 있습니다. 각 케이스에 더욱 자세한 이야기를 나누고 싶으시다면,  여기 에서 문의 주시길 바라며, SPH에서 발행하는  GIS / 로케이션인텔리전스 관련 최신 소식 을 받아보고 싶으신 분들은  페이스북 페이지  또는  뉴스레터 를 구독 해 주시길 바랍니다. 감사합니다.

지도 플랫폼의 양대산맥 Google Maps Platform vs MapBox, 딜리버리 서비스를 위한 전격 비교!

코로나19 팬더믹이 장기화 되면서 비대면 서비스의 확산은 우리 일상에 큰 변화를 가져다 주고 있는데요. 그중에서도 단연 눈에 띄는 것이 딜리버리 서비스의 눈부신 성장입니다. 통계청에 따르면 국내 딜리버리 시장의 규모는 17조 3828억원으로 전년 대비 78.6% 증가하였으며 최근 3년동안 536%가 증가한 것이라고 합니다. (출처 : 통계청)
이러한 추세는 우리나라뿐만이 아니라 세계적으로도 비슷한 움직임을 보이고 있는데요. 동남아 딜리버리 시장은 그랩푸드·고젝을 비롯해 벙커스잇, 우버이츠 등이 국가별로 과점하고 있습니다. 그 대표적인 예로 저희가 이전에 포스팅했던 말레이시아의 대표적 주문 배달형 서비스 벙커스잇이 있습니다.
그렇다면 미국의 경우는 어떨까요? 미국의 대표적인 딜리버리 서비스로는 도어대시, 우버이츠, 그럽허브, 포스트메이츠 등이 있습니다. 미국 온라인 푸드 딜리버리 시장은 20년 156억달러 규모였으며 2024년까지 꾸준한 성장세가 예측된다고 합니다. (출처:Statista)
이전에 저희는 구글지도 플랫폼의 온디맨드 솔루션의 승차 딜리버리 솔루션을 운송, 딜리버리에 활용할 수 있음을 알려드린 적이 있는데요. 실제로 도어대시에서는 구글지도를 인앱네비게이션에 활용하고 있는 것을 확인할 수 있었습니다.
오늘은 거기서 한발 더 나아가 딜리버리 서비스에서 활용하는 지도 플랫폼의 주요 기능 전반을 간단하게 짚어보는 시간을 가지고자 합니다.

이를 월 평균 10억명 이상의 사용자를 바탕으로, 포춘지 선정 전세계 500대 기업의 70%, 그리고 수천개 혁신적 스타트업의 500만개 이상의 웹사이트와 앱에서 사용되고 있는 Google Maps Platform(이하 Google Maps)과, 월 평균 6억명 이상의 사용자를 바탕으로 전세계 4만5천개 이상의 웹사이트와  앱에서 사용되고 있는 Mapbox와의 비교를 통해 살펴 보도록 하겠습니다.

목차

목차를 클릭하면 이동합니다.

 

 

지도의 밑바탕을 알아 봅시다


배경 지도 비교

고객 또는 배달기사의 위치를 알기위해서는 자신들의 위치를 알 수 있는 배경 지도가 가장 기본이 된다고 볼수 있는데요.
캐나다, 토론토를 기준으로 주변 지도를 살펴보겠습니다.

Google Maps의 경우 도로정보, 지하철역, 인근 식당 등 장소정보에 대한 다양한 POI(관심지점) 정보를 담고 있는 것을 알 수 있었습니다.
또한 작은 도로 까지도 한글로 나타남을 통해 지원되는 언어에 대해 다양한 정보를 제공해 준다는 것을 알 수 있었습니다.

 

동일한 지역에 대하여 Mapbox도 도로 및 관공서, 학교등의 기본적인 정보는 보여주고 있지만 Google Maps 대비, 지역의 상점가, 식당 등 의 POI는 상대적으로 부족한 것을 알 수 있었습니다.
또한 언어 설정을 한국어로 변경하더라도 대학교 및 일부 관공서 등을 제외한 다른 정보들이 한글로 출력 되지 않아 언어의 지원 부분에서 아쉬움을 보여줍니다.

비교 POI 언어지원 도로정보
Google Maps
MapBox
Google Maps의 경우 다양한 장소에 대한 정보를 제공 MapBox 한글 미 지원 두 플랫폼 모두 도로 정보 지원

 

 

지원 언어 비교

각 지도 플랫폼이 지원하는 언어는 어떨까요? 두 플랫폼 모두 다양한 언어를 지원하고 있지만 GMP가 더 많은 언어를 지원하는 것을 알 수 있었습니다.

또한, 맵박스의 경우 특정 맵 스타일에서는 지원 언어의 제약이 있어, 다양한 맵에서의 언어 활용 측면에서 아쉬움을 보여줍니다.

MapBox

Google Maps

Languages
MapBox(13개)

Arabic
Chinese Simplified
Chinese Traditional
English
French
German
Italian
Japanese
Korean
Multilingual
Portuguese
Russian
Spanish

Google(81개)

Afrikaans,         Albanian,         Amharic
Arabic,         Armenian,         Azerbaijani
Basque,         Belarusian,         Bengali
Bosnian,         Bulgarian,         Burmese
Catalan,         Chinese,         Chinese (Simplified)
Chinese (Hong Kong),         Chinese (Traditional)
Croatian,         Czech,         Danish
Dutch,         English,         English (Australian)
English (Great Britain),         Estonian
Farsi,         Finnish,         Filipino
French,         French (Canada),         Galician
Georgian,         German,         Greek
Gujarati,         Hebrew,         Hindi
Hungarian,         Icelandic,         Indonesian
Italian,         Japanese,         Kannada
Kazakh,         Khmer,         Korean
Kyrgyz,         Lao,         Latvian
Lithuanian,         Macedonian,         Malay
Malayalam,         Marathi,         Mongolian
Nepali,         Norwegian,         Polish
Portuguese,         Portuguese (Brazil)
Portuguese (Portugal),         Punjabi
Romanian,         Russian,         Serbian
Sinhalese,         Slovak,         Slovenian
Spanish,         Spanish (Latin America)
Swahili,         Swedish,         Tamil
Telugu,         Thai,         Turkish
Ukrainian,         Urdu,         Uzbek
Vietnamese,         Zulu

Supported Styles
MapBox

streets-v11
outdoors-v11
dark-v10
light-v10
satellite-streets-v9
traffic-day-v2
traffic-night-v2
based on Mapbox v8 styles

No Limit

 

 

 

지도가 담고 있는 정보는 어떨까요


장소정보 비교

그렇다면 이렇게 단순히 지도화면에서 표시되는 POI(Point of Interest, 관심지점)가 아닌 실제로 지도상에서 장소정보를 검색했을 때는 어떨까요?

각각의 맵에서 제공하는 검색기능을 활용하여 나오는 결과를 비교해 보겠습니다.

토론토에 있는 스타벅스를 한번 찾아볼까요? 먼저 Google Maps 입니다. 아래의 동적지도의 ‘Search Box’에 원하는 검색어를 입력하고 ‘지도위치기반검색’을 눌러 봅시다. 결과는 어떨까요?

service.textSearch({ 'query': searchWord }, function (predictions, status, hasNextPage) {

 

Google Maps의 경우 hasNextPage라는 기능을 활용하여, 최대 20개씩 추가로 결과를 가져와 최대 60개 까지 결과를 출력하는 것을 확인할 수 있었습니다.
또한 Google Maps는 특정 지역의 POI 장소를 검색할 때 해당 지역의 키워드를 앞이나 뒤에 붙여주는 것만으로도 검색이 가능했습니다. 예) 스타벅스 강남역, 강남역 스타벅스, toronto starbucks, starbuck toronto

이번에는 Mapbox입니다. 마찬가지로 아래 동적지도 ‘수색’란에 원하는 검색어를 입력하고 좌측 상단의 ‘마커’버튼을 눌러봅시다. 이번에는 어떻게 나올까요?

MapBox의 경우 Google Maps의 hasNext와 같은 기능은 없었으며, limit라는 옵션을 설정 해 최대 10개 까지 결과를 출력하는 것을 확인할 수 있었습니다.

(Google, Mapbox 검색 결과 비교)

 

빠르고 효과적인 길을 알려주는 방법


경유지 최적화 비교

딜리버리 서비스에서 필요한 지도서비스의 기능중에서 핵심적이라고 할 수 있는 것이 바로 최적의 경로를 안내하는 경로 탐색, 그 중에서도 경유지의 최적화입니다.

[Google Maps] 클릭시 동적화면으로 이동합니다

[Mapbox] 클릭시 동적화면으로 이동합니다

경유지 최적화를 통해 계산된 최적의 배송 경로는 비용절감 및 고객만족에도 큰 기여를 할 수 있습니다.

두 지도플랫폼 모두 경유지 최적화를 지원하고 있습니다. Google Maps는 경유지 최대 25개를 지원하며, Mapbox의 경우 최대 10개의 경유지를 지원합니다.

[Google Maps] – 경유지 최적화

[Mapbox] – 경유지 최적화

사용성의 측면에서 보았을 때, Google Maps는 optimization 옵션을 제공하지만, Mapbox는 별도의 optimization API를 이용해야 해서 번거로움이 있었습니다.

directionsService.route({
  origin: document.getElementById("start").value,
  destination: document.getElementById("end").value,
  waypoints: waypts,
  optimizeWaypoints: true,
  travelMode: by
})

아래와 같이 Google Maps는 optimizeWaypoints를 true로 지정함으로서 최적화 기능을 손쉽게 이용할 수 있는 반면,  Mapbox의 경우에는  최적화 경로를 반환하는 별도의 함수에서 직접 경유지 지오코딩,  optimization API를 이용한 최적화 경로 요청, 경로 출력, 경유지 마커 생성의 일련의 과정을 직접 구현해야했습니다.

 

async function optimizedRoute(by) { ...
async function doGeocode(placeName) { ...
function drawline_mapbox(coords) { ...
function addMarkers(features) { ...

 

또 다른 차이점 중 하나는 Mapbox에서는 출발지의 텍스트 직접입력이 불가능하다는 점입니다. 예를 들어 “여의도 동화빌딩” 의 텍스트 쿼리를 이용할 수 없어서, 직접 지오코딩을 통해서 텍스트를 좌표로 변환해서 사용해야했습니다.

 

 

실시간 교통 정보 반영 비교

Google Maps와 Mapbox  모두 실시간 교통정보 반영한 경로 탐색을 지원하고 있습니다.

[Google Maps] – 오후시간과 퇴근시간

[Mapbox] – 오후시간과 퇴근시간

Google Maps의 경우 최대 25개(출발, 도착지 포함)의 경유지에 대한 실시간 교통정보를 반영한 경로를 안내하지만, Mapbox는 실시간 교통정보를 반영한 경로 탐색 시 최대 3개(출발, 도착지 포함)의 경유지에 대해서만 안내를 지원합니다.

 

 

경로 탐색 비교

아래 표는 경로 탐색 기능에 대해 두 플랫폼을 비교한 내용입니다.

비교 전체경로거리,시간 이동수단 턴바이턴
Google Maps
MapBox
Google Maps의 경우 언어,
경로의 거리와 시간의 단위 및 형식을 자동 변환
Google Maps의 경우 대중교통 길찾기 지원 Mapbox 플러그인에서는 턴바이턴 출력 UI 제공

 

 

딜리버리 서비스에 필요한 지도 플랫폼


효과적인 딜리버리서비스를 위해서는 지도 플랫폼의 고객의 위치와 배송지의 정보를 파악할 수 있는 기능, 기사에게 배달할당을 위한 거리계산, 경로안내 등의 기능이 필수적입니다.

이를 각 요소별로 살펴보자면,

배경지도의 측면에서는 기본적으로 표시되는 기본적인 장소정보의 질과 양이 중요하며, 글로벌 서비스를 위해서는 다양한 언어를 지원하는 것 또한 강점이 될 수 있습니다.

위치정보와 배송지 정보의 파악을 위해서는 해당 POI(관심지역) 정보를 검색할 때, 원하는 결과 값을 빠르고 쉽게 찾을 수 있는지 그리고 그 결과 값이 얼마나 풍부한지가 중요하다고 볼 수 있습니다.

최적의 배달할당, 배송지와의 경로안내를 위해서는 지정한 경유지를 최소한의 시간과 비용으로 도달할 수 있도록하는 경로 최적화, 한번에 많은 배송을 처리할 수 있도록 도와주는 설정 가능한 최대 경유지 수 그리고 출퇴근 시간이나, 교통정체 등 실시간 교통정보를 반영한 경로안내가 가능한지가 중요요소라고 할 수 있습니다.

지금까지 설명한 두 지도 플랫폼 모두 위와 같은 딜리버리 서비스에 필수적인 기능을 제공하고 있습니다. 다만 그를 실제로 적용하여 활용하였을 때 편의성이나 지원범위의 경우에는 다소 차이가 있음을 알 수 있었습니다.

 

비교 배경지도 지원언어 장소정보 경유지최적화 실시간교통정보 경로탐색
Google Maps 기본정보 외 다양한 POI 정보 제공 81개 언어지원, 작은 도로까지 한글화 POI 최대 60개 출력, 단어 조합 검색 가능 최대 25개 경유지 최적화 지원 실시간 교통정보반영
(경유지 최적화 최대 25개 지원)
경로거리, 시간 단위 형식 자동 변환 지원,대중교통 길찾기 지원,턴바이턴안내 지원
MapBox 도로, 관공서 등 기본 정보 제공 13개 언어 지원, 상세정보 한글화 안됨 POI 최대 10개 출력 최대 10개 경유지 최적화 지원 실시간 교통정보 반영
(경유지 최적화 3개까지 지원)
경로거리, 시간 단위 형식 자동변환 미지원,대중교통 길찾기 미지원,턴바이턴안내 지원

 

 

 

SPH는 Google Maps, SuperMap, Maxar Technologies 등 다양한 케이스에 존재하는 다양한 제품군을 보유하고있는 고객의 사례에 꼭 맞는  무료 세미나 및 인적 컨설팅을 제공하고 있습니다. 각 케이스에 더욱 자세한 이야기를 나누고 싶으시다면,  여기 에서 문의 주시길 바라며, SPH에서 발행하는  GIS / 로케이션인텔리전스 관련 최신 소식 을 받아보고 싶으신 분들은  페이스북 페이지  또는  뉴스레터 를 구독 해 주시길 바랍니다. 감사합니다.

새로운 WebGL 기반 지도 기능 사용하기

새로운 WebGL 기반 지도 기능 사용하기

이번 Google I/O 2021에서 소개된 Google Maps Platform에 대한 이야기를 공유해 드리고자 합니다. Google은 Maps JavaScript API의 새로운 기능인 “기울기와 회전(Tilt and Rotation) 옵션”과 “WebGL Overlay View”의 베타 버전을 발표했습니다.

새로운 기능은 GCP 콘솔을 통해 벡터 지도의 Map ID를 생성해서 벡터 지도를 배경 지도로 호출하면 이용할 수 있습니다. 물론 베타 버전이기 때문에 스크립트 호출 시 “v” 파라미터를 아래와 같이 “beta”로 설정해야 합니다.

<script src=”https://maps.googleapis.com/maps/api/js?key=API_KEY&v=beta&callback=initMap”></script>

기울기와 회전 옵션은 배경 지도가 벡터 지도이기만 하면 사용이 가능합니다. 이를 통해 2D 지도의 한계를 넘어서 기울이기와 회전이 가능하게 되었습니다. 게다가 일정 줌 레벨 이상이 되면 세계 주요 도시에서 3D 건물 모델링을 확인할 수 있습니다.

또한 지금까지의 Overlay View는 구글 지도 위에 투명 레이어를 통해서 2D 그래픽만을 랜더링할 수 있었습니다. 하지만 이제 WebGL Overlay View를 통해 벡터 지도 위에 3D 그래픽을 직접 랜더링할 수 있습니다. 이를 통해 이전에는 불가능했던 새로운 지도 경험을 사용자에게 제공할 수 있게 되었습니다.

 

👩‍🎓 WebGL이란?

WebGL은 원래 Mozilla Foundation에서 개발한 low-level 브라우저 API입니다. 이는 웹 어플리케이션에서 휴대폰 및 컴퓨터와 같은 클라이언트 장치의 GPU (그래픽 처리 장치) 자원에 접근 할 수 있게 합니다. 덕분에 원래 브라우저는 자체적으로 3D 랜더링하는 데 필요한 무거운 계산을 처리 할 수 ​​없었지만, WebGL을 사용하면 이러한 계산을 클라이언트 장치의 GPU에서 처리할 수 있습니다.

👩‍🎓 요구사항

WebGL Overlay View를 사용하려면 벡터지도가 활성화 된 지도 ID가 필요합니다. 또한 지도 ID를 생성 할 때 기울기 및 회전을 활성화 옵션을 체크해야 합니다. 그렇지 않으면 지도가 2D 지도와 같이 기본 하향식 보기로 제한됩니다. 즉, 지도를 3차원으로 볼 수 없게 됩니다.

👩‍🎓 기울기 및 회전 설정

지도를 로드할 때 기울기와 회전 정도를 설정하려면, 지도 객체를 만들 때 “tilt” 및 “heading” 속성 값을 제공하면 됩니다.

const mapOptions = {
  mapId: "15431d2b469f209e",
  tilt: 0,
  heading: 0,
  zoom: 17,
  center: {
    lat: -33.86957547870852, 
    lng: 151.20832318199652
  }
}
const mapDiv = document.getElementById("map");
const map = new google.maps.Map(mapDiv, mapOptions);

기울기는 0과 67.5 사이의 값을 가지며, 0도는 기본 직선 보기이고 67.5는 최대 기울기입니다. 사용 가능한 최대 기울기는 zoom 레벨에 따라 달라집니다.

회전은 heading 속성에서 0도에서 360도 사이의 값을 가집니다. 여기서 0은 정북향을 의미합니다.

지도 객체에서 직접 “setTilt()” 및 “setHeading()” 함수를 호출하여 원할 때마다 기울기 및 회전을 변경할 수도 있습니다. 이벤트에 대한 응답으로 지도의 기울기나 방향을 변경하려는 경우 유용합니다.

map.setTilt(45);
map.setHeading(180);

또한 사용자는 <shift> 키를 누른 상태에서 마우스를 드래그하거나 키보드의 화살표 키를 사용하여 지도의 기울기 및 회전을 수동으로 제어 할 수 있습니다.

 

👩‍🎓 맵에 WebGL Overlay View 추가

WebGL Overlay View는 “google.maps.WebglOverlayView”의 객체를 생성하여 Maps JavaScript API에서 사용할 수 있습니다. 오버레이 인스턴스가 생성되면 인스턴스에서 “setMap”을 호출하여 지도에 적용하기만 하면됩니다.

const webglOverlayView = new google.maps.WebglOverlayView;
webglOverlayView.setMap(map);

지도에 랜더링되는 모든 객체를 처리하기 위해 WebGL Overlay View는 5가지 지점에서 WebGL 랜더링 컨텍스트의 라이프사이클에 접근할 수 있습니다.

➡️ 아래는 라이프사이클에 대한 간단한 요약입니다.

  • “onAdd”는 대부분의 전처리가 수행되는 곳입니다. 여기에서 모든 작업을 수행하는 이유는 지도 랜더링에 지장을주지 않도록 하기 위한 것입니다.
  • “onRemove”는 모든 중간 객체를 제거할 수 있습니다.
  • “onContextRestored”는 지도가 랜더링되기 전에 호출되며 WebGL 상태를 초기화합니다.
  • “onDraw”는 지도와 앞서 설정된 모든 것이 랜더링되는 곳입니다.
  • “onContextLost” 이 시점부터 WebGL 컨텍스트는 제거됩니다.

라이프사이클을 관리하려면 Maps JavaScript API가 WebGL 적절한 지점에서 실행할 함수를 구현하세요.

예시 :

webglOverlayView.onDraw = (gl,
coordinateTransformer) => { //do some
rendering }

 

👩‍🎓 카메라 애니메이션 만들기

WebGL Overlay View 베타 릴리즈의 일부로 카메라 위치, 기울기, 회전 및 확대/축소를 동시에 설정하는 데 사용할 수 있는 “moveCamera()”가 도입되었습니다. “setTilt()” 및 “setHeading()”과 마찬가지로”moveCamera()”는 지도 객체에서 직접 호출됩니다.

애니메이션 루프에서 “moveCamera()”를 연속적으로 호출하면 카메라 위치 변경을 따라 부드러운 애니메이션을 만들 수도 있습니다. 아래는 브라우저의 “requestAnimationFrame” API를 사용하여 각 프레임의 기울기 및 회전을 변경한 예제입니다.

const cameraOptions = {
  tilt: 0,
  heading: 0
}

function animateCamera () {
  cameraOptions.tilt += 1;
  cameraOptions.heading += 1;
  map.moveCamera(cameraOptions);
}

requestAnimationFrame(animateCamera);

 

👩‍🎓 한번 시도해 보세요! 

베타 버전에서 API를 호출하여 Maps JavaScript API의 새로운 WebGL 기반 기능을 지금 바로 사용해 볼 수 있습니다. 시작하는 데 도움이 되는 샘플 코드 및 예자와 모든 세부 정보가 포함된 새로운 코드랩공식 문서가 있습니다. 또한 기능 둘러보기 및 데모를 확인하여 이러한 기능의 실제 구현에 대해 자세히 알아보고 사용해보세요.

새로운 WebGL 기반 지도 기능을 테스트하고 개선하는 데 도움이 되는 버그 리포트, 기능 요청 및 피드백이 필요합니다! 3D 지도를 사용하여 재미있게 건물을 만들어보세요. 소중한 피드백 부탁드립니다. 🙏 ❤️

 


SPH는 Google Cloud Platform (Maps)의 Premier Partner로서 SuperMap, Maxar Technologies 등 다양한 사례와 자료를 보유하고 있으며, 고객의 사례에 맞는 무료 세미나 및 인적 컨설팅을 제공해드립니다. 더욱 자세한 이야기를 나누고 싶으시다면, 여기 에서 문의하시길 바랍니다. SPH에서 발행하는  GIS / 로케이션 인텔리전스 관련 최신 소식을 받아보고 싶으신 분들은 페이스북 페이지 또는 뉴스레터를 구독해 주시길 바랍니다. 감사합니다.