21.3. 创建输出
图 21.62 shows an example print layout including all the types of layout items described in the previous section.

图 21.62 添加了地图视图、图例、图像、比例尺、坐标、文本和HTML框架的打印布局
从
菜单或工具栏中,您可以将打印版面输出为不同的文件格式,并且可以修改分辨率(打印质量)和纸张大小:21.3.1. 导出设置
无论何时导出打印版面,QGIS都需要检查一系列导出设置,以便生成最合适的输出。这些配置是:
这个 Export settings 的 Layout 面板,例如 Export resolution , Print as raster Always export as vectors 或 Save world file
Exclude page from exports 在 page item properties 嵌板
Exclude item from exports 在 item properties 嵌板
此外,多个预定义的检查将自动应用于布局。目前,这些检查包括测试比例尺是否正确链接到地图项目,以及地图总览项目是否正确链接到地图。如果检查失败,则会显示一条漂亮的警告,告知您该问题。
21.3.2. 导出为图像
要将版面导出为图像,请执行以下操作:
选择图像格式、文件夹和文件名(例如
myill.png
)以使用。如果布局包含多个页面,则每个页面都将被导出到一个文件中,该文件具有给定的文件名,并附加页码(例如myill_2.png
)。在下一个 (Image Export Options )对话框:
您可以覆盖打印布局 Export resolution 和导出的页面尺寸(如中设置的 Layout 面板)。
图像呈现也可以使用 Enable antialiasing 选择。
如果要将布局导出为 georeferenced image (例如,要与其他项目共享),请查看
Generate world file 选项和一个 ESRI World File 与导出的图像同名,但扩展名不同 (
.tfw
对于TIFF,.pnw
对于巴新来说,jgw
对于JPEG,...)将在导出时创建。默认情况下,也可以在 layout panel 。备注
对于多页输出,只有包含 reference map 将获得一个坐标文件(假设 Generate world file 选项已选中)。

图 21.63 图像导出选项,输出大小调整为项目范围
小技巧
Use image formats that support transparency when items extend beyond the paper extent
布局项目可以放置在图纸范围之外。使用导出时 Crop to content 选项时,生成的图像可能会超出纸张范围。由于纸张范围外的背景将是透明的,因此对于不支持透明度的图像格式(例如 BMP
和 JPG
)透明背景将呈现为全黑,从而破坏图像。使用兼容透明度的格式(例如 TIFF
和 PNG
)在这种情况下。
备注
当格式支持时(例如 PNG
)和底层Qt库,则导出的图像可以包括 project metadata (作者、标题、日期、描述...)
21.3.3. 导出为SVG
要将版面导出为SVG,请执行以下操作:
填写路径和文件名(在多页合成的情况下用作所有文件的基本名称,如用于图像导出)
在下一个 SVG Export Options 对话框中,您可以覆盖布局默认设置 export settings 或配置新的服务器:
Export map layers as SVG groups :导出的项目在其名称与QGIS中的层名称匹配的层中进行分组,从而更容易理解文档的内容。
Always export as vectors :某些渲染选项需要栅格化项目以获得更好的渲染效果。选中此选项可将对象保留为矢量,但存在输出文件的外观可能与打印布局预览不匹配的风险(有关更多详细信息,请参见 导出设置 )。
Simplify geometries to reduce output file size :这避免了导出所有几何体顶点,这可能会导致导出文件大小异常复杂且可能无法在其他应用程序中加载。在导出布局时将简化几何,以便移除在导出分辨率下没有明显差异的任何冗余折点(例如,如果导出分辨率为
300 dpi
,小于的顶点1/600 inch
分离将被移除)。设置 Text export :控制是否将文本标签导出为正确的文本对象 (Always export texts as text objects )或仅作为路径 (Always export texts as paths )。如果将它们导出为文本对象,则可以在外部应用程序(如Inkscape)中将其作为普通文本进行编辑。但副作用是渲染质量降低,并且当某些文本设置(如缓冲区)到位时,渲染会出现问题。这就是建议导出为路径的原因。
应用
Crop to content option
Disable tiled raster layer exports :导出文件时,QGIS使用内置的栅格层平铺渲染来节省内存。有时,这可能会在生成的文件的栅格中产生可见的“接缝”。选中此选项将修复该问题,但代价是在导出过程中使用更高的内存。

