top of page

ArcMap 10.4: Gerando Números Aleatórios no Field Calculator

Você sabia que é possível somar valores aleatórios a um campo no ArcMap usando o Field Calculator em Python?


Por padrão, o ArcMap executa o bloco de código apenas uma vez, o que faz muitos acharem que o random não funciona.


Por exemplo, se você fizer:


def calc(valor):
     import random
     return valor + random.randint(1,20)

À primeira vista, pode parecer que o resultado exibirá um número aleatório entre 1 e 20 somado ao valor original. No entanto, o que ocorre é que a parte aleatória permanece idêntica em todas as feições, como se o sorteio tivesse congelado.


A solução é simples: o truque é se quiser um resultado diferente para cada feição, usar um outro campo numérico como semente.


def calc(valor, oid):
	import random
	random.seed(oid)
	return valor + random.randint(1,20)

A linha random.seed(oid) reinicializa o gerador de números aleatórios para cada feição, usando o valor único de um campo numérico do shapefile como base.


Basta agora calcular seus números aleatórios corretamente!


calc( !VEG_NATIVA! , !FID! )

Nesse exemplo, o campo VEG_NATIVA é o valor base, e o FID serve como semente para gerar um número aleatório exclusivo em cada feição do shapefile.


Veja como fica tudo no exemplo da imagem abaixo:


Aqui, os valores do campo AREANA2017 são calculados somando-se um número aleatório aos valores existentes no campo VEG_NATIVA.
Aqui, os valores do campo AREANA2017 são calculados somando-se um número aleatório aos valores existentes no campo VEG_NATIVA.

Compartilhe este conteúdo!

Comentários


Posts relacionados...

Corrigindo Pixels Zerados no ArcGIS

ArcMap 10.4 com Python: Numeração Sequencial por Seleção

Calcule a Área no ArcGIS

Redefinir a Elevação do Shapefile no ArcMap

Alterar Escala com Python no ArcGIS

Dynamic Text no ArcGIS

Data Driven Pages ArcGIS

Polígono para Raster no ArcGIS

bottom of page