Проверка на наличие данных
Чтобы проверить крипт на наличие данных, используйте функцию Существует (Exists).
Существует (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
from arcpy import env
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
from arcpy import env
env.workspace = "Database Connections/Bluestar.sde"
fc = "ORASPATIAL.Rivers"
# Confirm that the feature class exists
#
if arcpy.Exists(fc):
print "Verified %s exists" % fc
В скриптах поведение, установленное по умолчанию для всех инструментов, запрещает перезапись выходных данных, которые уже существуют. Это поведение можно изменить, установив для свойства overwriteOutput значение "истина (True)" (arcpy.env.overwriteOutput = True). Попытка выполнить перезапись, когда для свойства overwriteOutput выбрано значение "ложь (False)", завершится неудачей.