图 21.64 SVG导出选项
备注
目前,SVG的输出非常基本。这不是QGIS的问题,而是底层Qt库的问题。这一点有望在未来的版本中得到解决。
21.3.4. 导出为PDF
要将版面导出为PDF,请执行以下操作:
填写路径和文件名:与图像和SVG导出不同,版面中的所有页面都导出为单个PDF文件。
在下一个 PDF Export Options 对话框中,您可以覆盖布局默认设置 export settings 或配置新的服务器:
Always export as vectors :某些渲染选项需要栅格化项目以获得更好的渲染效果。选中此选项可将对象保留为矢量,但存在输出文件的外观可能与打印布局预览不匹配的风险(有关更多详细信息,请参见 导出设置 )。
Append georeference information :仅在以下情况下可用 reference map ,从那里获取信息,在第一页上。
设置 Text export :控制是否将文本标签导出为正确的文本对象 (Always export texts as text objects )或仅作为路径 (Always export texts as paths )。如果将它们导出为文本对象,则可以在外部应用程序(如Inkscape)中将其作为普通文本进行编辑。但副作用是渲染质量降低,并且当某些文本设置(如缓冲区)到位时,渲染会出现问题。这就是建议导出为路径的原因。
控制PDF Image compression 使用:
Lossy (JPEG) ,这是默认的压缩模式
或 Lossless ,它在大多数情况下创建更大的文件,但更适合于打印输出或外部应用程序的后期制作(需要Qt 5.13或更高版本)。
Disable tiled raster layer exports :导出文件时,QGIS使用基于平铺的渲染来节省内存。有时,这可能会在生成的文件的栅格中产生可见的“接缝”。选中此选项将修复该问题,但代价是在导出过程中使用更高的内存。
Simplify geometries to reduce output file size :通过移除在导出分辨率下没有明显差异的折点(例如,如果导出分辨率为
300 dpi
,小于的顶点1/600 inch
分离将被移除)。这可以减少导出文件的大小和复杂性(非常大的文件可能无法在其他应用程序中加载)。

图 21.65 PDF导出选项
备注
支持GeoPDF导出,并提供多个GeoPDF特定选项:
Format (GeoPDF格式-有一些GeoPDF变体),
Include multiple map themes (指定要包括的地图主题),
Include vector feature information (选择这些层并将它们分组到逻辑PDF组中)。
备注
将打印版面导出为支持地理配准的格式(例如 PDF
和 TIFF
)默认情况下创建地理参考输出。
21.3.5. 生成地图集
Atlas功能允许您以自动方式创建地图册。Atlas使用表或矢量图层的要素 (Coverage layer )为每个要素创建输出( atlas feature )表/层中。最常见的用法是将地图项目缩放到当前的地图集要素。其他使用案例包括:
地图项,对于另一个层,仅显示与地图集要素共享相同属性或位于其几何图形内的要素。
在迭代要素时替换其文本的标注或HTML项
显示关联的属性的表项 parent or children 当前地图集功能的功能...
对于每个要素,将根据其导出设置处理所有页面和项目的输出。
小技巧
Use variables for more flexibility
QGIS提供了大量的功能和 variables ,包括与atlas相关的,您可以用来操作布局项目,但也可以根据atlas状态来操作层的符号系统。将这些功能结合在一起可以为您提供极大的灵活性,并帮助您轻松生成高级地图。
To enable the generation of an atlas and access atlas parameters, refer to the Atlas panel. This panel contains the following (see 图 21.66):

