🤔 현재 상황
새로운 프로젝트를 기획하며 가장 걱정됬던 기능이 목적지(학교, 직장)에서 도착지(매물들) 대중교통을 사용한 이동 시간을 계산해 정렬하는 기능입니다. 이 기능 말고는 CRUD API를 구현하는 프로젝트가 큰 어려움은 없을 것 같은데 해당 기능의 구현 방법을 현재 고민중입니다.
👀 구현 방법 후보
1. 대중교통 API 대량 사용
현재 길찾기 API들이 여럿 있습니다.
- 네이버 지도 길찾기 API
- 카카오 길찾기 API
- T MAP 길찾기 API
하지만 현재 프로젝트에서는 대중교통을 사용한 길찾기 API가 필요했는데 해당 기능은 T MAP에서만 제공하고있었습니다.
하지만 무료는 일일 횟수 제한 요금제는 건당 현재 0.88원의 비용이 소모되는데 한 번의 매물 추천 기능을 사용 시 수 많은 매물들에서 목적지까지의 이동 시간을 뽑아와야하기 때문에 거리에 따라 수 많은 매물들이 있을 시 너무 많은 요금을 지불해야하기 때문에 사실 외부 API를 사용한 이동 시간 정렬 방법은 금방 탈락됬습니다.
2. 공공데이터에서 대중교통 노선, 정류장간의 이동 시간등 상세 정보 찾기
지하철은 비교적 수가 적기 때문에 공공데이터에 충분한 양의 데이터가 존재합니다. 하지만 버스 노선들의 상세 데이터는 지역을 서울, 경기도로 제한을 해도 굉장히 많은 데이터가 존재합니다. 또 경기도엔 많은 시들이 있는데 지역별로 파일의 정리 형식이 다르며 또 중요한 노선의 정류장 목록, 정류장 사이의 이동 시간 데이터가 없어 프로젝트를 역세권 추천으로 바꿔야하나 고민했습니다.
하지만 해당 정보들을 이 취합하고 있는 데이터가 있었습니다.
3. GTFS 발견
GTFS(General Transit Feed Specification)란?
대중교통 정류장 위치, 출발/도착 시간을 포함한 스케쥴 정보를 표현하는 표준화된 대중교통 정보
저희가 원하는 정보들을 얻을 수 있지 않을까 기대중입니다. 현재 GTFS는 2곳을 찾았는데
- 구글 GTFS https://developers.google.com/transit/gtfs?hl=ko
- 국가교통DB GTFS https://www.ktdb.go.kr/www/selectPbldataChargerWebList.do?key=12
구글 GTFS는 static, realtime 2가지를 지원중이고 국가교통 db는 사용신청을 해야 자세한 내용을 볼 수 있습니다.
https://www.ktdb.go.kr/www/selectBbsNttView.do?key=45&bbsNo=2&nttNo=3704
해당 페이지에서 gtfs 사용에 대한 정보를 확인할 수 있으며 gtfs가 정말 프로젝트에 사용할 수 있는지는 추가적인 조사가 필요할 예정입니다....
🎈 결론
평소 개발은 게시판 형식의 프로젝트들이 대부분입니다. 모임 관리, 일정 관리, 팀 프로젝트 관리 등등 구현 난이도가 낮았습니다. 구현 후 추가적인 작업들(전역 예외처리, JOIN을 통한 서브쿼리 제거, 디자인 패턴 적용)이 많았습니다. 하지만 현재 프로젝트는 구현자체가 큰 도전이 될 것 같습니다.