시티타이머를 개발하면서 가장 많은 노력을 기울였던 부분은 가장 가까운 역에 도착하는 열차들의 도착시간을 가져오는 것이었다.
이를 구현하기 위해서는
1. 현재 위치에서 가장 가까운 역
2. 해당하는 역의 열차 들의 도착 정보
가 필요했는데
우선, 현재 위치에서 가장 가까운 역을 찾기 위해서는 사용자의 현재 좌표를 받아오는 것뿐만 아니라 전국 지하철역들의 좌표 데이터를 구하는 것이 필수적이었다.
전국의 역들의 좌표 값들을 구하기 위해
https://data.seoul.go.kr/dataList/OA-21232/S/1/datasetView.do
열린데이터광장 메인
데이터분류,데이터검색,데이터활용
data.seoul.go.kr
https://t-data.seoul.go.kr/category/dataviewopenapi.do?data_id=1036
서울시 교통빅데이터플랫폼
서울시 교통빅데이터 제공 창구입니다.
t-data.seoul.go.kr
등의 공공 api 들을 이용해 최대한 역들의 좌표 값들을 수집했지만, 이들 API에서는 전국 지하철역 좌표를 모두 제공하지 않았다.
그래서 누락된 역에 대해서는 Google Geocoding API를 사용하여 좌표를 직접 얻어내야만 했다.
두 번째로, 역별 열차 도착 정보를 제공하기 위해서는 서울 지하철 1~8호선의 정보를 제공하는 공공 API인
https://data.seoul.go.kr/dataList/OA-12764/F/1/datasetView.do
열린데이터광장 메인
데이터분류,데이터검색,데이터활용
data.seoul.go.kr
와
https://www.data.go.kr/data/15098554/openapi.do
국토교통부_(TAGO)_지하철정보
지하철역목록, 역별출구목록, 출구별버스노선목록, 역별시간표목록을 조회하는 지하철정보 서비스이며, 지하철 정보는 키워드 기반 지하철역 목록조회, 지하철 역 출구별 버스노선 목록, 지하
www.data.go.kr
를 사용해 지하철 들의 도착 시간을 구하여야 했다.
그런데 두 API에서 사용하는 매개변수가 지하철 역명, 지하철 역사 코드로 제각기 달랐기에 아래의 API를 활용해 두 API에서 사용할 값들을 구해야 했다.
https://www.data.go.kr/data/15098554/openapi.do
국토교통부_(TAGO)_지하철정보
지하철역목록, 역별출구목록, 출구별버스노선목록, 역별시간표목록을 조회하는 지하철정보 서비스이며, 지하철 정보는 키워드 기반 지하철역 목록조회, 지하철 역 출구별 버스노선 목록, 지하
www.data.go.kr
의
를 호출해
{
"response": {
"header": {
"resultCode": "00",
"resultMsg": "NORMAL SERVICE."
},
"body": {
"items": {
"item": [
{
"subwayRouteName": "신분당",
"subwayStationId": "MTRDXD14308",
"subwayStationName": "양재(서초구청)"
},
{
"subwayRouteName": "신분당",
"subwayStationId": "MTRDXD14309",
"subwayStationName": "양재시민의숲(매헌)"
},
{
"subwayRouteName": "3호선",
"subwayStationId": "MTRS13332",
"subwayStationName": "양재(서초구청)"
}
]
},
"numOfRows": 10,
"pageNo": 1,
"totalCount": 3
}
}
}
역사 명과 역사 코드를 얻어와서 두 API의 매개변수로 사용했다.
하지만 바로 다른 문제가 발생했는데 위 response 값처럼 '양재'로 지하철역 사명을 검색할 경우 양재역과 양재시민의 숲이 모두 반환되는 경우가 있다는 것이었다. 이에 부역 사명을 포함하여 검색을 수행하고자 하였지만, 환승역들의 경우 노선의 운영 회사가 다른 경우 부역명이 다르게 사용되는 경우가 있어 부역명을 포함하여 검색을 수행할 수밖에 없었고, 이를 코드에서 각각 역들의 부역명들을 예외 처리하여 처리해야 했다.
이를 처리하기 위해서는 부역명들이 있는 역들의 경우 하나하나 테스트를 수행해서 확인하는 방법밖에 없었는데, 기존에 가지고 있던 역 정보들과 나무위키, 각종 데이터들을 수집해 부역명을 가진 역 리스트를 따로 뽑아 자동화된 파이썬 스크립트를 작성하여 예외 케이스를 수집해 처리했다.
또한, 국토교통부 API와 서울교통공사 API에서 사용하는 역사명이 다른 경우도 있었다. '응암'은 '응암순환(상선)'으로, '공릉'은 '공릉(서울산업대입구)' 등으로 표시되는 차이같은..
이를 해결하기 위해 역시 파이썬 스크립트를 사용하여 역사명 차이를 수집하고 예외 처리를 추가했다.
이 과정을 통해 앱에서 사용할 필수적인 데이터들을 성공적으로 수집할 수 있었고, 이를 기반으로 사용자에게 정확한 지하철 도착 정보를 제공할 수 있을 거라는 확신을 가질 수 있게 되었다.
'시티타이머 > 회고' 카테고리의 다른 글
UX_위젯 디자인🪽 (1) | 2024.10.15 |
---|---|
iOS 위젯 타이머: 기술적 도전과 구현 과정🪙 (3) | 2024.10.10 |
앱 UIUX 설계_🪙🪽 (0) | 2024.09.30 |
리서치 및 아이데이션_🪙🪽 (2) | 2024.09.22 |
프로젝트 시작 계기_엔제이🪽 (1) | 2024.08.04 |