11 地图脚本 map scripting(3)

11.10 将符号系统应用于栅格图层

栅格图层支持两个着色器使用 arcpy.mp 处理其符号系统:RasterClassifyColorizer,类似于 ArcGIS Pro 中栅格的分类符号系统,以及 RasterUniqueValueColorizer,类似于栅格的唯一值符号系统。

RasterUniqueValueColorizer 通常用于分类数据,例如土地利用。考虑前面使用默认符号系统的栅格图层示例。

在这里插入图片描述
这里使用的着色器类型正确,描述性标签有意义,但颜色不合适。 RasterUniqueValueColorizer 类可以更新这些颜色。

以下脚本打开一个工程并引用现有地图中的单个栅格图层。使用 sym = lyr.symbology 创建符号系统对象。执行检查以确保图层正在使用 RasterUniqueValueColorizer。

import arcpy
aprx = arcpy.mp.ArcGISProject("Rasters.aprx")
studymap = aprx.listMaps("Study")[0]
lyr = studymap.listLayers("landuse")[0]
sym = lyr.symbology
if sym.colorizer.type == "RasterUniqueValueColorizer":

RasterUniqueValueColorizer 类的属性可以修改栅格图层的符号系统。
例如,colorRamp 属性可以应用不同的颜色渐变,但这并不提供对特定颜色的微调控制。相反,每个土地利用类别都被赋予了特定的颜色。
在使用颜色之前,必须指定字段属性。着色器使用此字段来确定唯一的值集。感兴趣的领域称为 LANDUSE,设置如下:

sym.colorizer.field = "LANDUSE"

由于栅格的唯一值符号系统的性质,下一步很棘手。着色器的 groups 属性返回 ItemGroup 对象的列表。一个 ItemGroup 代表一个项目的类别,默认情况下只有一个 ItemGroup。 ItemGroup 类的 items 属性返回 RasterItems 列表。每个 RasterItems 对象代表感兴趣的唯一值。颜色和标签属性可以修改每个唯一值的符号系统。在下面的代码中,带有标签 Water 的项目被赋予了新的颜色:

for group in sym.colorizer.groups:
    for item in group.items:
        if item.label == "Water":
            item.color = {'RGB': [0, 0, 255, 100]}

下一步是为每个项目分配自定义颜色,如下所示:

if item.label == "Brush/transitional":
    item.color = {'RGB': [170, 255, 0, 100]}
if item.label == "Barren land":
    item.color = {'RGB': [170, 115, 0, 100]}
if item.label == "Built up":
    item.color = {'RGB': [175, 175, 175, 100]}
if item.label == "Agriculture":
    item.color = {'RGB': [225, 225, 0, 100]}
if item.label == "Forest":
    item.color = {'RGB': [115, 175, 0, 100]}
