Ⅰ. 서론
세계 각국에서는 육상자원의 한계로 인해 바다를 국부 창출의 기반이 되는 경제 영토로 간주하여 해양공간정보의 활용과 관리에 대한 중요성이 극대화되고 있다[1]. 최근 연구개발의 패러다임은 데이터 분석이 연구개발의 주요 추진 동력으로 부각되고, 이를 활용한 다분야융합·공동연구가 활성화 됨에 따라 연구데이터 공유·활용체계의 필요성이 점증하는 추세이다[2]. 국내에서는 다양한 연구 기관에서 과거부터 현재까지 보유하고 있는 방대한 양의 데이터를 수집하고 가치를 추출해내는 것이 향후 우리나라의 과학발전에 중요한 역할을 할 것으로 기대하고 있다[3]. 특히나 해양은 지구 표면의 70%를 구성하고 있고 시간에 따라 끊임없이 변화하고 있어서 해양 데이터는 해양관광으로의 예측 및 활용가치, 해양공간 모니터링 및 지속가능성, 해양공간 계획과 관리 등을 포함한 수많은 분야에서 필요로 하고 있다. 또한 해양공간정보의 근간이 되는 데이터로 그 중 해양 정적 데이터는 빅데이터 중에서도 거대 빅데이터베이스를 이루고 있으며, 사람의 접근이 어려워 위성, 부이, 연구선 등을 이용한 데이터 수집이 이루어져 높은 데이터 수집 비용과 고난이도 관측기술이 요구되고[4,5], 따라서 수집된 데이터의 유실 없는 보관 및 저장이 필요로 하다.
현재 재난안전지능화융합센터에서는 “해양 디지털 트윈 구축 및 활용기반 기술 연구”과제를 수행하고 있으며, 해양 디지털 트윈 구축을 위한 해양 데이터에 대한 수집 및 분석이 필요하다. 이에 본 논문에서는 각종 해양 관련 공공 기관에서 제공하고 있는 데이터를 분석하여 해양 디지털 트윈을 위한 기반 데이터로 활용하고자 하는 것을 목적으로 하여 해양 정적 데이터의 현황 조사를 수행하였고 이를 수집하여 DB에 저장하는 일련의 알고리즘을 제시하였다.
Ⅱ. 해양 정적 데이터 현황
국립해양조사원은 이용 목적에 따라서 싱글빔과 멀티빔 센서를 이용하여 국가해양기본조사, 연안해역기본조사, 연안해역정밀조사, 항만해역정밀조사 등을 통해 해양 데이터를 구축하고 있으며[1,6], 그림 1은 현재 국립해양조사원에서 제공하는 16건의 해양 정적 데이터명과 데이터 업데이트 주기를 정리한 표이다. 16건의 해양 정적 데이터의 업데이트 주기는 1~3년으로 년 단위로 업데이트되며, 신항만 예정구역 경우에는 신항만이 생길 때마다 업데이트가 된다.
그림 1. 국립해양조사원에서 제공하는 16건 해양 정적 데이터
Fig. 1. 16 Cases of marine static data provided by the Korea Hydrographic and Oceanographic Agency
그림 2는 국립해양조사원에서 16건의 해양 정적 데이터 제공 방식에 대한 흐름도이다. 국립해양조사원은 ‘개방 海’ 사이트에서 Open API 형식으로 16건의 해양 정적 데이터를 제공하고 있으며 각각의 데이터는 고유의 Open API 주소로 구성되어 있다. 이 중 ‘마리나항만’과 ‘마리나시설’은 ‘마리나정보’라는 하나의 Open API로 제공하고 있다.
그림 2. 데이터 제공 방식
Fig. 2. Data providing method
Ⅲ. 효율적인 해양 정적 데이터 수집/파싱/저장 구현
그림 3은 해양 정적 데이터의 수집/파싱/저장에 대한 흐름도이다. 수집/파싱/저장은 Python 언어를 통해 진행하며, 먼저 16건의 Open API 형식 해양 정적 데이터를 수집한 후, 데이터 가공 및 보정 작업인 데이터 파싱을 진행하고 최종적으로 DB에 저장한다.
그림 3. 해양 정적 데이터의 수집/파싱/저장 흐름도
Fig. 3. Flowchart for collection, parsing and storage of marine static data
1. 데이터 수집 단계
그림 4는 해양 정적 데이터 수집에 대한 플로우차트이다. 16건의 해양 정적 데이터는 국립해양조사원의 ‘개방 海’ 사이트에서 제공하고 있다. 해당 사이트에서 각 정적 데이터에 대한 Open API 주소 형식과 레이어명을 확인한 후, requests()와 BeautifulSoup()를 사용하여 Open API 주소를 불러와 원본 데이터를 수집한다. 불러온 원본 데이터는 기본적으로 불필요한 메타 정보가 포함되어 있기에 해당 데이터에 대한 레이어명만 가진 원본 데이터만 찾도록 findAll()을 사용하여 해양 정적 데이터만 따로 분류하여 수집한다.
그림 4. 해양 정적 데이터 수집 흐름도
Fig. 4. Marine static data collection flowchart
국립해양조사원의 ‘개방 海’ 사이트에서 제공하는 16건의 해양 정적 데이터의 Open API 주소 형식에는 개개인의 고유한 인증키가 필요하다. 인증키를 발급받기 위해서는 먼저 ‘개방 海’ 사이트에 회원가입을 진행한 후 이용약관/API 발급 탭을 눌러 진행하면 그림 5와 같이 Open API 주소에 필요한 개인 인증키를 발급받을 수 있다.
그림 5. 인증키 발급 결과
Fig. 5. Authentication key issuance results
Open API 주소에 필요한 개인 인증키를 발급받은 후에는 그림 6과 같이 데이터의 명칭과 그에 해당하는 레이어명을 확인할 수 있다. 예시로 해양 정적 데이터 ‘해수욕장’의 레이어명은 ‘TB_FACL_BEACH’임을 확인할 수 있다.
그림 6. 해양 정적 데이터 명칭과 레이어명
Fig. 6. Marine static data names and layer names
이전 단계에서 인증키와 레이어명을 확인한 후 구성한 Open API 주소는 웹 브라우저에서 입력하면 그림 7처럼 간단하게 원본 데이터를 확인할 수 있다.
그림 7. 해양 정적 데이터 ‘해수욕장’의 원본 데이터 일부
Fig. 7. Part of the original data from the marine static data ‘Beach’
그림 8은 레이어명이 ‘TB_FACL_BEACH’인 해양 정적 데이터 ‘해수욕장’의 353개 데이터 중 하나의 데이터에 대한 태그 명과 데이터를 정리한 것이다.
그림 8. 해양 정적 데이터 ‘해수욕장’의 태그 명과 데이터
Fig. 8. Tag name and data of the marine static data ‘Beach’
2. 데이터 파싱 단계
그림 9는 해양 정적 데이터 파싱에 대한 플로우차트이다. 이전 단계에서 수집한 해양 정적 데이터는 누락된 태그가 있는지를 확인하기 위해서 try문과 조건문(if)을 통해 확인하고나서 배열에 저장한다. 이후에 DB에 저장하기 위해서는 배열을 정형화된 형식으로 바꿔야 함으로, DataFrame()을 사용하여 배열을 데이터프레임으로 변경한다.
그림 9. 해양 정적 데이터 파싱 흐름도
Fig. 9. Marine static data parsing flowchart
그림 10은 수집한 해양 정적 데이터 ‘해수욕장’ 중 ‘백도해수욕장’에 대한 내용이다. 그림 7의 ‘장호해수욕장’에는 <NM> 태그 “장호해수욕장” 데이터 다음으로 <FACILITIES> 태그, <ADDR> 태그로 구성되어 있지만, ‘백도해수욕장’에서 <NM> 태그 “백도해수욕장” 데이터 다음으로 <FACILITIES>가 빠지고 바로 <ADDR> 태그로 오는 것을 확인할 수 있다. 이 같은 문제는 이후에 저장 시에 데이터가 밀린 채로 저장될 수도 있기에 따로 보정을 진행한다.
그림 10. 해양 정적 데이터 ‘해수욕장’의 ‘백도해수욕장’ 데이터 일부
Fig. 10. Part of the data of ‘Baekdo Beach’ in marine static data ‘Beach’
태그 누락 보정은 try문과 조건문(if)을 통해 정상 태그 시에는 그대로 배열에 저장하고, 태그 누락 시에는 데이터가 밀리는 문제점을 보완하기 위해 ‘없음’이라는 데이터를 배열에 저장한다.
이전 단계에서 데이터 보정 및 파싱까지 진행한 후, 데이터가 담긴 배열은 DataFrame()를 이용하여 데이터 프레임으로 변경한다. 이 작업은 이후에 DB에 저장하기 위해서는 정형화된 형식인 데이터프레임으로 구성되야하기 때문에 진행한다.
3. 데이터 저장 단계
그림 11은 해양 정적 데이터 저장에 대한 플로우차트이다. 이전 단계에서 해양 정적 데이터를 수집하고 파싱하여 데이터프레임으로 변경한 후에, PostgreSQL DB에 저장하기 위해서는 먼저 Create_engine()을 사용하여 DB와 연결을 진행한다. 그 다음으로 해양 정적 데이터가 담겨있는 데이터프레임을 to_sql()을 사용하여 PostgreSQL DB에 저장하고 추가적으로 to_csv()을 사용하여 Excel로도 저장한다.
그림 11. 해양 정적 데이터 저장 흐름도
Fig. 11. Marine static data storage flowchart
그림 12는 해양 정적 데이터 ‘해수욕장’의 데이터프레임에 to_sql()을 사용하여 테이블 명을 ‘해수욕장’으로 만들어 PostgreSQL DB에 저장하고, to_csv()을 사용하여 엑셀 파일 명을 ‘해수욕장’으로 만들어 엑셀 파일로 저장한 내용이다.
그림 12. 해양 정적 데이터 ‘해수욕장’ DB 및 엑셀 저장
Fig. 12. Marine static data ‘Beach’ DB and Excel storage
그림 13은 Python 언어를 이용하여 ‘해수욕장’ 데이터를 포함한 그림 1의 해양 정적 데이터의 수집, 파싱 그리고 PostgreSQL DB와 엑셀 파일로 저장한 내용이다.
그림 13. Python 언어를 이용한 PostgreSQL DB 및 엑셀 저장
Fig. 13. PostgreSQL DB and Excel storage using Python language
Ⅳ. 결론
데이터 분석이 연구개발의 주요 추진 동력으로 부각되고, 이를 활용한 다분야융합·공동연구가 활성화 됨에 따라 연구데이터 공유·활용체계의 필요성이 나날이 높아지고 이를 위해서 해양 정적 데이터의 유실 없는 보관이 필요로 하다. 해양 디지털 트윈 구축을 위한 해양 데이터에 대한 수집 및 분석이 필요하기에 본 논문에서는 각종 해양 관련 공공 기관에서 제공하고 있는 데이터를 분석하여 해양 디지털 트윈을 위한 기반 데이터로 활용하고자 하는 것을 목적으로 하여 해양 정적 데이터의 현황 조사를 수행하였고 이를 수집하여 DB에 저장하는 일련의 알고리즘을 제시하였다. 그 결과, 국립해양조사원에서 제공하고 있는 16건의 해양 정적 데이터는 각각 고유의 레이어명을 바탕으로 한 Open API 주소로 구성되어 있었고, 각각의 Open API 주소를 웹 브라우저에 입력하여 원본 데이터를 간단히 확인할 수 있었다. 이를 Python 언어를 이용하여 Open API 형식의 해양 정적 데이터를 수집하였고, 데이터 파싱 단계에서 태그가 누락된 데이터의 보정 작업을 진행한 뒤에 최종적으로 PostgreSQL DB와 엑셀로 저장하였다.
References
- B. G. Kim, H. K. Young, Y. S. Choi, K. S. Min, J. M. Kim, "A Study on Standard and Conversion for Marine Spatial Information", Journal of The Korean Cadastre Information Association, Vol. 18, No. 3, pp. 3-12, 2016
- Ministry of Science and ICT. The research data in the draweris reborn as big data that is used together [Internet]. Available: https://eiec.kdi.re.kr/policy/materialView.do?num=173274
- H. G. Han, C. Y. Lee, Y. G. Park, "A Plan to Build an Integrated Data Platform for Real-Time Data Collection and Analysis of Extreme Ocean Spaces", Journal of Digital Contents Society, Vol. 22, No. 6, pp. 989-998, 2021 DOI: https://doi.org/10.9728/dcs.2021.22.6.989
- H. G. Han, C. Y. Lee, T. H. Kim, J. R. Han, H. W. Choi, "Establishment of A WebGIS-based Information System for Continuous Observation during Ocean Research Vessel Operation", Journal of the Korean Association of Geographic Information Studies, Vol. 24, No. 1, pp. 40-53, 2016 DOI: https://doi.org/10.11108/kagis.2021.24.1.040
- S. W. Oh, J. M. Park, S. H. Suh, "A Study on Developing XML Marine GIS metadata", Journal of Korean Navigation and Port Research, Vol. 28, No. 3, pp. 247-252, 2004 DOI: https://doi.org/10.5394/KINPR.2004.28.3.247
- S. T. Kim, T. Y. Lee, Y. Kim, "Deriving the Determining Factor for the Management of Oceanographic Data", Journal of Information Science Theory and Practice, Vol. 43, No. 3, pp. 97-115, 2012 DOI: https://doi.org/10.1633/JIM.2012.43.3.097
- I. S. Lee, "A Study on Geospatial Information Role in Digital Twin", Journal of the Korea Academia-Industrial, Vol. 22, No. 3, pp. 268-278, 2021 DOI: https://doi.org/10.5762/KAIS.2021.22.3.268
- S. M. Kim, J. S. Kim, "A Study on the Evaluation Model for Reliability of Public Data", Journal of Korean Institute of Information Technology, Vol. 21, No. 1, pp. 21-28, 2023 DOI: http://dx.doi.org/10.14801/jkiit.2023.21.1.21