Чтобы проверить крипт на наличие данных, используйте функцию Exists.
Exists(dataset) | Выполняет проверку на наличие классов пространственных объектов, таблиц, наборов данных, шейп-файлов, рабочих областей, слоев и других файлов в текущей рабочей области во время выполнения. Функция возвращает булево выражение, по которому можно определить существует ли элемент. |
При проверке на наличие географических данных следует использовать функцию 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, завершится неудачей.