GDAL 그리드 예제
그리드 작업 소개
그리드 작업(gridding)이란 분산 데이터로부터 정규 그리드를 (또는 래스터 이미지라고 해도 됩니다) 생성하는 과정입니다. 일반적인 데이터는 관측 측정 영역에 걸쳐 임의의 집합이 분산되어 있는데, 추가 처리 및 다른 그리드와의 결합을 위해 이를 정규 그리드로 변환하고 싶을 것입니다.

데이터 보간 및 근사치 알고리즘을 사용하면 이 문제를 해결할 수 있습니다. 그러나 보간만으로 제한되지는 않습니다. 사용자 데이터를 보간하기보다 전체 영역에서 통계 또는 데이터 메트릭(data metrics)을 계산해야 하는 경우도 있습니다. 통계는 그 자체로 중요하며, 또는 더 나은 보간 알고리즘과 파라미터를 선택하기 위해 사용될 수도 있습니다.
이것이 GDAL 그리드 API의 목적입니다. GDAL 그리드 API는 데이터 보간을 돕거나 (분산 데이터의 보간 참조) 또는 데이터 메트릭 계산을 (데이터 메트릭 계산 참조) 도와줍니다.
두 가지 방식으로 인터페이스를 사용할 수 있습니다. 프로그램적으로는 GDALGridCreate()
C 함수를 통해 사용할 수 있고, 종단 사용자의 경우 gdal_grid 유틸리티를 통해 사용할 수 있습니다. 이 문서의 나머지 부분에서는 GDAL 그리드 API에 구현된 알고리즘 및 그 파라미터에 대한 자세한 내용을 논의할 것입니다.
분산 데이터의 보간
역거리 제곱
역거리 제곱(Inverse Distance to a Power) 그리드 작업 메소드는 가중 평균(weighted average) 보간법을 사용합니다. 모든 데이터 포인트 및 산출 그리드 도형의 좌표을 포함하는 분산 데이터 값들을 가진 입력 배열을 지정해줘야 합니다. 이 함수는 산출 그리드에 지정한 위치에 대한 보간값을 계산할 것입니다.
모든 그리드 노드에 대해 다음 공식을 사용해서 산출되는 \(Z\) 값을 계산할 것입니다:
이때:
\(Z_i\) 는 \(i\) 포인트 위치의 알려진 값,
\(r_i\) 는 그리드 노드로부터 \(i\) 포인트까지의 거리,
\(p\) 는 가중 제곱(weighting power),
\(n\) 은 검색 타원 안에 있는 포인트의 개수입니다.
\(s\) 평활화(smoothing) 파라미터는 유클리드 거리 계산에서 추가 인자로 사용됩니다:
이때 \(r_{ix}\) 및 \(r_{iy}\) 는 각각 그리드 노드와 \(i\) 포인트 사이의 수평 및 수직 거리입니다.
이 메소드에서 \(w\) 가중 인자는 다음과 같습니다:
GDALGridCreate()
함수의 파라미터 목록은 GDALGridInverseDistanceToAPowerOptions
를, gdal_grid 유틸리티의 옵션 목록은 invdist 를 참조하십시오.
이동 평균
이동 평균(Moving Average)은 간단한 데이터 평균 알고리즘입니다. 이 알고리즘은 타원 형태의 이동 창을 사용해서 값을 검색하고 창 안에 들어오는 모든 데이터 포인트의 평균을 계산합니다. 지정한 각도로 검색 타원 을 기울일 수 있고, 타원의 중심은 그리드 노드에 위치합니다. 또 평균을 계산하기 위한 데이터 포인트의 최소 개수도 설정할 수 있어서, 창 안에 충분한 포인트가 없을 경우 해당 그리드 노드가 비어 있다고 간주하고 지정한 NODATA 값으로 채울 것입니다.
이 알고리즘은 수학적으로 다음 공식으로 표현할 수 있습니다:
이때:
\(Z\) 는 그리드 노드 위치에 산출되는 값,
\(Z_i\) 는 \(i\) 포인트 위치의 알려진 값,
\(n\) 은 검색 타원 안에 있는 포인트의 개수입니다.
GDALGridCreate()
함수의 파라미터 목록은 GDALGridMovingAverageOptions
를, gdal_grid 유틸리티의 옵션 목록은 average 를 참조하십시오.
최근접 이웃
최근접 이웃(Nearest Neighbor) 메소드는 어떤 보간이나 평탄화도 수행하지 않습니다. 그냥 그리드 노드 검색 타원에서 발견된 최근접 포인트의 값을 받아서 이를 결과물로 반환할 뿐입니다. 어떤 포인트도 발견하지 못 한 경우, 지정한 NODATA 값을 반환할 것입니다.
GDALGridCreate()
함수의 파라미터 목록은 GDALGridNearestNeighborOptions
를, gdal_grid 유틸리티의 옵션 목록은 nearest 를 참조하십시오.
데이터 메트릭 계산
모든 메트릭이 동일한 제어 옵션 집합을 공유합니다. GDALGridDataMetricsOptions
를 참조하십시오.
데이터 최소값
그리드 노드 검색 타원 에서 발견된 최소값입니다. 어떤 포인트도 발견하지 못 한 경우, 지정한 NODATA 값을 반환할 것입니다.
이때:
\(Z\) 는 그리드 노드 위치에 산출되는 값,
\(Z_i\) 는 \(i\) 포인트 위치의 알려진 값,
\(n\) 검색 타원 안에 있는 포인트의 개수입니다.
데이터 최대값
그리드 노드 검색 타원 에서 발견된 최대값입니다. 어떤 포인트도 발견하지 못 한 경우, 지정한 NODATA 값을 반환할 것입니다.
이때:
\(Z\) 는 그리드 노드 위치에 산출되는 값,
\(Z_i\) 는 \(i\) 포인트 위치의 알려진 값,
\(n\) 검색 타원 안에 있는 포인트의 개수입니다.
데이터 범위
그리드 노드 검색 타원 에서 발견된 최소값 및 최대값의 차입니다. 어떤 포인트도 발견하지 못 한 경우, 지정한 NODATA 값을 반환할 것입니다.
이때:
\(Z\) 는 그리드 노드 위치에 산출되는 값,
\(Z_i\) 는 \(i\) 포인트 위치의 알려진 값,
\(n\) 검색 타원 안에 있는 포인트의 개수입니다.
검색 타원
그리드 작업 알고리즘에서 검색 창은 기울어진 타원 형태로 지정됩니다. 다음 파라미터 3개로 서술할 수 있습니다:
\(radius_1\) 은 제1 반지름(기울기 각도가 0인 경우 \(x\) 축),
\(radius_2\) 는 제2 반지름(기울기 각도가 0인 경우 \(y\) 축),
\(angle\) 은 검색 타원의 (반시계 방향으로 기울어지는) 기울기 각도입니다.

검색 타원 (및 그 경계선) 안에 위치한 포인트들만 계산에 사용할 것입니다.