Hansen 외 전 세계 산림 변화 데이터 소개

Earth Engine의 Hansen 외(2013년) 전 세계 산림 변화 데이터 세트는 2000년에서 2014년 사이에 전 세계에서 30m 해상도로 산림 변화를 나타냅니다. 먼저 Hansen et al. 데이터를 지도에 추가해 보겠습니다. 'Hansen forest'를 검색하고 가져오기 이름을 gfc2014로 지정하여 전 세계 산림 변화 데이터를 가져오거나(데이터 세트 검색 및 가져오기 자세히 알아보기) 다음 코드를 코드 편집기에 복사합니다.

코드 편집기 (JavaScript)

var gfc2014 = ee.Image('UMD/hansen/global_forest_change_2015');
Map.addLayer(gfc2014);

코드 편집기 상단의 실행 버튼을 클릭하면 그림 1과 같은 화면이 표시됩니다.

숲 변경 기본값
그림 1. Hansen 외(2013) 산림 변화 데이터의 기본 시각화

걱정하지 마세요. 곧 더 나은 모습으로 만들 수 있습니다. (Earth Engine의 기본 이미지 시각화에 대해 자세히 알아보기) 이 섹션이 끝나면 그림 2와 같은 이미지가 표시됩니다. 여기서 녹색은 2000년에 연구에서 산림으로 감지된 지역을 나타내고, 빨간색은 연구 기간 동안의 예상 산림 손실을 나타내며, 파란색은 해당 기간 동안의 산림 증가를 나타내고, 마젠타색은 산림이 손실되고 증가한 지역을 나타내며, 산림이 아닌 지역은 마스크 처리됩니다.

forest change custom
그림 2. Hansen 외(2013) 산림 변화 데이터의 맞춤 시각화

멀티밴드 이미지를 지도에 추가하면 이미지의 처음 세 개 밴드가 각각 빨간색, 녹색, 파란색으로 선택되고 각 밴드의 데이터 유형에 따라 늘어납니다. 이미지가 빨간색으로 보이는 이유는 처음 세 개의 밴드가 treecover2000, loss, gain이기 때문입니다. treecover2000 밴드는 백분율로 표현되며 이진수({0, 1})인 loss (녹색) 및 gain(파란색)보다 값이 훨씬 높습니다. 따라서 이미지가 압도적으로 빨간색으로 표시됩니다.

전 세계 산림 변화 데이터의 밴드는 다음과 같습니다.

밴드 이름설명범위
treecover2000픽셀의 나무 덮개 비율입니다.0 - 100
손실 연구 기간 동안 손실이 발생한 적이 있으면 1 0 또는 1
증폭연구 기간 동안 체중이 증가한 적이 있는 경우 1 0 또는 1
lossyear손실이 발생한 연도입니다. 2001년부터 1로 시작합니다. 손실이 발생하지 않은 경우 0입니다.0~12
first_b302000년의 첫 번째 유효한 픽셀(2000년에 유효한 픽셀이 없는 경우 이전 픽셀)에서 빌드된 Landsat 7 빨간색 밴드입니다. 0 - 255
first_b402000년의 첫 번째 유효한 픽셀로 빌드된 Landsat 7 근적외선 밴드입니다.0 - 255
first_b502000년의 첫 번째 유효한 픽셀에서 빌드된 첫 번째 Landsat 7 단파 적외선 대역입니다.0 - 255
first_b702000년의 첫 번째 유효한 픽셀에서 빌드된 두 번째 Landsat 7 단파 적외선 대역입니다.0 - 255
last_b302012년의 최신 유효한 픽셀로 빌드된 Landsat 7 빨간색 밴드 0 - 255
last_b402012년의 최신 유효한 픽셀로 빌드된 Landsat 7 근적외선 대역입니다.0 - 255
last_b502012년의 최신 유효한 픽셀로 빌드된 첫 번째 Landsat 7 단파 적외선 대역입니다.0 - 255
last_b702012년의 최신 유효한 픽셀로 빌드된 두 번째 Landsat 7 단파 적외선 대역입니다.0 - 255
datamask데이터 없음 (0), 매핑된 지표면 (1), 영구적인 수역(2)입니다.0, 1, 2

2000년의 산림 피복을 그레이스케일 이미지로 표시하려면 Map.addLayer()의 두 번째 인수에 지정된 treecover2000 밴드를 사용하면 됩니다.

코드 편집기 (JavaScript)

