Bluemix 및 여러 API를 활용한 비행기 위치 추적하기 3편

728x90

STEP 1. Eclipse에서 작업하기

기본 예제는 이미 완성되어 있기 때문에 API 값들 위주로 바꿔넣으면 됩니다. 다만 그전에 앞서 했던 것처럼 프로젝트를 우클릭하여 Java Build Path를 클릭하여 Order and Export 탭에서 JRE가 체크되어 있는지 확인해야 합니다. 만일 되어 있지 않다면 JRE를 설치하고(혹은 설치되어 있다면) Library 탭에서 JRE System Library를 추가해야 합니다.


그렇지 않으면 업로드시 아래와 같은 에러 뿜뿜뿜과 마주해야 합니다. 꼴도 보기 싫은 에러메시지들...ㄷㄷㄷㄷ


아무튼 설치가 완료되었다면 이클립스 좌측의 트리에서 src > com.ibm.bmix 안에 있는 flightstat.java를 더블클릭합니다. (bluemix-invoice-generator가 아니라 그 아래에 있는 flightsapp 입니다. invoice는 다음에 올릴 블로그 소재에요 ㅎㅎ)


이제 본격적으로 코드를 보겠습니다. 사실 어떤 식으로 구동되는가가 원문에 나와 있습니다. 번역해서 올릴 수 있긴 한데 제가 컴알못이다 보니까. 내용을 잘못 전달할 것 같은 느낌이 있어서 아래에 어떤 방식으로 짠건지 원문 및 바로가기 첨부하도록 하겠습니다. 단순 따라하기 수준이 아닌 보다 디테일한 구동 원리 및 데이터 파싱에 대해 관심이 있으신 분은 바로가기를 통해 원문을 참고하여 주시기 바랍니다.


The flight-tracking application code contains a Java™ class that consumes an XML feed from the Flight Track by Airport API service. The API returns a list of flights that are approaching a specific airport in or near real time. The XML response data that is returned by the service contains data such as the flight coordinates, speed of the airplane, departure airport, and arrival airport. The data is parsed by using a DOM parser, and part of the retrieved data is formatted into JSON output. This JSON data is used in a JavaServer Pages (JSP) file to create the user interface that displays flight location on the map by using JQuery and the Google Maps API.

Here's how it works. The Flight Track by Airport API service provides a service URL, which requires a FlightStats App ID and App Key to be passed as parameters. The ID and key are uniquely assigned after registration. The airport code is appended to the URL based on user click or selection of airport:


여기서부터의 내용은 완성하기까지 반드시 해야만 하는 부분을 서술합니다. Flight Stats의 URL은 아래와 같이 구성되어 있습니다. 여기에 아까 얻은 API 정보 및 필요 정보를 입력하면 되는 것이지요. 예제에서 Protocol과 Format, Airportcode는 rest와 xml, +ac+로 이미 적혀 있습니다. 우리가 적어야 할 것은 yourid와 yourkey. 그리고 마지막 maxFlights의 숫자입니다. key는 앞서 말한 api key를 입력하면 되시고 maxFlights는 로딩시 불러올 랜덤한 비행기의 숫자입니다. 10이라 적으면 10대의 비행기 정보가 호출되고, 30이라 하면 30대의 정보가 호출되죠. 많으면 많을수록 좋겠지만, evaluation plan이 무료 plan이다 보니까 적당히 기입하도록 합시다.


https://api.flightstats.com/flex/flightstatus/{protocol}/v2/{format}/airport/tracks/{Airportcode}/arr?appId=&appKey= …. / maxFlights=10


그리고 왼쪽 파일트리에서 WebContent 폴더 내부에 있는 flighTrack.jsp를 이클립스에서 불러오면 아래와 같이 화면이 뜹니다. 여기서 11번째, 16번째 줄의 aircode를 자신이 원하는 공항 코드로 변경하여 줍니다. 가령 인천공항이면 ICN, 김해공항이면 PUS, 일본 나리타 공항이면 NRT가 되겠죠? 그리고 30번째 줄부터 33번째 줄까지 jquery 불러오는 주소를 http에서 https로 변경하여 줍니다. 이렇게 하면 순수한 의미의 듀토리얼 따라하기는 준비가 끝났습니다. 구동 원리에 관한 얘기는 앞서 말씀 드린 것처럼 원문을 참고하여 주세요.



이제 이클립스에서 Export 메뉴를 띄워서 war 파일로 추출합니다. 그럼 다음 1편(바로가기)에서 보았던 cf로 push하기를 하면 별 문제가 없다면 업로드가 완료되고 아래와 같은 사이트가 뜰 것입니다. 제 경우는 타이틀 텍스트를 약간 변경하였고, 도착공항은 ICN 즉, 인천국제공항을, 동시에 뜨는 비행기 대수는 30대로 세팅하였습니다. 

인천공항이 목적지인 수많은 비행기 중 30대가 랜덤하게 떴고 그 중 하나를 클릭하니 편명은 7C*1101 출발지는 NRT, 도착지는 ICN, 속도는 시속 304마일, 경도 132.2523, 위도: 35.9845 입니다. 해석하자면 아래와 같이 해석할 수 있을 것입니다.


편명 : 제주항공 1101편

출발 : 일본 나리타 국제공항

도착 : 한국 인천 국제공항

속도 : 시속 304마일 (시속 489킬로미터)

경도 : 132.2523

위도 : 35.9845


네이버로 편명을 조회하니 아래와 같이 2시 32분 도착 예정이라고 뜨고 있습니다. 제가 현재 이 문구를 작성하는게 오후 1시 28분이니 약 1시간 정도 뒤면 인천 공항에 도착하겠네요.



이렇듯 요청 시점의 비행기 운항 현황을 실시간으로 확인할 수 있습니다. 따라하시느라 어려움은 없으셨는지 아래 그림을 통해서 APP이 어떤 식으로 구축되었는지 확인이 가능합니다.



제 딴에는 이런 코딩 관련 글은 처음 올리는 지라 잘못 전달하면 어떻게 하지 하고 긴장을 많이 했었는데 어쨌든 마무리가 되네요. 봐주시느라 고생 많으셨습니다. 감사합니다.


Bluemix 및 여러 API를 활용한 비행기 위치 추적하기 ]

1편 바로가기

2편 바로가기

3편 바로가기


728x90