Um FeatureView
é uma representação acelerada de visualização somente de um
FeatureCollection
.
Ao contrário de um FeatureCollection
, cujos blocos de mapa raster são gerados em tempo real, os blocos de mapa raster FeatureView
são pré-calculados para renderização rápida.
Além de renderizar mais rápido, os recursos FeatureView
implementam o recurso de redução
de detalhes de acordo com o nível de zoom. O efeito é que os conjuntos de dados densos podem parecer incompletos quando o zoom está desativado (os elementos pequenos não são desenhados), mas mais dados ficam visíveis quando você aumenta o zoom, o que pode melhorar a estética do mapa em níveis de zoom mais baixos. O comportamento de redução de um conjunto de dados é controlado por vários
parâmetros de otimização
definidos durante a exportação de um FeatureCollection
para um recurso FeatureView
.
Como um recurso somente de leitura, os objetos FeatureView
não podem ser incluídos em computações ou expressões, mas podem ser visualizados e inspecionados no Editor de código JavaScript e nos apps do Earth Engine como um FeatureViewLayer
. Eles também podem ser integrados aos aplicativos da API Google Maps.
Como criar uma FeatureView
A criação de um FeatureView
envolve preparar um FeatureCollection
com seus
dados, chamar a função Export.table.toFeatureView
e iniciar a
tarefa de exportação. O exemplo a seguir demonstra como exportar visualizações do conjunto de dados de polígonos da WDPA.
No seu próprio aplicativo, use qualquer conjunto de dados FeatureCollection
arquivado no
catálogo de dados do Earth Engine ou crie o seu próprio conjunto de dados
fazendo upload de um conjunto de dados vetorial
como um recurso do Earth Engine.
Um FeatureView
pode ser personalizado usando vários parâmetros na
função Export.table.toFeatureView
.
maxFeaturesPerTile
: define o número máximo de elementos exibidos em um bloco de mapa em um determinado nível de zoom. Use esse parâmetro para otimizar a velocidade ou a densidade de recursos.thinningStrategy
: controla se o recurso de redução de detalhes de um determinado bloco e o nível de zoom precisam ser otimizados para maior densidade ou consistência na densidade entre os blocos. A otimização para densidades mais altas pode fazer com que os limites do bloco fiquem distintos, já que a densidade de elementos por bloco é independente.thinningRanking
: define a prioridade de redução de recursos. Por exemplo, você pode otimizar o alisamento para segmentar a retenção de uma propriedade de recurso específica com valores altos. Em outras palavras, à medida que você diminui o zoom, os recursos que têm um valor baixo para a propriedade selecionada são reduzidos primeiro, deixando os mais importantes (de acordo com suas regras) visíveis.zOrderRanking
: define a ordem z (ordem de pilha) dos elementos exibidos no mapa. Esse parâmetro controla como os elementos sobrepostos são exibidos, permitindo que você defina regras de prioridade com base nas propriedades do elemento, no tipo de geometria e no nível de zoom. Por exemplo, é possível priorizar recursos com valores altos de uma propriedade específica para que eles se sobreponham a recursos que se cruzam com valores baixos.
Consulte a
página de otimização de FeatureView
para mais detalhes sobre esses parâmetros e os argumentos aceitos.
No exemplo abaixo, os argumentos especificados para esses parâmetros produzem um
FeatureView
em que os elementos máximos por bloco em um determinado nível de zoom são
1.500, a densidade de elementos por bloco é independente e pode alcançar
o máximo de 1.500, os polígonos menores são reduzidos primeiro e os menores
ficam sobre os maiores.
Editor de código (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'], });
A execução do snippet de código acima no editor de código gera uma tarefa de exportação. Execute a tarefa para iniciar a exportação.
Localização de recursos do FeatureView
Os recursos FeatureView
podem ser encontrados no Data Catalog público e entre seus recursos pessoais na guia Resources do Editor de código. Todos os recursos FeatureCollection
relevantes no Data Catalog
têm um recurso FeatureView
complementar com configurações de transferência
geralmente aplicáveis. O arquivo de recursos pessoais inclui todos os
FeatureView
que você cria.
Importar recursos do FeatureView para scripts
Os recursos FeatureView
podem ser importados para scripts do Code Editor usando
botões nas caixas de diálogo de recursos do Code Editor e entradas de recursos pessoais, além de
fornecer um ID de recurso FeatureView
como entrada para o construtor
ui.Map.FeatureViewLayer
.
Caixa de diálogo de recursos do Data Catalog
As caixas de diálogo de recursos de tabela do Data Catalog, acessadas na barra de pesquisa do editor de código, têm um botão Importar no canto inferior direito com um menu suspenso. No menu suspenso, selecione "Import FeatureView". O recurso será incluído na seção Importações na parte de cima do script.
Caixa de diálogo de recursos pessoais
As caixas de diálogo de recursos FeatureView
pessoais, acessadas selecionando um recurso na
guia Recursos do Editor de código, têm um botão Importar no canto superior direito.
A ativação do botão inclui o recurso na seção Imports
na parte de cima do script. Também é possível usar o botão de atalho de importação
(ícone de seta para a direita) que aparece quando você passa o cursor sobre um recurso na guia
Recursos.
Código do recurso
Os recursos FeatureView
têm um ID que pode ser fornecido como entrada para o
construtor ui.Map.FeatureViewLayer
, o que dá acesso ao recurso no
script. Os snippets de importação pré-construídos podem ser encontrados nas páginas de recursos do Data Catalog e nas caixas de diálogo de recursos no editor de código.
Figura 1. Caixa de diálogo de recursos do Data Catalog destacando os métodos de importação FeatureView
.
Metadados do FeatureView
As informações e os metadados de FeatureView
estão disponíveis nas caixas de diálogo de recursos
mencionadas na seção
Locais de recursos do FeatureView
acima. Além da descrição e das propriedades que podem ser compartilhadas
com a origem FeatureCollection
, há cinco propriedades exclusivas para
FeatureView
. Elas incluem as configurações de parâmetro de transferência descritas na seção Como criar uma visualização de recurso e sourceVersion
, que é o carimbo de data/hora "última modificação" do recurso de tabela em que a FeatureView
foi criada. A Figura 1 acima mostra
propriedades específicas de FeatureView
em uma caixa de diálogo de recurso do Data Catalog. Assim como outros
recursos, você também pode buscar propriedades de forma programática no dicionário
retornado por ee.data.getAsset
.
Como visualizar um FeatureView
Um objeto FeatureView
pode ser visualizado no Code Editor, nos apps do Earth Engine e no Google Maps.
Editor de código
O editor de código inclui o componente ui.Map.FeatureViewLayer
para visualizar
recursos FeatureView
em um mapa. O exemplo a seguir define um ID de recurso FeatureView
, importa o recurso como FeatureViewLayer
e o exibe no mapa.
Editor de código (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);
Estilo
É possível estilizar o FeatureViewLayer
transmitindo um dicionário de estilo para a função ui.Map.FeatureViewLayer
ou adicionando-o a uma camada usando o método setVisParams
. Confira abaixo um exemplo que define estilos:
- cores de contorno com base na propriedade "MARINE" (se a área protegida está totalmente ou parcialmente no ambiente marinho),
- cor de preenchimento com base na propriedade "IUCN_CAT" (categoria da União Internacional pela Conservação da Natureza (IUCN, na sigla em inglês)) e
- preencher a opacidade com base no tamanho da área protegida definida pela propriedade "REP_AREA".
Acesse a página Estilo do FeatureView para mais detalhes sobre as opções de estilo disponíveis.
Editor de código (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, });
Filtragem
As regras de filtro podem ser aplicadas para estilizar ou ocultar recursos seletivamente com base nas
propriedades deles. Por exemplo, para filtrar áreas protegidas menores que uma determinada
área fornecida por um widget de controle deslizante, use o seguinte código. Consulte a seção
Regras específicas
da página Estilo FeatureView
para saber mais sobre o campo rules
.
Editor de código (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. Visualização FeatureViewLayer
com um widget de controle deslizante para ocultar recursos
menores que a área especificada.
API Google Maps
O processo de visualização de um recurso FeatureView
usando a API Google Maps é composto por quatro partes: consiga uma chave de blocos usando ee.data.getFeatureViewTilesKey
, transmita-a a uma instância de FeatureViewTileSource
, construa um ee.layer.ImageOverlay
e adicione a sobreposição à instância google.maps.Map
. O exemplo de código para construir
o ImageOverlay
em JavaScript é mostrado abaixo.
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);
Depois disso, adicione a sobreposição à instância google.maps.Map
,
conforme mostrado abaixo.
// embeddedMap is your google.maps.Map instance.
embeddedMap.overlayMapTypes.setAt(0, overlay);
Como inspecionar um FeatureView
Uma camada FeatureViewLayer
adicionada ao mapa padrão do Code Editor pode ser
inspecionada usando a
ferramenta Inspector.
A funcionalidade é a mesma de um FeatureCollection
. Os resultados retornados para o local clicado listam apenas os elementos que estão visíveis no nível de zoom atual. As geometrias não são mostradas para os elementos inspecionados,
porque são simplificadas como parte do processo de exportação FeatureView
.
Figura 3. Inspeção de um FeatureViewLayer
. O inspetor mostra a camada, os elementos, o ID do recurso e os parâmetros de visualização.