Woori BNC
닫기
고객센터

노선 분석 프로그램이 필요한 공항·항공 실무자를 위한 사례

2021.01.08 조회 3028

우리비엔씨가 2020년 인천국제공항공사를 위해 개발한 ‘Travel Bubble 잠재노선 선정’ 프로그램 사례입니다. 코로나19 시기에 트래블 버블 협약 후보를 고르는 노선 담당 실무자를 위해, 공개된 코로나19 확진자 데이터와 직항 운항실적을 모아 국가별·노선별 안전성 등급을 자동으로 계산하도록 만들었습니다. 고객이 쓰던 엑셀 분석 템플릿의 계산 단계를 그대로 옮겨, 매번 다시 하던 데이터 정리와 계산을 버튼 몇 번으로 끝낼 수 있게 한 것이 핵심입니다.

Travel Bubble 잠재노선 선정 프로그램의 2차 스크리닝 결과 화면: 국가·노선별 코로나19 위험성과 방역체계 수준, 안전·주의·경계·위험 협약 등급 목록과 두 지표를 교차한 사분면 차트

2차 스크리닝 결과 화면. 인천 출발 직항 노선마다 코로나19 위험성과 방역체계 수준을 교차해 협약 등급을 매깁니다.

이런 업무를 맡고 계신 분께 맞는 사례입니다

  • 공항·항공 분야에서 노선별 위험도나 우선순위를 정기적으로 판단해야 하는 실무자
  • 공개 통계와 내부 실적 데이터를 엑셀에서 합쳐 등급을 매기고 있는 담당자
  • 분석 템플릿이 커지고 무거워져서, 매번 같은 계산을 손으로 다시 돌리는 일이 부담스러운 기관

주제는 2020년 코로나19 상황이지만, 여러 데이터를 모아 기준값으로 걸러 내고 후보를 추리는 구조는 지금도 많은 분석 업무에 그대로 적용됩니다.

트래블 버블 노선 선정, 무엇을 판단해야 했나

트래블 버블은 방역 상황이 안정된 국가끼리 격리 같은 제한을 줄이고 여행을 허용하자는 협약입니다. 2020년 하반기, 인천국제공항공사는 어느 나라와 이 협약을 논의할 만한지, 그 나라 안에서도 어느 노선이 안전한지를 데이터로 판단해야 했습니다.

여기서 어려운 점은 질문이 두 겹이라는 것입니다. 나라 전체로는 안정적이어도 인천과 연결된 특정 도시는 확진자가 늘고 있을 수 있고, 반대의 경우도 있습니다. 그래서 분석도 두 단계로 나뉩니다.

  • 1차 스크리닝 (국가 단위): 전 세계 국가의 확진자 추이로 위험성 지수를 계산하고 1~4등급으로 나눈 뒤, 1·2등급 국가를 1차 협약 후보국가로 뽑습니다.
  • 2차 스크리닝 (노선 단위): 1차 후보국가에 인천에서 직항으로 취항하는 노선을 행정구역(주·성) 단위로 나누고, 코로나19 위험성과 방역체계 수준을 함께 따져 안전·주의·경계·위험 4단계로 나눕니다.

엑셀 분석 템플릿을 프로그램으로 옮긴 이유

처음 받은 자료는 고객이 직접 설계한 엑셀 분석 템플릿이었습니다. 원본 데이터 시트, 1차·2차 스크리닝 시트, 참고 지표 시트가 순서대로 이어지는 구조라 분석 논리 자체는 잘 정리되어 있었습니다. 문제는 운영이었습니다.

구분엑셀 템플릿프로그램
데이터 규모파일 하나가 60MB를 넘고, 시트마다 수십만 행SQLite 데이터베이스에 쌓고 필요한 기간만 꺼내 계산
새 데이터 반영일별 확진자 파일을 받아 시트에 붙여 넣고 범위를 다시 맞춤CSV 파일이 모인 폴더를 지정하면 한 번에 업로드
추세 계산추세 계산이 외부 추가 기능(HP 필터)에 의존해, PC 환경에 따라 계산이 되지 않을 수 있음계산이 프로그램 안에 들어 있어 어느 PC에서나 같은 결과
기준값 변경수식 안의 숫자를 직접 고쳐야 함분석 기간과 등급 구간값을 화면에서 입력
결과 확인시트를 오가며 표와 차트를 찾아봄메뉴 하나에서 국가·노선을 클릭하면 상세 지표와 추세 차트 표시

