Начало работы с arcpy.mapping (arcpy.mapping)
В этом руководстве описываются основные рабочие процессы arcpy.mapping, а также некоторые важные концепции. Оно предназначено для помощи пользователям, которые совсем не знакомы с написанием скриптов Python и arcpy.mapping. Действия, описанные здесь, подходят для работы с любыми данными и всеми уровнями лицензии.
Единственное требование — необходим файл векторного слоя (.lyr).
Далее представлен высокоуровневый обзор arcpy.mapping. В этом руководстве указаны ссылки на подробные разделы справки, которые предоставляют намного больше сведений о применяемых концепциях, а практически во всех случаях в этих разделах содержатся примеры кода.
окно Python
Самый простой способ научиться работать с arcpy.mapping – использовать окно Python. Окно Python является частью платформы ArcMap и предоставляет возможности автозавершения, чтобы вы могли легко читать имена и видеть порядок параметров функций. Далее показано, как настроить окно Python для обеспечения удобства работы пользователей и достижения целей, описанных в этом документе.
- В ArcMap откройте новый, пустой документ карты.
- Щелкните Геообработка (Geoprocessing) > Python.
- Щелкните заголовок окна Python и удерживайте левую кнопку мыши.
- Перетащите окно Python к элементу закрепления в нижней части приложения ArcMap и отпустите кнопку.
- Щелкните область кода (с символами >>>) окна Python. В области справки справа должен появиться текст справки.
- Щелкните область кода правой кнопкой мыши и выберите Размещение справки (Help Placement) > Снизу (Bottom). Теперь справка должна отображаться под областью кода. Может потребоваться отрегулировать разделитель двух областей, чтобы было достаточно пространства для ввода кода и просмотра справки.
- Теперь введите следующий оператор (помните, что Python учитывает регистр):
- Щелкните правой кнопкой мыши область кода и выберите команду Очистить все (Clear All), чтобы очистить область кода.
Если вы открываете окно Python впервые, оно будет отображено поверх приложения. Далее требуется закрепить окно Python и изменить расположение справки.
>>> arcpy.mapping.ExportToPDF(
Указание ссылки на существующий документ карты
Обычно одна из первых операций, выполняемых с помощью скрипта arcpy.mapping, является ссылкой на существующий документ карты (.mxd) или файл слоя (.lyr), с которым требуется что-то сделать. В этом разделе используется ссылка на документ карты.
Существует два способа указания ссылки на документ карты. Первый заключается в выборе ссылки на документ на диске за счет указания пути к файлу .mxd. Если вы создаете скрипт, который будет выполняться за пределами среды ArcGIS, ссылку на документ карты необходимо указать с помощью пути. Второй способ ArcMap – указать ссылку на документ карты, который в данный момент загружен в приложение ArcMap (в этом случае это untitled.mxd). При работе в окне Python в ArcMap указание ссылки на загруженный документ карты более удобно, так как внесенные в него изменения можно видеть непосредственно в приложении. Далее показано, как указать ссылку на документ карты, загруженный в ArcMap.
- В окне Python введите следующую строку и нажмите клавишу ВВОД.
- В окне Python введите следующее:
- В окне Python введите следующую строку и нажмите клавишу ВВОД.
- В ArcMap щелкните Файл (File) > Свойства документа карты (Map Document Properties).
- Нажмите кнопку Отмена после завершения работы в диалоговом окне Свойства документа карты (Map Document Properties).
- В окне Python введите следующую строку и нажмите клавишу ВВОД.
- В окне Python введите следующую строку и нажмите клавишу ВВОД.
>>> mxd = arcpy.mapping.MapDocument("CURRENT")
>>> mxd.
>>> mxd.author = "YOUR NAME GOES HERE"
>>> mxd.save()
>>> print mxd.filePath
Добавление файла слоя в документ карты
Теперь после получения ссылки на документ карты необходимо добавить файл слоя (.lyr) в документ карты. Это можно сделать с помощью функции AddLayer arcpy.mapping.
- В окне Python введите следующее:
- В окне Python нажмите клавишу BACKSPACE, чтобы удалить функцию AddLayer, введите следующую строку и нажмите клавишу ВВОД.
- В окне Python введите следующую строку и нажмите клавишу ВВОД. Указанный путь, скорее всего, будет отличаться от примера, приведенного ниже.
- В окне Python введите следующую строку и нажмите клавишу ВВОД.
>>> arcpy.mapping.AddLayer(
>>> df = arcpy.mapping.ListDataFrames(mxd, "Layers")[0]
Для выполнения следующих действий необходимо найти существующий файл слоя. Если у вас нет файла слоя, его нужно создать.
>>> lyrFile = arcpy.mapping.Layer(r"C:\Project\data\Rivers.lyr")
>>> arcpy.mapping.AddLayer(df, lyrFile)
Экспорт документа карты в PDF
Экспорт документа карты в PDF - очень простая операция, требующая всего одной строки кода. Вы уже видели синтаксис функции ExportToPDF в начале данного руководства. Теперь вы изучите полный синтаксис.
- В окне Python введите следующую строку и нажмите клавишу ВВОД. Указанный путь, скорее всего, будет отличаться от примера, приведенного ниже.
>>> arcpy.mapping.ExportToPDF(mxd, r"C:\Project\Doc1.pdf")
Укажите слой с помощью функции ListLayers, измените свойства слоя
Для работы со слоями в документе карты доступно множество свойств и методов. Ранее вы добавили слой в документ карты из файла слоя. Созданная переменная lyrFile ссылается на слой, добавленный в документ карты. С ее помощью можно изменить некоторые свойства добавленного слоя.
- В окне Python введите следующее:
- В окне Python нажмите клавишу BACKSPACE, введите следующую строку и нажмите клавишу ВВОД:
- В окне Python введите следующие две строки и нажмите клавишу ВВОД после каждой из них:
- В окне Python введите следующие две строки и нажмите клавишу ВВОД после каждой из них:
>>> lyrFile.
>>> lyr = arcpy.mapping.ListLayers(mxd)[0]
>>> lyr.name = "Some New Name"
>>> lyr.visible = False
>>> arcpy.RefreshTOC()
>>> arcpy.RefreshActiveView()
Если вы выполняете автономные скрипты вне ArcMap, эти дополнительные функции не требуются.
Изменение экстента фрейма данных
В этом разделе вы измените экстент фрейма данных в соответствии с экстентом выбранных объектов. В скрипте это обычно выполняется с помощью функции, подобной SelectlayerByAttribute. Для простоты выберите объекты графически. Сначала необходимо включить видимость слоя с помощью Python.
- В окне Python введите следующие три строки и нажмите клавишу ВВОД после каждой из них:
- В ArcMap графически выберите один или несколько объектов в слое.
- В окне Python введите следующие две строки и нажмите клавишу ВВОД после каждой из них:
>>> lyr.visible = True
>>> arcpy.RefreshTOC()
>>> arcpy.RefreshActiveView()
>>> lyrExtent = lyr.getSelectedExtent()
>>> df.extent = lyrExtent
Экспорт документа карты в PDF (повтор)
Вы собираетесь экспортировать документ в PDF еще раз. На этот раз вы создаете второй документ PDF, который будет в итоге добавлен к новому документу вместе с первым документом.
- В окне Python введите следующую строку и нажмите клавишу ВВОД. Указанный путь, скорее всего, будет отличаться от примера, приведенного ниже.
>>> arcpy.mapping.ExportToPDF(mxd, r"C:\Project\Doc2.pdf")
Создание документа PDF и добавление двух страниц
Модуль arcpy.mapping содержит некоторые функции управления PDF-документами, которые идеально подходят для создания многостраничных документов. Завершенные атласы, например, часто будут содержать страницы помимо стандартных страниц карт, созданных с помощью многостраничной компоновки. Использование arcpy.mapping является необходимым для создания полных атласов.
В этой части руководства симулируется создание многостраничного отчета. Сначала необходимо создать новый документ PDF и затем добавить ранее созданные PDF. Представьте, что эти PDF — отдельные документы, из которых состоит атлас. Doc1.pdf может быть многостраничным документом PDF с титульной страницей, таблицей содержания и т. д. Второй документ PDF может быть результатом экспорта всех страниц многостраничной компоновки в один многостраничный документ PDF.
Первый шаг – создание нового документа PDF.
- В окне Python введите следующую строку и нажмите клавишу ВВОД:
- В окне Python введите следующие три строки и нажмите клавишу ВВОД после каждой из них:
>>> PDFdoc = arcpy.mapping.PDFDocumentCreate(r"C:\Project\Final.pdf")
>>> PDFdoc.appendPages(r"C:\Project\Doc1.pdf")
>>> PDFdoc.appendPages(r"C:\Project\Doc2.pdf")
>>> PDFdoc.saveAndClose()
Вы завершили простой, но распространенный рабочий процесс с использованием модуля arcpy.mapping. Далее вы должны применить эти рабочие процессы к собственным документам и слоям карты. Также уделите время и более тщательно изучите разделы справки arcpy.mapping. В конце каждого из них представлены небольшие примеры кода, которые легко можно скопировать и вставить в окне Python. Также выполните поиск в центре ресурсов по теме arcpy.mapping, чтобы найти более сложные примеры использования модуля arcpy.mapping.