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