BigQuery에서 Earth Engine을 사용하여 래스터 데이터로 작업하기
이 문서에서는 Google Earth Engine을 호출하여 BigQuery에서 지리정보 분석을 실행하는 ST_REGIONSTATS
함수를 사용하여 래스터 데이터와 벡터 데이터를 결합하는 방법을 설명합니다.
개요
래스터는 픽셀로 구성된 2차원 그리드로, 각 픽셀에는 밴드라는 값이 하나 이상 할당됩니다. 예를 들어 각 픽셀은 지구 표면의 특정 평방킬로미터에 해당할 수 있으며 평균 온도 및 평균 강우량에 관한 밴드를 보유할 수 있습니다. 래스터 데이터에는 위성 이미지와 날씨 예측, 토지 피복과 같은 연속적인 그리드 기반 데이터가 포함됩니다. PNG 또는 JPEG 파일과 같은 많은 일반적인 이미지 형식은 래스터 데이터 형식입니다.
래스터 데이터는 고정된 직사각형 그리드가 아닌 선이나 곡선으로 데이터가 설명되는 벡터 데이터와 종종 대조됩니다. 예를 들어 BigQuery에서 GEOGRAPHY
데이터 유형을 사용하여 국가, 도시 또는 기타 지역의 경계를 설명할 수 있습니다.
지리적 래스터 데이터와 벡터 데이터는 종종 지정된 벡터 영역 내의 모든 래스터 값의 합계를 계산하는 지역 통계 작업을 사용하여 결합됩니다. 예를 들어 다음을 계산할 수 있습니다.
- 거주 중인 주 내 각 카운티의 평균 공기질입니다.
- 건물 다각형 모음의 태양광 잠재 발전량입니다.
- 숲이 우거진 지역의 전선 통로를 따라 요약된 화재 위험
BigQuery는 벡터 데이터 처리에 뛰어나고 Google Earth Engine은 래스터 데이터 처리에 뛰어납니다. ST_REGIONSTATS
지리 함수를 사용하여 Earth Engine을 사용하는 래스터 데이터를 BigQuery에 저장된 벡터 데이터와 결합할 수 있습니다.
시작하기 전에
쿼리에서
ST_REGIONSTATS
함수를 사용하려면 Earth Engine API를 사용 설정하세요.선택사항:
ST_REGIONSTATS
함수를 사용하여 BigQuery Sharing (이전 명칭: Analytics Hub)에 게시된 데이터를 구독하고 사용하려면 Analytics Hub API를 사용 설정하세요.
필수 권한
ST_REGIONSTATS
함수를 호출하는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 다음 IAM 역할을 부여해 달라고 요청하세요.
-
Earth Engine 리소스 뷰어 (
roles/earthengine.viewer
) -
서비스 사용량 소비자(
roles/serviceusage.serviceUsageConsumer
) -
BigQuery 공유에서 데이터 세트 구독하기:
BigQuery 데이터 편집자 (
roles/bigquery.dataEditor
)
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
이러한 사전 정의된 역할에는 ST_REGIONSTATS
함수를 호출하는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 펼치세요.
필수 권한
ST_REGIONSTATS
함수를 호출하려면 다음 권한이 필요합니다.
-
earthengine.computations.create
-
serviceusage.services.use
-
bigquery.datasets.create
커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.
래스터 데이터 찾기
ST_REGIONSTATS
함수의 raster_id
매개변수는 래스터 데이터의 소스를 지정하는 문자열입니다. 다음 섹션에서는 래스터 ID를 찾고 형식을 지정하는 방법을 설명합니다.
BigQuery 이미지 테이블
BigQuery Sharing (이전 명칭: Analytics Hub)을 사용하여 BigQuery에서 래스터 데이터 세트를 검색하고 액세스할 수 있습니다. BigQuery Sharing을 사용하려면 Analytics Hub API를 사용 설정하고 목록을 보고 구독하는 데 필요한 권한이 있는지 확인해야 합니다.
Google Earth Engine은 래스터 데이터가 포함된 공개적으로 제공되는 데이터 세트를 게시합니다. 래스터 데이터가 포함된 Earth Engine 데이터 세트를 구독하려면 다음 단계를 따르세요.
공유 페이지로 이동합니다.
등록정보 검색을 클릭합니다.
등록정보 검색 필드에
"Google Earth Engine"
을 입력합니다.구독하려는 데이터 세트를 클릭합니다.
구독을 클릭합니다.
선택사항: 프로젝트 또는 연결된 데이터 세트 이름 필드를 업데이트합니다.
저장을 클릭합니다. 연결된 데이터 세트가 프로젝트에 추가됩니다.
데이터 세트에는 STAC 항목 사양에 따라 래스터 이미지 모음의 메타데이터를 저장하는 테이블(이미지 테이블이라고도 함)이 포함됩니다. 이미지 테이블은 Earth Engine 이미지 컬렉션(ImageCollection
)과 유사합니다.
표의 각 행은 단일 래스터 이미지에 해당합니다.
각 이미지의 래스터 ID는 assets.image.href
열에 저장됩니다. 특정 이미지를 찾으려면 properties
열에서 이미지 속성으로 필터링하면 됩니다. 밴드에 관한 정보는 표 설명에서 확인할 수 있습니다.
예를 들어 ERA5-Land 데이터 세트는 일일 기후 변수 통계를 제공하며 공개적으로 제공됩니다. climate
테이블에 여러 래스터 ID가 포함되어 있습니다. 다음 쿼리는 properties.start_datetime
열을 사용하여 이미지 테이블을 필터링하여 2025년 1월 1일에 해당하는 이미지의 래스터 ID를 가져오고 temperature_2m
밴드를 사용하여 각 국가의 평균 기온을 계산합니다.
WITH SimplifiedCountries AS (
SELECT
ST_SIMPLIFY(geometry, 10000) AS simplified_geometry,
names.primary AS name
FROM
`bigquery-public-data.overture_maps.division_area`
WHERE
subtype = 'country'
)
SELECT
sc.simplified_geometry AS geometry,
sc.name,
ST_REGIONSTATS(
sc.simplified_geometry,
(SELECT assets.image.href
FROM `LINKED_DATASET_NAME.climate`
WHERE properties.start_datetime = '2025-01-01 00:00:00'),
'temperature_2m'
).mean - 273.15 AS mean_temperature
FROM
SimplifiedCountries AS sc
ORDER BY
mean_temperature DESC;
Cloud Storage GeoTIFF
GeoTIFF는 지리적 래스터 데이터를 저장하는 일반적인 파일 형식입니다. ST_REGIONSTATS
함수는 US
또는 us-central1
리전에 있는 Cloud Storage 버킷의 GeoTIFF 형식으로 저장된 래스터 데이터를 지원합니다. Cloud Storage URI를 래스터 ID로 제공합니다(예: gs://bucket/folder/raster.tif
).
Earth Engine 이미지 확장 소재
ST_REGIONSTATS
함수는 raster_id
인수에 Earth Engine 이미지 애셋 경로를 전달하는 것을 지원합니다. Earth Engine 래스터 데이터는 개별 이미지 또는 이미지 모음으로 사용할 수 있습니다. 이미지의 래스터 ID를 찾으려면 다음 단계를 따르세요.
- Earth Engine 데이터 카탈로그에서 관심 있는 데이터 세트를 검색합니다.
항목의 설명 페이지를 열려면 데이터 세트 이름을 클릭합니다. Earth Engine 스니펫은 단일 이미지 또는 이미지 모음을 설명합니다.
Earth Engine 스니펫이
ee.Image('IMAGE_PATH')
형식인 경우 래스터 ID는'ee://IMAGE_PATH'
입니다.Earth Engine 스니펫이
ee.ImageCollection('IMAGE_COLLECTION_PATH')
형식인 경우 Earth Engine 코드 편집기를 사용하여 ImageCollection을 단일 이미지로 필터링할 수 있습니다.ee.Image.get('system:id')
메서드를 사용하여 해당 이미지의IMAGE_PATH
값을 콘솔에 출력합니다. 래스터 ID는'ee://IMAGE_PATH'
입니다.
픽셀 가중치
계산에서 각 픽셀의 가중치를 결정하는 ST_REGIONSTATS
함수의 include
매개변수에 가중치(마스크 값이라고도 함)를 지정할 수 있습니다. 가중치 값의 범위는 0에서 1 사이여야 합니다.
이 범위를 벗어난 가중치는 가장 가까운 한도인 0 또는 1로 설정됩니다.
가중치가 0보다 큰 픽셀은 유효한 것으로 간주됩니다. 가중치가 0이면 잘못된 픽셀을 나타냅니다. 잘못된 픽셀은 일반적으로 누락되거나 신뢰할 수 없는 데이터(예: 구름으로 가려진 영역, 센서 이상, 처리 오류, 정의된 경계 외부의 위치)를 나타냅니다.
가중치를 지정하지 않으면 각 픽셀에 도형 내에 포함되는 픽셀의 비율에 따라 가중치가 자동으로 적용되므로 지역 통계에 비례하여 포함할 수 있습니다.
부분적으로 교차하는 픽셀에 include
인수에서 ST_REGIONSTATS
로의 가중치가 있는 경우 BigQuery는 이 가중치와 영역을 교차하는 픽셀의 비율 중 최솟값을 사용합니다.
가중치 값은 FLOAT64
값과 정밀도가 다릅니다. 실제로는 실제 값이 계산에 사용된 값과 최대 1/256 (약 0.4%)까지 다를 수 있습니다.
include
인수에 Earth Engine 이미지 표현식 문법을 사용하여 표현식을 제공하면 래스터 밴드 내의 특정 기준에 따라 동적으로 픽셀의 가중치를 지정할 수 있습니다. 예를 들어 다음 표현식은 probability
대역이 70%를 초과하는 픽셀로 계산을 제한합니다.
include => 'probability > 0.7'
데이터 세트에 가중치 계수 범위가 포함된 경우 다음 구문과 함께 사용할 수 있습니다.
include => 'weight_factor_band_name'
픽셀 크기 및 분석 규모
지리적 래스터 이미지는 지구 표면의 특정 위치에 해당하는 픽셀 그리드입니다. 래스터의 픽셀 크기(스케일이라고도 함)는 그리드의 좌표 참조 시스템에서 픽셀의 한쪽 가장자리의 공칭 크기입니다. 예를 들어 해상도가 10미터인 래스터의 픽셀 크기는 10미터 x 10미터입니다. 원래 보고된 픽셀 크기는 데이터 세트 간에 1미터 미만에서 20킬로미터 이상까지 크게 다를 수 있습니다.
ST_REGIONSTATS
함수를 사용하여 구역 통계를 계산할 때는 래스터 데이터의 픽셀 크기가 매우 중요합니다. 예를 들어 국가의 지역에서 고해상도 래스터 데이터를 집계하는 것은 계산량이 많고 불필요하게 세분화될 수 있습니다. 반대로 도시 필지와 같이 지역 전체에 걸쳐 저해상도 데이터를 집계하면 충분한 세부정보를 제공하지 못할 수 있습니다.
분석에서 의미 있고 효율적인 결과를 얻으려면 다각형의 크기와 분석 목표에 적합한 픽셀 크기를 선택하는 것이 좋습니다. 각 래스터 데이터 세트의 픽셀 크기는 BigQuery 공유의 이미지 테이블 설명 섹션에서 확인할 수 있습니다.
픽셀 크기를 변경하면 지형지물을 교차하는 픽셀 수가 변경되므로 결과와 해석에 영향을 미칩니다. 프로덕션 분석의 경우 픽셀 크기를 변경하지 않는 것이 좋습니다. 하지만 쿼리 프로토타입을 만드는 경우 픽셀 크기를 늘리면 특히 고해상도 데이터의 경우 쿼리 런타임과 비용이 줄어들 수 있습니다.
픽셀 크기를 변경하려면 options
인수의 scale
를 ST_REGIONSTATS
함수로 설정합니다. 예를 들어 1,000미터 픽셀 이상의 통계를 계산하려면 Earth Engine에 요청된 크기로 이미지를 리샘플링하도록 지시하는 options => JSON '{"scale":1000}'
결제
쿼리를 실행하면 Earth Engine에서 함수 호출 결과를 계산하므로 ST_REGIONSTATS
함수 사용량이 나머지 쿼리와 별도로 청구됩니다. 주문형 결제 또는 예약을 사용하는지와 관계없이 BigQuery 서비스 SKU에 따라 슬롯 시간 단위로 이 사용량에 대한 요금이 청구됩니다. BigQuery에서 Earth Engine을 호출할 때 청구된 금액을 확인하려면 결제 보고서를 확인하고 라벨을 사용하여 값이 EARTH_ENGINE
인 라벨 키 goog-bq-feature-type
로 필터링합니다.
비용 요소
ST_REGIONSTATS
함수를 실행할 때 컴퓨팅 사용량에 영향을 미치는 요소는 다음과 같습니다.
- 입력 행 수입니다.
- 사용하는 래스터 이미지입니다. 일부 래스터는 Earth Engine 데이터 카탈로그의 소스 이미지 모음에서 생성된 합성물이며 합성 결과를 생성하는 계산 리소스는 다양합니다.
- 이미지의 해상도입니다.
- 입력 지역의 크기 및 복잡도, 지역을 교차하는 픽셀 수, Earth Engine에서 읽은 이미지 타일 및 바이트 수입니다.
소스 이미지와 이미지의 투영 및 해상도에 따른 지구상의 입력 지형지물의 위치입니다.
- 이미지 투영은 픽셀을 왜곡할 수 있으며, 특히 고위도에 있거나 이미지의 의도된 노출 영역을 벗어난 픽셀이 왜곡될 수 있습니다.
- 합성 래스터의 경우 입력 지역과 교차하는 소스 이미지의 수는 지역과 시간에 따라 다를 수 있습니다. 예를 들어 일부 위성은 궤도 및 데이터 수집 매개변수에 따라 위도 또는 경도가 낮은 지역에서 더 많은 이미지를 생성하거나 대기 상태의 변화에 따라 이미지를 생략할 수 있습니다.
include
또는band_name
인수에서 수식을 사용하는 방식과 관련된 밴드 수입니다.이전 결과의 캐싱
비용 통제
ST_REGIONSTATS
함수와 관련된 비용을 제어하려면 함수가 사용할 수 있는 슬롯 시간의 양을 제어하는 할당량을 조정하면 됩니다. 할당량을 확인할 때 측정항목 목록을 earthengine.googleapis.com/bigquery_slot_usage_time
로 필터링하여 BigQuery 호출과 연결된 Earth Engine 할당량을 확인합니다. 자세한 내용은 Google Earth Engine 문서의 BigQuery 래스터 함수 할당량을 참고하세요.
제한사항
ST_REGIONSTATS
함수를 호출하는 쿼리는 다음 리전 중 하나에서 실행되어야 합니다.
US
us-central1
us-central2
다음 단계
- 래스터 데이터를 사용하여 기온을 분석하는 방법을 보여주는 튜토리얼을 사용해 보세요.
- BigQuery의 지리 함수에 대해 자세히 알아보세요.
- 지리정보 데이터 작업에 대해 자세히 알아보세요.