Existe uma maneira de calcular um campo classificado com números sequenciais? Eu vi a classe de recurso de classificação para calcular o campo de identificação sequencial usando o ArcGIS Field Calculator? que descreve como calcular números sequenciais, mas isso é sempre calculado na ordem do FID, não na ordem classificada.
#Pre-logic Script Code:
rec=0
def autoIncrement():
global rec
pStart = 1
pInterval = 1
if (rec == 0):
rec = pStart
else:
rec += pInterval
return rec
#Expression:
autoIncrement()
Um exemplo do que estou tentando fazer. Usei uma classificação avançada para classificar por ano, mês, dia e agora quero ter números sequenciais no Seq
campo. Você verá que meu OBJECTID
campo não está em ordem, portanto o código acima não funcionará.
Isso pode ser feito na calculadora de campo ou usando um cursor de atualização no arcpy?
Respostas:
"Solução" com 2 campos classificados (crescente):
--------------------------------------
VERSÃO ATUALIZADA:
-----------------------
leva 1,5 segundos para concluir a tarefa em 10000 registros. O original leva um pouco mais de 2 minutos
fonte
Este é um processo de duas etapas e, como resultado, a Calculadora de Campo não é adequada. É melhor executar isso em um script independente. No entanto, isso pode ser feito na calculadora de campo, desde que você use um truque. Você precisa usar um cursor para carregar todos os valores em um dicionário global de uma lista classificada, mas apenas durante o cálculo do primeiro registro. Para todos os outros registros, você deve pular a criação do dicionário para evitar reler constantemente a tabela inteira para cada linha.
Os três valores do campo devem ser colocados em uma tupla para atuar como uma chave que será classificada corretamente. Assumirei que todos os valores da combinação de 3 campos são exclusivos na tabela SamplePoint, mas adicionei o ObjectID para garantir que ele seja exclusivo. Você deve fornecer o nome do caminho e do arquivo shapefile na linha 8 (ou eu poderia usar a técnica que o FelixIP usa onde a primeira camada no mapa atual é usada). Se você deseja usar campos diferentes para uma chave, é necessário alterar a lista de campos na linha 10 e combiná-los com os campos de entrada nas linhas 3 e 15.
Eu também não recomendaria o uso de nomes de campos Ano, Mês e Dia, pois eles funcionam apenas em shapefiles e não são permitidos em bancos de dados geográficos. Um geodatabase mudará os nomes para Year_1, Month_1, Day_1 se você tentar adicioná-los à lista de campos nas propriedades da tabela.
Se o objetivo desta tabela é relacioná-la a outra classe de tabela / recurso em uma chave de vários campos, considere usar a ferramenta que criei no meu blog chamada Chave de Campo Múltiplo a Ferramenta Chave de Campo Único - Relacione Duas Camadas com Base em Mais de Um Campo
fonte
Eu tinha a mesma pergunta, mas para um problema mais simples, baseado em ter apenas um campo para classificar. Fui bem-sucedido com o seguinte script:
fonte