4 votos

Cómo asignar Identificadores a los pueblos que se pueden tener nombres duplicados?

Tengo más de 150 aldea de puntos, cada uno con un pueblo de nombre de atributo village. El mismo nombre del pueblo puede aparecer en varios puntos.

Quiero asignar Identificadores individuales para cada nombre del pueblo, decir vill_A = 1, vill_B = 2, y así sucesivamente. Traté de calcular [village], pero no funcionó.

Alguna sugerencia?

5voto

user2923 Puntos 21

La mejor manera de manejar los valores únicos donde no pueden ser duplicados, es el uso de un diccionario de Python para vincular el nombre del Pueblo con el número de identificación.

Aquí es un ejemplo de Python campo de cálculo bloque de código:

villages = {}
id = 1
def GetID(village):
    global villages
    global id
    if not village in villages:
        villages[village] = id
        id += 1
    return villages[village]

A continuación, simplemente llame GetID(!VillageNameField!) para la expresión.

Esto creará un vacío de Python diccionario llamado villages. Luego, para cada registro en el Pueblo de Nombre de Campo va a recordar si ya ha asignado un número de identificación para que el pueblo basado en si ya existe en el diccionario. Si el pueblo ya no existe en el diccionario se le asignará la siguiente secuencial número de identificación. Finalmente, devuelve el número de id de asociado, con el pueblo, desde el diccionario de si había o se tenía que añadir.

4voto

Aaron Puntos 25882

Estoy de acuerdo con @Brad Nesom que el cálculo de un campo basado en la FID o OBJECTID es la forma más sencilla, aunque si por alguna razón usted necesita un python enfoque en el campo de la calculadora, pruebe este cálculo en un nuevo campo de entero:

rec=0   
def autoIncrement():   
 global rec 
 pStart = 1  
 pInterval = 1   
 if (rec == 0):     
  rec = pStart     
 else:  
  rec += pInterval   
 return rec

Añadir a la casilla de abajo el bloque de código:

autoIncrement()

Pulse OK

3voto

Niall C. Puntos 1234

Probablemente la forma más rápida es,

  1. crear un nuevo campo para los valores. es decir, [vill_id]
  2. cacluate la oid (FID) en el vill_id.

enter image description here

0voto

Tim C Puntos 25946

Si usted está buscando para cualquier solución de programación, usted puede pensar acerca de la creación de un diccionario. IDictionary<string, List<int>> dictionary = new Dictionary<string, List<int>>();

Aquí,

  • Clave = Village_name
  • Valor = Lista de oid

Ahora puede asignar valores de todos estos oid o lo que quieras.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X