摘要
返回地图文档 (.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 | 引用 MapDocument 或图层对象的变量。 | 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