ValidateFieldName (arcpy)
Резюме
Принимает строку (имя поля) и путь рабочей области и возвращает корректное имя поля, созданное с учетом ограничений на задание имен в выходной базе геоданных. Все некорректные символы входной строки заменяются символом подчеркивания (_). Ограничения на имена полей зависят от используемой базы данных (Structured Query Language [SQL] или Oracle).
Синтаксис
Параметр | Объяснение | Тип данных |
name |
Проверяемое имя поля. Если дополнительная рабочая область не указана, имя поля проверяется относительно текущей рабочей области. | String |
workspace |
Дополнительно указанная рабочая область, относительно которой проверяется имя поля. Рабочей областью может быть файловая система или персональная, файловая база геоданных или база геоданных ArcSDE. Если рабочая область не указана, имя поля проверяется с помощью среды текущей рабочей области. Если рабочая область еще не была задана, имя поля проверяется на основе рабочей области папки. | String |
Тип данных | Объяснение |
String |
Возвращает строку, содержащую допустимое имя поля на основе текущей или указанной рабочей области. |
Пример кода
Возвращает допустимое имя поля на основе рабочей области.
class FieldError(Exception):
pass
class ShapeError(Exception):
pass
import arcpy
import os
try:
# Get the input feature class and make sure it contains polygons.
#
input = arcpy.GetParameterAsText(0)
dscFC = arcpy.Describe(input)
if dscFC.shapeType.lower() != "polygon":
# Raise a custom exception
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 a custom exception
raise FieldError
except ShapeError:
print "Input does not contain polygons"
except FieldError:
print "Input does not contain shape_area and shape_length fields"
except:
print arcpy.GetMessages(2)