Bạn có thể triển khai Earth Engine Python API trong một sổ tay Google Colaboratory. Sổ tay Colab là sổ tay Jupyter chạy trên đám mây và được tích hợp chặt chẽ với Google Drive, giúp bạn dễ dàng thiết lập, truy cập và chia sẻ. Nếu bạn chưa quen với Google Colab hoặc sổ tay Jupyter, vui lòng dành thời gian khám phá trang chào mừng của Colab.
Các phần sau đây mô tả cách triển khai Earth Engine trong Google Colab và cách trực quan hoá bản đồ và biểu đồ bằng các gói Python của bên thứ ba.
Mở một sổ tay Colab
Bạn có thể mở sổ tay từ Google Drive hoặc giao diện Colaboratory.
Sổ ghi chú mới
Google Drive
Mở Google Drive rồi tạo một tệp mới.
- Mới > Tuỳ chọn khác > Colaboratory
- Nhấp chuột phải vào một thư mục rồi chọn Tuỳ chọn khác > Colaboratory trong trình đơn theo bối cảnh.
Giao diện Colab
Truy cập vào trang web Colab và tạo một tệp mới.
- File > New > New Python 3 notebook (Tệp > Mới > Sổ tay Python 3 mới)
- Nếu trước đây bạn đã tương tác với Colab, thì khi truy cập vào trang web được liên kết ở trên, bạn sẽ thấy một trình khám phá tệp. Tại đây, bạn có thể bắt đầu một tệp mới bằng cách sử dụng trình đơn thả xuống ở cuối cửa sổ.
Sổ tay hiện có
Bạn có thể mở các tệp sổ tay hiện có (.ipynb) trong Google Drive và giao diện Colab.
Google Drive
Sổ tay Colab có thể nằm trong nhiều thư mục trong Google Drive, tuỳ thuộc vào nơi tạo tệp sổ tay. Sổ tay được tạo trong Google Drive sẽ nằm trong thư mục mà bạn đã tạo hoặc di chuyển đến. Theo mặc định, các sổ tay được tạo từ giao diện Colab sẽ nằm trong một thư mục có tên là "Sổ tay Colab". Thư mục này sẽ tự động được thêm vào thư mục "Drive của tôi" trong Google Drive khi bạn bắt đầu làm việc với Colab.
Bạn có thể nhận biết các tệp Colab bằng biểu tượng "CO" màu vàng và đuôi tệp ".ipynb". Mở tệp bằng cách nhấp đúp vào tệp đó rồi chọn Mở bằng > Colaboratory trong nút ở đầu trang kết quả hoặc bằng cách nhấp chuột phải vào một tệp rồi chọn Mở bằng > Colaboratory trong trình đơn theo bối cảnh của tệp.
Giao diện Colab
Khi mở sổ tay từ giao diện Colab, bạn có thể truy cập vào các tệp hiện có trên Google Drive, GitHub và phần cứng cục bộ. Khi bạn truy cập vào giao diện Colab sau lần sử dụng đầu tiên, một phương thức khám phá tệp sẽ xuất hiện. Trong các thẻ ở đầu trình khám phá tệp, hãy chọn một nguồn rồi chuyển đến tệp .ipynb mà bạn muốn mở. Bạn cũng có thể truy cập vào trình khám phá tệp từ giao diện Colab bằng cách chọn Tệp > Mở sổ tay hoặc sử dụng tổ hợp phím Ctrl+O.
Nhập API và lấy thông tin đăng nhập
Phần này minh hoạ cách nhập Earth Engine Python API và xác thực quyền truy cập. Nội dung này cũng có dưới dạng sổ tay Colab:
Theo mặc định, Earth Engine API được đưa vào Google Colaboratory nên bạn chỉ cần nhập và xác thực. Bạn phải hoàn tất các bước này cho mỗi phiên Colab mới hoặc nếu bạn khởi động lại nhân Colab hoặc nếu máy ảo Colab của bạn được tái chế do không hoạt động.
Nhập API
Chạy ô sau để nhập API vào phiên của bạn.
import ee
Xác thực và khởi tạo
Chạy hàm ee.Authenticate để xác thực quyền truy cập của bạn vào các máy chủ Earth Engine và ee.Initialize để khởi động hàm này. Thêm một ô mã, nhập các dòng sau, chỉnh sửa dự án và chạy ô.
# Trigger the authentication flow. ee.Authenticate() # Initialize the library. ee.Initialize(project='my-project')
Bạn sẽ được yêu cầu cho phép truy cập vào tài khoản Earth Engine của mình. Làm theo hướng dẫn được in trên ô để hoàn tất bước này.
Kiểm thử API
Kiểm thử API bằng cách in độ cao của Đỉnh Everest. Xin lưu ý rằng bạn phải khởi chạy API trước khi sử dụng. Chạy tập lệnh Python sau đây trong một ô mới.
# 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)
Trực quan hoá bản đồ
Các đối tượng ee.Image có thể được hiển thị cho các ô đầu ra của sổ tay. Hai ví dụ sau đây minh hoạ cách hiển thị một hình ảnh tĩnh và một bản đồ tương tác.
Hình ảnh tĩnh
Mô-đun IPython.display chứa hàm Image. Hàm này có thể hiển thị kết quả của một URL đại diện cho hình ảnh được tạo từ lệnh gọi đến hàm getThumbUrl của Earth Engine. Tập lệnh sau đây sẽ hiển thị hình thu nhỏ của một mô hình độ cao toàn cầu.
# 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']}))
Bản đồ tương tác
Bạn có thể dùng gói folium để hiển thị các đối tượng ee.Image trên bản đồ Leaflet tương tác. Folium không có phương thức mặc định để xử lý các ô từ Earth Engine, vì vậy, bạn phải xác định và thêm một phương thức vào mô-đun folium.Map trước khi sử dụng.
Tập lệnh sau đây cung cấp ví dụ về cách thêm một phương thức để xử lý các ô Earth Engine và sử dụng phương thức đó để hiển thị một mô hình độ cao cho bản đồ 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)
Trực quan hoá biểu đồ
Một số hàm Earth Engine tạo ra dữ liệu dạng bảng mà các gói trực quan hoá dữ liệu (chẳng hạn như matplotlib) có thể vẽ biểu đồ. Ví dụ sau đây minh hoạ việc hiển thị dữ liệu dạng bảng từ Earth Engine dưới dạng biểu đồ phân tán. Hãy xem bài viết Vẽ biểu đồ trong Colaboratory để biết thêm thông tin.
# 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()
Chạy trong Google Colab
Xem nguồn trên GitHub