목차

대시보드 바로가기

지점 위치와 지점명

제주 특화 걷기 앱


저희팀은 제주도를 기반으로 걷기 계획을 세울 수 있는 기능을 가진 앱을 제작하기로 했습니다. Tour API 를 사용해야 했기 때문에 해당 사이트에 들어가서 어떤 api 를 신청할지 탐색했고, 한국관광공사 국문 데이터를 활용하기로 하였습니다.

부족한 데이터


open api 명세를 보면 다양하게 주제가 나뉘어져 있는데, 저희가 사용할만한건 아래 여행코스 뿐 이였습니다.

Untitled

때문에 여행 코스를 아래와 같이 맞춤형 데이터에서 지역에 제주도를 넣어 검색해봤는데요,

Untitled

17 개의 정보가 나왔습니다.

Untitled

근데 문제는 이게 코스인데 걷기 코스만 나온게 아니라는 점 이였습니다. 데이터를 들여다보면 아래와 같이 테마별로 얼마나 걸어야 하는지 나와 있지만, 일부 데이터는 저희가 제공하려는 서비스에 적합하지 않았습니다.

Untitled

실제 api 요청을 통해서 도보 코스만 받아본 결과, 아래와 같이 5 개의 데이터를 얻을 수 있었습니다.

contentid,firstimage,firstimage2,overview,distance,taketime
2372024,<http://tong.visitkorea.or.kr/cms/resource/08/197808_image2_1.jpg,http://tong.visitkorea.or.kr/cms/resource/08/197808_image3_1.jpg,"가장> 제주다운 풍경을 만날 수 있는 방법은 차편이나 걸어서 해안도로를 달려보는 것. 대자연의 너른 품에서 바름과 구름, 돌과 나무와 하늘을 길동무 삼아 달리며 심신의 여유와 자유로움을 마음껏 느껴보시길.",6.95km,3시간
2381552,<http://tong.visitkorea.or.kr/cms/resource/05/1618205_image2_1.jpg,http://tong.visitkorea.or.kr/cms/resource/05/1618205_image3_1.jpg,"걸으면서> 제주도의 아름다운 풍경과 문화를 접하는 데 올레만큼 좋은 건 없다. 3코스 온평~표선 올레는 오름을 넘고 바다와 벗하며 걷는 길이다. 통오름과 독자봉에서 제주 오름이 지닌 고유의 멋을 느끼고, 김영갑 갤러리에서 사진에 담긴 제주의 하늘과 바다, 오름, 바람을 감상한다. 신풍신천 바다목장의 너른 초원과 눈이 부시게 파란 표선해비치해변의 바다는 감탄을 자아내는 풍경이다.",20.6km,5~6시간
2006495,<http://tong.visitkorea.or.kr/cms/resource/62/1617062_image2_1.jpg,http://tong.visitkorea.or.kr/cms/resource/62/1617062_image3_1.jpg,"제주도> 서귀포시 강정동에는 야구박물관에서 부터 절벽과 조화를 이루는 폭포, 서귀포의 비경을 만나볼 수 있는 강정천과 하루에 두번 바닷길이 열리는 신비의 섬 서건도 까지 아름다움을 만끽할 수 있는 여행지가 있다. 혼자만의 시간, 커플과의 데이트, 가족과 함께하는 시간, 누구와 함께 해도 좋을 것만 같은 제주 서귀포 강정으로 여행을 떠나보는건 어떨까?",10.53km,1일
2030576,<http://tong.visitkorea.or.kr/cms/resource/96/600096_image2_1.jpg,http://tong.visitkorea.or.kr/cms/resource/96/600096_image3_1.jpg,제주의> 대표적인 여걸 거상에서 자선사업가로 이름을 남김 김만덕의 행적과 자취를 따라 걸어보자. 제주도민의 생활상과 제주의 특산품까지 함께 알아볼 수 있는 즐거운 체험 여행이 될 것이다.,2.97km,3시간
1855204,<http://tong.visitkorea.or.kr/cms/resource/83/197383_image2_1.jpg,http://tong.visitkorea.or.kr/cms/resource/83/197383_image3_1.jpg,"제주> 서부 지역 대표 명소인 산방산과 용머리해안, 송악산을 도보로 일주하는 코스. 산방산 중턱에서 내려다본 해안 풍경과 제주에서 가장 오래된 화산지형으로 꼽히는 용머리 해안 절벽이 백미로 꼽힌다. 송악산에서 바라보는 형제섬과 가파도, 마라도 풍경도 놓칠 수 없다. 바다와 나란히 걷는 사계해안도로는 제주 올레 10코스이기도 하다.",5km,6시간

해당 데이터 만으로는 서비스를 운영할 수 없다는 판단이 들었습니다. 이를 하나의 테마로 두고, 다른 데이터를 추가할 필요가 있었습니다.

