Краткая информация
В Python возвращает список элементов Слой, находящихся в документе карты (.mxd) или файле слоя (.lyr), которые имеют поврежденные подключения к оригинальным исходным данным.
Описание
ListBrokenDataSources всегда возвращает объект Python list, даже если возвращается только один поврежденный слой. Чтобы вернуть имя отдельного объекта слоя, необходимо использовать индексное значение для списка (например, brkLyr = arcpy.mapping.ListBrokenDataSources(mxd)[0]). For зацикливает список, что обеспечивает простой механизм итерации каждого элемента списка (например, для brkLyr в методе arcpy.mapping.ListBrokenDataSources(mxd):).
Некоторые слои документа карты или файла слоя могут иметь защиту паролем, поскольку имя пользователя и пароль не хранятся вместе с файлом слоя или документом карты. Документы карты, содержащие такие слои, обычно требуют от пользователя ввода пароля при открытии. В среде скриптов arcpy.mapping, по умолчанию, эти диалоговые окна не отображаются при запуске, но это означает, что слои будут рассматриваться как имеющие поврежденные источники данных. Другими словами, защищенные слои не будут отображаться в выходных данных. Если необходимо, чтобы эти слои отображались правильно, можно использовать несколько опций. Во-первых, сохраните имя пользователя и пароль вместе со слоем. Во-вторых, функция геообработки CreateArcSDEConnectionFile позволит создать файл подключения, который будет находиться в памяти. Если эта команда используется до открытия документа карты (.mxd) с помощью функции MapDocument или файла слоя с помощью функции Layer, слои SDE будут отображаться правильно и не будут считаться поврежденными. На данный момент, другого способа для защищенных веб-сервисов нет. См. раздел Справки Слой для примера кода.
Чтобы получить дополнительную информацию об автоматизации восстановления поврежденных слоев, см. раздел Обновление и фиксирование источников данных.
Синтаксис
ListBrokenDataSources (map_document_or_layer)
Параметр | Объяснение | Тип данных |
map_document_or_layer | Переменная, которая ссылается на объект MapDocument или объект Layer. | Object |
Возвращаемое значение
Тип данных | Объяснение |
Layer | Список Python объектов Layer. |
Пример кода
Пример ListBrokenDataSources:
Этот скрипт выполнит поиск поврежденных источников данных для всех документов карты, находящихся в отдельной папке. Будет напечатан отчет с именами документов карты и поврежденными источниками.
import arcpy, os
path = r"C:\Project"
for fileName in os.listdir(path):
fullPath = os.path.join(path, fileName)
if os.path.isfile(fullPath):
basename, extension = os.path.splitext(fullPath)
if extension == ".mxd":
mxd = arcpy.mapping.MapDocument(fullPath)
print "MXD: " + fileName
brknList = arcpy.mapping.ListBrokenDataSources(mxd)
for brknItem in brknList:
print "\t" + brknItem.name
del mxd