Panoramica di FeatureView

Un FeatureView è una rappresentazione accelerata di sola visualizzazione di un FeatureCollection. A differenza di un FeatureCollection, i cui riquadri della mappa raster vengono generati in tempo reale, i riquadri raster di FeatureView vengono precomputati per fornire un rendering rapido. Oltre a eseguire il rendering più velocemente, gli asset FeatureView implementano la riduzione delle funzionalità in base al livello di zoom. L'effetto è che i set di dati densi potrebbero sembrare incomplete con lo zoom ridotto (le piccole funzionalità non vengono disegnate), ma un maggior numero di dati diventa visibile con lo zoom in, il che può migliorare l'estetica della mappa a livelli di zoom inferiori. Il comportamento di sfoltimento di un set di dati è controllato da diversi parametri di ottimizzazione che vengono impostati durante l'esportazione di un asset FeatureCollection in un asset FeatureView.

In quanto asset di sola visualizzazione, gli oggetti FeatureView non possono essere inclusi nei calcoli o nelle espressioni, ma possono essere visualizzati e ispezionati nell'editor di codice JavaScript e nelle app Earth Engine come FeatureViewLayer. Possono anche essere integrate nelle applicazioni dell'API Google Maps.

Creazione di una visualizzazione caratteristiche

La creazione di un FeatureView prevede la preparazione di un FeatureCollection con i tuoi dati, la chiamata della funzione Export.table.toFeatureView e l'avvio dell'attività di esportazione. L'esempio seguente mostra l'esportazione delle visualizzazioni del set di dati dei poligoni WDPA. Nella tua applicazione, utilizza qualsiasi set di dati FeatureCollection archiviato nel catalogo dati di Earth Engine o creane uno tuo caricando un set di dati vettoriali come risorsa di Earth Engine.

Un FeatureView può essere personalizzato utilizzando diversi parametri nella funzione Export.table.toFeatureView.

  • maxFeaturesPerTile: definisce il numero massimo di elementi visualizzati in un riquadro della mappa a un determinato livello di zoom. Utilizza questo parametro per ottimizzare per la velocità o la densità di funzionalità.
  • thinningStrategy: controlla se lo sfoltimento delle funzionalità per un determinato livello di zoom e una determinata mappa deve essere ottimizzato per una maggiore densità o per una maggiore coerenza della densità tra le mappe. Tieni presente che l'ottimizzazione per una densità più elevata può causare la netta separazione dei confini dei riquadri, poiché la densità di elementi per riquadro è indipendente.
  • thinningRanking: definisce la priorità dell'assottigliamento delle funzionalità. Ad esempio, puoi ottimizzare l'assottigliamento in modo da avere come target la conservazione di una determinata proprietà della funzionalità con valori elevati. In altre parole, man mano che diminuisci lo zoom, le funzionalità con un valore basso per la proprietà selezionata verranno assottigliate per prime, lasciando visibili quelle più importanti (in base alle tue regole).
  • zOrderRanking: definisce l'ordine z (ordine di sovrapposizione) degli elementi visualizzati sulla mappa. Questo parametro controlla la modalità di visualizzazione degli elementi in sovrapposizione consentendo di impostare regole di priorità in base alle proprietà degli elementi, al tipo di geometria e al livello di zoom. Ad esempio, puoi dare la priorità alle funzionalità con valori elevati di una determinata proprietà in modo che vengano sovrapposte alle funzionalità che si intersecano con valori bassi.

Per ulteriori dettagli su questi parametri e sui relativi argomenti accettati, consulta la FeatureView pagina Ottimizzazione.

Nell'esempio seguente, gli argomenti specificati per questi parametri producono un FeatureView in cui il numero massimo di elementi per tile a un determinato livello di zoom è 1500, la densità degli elementi per tile è indipendente e può raggiungere il massimo di 1500, i poligoni più piccoli vengono assottigliati per primi e i poligoni più piccoli si sovrappongono a quelli più grandi.

Editor di codice (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'],
});

L'esecuzione dello snippet di codice riportato sopra nell'editor di codice genererà un'attività di esportazione. Esegui l'attività per avviare l'esportazione.

Località degli asset FeatureView

Le risorse FeatureView sono disponibili nel Catalogo di dati pubblico e tra le tue risorse personali nella scheda Asset di Code Editor. Tutti gli asset FeatureCollection pertinenti nel Data Catalog hanno un asset FeatureView aggiuntivo con impostazioni di importazione applicabili in generale. L'archivio delle risorse personali includerà tutti gli FeatureView asset che crei.

Importazione di asset FeatureView negli script

Le risorse FeatureView possono essere importate negli script di Code Editor utilizzando i pulsanti nelle finestre di dialogo delle risorse di Code Editor e le voci delle risorse personali, nonché fornendo un ID risorsa FeatureView come input al costruttore ui.Map.FeatureViewLayer.

Finestra di dialogo della risorsa Data Catalog

Le finestre di dialogo delle risorse della tabella del Catalogo di dati, a cui si accede dalla barra di ricerca dell'editor di codice, hanno un pulsante Importa in basso a destra con un menu a discesa. Nel menu a discesa, seleziona "Importa FeatureView". La risorsa verrà inclusa nella sezione Importazioni nella parte superiore dello script.