템플릿을 만든 분의 분석 논리는 건드리지 않고, 사람이 반복하던 부분을 프로그램이 맡도록 옮기는 것이 이번 개발의 방향이었습니다. 잘 만든 엑셀 템플릿은 그 자체로 훌륭한 설계서가 됩니다. 이 사례도 템플릿의 계산 단계를 하나씩 확인하며 프로그램으로 옮겼습니다.

프로그램 처리 흐름 5단계

1. 코로나19 확진자 데이터 일괄 업로드

전 세계 확진자 데이터는 존스홉킨스대학교 CSSE가 GitHub에 매일 공개하던 일별 CSV 파일을 사용했습니다. 받은 파일을 한 폴더에 모아 두고 폴더를 지정한 뒤 [Start Upload]를 누르면, 폴더 안의 파일 전체가 순서대로 데이터베이스에 들어갑니다. 진행률과 처리 메시지가 화면에 남기 때문에, 오류가 나면 이 메시지를 복사해 보내 주시면 원인을 바로 찾을 수 있게 했습니다.

코로나19 Raw 데이터 업로드 화면: Open Folder로 일별 CSV 폴더 선택, Start Upload 버튼, 진행률 표시줄, Processing Status 로그 창

코로나19 Raw 데이터 업로드 화면. 폴더 단위로 일별 CSV를 한 번에 올립니다.

2. 직항 노선 운항실적 업로드

인천공항의 월별 직항 노선 운항실적 엑셀 파일도 같은 방식으로 올립니다. 이 데이터는 1차 후보국가를 볼 때 노선 수요를 함께 판단하고, 2차 스크리닝에서 국가별 취항 노선 목록을 만드는 데 쓰입니다. 내부 실적 자료라 데이터베이스는 담당자 PC에서 지정한 폴더에만 저장되도록 했습니다.

3. 휴양지 6곳 확진자 수기입력

국가 단위 데이터와 별도로 따로 지켜봐야 하는 휴양지가 있었습니다. 인도네시아 발리, 팔라우, 필리핀 보라카이·세부·팔라완, 태국 푸켓 6곳입니다. 이곳은 담당자가 일자별 누적 확진자를 표에 직접 입력하고 저장하면, 분석할 때 다른 국가와 똑같이 계산에 들어갑니다.

코로나19 발생현황 수기입력 화면: 조회기간 선택, 발리·팔라우·보라카이·세부·팔라완·푸켓 6개 휴양지의 일자별 누적 확진자 입력 표와 저장·Export 버튼

휴양지 6곳의 누적 확진자를 일자별로 입력하는 화면

4. 분석 기간과 등급 기준을 정하고 실행

분석 실행 창에서는 두 가지만 정하면 됩니다. 분석 기간은 기본 최근 2개월이며 직접 고를 수도 있습니다. 안전성 등급의 구간값은 기본으로 위험성 지수 10 미만 1등급, 100 미만 2등급, 500 미만 3등급, 500 이상 4등급이 들어 있고, 필요하면 바꿔서 다시 돌려 볼 수 있습니다. 구간이 끊기거나 겹치게 입력하면 분석이 엉뚱하게 나오므로, 구간값은 이어지는 숫자로만 넣도록 안내했습니다.

노선분석 실행 창: Option 1 분석기간 설정(최근 분석, 최근 2개월, 직접 선택), Option 2 코로나19 안전성등급 기준(1~4등급 구간 시작값과 종료값), 분석 실행 버튼

분석 실행 창. 기간과 등급 구간값을 정하고 [분석 실행]을 누릅니다.

5. 결과 조회와 엑셀 저장

