reduceRegion
ee.Image
의 영역에서 픽셀 값의 통계를 가져오려면 image.reduceRegion()
를 사용합니다.
이렇게 하면 영역의 모든 픽셀이 통계 또는 영역의 픽셀 데이터를 간단하게 나타내는 다른 표현(예: 히스토그램)으로 축소됩니다. 영역은 Geometry
로 표시되며, 이는 다수의 픽셀을 포함하는 다각형일 수도 있고 단일 지점일 수도 있습니다. 이 경우 영역에 픽셀이 하나만 있습니다. 두 경우 모두 그림 1과 같이 출력은 영역의 픽셀에서 파생된 통계입니다.

ee.Reducer
의 그림입니다.reduceRegion()
를 사용하여 이미지의 특정 영역에서 픽셀 통계를 가져오는 예를 들어보자면 시에라 네바다 침엽수림 경계 내에서 5년간의 Landsat 합성물의 평균 스펙트럼 값을 찾는 경우를 들 수 있습니다 (그림 2 참고).
// Load input imagery: Landsat 7 5-year composite. var image = ee.Image('LANDSAT/LE7_TOA_5YEAR/2008_2012'); // Load an input region: Sierra Nevada. var region = ee.Feature(ee.FeatureCollection('EPA/Ecoregions/2013/L3') .filter(ee.Filter.eq('us_l3name', 'Sierra Nevada')) .first()); // Reduce the region. The region parameter is the Feature geometry. var meanDictionary = image.reduceRegion({ reducer: ee.Reducer.mean(), geometry: region.geometry(), scale: 30, maxPixels: 1e9 }); // The result is a Dictionary. Print it. print(meanDictionary);
계산을 강제하려면 결과를 출력하기만 하면 됩니다. 그러면 Code Editor가 콘솔에 Dictionary
로 표시합니다. 출력은 다음과 같이 표시됩니다.
B1: 25.406029716816853 B2: 23.971497014238988 B3: 22.91059593763103 B4: 54.83164133293403 B5: 38.07655472573677 B6_VCID_2: 198.93216428012906 B7: 24.063261634961563

이 예에서는 reducer
(ee.Reducer.mean()
), geometry
(region.geometry()
), scale
(30미터), maxPixels
(최대 픽셀 수)를 제공하여 축소를 지정합니다. reduceRegion()
호출에서 항상 크기를 지정해야 합니다. 이는 규모가 다른 여러 소스의 데이터가 포함될 수 있는 복잡한 처리 흐름에서 출력의 규모가 입력에서 명확하게 결정되지 않기 때문입니다. 이 경우 눈금은 기본적으로 1도로 설정되며, 일반적으로 만족스러운 결과를 얻을 수 없습니다. Earth Engine에서 크기를 처리하는 방법에 관한 자세한 내용은 이 페이지를 참고하세요.
scale
매개변수를 지정하거나 CRS 및 CRS 변환을 지정하는 두 가지 방법으로 배율을 설정할 수 있습니다. CRS 및 CRS 변환에 관한 자세한 내용은 용어집을 참고하세요. 예를 들어 위의 meanDictionary
감소는 다음과 같습니다.
// As an alternative to specifying scale, specify a CRS and a CRS transform. // Make this array by constructing a 4326 projection at 30 meters, // then copying the bounds of the composite, from composite.projection(). var affine = [0.00026949458523585647, 0, -180, 0, -0.00026949458523585647, 86.0000269494563]; // Perform the reduction, print the result. print(image.reduceRegion({ reducer: ee.Reducer.mean(), geometry: region.geometry(), crs: 'EPSG:4326', crsTransform: affine, maxPixels: 1e9 }));
일반적으로 크기를 지정하는 것으로 충분하며 더 읽기 쉬운 코드가 됩니다. Earth Engine은 먼저 영역을 래스터화하여 감소기에 입력할 픽셀을 결정합니다. CRS 없이 배율이 지정된 경우 지정된 해상도로 크기가 조정된 이미지의 기본 프로젝션에서 영역이 래스터화됩니다. CRS와 배율이 모두 지정된 경우 이를 기반으로 영역이 래스터화됩니다.
영역의 픽셀
지정된 크기 및 투영에 적용되는 다음 규칙에 따라 픽셀이 영역에 있는 것으로 결정되고 가중치가 부여됩니다.
- 가중치 없는 감소 함수 (예:
ee.Reducer.count()
또는ee.Reducer.mean().unweighted()
): 중앙값이 영역 내에 있고 이미지의 마스크가 0이 아닌 경우 픽셀이 포함됩니다. - 가중치 적용 감소 함수 (예:
ee.Reducer.mean()
): 픽셀의 (대략) 0.5% 이상이 영역에 있고 이미지의 마스크가 0이 아닌 경우 픽셀이 포함됩니다. 가중치는 이미지의 마스크와 영역에서 차지하는 픽셀의 (대략적인) 비율 중 최솟값입니다.
계산을 성공적으로 실행하려면 maxPixels
매개변수가 필요합니다. 이 매개변수를 예에서 생략하면 다음과 같은 오류가 반환됩니다.
이러한 오류를 해결하는 방법에는 여러 가지가 있습니다. 예와 같이 maxPixels
를 늘리거나 scale
를 늘리거나 bestEffort
를 true로 설정하면 됩니다. 그러면 maxPixels
가 초과되지 않도록 새 (더 큰) 스케일이 자동으로 계산됩니다. maxPixels
를 지정하지 않으면 기본값이 사용됩니다.