1. 주제 제시
본 단계에서는 공간 데이터 처리 및 시각화 과정에서 반복적으로 발생하는 오류를 방지하고,
데이터 정합성을 유지하기 위한 유틸리티 함수 구조를 설계한다.
단순한 보조 함수 구현이 아니라, 분석 과정 전반의 안정성을 확보하기 위한 핵심 기반 로직으로 접근하였다.
2. 목표 제시
이 단계의 목표는
- 첫째, 문자열, 수치형, geometry 등 다양한 데이터 타입 오류를 사전에 제어하는 것,
- 둘째, SHP 및 CSV 데이터 로드 시 발생하는 인코딩 및 구조 오류를 최소화하는 것,
- 셋째, 공간 객체의 유효성을 보정하여 시각화 및 격자 분석에서 발생하는 예외를 제거하는 것이다.
3. 방법론 제시 (이론적·통계적)
공간 데이터 분석에서는 결측값, 비정상 geometry, 좌표 불일치 등 다양한 오류가 누적될 경우 결과 왜곡이 발생한다.
이는 통계 분석에서 이상치(outlier)나 결측치 처리와 동일한 문제 구조로 볼 수 있다.
특히 geometry 오류는 단순 값 오류가 아니라 공간 연산 자체를 실패시키기 때문에 사전 보정이 필수적이다.
또한 안전한 나눗셈, 문자열 정규화와 같은 처리는 데이터 전처리 단계에서 분산을 안정화시키는 과정과 유사한 역할을 한다.
4. 코드 제시
| def safe_divide(a, b): return a / b if b != 0 else 0 def fix_geom(gdf): gdf["geometry"] = gdf["geometry"].buffer(0) return gdf def clean_string(text): return str(text).strip().lower() |
5. 설명 제시
safe_divide()는 분모가 0인 경우 발생하는 오류를 방지하기 위한 함수로, 계산 안정성을 확보한다.
fix_geom()은 shapely의 buffer(0)를 활용하여 깨진 polygon을 복원하는 방식으로, geometry 유효성 문제를 해결한다. clean_string()은 문자열 비교 시 발생하는 공백 및 대소문자 문제를 제거하여 데이터 매칭 정확도를 높인다.
이러한 함수들은 개별적으로 단순하지만, 전체 분석의 오류율을 크게 줄이는 역할을 한다.
6. 구현 제시
실제 구현에서는 데이터 로드 직후 모든 데이터에 대해 전처리 함수를 적용하도록 구성하였다.
특히 geometry 데이터는 시각화 이전에 반드시 보정하도록 처리하였다.
| df["region"] = df["region"].apply(clean_string) gdf = gpd.read_file(SHP_PATH) gdf = fix_geom(gdf) df["NDVI"] = pd.to_numeric(df["NDVI"], errors="coerce") df["NDVI"] = df["NDVI"].fillna(0) |
이와 같이 데이터 입력 단계에서 오류를 제거함으로써 이후 단계에서의 예외 발생을 최소화하였다.
7. 고도화 제시
향후에는 단순 함수 기반 처리에서 벗어나 데이터 품질 검증 모듈을 별도로 구성할 필요가 있다.
예를 들어 geometry validity 검사 후 로그를 남기거나,
결측 비율이 일정 수준 이상일 경우 경고를 출력하는 방식으로 확장할 수 있다.
또한 문자열 정규화 역시 형태소 기반 처리로 확장하면 더 정교한 매칭이 가능하다.
8. 연계 방향 제시
본 단계에서 구현된 유틸리티 함수는 이후 자연어 질의 해석, 데이터 정제, 격자 생성, 시각화 단계 전반에서 반복적으로 활용된다. 특히 geometry 보정과 수치형 변환은 지도 생성과 보간 과정의 정확도를 결정짓는 핵심 요소로 작용한다.
자기화 관점에서의 정리
처음에는 단순한 보조 코드라고 생각했지만, 실제로는 전체 분석의 안정성을 좌우하는 핵심 구조라는 점을 이해하게 되었다.
특히 geometry 오류는 눈에 보이지 않지만 시각화 실패로 이어지는 경우가 많았고,
이를 해결하는 과정에서 공간 데이터의 특성을 체감할 수 있었다.
또한 통계 분석에서 수행하던 결측치 처리나 데이터 정제 과정이 공간 데이터에서도 동일하게 중요하게 작용한다는 점을 확인하였다.
결국 이 단계는 “보조 함수 구현”이 아니라 "분석 안정성 확보 과정”으로 보는 것이 맞다고 정리할 수 있었다.

'취미생활 > Satellite Util' 카테고리의 다른 글
| [인공위성 연구] NDVI 기반 1km 격자 시각화 구현 (Folium 지도 Step5) (0) | 2026.04.02 |
|---|---|
| [인공위성 연구] MODIS 데이터와 SHP 공간 결합 방법 (GIS 분석 Step4) (0) | 2026.04.01 |
| [인공위성 연구] 위성 데이터 전처리와 오류 처리 방법 (GeoPandas 활용 Step2) (0) | 2026.04.01 |
| [인공위성 연구] MODIS 위성 데이터 분석 환경 설정 방법 (Python GIS Step1) (0) | 2026.04.01 |
| [인공위성 연구] 위성 데이터로 분석 시스템 직접 만들어보기 (0) | 2026.04.01 |