Cài đặt Python

Hỗ trợ Python

Thư viện ứng dụng Python của Earth Engine tương thích với các phiên bản Python mà Google Cloud hỗ trợ. Dịch vụ hỗ trợ được cập nhật hằng năm theo lịch phát hành phiên bản điểm của Python (PEP 602; Trạng thái của các phiên bản Python). Việc sử dụng các phiên bản Python không được hỗ trợ có thể gây ra lỗi xác thực, hành vi không mong muốn hoặc lỗi của một số thao tác nhất định.

Tuỳ chọn cài đặt

Nếu bạn đang sử dụng Google Colab, thì thư viện ứng dụng Earth Engine Python phiên bản mới nhất đã được cài đặt (thông qua pip). Hãy thử sổ tay sau để bắt đầu sử dụng Earth Engine và Colab:

Nếu bạn không sử dụng Colab, bạn có thể cài đặt và cập nhật thư viện ứng dụng Earth Engine theo cách thủ công trên hệ thống bằng conda (nên dùng) hoặc pip:


Cài đặt API vào một môi trường Python tuỳ ý bằng cách sử dụng pip. Từ một dòng lệnh hoặc lời nhắc lệnh:

pip install earthengine-api

Sau khi cài đặt, bạn có thể nhập, xác thực và khởi chạy API Earth Engine như mô tả tại đây.

Cập nhật API:

pip install earthengine-api --upgrade

Nhập gói

Gói API Python được gọi là ee. Bạn phải nhập và khởi tạo thư viện này cho mỗi phiên và tập lệnh Python mới:

import ee

Xác thực và khởi chạy

Trước khi sử dụng thư viện ứng dụng Earth Engine Python, bạn cần xác thực và sử dụng thông tin xác thực thu được để khởi chạy ứng dụng Python. Chạy:

ee.Authenticate()

Thao tác này sẽ chọn chế độ xác thực phù hợp nhất cho môi trường của bạn và nhắc bạn xác nhận quyền truy cập cho các tập lệnh. Để khởi chạy, bạn cần cung cấp một dự án mà bạn sở hữu hoặc có quyền sử dụng. Dự án này sẽ được dùng để chạy tất cả các hoạt động của Earth Engine:

ee.Initialize(project='my-project')

Hãy xem hướng dẫn xác thực để khắc phục sự cố và tìm hiểu thêm về các chế độ xác thực cũng như dự án trên Google Cloud.

Xin chào mọi người!

Dưới đây là một tập lệnh ngắn để kiểm tra xem bạn đã sẵn sàng làm việc với Earth Engine hay chưa.

import ee
ee.Authenticate()
ee.Initialize(project='my-project')
print(ee.String('Hello from the Earth Engine servers!').getInfo())

Cú pháp

Cả API Python và JavaScript đều truy cập vào cùng một chức năng phía máy chủ, nhưng biểu thức phía máy khách (tìm hiểu thêm về máy khách so với máy chủ) có thể khác nhau do sự khác biệt về cú pháp ngôn ngữ. Bảng sau đây bao gồm danh sách các điểm khác biệt thường gặp về cú pháp mà bạn sẽ gặp phải khi làm việc với API Python so với API JavaScript.

Những điểm khác biệt thường gặp về cú pháp giữa JavaScript và Python
Thuộc tính JavaScript Python
Định nghĩa hàm
function myFun(arg) {
  return arg;
}

var myFun = function(arg) {
  return arg;
};
def my_fun(arg):
  return arg
Liên kết hàm ẩn danh
var foo = col.map(function(arg) {
  return arg;
});
foo = col.map(lambda arg: arg)
Định nghĩa biến
var myVar = 'var';
my_var = 'var'
Toán tử logic
var match = such.and(that);
var match = such.or(that);
var match = such.not(that);
match = such.And(that)
match = such.Or(that)
match = such.Not(that)
Chuỗi phương thức nhiều dòng
var foo = my.really()
              .reallyLong()
              .methodChain();
foo = (my.really()
       .reallyLong()
       .methodChain())
Khoá từ điển
var dic = {'key': value};
var dic = {key: value};
dic = {'key': value}
Truy cập vào đối tượng từ điển
var value = dic.key;
var value = dic['key'];
value = dic['key']
Định nghĩa đối số hàm
// Positional arguments.
var foo = fun(argX, argY, argZ);
// Keyword arguments object.
var foo = fun({y: argY});
# Positional arguments.
foo = fun(arg_x, arg_y, arg_z)
# Keyword arguments dictionary.
foo = fun(**{'y': arg_y})
# Keyword arguments.
foo = fun(x=arg_x, z=arg_z)
Boolean
var t = true;
var f = false;
t = True
f = False
Giá trị rỗng
var na = null;
na = None
Bình luận
//
#

Đối tượng ngày

Xác định và thao tác với các đối tượng ngày phía máy khách bằng mô-đun datetime. Đưa mô-đun vào tập lệnh:

import datetime

Chuyển đổi ee.Date thành ngày phía máy khách:

ee_date = ee.Date('2020-01-01')
py_date = datetime.datetime.utcfromtimestamp(ee_date.getInfo()['value']/1000.0)

Chuyển đổi ngày phía máy khách thành ee.Date:

py_date = datetime.datetime.utcnow()
ee_date = ee.Date(py_date)

Đang xuất dữ liệu

