Lọc Tập Ảnh Theo ranh giới Không Gian

Bộ sưu tập hình ảnh Bộ lọc dựa trên khu vực địa lý của lãi suất

This introductory training is part of the official training materials prepared by the United States Department of Agriculture.

Code Editor cho phép người dùng thực hiện được tất cả các chức năng của Earth Engine, tuy nhiên, cần có hiểu biết cơ bản về lập trình và JavaScript. Trong bài tập này, chúng ta sẽ tiếp tục học về ngôn ngữ lập trình Java và các khái niệm mới về dữ liệu không gian trong Earth Engine. Bạn sẽ tiếp tục những gì được học ở bài tập 2 về đối tượng ảnh; tuy nhiên trong bài học này bạn sẽ tập trung nhiều hơn vào các tập hợp hoặc chồng lớp của các đối tượng ảnh có tính chất tương tự. Trong bài học này, bạn sẽ tập trung vào các khái niệm cơ bản và phương pháp liên quan đến các tập hợp ảnh trong Earth Engine. Đây là hướng dẫn giúp người sử dụng có thể viết được các sript đơn giản trong JavaScript.

Lọc Tập Ảnh Theo ranh giới Không Gian

A. Vẽ một đối tượng hình học tạo ranh giới không gian để lọc tập ảnh

Đối tượng hình học (Geometry) là một dạng đối tượng không gian địa lý khác trong Earth Engine. Để tải các shapefile hoặc các file vector khác, bạn cần sử dụng Fusion Tables, sẽ được học trong bài tập 4. Bạn có thể vẽ nhanh một đường/line hoặc một vùng/polygon bằng tay hoặc các điểm/point để tạo một đối tượng hình học.

1. Phía góc trên bên trái của cửa sổ bản đồ/map window, có một số nút chức năng bạn có thể sử dụng để vẽ các đối tượng hình học. Các nút này bao gồm một biểu tượng bàn tay nhỏ (để di chuyển xung quanh ảnh), một biểu tượng giọt lệ ngược, một biểu tượng đường, và một biểu tượng vùng. Click vào biểu tượng vùng/ polygon.

 

assign3_2

2. Công cụ này cho phép bạn vẽ một đối tượng hình học thể hiện vùng nghiên cứu của mình. Click vào cửa sổ bản đồ để tạo một vùng/polygon xung quanh khu vực nghiên cứu của bạn (ví dụ, xung quanh Hà Nội hoặc nơi ở của bạn). Nhớ rằng, bạn có thể tắt/ mở ảnh Landsat để nhìn các lớp phía dưới. Click đúp để đóng kín vùng/polygon.

3. Sau khi bạn có một vùng/polygon kín, sẽ xuất hiện một bản ghi trên code editor về vùng/polygon vừa được tạo ra. Chú ý mũi tên đỏ và phần khung màu đỏ trong hình dưới đây.

 

assign3_3

Chú ý thấy một thuật ngữ JavaScript quen thuộc? Đúng vậy, chúng ta đã sử dụng biến var khá nhiều lần. Trong trường hợp này, chúng ta thấy var được theo sau bằng các từ khác, đối tượng hình học, được viết bằng màu tím. Đây chính là bản ghi (record) chúng ta vừa tạo ra trong trên cửa sổ bản đồ phía dưới. Chúng ta có thể sử dụng nó trong sript của mình bằng cách gọi geometry. Hoặc chúng ta có thể đặt lại tên cho phù hợp hơn để thuận tiện làm việc với tên biến đó

4. Click vào từ geometry. Thay geometry bằng StudyArea.

assign3_4.jpg

5. Click vào biểu tượng đầu mũi tên cạnh dòng var StudyArea để xem thông tin của đối tượng hình học chúng ta vừa tạo ra (Xem hình trên)

i. Bạn có thể làm hiện code vừa tạo bằng cách click vào box/hộp màu xanh lam cạnh dòng Import. Code này có thể đươc copy và paste vào script của bạn.

ii. Nếu bạn lướt/hover qua dòng var StudyArea, một biểu tượng thùng rác xuất hiện ở bên trái. Bạn có thể sử dụng để xóa bản ghi thao tác vừa rồi

C. Lọc tập ảnh bằng đối tượng hình học

1. Bây giờ chúng ta đã sẵn sàng để lọc tập ảnh, L8_collection. Trở lại với cửa sổ code, copy dòng dưới đây và paste vào code editor. Hãy chắc chắn bạn copy chúng xuống ngay dưới dòng lệnh tạo tập ảnh L8_collection.

// Filter to scenes that intersect your boundary
var L8_StudyArea = L8_collection.filterBounds(StudyArea);

2. Thay đổi biến trong câu lệnh Map.addlayer thành L8_StudyArea (như dòng lệnh phía sau đây). Đưa nó xuống dưới dòng lệnh tạo biến L8_StudyArea.
3.  Thay đổi dòng lệnh Map.setCenter thành map.centerObject và cập nhật các tham số đầu vào. Câu lệnh này sẽ giúp dịch chuyển trung tâm của cửa sổ bản đồ về đối tượng hình học chúng ta vừa tạo (ví dụ phía dưới). Chuyển nó xuống dưới dòng lệnh tạo biến L8_StudyArea.

Map.addLayer(L8_StudyArea,
{ min:0.05, max: 0.8, bands: 'B6, B5, B4'},'Landsat 8 in study region');
Map.centerObject(StudyArea, 7);

4. Click Run. Bây giờ tập ảnh sẽ lọc vả chỉ chọn những ảnh giao với vùng/polygon mà bạn đã tạo.

5.  ((Không bắt buộc) Chỉnh sửa lệnh print để in chi tiết của tập ảnh mới, L8_StudyArea (đảm bảo để lệnh này ngay dưới lệnh tạo biến the L8_StudyArea). Khi lệnh hoàn thành, kết quả có 486 thành phần/element trong tập ảnh của tôi (Số lượng ảnh của bạn có thể khác phụ thuộc vào kích thước của đối tượng hình học mà bạn đã số hóa)

print(L8_StudyArea);

assign3_5.jpg

6. Chúng ta cũng có thể sử dụng phương pháp định kích thước của tập ảnh để xác định bao nhiêu ảnh sẽ có trong tập ảnh của bạn. Copy dòng lệnh sau và paste chúng xuỗng dưới script của bạn và. Run script

// Get the number of images.
var count = L8_StudyArea.size();
print('Count of L8_StudyArea: ', count);

7. (Không bắt buộc, tìm hiểu các dạng dữ liệu và hàm khác để có cùng câu trả lời với phương pháp đếm/count tập ảnh): Có cách khác để có được số lượng ảnh, mặc dù phức tạp hơn một chút. Chúng ta có thể sử dụng hàm length()  trong  lists/arrays. Trước tiên, chúng ta cần chuyển tập ảnh thành một List/Danh sách. Copy dòng lệnh sau và paste chúng dưới sript của bạn. Run sript.
i. Đọc trên Console, hàm nào tốn nhiều thời gian để thực hiện hơn

// Convert the collection to a list and get the number of images.
var listL8_SA = L8_StudyArea.toList(1500);
print("number of images", listL8_SA.length());

Leave a Reply