MapDocument (arcpy.mapping)

Резюме

Обеспечивает доступ к свойствам и методам документа карты (.mxd). Ссылка на этот объект существенна для большинства операций создания скриптов для карты.

Обсуждение

Подробнее об этом можно прочитать в справке к разделу Класс MapDocument (MapDocument Class).

Синтаксис

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

Следующий скрипт демонстрирует, как можно использовать ключевое слово CURRENT в окне Python. В этом примере мы обновим имя первого фрейма данных и таблицу содержания, так чтобы изменения можно было увидеть в приложении. Введите следующий код в окне 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

Вы видите еще один простой скрипт, который демонстрирует использование ключевого слова CURRENT в окне Python. Имя каждого слоя будет выведено в окне 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
9/11/2013