Pro MapFrame
MapFrame
描述
MapFrame 对象是一个页面布局元素,可用于在布局上显示地图内容。同时还用于访问页面大小和定位、基本导航方法以及导出选项。
说明
MapFrame 是一个布局元素,用于显示添加到地图的地理信息。同时还用于在布局上控制其本身的大小与定位。多个 MapFrame 可同时引用同一 Map。
Layout 对象上的 listElements 函数用于返回 MapFrame 对象。通过提供 element_type 的 MAPFRAME_ELEMENT,您可以仅返回 MapFrame 元素。您还可以通过提供 wildcard 进一步优化过滤器。有必要确保每个地图框均具有唯一的名称,这样便可使用 name 属性轻松对其进行引用。
引用 MapFrame 后,您可以使用 map 属性获取其相关地图,这样您便可以在地图上管理图层、访问地图标签以及进行更多操作。更重要的是您可以更改正在引用 MapFrame 的 Map 对象。您可以切换相同维度或不同维度的地图。如果您要更改地图的维度,则首先必须更改 MapViewer 对象上的 type 属性。例如,如果 Camera mode为 MAP(针对 2D),则您必须将mode更改为 LOCAL 或 GLOBAL(针对 3D)。执行此操作后,您可以将地图从 2D 更改为 3D。
camera 属性将返回对 Camera 对象的引用。Camera 用于控制数据在地图框中显示的位置和查看位置。用于控制 2D 地图的比例和范围等项目,以及 3D 地图的照相机位置信息。
有必要了解导航方法及其在地图 (2D) 和场景 (3D) 地图框之间的工作方式。如果将使用范围的 2D 地图、书签或方法应用到 3D 地图框,则结果将返回数据的平面视图。getLayerExtent、panToExtent和 zoomToAllLayers 将始终生成平面视图。zoomToBookmark 方法用于在 3D 地图框之间进行工作时维护 3D 视图,但是将 2D 书签用于 3D 地图框或相反情况,结果将是地图框数据的平面视图。
elementPositionX 和 elementPositionY 参数取决于元素的锚点位置。
属性
属性 | 说明 | 数据类型 |
camera
(可读写)
|
照相机用于控制数据在地图框中显示的位置和查看位置。 |
Camera |
elementHeight
(可读写)
|
页面布局上的地图框高度。分配或报告的单位为页面单位。 |
Double |
elementPositionX
(可读写)
|
地图框的锚点位置对应的 X 位置。分配或报告的单位为页面单位。 |
Double |
elementPositionY
(可读写)
|
地图框的锚点位置对应的 Y 位置。分配或报告的单位为页面单位。 |
Double |
elementRotation
(可读写)
|
地图框的旋转角度(以度为单位)。正值将使方向顺时针旋转,负值将使方向逆时针旋转。这是地图框在布局上的角度,不是数据的旋转。使用camera上的 heading属性旋转数据。 |
Double |
elementWidth
(可读写)
|
页面布局上的地图框宽度。分配或报告的单位为页面单位。 |
Double |
map
(可读写)
|
在地图框中显示的地图。 |
Map |
name
(可读写)
|
显示在工程窗口中的地图名称。有必要确保所有地图均具有唯一名称,因为这样可以轻松对其进行引用。 |
String |
type
(只读)
|
返回 MAPFRAME_ELEMENT 的值。 |
String |
visible
(可读写)
|
如果地图框在布局上可见,则返回 True。进行打印或导出前,您可以切换元素的可见性,而不必从页面移除不需要的对象。 |
Boolean |
方法概述
方法 | 说明 |
exportToBMP (out_bmp, {resolution}) |
将地图框导出为 Microsoft Windows 位图 (BMP) 格式文件。 |
exportToEMF (out_emf, {resolution}) |
将地图框导出为增强型图元文件 (EMF) 格式文件。 |
exportToEPS (out_eps, {resolution}) |
将地图框导出为 Encapsulated PostScript (EPS) 格式文件。 |
exportToGIF (out_gif, {resolution}) |
将地图框导出为图形交换格式 (GIF) 文件。 |
exportToJPEG (out_jpg, {resolution}, {world_file}, {jpeg_color_mode}, {jpeg_quality}) |
将 MapFrame 内容导出为联合图像专家组 (JPEG) 格式。 |
exportToPDF (out_pdf, {resolution}, {image_quality}, {compress_vector_graphics}, {image_compression}, {embed_fonts}, {layers_attributes}, {georef_info}, {jpeg_compression_quality}, {output_as_image}) |
将地图框导出为便携式文档格式 (PDF) 文件。 |
exportToPNG (out_png, {resolution}, {world_file}, {color_mode}) |
将 MapFrame 内容导出为可移植网络图形 (PNG) 格式。 |
exportToSVG (out_svg, {resolution}, {compress_to_svgz}) |
将地图框导出为可伸缩矢量图形 (SVG) 格式文件。 |
exportToTGA (out_tga, {resolution}) |
将页面布局导出为 Truevision 图形适配器 (TGA) 格式文件。 |
exportToTIFF (out_tif, {resolution}, {world_file}, {color_mode}, {tiff_compression}, {geoTIFF_tags}) |
将页面布局导出为标记图像文件格式 (TIFF)。 |
getLayerExtent (layer, {selection_only}, {symbolized_extent}) |
返回图层中所有要素或仅仅所选要素的图层范围。 |
panToExtent (extent) |
使用新 Extent 对象可平移和居中 MapFrame,而无需更改地图框的比例。 |
zoomToAllLayers ({selection_only}, {symbolized_extent}) |
修改 MapFrame 视图以便与所有图层或地图中所选图层的范围相匹配。 |
zoomToBookmark (bookmark) |
修改 MapFrame 视图以便与通过空间书签存储的视图信息相匹配。 |
方法
exportToBMP (out_bmp, {resolution})
参数 | 说明 | 数据类型 |
out_bmp
|
用于表示输出导出文件的路径和文件名的字符串。 |
String |
resolution
|
用于定义导出文件分辨率的数字,单位为每英寸点数 (dpi)。 (默认值为 96) |
Integer |
BMP 文件属于本地 Windows 栅格图像。BMP 文件可以使用多个位深度存储像素数据。BMP 图像的大小通常比 JPEG 或 PNG 等其他格式的图像大很多。
exportToEMF (out_emf, {resolution})
参数 | 说明 | 数据类型 |
out_emf
|
用于表示输出导出文件的系统路径和文件名的字符串。 |
String |
resolution
|
用于定义导出文件分辨率的数字,单位为每英寸点数 (dpi)。 (默认值为 96) |
Integer |
EMF 文件属于本地 Windows 图形文件,其中既包含矢量数据又包含栅格数据。这些文件非常适合于嵌入 Windows 文档,因为 EMF 文件的矢量部分可以调整大小,而又不会降低质量。但是,由于 EMF 文件不支持字体嵌入并且属于 Windows 专用格式,因此并不常用作用户之间的交换格式。
exportToEPS (out_eps, {resolution})
参数 | 说明 | 数据类型 |
out_eps
|
用于表示输出导出文件的系统路径和文件名的字符串。 |
String |
resolution
|
用于定义导出文件分辨率的数字,单位为每英寸点数 (dpi)。 (默认值为 96) |
Integer |
EPS 文件将通过 PostScript 页面描述语言描述矢量对象和栅格对象。PostScript 是高端图形文件、制图和打印的出版行业标准。许多绘图应用程序中都可编辑 EPS 文件,也可将此类文件作为图形置于大多数页面布局应用程序中。EPS 文件支持字体嵌入,因此即使用户尚未安装 Esri 字体也可以查看正确的符号。
exportToGIF (out_gif, {resolution})
参数 | 说明 | 数据类型 |
out_gif
|
用于表示输出导出文件的系统路径和文件名的字符串。 |
String |
resolution
|
用于定义导出文件分辨率的数字,单位为每英寸点数 (dpi)。 (默认值为 96) |
Integer |
GIF 文件属于 Web 中使用的旧的栅格格式。GIF 文件无法显示 256 种以上的颜色(每像素 8 位),并且使用的是可选的无损压缩,因此,该类文件的大小比其他格式的文件要小。
exportToJPEG (out_jpg, {resolution}, {world_file}, {jpeg_color_mode}, {jpeg_quality})
参数 | 说明 | 数据类型 |
out_jpg
|
用于表示输出导出文件的路径和文件名的字符串。 |
String |
resolution
|
用于定义导出文件分辨率的数字,单位为每英寸点数 (dpi)。 (默认值为 96) |
Integer |
world_file
|
如果设置为 True,将创建地理配准坐标文件。文件中包含像素比例信息和真实世界坐标信息。导出 3D 地图框时,无论设置为何,都将忽略此参数,因为坐标文件不适用于 3D 视图。 (默认值为 False) |
Boolean |
jpeg_color_mode
|
该值可指定用于描述颜色的位数。
(默认值为 24-BIT_TRUE_COLOR) |
String |
jpeg_quality
|
此值 (0–100) 用于控制应用于输出图像的压缩程度。对于 JPEG,压缩程度越大,图像质量越低。质量设置越高(最高为 100),生成的图像越清晰且文件大小更大。质量设置越低,产生的图像伪影越多且文件大小更小。 (默认值为 80) |
Integer |
JPEG 文件属于经过压缩的图像文件。它支持 24 位颜色并且是 Web 上流行的使用格式,因为 JPEG 文件大小通常要比许多其他图像格式小很多。但是,JPEG 压缩算法会有损质量,多数地图图像中都不推荐使用,因为线绘图以及文本或图标图形会因压缩产生的伪影而变得模糊。因此,通常 PNG 格式才是地图图像的首选。JPEG 将与一个坐标文件一同生成,可用作地理配准栅格数据。
exportToPDF (out_pdf, {resolution}, {image_quality}, {compress_vector_graphics}, {image_compression}, {embed_fonts}, {layers_attributes}, {georef_info}, {jpeg_compression_quality}, {output_as_image})
参数 | 说明 | 数据类型 |
out_pdf
|
用于表示输出导出文件的路径和文件名的字符串。 |
String |
resolution
|
用于定义导出文件分辨率的数字,单位为每英寸点数 (dpi)。 (默认值为 300) |
Integer |
image_quality
|
用于定义输出图像质量和作为栅格绘制的地图图层的绘制分辨率的字符串。
(默认值为 BEST) |
String |
compress_vector_graphics
|
用于控制输出文件的矢量和文本部分压缩的布尔值。图像压缩单独定义。 (默认值为 True) |
Boolean |
image_compression
|
用于定义在输出文件中压缩图像或栅格数据时使用的压缩方案的字符串。
(默认值为 ADAPTIVE) |
String |
embed_fonts
|
用于控制导出文件中的字体嵌入的布尔值。当在未安装所需字体的计算机上查看文档时,可通过字体嵌入正确显示文本和字符标记。 (默认值为 True) |
Boolean |
layers_attributes
|
用于控制导出文件中包含的 PDF 图层和 PDF 对象数据(属性)的字符串。
(默认值为 LAYERS_ONLY) |
String |
georef_info
|
用于将每个数据框的坐标系信息导出到输出 PDF 文件中的布尔值。 (默认值为 True) |
Boolean |
jpeg_compression_quality
|
当 image_compression 设置为 ADAPTIVE 或 JPEG 时,用于控制压缩质量值的数字。有效范围为 1 到 100。jpeg_compression_quality 为 100 时可提供最佳图像质量,但会创建较大的导出文件。推荐范围为 70 到 90。 (默认值为 80) |
Integer |
output_as_image
|
如果设置为 True,则矢量内容可以另存为图像。如果地图或布局包含具有高密度顶点的矢量图层,则选择此选项可减小输出文件的大小。如果导出为 PDF 并将此选项设置为 True,则无法在输出中查看 PDF 图层。 (默认值为 False) |
Boolean |
PDF 文件可在不同的平台上实现一致的查看和打印效果。它们常用于在 Web 上分发文档,并且此格式现在属于文档交换的 ISO 官方标准。PDF 文件在许多图形应用程序中均可编辑,并会保留地图的地理配准信息、注记、标注和要素属性数据。PDF 导出支持字体嵌入,即使在用户尚未安装 Esri 字体时,也可以正确显示符号系统。
查看 PDFDocument 类以了解更多关于如何管理 PDF 文件的方法,如追加、插入以及设置属性。
exportToPNG (out_png, {resolution}, {world_file}, {color_mode})
参数 | 说明 | 数据类型 |
out_png
|
用于表示输出导出文件的路径和文件名的字符串。 |
String |
resolution
|
用于定义导出文件分辨率的数字,单位为每英寸点数 (dpi)。 (默认值为 96) |
Integer |
world_file
|
如果设置为 True,将创建地理配准坐标文件。文件中包含像素比例信息和真实世界坐标信息。导出 3D 地图框时,无论设置为何,都将忽略此参数,因为坐标文件不适用于 3D 视图。 (默认值为 False) |
Boolean |
color_mode
|
该值可指定用于描述颜色的位数。
(默认值为 24-BIT_TRUE_COLOR) |
String |
PNG 属于通用型栅格格式,可在各种 Web 浏览器上显示并且还可插入其他文档。它支持高位深度颜色并使用无损压缩。对于地图而言,PNG 通常是最佳的栅格格式,因为无损压缩可防止产生 JPEG 格式中的那种压缩伪影,从而使文本和线作业始终清晰可辨。PNG 文件还可定义透明颜色。PNG 将与一个坐标文件一同生成,可用作地理配准栅格数据。
exportToSVG (out_svg, {resolution}, {compress_to_svgz})
参数 | 说明 | 数据类型 |
out_svg
|
用于表示输出导出文件的路径和文件名的字符串。 |
String |
resolution
|
用于定义导出文件分辨率的数字,单位为每英寸点数 (dpi)。 (默认值为 96) |
Integer |
compress_to_svgz
|
如果设置为 True,则会压缩输出。 (默认值为 False) |
Boolean |
SVG 格式是一种基于 XML 的文件格式,专门适用于在 Web 上进行查看。SVG 文件可以同时包含矢量信息和栅格信息。某些 Web 浏览器可能需要安装插件才能查看 SVG 文件。较早版本的浏览器可能根本无法查看 SVG 文件。SVG 格式支持字体嵌入,因此即使用户尚未安装 Esri 字体也可以使用正确的符号系统查看导出的 SVG 文件。用户也可以生成压缩的 SVG 文件。如果启用此选项,文件扩展名变为 *.svgz。
exportToTGA (out_tga, {resolution})
参数 | 说明 | 数据类型 |
out_tga
|
用于表示输出导出文件的路径和文件名的字符串。 |
String |
resolution
|
用于定义导出文件分辨率的数字,单位为每英寸点数 (dpi)。 (默认值为 96) |
Integer |
TGA 文件以往用于其他应用程序中的内容(例如,动画游戏的 Image Sprites),许多受欢迎的图形艺术应用程序均可对该文件进行读取和写入。
exportToTIFF (out_tif, {resolution}, {world_file}, {color_mode}, {tiff_compression}, {geoTIFF_tags})
参数 | 说明 | 数据类型 |
out_tif
|
用于表示输出导出文件的路径和文件名的字符串。 |
String |
resolution
|
用于定义导出文件分辨率的数字,单位为每英寸点数 (dpi)。 (默认值为 96) |
Integer |
world_file
|
如果设置为 True,将创建地理配准坐标文件。文件中包含像素比例信息和真实世界坐标信息。导出 3D 地图框时,无论设置为何,都将忽略此参数,因为坐标文件不适用于 3D 视图。 (默认值为 False) |
Boolean |
color_mode
|
该值可指定用于描述颜色的位数。
(默认值为 24-BIT_TRUE_COLOR) |
String |
tiff_compression
|
此值表示压缩方案。
(默认值为 LZW) |
String |
geoTIFF_tags
|
如果设置为 True,则地理配准标签将包含在 TIFF 导出文件结构内。标签中包含像素比例信息和真实世界坐标信息。可通过支持 GeoTIFF 格式的应用程序读取这些标签。 (默认值为 False) |
Boolean |
TIFF 文件最适合导入图像编辑应用程序,同时它也属于一种常用的 GIS 栅格数据格式。但是却无法通过 Web 浏览器在本地查看这些文件。TIFF 还支持在 GeoTIFF 标记中或在独立的坐标文件中存储地理配准信息,以便用作栅格数据。
getLayerExtent (layer, {selection_only}, {symbolized_extent})
参数 | 说明 | 数据类型 |
layer
|
引用 Layer 对象。 |
Layer |
selection_only
|
如果为 True,将返回选定要素的范围;如果为 False,将返回所有要素的范围。 (默认值为 True) |
Boolean |
symbolized_extent
|
如果值为 True,将返回图层的符号化范围;否则将返回几何范围。符号化范围会将符号覆盖的区域考虑在内,因此该区域不会被数据框边界切掉。 (默认值为 True) |
Boolean |
数据类型 | 说明 |
Extent |
地理处理 Extent 对象。 |
getLayerExtent 方法将支持图层定义查询,因此如果查询了要素子集,则将只返回这些要素的范围。如果未选择要素,则将返回图层的范围。
panToExtent (extent)
此方法尤为适合 MapFrame 比例未变而位置发生了变化的情况。无需设置范围以及每次都重置比例,panToExtent 保持比例不变,然后使当前地图框在新范围中居中。
zoomToAllLayers ({selection_only}, {symbolized_extent})
参数 | 说明 | 数据类型 |
selection_only
|
如果为 True,将根据选定要素设置范围;如果为 False,将为地图中的所有要素设置范围。 (默认值为 True) |
Boolean |
symbolized_extent
|
如果值为 True,将返回图层的符号化范围;否则将返回几何范围。符号化范围会将符号覆盖的区域考虑在内,因此该区域不会被地图框边界切掉。 (默认值为 True) |
Boolean |
如果对含有全局或本地场景的 MapFrame 使用了 zoomToAllLayers,则将生成平面视图。
代码示例
MapFrame 示例 1下面的脚本将设置名为约塞米蒂国家公园主要景点的布局上名为约塞米蒂国家公园的地图框范围,从而与名为 Ranger Stations 的图层范围相匹配。
import arcpy
aprx = arcpy.mp.ArcGISProject(r"C:\Projects\YosemiteNP\Yosemite.aprx")
m = aprx.listMaps("Yose*")[0]
lyr = m.listLayers("Ranger Stations")[0]
lyt = aprx.listLayouts("Main Attr*")[0]
mf = lyt.listElements("mapframe_element", "Yosemite National Park")[0]
mf.camera.setExtent(mf.getLayerExtent(lyr, False, True))
aprx.saveACopy(r"C:\Projects\YosemiteNP\Yosemite_Updated.aprx")
del aprx
下面的脚本演示了如何将引用 2D 地图的地图框更改为引用 3D 地图。首先,该脚本会将两个文档导入到空白项目中。然后,会引用合适的地图和地图框。最后在将 map 属性从 2D 地图更改为 3D 地图之前将 Camera type 属性更改为 GLOBAL。
import arcpy
aprx = arcpy.mp.ArcGISProject(r"C:\Projects\Blank.aprx")
#Import documents into project
aprx.importDocument(r"C:\Projects\YosemiteNP\Documents\Yosemite.mxd")
aprx.importDocument(r"C:\Projects\YosemiteNP\Documents\Yosemite_3DViews.3dd")
#Reference maps
m_scenic = aprx.listMaps("Globe layers")[0]
#Reference Layout and map frames
lyt = aprx.listLayouts()[0]
mf_inset1 = lyt.listElements("MapFrame_Element", "Inset1")[0]
mf_inset2 = lyt.listElements("MapFrame_Element", "Inset2")[0]
#Convert inset maps into Globe Views
mf_inset1.camera.type = "GLOBAL"
mf_inset1.map = m_scenic
mf_inset2.camera.type = "GLOBAL"
mf_inset2.map = m_scenic
aprx.saveACopy(r"C:\Projects\YosemiteNP\Yosemite.aprx")