테마의 세분화 / 데이터 요청과 처리


회의를 거쳐 세가지의 테마로 걷기 계획 기능을 세분화 하였습니다.

  1. 사용자가 본인의 위/경도를 보내면, 근처 nkm 내의 스팟을 리스트업 하고 이를 선택 하여 경로를 생성한다.
  2. 제주 올레길 정보를 활용하여 원하는 코스를 선택하고, 이에 대한 정보를 보여 준다.
  3. 도보 코스 데이터를 받아와서 이에 대한 정보를 보여 준다.

1 번 기능을 구현하기 위한 데이터가 충분한지 알아보기 위해 장소를 검색해 보았습니다.

장소를 검색할 때는 아래 분류표를 활용했습니다.

,,,,,,
★ 관광(여행)정보 서비스 분류코드 (국문),,,,,,
,,,,,,
콘텐츠Type,코드,,,분류,,
contenttypeid,대분류 (cat1),중분류 (cat2),소분류 (cat3),대분류,중분류,소분류
"관광지
(12)",A01,A0101,A01010100,자연,자연관광지,국립공원
,A01,A0101,A01010200,자연,자연관광지,도립공원
,A01,A0101,A01010300,자연,자연관광지,군립공원
,A01,A0101,A01010400,자연,자연관광지,산
,A01,A0101,A01010500,자연,자연관광지,자연생태관광지
,A01,A0101,A01010600,자연,자연관광지,자연휴양림
,A01,A0101,A01010700,자연,자연관광지,수목원
,A01,A0101,A01010800,자연,자연관광지,폭포
,A01,A0101,A01010900,자연,자연관광지,계곡
,A01,A0101,A01011000,자연,자연관광지,약수터
,A01,A0101,A01011100,자연,자연관광지,해안절경
,A01,A0101,A01011200,자연,자연관광지,해수욕장
,A01,A0101,A01011300,자연,자연관광지,섬
,A01,A0101,A01011400,자연,자연관광지,항구/포구
,A01,A0101,A01011600,자연,자연관광지,등대
,A01,A0101,A01011700,자연,자연관광지,호수
,A01,A0101,A01011800,자연,자연관광지,강
,A01,A0101,A01011900,자연,자연관광지,동굴
,A01,A0102,A01020100,자연,관광자원,희귀동.식물
,A01,A0102,A01020200,자연,관광자원,기암괴석
,A02,A0201,A02010100,인문(문화/예술/역사),역사관광지,고궁
,A02,A0201,A02010200,인문(문화/예술/역사),역사관광지,성
,A02,A0201,A02010300,인문(문화/예술/역사),역사관광지,문
,A02,A0201,A02010600,인문(문화/예술/역사),역사관광지,민속마을
,A02,A0201,A02010700,인문(문화/예술/역사),역사관광지,유적지/사적지
,A02,A0201,A02010800,인문(문화/예술/역사),역사관광지,사찰
,A02,A0201,A02010900,인문(문화/예술/역사),역사관광지,종교성지
,A02,A0202,A02020200,인문(문화/예술/역사),휴양관광지,관광단지
,A02,A0202,A02020600,인문(문화/예술/역사),휴양관광지,테마공원
,A02,A0202,A02020700,인문(문화/예술/역사),휴양관광지,공원
,A02,A0202,A02020800,인문(문화/예술/역사),휴양관광지,유람선/잠수함관광
,A02,A0205,A02050100,인문(문화/예술/역사),건축/조형물,다리/대교
,A02,A0205,A02050200,인문(문화/예술/역사),건축/조형물,기념탑/기념비/전망대
,A02,A0205,A02050300,인문(문화/예술/역사),건축/조형물,분수
,A02,A0205,A02050400,인문(문화/예술/역사),건축/조형물,동상
,A02,A0205,A02050600,인문(문화/예술/역사),건축/조형물,유명건물

1. 받아온 데이터 확인

첫번째 테마를 위해 파이썬을 이용하여 서비스 분류 코드 csv 에 있는 대분류, 중분류, 소분류를 넣어서 데이터를 요청하였습니다. 그리고 응답으로 받아온 데이터 중, 필요한 필드만 뽑아 적절하게 처리하였습니다.