Để xuất dữ liệu bằng API Python, bạn cần sử dụng mô-đun ee.batch. Mô-đun này cung cấp giao diện cho các hàm Export. Truyền các đối số tham số như bạn làm với API JavaScript, lưu ý đến các điểm khác biệt được ghi chú trong bảng cú pháp ở trên. Bạn phải bắt đầu các tác vụ xuất bằng cách gọi phương thức start() trên một tác vụ đã xác định. Truy vấn trạng thái của một tác vụ bằng cách gọi phương thức status() trên tác vụ đó. Ví dụ sau đây minh hoạ cách xuất đối tượng ee.Image.

Tạo tác vụ xuất:

task = ee.batch.Export.image.toDrive(image=my_image,  # an ee.Image object.
                                     region=my_geometry,  # an ee.Geometry object.
                                     description='mock_export',
                                     folder='gdrive_folder',
                                     fileNamePrefix='mock_export',
                                     scale=1000,
                                     crs='EPSG:4326')

Bắt đầu một tác vụ xuất:

task.start()

Kiểm tra trạng thái của tác vụ xuất:

task.status()

Kết quả của task.status() là một từ điển chứa thông tin như trạng thái của tác vụ và mã nhận dạng của tác vụ đó.

{
  'state': 'READY',
  'description': 'my_export_task',
  'creation_timestamp_ms': 1647567508236,
  'update_timestamp_ms': 1647567508236,
  'start_timestamp_ms': 0,
  'task_type': 'EXPORT_IMAGE',
  'id': '56TVJIZABUMTD5CJ5YHTMYK4',
  'name': 'projects/earthengine-legacy/operations/56TVJIZABUMTX5CJ5HHTMYK4'
}

Bạn có thể theo dõi tiến trình của tác vụ bằng trường state. Hãy xem trang Môi trường xử lý để biết danh sách các giá trị state và thêm thông tin về vòng đời tác vụ.

In đối tượng

Việc in một đối tượng Earth Engine trong Python sẽ in yêu cầu được chuyển đổi tuần tự cho đối tượng đó, chứ không phải chính đối tượng đó. Hãy tham khảo trang Máy khách so với máy chủ để tìm hiểu lý do.

Gọi getInfo() trên các đối tượng Earth Engine để lấy đối tượng mong muốn từ máy chủ đến ứng dụng:

# Load a Landsat image.
img = ee.Image('LANDSAT/LT05/C02/T1_L2/LT05_034033_20000913')

# Print image object WITHOUT call to getInfo(); prints serialized request instructions.
print(img)

# Print image object WITH call to getInfo(); prints image metadata.
print(img.getInfo())
Xin lưu ý rằng getInfo() là một thao tác đồng bộ, nghĩa là việc thực thi các biểu thức sau lệnh gọi getInfo() sẽ bị chặn cho đến khi kết quả được trả về cho ứng dụng. Ngoài ra, các yêu cầu về nhiều dữ liệu hoặc phép tính tốn kém có thể trả về lỗi và/hoặc treo. Nhìn chung, phương pháp hay nhất là xuất kết quả, sau đó nhập kết quả đó vào một tập lệnh mới để phân tích thêm.

Đối tượng giao diện người dùng

Mô-đun ui của Earth Engine chỉ có sẵn thông qua Trình chỉnh sửa mã API JavaScript. Sử dụng thư viện của bên thứ ba cho các thành phần trên giao diện người dùng trong Python. Các thư viện như geemap, Foliumipyleaflet cung cấp chế độ hiển thị bản đồ tương tác, trong khi bạn có thể lập biểu đồ bằng Matplotlib, Altair hoặc seaborn, v.v. Xem các ví dụ trong sổ tay thiết lập Earth Engine trong Colab để sử dụng geemap và Matplotlib.

Python trong Hướng dẫn dành cho nhà phát triển

Mã Python được đưa vào toàn bộ Hướng dẫn dành cho nhà phát triển Earth Engine. Bạn có thể xem các ví dụ về mã (nếu có) bằng cách nhấp vào thẻ "Colab (Python)" ở đầu các khối mã. Các trang hướng dẫn cũng có thể có các nút ở đầu trang để chạy trang dưới dạng sổ tay Colab hoặc xem trên GitHub. Bạn có thể chạy các ví dụ về mã Python bằng Google Colab. Bản đồ tương tác và khám phá đối tượng được thư viện geemap xử lý. Cả thư viện ứng dụng Python Earth Engine và geemap đều được cài đặt sẵn trong Colab.

Thiết lập Earth Engine

Để chạy mã Python, bạn cần nhập thư viện Earth Engine, xác thực và khởi chạy. Các lệnh sau đây được dùng trong các ví dụ (xem trang Xác thực và khởi chạy để biết các phương án thay thế).

import ee
ee.Authenticate()
ee.Initialize(project='my-project')

Khám phá tương tác bằng geemap

Thư viện geemap được dùng để hiển thị thẻ thông tin bản đồ và in bản trình bày đa dạng của các đối tượng Earth Engine. Thư viện này lần lượt phụ thuộc vào ipyleafleteerepr cho các tính năng này. Thư viện geemap và các phần phụ thuộc của thư viện này được cài đặt sẵn trong Google Colab; hãy nhập thư viện này vào mỗi phiên.

import geemap.core as geemap

Bạn có thể xem các lớp dữ liệu địa lý của Earth Engine, chẳng hạn như ee.Imageee.FeatureCollection, bằng đối tượng geemap.Map. Trước tiên, hãy xác định đối tượng bản đồ. Sau đó, hãy thêm các lớp vào hoặc thay đổi khung nhìn của lớp đó.

# Initialize a map object.
m = geemap.Map()

# Define an example image.
img = ee.Image.random()

# Add the image to the map.
m.add_layer(img, None, 'Random image')

# Display the map (you can call the object directly if it is the final line).
display(m)