API 기능과 관련한 기본적인 정보 호출 및 사용 경험을 위한 코드입니다.
본 코드의 수정 및 복제와 같은 사용을 금합니다.
들어가기에 앞서서, 본 프로젝트는 지하철과 관련한 서비스를 간단하게 개발하고싶다거나, 경험하고 싶은 분들을 위해 만들어진 문서입니다. 서울시 공공데이터 실시간 지하철 API를 통해 원하는 정보를 뽑아내는 등의 간단한 경험이나 예제 코드가 포함되어있습니다.
본 프로젝트의 진행형은 FlowRail입니다. 그럼 이제 시작해보겠습니다.
첫번째로, 서울시 공공데이터 실시간 지하철 API 서울시 공공데이터에서는 로그인만 하면, 실시간 도착정보, 위치정보등 다양한 정보를 사용할 수 있고 기본적으로 간단하게 개발을 해보고싶으시다면, 실시간 도착정보 및 위치 정보를 통해 지하철 행선표시기를 만들 수 있으며 지하철 역간 거리 데이터를 통해 간단한 최단거리 시스템을 구현 하실수있습니다. 이때는 다익스트라 알고리즘이나 최단거리 알고리즘을 사용하시면됩니다.
링크를 남겨둘테니 API KEY를 발급받으시면됩니다. 실시간 도착 정보 - https://data.seoul.go.kr/dataList/OA-12764/F/1/datasetView.do 실시간 위치 정보 - https://data.seoul.go.kr/dataList/OA-12601/A/1/datasetView.do 역간 거리 및 소요시간 정보 - https://data.seoul.go.kr/dataList/OA-12034/S/1/datasetView.do
두번째, 기본적인 개발 시작 기본적으로 실시간 도착정보 API를 가장 많이 사용하실겁니다. http를 지원하고있으며 [http://swopenAPI.seoul.go.kr/api/subway/(API KEY)/xml/realtimeStationArrival/0/5/서울] 형식으로 간단하게 조회가능합니다. 상세하게 설명하자면, http://swopenAPI.seoul.go.kr/api/subway/(API KEY)/(XML or XLS or JSON)/realtimeStationArrival/0(0번째 부터)/5(5번째까지)/statnNm(역명)으로 구성되어있습니다.
만약 강남역을 json 타입으로 0번째(첫번째)부터 5번째까지 조회를 해본다고 하면, http://swopenAPI.seoul.go.kr/api/subway/(API KEY)/(JSON)/realtimeStationArrival/0/5/강남역 으로 조회가 가능합니다.
우리는 파이썬이나 다른 언어들로 통해 원하는 값을 호출 할 수 있습니다. 우리가 지하철 행선표시기에서 보던 내용들을 꺼내기 위해서 세부적으로 설명해주면 됩니다.
subwayId : 지하철의 호선 ID입니다. (1001:1호선, 1002:2호선, 1003:3호선, 1004:4호선, 1005:5호선 1006:6호선, 1007:7호선, 1008:8호선, 1009:9호선, 1061:중앙선1063:경의중앙선, 1065:공항철도, 1067:경춘선, 1075:수의분당선 1077:신분당선, 1092:우이신설선, 1093:서해선, 1081:경강선, 1032:GTX-A)으로 정리가 되어있고, 원하는 값을 원하는 호선 ID와 같게 만든 후 사용해도 큰 문제가 생기지 않았습니다.
updnLine : 상/하ㅣ내/외 구분하는 출력값입니다. (0 : 상행/내선, 1 : 하행/외선)
trainLineNm : 도착지방면을 출력합니다. (성수행(목적지역) - 구로디지털단지방면(다음역))
statnNm : 지하철 역명 출력값입니다.
*barvlDt : 열차도착예정시간입니다. (초단위)
btrainNo 열차번호 출력값입니다.
arvlMsg2 : 첫번째 도착 메시지 출력값입니다. (도착, 출발 , 진입 등)
arvlMsg3 : 두번째 도착 메시지 출력값입니다. (종합운동장 도착, 12분 후 (광명사거리) 등)
arvlCd : 도착 코드 출력값입니다. (0:진입, 1:도착, 2:출발, 3:전역출발, 4:전역진입, 5:전역도착, 99:운행중)
등등 더 많은 출력값들이 존재하지만, 기본적인 개발을 하신다면 이정도 정보면 충분합니다.
*참고 : barvlDt의 경우, 서울교통공사가 아닌 코레일 운영에서는 표시가 되지않으며 이 경우에는 arvlMsg를 사용해야합니다.