FeatureView
là một bản trình bày tăng tốc, chỉ có thể xem của FeatureCollection
.
Không giống như FeatureCollection
, các thẻ thông tin bản đồ đường quét được tạo ngay lập tức, các thẻ thông tin bản đồ đường quét FeatureView
được tính toán trước để cung cấp khả năng kết xuất nhanh.
Ngoài việc kết xuất nhanh hơn, các thành phần FeatureView
còn triển khai tính năng làm mỏng tuỳ thuộc vào mức thu phóng. Kết quả là các tập dữ liệu dày đặc có thể trông không hoàn chỉnh khi thu nhỏ (các đặc điểm nhỏ không được vẽ), nhưng nhiều dữ liệu hơn sẽ hiển thị khi bạn phóng to, điều này có thể cải thiện tính thẩm mỹ của bản đồ ở các cấp độ thu nhỏ thấp hơn. Hành vi làm thưa của tập dữ liệu được kiểm soát bằng một số thông số tối ưu hoá được đặt trong quá trình xuất FeatureCollection
sang tài sản FeatureView
.
Là một thành phần chỉ có thể xem, các đối tượng FeatureView
không được đưa vào các phép tính hoặc biểu thức, nhưng có thể được trực quan hoá và kiểm tra trong Trình chỉnh sửa mã JavaScript và Ứng dụng Earth Engine dưới dạng FeatureViewLayer
. Bạn cũng có thể tích hợp các lớp này vào các ứng dụng API Google Maps.
Tạo FeatureView
Việc tạo FeatureView
bao gồm việc chuẩn bị FeatureCollection
bằng dữ liệu, gọi hàm Export.table.toFeatureView
và bắt đầu tác vụ xuất. Ví dụ sau đây minh hoạ cách xuất chế độ xem của tập dữ liệu đa giác WDPA.
Trong ứng dụng của riêng bạn, hãy sử dụng bất kỳ tập dữ liệu FeatureCollection
nào được lưu trữ trong Earth Engine Data Catalog (Danh mục dữ liệu Earth Engine) hoặc tạo tập dữ liệu của riêng bạn bằng cách tải tập dữ liệu vectơ lên dưới dạng một thành phần Earth Engine.
Bạn có thể tuỳ chỉnh FeatureView
bằng cách sử dụng một số tham số trong hàm Export.table.toFeatureView
.
maxFeaturesPerTile
– xác định số lượng tối đa các đối tượng hiển thị trong thẻ thông tin trên bản đồ ở một mức thu phóng nhất định. Sử dụng thông số này để tối ưu hoá tốc độ hoặc mật độ tính năng.thinningStrategy
– kiểm soát việc có nên tối ưu hoá tính năng làm mỏng cho một ô và cấp độ thu phóng nhất định để có mật độ cao hơn hay tính nhất quán về mật độ trên các ô hay không. Xin lưu ý rằng việc tối ưu hoá cho mật độ cao hơn có thể khiến các ranh giới thẻ thông tin trở nên khác biệt, vì mật độ tính năng trên mỗi thẻ thông tin là độc lập.thinningRanking
– xác định mức độ ưu tiên của tính năng làm mỏng. Ví dụ: bạn có thể tối ưu hoá việc giảm thiểu để nhắm đến việc giữ lại một thuộc tính tính năng cụ thể có giá trị cao – nói cách khác, khi bạn thu nhỏ, các tính năng có giá trị thấp cho thuộc tính đã chọn sẽ được giảm thiểu trước, để lại các tính năng quan trọng nhất (theo quy tắc của bạn).zOrderRanking
– xác định thứ tự z (thứ tự ngăn xếp) của các đối tượng xuất hiện trên bản đồ. Tham số này kiểm soát cách hiển thị các đối tượng chồng chéo bằng cách cho phép bạn đặt các quy tắc ưu tiên dựa trên thuộc tính đối tượng, loại hình học và mức thu phóng. Ví dụ: bạn có thể ưu tiên các đặc điểm có giá trị cao của một thuộc tính cụ thể để các đặc điểm đó phủ lên các đặc điểm giao nhau có giá trị thấp.
Hãy xem trang Tối ưu hoá FeatureView
để biết thêm thông tin chi tiết về các tham số này và đối số được chấp nhận.
Trong ví dụ bên dưới, các đối số được chỉ định cho các tham số này sẽ tạo ra một FeatureView
, trong đó số lượng tối đa các đặc điểm trên mỗi ô ở một mức thu phóng nhất định là 1500, mật độ các đặc điểm trên mỗi ô là độc lập và được phép đạt đến mức tối đa là 1500, các đa giác nhỏ hơn được làm thưa trước và các đa giác nhỏ hơn nằm trên các đa giác lớn hơn.
Trình soạn thảo mã (JavaScript)
// Import the WDPA feature collection. var wdpa = ee.FeatureCollection('WCMC/WDPA/current/polygons'); // Export the WDPA FeatureCollection as a FeatureView asset. Export.table.toFeatureView({ collection: wdpa, assetId: 'wdpa-featureview-demo', description: 'wdpa-featureview-demo', maxFeaturesPerTile: 1500, thinningStrategy: 'HIGHER_DENSITY', thinningRanking: ['REP_AREA DESC'], zOrderRanking: ['REP_AREA DESC'], });
Việc thực thi đoạn mã ở trên trong Trình soạn thảo mã sẽ tạo một tác vụ xuất; hãy chạy tác vụ này để bắt đầu xuất.
Vị trí thành phần FeatureView
Bạn có thể tìm thấy các thành phần FeatureView
trong Danh mục dữ liệu công khai và trong số thành phần cá nhân trong thẻ Thành phần của Trình soạn thảo mã. Tất cả thành phần FeatureCollection
có liên quan trong Danh mục dữ liệu đều có một thành phần FeatureView
đồng hành với các chế độ cài đặt truyền dẫn áp dụng chung. Bản lưu trữ thành phần cá nhân của bạn sẽ bao gồm mọi thành phần FeatureView
mà bạn tạo.
Nhập thành phần FeatureView vào tập lệnh
Bạn có thể nhập các thành phần FeatureView
vào tập lệnh Trình chỉnh sửa mã bằng các nút trong hộp thoại thành phần của Trình chỉnh sửa mã và mục nhập thành phần cá nhân, đồng thời bằng cách cung cấp mã thành phần FeatureView
làm dữ liệu đầu vào cho hàm khởi tạo ui.Map.FeatureViewLayer
.
Hộp thoại thành phần Danh mục dữ liệu
Hộp thoại thành phần bảng trong Danh mục dữ liệu, truy cập được từ thanh tìm kiếm của Trình soạn thảo mã, có nút Import (Nhập) ở dưới cùng bên phải với trình đơn thả xuống. Trong trình đơn thả xuống, hãy chọn "Import FeatureView" (Nhập FeatureView). Tài sản này sẽ được đưa vào phần Imports (Nhập) ở đầu tập lệnh.
Hộp thoại thành phần cá nhân
Hộp thoại thành phần FeatureView
cá nhân (có thể truy cập bằng cách chọn một thành phần trong thẻ Tài sản của Trình soạn thảo mã) có nút Nhập ở phía trên bên phải.
Khi kích hoạt nút này, thành phần sẽ được đưa vào phần Imports (Nhập) ở đầu tập lệnh. Bạn cũng có thể sử dụng nút lối tắt nhập (biểu tượng mũi tên chỉ sang phải) xuất hiện khi bạn di chuột qua một thành phần trong thẻ Thành phần.
Mã tài sản
Các thành phần FeatureView
có một mã nhận dạng có thể được cung cấp làm dữ liệu đầu vào cho hàm khởi tạo ui.Map.FeatureViewLayer
, cho phép bạn truy cập vào thành phần đó trong tập lệnh. Bạn có thể tìm thấy các đoạn mã nhập được tạo sẵn trong các trang tài sản và hộp thoại tài sản của Danh mục dữ liệu trong Trình soạn thảo mã.
Hình 1. Hộp thoại thành phần của Danh mục dữ liệu làm nổi bật các phương thức nhập FeatureView
.
Siêu dữ liệu FeatureView
Thông tin và siêu dữ liệu FeatureView
có trong hộp thoại thành phần được đề cập trong phần Vị trí thành phần FeatureView ở trên. Ngoài nội dung mô tả và các thuộc tính có thể được chia sẻ với nguồn FeatureCollection
, còn có 5 thuộc tính dành riêng cho FeatureView
. Các tham số này bao gồm các chế độ cài đặt tham số truyền dẫn được mô tả trong phần Tạo FeatureView và sourceVersion
, là dấu thời gian "đã sửa đổi gần đây nhất" của thành phần bảng mà FeatureView
được tạo từ đó. Hình 1 ở trên cho thấy các thuộc tính dành riêng cho FeatureView
trong hộp thoại thành phần Danh mục dữ liệu. Giống như các tài sản khác, bạn cũng có thể tìm nạp các thuộc tính theo phương thức lập trình từ từ điển do ee.data.getAsset
trả về.
Trực quan hoá FeatureView
Bạn có thể trực quan hoá đối tượng FeatureView
trong Trình soạn thảo mã, Ứng dụng Earth Engine và Google Maps.
Trình soạn thảo mã
Trình chỉnh sửa mã bao gồm thành phần ui.Map.FeatureViewLayer
để trực quan hoá các thành phần FeatureView
trên bản đồ. Ví dụ sau xác định mã tài sản FeatureView
, nhập tài sản dưới dạng FeatureViewLayer
và hiển thị tài sản đó trên bản đồ.
Trình soạn thảo mã (JavaScript)
// Define the FeatureView asset ID. var assetId = 'WCMC/WDPA/current/polygons_FeatureView'; // Import the FeatureView asset as a FeatureViewLayer. var layer = ui.Map.FeatureViewLayer(assetId); // Add the FeatureViewLayer to the map. Map.add(layer);
Định kiểu
Bạn có thể tạo kiểu cho FeatureViewLayer
bằng cách truyền từ điển kiểu vào hàm ui.Map.FeatureViewLayer
hoặc thêm các từ điển kiểu đó vào một lớp bằng phương thức setVisParams
. Dưới đây là ví dụ về cách tạo kiểu:
- màu đường viền dựa trên thuộc tính "MARINE" (liệu khu vực được bảo vệ có nằm hoàn toàn hay một phần trong môi trường biển hay không),
- màu nền dựa trên thuộc tính "IUCN_CAT" (Danh mục của Liên minh Bảo tồn Thiên nhiên Quốc tế (IUCN)) và
- độ mờ của vùng lấp đầy dựa trên kích thước của vùng được bảo vệ do thuộc tính "REP_AREA" xác định.
Truy cập vào trang Định kiểu FeatureView để biết thêm thông tin chi tiết về các tuỳ chọn định kiểu hiện có.
Trình soạn thảo mã (JavaScript)
// Set visualization properties for the defined layer. layer.setVisParams({ color: { property: 'MARINE', categories: [ ['0', 'purple'], ['1', 'green'], ['2', 'blue'], ] }, fillColor: { property: 'IUCN_CAT', defaultValue: 'd3d3d3', categories: [ ['Ia', 'a6cee3'], ['Ib', '1f78b4'], ['II', 'b2df8a'], ['III', '33a02c'], ['IV', 'fb9a99'], ['V', 'e31a1c'], ['VI', 'fdbf6f'], ] }, fillOpacity: { property: 'REP_AREA', mode: 'interval', palette: [ [0, 0.5], [80, 0.35], [2000, 0.22], [5000, 0.15], ], }, width: 1.0, pointSize: 6.0, });
Lọc
Bạn có thể áp dụng quy tắc bộ lọc để định kiểu hoặc ẩn các tính năng một cách có chọn lọc dựa trên các thuộc tính của chúng. Ví dụ: để lọc ra các khu vực được bảo vệ nhỏ hơn một khu vực nhất định do tiện ích thanh trượt cung cấp, bạn có thể sử dụng mã sau. Hãy xem phần Quy tắc cụ thể trên trang Định kiểu FeatureView
để tìm hiểu thêm về trường rules
.
Trình soạn thảo mã (JavaScript)
// Define the FeatureView asset ID. var assetId = 'WCMC/WDPA/current/polygons_FeatureView'; // Import the FeatureView asset as a FeatureViewLayer. var layer = ui.Map.FeatureViewLayer(assetId, null, 'WDPA FeatureViewLayer'); // Callback function to update FeatureViewLayer style. var updateVisParams = function() { layer.setVisParams({ color: { property: 'MARINE', categories: [ ['0', 'purple'], ['1', 'green'], ['2', 'blue'], ] }, fillColor: { property: 'IUCN_CAT', defaultValue: 'd3d3d3', categories: [ ['Ia', 'a6cee3'], ['Ib', '1f78b4'], ['II', 'b2df8a'], ['III', '33a02c'], ['IV', 'fb9a99'], ['V', 'e31a1c'], ['VI', 'fdbf6f'], ] }, fillOpacity: { property: 'REP_AREA', mode: 'interval', palette: [ [0, 0.5], [80, 0.35], [2000, 0.22], [5000, 0.15], ], }, width: 1.0, pointSize: 6.0, rules: [ { filter: ee.Filter.lt('REP_AREA', filterSlider.getValue()), isVisible: false, }, ], }); }; // Slider widget that calls the updateVisParams function on change. var filterSlider = ui.Slider({ min: 0, max: 10000, step: 10, value: 0, style: { stretch: 'horizontal'}, onChange: updateVisParams, }); var filterSliderLabel = ui.Label( 'Adjust slider to hide features less than the specified area (km²)'); // Add the slider to the map. Map.add(ui.Panel([filterSliderLabel, filterSlider])); // Initialize the FeatureViewLayer style. updateVisParams(); // Add the FeatureViewLayer to the map. Map.add(layer);
Hình 2. Hình ảnh FeatureViewLayer
bằng tiện ích thanh trượt để ẩn các tính năng nhỏ hơn vùng được chỉ định.
API Google Maps
Quy trình trực quan hoá một thành phần FeatureView
bằng API Google Maps là một quy trình gồm 4 phần: lấy khoá thẻ thông tin bằng ee.data.getFeatureViewTilesKey
, truyền khoá đó đến một thực thể của FeatureViewTileSource
, tạo một ee.layer.ImageOverlay
, sau đó thêm lớp phủ vào thực thể google.maps.Map
. Mã mẫu để tạo ImageOverlay
trong JavaScript được trình bày ở phần dưới.
var tilesKey = ee.data.getFeatureViewTilesKey({
assetId: 'WCMC/WDPA/current/polygons_FeatureView',
visParams: { … },
});
var tileSource = new ee.layers.FeatureViewTileSource(tilesKey);
var overlay = new ee.layers.ImageOverlay(tileSource);
Sau khi hoàn tất, bạn có thể thêm lớp phủ vào thực thể google.maps.Map
như minh hoạ dưới đây.
// embeddedMap is your google.maps.Map instance.
embeddedMap.overlayMapTypes.setAt(0, overlay);
Kiểm tra FeatureView
Bạn có thể kiểm tra lớp FeatureViewLayer
được thêm vào bản đồ Trình chỉnh sửa mã mặc định bằng Công cụ kiểm tra.
Chức năng này giống với chức năng của FeatureCollection
. Xin lưu ý rằng kết quả được trả về cho vị trí được nhấp chỉ liệt kê các đối tượng hiển thị ở mức thu phóng hiện tại. Hình học không hiển thị cho các đặc điểm được kiểm tra vì các đặc điểm này được đơn giản hoá trong quá trình xuất FeatureView
.
Hình 3. Kiểm tra FeatureViewLayer
. Trình kiểm tra hiển thị lớp, tính năng, mã tài sản và các tham số trực quan.