출처: https://www.data.go.kr/dataset/3034842/openapi.do
계발계정은 트래픽1,000회 제한이 있어
작업일수가 길어 문장이 매끄럽지 않고, 두서없이 나열되있지만
정리할 필요성을 못느껴서 그냥 게시
[공공데이터 - 대전광역시 버스정보 1부, http://zelkun.tistory.com/181]
[공공데이터 - 대전광역시 버스정보 2부, http://zelkun.tistory.com/182]
와 연결되니 참고바람
참고로 편의상 API기술문서를 기준으로 했기때문에 서비스 명이 다름
No |
오퍼레이션명(영문) |
오퍼레이션명(국문) |
필수 key |
1 |
getArrInfoByStopID |
정류소ID(7자리) 별 버스 도착예정정보 조회 서비스 |
BusStopID |
2 |
getArrInfoByUid |
정류소ID(5자리) 별 버스 도착예정정보 조회 서비스 |
arsId |
No |
항목명(영문) |
항목명(국문) |
항목크기 |
항목설명 |
1 |
BUS_NODE_ID |
요청 정류소 ID(7자리) |
7 |
요청 정류소 ID(7자리) |
2 |
BUS_STOP_ID |
요청 정류소 ID (5자리) |
100 |
요청 정류소 ID(5자리) |
3 |
CAR_REG_NO |
차량번호 |
100 |
차량번호 |
4 |
DESTINATION |
종점 |
5 |
종점 |
5 |
EXTIME_MIN |
도착예정시간(분) |
10 |
도착예정시간(분) |
6 |
EXTIME_SEC |
도착예정시간(초) |
5 |
도착예정시간(초) |
7 |
INFO_OFFER_TM |
정보생성시간 |
10 |
정보생성시간 |
8 |
LAST_CAT |
첫/막차구분 |
10 |
첫차 막차(1: 첫차 2:막차 3:일반) |
9 |
LAST_STOP_ID |
최근 통과 정류소ID(5자리) |
5 |
최근 통과 정류소ID(5자리) |
10 |
MSG_TP |
메시지유형 |
1 |
메시지유형 '01'도착, '02' 출발, '03' 몇분후 도착 '04' 교차로 통과 '06 진입중 '07 차고지 운행대기중 |
11 |
ROUTE_CD |
노선ID |
8 |
노선ID |
12 |
ROUTE_NO |
노선번호 |
10 |
노선번호 |
13 |
ROUTE_TP |
노선유형 |
1 |
노선 타입(1:급행 2:간선 3:지선 4:외곽 5:마을 6:첨단) |
14 |
STATUS_POS |
잔여정류장 수 |
3 |
잔여정류장 수 |
15 |
STOP_NAME |
최근 통과 정류소 명칭 |
200 |
최근 통과 정류소 명칭 |
무튼 과관이다 도메인 관리는 하는것일까 요청 정류소 ID 라니...
요청 정류소 ID(5자리)는 무려 100이나 된다
그리고 정보생성시간(INFO_OFFER_TM) 은 10자리라고 되있는데 10자리가 넘는다...
(데이터를 보니 mysql timestamp로 보인다 아니면 말고)
메시지유형(MSG_TP) 또한 01~07 이라고 나와있는데 자릿수는 1이다
적절하게 조정이 필요하다
이제 해야할건 관심을 가져야하는 출/퇴근 이용 버스정보장을 찾는건데
사실 앞에서 했던거 다 무시하고 단박에 찾는방법이 있다
버스정류장에 정류장 번호가 표기되있기 때문이다
그것마져 귀찮으면 대전버스 어플에서 정류장 번호를 보면된다...
이 경우에는 7자리가 아닌 5자리 기준으로 조회하면 된다
정류장에 설치된 버스도착예정 시간을 보여주는게 API를 통해 데이터를 받아와서 표시해주는듯 하다 그걸 정부3.0으로 공공데이터라고 제공해주니 사실 불평할게 아니라 감사하게 여겨야 할지도...
출/퇴근 평균도착시간을 알기위해서
제공되는 데이터를 살펴보니 도착예정시간, 예정시간 초, 정보생성시간
이렇게 3개의 시간이라 표시된게 눈에 띄인다
근데 야밤에(새벽에) 작업하는 1인으로서 결과값을 받을수 없으니...
무튼 실데이터를 못보고 문서에 나온걸보고 하려니 속이 쓰리다..
<EXTIME_MIN>6</EXTIME_MIN> <EXTIME_SEC>317</EXTIME_SEC> <INFO_OFFER_TM>2015-11-16 15:01:09.0</INFO_OFFER_TM> |
현 시점 요청시간과 응답의 저장시간을 비교해봐야하는데...
저장시간, 분, 초 표시에 대해서 오차율을 알수가 없으니 말이다..
저장시간 간격도 itemList마다 다른걸로 보이고...
요청시 1분전 데이터를 가져오면 지나갔을수도 있으니...
무튼 오늘 작업은 여기까지 하고 자야겠다
서비스명 |
항목명(영문) |
항목명(국문) |
항목크기 |
버스운행정보 조회 서비스 |
ROUTE_NO |
노선번호 |
10 |
버스 정류장 정보 조회 서비스 |
ROUTE_NO |
경유노선정보 |
200 |
정류장 버스 도착 정보 조회 서비스 |
ROUTE_NO |
노선번호 |
10 |
그나마 이번 API를 써본결과 ROUTE_NO 가 버스번호라는걸 알게 되었다
그리고 정류장정보조회 서비스의 ROUTE_NO가 눈에 다시 들어왔다
경유노선 전체를 넣을거면 ROUTE_NOS 라던가...
바꿔주지 말이다 전체 노선을 한번에 보여주는데...
무튼...
낮에 한번 테스트를 해봤다 - 정류장ID (5자리)
작성을 시작한게 8일인데 테스트가 20일이라니..
호출 시간: 2017-07-20 17:31:31 |
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ServiceResult> <comMsgHeader/> <msgHeader> <currentPage>1</currentPage> <headerCd>0</headerCd> <headerMsg>정상적으로 처리되었습니다.</headerMsg> <itemCnt>2</itemCnt> <itemPageCnt>1</itemPageCnt> </msgHeader> <msgBody> <itemList> <EXTIME_MIN>3</EXTIME_MIN> <EXTIME_SEC>129</EXTIME_SEC> <INFO_OFFER_TM>2017-07-20 17:30:44.0</INFO_OFFER_TM> </itemList> <itemList> <EXTIME_MIN>8</EXTIME_MIN> <EXTIME_SEC>468</EXTIME_SEC> <INFO_OFFER_TM>2017-07-20 17:28:01.0</INFO_OFFER_TM> </itemList> </msgBody> </ServiceResult> |
관심있는부분은 시간이니 나머지는 삭제했다
31분31초에 호출했는데
저장시간은 30분 44초(47초), 28분1초(210초) 차이가 난다
1분미만이거나 1분단위면 좋을텐데 2분이 넘는건 뭐지...
한건만 해서는 저장 간격을 모르겠으니
테스트를 위해 1초, 10초, 30초, 1분(60초) 10회씩 데이터를 받아왔다
itemList는 순서가 바뀔수 있으니 노선번호, 차량번호 혹은 둘다 사용해서 봐야한다
데이터 확인을위해 DB Table을 구성하진 않고 XML로 LOG로 확인하려니
생각보다 양이 많았다 그래봐야 40건... 그래도 LOG에서 XML을 추출해서 비교했습니다
평균은 이쪽데이터를 쓸테니 수집 요일, 시간 등 컬럼을 추가할 필요가 있긴하지만
호출시간 한개만 넣고 나머진 함수 혹은 프로그램에서 처리해도 상관 없을듯 하다
노선이 2개지만 한개만 뽑아서 정리했다
수집시간 |
도착예정시간(분) |
도착예정시간(초) |
정보생성시간 |
2017-07-20 17:53:40.0 |
1 |
29 |
2017-07-20 17:53:11.0 |
2017-07-20 17:53:41.0 |
1 |
29 |
2017-07-20 17:53:11.0 |
2017-07-20 17:53:42.0 |
1 |
29 |
2017-07-20 17:53:11.0 |
2017-07-20 17:53:43.0 |
1 |
29 |
2017-07-20 17:53:11.0 |
2017-07-20 17:53:44.0 |
1 |
29 |
2017-07-20 17:53:11.0 |
2017-07-20 17:53:45.0 |
1 |
29 |
2017-07-20 17:53:11.0 |
2017-07-20 17:53:46.0 |
1 |
29 |
2017-07-20 17:53:11.0 |
2017-07-20 17:53:48.0 |
1 |
29 |
2017-07-20 17:53:11.0 |
2017-07-20 17:53:49.0 |
1 |
29 |
2017-07-20 17:53:11.0 |
2017-07-20 17:53:50.0 |
1 |
29 |
2017-07-20 17:53:50.0 |
수집시간 |
도착예정시간(분) |
도착예정시간(초) |
정보생성시간 |
2017-07-20 17:54:03.0 |
1 |
29 |
2017-07-20 17:53:50.0 |
2017-07-20 17:54:13.0 |
1 |
29 |
2017-07-20 17:53:50.0 |
2017-07-20 17:54:23.0 |
1 |
29 |
2017-07-20 17:53:50.0 |
2017-07-20 17:54:33.0 |
8 |
428 |
2017-07-20 17:54:33.0 |
2017-07-20 17:54:43.0 |
8 |
428 |
2017-07-20 17:54:33.0 |
2017-07-20 17:54:53.0 |
8 |
428 |
2017-07-20 17:54:33.0 |
2017-07-20 17:55:03.0 |
8 |
428 |
2017-07-20 17:54:33.0 |
2017-07-20 17:55:13.0 |
8 |
428 |
2017-07-20 17:54:33.0 |
2017-07-20 17:55:24.0 |
8 |
428 |
2017-07-20 17:54:33.0 |
2017-07-20 17:55:34.0 |
8 |
428 |
2017-07-20 17:54:33.0 |
수집시간 |
도착예정시간(분) |
도착예정시간(초) |
정보생성시간 |
2017-07-20 17:56:17.0 |
8 |
428 |
2017-07-20 17:54:33.0 |
2017-07-20 17:56:47.0 |
8 |
428 |
2017-07-20 17:54:33.0 |
2017-07-20 17:57:17.0 |
8 |
428 |
2017-07-20 17:54:33.0 |
2017-07-20 17:57:47.0 |
8 |
428 |
2017-07-20 17:54:33.0 |
2017-07-20 17:58:17.0 |
8 |
428 |
2017-07-20 17:54:33.0 |
2017-07-20 17:58:47.0 |
8 |
428 |
2017-07-20 17:54:33.0 |
2017-07-20 17:59:17.0 |
8 |
428 |
2017-07-20 17:54:33.0 |
2017-07-20 17:59:47.0 |
8 |
428 |
2017-07-20 17:54:33.0 |
2017-07-20 18:00:17.0 |
8 |
428 |
2017-07-20 17:54:33.0 |
2017-07-20 18:00:47.0 |
8 |
428 |
2017-07-20 17:54:33.0 |
이건뭐 8분 계속 떠있다가 지나갈 느낌, 차가 밀려서 서있으면 저장을 안하는건가...?
수집시간 |
도착예정시간(분) |
도착예정시간(초) |
정보생성시간 |
2017-07-20 18:07:59.0 |
10 |
566 |
2017-07-20 18:07:41.0 |
2017-07-20 18:08:59.0 |
9 |
498 |
2017-07-20 18:08:21.0 |
2017-07-20 18:09:59.0 |
7 |
388 |
2017-07-20 18:09:24.0 |
2017-07-20 18:10:59.0 |
7 |
388 |
2017-07-20 18:09:24.0 |
2017-07-20 18:11:59.0 |
7 |
388 |
2017-07-20 18:09:24.0 |
2017-07-20 18:12:59.0 |
5 |
274 |
2017-07-20 18:12:50.0 |
2017-07-20 18:14:00.0 |
4 |
222 |
2017-07-20 18:13:41.0 |
2017-07-20 18:15:00.0 |
4 |
222 |
2017-07-20 18:13:41.0 |
2017-07-20 18:16:00.0 |
4 |
222 |
2017-07-20 18:13:41.0 |
2017-07-20 18:17:00.0 |
4 |
222 |
2017-07-20 18:13:41.0 |
1, 10, 30, 60초 단위로 10건식 샘플을 받아왔는데
저장 간격이 감이 안잡힌다
데이터 수집할때 알았으면 2분, 5분, 10분, 30분 이렇게 더 수집했을텐데
야밤에 보려니 할 수 가 없다...
그나마 의미있는건 1분단위로 수집한게... 의미가 있다
기상청은 수집주기를 알려주기라도 하지... 이건 뭐...
잠이나 자야겠다
버스 순번은 같은 버스를 나타내며
중복건수는 동일버스중 정보생성시간이 같은걸 의미
버스 순번 |
정보생성시간 |
중복건수 |
1 |
2017-07-21 08:08:14.0 |
8 / 6 = 1.3333 |
1 |
2017-07-21 08:10:06.0 |
3 |
2 |
2017-07-21 08:10:30.0 |
4 |
2 |
2017-07-21 08:11:17.0 |
2 |
2 |
2017-07-21 08:11:32.0 |
4 |
2 |
2017-07-21 08:12:10.0 |
3 |
2 |
2017-07-21 08:12:42.0 |
2 |
3 |
2017-07-21 08:13:06.0 |
1 |
3 |
2017-07-21 08:13:17.0 |
8 |
3 |
2017-07-21 08:14:37.0 |
2 |
3 |
2017-07-21 08:14:56.0 |
3 |
3 |
2017-07-21 08:15:21.0 |
2 |
3 |
2017-07-21 08:15:42.0 |
14 / 6 = 2.3333 |
3 |
2017-07-21 08:18:05.0 |
9 |
3 |
2017-07-21 08:19:40.0 |
12 / 6 = 2 |
3 |
2017-07-21 08:21:44.0 |
4 |
3 |
2017-07-21 08:22:17.0 |
6 |
3 |
2017-07-21 08:23:24.0 |
3 |
4 |
2017-07-21 08:23:48.0 |
4 |
4 |
2017-07-21 08:24:36.0 |
32 / 6 = 5.3333 |
4 |
2017-07-21 08:29:54.0 |
1 |
4 |
2017-07-21 08:30:08.0 |
3 |
4 |
2017-07-21 08:30:39.0 |
7 |
4 |
2017-07-21 08:31:45.0 |
3 |
5 |
2017-07-21 08:32:17.0 |
6 |
5 |
2017-07-21 08:33:16.0 |
4 |
5 |
2017-07-21 08:34:01.0 |
1 |
5 |
2017-07-21 08:34:09.0 |
3 |
5 |
2017-07-21 08:34:33.0 |
17 / 6 = 2.8333 |
5 |
2017-07-21 08:37:26.0 |
3 |
5 |
2017-07-21 08:38:05.0 |
2 |
5 |
2017-07-21 08:38:16.0 |
1 |
5 |
2017-07-21 08:38:29.0 |
3 |
뭔... 32 * 10 = 320 / 60 = 5.3333 약 6분정도 업데이트 안된게 있다니...
저장 주기는 점점더 미궁속으로...
어쩔수 없이 버스위치정보 조회 서비스를 봐야겠군...
근데 보나마나 같을듯....
정류소 ID(7자리)를 키로 잡기로 했다
5자리는 Null이 있기도 하고 중복건수도 존재해서 PK는 무리
건수만 봤을때는 정류소 ID(5자리) 건이 104건정도 적게 보인다
중복 넣는걸 싫어하는 1인으로 전체 노선별 경유 정류소 목록 조회 9480건이나 되는 데이터를 좀 살펴보니 정류소 명, 정류소 ID, 위/경도, 도로명 등은 중복된건이 많이 보였다
정류소 타입은 같은 정류소를 가르키는데도 있거나 없거나...
그건 노선별로 기점, 종점이 달라서 일수도 있지만 그건 노선에 넣으면될것 같고..
실시간(?)으로 제공되는 버스위치정보, 정류장 도착정보는 몰라도
기초데이터는 정제해야 하고싶은맘이니..
근데 사실 버스노선변경되고 하면 해당작업을 다시해야되는 받아써야되는 고객입장이긴 함
정기 업데이트 등의 작업을 지금 신경쓸 필요는 없으니
괜찮을지도...
*PS.
설마 활용신청 자동승인인 서비스인데 무슨일이 있겠냐만은..
문제 있을시 알려주시면 내리겠습니다
공공데이터API - 전국문화축제표준데이터 (0) | 2018.09.11 |
---|---|
공공데이터 API - 대전광역시 버스정보 4부(차량등록정보 조회 서비스, 운수회사 정보 조회 서비스) (0) | 2017.09.11 |
공공데이터 API - 대전광역시 버스정보 2부 (정류소정보조회 서비스, 버스위치정보 조회 서비스) (0) | 2017.08.14 |
공공데이터 API - 대전광역시 버스정보 1부 (노선정보조회 서비스) (14) | 2017.07.24 |
Tistory BlogAPI 중단 (MS WORD BLOGAPI) (4) | 2016.12.23 |
댓글 영역