contentid,zipcode,addr1,mapx,mapy,title,cat1,cat2,cat3
601489,63594,제주특별자치도 서귀포시 남성중로 43 (서홍동),126.5582787717,33.2398207377,서귀포해양도립공원,A01,A0101,A01010200
2858467,63644,제주특별자치도 서귀포시 에듀시티로 178,126.2735802771,33.2832503451,제주곶자왈도립공원,A01,A0101,A01010200
1884191,63006,제주특별자치도 제주시 한경면 청수서5길 63,126.2507039833,33.3059197039,가마오름,A01,A0101,A01010400
1884202,63006,제주특별자치도 제주시 한경면 청수로 13-3,126.2460707194,33.3209235283,가메창(암메),A01,A0101,A01010400
1884505,63622,제주특별자치도 서귀포시 표선면 남조로 1487-73,126.6758204749,33.4019047149,가문이오름(감은이오름),A01,A0101,A01010400
1884521,63148,제주특별자치도 제주시 오라삼동,126.5038611983,33.4893700755,가새기오름,A01,A0101,A01010400
1885746,63622,제주특별자치도 서귀포시 표선면 녹산로 554,126.7231832338,33.3931758821,가세오름,A01,A0101,A01010400
1885754,63507,제주특별자치도 서귀포시 대정읍 하모이삼로21번길 1,126.2500169782,33.2236315617,가시오름,A01,A0101,A01010400
1887368,63575,제주특별자치도 서귀포시 호근동 2112,126.5269445463,33.2767800518,각시바우오름,A01,A0101,A01010400
1887493,63523,제주특별자치도 서귀포시 안덕면 동광리,126.3454537144,33.3225554639,감낭오름,A01,A0101,A01010400

데이터의 수는 알 수 있지만 위 / 경도 위치를 표현하다 보니 밀집도를 확인할 수 없었습니다. 데이터의 수가 별로 없는데 너무 분산되어 있으면 걷기 경로를 짜기 어려울 것 같다는 생각이 들었습니다. 따라서 이를 시각화 하기 위해 Tableau 를 사용하기로 했습니다.

2. 올레길 정보 데이터 수정

올레길의 데이터를 보면 시작점과 끝점이 존재 합니다. 이에 대한 위경도가 있는 파일을 받아오고, 경로를 표현하기 위해 순서 열을 넣어주었습니다. (Tableau 에서는 경로를 표현하기 위해 Date 혹은 Order 열이 필요합니다.)

이때 순서는 시작점은 1, 끝점은 2 를 넣어서 데이터 구조를 아래와 같이 최종 결정 하였습니다.

코스 번호,코스 이름,휠체어 구간 유무,위치,위도,경도,순서,총 길이(KM),예상 소요 시간
1코스,시흥-광치기 올레,TRUE,시흥초등학교,33.47971514,126.8956494,1,15.1,4~5
1코스,시흥-광치기 올레,TRUE,광치기해변,33.45239254,126.9247041,2,15.1,4~5
1-1코스,우도 올레,FALSE,천진항,33.49277541,126.951697,1,11.3,4~5
1-1코스,우도 올레,FALSE,천진항,33.49277541,126.951697,2,11.3,4~5
2코스,광치기-온평 올레,FALSE,광치기해변,33.45239254,126.9247041,1,15.2,4~5
2코스,광치기-온평 올레,FALSE,온평포구,33.40490634,126.9043758,2,15.2,4~5
3코스,온평-표선 올레,FALSE,온평포구,33.40490634,126.9043758,1,20.9,6~7
3코스,온평-표선 올레,FALSE,표선해수욕장,33.3276295,126.8375243,2,20.9,6~7
4코스,표선-남원 올레,TRUE,표선해수욕장,33.3276295,126.8375243,1,19,5~6
4코스,표선-남원 올레,TRUE,남원포구,33.27817157,126.7198321,2,19,5~6
5코스,남원-쇠소깍 올레,TRUE,남원포구,33.27817157,126.7198321,1,13.4,4~5
5코스,남원-쇠소깍 올레,TRUE,쇠소깍 다리,33.25308839,126.6226777,2,13.4,4~5

데이터 시각화

1. 지점 데이터 시각화

1.1. 지점의 위/경도 표시

지점의 위도와 경도를 이용하여 지도에 표시하고, 소분류를 기준으로 색깔을 입혀 시각화 하였습니다.

Untitled

1.2. 소분류 기준 지점 개수 시각화

각 소분류당 지점의 개수를 비교하기 쉽게 막대 그래프로 시각화 해보았습니다.

Untitled

시각화한 데이터를 보니, 산이 많아서 이를 어떻게 해야할지 다른 팀원들과 상의를 더 해봐야 할 것 같습니다. 또한 산의 경우 상세 정보에서 코스 정보나 소요 시간을 제공하는지도 확인해 봐야 할 것 같습니다.

2. 제주 올레 코스 시각화

맨처음 시작점의 위/경도와 도착점의 위/경도를 이용해서 시트를 만들고, 코스 번호를 기준으로 경로를 생성 하려 하였습니다. 하지만 생각대로 되지 않아 검색을 했고, 그 결과 date 나 order 열이 없어서 경로가 생성되지 않는 다는 것을 알게 되었습니다. 제주 올레 코스의 초반 데이터는 아래와 같았습니다.

