3 votos

Agregando "0" al frente de todos los valores en la columna usando la Calculadora de campos de ArcGIS

En ArcInfo 10.1 tengo una tabla para cada estado con valores de códigos postales. Los códigos postales de 5 dígitos que comienzan con "0" se han reducido a 4 dígitos. No puedo averiguar cómo agregar un "0" al principio de todos los valores en la tabla. He intentado varias cálculos de campo pero simplemente no logro hacerlo bien.

13voto

Hotpepper Puntos 613

Como mencionó Brian, deberá almacenar los datos en un campo de texto. Luego, el cálculo del campo es: right("00000" + [Existing_ZIP_CODE_FIELD],5)

esto asegurará que tenga todos los ceros iniciales necesarios hasta 5 caracteres.

11voto

user2923 Puntos 21

Hasta donde sé, si estás almacenando códigos postales en un campo numérico (entero, flotante, etc.) siempre eliminará el cero inicial. La única forma que he encontrado de lidiar con esto es almacenar los códigos postales en una columna de texto en su lugar.

2voto

kooshmoose Puntos 392

Como @Brian ha dicho, el campo tendrá que ser de tipo texto para mantener el cero a la izquierda. Aquí tienes un ejemplo rápido y básico en python:

import arcpy

#añadir ruta al archivo de forma, clase de entidad
fc = "..."

arcpy.AddField_management(fc, "ZIP5", "TEXT", "", "", 5)

rows = arcpy.UpdateCursor(fc)
for row in rows:
    #row.ZIP4 debería ser cambiado al campo
    #con tu CÓDIGO POSTAL, por ejemplo: row.ZIP_CODE
    new_value = str(row.ZIP4)[:5].rjust(5,"0")
    row.ZIP5_2 = new_value
    rows.updateRow(row)
del row
del rows

Esto hace uso de UpdateCursor, Add Field (Data Management), y formato de cadena en Python, particularmente .rjust()

1voto

AngryHacker Puntos 18835

Creo que Cómo: Mantener ceros iniciales para códigos postales en tablas de atributos de ArcGIS tiene la información que necesitas sobre cómo mantener ceros iniciales para el campo de código postal.

Los códigos postales son exclusivamente números, y a menudo se almacenan en un campo numérico (formateado). Cuando se ingresa un código postal con ceros iniciales en un campo numérico, los ceros iniciales se omiten, creando así un código postal incorrecto. ArcMap intenta igualar el tipo de dato con los tipos de campo adecuados para las tablas importadas, a menudo haciendo que los códigos postales se designen a un campo numérico.

1voto

Dave Moore Puntos 1633

Usando python no el campo calculado pero aún funciona.

Utilizado para añadir dinámicamente ceros principales a un campo basado en el número deseado de ceros principales y la longitud de la cadena con manejo básico de errores

Por ejemplo:

  • 2 = 00002
  • 89 = 00089
  • 187 = 00187
  • 2098 = 02098

Note que el campo debe ser Texto de lo contrario no tiene sentido ejecutar esto.

Ejecutar en ArcMap

fc_name = 'NOMBRE'
fields = ["NOMBRE_CAMPO"]

longitud_deseada = 5

with arcpy.da.UpdateCursor(fc_name, fields) as cursor:
    for row in cursor:
        if row[0].isdigit():
            if len(row[0]) < longitud_deseada:

                row[0] = row[0].zfill(longitud_deseada)
                print row
                cursor.updateRow(row)

            elif len(row[0]) > longitud_deseada:
                print ("> Longitud - Verificar manualmente: " + row[0])
        else:
            print ("NAN - Verificar manualmente: " + row[0])

print ("Terminado")

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