ArcGIS Desktop

  • ArcGIS Pro
  • ArcMap

  • My Profile
  • Ayuda
  • Sign Out
ArcGIS Desktop

ArcGIS Online

La plataforma de representación cartográfica para tu organización

ArcGIS Desktop

Un completo SIG profesional

ArcGIS Enterprise

SIG en tu empresa

ArcGIS Developers

Herramientas para crear aplicaciones basadas en la ubicación

ArcGIS Solutions

Plantillas de aplicaciones y mapas gratuitas para tu sector

ArcGIS Marketplace

Obtén aplicaciones y datos para tu organización.

  • Documentación
  • Soporte
Esri
  • Iniciar sesión
user
  • Mi perfil
  • Cerrar sesión

ArcMap

  • Inicio
  • Introducción
  • Cartografiar
  • Analizar
  • Administrar datos
  • Herramientas
  • Extensiones

Validar nombres de tabla y de campo en Python

  • Validar nombres de tabla
  • Validar nombres de campo

Validar nombres de tabla

Las geodatabases utilizan diversos sistemas de administración de bases de datos relacionales (RDBMS) para mantener las muchas tablas que componen una geodatabase. Todas las tablas de una geodatabase deben tener un nombre válido, de modo que es esencial un mecanismo para comprobar si un nombre de tabla es válido al crear datos en una geodatabase. Con la función ValidateTableName(), un script puede determinar si un nombre específico es válido para un espacio de trabajo dado.

Los siguientes son errores de nombre de tablas que se validarán:

  • La tabla comparte su nombre con una palabra reservada por la fuente de datos (por ejemplo, Table).
  • La tabla contiene un carácter no válido.
  • La tabla tiene un carácter inicial no válido (por ejemplo, con un número como primer carácter).
Nota:

La función ValidateTableName no determina que el nombre especificado sea único para el espacio de trabajo especificado. La función Exists puede comprobar si el nombre de tabla es único para un espacio de trabajo determinado.

FunciónExplicación

ValidateTableName(name, {workspace})

Toma un nombre de tabla y una ruta de acceso de espacio de trabajo y devuelve un nombre de tabla válido para el espacio de trabajo

ValidateTableName Función

Especificar el espacio de trabajo como un parámetro permite a ArcPy comprobar todos los nombres de tabla existentes y determinar si hay restricciones de denominación impuestos por el espacio de trabajo de salida. Si el espacio de trabajo de salida es un RDBMS, puede tener palabras reservadas que no se puedan utilizar en un nombre de tabla. También puede tener caracteres no válidos que no se pueden utilizar en una tabla o nombre de campo. Todos los caracteres no válidos se reemplazan por un guion bajo (_). ValidateTableName devuelve una cadena de caracteres que representa un nombre de tabla válido, que puede ser igual que el nombre de entrada si el nombre de entrada es válido. El ejemplo siguiente garantiza que la nueva clase de entidad de salida creada por la herramienta Copiar entidades tenga un nombre único válido en cualquier geodatabase:

"""Move all shapefiles from a folder into a geodatabase"""
import arcpy
# Set the workspace. List all of the shapefiles
arcpy.env.workspace = "d:/St_Johns"
fcs = arcpy.ListFeatureClasses("*")
# Set the workspace to SDE for ValidateTableName
arcpy.env.workspace = "Database Connections/Bluestar.sde"
# For each feature class name
for fc in fcs: 
    # Validate the output name so it is valid
    outfc = arcpy.ValidateTableName(fc)
    # Copy the features from the workspace to a geodatabase
    arcpy.CopyFeatures_management(fc, outfc)

Validar nombres de campo

Cada base de datos puede tener restricciones de denominación para los nombres de campo de una tabla. Los objetos tales como las clases de entidad o las clases de relación se almacenan como tablas en un RDBMS, de modo que estas restricciones afectan a algo más que a tablas independientes. Estas restricciones pueden o no ser comunes entre varios sistemas de bases de datos, de modo que los scripts deben comprobar todos los nuevos nombres de campo para asegurarse de que no se produzca un error en una herramienta durante la ejecución.

Los siguientes son errores de nombre de campo que se validarán:

  • El campo comparte su nombre con una palabra reservada por la fuente de datos (por ejemplo, Table).
  • El campo comparte su nombre con un campo definido previamente.
  • El campo contiene un carácter no válido (por ejemplo, *).
  • El nombre de campo excede la longitud máxima de la fuente de datos para los nombres de campo.

FunciónExplicación

ValidateFieldName(name, {workspace})

Acepta una cadena de caracteres (nombre de campo) y una ruta de acceso de espacio de trabajo, y devuelve un nombre de campo válido basado en las restricciones de denominación de la geodatabase de salida

ValidateFieldName Función

El ejemplo siguiente garantiza que se agrega un campo, independientemente del nombre de entrada, utilizando la función ValidateFieldName:

"""
  Create a new numeric field containing the ratio of polygon area to
  polygon perimeter. Two arguments, a feature class and field name,
  are expected.
"""
# Define a pair of simple exceptions for error handling
class ShapeError(Exception):
    pass
class FieldError(Exception):
    pass
import arcpy
import os
try:
    # Get the input feature class and make sure it contains polygons
    input = arcpy.GetParameterAsText(0)
    desc = arcpy.Describe(input)
    if desc.shapeType.lower() != "polygon":
        raise ShapeError
    # Get the new field name and validate it
    fieldname = arcpy.GetParameterAsText(1)
    fieldname = arcpy.ValidateFieldName(fieldname, os.path.dirname(input))
    # Make sure shape_length and shape_area fields exist
    if len(arcpy.ListFields(input, "Shape_area")) > 0 and \
        len(arcpy.ListFields(input, "Shape_length")) > 0:
        # Add the new field and calculate the value
        #
        arcpy.AddField_management(input, fieldname, "double")
        arcpy.CalculateField_management(input, fieldname,
                                        "[Shape_area] / [Shape_length]")
    else:
        raise FieldError
except ShapeError:
    print("Input does not contain polygons")
except FieldError:
    print("Input does not contain shape area and length fields")
except arcpy.ExecuteError:
    print(arcpy.GetMessages(2))

Temas relacionados

  • Especificar una consulta en Python
  • Geodatabases
  • Fundamentos de las tablas

ArcGIS Desktop

  • Inicio
  • Documentación
  • Soporte

ArcGIS

  • ArcGIS Online
  • ArcGIS Desktop
  • ArcGIS Enterprise
  • ArcGIS
  • ArcGIS Developer
  • ArcGIS Solutions
  • ArcGIS Marketplace

Acerca de Esri

  • Quiénes somos
  • Empleo
  • Blog de Esri
  • Conferencia de usuarios
  • Cumbre de desarrolladores
Esri
Díganos su opinión.
Copyright © 2021 Esri. | Privacidad | Legal