Trực quan hoá hình ảnh và dải hình ảnh

Giờ đây, bạn đã sẵn sàng bắt đầu viết JavaScript cho Earth Engine. Hãy bắt đầu bằng cách sao chép mã sau vào Trình soạn thảo mã:

Trình soạn thảo mã (JavaScript)

// Instantiate an image with the Image constructor.
var image = ee.Image('CGIAR/SRTM90_V4');

// Zoom to a location.
Map.setCenter(-112.8598, 36.2841, 9); // Center on the Grand Canyon.

// Display the image on the map.
Map.addLayer(image);

Nhấp vào nút Run (Chạy) ở đầu Trình soạn thảo mã và quan sát thấy một hình ảnh rất xám xuất hiện trên bản đồ. Đừng lo, bạn sẽ sớm cải thiện được giao diện của trang web. Nếu bạn không quen với cú pháp của bất kỳ phần nào trong ví dụ này, hãy nhớ xem lại hướng dẫn về JavaScript cho Earth Engine.

Trình tạo hình ảnh

Điểm mới đầu tiên trong ví dụ này là hàm khởi tạo hình ảnh ee.Image(). Đối số được cung cấp cho hàm khởi tạo là mã nhận dạng chuỗi của một hình ảnh trong danh mục dữ liệu của Earth Engine. (Hãy xem thẻ Docs (Tài liệu) ở bên trái Trình soạn thảo mã để xem danh sách đầy đủ các đối số có thể có cho hàm khởi tạo hình ảnh. Thẻ Tài liệu trình bày thông tin đã cập nhật nhất về những việc Earth Engine có thể làm.)

Để tìm mã nhận dạng hình ảnh, hãy tìm trong danh mục dữ liệu của Earth Engine bằng công cụ tìm kiếm ở đầu Trình soạn thảo mã. Ví dụ: nhập "elevation" (độ cao) vào trường tìm kiếm và lưu ý rằng danh sách các đường quét sẽ được trả về. Nhấp vào mục "SRTM Digital Elevation Data Version 4" (Dữ liệu độ cao kỹ thuật số SRTM phiên bản 4) để xem thêm thông tin về tập dữ liệu đó. Ở bên phải phần mô tả tập dữ liệu là trường Mã hình ảnh. Hãy lưu ý rằng mã nhận dạng hình ảnh trong ví dụ được sao chép từ mã nhận dạng hình ảnh xuất hiện trong phần mô tả tập dữ liệu.

Thay vì sao chép và dán mã nhận dạng hình ảnh, bạn có thể sử dụng nút Import (Nhập) trên phần mô tả tập dữ liệu hoặc đường liên kết import (nhập) ở bên phải kết quả tìm kiếm. Nếu bạn nhấp vào đường liên kết hoặc nút nhập, một biến sẽ tự động được tạo trong một mục đặc biệt có tên là "Imports" (Nhập) ở đầu tập lệnh. Bạn có thể đổi tên biến bằng cách nhấp vào tên của biến đó trong phần nhập.

Định cấu hình bản đồ

Phần mới thứ hai của ví dụ này là lệnh gọi Map.setCenter(). Phương thức này trên đối tượng Map (đại diện cho màn hình Bản đồ trong Trình soạn thảo mã) sẽ căn giữa bản đồ ở kinh độ, vĩ độ (theo độ thập phân) và mức thu phóng đã cho, trong đó 1 là mức thu nhỏ để bản đồ hiển thị toàn bộ bề mặt Trái Đất. Số càng lớn thì mức thu phóng càng cao. Khám phá tất cả các phương thức trên đối tượng Map bằng cách xem phần Bản đồ trong thẻ Tài liệu ở bên trái Trình soạn thảo mã.

Thêm một lớp vào Bản đồ

Dòng cuối cùng trong ví dụ cho biết: sử dụng phương thức addLayer() của đối tượng Map để thêm hình ảnh vào màn hình bản đồ trong Trình soạn thảo mã.

Xin chúc mừng! Bạn đã tạo tập lệnh Earth Engine đầu tiên. Trong phần tiếp theo, bạn sẽ tìm hiểu cách làm cho hình ảnh đó trông đẹp hơn một chút.

Nội dung bên lề: Hình ảnh trong Earth Engine

Hình ảnh trong Earth Engine (xem trang này để biết thêm thông tin) được tạo thành từ một hoặc nhiều dải. Mỗi dải tần trong một hình ảnh có tên, giá trị pixel, độ phân giải pixel và phép chiếu riêng. Như bạn sẽ sớm thấy, hình ảnh SRTM có một dải: "elevation".

Khi bạn thêm hình ảnh vào bản đồ bằng Map.addLayer(), Earth Engine cần xác định cách liên kết các giá trị trong(các) dải hình ảnh với màu sắc trên màn hình. Nếu một hình ảnh đơn băng tần được thêm vào bản đồ, thì theo mặc định, Earth Engine sẽ hiển thị băng tần đó ở thang màu xám, trong đó giá trị tối thiểu được gán cho màu đen và giá trị tối đa được gán cho màu trắng. Nếu bạn không chỉ định giá trị tối thiểu và tối đa, Earth Engine sẽ sử dụng các giá trị mặc định. Ví dụ: hình ảnh bạn vừa thêm vào bản đồ sẽ hiển thị dưới dạng hình ảnh thang màu xám được kéo giãn ra toàn bộ dải dữ liệu hoặc số nguyên 16 bit có dấu [-32768, 32767]. (Theo mặc định, các dải float được kéo giãn thành [0, 1] và các dải byte được kéo giãn thành [0, 255]).

