Проверка наличия данных
Чтобы проверить наличие данных в скрипте, используйте функцию Exists. Exists проверяет наличие классов пространственных объектов, таблиц, наборов данных, шейп-файлов, рабочих областей, слоев и других файлов в текущем рабочем пространстве на момент выполнения. Функция возвращает булево выражение, по которому можно определить существует ли элемент.
Используйте Exists функцию для проверки существования данных ArcGIS. Exist работает с путями каталога, которые понимает ArcGIS, а операционная система — нет. Пути каталога могут указывать на такие элементы, как наборы данных пространственных объектов и классы пространственных объектов внутри базы геоданных. Например, d:\data\infrastructure.gdb\powerlines это допустимый путь ArcGIS, даже если Windows не может его разрешить. Windows рассматривает infrastructure.gdb как папку и не распознаёт структуру базы геоданных внутри неё, поэтому функции файловой системы Python, как os.path.exists, работать не будут.
Поскольку ArcGIS понимает пути каталога, вместо этого следует использовать функцию Exists. Также поддерживаются пути UNC.
import arcpy
arcpy.env.workspace = r"d:\St_Johns\data.gdb"
fc = "roads"
# Clip a roads feature class if it exists
if arcpy.Exists(fc):
arcpy.analysis.Clip(fc, "urban_area", "urban_roads")
Подсказка:
Функция Exists учитывает Текущую рабочую область, позволяя просто указать базовое имя.
Если данные находятся в многопользовательской базе геоданных, имя должно быть полностью квалифицированным.
import arcpy
arcpy.env.workspace = r"Database Connections\Bluestar.sde"
fc = "ORASPATIAL.Rivers"
# Confirm that the feature class exists
if arcpy.Exists(fc):
print("Verified {} exists".format(fc))
При написании скриптов поведение по умолчанию для всех инструментов — не перезаписывать уже существующие выходные данные. Это поведение можно изменить, установив свойство overwriteOutput на True (arcpy.env.overwriteOutput = True). Попытка перезаписать, когда overwriteOutput является False, приводит к сбою инструмента.