초반 데이터

올레길 코스 번호,올레길 코스 이름,휠체어 구간 유무,시작점,시작점 위도,시작점 경도,종점,종점 위도,종점 경도,총 길이(KM),예상 소요 시간,순서
1코스,시흥-광치기 올레,TRUE,시흥초등학교,33.47971514,126.8956494,광치기해변,33.45239254,126.9247041,15.1,4~5,1
1-1코스,우도 올레,FALSE,천진항,33.49277541,126.951697,천진항,33.49277541,126.951697,11.3,4~5,1
2코스,광치기-온평 올레,FALSE,광치기해변,33.45239254,126.9247041,온평포구,33.40490634,126.9043758,15.2,4~5,2
3코스,온평-표선 올레,FALSE,온평포구,33.40490634,126.9043758,표선해수욕장,33.3276295,126.8375243,20.9,6~7,2
4코스,표선-남원 올레,TRUE,표선해수욕장,33.3276295,126.8375243,남원포구,33.27817157,126.7198321,19,5~6,3
5코스,남원-쇠소깍 올레,TRUE,남원포구,33.27817157,126.7198321,쇠소깍 다리,33.25308839,126.6226777,13.4,4~5,4
6코스,쇠소깍- 제주올레여행자센터 올레,TRUE,쇠소깍 다리,33.25308839,126.6226777,제주올레 여행자센터,33.24761962,126.5587,11,3~4
7코스,제주올레 여행자센터-월평 올레,FALSE,제주올레 여행자센터,33.24761962,126.5587,월평 아왜낭목 쉼터,33.24386017,126.4587187,17.6,5~6
7-1코스,서귀포 버스터미널 - 제주올레 여행자센터 올레,FALSE,서귀포 버스터미널,33.24872014,126.5080211,제주올레 여행자센터,33.24761962,126.5587,15.7,4~5
...

보통 태풍의 경우 date 열을 사용하여 경로를 시각화 합니다. 하지만 올레 코스의 경우 해당 열 보다는 순서열이 적합하며, 시작점의 경우 1 을 그리고 도착점의 경우 숫자 2 를 부여하여 데이터를 수정하였습니다.

코스 번호,코스 이름,휠체어 구간 유무,위치,위도,경도,순서,총 길이(KM),예상 소요 시간
1코스,시흥-광치기 올레,TRUE,시흥초등학교,33.47971514,126.8956494,1,15.1,4~5
1코스,시흥-광치기 올레,TRUE,광치기해변,33.45239254,126.9247041,2,15.1,4~5
1-1코스,우도 올레,FALSE,천진항,33.49277541,126.951697,1,11.3,4~5
1-1코스,우도 올레,FALSE,천진항,33.49277541,126.951697,2,11.3,4~5
2코스,광치기-온평 올레,FALSE,광치기해변,33.45239254,126.9247041,1,15.2,4~5
2코스,광치기-온평 올레,FALSE,온평포구,33.40490634,126.9043758,2,15.2,4~5
3코스,온평-표선 올레,FALSE,온평포구,33.40490634,126.9043758,1,20.9,6~7
3코스,온평-표선 올레,FALSE,표선해수욕장,33.3276295,126.8375243,2,20.9,6~7
4코스,표선-남원 올레,TRUE,표선해수욕장,33.3276295,126.8375243,1,19,5~6
4코스,표선-남원 올레,TRUE,남원포구,33.27817157,126.7198321,2,19,5~6
5코스,남원-쇠소깍 올레,TRUE,남원포구,33.27817157,126.7198321,1,13.4,4~5
5코스,남원-쇠소깍 올레,TRUE,쇠소깍 다리,33.25308839,126.6226777,2,13.4,4~5
6코스,쇠소깍- 제주올레여행자센터 올레,TRUE,쇠소깍 다리,33.25308839,126.6226777,1,11,3~4
6코스,쇠소깍- 제주올레여행자센터 올레,TRUE,제주올레 여행자센터,33.24761962,126.5587,2,11,3~4
...

이렇게 데이터를 수정하면 마크-라인을 선택하여 경로 생성이 가능합니다. 결과는 아래와 같습니다.

휠체어 구간이 존재하는 구간은 두껍게 표현하였습니다.

휠체어 구간이 존재하는 구간은 두껍게 표현하였습니다.

또한 팀원들이 각 코스별 내용을 순서대로 볼 수 있도록 페이지에 코스 번호와 이름을 넣었습니다.

Untitled

대시보드로 팀원들과 소통하기


이렇게 시각화한 데이터를 한눈에 볼 수 있도록 tableau public 에 게시하였으며, 결과는 아래와 같습니다.

https://public.tableau.com/app/profile/sieun.kim7547/viz/_17152449444030/1