Map.addLayer(gfc2014, {bands: ['treecover2000']}, 'treecover2000');

그 결과는 그림 3과 같은 이미지가 됩니다.

미국 수목 피복
그림 3. 2000년 미국 나무 덮개의 그레이스케일 이미지

다음은 2015년 Landsat 밴드 5, 4, 3을 사용하는 3개 밴드 이미지입니다. 이 밴드 조합은 건강한 식물을 녹색으로, 토양을 모브색으로 표시합니다.

코드 편집기 (JavaScript)

Map.addLayer(
    gfc2014, {bands: ['last_b50', 'last_b40', 'last_b30']}, 'false color');

결과는 그림 4와 같이 표시됩니다.

미국 위색
그림 4. 미국의 Landsat 7, 2015년 거짓 색상 합성

전 세계 산림 변화 데이터 세트의 한 가지 유용한 시각화에서는 2000년의 산림 면적을 녹색으로, 산림 손실을 빨간색으로, 산림 증가를 파란색으로 표시합니다. 특히 loss을 첫 번째 밴드 (빨간색), treecover2000을 두 번째 밴드 (녹색), gain을 세 번째 밴드 (파란색)로 만듭니다.

코드 편집기 (JavaScript)

Map.addLayer(gfc2014, {bands: ['loss', 'treecover2000', 'gain']}, 'green');

손실 및 이득 대역 값은 이진수이므로 그림 5와 같이 표시되는 이미지에서는 거의 보이지 않습니다.

미국 산림 면적
그림 5. 2000년 미국 내 나무 덮개 (녹색)

산림 손실은 밝은 빨간색으로, 산림 증가는 밝은 파란색으로 표시되도록 하겠습니다. 이 문제를 해결하려면 시각화 매개변수 max를 사용하여 이미지 데이터가 늘어나는 범위를 설정하면 됩니다. max 시각화 매개변수는 각 대역의 최댓값에 해당하는 값 목록을 사용합니다.

코드 편집기 (JavaScript)

Map.addLayer(gfc2014, {
  bands: ['loss', 'treecover2000', 'gain'],
  max: [1, 255, 1]
}, 'forest cover, loss, gain');

결과는 그림 6과 같이 표시됩니다.

미국 산림 변화
그림 6. 미국 산림 손실 (빨간색), 2000년 산림 분포 (녹색), 산림 증가 (파란색)

그 결과 산림이 있는 곳은 녹색, 산림 손실이 있는 곳은 빨간색, 산림 증가가 있는 곳은 파란색, 증가와 손실이 모두 있는 곳은 마젠타색으로 표시된 이미지가 생성됩니다. 하지만 자세히 살펴보면 완전히 올바르지 않습니다. 손실이 빨간색으로 표시되는 대신 주황색으로 표시됩니다. 이는 밝은 빨간색 픽셀이 기본 녹색 픽셀과 혼합되어 주황색 픽셀이 생성되기 때문입니다. 마찬가지로 숲, 손실, 이득이 있는 픽셀은 녹색, 밝은 빨간색, 밝은 파란색의 조합인 분홍색입니다. 그림 7을 참고하세요.

미국 북서부 산림 변화
그림 7. 미국 태평양 북서부의 숲 손실 (빨간색), 2000년 커버 (녹색), 증가 (파란색)

튜토리얼 시작 시 약속된 이미지를 얻으려면 숲, 손실, 이득, 손실과 이득 모두에 대한 이미지를 별도로 만들면 됩니다. 표시에 가장 적합한 순서로 이러한 이미지를 지도에 추가합니다.

팔레트

각 이미지를 다른 색상으로 표시하려면 단일 밴드 이미지에 Map.addLayer()palette 파라미터를 사용하면 됩니다. 팔레트를 사용하면 이미지가 표시되는 색 구성표를 설정할 수 있습니다(팔레트 자세히 알아보기). Earth Engine API 튜토리얼에서 팔레트의 색상이 minmax로 선형으로 늘어난다는 점을 기억하세요.

예를 들어 녹색 팔레트를 사용하여 산림 범위 이미지를 표시하려면 다음을 사용하면 됩니다.

코드 편집기 (JavaScript)

Map.addLayer(gfc2014, {
  bands: ['treecover2000'],
  palette: ['000000', '00FF00']
}, 'forest cover palette');

결과는 그림 8과 같이 표시됩니다.

산림 면적 NA
그림 8. 2000년 북미의 산림 면적