Bạn có thể khám phá kiểu dữ liệu của hình ảnh bằng cách in hình ảnh đó và kiểm tra đối tượng hình ảnh trong thẻ Console (Bảng điều khiển). Ví dụ: dán đoạn mã sau vào sau đoạn mã trước:

Trình soạn thảo mã (JavaScript)

print('SRTM image', image);

Khi bạn nhấp vào chạy, hãy lưu ý rằng một đối tượng sẽ xuất hiện trong bảng điều khiển. Để kiểm tra các thuộc tính của đối tượng, hãy mở rộng đối tượng bằng cách nhấp vào biểu tượng mũi tên () ở bên trái đối tượng hoặc thuộc tính. Mở rộng đối tượng hình ảnh, thuộc tính "bands", dải "elevation" ở chỉ mục "0" và thuộc tính "data_type" của dải "elevation" để biết rằng đó là loại dữ liệu signed int16.

Tuỳ chỉnh cách trực quan hoá lớp

Để thay đổi cách kéo giãn dữ liệu, bạn có thể cung cấp một tham số khác cho lệnh gọi Map.addLayer(). Cụ thể, tham số thứ hai, visParams, cho phép bạn chỉ định giá trị tối thiểu và tối đa để hiển thị. Để khám phá những giá trị cần sử dụng, hãy kích hoạt thẻ Trình kiểm tra rồi nhấp vào xung quanh bản đồ để biết phạm vi giá trị pixel. Ngoài ra, bạn có thể sử dụng Trình quản lý lớp để kéo giãn dữ liệu một cách tương tác, sau đó quan sát giá trị tối thiểu và tối đa tương ứng với phân vị hoặc độ lệch chuẩn. Giả sử thông qua thử nghiệm như vậy, bạn xác định rằng dữ liệu nên được kéo dài thành [0, 3000]. Để hiển thị hình ảnh bằng dải này, hãy sử dụng:

Trình soạn thảo mã (JavaScript)

Map.addLayer(image, {min: 0, max: 3000}, 'custom visualization');

Xin lưu ý rằng tham số visParams là một đối tượng, có các thuộc tính chỉ định min và max. (Tìm hiểu thêm về đối tượng JavaScript trong hướng dẫn về JavaScript hoặc tài liệu tham khảo bên ngoài này). Xin lưu ý rằng tham số thứ ba cho Map.addLayer() là tên của lớp hiển thị trong Trình quản lý lớp. Kết quả sẽ có dạng như Hình 1. Di chuột qua hộp Lớp ở bên phải để xem hiệu ứng của việc đổi tên lớp đó.

Tutorial_api_01_elevation.png
Hình 1. Hình ảnh độ cao dưới dạng thang màu xám, được kéo dài đến [0, 3000].

Để hiển thị một dải tần bằng bảng màu, hãy thêm thuộc tính palette vào đối tượng visParams:

Trình soạn thảo mã (JavaScript)

Map.addLayer(image, {min: 0, max: 3000, palette: ['blue', 'green', 'red']},
    'custom palette');

Kết quả sẽ có dạng như Hình 2.

Tutorial_api_02_palette.png
Hình 2. Hình ảnh độ cao dưới dạng dải màu từ xanh dương đến đỏ, được kéo dài đến [0, 3000].

Nội dung bên lề: Bảng màu

Bảng màu cho phép bạn đặt bảng phối màu cho hình ảnh một dải. Bảng màu là một danh sách các chuỗi màu được phân tách bằng dấu phẩy, được nội suy tuyến tính giữa các giá trị tối đa và tối thiểu trong tham số hình ảnh (hoặc giá trị mặc định theo loại dải, như mô tả trước đó). Ví dụ: các pixel nhỏ hơn hoặc bằng giá trị tối thiểu sẽ được hiển thị bằng màu đầu tiên trong danh sách; các pixel lớn hơn hoặc bằng giá trị tối đa sẽ được hiển thị bằng màu cuối cùng trong danh sách. Màu trung gian được kéo giãn tuyến tính thành các giá trị pixel trung gian.

Màu sắc được xác định bằng cách sử dụng lược đồ giá trị màu CSS theo tiêu chuẩn web (xem tài liệu tham khảo bên ngoài này để tìm hiểu thêm). Bạn có thể chỉ định màu theo tên hoặc dưới dạng chuỗi hệ thập lục phân cho biết sự kết hợp của màu đỏ, xanh lục và xanh dương. Giá trị thấp nhất ở bất kỳ vị trí nào trong ba vị trí là 00 (đại diện cho số thập phân 0), còn giá trị cao nhất là FF (đại diện cho số thập phân 255). Chuỗi "000000" đại diện cho màu đen, "FFFFFF" là màu trắng, "FF0000" là màu đỏ, "00FF00" là màu xanh lục và "0000FF" là màu xanh dương. Hãy xem phần Bảng màu để biết thêm chi tiết. Bạn có thể kéo giãn theo cách khác bằng cách sử dụng Bộ mô tả lớp được tạo kiểu, như mô tả trong phần này.

Trong phần sau của hướng dẫn này, bạn sẽ tìm hiểu cách hiển thị hình ảnh đa dải. Nhưng trước tiên, hãy truy cập trang tiếp theo để tìm hiểu về cách thực hiện các phép tính bằng hình ảnh.