결과는 ‘각종 분석결과 조회’ 화면 하나에 모았습니다. 왼쪽 메뉴에서 원본 데이터, 피벗 집계, 국가별 코로나19 현황, 1차 협약 후보국가, 2차 협약 후보노선, 노선별 코로나19 현황을 차례로 볼 수 있고, 모든 표는 엑셀로 내보낼 수 있습니다. 보고서는 결국 엑셀이나 문서로 정리하게 되니, 프로그램 결과를 그대로 가져다 쓸 수 있어야 했습니다.

1차 스크리닝: 국가별 위험성 지수와 4개 등급

국가별로 분석 기간 동안의 일일 확진자 흐름을 보고 위험성 지수를 계산합니다. 화면에서 국가를 클릭하면 오른쪽에 일일 확진자 막대와 추세선 차트가 나오고, 아래에 계산 근거가 되는 값이 함께 표시됩니다.

  • 코로나19 위험성 지수와 안전성 등급(1~4등급)
  • 증감 추세 (늘고 있는지, 줄고 있는지)
  • 최근 1주일 평균 일일 확진자 수
  • 분석 기간 중 평균 일일 확진자 수의 최대·최소

등급만 보여 주면 “왜 이 나라가 3등급이냐”는 질문에 답하기 어렵습니다. 그래서 숫자와 차트를 같은 화면에 두어, 담당자가 등급의 이유를 바로 설명할 수 있게 했습니다. 1·2등급 국가는 1차 협약 후보국가 화면으로 넘어가 직항 노선 실적과 함께 정리됩니다.

국가별 코로나19 현황 화면: 국가별 위험성 지수와 1~4등급 색상 목록, 선택한 국가의 일일 확진자 막대와 추세선 차트, 위험성 지수·안전성 등급·증감 추세·최근 1주일 평균 확진자 수 상세 항목

국가별 코로나19 현황. 왼쪽 목록에서 국가를 고르면 추세 차트와 상세 지표가 바뀝니다.

2차 스크리닝: 노선별 안전·주의·경계·위험

2차에서는 1차 후보국가에 인천에서 직항으로 취항하는 노선을 하나씩 봅니다. 같은 나라라도 도착 도시가 속한 주나 성의 상황이 다를 수 있기 때문에, 확진자 데이터를 행정구역 단위로 나눠 노선마다 위험성을 따로 계산합니다.

여기에 국가별 방역체계 수준을 더합니다. 방역체계 점수는 고객 템플릿의 기준대로 Global Health Security Index 2019를 사용했습니다. 두 값을 평균 대비 높고 낮음으로 나누면 네 칸이 생기고, 그 칸이 곧 협약 등급이 됩니다.

협약 등급코로나19 위험성방역체계 수준읽는 법
안전낮음높음확산이 적고 방역 여력도 큼
주의낮음낮음확산은 적지만 방역 여력이 약함
경계높음높음방역 여력은 있지만 확산세가 큼
위험높음낮음확산세가 크고 방역 여력도 약함

맨 위 화면의 오른쪽 사분면 차트가 바로 이 표를 그림으로 옮긴 것입니다. 가로축이 코로나19 위험성, 세로축이 방역체계 수준이라, 노선 점이 어느 칸에 찍혔는지만 봐도 전체 그림이 잡힙니다. 노선별 코로나19 현황 화면에서는 노선 하나를 골라 그 지역의 일일 확진자 추세를 따로 확인할 수 있습니다.

노선별 코로나19 현황 화면: 국가·행정구역·노선별 안전성 등급과 위험성 지수 목록, 선택한 Sydney Kingsford Smith 노선의 일일 확진자 막대와 추세선 차트

노선별 코로나19 현황. 행정구역 단위로 계산한 노선별 등급과 추세를 보여 줍니다.

프로젝트 개요

