Instrução

preencher um campo da camada de feição com base em atributos de outro utilizando o Arcade no ArcGIS Online

Last Published: February 22, 2024

Descrição

No ArcGIS Online, os campos em uma camada podem ser preenchidos com valores de atributo de outra camada de feição utilizando uma expressão Arcade. Esse método é útil para melhorar a integridade dos dados e permitir a análise sincronizada entre camadas.

Neste artigo, duas camadas de feição chamadas Cities e ClimateData são utilizadas. A camada de feição Cities contém dois campos chamados CityAddress e ClimateLocationID. A camada de feição ClimateData também contém dois campos chamados ClimateAddress e LocationID. Quando os valores do campo CityAddress correspondem aos do ClimateAddress, os valores de LocationID são preenchidos automaticamente no campo ClimateLocationID.

As imagens abaixo exibem a tabela de atributos para ambas as camadas de feição Cities e ClimateData.

Tabela de atributos exibindo a camada de feição Cities
Tabela de atributos exibindo a camada de feição ClimateData

Solução ou Solução Provisória

  1. No ArcGIS Online, clique na camada de feição hospedada. Na página de detalhes do item, clique na guia Dados.
  2. Na visualização Tabela, clique no cabeçalho do campo e selecione Calcular. Neste exemplo, ClimateLocationID é selecionado.
  3. Na caixa de diálogo Calcular campo, clique em Arcade.
  4. Na caixa de diálogo Calculadora Arcade, especifique o campo Expressão da seguinte maneira:
var <variable1> = FeatureSetByPortalItem(Portal('https://www.arcgis.com'), '<Item_ID>', <layer_index), ['*'], false);
  1. Substitua <variable1> pelo nome da variável desejada. Neste exemplo, climateDataLayer é usado.
  2. Substitua <Item_ID> pelo ID do item da camada hospedada.
  3. Substitua <layer_index> pelo valor 0 ou 1. A primeira camada tem um índice de 0, enquanto a segunda camada tem um índice de 1. Neste exemplo, 0 é usado como a primeira camada a ser preenchida.
var <variable2> = $feature['<field_name1>']; 

for (var<variable3> in <variable1> ) {
 var <variable4> = climateFeature['<field_name2>'];
 
    if <variable2> == <variable4>) {
        return <varibale3>['<field_name3>'];
    }
}

null
  1. Substitua <variable2>, <variable3> e <variable 4> pelo nome da variável desejada. Neste exemplo, cityAddress, climateFeature e climate Address são usados.
  2. Substitua <field_name1> pelo nome do campo da primeira camada de feição. Neste exemplo, CityAddress é usado.
  3. Substitua <field_name2> pelo nome do campo da segunda camada de feição. Neste exemplo, ClimateAddress é usado.
  4. Substitua <field_name3> pelo nome do campo da segunda camada de feição para extrair os valores do campo. Neste exemplo, LocationID é usado.

Abaixo está o código de trabalho completo da expressão Arcade.

var climateDataLayer = FeatureSetByPortalItem(Portal('https://www.arcgis.com'), 'fd3161f30d6f47aba8b58f6fcb5ed488', 0, ['*'], false);

var cityAddress = $feature['CityAddress']; 

for (var climateFeature in climateDataLayer) {
    var climateAddress = climateFeature['ClimateAddress'];

    if (cityAddress == climateAddress) {
        return climateFeature['LocationID']; 
    }
}

null
  1. Clique em Testar para verificar a expressão e clique em OK para aplicar a consulta.
Configuração de expressão do Arcade.jpg

A tabela de atributos abaixo exibe o campo ClimateLocationID da camada de feição Cidades preenchida com valores do campo LocationID da camada de feição ClimateData quando os valores do campo CityAddress correspondem ao ClimateAddress.

Campo ClimateLocationID preenchido pelos valores do campo LocationID.png

ID do Artigo: 000031934

Obtenha suporte com IA

Resolva seu problema rapidamente com o chatbot de IA de suporte da Esri.

Comece a conversar agora

Obtenha ajuda de especialistas do ArcGIS

Entre em contato com Suporte Técnico

Comece a conversar agora

Ir para as opções de download