Earth Engine의 Hansen 외(2013년)
전 세계 산림 변화 데이터 세트는 2000년에서 2014년 사이의 전 세계 산림 변화를 30m 해상도로 나타냅니다. 먼저 Hansen 등의 데이터를 지도에 추가해 보겠습니다. 'Hansen forest'를 검색하고 가져오기 이름을 gfc2014로 지정하여 전 세계 산림 변화 데이터를 가져오거나(데이터 세트 검색 및 가져오기에 대해 자세히 알아보기) 다음 코드를 코드 편집기에 복사합니다.
코드 편집기(JavaScript)
var gfc2014 = ee.Image('UMD/hansen/global_forest_change_2015'); Map.addLayer(gfc2014);
코드 편집기 상단에 있는 실행 버튼을 클릭하면 그림 1과 같은 화면이 표시됩니다.
걱정하지 마세요. 곧 더 멋지게 만들 수 있습니다. (Earth Engine의 기본 이미지 시각화에 대해 자세히 알아보기) 이 섹션을 마치면 그림 2와 같은 이미지가 표시됩니다. 여기서 녹색은 2000년에 연구에서 감지된 산림을 나타내고, 빨간색은 연구 기간 동안 추정된 산림 손실을 나타내고, 파란색은 해당 기간 동안의 산림 증가를 나타내고, 자홍색은 산림이 손실되고 증가한 영역을 나타내고, 산림이 아닌 영역은 마스킹됩니다.
다중 대역 이미지가 지도에 추가되면 이미지의 처음 세 대역이 각각 빨간색, 녹색, 파란색으로 선택되고 각 대역의 데이터 유형에 따라 확장됩니다. 이미지가 빨간색으로 보이는 이유는 처음 세 밴드가 treecover2000, loss, gain이기 때문입니다. treecover2000 대역은 백분율로 표현되며 바이너리({0, 1})인 loss (녹색) 및 gain(파란색)보다 훨씬 높은 값을 갖습니다. 따라서 이미지가 압도적으로 빨간색으로 표시됩니다.
전 세계 산림 변화 데이터의 밴드는 다음과 같습니다.
| 밴드 이름 | 설명 | 범위 |
|---|---|---|
| treecover2000 | 픽셀의 트리 캐노피 비율입니다. | 0 - 100 |
| 손실 | 연구 기간 중 손실이 발생한 경우 1입니다. | 0 또는 1 |
| 증폭 | 연구 기간 동안 이득이 발생한 경우 1입니다. | 0 또는 1 |
| lossyear | 손실이 발생한 연도(2001년부터 1부터 시작하는 색인) 또는 손실이 발생하지 않은 경우 0입니다. | 0~12 |
| first_b30 | 2000년의 첫 번째 유효한 픽셀로 빌드된 Landsat 7 빨간색 밴드(2000년에 유효한 픽셀이 없는 경우 이전) | 0 - 255 |
| first_b40 | 2000년의 첫 번째 유효한 픽셀로 빌드된 Landsat 7 근적외선 대역입니다. | 0 - 255 |
| first_b50 | 2000년의 첫 번째 유효 픽셀로 빌드된 첫 번째 Landsat 7 단파 적외선 대역입니다. | 0 - 255 |
| first_b70 | 2000년의 첫 번째 유효 픽셀로 빌드된 두 번째 Landsat 7 단파 적외선 대역입니다. | 0 - 255 |
| last_b30 | 2012년의 최신 유효 픽셀로 빌드된 Landsat 7 빨간색 밴드입니다. | 0 - 255 |
| last_b40 | 2012년의 최신 유효 픽셀로 빌드된 Landsat 7 근적외선 밴드입니다. | 0 - 255 |
| last_b50 | 2012년의 최신 유효 픽셀로 빌드된 첫 번째 Landsat 7 단파 적외선 대역입니다. | 0 - 255 |
| last_b70 | 2012년의 최신 유효 픽셀로 빌드된 두 번째 Landsat 7 단파 적외선 대역입니다. | 0 - 255 |
| datamask | 데이터 없음 (0), 매핑된 지표면 (1), 영구 수역(2) | 0, 1, 2 |
2000년의 산림 면적을 그레이 스케일 이미지로 표시하려면 Map.addLayer()의 두 번째 인수에 지정된 treecover2000 밴드를 사용하면 됩니다.
코드 편집기(JavaScript)
Map.addLayer(gfc2014, {bands: ['treecover2000']}, 'treecover2000');
그러면 그림 3과 같은 이미지가 생성됩니다.

다음은 2015년의 Landsat 밴드 5, 4, 3 등 3개의 밴드를 사용하는 이미지입니다. 이 밴드 조합은 건강한 식생을 녹색으로, 토양을 연보라색으로 표시합니다.
코드 편집기(JavaScript)
Map.addLayer( gfc2014, {bands: ['last_b50', 'last_b40', 'last_b30']}, 'false color');
그림 4와 같은 결과가 표시됩니다.

