Estou usando o ArcGIS 10.2 for Desktop, e eu tenho procurado neste site, e parece que ainda não consigo descobrir minha resposta. Muito novo para VBA e Python, mas muitos anos com ArcGIS. Eu sei que posso fazer isso da maneira mais lenta com Selecionar por atributos, mas é demorado.
Estou tentando uma junção espacial entre os casos de uma doença (camada de pontos) e os setores censitários dos EUA (camada de polígono). Isso requer dados de contagem. Para cada ponto / caso, eu tenho um campo chamado YEAR com períodos de 2001 a 2012, dependendo do ano em que o caso ocorreu. Eu preciso de uma coluna de contagem para cada ano. Por exemplo, o primeiro que eu estou chamando de COUNT01. Se a data do caso em ANO for 2001, COUNT01 terá 1. Se for outro ano (2002-2012), será necessário um zero. Terei colunas COUNT02, COUNT03 ... COUNT12. Não pode ter um valor "Nulo".
Aqui está o que eu tentei até agora
E aqui está a aparência dos dados no Arc.
vba
evbscript
por umapython
tag. Embora ainda não tenha desaparecido, o VBScript está sendo preterido . Espero que seja fácil fazer isso com o analisador Python depois de fornecer uma descrição mais detalhada, que inclui uma imagem / tabela de algumas linhas de amostra mostrando a entrada real e a saída esperada. YEAR é um campo de data ou um número inteiro que contém valores correspondentes a anos?Respostas:
Eu acho que é isso que você quer .... usando python, você poderia fazer o seguinte (assume que os campos YEAR e COUNT0X são inteiros)
Observe o Python usando indentação para analisar o código e garantir que o espaçamento esteja correto.
fonte
if (int(year) == yearVal):
, ou outras (consulte: informit.com/articles/article.aspx?p=459269&seqNum=7 ).Essa resposta é essencialmente a mesma listada acima, no entanto, é uma maneira de não precisar usar o bloco de código ... para o campo Count01, você configuraria o analisador para Python e, em seguida, seu cálculo para
A maneira como se lê é: Defina o campo como 1 se o campo ANO for 2001, se não for 2001, defina-o como 0 ...
Se você tiver várias condições if, poderá aninhar as 2º (e subsequentes) condições "if" dentro da instrução else, como esta ...
A maneira como se lê é: Defina o campo como 1 se o campo ANO for 2001, se não for 2001, defina-o como 2 se for 2002, se não for, defina-o como 0 ...
fonte
1 if !YEAR! == 2001 else (2 if !YEAR! == 2002 else (3 if !YEAR! == 2003 else 0))
Se você estiver usando o VBScript, seu cálculo de campo foi configurado incorretamente. Em primeiro lugar, eu não usaria uma variável que é o nome do campo, isso é confuso, use um nome diferente para que fique claro o que você estava definindo. Seu "endif" estava errado, deveria ser "end if" e seu código deveria estar na seção de script pré-lógico. A maneira correta de configurar isso é mostrada abaixo. Mas, como os outros disseram, tente não usar o VBScript, pois as ESRI estão empenhadas em se livrar dele em favor do Python.
fonte