항목내용
고객사인천국제공항공사
개발 기간2020년 11월 ~ 2020년 12월 (사용자 매뉴얼 2020년 12월 17일 배포)
개발 내용Travel Bubble 잠재노선 선정 프로그램 v1.0 (엑셀 분석 템플릿의 프로그램화)
주요 기능코로나19 CSV 폴더 일괄 업로드, 직항 운항실적 엑셀 업로드, 휴양지 수기입력, 1차 국가별·2차 노선별 스크리닝, 추세 차트, 피벗 집계, 엑셀 저장, DB 백업·위치 설정
사용 데이터존스홉킨스대 CSSE 코로나19 일별 데이터, 인천공항 직항 노선 운항실적, Global Health Security Index 2019
개발 환경C# WinForm (Visual Studio 2015), DevExpress, .NET Framework 4.0, SQLite
설치 방식setup.exe 설치형, Windows 7 이상 PC (별도 서버 없음)

비슷한 분석 업무를 프로그램으로 옮기려면

이 사례처럼 이미 엑셀로 분석을 하고 계시다면, 처음 상담 때 아래 자료만 있어도 범위를 빠르게 정할 수 있습니다.

  • 지금 쓰고 있는 엑셀 템플릿 (수식이 들어 있는 원본 그대로)
  • 데이터별 출처와 갱신 주기 (매일 받는 공개 데이터인지, 매달 정리되는 내부 실적인지)
  • 담당자가 바꿀 수 있어야 하는 기준값 (분석 기간, 등급 구간 등)
  • 템플릿이 의존하는 추가 기능이나 매크로, 다른 파일 연결
  • 최종 결과를 보고서로 정리하는 형태 (엑셀 표, 차트 등)

자주 묻는 질문

Q. 엑셀로 만든 분석 템플릿을 그대로 프로그램으로 옮길 수 있나요?

이 사례가 바로 그렇게 진행됐습니다. 템플릿의 시트 순서와 수식을 분석해 계산 단계를 그대로 옮기고, 데이터 업로드와 반복 계산만 프로그램이 맡도록 했습니다. 분석 논리는 고객의 것이므로, 바꿀 부분이 있으면 개발 전에 함께 확인합니다.

Q. 공개 데이터와 내부 실적 데이터를 함께 써도 괜찮나요?

네, 이 프로그램도 공개 코로나19 데이터와 인천공항 내부 운항실적을 함께 씁니다. 별도 서버 없이 PC에 설치하는 방식이라, 데이터베이스는 담당자가 지정한 폴더에만 저장됩니다. 외부로 내보내지 않아야 하는 자료를 다룰 때 이런 구성을 많이 선택합니다.

Q. 등급 기준이 바뀌면 프로그램을 다시 개발해야 하나요?

분석 기간과 등급 구간값처럼 자주 바뀔 수 있는 값은 화면에서 직접 바꾸도록 만들었습니다. 계산 방식 자체를 바꾸거나 새 지표를 추가하는 경우에는 프로그램 수정이 필요합니다. 처음 설계할 때 어떤 값이 바뀔 수 있는지 미리 정해 두면 이후 수정이 줄어듭니다.

Q. 개발 기간은 얼마나 걸렸나요?

2020년 11월에 시작해 12월에 마쳤고, 사용자 매뉴얼과 유지관리 지침서는 12월 17일에 함께 전달했습니다. 고객이 분석 템플릿을 이미 정리해 두었기 때문에 계산 로직을 처음부터 새로 정할 필요가 없었습니다.

함께 보면 좋은 개발 사례


작성: 우리비엔씨 대표 이완종 (KOSA 특급기술자)

홈페이지: https://www.wooribnc.com

연락처: 070-4809-7769 // 0 1 0 - 5 1 7 7 - 8 0 5 5

이메일: admin@wooribnc.com // lwjvegas@gmail.com

  • KOSA 소프트웨어사업자 등록업체
  • KOSA 소프트웨어기술자경력 특급기술자, 정보처리기사
  • 가천대학교 가족회사 협약업체

Tags: #노선분석프로그램 #트래블버블 #인천국제공항공사 #코로나19데이터분석 #데이터분석프로그램 #엑셀프로그램화 #위험도등급 #CSharp #우리비엔씨

수정 삭제 목록