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

Чтобы проверить крипт на наличие данных, используйте функцию 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 (Universal Naming Convention).

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.Clip_analysis(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, завершится неудачей.