图 21.66 地图集面板
Configuration
A Coverage layer
combo box that allows you to choose the table or vector layer containing the features to iterate over.
可选的 Page name 用于指定功能页名称的组合框(S)。您可以选择Coverage图层的一个字段或设置 expression 。如果此选项为空,则QGIS将根据应用于该层的过滤器和/或排序顺序使用内部ID。
可选的
Filter with 文本区域,用于指定用于从Coverage图层过滤要素的表达式。如果表达式不为空,则仅计算结果为的要素
True
将被处理。可选的
Sort by 这允许您使用Coverage Layer的字段或表达式对Coverage Layer的要素(和输出)进行排序。排序顺序(升序或降序)由两种状态设置 Sort direction 显示向上或向下箭头的按钮。
Output -可在此处配置地图集的输出:
21.3.5.1. 按图集绘制控制图
Atlas最常见的用法是与地图项一起使用,当迭代遍历Coverage层时,缩放到当前的atlas要素。此行为在 Controlled by atlas 地图项的组属性。看见 由atlas控制 对于不同的设置,您可以应用于地图项目。
21.3.5.2. 使用表达式自定义标签
为了使标签适应地图集迭代经过的要素,您可以包括表达式。确保将表达式部分(包括函数、字段或变量)放在 [%
和 %]
(见 标签项 以了解更多详细信息)。
例如,对于包含字段的城市图层 CITY_NAME
和 ZIPCODE
,您可以插入以下内容:
The area of [% concat( upper(CITY_NAME), ',', ZIPCODE, ' is ',
format_number($area/1000000, 2) ) %] km2
或者,另一种组合:
The area of [% upper(CITY_NAME)%],[%ZIPCODE%] is
[%format_number($area/1000000,2) %] km2
这些信息 [% concat( upper(CITY_NAME), ',', ZIPCODE, ' is ', format_number($area/1000000, 2) ) %]
是在标签内使用的表达式。这两个表达式都会在生成的地图集中产生以下类型的标签:
The area of PARIS,75001 is 1.94 km2
21.3.5.4. 预览和生成地图集

图 21.67 地图集预览工具栏
一旦配置了地图集设置和布局项目(地图、表格、图像...)链接到它,您可以通过选择创建所有页面的预览 Preview Atlas 偶像。然后,您可以使用箭头浏览所有功能:
您还可以使用组合框来选择和预览特定功能。组合框根据地图集中设置的表达式显示地图集要素名称 Page name 选择。
对于简单的构图,可以用不同的方式生成地图集(请参见 创建输出 有关更多信息-只需使用 菜单或工具栏,而不是 菜单。
这意味着您可以使用直接打印您的作品 Single file export when possible 已被选中。在这种情况下,系统将提示您提供文件名。
使用 Atlas Panel或SVG。
或 工具,系统还会提示您选择一个文件夹。每个地图集要素合成的每一页都将导出为在中设置的图像文件格式备注
对于多页输出,地图集的行为类似于布局,因为只有包含 一般设置 将获得一个坐标文件(用于每个要素输出)。
小技巧
Print a specific atlas feature
如果您只想打印或导出地图集的一个要素的合成,只需启动预览,在下拉列表中选择所需要素,然后单击
(或 任何受支持的文件格式)。21.3.5.5. 使用项目定义的关系创建图集
对于具有HTML和Java脚本知识的用户,可以操作GeoJSON对象并使用QGIS项目中的项目定义的关系。这种方法与使用直接插入到HTML中的表达式的不同之处在于,它为您提供了一个完整的、非结构化的GeoJSON功能。这意味着您可以使用在GeoJSON要素表示上操作的现有Javascrip库和函数。
以下代码包括定义的关系中的所有相关子特征。使用Java脚本 setFeature
函数它允许您制作灵活的HTML,以您喜欢的任何格式(列表、表格等)表示关系。在代码示例中,我们创建了相关子功能的动态项目符号列表。
// Declare the two HTML div elements we will use for the parent feature id
// and information about the children
<div id="parent"></div>
<div id="my_children"></div>
<script type="text/javascript">
function setFeature(feature)
{
// Show the parent feature's identifier (using its "ID" field)
document.getElementById('parent').innerHTML = feature.properties.ID;
//clear the existing relation contents
document.getElementById('my_children').innerHTML = '';
feature.properties.my_relation.forEach(function(child_feature) {
// for each related child feature, create a list element
// with the feature's name (using its "NAME" field)
var node = document.createElement("li");
node.appendChild(document.createTextNode(child_feature.NAME));
document.getElementById('my_children').appendChild(node);
});
}
</script>
在地图集创建过程中,将在包含父要素的覆盖层上进行迭代。在每个页面上,您将看到相关的子功能的项目符号列表,紧跟在父功能的标识符后。