공공데이터(openapi) 사용법 (특정 정류소, 버스의 남은 좌석 확인 하기)
회사가 출퇴근 자율제에 주 40시간 근무 규정이 생긴지 몇달이 되어간다.
출근할 때 버스의 남은 좌석을 안다면 편한 나의 출근 시간을 정할 수 있을텐데..
우선 남은 버스 좌석 데이터를 모으면 어떻게(통계, Regression, 딥러닝 등) 해서라도 위 궁금증을 해결할 수 있으리라 생각한다.
그래서 아래와 같이 데이터 취합을 시도했다
1. 공공데이터 사이트에 가입하기
- https://www.data.go.kr/
- 파일데이터/OpenAPI/표준데이터 제공
2. 로그인 => 데이터셋 => Open API 선택 => 기관별 선택
=> "버스도착정보 조회" 검색 후 개발 계정 신청 (IE 9 이상에서만 신청 가능)
- 정류소와 노선번호를 기준으로 첫번째, 두번째 도착 예정 버스의 위치정보와 도착 예정시간, 빈자리 지상버스 정보를 REST SOAP 방식의 API로 제공
- 일반/서버 유형 선택 가능
- 일일 트래픽 1000 제한 (?) (why? 개발 계정이기 때문에)
- 운영(서비스)계정 활용 신청 시 필요한 트래픽을 요청할 수 있음
3. 마이페이지 => OpenAPI => 개발계정 => 인증키 신청 후 => 인증키 발급 현황에서 확인 가능
- 나의 인증키 : OSE.....%3D
4. 경기버스정보에서 Rest API를 통해서 데이터 수집 가능
- 버스도착정보항목조회
- https://www.gbis.go.kr/gbis2014/publicService.action?cmd=tBusArrivalItem
- 노선 ID와 정류소 ID는 어떻게 아는 거지?
- 기반정보조회 테스트에서 다운로드 링크 확인 후 txt 파일 다운로드해서 확인 가능
- routeId=204000057
- stationId=209000160
5. 아래 URL로 데이터 확인 가능
- URL: http://openapi.gbis.go.kr/ws/rest/busarrivalservice?serviceKey=test&routeId=204000057&stationId=209000160
6. http 툴 설치해서 CLI로 테스트 수행 => 정상동작
- $ sudo apt-get install httpie
- $ http "http://openapi.gbis.go.kr/ws/rest/busarrivalservice?serviceKey=OSE...3D&routeId=204000057&stationId=209000160"
7. 아래와 같이 동작을 잘 하는군
<?xml version="1.0" ?>
<response>
<comMsgHeader>
<errMsg>NORMAL SERVICE.</errMsg>
<returnCode>00</returnCode>
</comMsgHeader>
<msgHeader>
<queryTime>2017-01-11 14:06:15.245</queryTime>
<resultCode>0</resultCode>
<resultMessage>정상적으로 처리되었습니다.</resultMessage>
</msgHeader>
<msgBody>
<busArrivalItem>
<delayYn1>N</delayYn1>
<delayYn2>N</delayYn2>
<drvEnd>N</drvEnd>
<flag>PASS</flag>
<locationNo1>5</locationNo1>
<locationNo2>10</locationNo2>
<lowPlate1>0</lowPlate1>
<lowPlate2>0</lowPlate2>
<plateNo1>경기70아7449</plateNo1>
<plateNo2>경기70아6295</plateNo2>
<predictTime1>10</predictTime1>
<predictTime2>18</predictTime2>
<remainSeatCnt1>21</remainSeatCnt1>
<remainSeatCnt2>40</remainSeatCnt2>
<routeId>204000057</routeId>
<staOrder>29</staOrder>
<stationId>209000160</stationId>
</busArrivalItem>
</msgBody>
</response>
안녕하세요? 저도 최근에 같은 생각으로 데이터를 모으기 시작했는데, 반갑습니다. :)
답글삭제진행은 잘 되셨는지요?