if item.label == "Wetlands":
    item.color = {'RGB': [0, 255, 185, 100]

最后,使用 lyr.symbology = sym 将新符号系统应用到图层,并保存项目以使更改生效。

lyr.symbology = sym
aprx.saveACopy("Rasters_Landuse.aprx")

结果如图所示。
在这里插入图片描述
用于修改栅格图层符号系统的第二个着色器是 RasterClassifyColorizer。此着色器类似于要素图层的分级颜色符号系统。该类包括分类字段、类数、分类方法和色带的属性。代码示例可在 ArcGIS Pro 帮助页面中找到。

11.11 Working with layouts 布局的使用

地图脚本也可用于处理布局。 ArcGIS Pro 中的单个工程可以包含多个布局。 ArcGISProject.listLayouts() 方法获取项目中的布局列表。此方法的一般语法是

ArcGISProject.listLayouts({wildcard})

该方法返回一个 Layout 对象列表,每个对象都引用一个单页布局。该方法的唯一参数是基于布局名称的通配符来过滤结果。 Layout 对象提供对布局的名称、页面大小和页面单位等属性的访问。 name 属性引用特定的页面布局。因此,项目中的每个布局都必须具有唯一的名称,这一点很重要。 Layout 对象还提供对布局的所有元素以及几种不同的导出方法的访问。
以下示例代码获取项目中所有布局的列表并打印它们的名称:

import arcpy
aprx = arcpy.mp.ArcGISProject("C:/Mapping/Demo.aprx")
lyts = aprx.listLayouts()
for lyt in lyts:
    print(lyt.name)
del aprx

您可以通过使用名称和/或索引的组合来获得特定的布局:

lyt = aprx.listLayouts("Parks")[0]

如前面的示例所示,需要索引零 [0] 来获取 Layout 对象而不是列表。
典型的布局包括几个元素,包括地图、图表、图例、文本、比例尺、指北针等。其中一些元素在 arcpy.mp 模块中有自己的类,这使得操作每个元素的属性成为可能。可以更改的典型属性包括名称、大小和位置,而其他属性因每种元素类型而异。除了克隆图形和文本元素外,不能使用脚本创建布局元素,因此它们必须已经存在于项目中。您可以使用 Layout.listElements() 方法获取特定布局中的所有元素。此方法的语法是

Layout.listElements ({element_type}, {wildcard})

该方法包括两个可选参数。默认情况下,Layout.listElements() 方法返回所有元素的列表,但是可以使用元素类型的参数和通配符来过滤此列表。
以下代码确定单个布局的所有元素并打印它们的名称和类型:

import arcpy
aprx = arcpy.mp.ArcGISProject("C:/Mapping/Demo.aprx")
lyt = aprx.listLayouts("Parks")[0]
elems = lyt.listElements()
for elem in elems:
    print(elem.name + " " + elem.type)
del aprx

打印输出可能如下所示:打印输出可能如下所示:

Legend LEGEND_ELEMENT
Alternating Scale Bar MAPSURROUND_ELEMENT
North Arrow MAPSURROUND_ELEMENT
Title TEXT_ELEMENT
Study Area MAPFRAME_ELEMENT

可以在脚本中使用的具体元素类型如下所列。这些元素类型中的每一个都对应于 arcpy.mp 模块中的一个类,如下所示:

GRAPHIC_ELEMENT—for GraphicElement objects
LEGEND_ELEMENT—for LegendElement objects
MAPFRAME_ELEMENT—for MapFrame objects
MAPSURROUND_ELEMENT—for MapsurroundElement objects
PICTURE_ELEMENT—for PictureElement objects
TEXT_ELEMENT—for TextElement objects

这些元素类型中的每一个都有不同的属性,但它们都有一个 name 属性。在 ArcGIS Pro 中创建元素时,此属性在元素属性对话框中设置。元素应该被赋予一个唯一的名称,以便可以唯一地标识元素。所有元素类型也有一个 type 属性来确定元素类型。
一些元素是组元素的一部分。分组对于文本元素很常见。 Layout.listElements() 方法将组元素中的元素作为扁平列表返回,因此无需在组元素结构中导航。例如,如果一个组元素由三个元素组成,则该方法将四个元素作为列表返回:一个用于组元素本身,一个用于每个单独的元素。

并非所有通常在布局中找到的元素都有自己的元素类型。例如,比例尺和指北针等元素属于 MapsurroundElement 类。所有文本元素,无论它们是标题还是注释,都属于 TextElement 类。同样,这些元素都不能使用脚本创建,它们必须已经存在,您才能使用它们。
一旦确定了哪些布局元素可用,则使用以下方法引用特定元素:(1) 元素的索引号,(2) element_type 参数,(3) wild_card 参数。例如,要使用 title 元素,可以使用以下三个代码示例仅获取包含标题的对象。
直接使用索引号,假设标题在元素列表的索引3处,代码为

title = lyt.listElements()[3]

使用 element_type 参数,假设标题是第一个或唯一的文本元素:

title = lyt.listElements("TEXT_ELEMENT")[0]

使用 wild_card 参数,假设 title 元素确实称为 Title,但可能并非总是如此:

title = lyt.listElements("", "Title")[0]

如果你不能创建或删除大多数布局元素,你能用它们做什么?首先,您可以使用 elementHeight 和 elementWidth 属性更改元素的大小。这些属性都以页面为单位。其次,您可以通过修改 elementPositionX 和 elementPositionY 属性来更改元素的位置。这些属性也以页面为单位。一些元素类型也有一个 elementRotation 属性来控制元素的旋转角度(以度为单位)。三、name属性是可读写的,所以可以改名字。请记住,元素应该已经有一个唯一的名称来区分它们。第四,可见属性可以用来改变元素的可见性。该属性是一个布尔值。最后,特定元素类型具有可以修改的独特属性。例如,PictureElement 类有一个 sourceImage 属性,它由一个文本字符串组成,该字符串表示图像数据源的路径。因为这是一个读写属性,所以您可以使用脚本更新布局上的图像,如下例所示:

import arcpy
aprx = arcpy.mp.ArcGISProject("C:/Mapping/Demo.aprx")
lyt = aprx.listLayouts("Parks")[0]
photo = lyt.listElements("PICTURE_ELEMENT")[0]
photo.sourceImage = "C:/Mapping/logo.png"
aprx.save()
del aprx

在此示例中,假设感兴趣的布局中只有一个 PictureElement 对象。如果有多个相同类型的元素,可以使用通配符参数根据名称过滤结果。
TextElement 对象有些独特之处在于它有一个可以更改的文本属性。对于其他元素,您无法更改内容。例如,您不能更改比例尺的类型或图例中的条目。但是对于文本元素,您可以更改内容。以下示例说明了如何更新特定文本字符串:

import arcpy
aprx = arcpy.mp.ArcGISProject("C:/Mapping/Demo.aprx")
lyt = aprx.listLayouts("Parks")[0]
title = lyt.listElements("TEXT_ELEMENT")[0]
title.text = "New Study Area"
aprx.save()
del aprx

除了文本字符串本身,您还可以更新文本的角度和以磅为单位的文本大小。
但是,使用 arcpy.mp 无法访问文本的许多其他属性,包括字体、样式、颜色等。

11.12 使用地图、地图框和相机 Working with maps, map frames, and cameras

地图是 ArcGIS Pro 中用于引用和管理图层的主要对象。 arcpy.mp 模块包含一个 Map 类,它表示表格和符号化地理数据图层的集合。在 ArcGIS Pro 应用程序中,可视化地图内容的唯一方法是使用地图视图或使用地图框将地图添加到页面布局。地图框就像页面布局上地图的容器。使用地图框可以将页面布局上的地图显示与任何地图视图区分开来。例如,地图框内的地图范围是唯一的,并且独立于任何地图视图。但是,内容不是独立的。因此,地图框就像打开另一个地图视图一样,只是在页面布局上。

使用 ArcGISProject.listMaps() 方法访问工程中的地图。此方法返回 Map 对象的列表。使用 Layout.listElements() 方法通过过滤 MAPFRAME_ELEMENT 作为元素类型来访问布局上的地图框。此方法返回 MapFrame 对象的列表。您还可以使用 MapFrame 对象的 map 属性访问地图。换句话说,如果您首先在布局中引用 MapFrame 对象,您可以通过查找显示在地图框中的 Map 对象来确定关联的地图。无法使用 arcpy.mp 访问地图视图。虽然有一个 MapView 类,但该类用于 web 地图打印,与保存到工程的地图视图无关。

如前所述,地图框是在地图中显示地理信息的布局元素。同一张地图可以被多个地图框使用。在脚本中引用地图框后,您可以使用地图属性访问其关联的地图,从而可以管理地图上的图层。此外,您可以更改地图框引用的 Map 对象,允许您在切换地图的同时保持布局上的地图框。此功能包括在 2D 和 3D 地图之间切换。

MapFrame 对象的另一个重要且相关的属性是相机属性。此属性允许访问 Camera 对象,该对象控制地图框中显示的数据的位置和查看位置。 arcpy.mp 的 Camera 对象提供对地图框中 2D 和 3D 显示的访问。 Camera 对象控制视图的 XYZ 值。对于 2D 地图,XY 值基于地图框的中心,而 Z 值不受支持。对于 3D 地图,XYZ 值表示相机相对于视图的位置。 Camera 对象还包括一个 scale 属性,该属性仅适用于 2D 地图,因为它们的平面视图。相机对象的 mode 属性返回查看器模式,其中包括 GLOBAL 或 LOCAL 用于 3D 地图和 MAP 用于 2D 地图。因为这两种类型的显示都可用,所以其他一些属性需要仔细解释。例如,2D 地图的 pitch 属性有一个固定值 -90.0,这意味着向下看。

使用 MapFrame 类的 Camera 属性控制地图框的范围。虽然 extent 不是 Camera 类的直接属性,但它是基于 X、Y 和 scale 属性的派生属性。为了方便使用范围,Camera 类包括两个方法:getExtent() 用于获取 2D 地图框的现有范围,setExtent() 用于根据现有的 Extent 对象设置地图的范围。一个常见的任务是使多个地图框的范围相同,这些方法可以用于此任务。以下代码示例采用一个地图框的范围,并将相同的范围应用于同一布局中的第二个地图框:

import arcpy
aprx = arcpy.mp.ArcGISProject("C:/Mapping/Demo.aprx")
lyt = aprx.listLayouts("Parks")[0]
mf1 = lyt.listElements("MAPFRAME_ELEMENT", "Park A")[0]
ext = mf1.camera.getExtent()
mf2 = lyt.listElements("MAPFRAME_ELEMENT", "Park B")[0]
mf2.camera.setExtent(ext)
aprx.save()
del aprx

Camera.getExtent() 方法返回一个 Extent 对象。范围是由地图单位的左下角和右上角的坐标指定的矩形。在示例中,Extent 对象是从 Camera 对象中获取的,但还有其他方法可以获取范围。例如,您可以使用 MapFrame .getLayerExtent() 方法获取图层的范围。可以使用 Describe() 和 da.Describe() 函数获取空间数据集(包括要素类和栅格)的范围。单个几何对象也有一个范围属性,它返回一个范围对象。

11.13 Exporting and printing layouts 导出和打印布局

使用 arcpy.mp 进行自动化的最常见任务之一是将布局导出到文件。可以使用与 Layout 对象关联的导出方法来导出布局。每种文件格式都有不同的方法,如下:

exportToAIX()
exportToBMP()
exportToEMF()
exportToEPS()
exportToGIF()
exportToJPEG()
exportToPDF()
exportToPNG()
exportToSVG()
exportToTGA()
exportToTIFF()

这些方法都以类似的方式工作。导出方法唯一需要的参数是输出文件的路径和文件名。所有方法还具有文件分辨率的可选参数,大多数类型的默认值为每英寸 96 点 (dpi)。每种方法都有颜色模式、图像质量和压缩的附加参数,这些参数因文件格式而异。这些参数与 ArcGIS Pro 应用程序中的导出和打印窗格的设置相匹配。
例如,exportToBMP() 方法的语法如下:

exportToBMP(out_bmp, {resolution}, {bmp_color_mode},
                     {bmp_image_compression}, {embed_color_profile},
                    {clip_to_elements})

exportToJPEG() 方法的语法如下:

exportToJPEG(out_jpg, {resolution}, {jpeg_color_mode},
                       {jpeg_quality}, {embed_color_profile},
                        {clip_to_elements})

由于每种图像格式的性质不同,这些示例说明了参数的微小差异。例如,颜色模式和压缩因格式而异,因此这些参数是唯一的。
JPEG 的颜色模式参数可以设置为 8 位灰度或 24 位颜色(默认),JPEG 图像质量为 0 到 100 之间的值(默认 80)以控制压缩量。
JPEG 文件是网络上流行的格式,因为文件大小比许多其他格式小,但该算法使用有损压缩,这意味着原始图像中的一些数据会丢失,并且绘图和文本等元素会变得模糊。更广泛推荐的地图图像格式是 PNG:

exportToPNG(out_png, {resolution}, {color_mode},
                       {transparent_background}, {embed_color_profile},
                         {clip_to_elements})

PNG 文件支持高位深度并使用无损压缩,不会丢失数据,因此非常适合保留地图图像的显示质量。 PNG 文件的颜色模式选项包括 8 位自适应、8 位灰度、24 位真彩色(默认)和 32 位带 alpha。以下代码将单个布局导出为 PNG 图像:

import arcpy
aprx = arcpy.mp.ArcGISProject("C:/Mapping/Demo.aprx")
lyt = aprx.listLayouts("Parks")[0]
lyt.exportToPNG("C:/Mapping/parks.png")

因为只创建了一个图像,所以很容易在脚本中硬编码路径和文件名。导出多个布局时,可以使用布局名称生成输出文件的名称,如下:

import arcpy
aprx = arcpy.mp.ArcGISProject("C:/Mapping/Demo.aprx")
lyts = aprx.listLayouts()
for lyt in lyts:
    png_name = f"C:/Mapping/Images/{lyt.name}.png"
    lyt.exportToPNG(png_name)

与地图不同,单个项目中的布局不能具有相同的名称,这是在脚本中区分它们所必需的。
PDF 已成为一种广泛用于导出布局的格式,部分原因是它可以跨不同平台查看和打印。 PDF 文件还可以在其他应用程序中进行编辑,并在布局中保留大部分信息,包括地理参考信息、注释和标签。 PDF 的导出方法包括几个附加参数,如下所示:

exportToPDF(out_pdf, {resolution}, {image_quality},
    {compress_vector_graphics}, {image_compression},
    {embed_fonts}, {layers_attributes}, {georef_info},
    {jpeg_compression_quality}, {clip_to_elements},
    {output_as_image}, {embed_color_profile})

默认分辨率为 300 dpi,默认质量比设置为 BEST。默认情况下,图像压缩设置为 ADAPTIVE,它对具有许多独特颜色的大图像使用 JPEG,对所有其他图像使用 DEFLATE。还有用于嵌入字体的参数(默认为 True),包括要素属性(默认为 LAYERS_ONLY),以及启用坐标系信息的导出(默认为 True)。

由于 PDF 文档被广泛用于导出布局,arcpy.mp 包含一个 PDFDocument 类来管理 PDF 文件,包括合并多个文件、删除页面和管理文档安全设置。 PDFDocument 类只有一个属性:pageCount,它是一个整数,表示页数。 PDFDocument 类有六个方法:appendPages()、deletePages()、insertPages()、saveAndClose()、updateDocProperties() 和 updateDocSecurity()

arcpy.mp 中的两个函数有助于处理 PDF 文档。 PDFDocumentOpen() 函数通过指向磁盘上的 PDF 文件返回一个 PDFDocument 对象,而 PDFDocumentCreate() 函数在内存中创建一个新的 PDFDocument 对象。使用这些功能的典型场景是创建 PDF 格式的地图册。您可以使用 PDFDocumentCreate() 函数在内存中创建一个新的(空的)PDFDocument,然后使用 PDFDocument 对象的 appendPages() 或 insertPages() 方法添加页面。

以下代码使用 PDFDocumentCreate() 函数创建一个空的 PDFDocument,并将三个现有的 PDF 文件附加到内存中的该文档。 saveAndClose() 方法保存生成的 PDF,如下所示:

import arcpy
pdfpath = "C:/Mapping/MapBook.pdf"
pdfdoc = arcpy.mp.PDFDocumentCreate(pdfpath)
pdfdoc.appendPages("C:/Mapping/Cover.pdf")
pdfdoc.appendPages("C:/Mapping /Map1.pdf")
pdfdoc.appendPages("C:/Mapping /Map2.pdf")
pdfdoc.saveAndClose()
del pdfdoc

注意:PDFDocumentCreate() 函数不会创建任何空白 PDF 页面。在示例中,实际的 PDF 页面来自现有的 PDF 文件。但是,也可以使用 exportToPDF() 方法在项目的脚本中创建这些页面。

11.14 使用 Python 进行 CIM 访问

除了已经讨论的功能之外,您还可以使用 Python 访问 Esri 的制图信息模型 (CIM)。 CIM 是一种技术规范,用于记录 GIS 数据集的制图描述,适用于地图、场景、布局、图层、符号和样式。该规范以 JSON 格式表示,这使得查看其内容和结构成为可能。 CIM 允许您进行更具体的更改,这些更改是使用 arcpy.mp 的其他功能无法实现的。例如,您可以使用 Layer.getDefinition() 方法获取图层的 CIM 定义,修改符号系统的一些属性,然后使用 Layer.setDefinition() 方法将这些更改应用于图层。您可以使用 arcpy.mp 的功能直接修改的属性仅限于相对简单的属性,但 CIM 可以访问您在 ArcGIS Pro 应用程序中使用的所有属性。
可以在 ArcGIS Pro 帮助页面中的“Python CIM 访问”主题中找到更详细的说明。 CIM 规范也托管在 GitHub 上,网址为 https://github.com/esri/cim-spec

11.15 arcpy.mp 的其他功能

使用 arcpy.mp 可以完成其他几项任务,此处未详细介绍。其中包括:
Applying a unique values renderer to a feature layer
Managing labeling properties of a layer
Working with bookmarks
Updating and fixing data sources
Web map printing
Working with reports
Creating a map series

ArcGIS Pro 帮助页面中详细记录了这些主题中的每一个。

Points to remember

The arcpy.mp module makes it possible to automate mapping tasks. Several specific mapping classes and functions allow for the manipulation of projects, maps, layers, tables, and layouts.

The functionality of the arcpy.mp module reflects some of the typical workflows in ArcGIS Pro to produce cartographic output. Some tasks, however, are not part of the arcpy.mp module. For example, creating a new project or adding a new layout to a project can only be done using ArcGIS Pro. Using arcpy.mp, you can only manipulate existing projects, maps, and layouts. The arcpy.mp module typically is used to automate certain repetitive tasks, such as updating the data sources for many layers in a map, adding the same layer to every map in a project, or replacing text in multiple projects.

Projects can be accessed by referencing an .aprx file on disk or by calling the project that is currently open. Properties of the ArcGISProject class can be read, modified, and saved. Legacy map documents (.mxd files) from ArcGIS Desktop 10.x can be imported using the ArcGISProject.importDocument() method.

Maps within a project can be accessed using the ArcGISProject.listMaps() method. Properties of the Map class can be read, modified, and saved.

Layers within a map can be accessed using the Map.listLayers() method. Properties of the Layer class can be read, modified, and saved. The supports() method of the Layer class can be used to determine whether a layer supports a specific property. Layers in a map can be manipulated using methods of the Map class, including adding a basemap, adding data from a path, adding a layer, moving a layer, and removing a layer.

The symbology property of a Layer object provides access to a layer’s symbology by returning a Symbology object. The symbology of a layer can be manipulated by modifying the colorizer (for raster layers) or renderer (for feature layers). Modifiable properties include symbol type, color, size, and more. Symbology also can be manipulated by applying a style from the symbology gallery.

Map scripting also can be used to work with layouts. A single project in ArcGIS Pro can contain multiple layouts. The ArcGISProject.listLayouts() method obtains a list of layouts in a project. The Layout object provides access to basic properties such as the name, page size, and page units of the layout, as well as all the elements of the layout and several different export methods.

Individual elements in page layouts can be accessed using the Layout.listElements() method. Individual elements can be modified, but these changes typically are limited to changing the size and placement. Except for text and pictures, the actual contents of layout elements cannot be modified using scripting.

When a map is added to a layout, a map frame is created. The MapFrame object gives you access to its associated map, as well as to a Camera object, which controls the location and viewing position of the data displayed in a map frame.

Layouts can be exported to various formats, including JPEG, PDF, and PNG. You can access the Cartographic Information Model using Python, giving you fine-grained access to cartographic settings.

arcpy.mp 模块使自动映射任务成为可能。几个特定的​​映射类和函数允许对项目、地图、图层、表格和布局进行操作。
arcpy.mp 模块的功能反映了 ArcGIS Pro 中用于生成制图输出的一些典型工作流。但是,有些任务不是 arcpy.mp 模块的一部分。例如,只能使用 ArcGIS Pro 来创建新工程或向工程添加新布局。使用 arcpy.mp,您只能操作现有的项目、地图和布局。 arcpy.mp 模块通常用于自动执行某些重复性任务,例如更新地图中多个图层的数据源、将相同图层添加到项目中的每个地图或替换多个项目中的文本。
可以通过引用磁盘上的 .aprx 文件或调用当前打开的项目来访问项目。 ArcGISProject 类的属性可以读取、修改和保存。可以使用 ArcGISProject.importDocument() 方法导入来自 ArcGIS Desktop 10.x 的旧版地图文档(.mxd 文件)。
可以使用 ArcGISProject.listMaps() 方法访问工程中的地图。 Map 类的属性可以读取、修改和保存。
可以使用 Map.listLayers() 方法访问地图中的图层。可以读取、修改和保存 Layer 类的属性。 Layer 类的 supports() 方法可用于确定层是否支持特定属性。地图中的图层可以使用 Map 类的方法进行操作,包括添加底图、添加路径中的数据、添加图层、移动图层和删除图层。
图层对象的符号系统属性通过返回符号系统对象提供对图层符号系统的访问。可以通过修改着色器(对于栅格图层)或渲染器(对于要素图层)来操作图层的符号系统。可修改的属性包括符号类型、颜色、大小等。也可以通过应用符号系统库中的样式来操作符号系统。
地图脚本也可用于处理布局。 ArcGIS Pro 中的单个工程可以包含多个布局。 ArcGISProject.listLayouts() 方法获取项目中的布局列表。
Layout 对象提供对基本属性的访问,例如布局的名称、页面大小和页面单位,以及布局的所有元素和几种不同的导出方法。
可以使用 Layout.listElements() 方法访问页面布局中的各个元素。
可以修改单个元素,但这些更改通常仅限于更改大小和位置。除文字和图片外,不能使用脚本修改布局元素的实际内容。
将地图添加到布局时,会创建地图框。 MapFrame 对象使您可以访问其关联的地图以及 Camera 对象,该对象控制在地图框中显示的数据的位置和查看位置。
布局可以导出为各种格式,包括 JPEG、PDF 和 PNG。
您可以使用 Python 访问制图信息模型,从而可以细粒度地访问制图设置。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值