확대하면 이미지의 해상도를 더 잘 파악할 수 있습니다. 그림 9는 파라과이의 마리스칼 에스티가리비아 주변 지역을 보여줍니다.

파라과이의 숲 면적
그림 9. 파라과이 마리스칼 에스티가리비아 주변의 2000년도 수목 피복

그림 3에 표시된 이미지가 약간 어둡습니다. 문제는 treecover2000 밴드의 데이터 유형이 바이트 ([0, 255])인데 실제 값은 백분율 ([0, 100])이라는 것입니다. 이미지를 밝게 하려면 min 또는 max 매개변수를 적절하게 설정하면 됩니다. 그런 다음 팔레트가 이러한 극단값 사이로 늘어납니다.

코드 편집기 (JavaScript)

Map.addLayer(gfc2014, {
  bands: ['treecover2000'],
  palette: ['000000', '00FF00'],
  max: 100
}, 'forest cover percent');

결과는 그림 9와 같이 표시됩니다. 이 예시에서는 max만 설정됩니다. min는 기본적으로 0입니다.

늘어난 파라과이
그림 9. 파라과이 마리스칼 에스티가리비아 주변의 2000년 산림 피복을 [0, 100]으로 늘린 것입니다.

마스킹

지금까지 표시된 모든 이미지에는 데이터가 0인 큰 검은색 영역이 있습니다. 예를 들어 바다에는 나무가 없습니다. 이러한 영역을 투명하게 만들려면 값을 마스크하면 됩니다. Earth Engine의 모든 픽셀에는 값과 마스크가 모두 있습니다. 이미지는 마스크에 의해 설정된 투명도로 렌더링되며, 0은 완전히 투명하고 1은 완전히 불투명합니다.

이미지를 자체적으로 마스크할 수 있습니다. 예를 들어 treecover2000 밴드를 자체적으로 마스크하면 산림 피복이 0인 모든 영역이 투명해집니다.

코드 편집기 (JavaScript)

Map.addLayer(gfc2014.mask(gfc2014), {
  bands: ['treecover2000'],
  palette: ['000000', '00FF00'],
  max: 100
}, 'forest cover masked');

결과는 그림 10과 같이 표시됩니다.

미주 수목 피복
그림 10. 2000년 수목 범위, 스트레칭 및 마스킹됨

튜토리얼 시작 부분에 나오는 것과 같은 Hansen 데이터 시각화를 만들 수 있습니다. 이 예에서는 한 가지 작은 차이점을 제외하고 모든 것을 함께 배치합니다. Map.addLayer 호출에서 bands 매개변수를 지정하는 대신 select()를 사용하여 새 이미지를 만듭니다.

코드 편집기 (JavaScript)

var treeCover = gfc2014.select(['treecover2000']);
var lossImage = gfc2014.select(['loss']);
var gainImage = gfc2014.select(['gain']);

// Add the tree cover layer in green.
Map.addLayer(treeCover.updateMask(treeCover),
    {palette: ['000000', '00FF00'], max: 100}, 'Forest Cover');

// Add the loss layer in red.
Map.addLayer(lossImage.updateMask(lossImage),
            {palette: ['FF0000']}, 'Loss');

// Add the gain layer in blue.
Map.addLayer(gainImage.updateMask(gainImage),
            {palette: ['0000FF']}, 'Gain');

결과는 그림 11과 같이 표시됩니다.

미주 손실 획득
그림 11. 산림 손실 (빨간색), 2000년 커버 (녹색), 증가 (파란색)

addLayer() 호출이 세 개 있습니다. 각 addLayer() 호출은 지도에 레이어를 추가합니다. 지도 오른쪽 상단의 레이어 버튼 위로 마우스를 가져가면 이러한 레이어가 표시됩니다. 각 레이어는 옆에 있는 체크박스를 사용하여 사용 중지하거나 사용 설정할 수 있으며, 레이어의 불투명도는 레이어 이름 옆에 있는 슬라이더의 영향을 받을 수 있습니다.

튜토리얼 시작 부분에 표시된 이미지를 거의 만들 수 있습니다. 하지만 손실과 이득이 모두 있는 픽셀을 보여주는 레이어가 누락되었습니다. 손실과 이득이 모두 표시되는 픽셀을 계산하기 전에 이미지 밴드에서 일부 계산을 수행하는 방법을 알아야 하기 때문에 누락되었습니다. 이 내용은 다음 섹션에서 다룹니다.