MapDocument (arcpy.mapping)

摘要

用于访问地图文档 (.mxd) 属性和方法。对于此对象的引用对大多数地图脚本操作都十分重要。

讨论

有关更详细的说明,请参阅 MapDocument 类帮助。

语法

MapDocument (mxd_path)
参数说明数据类型
mxd_path

A string that includes the full path and file name of an existing map document (.mxd) or a string that contains the keyword 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 关键字。此示例将会更新首个数据框的名称,并刷新内容列表,从而可在应用程序中看到更改。将以下代码粘贴到一个新 ArcMap 文档的 Python 窗口中。

mxd = arcpy.mapping.MapDocument("CURRENT")
arcpy.mapping.ListDataFrames(mxd)[0].name = "New Data Frame Name"
arcpy.RefreshTOC()
del mxd
粘贴到交互式窗口中时,将如下所示。代码块左侧的三个点表示这些行将作为一个完整的代码块一起执行。您必须按下 Enter 键执行这些代码行。

>>> 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
粘贴到交互式窗口中时,将如下所示。同样,按下 Enter 键执行这些代码行。

>>> 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
9/15/2013