전 세계 산림 변화 데이터 세트를 시각화한 한 가지 예시에서는 2000년의 산림 면적을 녹색으로, 산림 손실을 빨간색으로, 산림 증가를 파란색으로 표시합니다. 특히 loss를 첫 번째 대역 (빨간색), treecover2000를 두 번째 대역 (녹색), gain를 세 번째 대역 (파란색)으로 만듭니다.
코드 편집기(JavaScript)
Map.addLayer(gfc2014, {bands: ['loss', 'treecover2000', 'gain']}, 'green');
손실 및 이득 범위 값은 바이너리이므로 이미지에 거의 표시되지 않으며 그림 5와 같이 표시됩니다.

산림 손실은 밝은 빨간색으로, 산림 증가는 밝은 파란색으로 표시하려고 합니다. 이 문제를 해결하려면 시각화 매개변수 max를 사용하여 이미지 데이터가 확장되는 범위를 설정하면 됩니다. max 시각화 매개변수는 각 대역의 최댓값에 해당하는 값 목록을 사용합니다.
코드 편집기(JavaScript)
Map.addLayer(gfc2014, { bands: ['loss', 'treecover2000', 'gain'], max: [1, 255, 1] }, 'forest cover, loss, gain');
그림 6과 같은 결과가 표시됩니다.
이렇게 하면 숲이 있는 곳은 녹색, 숲이 손실된 곳은 빨간색, 숲이 증가한 곳은 파란색, 증가와 손실이 모두 있는 곳은 자홍색으로 표시됩니다. 하지만 자세히 살펴보면 완전히 올바르지는 않습니다. 손실을 빨간색으로 표시하는 대신 주황색으로 표시합니다. 이는 밝은 빨간색 픽셀이 기본 녹색 픽셀과 혼합되어 주황색 픽셀을 생성하기 때문입니다. 마찬가지로 산림, 손실, 증가가 있는 픽셀은 분홍색(녹색, 밝은 빨간색, 밝은 파란색의 조합)입니다. 그림 7을 참고하세요.
튜토리얼 시작 부분에서 약속한 이미지를 얻으려면 산림, 손실, 증가, 손실 및 증가에 대한 별도의 이미지를 만들면 됩니다. 표시에 가장 적합한 순서로 각 이미지를 지도에 추가합니다.
팔레트
각 이미지를 다른 색상으로 표시하려면 단일 대역 이미지에 Map.addLayer()의 palette 매개변수를 사용하면 됩니다. 팔레트를 사용하면 이미지가 표시되는 색 구성표를 설정할 수 있습니다(팔레트에 대해 자세히 알아보기). Earth Engine API 튜토리얼에서 팔레트의 색상이 min 및 max로 선형적으로 확장된다는 점을 기억하세요.
예를 들어 녹색 팔레트를 사용하여 산림 범위 이미지를 표시하려면 다음을 사용하면 됩니다.
코드 편집기(JavaScript)
Map.addLayer(gfc2014, { bands: ['treecover2000'], palette: ['000000', '00FF00'] }, 'forest cover palette');
그림 8과 같은 결과가 표시됩니다.
확대하면 이미지의 해상도를 더 잘 파악할 수 있습니다. 그림 9는 파라과이의 마리스칼 에스티가리비아 주변 지역을 보여줍니다.
그림 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입니다.
마스킹
지금까지 표시된 모든 이미지에는 데이터가 0인 큰 검은색 영역이 있었습니다. 예를 들어 바다에는 나무가 없습니다. 이러한 영역을 투명하게 만들려면 값을 마스킹하면 됩니다. Earth Engine의 모든 픽셀에는 값과 마스크가 모두 있습니다. 이미지는 마스크로 설정된 투명도로 렌더링되며, 0은 완전히 투명하고 1은 완전히 불투명합니다.
이미지를 자체적으로 마스킹할 수 있습니다. 예를 들어 treecover2000 밴드를 자체로 마스킹하면 산림 피복이 0인 모든 영역이 투명해집니다.
코드 편집기(JavaScript)
Map.addLayer(gfc2014.mask(gfc2014), { bands: ['treecover2000'], palette: ['000000', '00FF00'], max: 100 }, 'forest cover masked');
그림 10과 같은 결과가 표시됩니다.
예
튜토리얼 시작 부분에 있는 것과 같은 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과 같은 결과가 표시됩니다.
addLayer() 호출이 3개 있습니다. 각 addLayer() 호출은 지도에 레이어를 추가합니다. 지도 오른쪽 상단의 레이어 버튼 위로 마우스를 가져가면 이러한 레이어가 표시됩니다. 각 레이어는 옆에 있는 체크박스를 사용하여 사용 설정하거나 중지할 수 있으며, 레이어의 불투명도는 레이어 이름 옆에 있는 슬라이더로 조절할 수 있습니다.
튜토리얼 시작 부분에 표시된 이미지를 거의 만들 수 있습니다. 하지만 손실과 증가가 모두 있는 픽셀을 보여주는 레이어가 누락되었습니다. 손실과 이득을 모두 보여주는 픽셀을 계산하기 전에 이미지 밴드에서 일부 계산을 수행하는 방법을 알아야 하기 때문에 누락되었습니다. 이 주제는 다음 섹션에서 다룹니다.