FeatureView
是 FeatureCollection
的僅供檢視、加速表示法。FeatureCollection
會在執行期間產生光柵地圖圖塊,但 FeatureView
會預先計算光柵地圖圖塊,以便快速算繪。除了算繪速度更快之外,FeatureView
素材資源還會實作與縮放層級相關的功能精簡。這樣一來,當您縮小地圖時,密集的資料集可能會看起來不完整 (不會繪製小型地圖項目),但當您放大地圖時,系統會顯示更多資料,這麼做可改善較低縮放等級的地圖美觀度。資料集的稀疏化行為是由多個最佳化參數控制,這些參數是在將 FeatureCollection
匯出至 FeatureView
資產時設定。
FeatureView
物件是僅供檢視的資產,因此無法納入計算或運算式,但可在 JavaScript 程式碼編輯器和 Earth Engine 應用程式中以 FeatureViewLayer
的形式進行視覺化和檢查。也可以整合至 Google Maps API 應用程式。
建立 FeatureView
建立 FeatureView
的過程包括使用資料準備 FeatureCollection
、呼叫 Export.table.toFeatureView
函式,以及啟動匯出工作。以下範例示範如何匯出 WDPA 多邊形資料集的檢視畫面。在您自己的應用程式中,使用 Earth Engine Data Catalog 中封存的任何 FeatureCollection
資料集,或是上傳向量資料集做為 Earth Engine 資產,以建立自己的資料集。
您可以使用 Export.table.toFeatureView
函式中的多個參數自訂 FeatureView
。
maxFeaturesPerTile
:定義在特定縮放等級下,地圖圖塊中顯示的最大地圖項目數量。使用這個參數,即可針對速度或特徵密度進行最佳化。thinningStrategy
:控制是否應針對特定圖塊和縮放等級的功能精簡,以便提高圖塊密度或確保圖塊密度一致。請注意,為了提高密度而進行最佳化處理,可能會導致圖塊邊界變得明顯,因為每個圖塊的特徵密度各自獨立。thinningRanking
:定義特徵精簡優先順序。舉例來說,您可以將精簡功能最佳化,以便針對特定地圖項目屬性保留高值,換句話說,當您縮小地圖時,系統會先精簡屬性值較低的地圖項目,讓最重要的地圖項目 (依據您的規則) 顯示出來。zOrderRanking
:定義地圖上顯示的地圖項目的 Z 順序 (堆疊順序)。這個參數可控制重疊地圖項目的顯示方式,讓您根據地圖項目屬性、幾何圖形類型和縮放等級設定優先順序規則。舉例來說,您可以將特定屬性值較高的地形圖層設為優先,讓這些地形圖層疊加在值較低的交叉地形圖層上。
如要進一步瞭解這些參數及其可接受的引數,請參閱 FeatureView
最佳化頁面。
在下方範例中,這些參數的指定引數會產生 FeatureView
,其中每個圖塊在特定縮放等級的最大地圖項目為 1500,每個圖塊的地圖項目密度是獨立的,且可達到 1500 的最大值,較小的多邊形會先精簡,較小的多邊形會位於較大的多邊形上方。
程式碼編輯器 (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'], });
在程式碼編輯器中執行上述程式碼片段,系統會產生匯出工作;執行工作即可啟動匯出作業。
FeatureView 素材資源位置
FeatureView
資產可在公開的資料目錄中找到,也可以在程式碼編輯器的「資產」分頁中找到個人資產。Data Catalog 中的所有相關 FeatureCollection
資產都有搭配的 FeatureView
資產,並提供一般適用的攝入設定。個人素材資源封存檔案會包含您建立的任何 FeatureView
素材資源。
將 FeatureView 素材資源匯入指令碼
您可以使用 Code Editor 資產對話方塊和個人資產項目中的按鈕,以及提供 FeatureView
資產 ID 做為 ui.Map.FeatureViewLayer
建構函式的輸入內容,將 FeatureView
資產匯入 Code Editor 指令碼。
Data Catalog 素材資源對話方塊
透過程式碼編輯器的搜尋列存取資料目錄表格資產對話方塊時,右下方會顯示「Import」按鈕,並顯示下拉式選單。在下拉式選單中,選取「Import FeatureView」。資產會包含在指令碼頂端的「Imports」部分。
個人資產對話方塊
個人 FeatureView
資產對話方塊 (可透過在 Code Editor 的「Assets」分頁標籤中選取資產存取),右上方有「Import」按鈕。啟用此按鈕後,資產就會加入指令碼頂端的「Imports」部分。你也可以使用「資產」分頁中,在素材資源上方游標移過時顯示的匯入捷徑按鈕 (向右箭頭圖示)。
資產 ID
FeatureView
資產具有 ID,可做為輸入內容提供給 ui.Map.FeatureViewLayer
建構函式,讓您在指令碼中存取該資產。您可以在 Data Catalog 資產頁面和 Code Editor 中的資產對話方塊中,找到預先建構的匯入程式碼片段。
圖 1. Data Catalog 資產對話方塊,強調 FeatureView
匯入方法。
FeatureView 中繼資料
FeatureView
資訊和中繼資料可在上述「FeatureView 資產位置」一節中提及的資產對話方塊中取得。除了可與來源 FeatureCollection
共用的說明和屬性外,FeatureView
還有五個專屬屬性。這些參數包括「建立 FeatureView」一節所述的擷取參數設定,以及 sourceVersion
,這是 FeatureView
所建立的資料表資產的「上次修改」時間戳記。上圖 1 顯示 Data Catalog 資產對話方塊中的 FeatureView
專屬屬性。如同其他資產,您也可以透過程式輔助方式,從 ee.data.getAsset
傳回的字典擷取屬性。
以圖表呈現 FeatureView
您可以在程式碼編輯器、Earth Engine 應用程式和 Google 地圖中,將 FeatureView
物件視覺化。
程式碼編輯器
程式碼編輯器包含 ui.Map.FeatureViewLayer
元件,可在地圖上呈現 FeatureView
素材資源。以下範例會定義 FeatureView
資產 ID,將資產匯入為 FeatureViewLayer
,並在地圖上顯示。
程式碼編輯器 (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);
樣式
您可以將樣式字典傳遞至 ui.Map.FeatureViewLayer
函式,或使用 setVisParams
方法將樣式字典新增至圖層,藉此設定 FeatureViewLayer
的樣式。以下是樣式設定的範例:
- 根據「MARINE」屬性 (受保護區是否完全或部分位於海洋環境內) 的輪廓顏色,
- 填滿顏色:根據「IUCN_CAT」屬性 (國際自然保護聯盟 (IUCN) 類別),以及
- 根據「REP_AREA」屬性定義的受保護區域大小,設定填充不透明度。
如要進一步瞭解可用的樣式選項,請參閱 FeatureView 樣式頁面。
程式碼編輯器 (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, });
篩選
您可以根據地圖項目的屬性,套用篩選規則來選擇性地設定樣式或隱藏地圖項目。舉例來說,如要篩除小於滑桿小工具指定區域的特定區域,您可以使用以下程式碼。如要進一步瞭解 rules
欄位,請參閱 FeatureView
樣式頁面中的「特定規則」一節。
程式碼編輯器 (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);
圖 2:FeatureViewLayer
使用滑桿小工具的視覺化資料,隱藏小於指定區域的功能。
Google Maps API
使用 Google 地圖 API 將 FeatureView
資產視覺化,需要四個步驟:使用 ee.data.getFeatureViewTilesKey
取得圖塊鍵、將其傳遞至 FeatureViewTileSource
的例項、建構 ee.layer.ImageOverlay
,然後將疊加層新增至 google.maps.Map
例項。以下是用於在 JavaScript 中建構 ImageOverlay
的程式碼範例。
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);
完成後,您可以將疊加層新增至 google.maps.Map
執行個體,如下所示。
// embeddedMap is your google.maps.Map instance.
embeddedMap.overlayMapTypes.setAt(0, overlay);
檢查 FeatureView
您可以使用檢查器工具檢查新增至預設 Code Editor 對應圖的 FeatureViewLayer
圖層。功能與 FeatureCollection
相同。請注意,系統針對點選位置傳回的結果,只會列出目前縮放等級可見的功能。系統會在 FeatureView
匯出程序中簡化檢查的要素,因此不會顯示這些要素的幾何圖形。
圖 3. 檢查 FeatureViewLayer
。檢查器會顯示圖層、地圖項目、資產 ID 和視覺化參數。