ListBrokenDataSources (arcpy.mapping)

摘要

返回地图文档 (.mxd) 中图层对象的 Python 列表,或已与其最初源数据断开连接的图层 (.lyr) 文件。

讨论

ListBrokenDataSources 始终返回 Python 列表对象,即使返回一个损坏的图层。要返回单个图层对象,在列表上必须使用索引值(例如,brkLyr = arcpy.mapping.ListBrokenDataSources(mxd)[0])。列表上的 For 循环提供简单的机制迭代列表中的每个项目(例如,for brkLyr in arcpy.mapping.ListBrokenDataSources(mxd):)。

由于用户名和密码信息未保存在图层文件内或地图文档内,所以地图文档或图层文件内的一些图层可能受密码保护。打开包含这些图层的地图文档时通常会提示用户输入相应的信息。默认情况下,arcpy.mapping 脚本环境将在执行过程中禁止操作这些对话框,但这意味着将按照图层数据源已损坏的方式来处理图层。换言之,受保护的图层将不会在任何输出中进行渲染。如果希望适当渲染这些图层,则应采取如下做法。首先,将用户名和密码信息随图层一同保存。其次,CreateArcSDEConnectionFile 地理处理函数允许您创建在内存中持久的连接。如果在打开具有 MapDocument 函数的地图文档 (.mxd) 或具有 Layer 函数的图层文件前使用此命令,那么 SDE 图层将得到渲染,而不是显示为已损坏。目前尚没有针对受保护的 Web 服务的操作方法。有关代码示例,请参阅图层帮助。

要了解有关自动修复损坏图层的详细信息,请参阅:更新和修复数据源

语法

ListBrokenDataSources (map_document_or_layer)
参数说明数据类型
map_document_or_layer

A variable that references a MapDocument or Layer object.

Object
返回值
数据类型说明
Layer

图层对象的 Python 列表。

代码实例

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
5/10/2014