Earth Engine Python API는 Google Colaboratory 노트북에 배포할 수 있습니다. Colab 메모장은 클라우드에서 실행되고 Google Drive와 긴밀하게 통합되어 있어 쉽게 설정, 액세스, 공유할 수 있는 Jupyter 메모장입니다. Google Colab 또는 Jupyter 노트북에 익숙하지 않은 경우 Colab 시작 사이트를 살펴보세요.
다음 섹션에서는 Google Colab에 Earth Engine을 배포하고 서드 파티 Python 패키지를 사용하여 지도와 차트를 시각화하는 방법을 설명합니다.
Colab 노트북 열기
노트북은 Google Drive 또는 Colaboratory 인터페이스에서 열 수 있습니다.
새 노트북
Google Drive
Google Drive를 열고 새 파일을 만듭니다.
- 새로 만들기 > 더보기 > Colaboratory
- 폴더를 마우스 오른쪽 버튼으로 클릭하고 컨텍스트 메뉴에서 더보기 > Colaboratory를 선택합니다.
Colab 인터페이스
Colab 사이트를 방문하여 새 파일을 만듭니다.
- 파일 > 새 항목 > 새 Python 3 노트북
- 이전에 Colab을 사용한 적이 있다면 위 링크된 사이트를 방문하면 창 하단의 드롭다운 메뉴를 사용하여 새 파일을 시작할 수 있는 파일 탐색기가 표시됩니다.
기존 노트북
기존 노트북 파일 (.ipynb)은 Google Drive 및 Colab 인터페이스에서 열 수 있습니다.
Google Drive
Colab 메모장은 메모장 파일이 생성된 위치에 따라 Google Drive의 여러 폴더에 있을 수 있습니다. Google Drive에서 생성된 노트북은 생성되었거나 이동된 폴더에 있습니다. Colab 인터페이스에서 만든 노트북은 기본적으로 'Colab Notebooks'라는 폴더에 저장되며, 이 폴더는 Colab 작업을 시작할 때 Google Drive의 '내 드라이브' 폴더에 자동으로 추가됩니다.
Colab 파일은 노란색 'CO' 기호와 '.ipynb' 파일 확장자로 식별할 수 있습니다. 파일을 더블클릭하고 결과 페이지 상단에 있는 버튼에서 Open with > Colaboratory를 선택하거나 파일을 마우스 오른쪽 버튼으로 클릭하고 파일의 컨텍스트 메뉴에서 Open with > Colaboratory를 선택하여 파일을 엽니다.
Colab 인터페이스
Colab 인터페이스에서 노트북을 열면 Google Drive, GitHub, 로컬 하드웨어의 기존 파일에 액세스할 수 있습니다. 처음 사용한 후 Colab 인터페이스를 방문하면 파일 탐색기 모달이 표시됩니다. 파일 탐색기 상단의 탭에서 소스를 선택하고 열려는 .ipynb 파일로 이동합니다. Colab 인터페이스에서 파일 > 메모장 열기를 선택하거나 Ctrl+O 키보드 조합을 사용하여 파일 탐색기에 액세스할 수도 있습니다.
API 가져오기 및 사용자 인증 정보 가져오기
이 섹션에서는 Earth Engine Python API를 가져오고 액세스를 인증하는 방법을 보여줍니다. 이 콘텐츠는 Colab 노트북으로도 제공됩니다.
Earth Engine API는 Google Colaboratory에 기본적으로 포함되어 있으므로 가져오기와 인증만 하면 됩니다. 이 단계는 새 Colab 세션을 시작할 때마다 또는 Colab 커널을 다시 시작할 때 또는 비활성 상태로 인해 Colab 가상 머신이 재활용될 때마다 완료해야 합니다.
API 가져오기
다음 셀을 실행하여 API를 세션으로 가져옵니다.
import ee
인증 및 초기화
ee.Authenticate
함수를 실행하여 Earth Engine 서버에 대한 액세스를 인증하고 ee.Initialize
를 실행하여 초기화합니다. 코드 셀을 추가하고 다음 줄을 입력한 후 프로젝트를 수정하고 셀을 실행합니다.
# Trigger the authentication flow. ee.Authenticate() # Initialize the library. ee.Initialize(project='my-project')
Earth Engine 계정에 대한 액세스를 승인하라는 메시지가 표시됩니다. 셀에 인쇄된 안내에 따라 이 단계를 완료합니다.
API 테스트
에베레스트 산의 고도를 출력하여 API를 테스트합니다. API를 사용하기 전에 초기화해야 합니다. 새 셀에서 다음 Python 스크립트를 실행합니다.
# Print the elevation of Mount Everest. dem = ee.Image('USGS/SRTMGL1_003') xy = ee.Geometry.Point([86.9250, 27.9881]) elev = dem.sample(xy, 30).first().get('elevation').getInfo() print('Mount Everest elevation (m):', elev)
지도 시각화
ee.Image
객체는 노트북 출력 셀에 표시될 수 있습니다. 다음 두 예는 정적 이미지와 대화형 지도를 표시하는 방법을 보여줍니다.
정적 이미지
IPython.display
모듈에는 Earth Engine getThumbUrl
함수 호출에서 생성된 이미지를 나타내는 URL의 결과를 표시할 수 있는 Image
함수가 포함되어 있습니다. 다음 스크립트는 전 세계 지형지물 모델의 썸네일을 표시합니다.
# Import libraries. import ee from IPython.display import Image # Trigger the authentication flow. ee.Authenticate() # Initialize the library. ee.Initialize(project='my-project') # Import a DEM and display a thumbnail of it. dem = ee.Image('USGS/SRTMGL1_003') Image(url=dem.updateMask(dem.gt(0)) .getThumbUrl({'min': 0, 'max': 4000, 'dimensions': 512, 'palette': ['006633', 'E5FFCC', '662A00', 'D8D8D8', 'F5F5F5']}))
대화형 지도
folium
패키지는 대화형 Leaflet 지도에 ee.Image
객체를 표시하는 데 사용할 수 있습니다. Folium에는 Earth Engine의 카드를 처리하는 기본 메서드가 없으므로 사용하기 전에 정의하고 folium.Map
모듈에 추가해야 합니다.
다음 스크립트는 Earth Engine 타일을 처리하는 메서드를 추가하고 이를 사용하여 Leaflet 지도에 고도 모델을 표시하는 예를 보여줍니다.
# Import libraries. import ee import folium # Trigger the authentication flow. ee.Authenticate() # Initialize the library. ee.Initialize(project='my-project') # Define a method for displaying Earth Engine image tiles to folium map. def add_ee_layer(self, ee_image_object, vis_params, name): map_id_dict = ee.Image(ee_image_object).getMapId(vis_params) folium.raster_layers.TileLayer( tiles = map_id_dict['tile_fetcher'].url_format, attr = "Map Data © Google Earth Engine", name = name, overlay = True, control = True ).add_to(self) # Add EE drawing method to folium. folium.Map.add_ee_layer = add_ee_layer # Fetch an elevation model. dem = ee.Image('USGS/SRTMGL1_003') # Set visualization parameters. vis_params = { 'min': 0, 'max': 4000, 'palette': ['006633', 'E5FFCC', '662A00', 'D8D8D8', 'F5F5F5']} # Create a folium map object. my_map = folium.Map(location=[20, 0], zoom_start=3) # Add the elevation model to the map object. my_map.add_ee_layer(dem.updateMask(dem.gt(0)), vis_params, 'DEM') # Add a layer control panel to the map. my_map.add_child(folium.LayerControl()) # Display the map. display(my_map)
차트 시각화
일부 Earth Engine 함수는 matplotlib
와 같은 데이터 시각화 패키지로 표시할 수 있는 표 형식의 데이터를 생성합니다. 다음 예는 Earth Engine의 표 형식 데이터를 산점도로 표시하는 방법을 보여줍니다. 자세한 내용은 Colaboratory에서 차트 표시를 참고하세요.
# Import libraries. import ee import matplotlib.pyplot as plt # Trigger the authentication flow. ee.Authenticate() # Initialize the Earth Engine module. ee.Initialize(project='my-project') # Fetch a Landsat TOA image. img = ee.Image('LANDSAT/LT05/C02/T1_TOA/LT05_034033_20000913') # Select Red and NIR bands, scale them, and sample 500 points. samp_fc = img.select(['B3','B4']).sample(scale=30, numPixels=500) # Arrange the sample as a list of lists. samp_dict = samp_fc.reduceColumns(ee.Reducer.toList().repeat(2), ['B3', 'B4']) samp_list = ee.List(samp_dict.get('list')) # Save server-side ee.List as a client-side Python list. samp_data = samp_list.getInfo() # Display a scatter plot of Red-NIR sample pairs using matplotlib. plt.scatter(samp_data[0], samp_data[1], alpha=0.2) plt.xlabel('Red', fontsize=12) plt.ylabel('NIR', fontsize=12) plt.show()