Проверка наличия данных

Чтобы проверить наличие данных в скрипте, используйте функцию Exists.

Exists(dataset)

Проверяет наличие классов пространственных объектов, таблиц, наборов данных, шейп-файлов, рабочих областей, слоев и других файлов в текущем рабочем пространстве на момент выполнения. Функция возвращает булево выражение, по которому можно определить существует ли элемент.

Функция Exists

При проверке наличия географических данных используйте функцию Exists, так как она распознает пути каталогов. Путь каталога – это имя пути, распознаваемое только ArcGIS. Например: D:\Data\Final\Infrastructure.gdb\EastValley\powerlines относится к классу объектов powerlines, находящемуся в наборе классов объектов EastValley в файловой базе геоданных Infrastructure. Это недопустимый системный путь с точки зрения операционной системы Windows, поскольку Infrastructure.gdb (папка) не содержит файла с именем Infrastructure. Проще говоря, Windows не знает о наборах классов объектов или классах объектов, поэтому вы не можете использовать функции существования Python, такие, как os.path.exists. Конечно, все функции в ArcGIS умеют работать с путями каталогов. Также можно использовать пути в формате UNC.

import arcpy

arcpy.env.workspace = "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 = "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, приводит к сбою инструмента.