PictureElement (arcpy.mapping)
Краткая информация
Предоставляет доступ к свойствам рисунка, которые позволяют переместить рисунок компоновки страницы, а также задать и получить источник данных.
Обсуждение
Объект PictureElement представляет растр или изображение, вставленное в компоновку страницы. Функция ListLayoutElements возвращает список Python с объектами элементов компоновки страницы. Затем необходимо пройти по всем элементами списка в цикле или указать номер индекса для ссылки на определенный объект элемента страницы. Чтобы вернуть список только из объектов PictureElement, используйте константу PICTURE_ELEMENT для параметра element_type. Также можно использовать групповой символ для уточнения поиска на основе имени элемента.
Рекомендуется давать каждому элементу компоновки страницы уникальное имя, чтобы их можно было легко изолировать в Python. Позиции элемента X,Y основаны на позиции якоря элемента, которая задается на закладке Размер и положение (Size and Position) в диалоговом окне Свойства элемента (Elements Properties) в ArcMap.
У объекта PictureElement есть свойство sourceImage, позволяющее читать и изменять исходное расположение рисунка. Если вы планируете заменить рисунок на изображения с различными размерами и соотношениями сторон, создайте документ карты с рисунком с высотой и шириной, представляющими полную область, которую должны занимать все другие рисунки в компоновке страницы. Если рисунок заменяется с помощью свойства sourceImage и у рисунка другое соотношение сторон, он будет размещен в площади исходного рисунка с использованием наибольшего размера. Замененные рисунки никогда не будет больше изначального размера. Вы также можете задать позицию якоря, чтобы все новые рисунки размещались относительно этой позиции. Если вы не хотите, чтобы рисунки были скошенными, выберите опцию Сохранять пропорции (Preserve Aspect Ratio).
Свойства
Свойство | Объяснение | Тип данных |
elementHeight (чтение и запись) |
Высота элемента в единицах страницы. Единицы измерения задаются или считываются в единицах страницы. | Double |
elementPositionX (чтение и запись) |
Положение x якоря элемента во фрейме данных. Единицы измерения задаются или считываются в единицах страницы. | Double |
elementPositionY (чтение и запись) |
Положение y якоря элемента во фрейме данных. Единицы измерения задаются или считываются в единицах страницы. | Double |
elementWidth (чтение и запись) |
Ширина элемента в единицах страницы. Единицы измерения задаются или считываются в единицах страницы. | Double |
name (чтение и запись) |
Имя элемента. | String |
sourceImage (чтение и запись) |
Текстовая строка, представляющая путь к источнику данных изображений. | String |
type (только чтение) |
Возвращает тип любого элемента на странице компоновки.
| String |
Пример кода
Следующий скрипт ищет изображение по имени и задает новое расположение источника данных.
import arcpy
mxd = arcpy.mapping.MapDocument(r"C:\Project\Project.mxd")
for elm in arcpy.mapping.ListLayoutElements(mxd, "PICTURE_ELEMENT"):
if elm.name == "Photo":
elm.sourceImage = r"C:\Project\Data\NewPhoto.bmp"
mxd.save()
del mxd
В следующем скрипте показано, как разные рисунки можно переключать для каждой страницы в документе карты с включенной многостраничной компоновкой. Для каждой страницы существует разный рисунок. Имена рисунков – Photo1.png, Photo2.png, Photo3.png и т. д. – соответствуют номерам страниц.
import arcpy
mxd = arcpy.mapping.MapDocument(r"C:\Project\Project.mxd")
pict = arcpy.mapping.ListLayoutElements(mxd, "PICTURE_ELEMENT", "photo")[0]
for pageNum in range(1, mxd.dataDrivenPages.pageCount + 1):
mxd.dataDrivenPages.currentPageID = pageNum
pict.sourceImage = r"C:\Project\Data\Photo{0}.png".format(pageNum)
print("Exporting page {0} of {1}"
.format(mxd.dataDrivenPages.currentPageID,
mxd.dataDrivenPages.pageCount))
arcpy.mapping.ExportToPDF(mxd, r"C:\Project\Page{0}.pdf".format(pageNum))
del mxd