프로젝트 배경
국립해양조사원(KHOA)은 대한민국 해양의 조위, 수온, 염분 등 중요한 관측 데이터를 실시간으로 제공하고 있습니다. 이러한 데이터는 해양 연구, 환경 모니터링, 수산업 및 해상 안전 예측 등 다양한 분야에서 핵심적인 역할을 합니다. 그러나 해당 데이터를 활용하기 위해서는 국립해양조사원의 웹사이트를 직접 방문하거나, 복잡한 API 호출 방식을 이해해야 하는 번거로움이 있었습니다.
본 프로젝트는 이러한 불편함을 해소하고, 일반 사용자나 연구원들이 보다 쉽고 빠르게 원하는 기간의 해양 관측 데이터를 추출하여 분석 가능한 형태로 저장할 수 있도록 돕기 위해 시작되었습니다. 특히, 비개발자도 직관적인 그래픽 사용자 인터페이스(GUI)를 통해 데이터 접근성을 높이는 것이 중요한 목표였습니다.
본 프로젝트는 이러한 불편함을 해소하고, 일반 사용자나 연구원들이 보다 쉽고 빠르게 원하는 기간의 해양 관측 데이터를 추출하여 분석 가능한 형태로 저장할 수 있도록 돕기 위해 시작되었습니다. 특히, 비개발자도 직관적인 그래픽 사용자 인터페이스(GUI)를 통해 데이터 접근성을 높이는 것이 중요한 목표였습니다.
프로젝트 성과
편리함
손수 처리할 필요 없이, 기간 별 공공기관 로우데이터를 바로 파싱
핵심 기능
Excel/CSV 파일 생성 및 저장
CSV 저장 시에는 StreamWriter를 사용하여 쉼표(,)로 구분된 텍스트 파일을 생성하며, 인코딩 문제 방지를 위해 utf-8 인코딩을 명시했습니다.
진행 단계
기획 및 API 분석:
2025.12.
사용자 시나리오를 정의하고, 최소한의 정보 입력으로 데이터를 추출할 수 있도록 UI 구성을 구상했습니다.
프로젝트 상세
3.2. 프로젝트 목표
국립해양조사원 RESTful API를 활용하여 실시간 해양 관측 데이터(조위, 수온, 염분) 연동.
사용자가 손쉽게 시작일과 종료일을 설정하여 특정 기간의 데이터를 조회할 수 있는 UI 제공.
조회된 데이터를 표준적인 CSV 또는 Excel 파일(.xlsx) 형식으로 저장하는 기능 구현.
C# .NET Framework 기반의 안정적이고 사용자 친화적인 데스크톱 애플리케이션 개발.
3.3. 프로젝트 진행 과정
기획 및 API 분석:
국립해양조사원 공공데이터 포털에서 제공하는 API 명세를 분석하여 필요한 데이터 종류(조위, 수온, 염분), 요청 파라미터(관측소 코드, 시작/종료 시간, API 키 등), 응답 데이터 구조(JSON 형식)를 파악했습니다.
사용자 시나리오를 정의하고, 최소한의 정보 입력으로 데이터를 추출할 수 있도록 UI 구성을 구상했습니다.
환경 설정 및 기본 UI 구성:
Visual Studio를 사용하여 C# WinForms 프로젝트를 생성하고, 필요한 .NET Framework 버전을 설정했습니다.
기간 선택을 위한 DateTimePicker 컨트롤 2개와 데이터 추출을 실행할 Button 컨트롤을 배치하여 기본적인 UI를 구성했습니다.
API 연동 및 JSON 데이터 처리 구현:
System.Net.HttpWebRequest를 활용하여 API 요청을 보내고 응답을 받는 로직을 구현했습니다.
기술적 이슈: API 응답이 JSON 문자열 형태로 오기 때문에, 이를 C# 객체로 변환하여 쉽게 다룰 필요성이 있었습니다.
해결 방안: Newtonsoft.Json 라이브러리를 프로젝트에 추가하고, JObject.Parse() 및 ToObject<T() 메서드를 사용하여 JSON 데이터를 동적으로 파싱하거나 미리 정의된 C# 클래스(모델)로 역직렬화하는 방식을 채택했습니다. 이를 통해 복잡한 JSON 구조에서도 필요한 데이터를 안정적으로 추출할 수 있었습니다.
CSV/Excel 파일 저장 기능 구현:
파싱된 데이터를 CSV 파일로 저장하는 기본적인 로직(StreamWriter 사용)을 먼저 구현했습니다.
기술적 이슈: CSV는 단순 텍스트 파일이라 데이터 포맷팅이나 여러 시트 저장이 어렵고, 사용자들이 Excel 파일 포맷을 선호하는 경향이 있었습니다.
해결 방안: EPPlus (OfficeOpenXml) 라이브러리를 도입하여 Excel(.xlsx) 파일 생성 기능을 추가했습니다. ExcelPackage와 ExcelWorksheet 객체를 활용하여 데이터를 셀에 입력하고, 열 너비 자동 조정, 헤더 스타일 적용 등 기본적인 서식까지 구현하여 사용자 편의성을 높였습니다.
예외 처리 및 사용자 피드백:
네트워크 오류, API 키 오류, 데이터 없음 등 발생할 수 있는 다양한 예외 상황에 대한 try-catch 블록을 추가하여 프로그램의 안정성을 확보했습니다.
데이터 추출 진행 상황이나 완료 여부를 사용자에게 알려줄 수 있도록 MessageBox를 활용한 알림 기능을 추가했습니다.
테스트 및 디버깅:
다양한 기간과 관측소(테스트용) 데이터를 대상으로 API 연동 및 파일 저장 기능을 반복적으로 테스트하여 오류를 수정하고 안정성을 검증했습니다.
국립해양조사원 RESTful API를 활용하여 실시간 해양 관측 데이터(조위, 수온, 염분) 연동.
사용자가 손쉽게 시작일과 종료일을 설정하여 특정 기간의 데이터를 조회할 수 있는 UI 제공.
조회된 데이터를 표준적인 CSV 또는 Excel 파일(.xlsx) 형식으로 저장하는 기능 구현.
C# .NET Framework 기반의 안정적이고 사용자 친화적인 데스크톱 애플리케이션 개발.
3.3. 프로젝트 진행 과정
기획 및 API 분석:
국립해양조사원 공공데이터 포털에서 제공하는 API 명세를 분석하여 필요한 데이터 종류(조위, 수온, 염분), 요청 파라미터(관측소 코드, 시작/종료 시간, API 키 등), 응답 데이터 구조(JSON 형식)를 파악했습니다.
사용자 시나리오를 정의하고, 최소한의 정보 입력으로 데이터를 추출할 수 있도록 UI 구성을 구상했습니다.
환경 설정 및 기본 UI 구성:
Visual Studio를 사용하여 C# WinForms 프로젝트를 생성하고, 필요한 .NET Framework 버전을 설정했습니다.
기간 선택을 위한 DateTimePicker 컨트롤 2개와 데이터 추출을 실행할 Button 컨트롤을 배치하여 기본적인 UI를 구성했습니다.
API 연동 및 JSON 데이터 처리 구현:
System.Net.HttpWebRequest를 활용하여 API 요청을 보내고 응답을 받는 로직을 구현했습니다.
기술적 이슈: API 응답이 JSON 문자열 형태로 오기 때문에, 이를 C# 객체로 변환하여 쉽게 다룰 필요성이 있었습니다.
해결 방안: Newtonsoft.Json 라이브러리를 프로젝트에 추가하고, JObject.Parse() 및 ToObject<T() 메서드를 사용하여 JSON 데이터를 동적으로 파싱하거나 미리 정의된 C# 클래스(모델)로 역직렬화하는 방식을 채택했습니다. 이를 통해 복잡한 JSON 구조에서도 필요한 데이터를 안정적으로 추출할 수 있었습니다.
CSV/Excel 파일 저장 기능 구현:
파싱된 데이터를 CSV 파일로 저장하는 기본적인 로직(StreamWriter 사용)을 먼저 구현했습니다.
기술적 이슈: CSV는 단순 텍스트 파일이라 데이터 포맷팅이나 여러 시트 저장이 어렵고, 사용자들이 Excel 파일 포맷을 선호하는 경향이 있었습니다.
해결 방안: EPPlus (OfficeOpenXml) 라이브러리를 도입하여 Excel(.xlsx) 파일 생성 기능을 추가했습니다. ExcelPackage와 ExcelWorksheet 객체를 활용하여 데이터를 셀에 입력하고, 열 너비 자동 조정, 헤더 스타일 적용 등 기본적인 서식까지 구현하여 사용자 편의성을 높였습니다.
예외 처리 및 사용자 피드백:
네트워크 오류, API 키 오류, 데이터 없음 등 발생할 수 있는 다양한 예외 상황에 대한 try-catch 블록을 추가하여 프로그램의 안정성을 확보했습니다.
데이터 추출 진행 상황이나 완료 여부를 사용자에게 알려줄 수 있도록 MessageBox를 활용한 알림 기능을 추가했습니다.
테스트 및 디버깅:
다양한 기간과 관측소(테스트용) 데이터를 대상으로 API 연동 및 파일 저장 기능을 반복적으로 테스트하여 오류를 수정하고 안정성을 검증했습니다.

메인 폼