当对GIS的数据源进行移动、格式转换或删除等操作时,往往会导致地图文档或图层文件中的数据丢失链接,这时将无法显示地图数据。
如果使用arcpy.mapping模块编写脚本,则无需打开地图文档就可以自动查找和修复丢失的数据源。
相关术语的定义:
工作空间 —— 工作空间是一种数据容器,它可以是一个文件夹(就shapefile而言)、个人地理数据库、文件地理数据库或ArcSDE连接等。工作空间确定了该工作空间的系统路径。对于文件地理数据库来说,工作空间的系统路径包括该地理数据库的名称
数据集 —— 数据集是工作空间中的要素类或表。
数据源 —— 数据源是工作空间和数据集的组合
一、查找地图文档和图层文件中丢失的数据源
arcpy.mapping模块中的ListBrokenDataSources()函数,可以返回一个图层列表,列表中的对象是地图文档或图层文件中已经丢失了数据链接的图层。
代码示例:
import arcpy.mapping as mapping # 导入arcpy.mapping模块
mxd = mapping.MapDocument(r"E:\work\KeLaMaYi.mxd") # 引用KeLaMaYi.mxd地图文档文件
listBrokenDS = mapping.ListBrokenDataSources(mxd) # 获取丢失了数据源的图层列表
""" 迭代列表,输出图层名称"""
for layer in listBrokenDS:
print(layer.name)
结果输出丢失了数据源的各个图层的名称列表:
二、使用MapDocument.findAndReplaceWorkspacePaths()方法修复丢失的数据源
MapDocument.findAndReplaceWorkspacePaths()方法用于执行全局查找,并替换地图文档中图层和表的工作空间路径。
它还可以同时替换多种工作空间类型的路径,例如可以同时替换个人地理数据库和文件地理数据库两种工作空间类型。
MapD