描述
用于访问地图文档 (.mxd) 的属性和方法。大多数地图脚本操作都需要引用此对象。
讨论
有关更详细的说明,请参阅 MapDocument 类帮助。
语法
MapDocument (mxd_path)
参数 | 说明 | 数据类型 |
mxd_path | 包含现有地图文档 (.mxd) 的完整系统路径和文件名的字符串或包含关键字 CURRENT 的字符串。 | String |
返回值
数据类型 | 说明 |
MapDocument | MapDocument 对象用于访问地图文档属性和方法。大多数地图脚本操作都需要引用此对象。 |
代码示例
MapDocument 示例 1
以下脚本为地图文档中的每个数据框分别创建 MXD 文件。输出地图文档将采用数据查看的模式保存,这样,在打开每个地图文档时,相应数据框将成为活动数据框。此脚本也设置了各输出地图文档的标题属性。由于此脚本使用地图文档的系统路径,它可以在 ArcMap 应用程序外运行。注意:Python 字符串不能以反斜线结尾,即使字符串前面是 r。必须使用双反斜线。在文件夹路径中追加动态文件名时,此点尤为重要。
import arcpy
mxd = arcpy.mapping.MapDocument(r"C:\Project\Project.mxd")
for df in arcpy.mapping.ListDataFrames(mxd):
mxd.activeView = df.name
mxd.title = df.name
mxd.saveACopy(r"C:\Project\Output\\" + df.name + ".mxd")
del mxd
MapDocument 示例 2
以下脚本演示了如何在 Python 窗口中使用 CURRENT 关键字。此示例将更新首个数据框的名称并刷新内容列表,这样,可以在应用程序中看到更新。将以下代码粘贴到 Python 窗口中的新 ArcMap 文档中。
mxd = arcpy.mapping.MapDocument("CURRENT")
arcpy.mapping.ListDataFrames(mxd)[0].name = "New Data Frame Name"
arcpy.RefreshTOC()
del mxd
>>> mxd = arcpy.mapping.MapDocument("CURRENT")
... arcpy.mapping.ListDataFrames(mxd)[0].name = "New Data Frame Name"
... arcpy.RefreshTOC()
... del mxd
...
MapDocument 示例 3
以下是演示如何在 Python 窗口中使用 CURRENT 关键字的另一简单脚本。各图层名称都将在 Python 窗口中输出。如果缩进正确,也可能发生循环。与上例相似,将以下代码粘贴到 Python 窗口中。
mxd = arcpy.mapping.MapDocument("CURRENT")
for lyr in arcpy.mapping.ListLayers(mxd):
print lyr.name
del mxd
>>> mxd = arcpy.mapping.MapDocument("CURRENT")
... for lyr in arcpy.mapping.ListLayers(mxd):
... print lyr.name
... del mxd
...
MapDocument 示例 4
以下脚本将在打开需要输入密码的地图文档前,通过在内存中创建 SDE 连接确保适当地渲染受保护图层。此脚本仅定义了连接信息,然后将地图文档导出为 PDF 文件。最好在关闭脚本前从内存中删除此引用。
import arcpy, os
#Remove temporary connection file if it already exists
sdeFile = r"C:\Project\Output\TempSDEConnectionFile.sde"
if os.path.exists(sdeFile):
os.remove(sdeFile)
#Create temporary connection file in memory
arcpy.CreateArcSDEConnectionFile_management(r"C:\Project\Output", "TempConnection", "myServerName", "5151", "myDatabase", "DATABASE_AUTH", "myUserName", "myPassword", "SAVE_USERNAME", "myUser.DEFAULT", "SAVE_VERSION")
#Export a map document to verify that secured layers are present
mxd = arcpy.mapping.MapDocument(r"C:\Project\SDEdata.mxd")
arcpy.mapping.ExportToPDF(mxd, r"C:\Project\output\SDEdata.pdf")
os.remove(sdeFile)
del mxd