Finestra di dialogo Asset personale

Le finestre di dialogo delle risorse FeatureView personali, a cui si accede selezionando una risorsa dalla scheda Risorse di Code Editor, hanno un pulsante Importa in alto a destra. L'attivazione del pulsante includerà l'asset nella sezione Importazioni nella parte superiore dello script. Puoi anche utilizzare il pulsante di scorciatoia per l'importazione (icona a forma di freccia rivolta verso destra) visualizzato quando passi il mouse sopra un asset nella scheda Risorse.

ID risorsa

Gli asset FeatureView hanno un ID che può essere fornito come input al constructor ui.Map.FeatureViewLayer, che ti consente di accedere all'asset nel tuo script. Gli snippet di importazione precostituiti sono disponibili nelle pagine delle risorse e nelle finestre di dialogo delle risorse di Data Catalog nell'editor di codice.

Figura 1. Dialogo della risorsa Data Catalog che mette in evidenza i metodi di importazione FeatureView.

Metadati di FeatureView

Le informazioni e i metadati di FeatureView sono disponibili nelle finestre di dialogo delle risorse menzionate nella sezione Località delle risorse FeatureView sopra. Oltre alla descrizione e alle proprietà che possono essere condivise con la sorgente FeatureCollection, esistono cinque proprietà uniche di FeatureView. Sono incluse le impostazioni dei parametri di importazione descritte nella sezione Creare una FeatureView e sourceVersion, ovvero il timestamp "ultima modifica" della risorsa tabella da cui è stato creato FeatureView. La Figura 1 sopra mostra le proprietà specifiche di FeatureView in una finestra di dialogo dell'asset di Data Catalog. Come per gli altri asset, puoi anche recuperare le proprietà in modo programmatico dal dizionario restituito da ee.data.getAsset.

Visualizzazione di una visualizzazione caratteristiche

Un oggetto FeatureView può essere visualizzato in Code Editor, nelle app Earth Engine e in Google Maps.

Editor di codice

L'editor di codice include il componente ui.Map.FeatureViewLayer per visualizzare gli assetFeatureView su una mappa. L'esempio seguente definisce un ID risorsa FeatureView, importa la risorsa come FeatureViewLayer e la mostra sulla mappa.

Editor di codice (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);

Stili

Puoi applicare uno stile a FeatureViewLayer passando un dizionario di stili alla funzione ui.Map.FeatureViewLayer o aggiungendoli a un livello utilizzando il metodo setVisParams. Di seguito è riportato un esempio che applica stili a:

  • colori di contorno in base alla proprietà "MARINE" (se l'area protetta rientra totalmente o parzialmente nell'ambiente marino),
  • colore di riempimento in base alla proprietà "IUCN_CAT" (categoria della International Union for Conservation of Nature (IUCN)) e
  • Opacità del riempimento in base alle dimensioni dell'area protetta definita dalla proprietà "REP_AREA".

Visita la pagina Stili di FeatureView per ulteriori dettagli sulle opzioni di stile disponibili.

Editor di codice (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,
});

Filtri

Le regole di filtro possono essere applicate per applicare stili o nascondere in modo selettivo le funzionalità in base alle loro proprietà. Ad esempio, per escludere le aree protette più piccole di una determinata area indicata da un widget di scorrimento, puoi utilizzare il seguente codice. Per saperne di più sul campo rules, consulta la sezione Regole specifiche della pagina Stili FeatureView.

Editor di codice (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);

Figura 2. Visualizzazione FeatureViewLayer con un widget cursore per nascondere gli elementi più piccoli dell'area specificata.

API di Google Maps

La procedura per visualizzare una risorsa FeatureView utilizzando l'API Google Maps è composta da quattro fasi: ottieni una chiave delle tessere utilizzando ee.data.getFeatureViewTilesKey, passala a un'istanza di FeatureViewTileSource, crea un ee.layer.ImageOverlay e poi aggiungi l'overlay all'istanza google.maps.Map. Di seguito è riportato un codice campione per la creazione di ImageOverlay in JavaScript.

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);

Al termine, puoi aggiungere l'overlay all'istanza google.maps.Map come mostrato di seguito.

// embeddedMap is your google.maps.Map instance.
embeddedMap.overlayMapTypes.setAt(0, overlay);

Ispezione di una visualizzazione caratteristiche

Un livello FeatureViewLayer aggiunto alla mappa di Editor di codice predefinita può essere esaminato utilizzando lo strumento di ispezione. La funzionalità è la stessa di un FeatureCollection. Tieni presente che i risultati restituiti per la località su cui è stato fatto clic elencano solo le funzionalità visibili al livello di zoom corrente. Le geometrie non vengono mostrate per gli elementi ispezionati poiché vengono semplificate nell'ambito del processo di esportazione di FeatureView.

Figura 3. Sto controllando un FeatureViewLayer. L'ispettore mostra il livello, le caratteristiche, l'ID risorsa e i parametri di visualizzazione.