南通企业网站建设wordpress套模板
- 作者: 五速梦信息网
- 时间: 2026年03月21日 10:16
当前位置: 首页 > news >正文
南通企业网站建设,wordpress套模板,万能浏览器最新下载,wordpress产品编辑前言创建地图布局是 GIS 作业结束时的一项常见任务。 它用于呈现最终结果的输出#xff0c;作为与用户交流的一种方式#xff0c;以便从地图中获取信息、知识或见解。 在包括 QGIS 在内的任何 GIS 软件中制作地图布局都非常容易。 但另一方面#xff0c;当我们必须生成如此大…前言创建地图布局是 GIS 作业结束时的一项常见任务。 它用于呈现最终结果的输出作为与用户交流的一种方式以便从地图中获取信息、知识或见解。 在包括 QGIS 在内的任何 GIS 软件中制作地图布局都非常容易。 但另一方面当我们必须生成如此大量的地图时这可能是一项乏味的工作。 此外在制作布局图时我们经常会重复添加一些常见的制图项目例如比例尺、图例、地图标题等。 那么如果我们可以自动生成呢 当然加快地图布局速度会带来很多好处。在本 PyQGIS 教程中我将讨论如何在 QGIS 中使用 Python 脚本自动制作地图布局。 在本教程中您将学习如何将地图添加到布局中然后添加一些项目如地图标题、图例、指北针、比例尺和图片。1、数据准备进行布局之前的第一步是在 QGIS 地图画布中准备地图。 对于本教程我准备了一张温哥华市的街道地图如图 1 所示。您可以准备自己的地图但如果您想像我的一样可以从 Vancouver Open Data 和 Cartodb Dark basemap 下载街道数据 使用 Tile 插件将其添加到地图画布中。图 1. 在 QGIS 中准备地图2、自动化地图布局组合现在让我们使用 Python 自动构建地图布局。 首先定义一个当前项目实例并使用以下代码启动一个默认设置为 A4 纸张大小的打印布局。projectQgsProject.instance() layoutQgsPrintLayout(project) layout.initializeDefaults()上面的代码将动态创建一个布局页面。 如果要将其添加到项目中请使用此代码。layout.setName(Street Map Layout) project.layoutManager().addLayout(layout)该布局将添加到项目的布局中如图 2 所示。图 2. 项目布局1将地图框添加到布局我们创建了一个空布局。 现在让我们添加地图项。 首先我们将使用此代码将地图框添加到布局中。mapQgsLayoutItemMap(layout) map.setRect(10,10,10,10) map.zoomToExtent(iface.mapCanvas().extent()) map.attemptMove(QgsLayoutPoint(5,20,QgsUnitTypes.LayoutMillimeters)) map.attemptResize(QgsLayoutSize(285,180, QgsUnitTypes.LayoutMillimeters))在第一行中我们使用 QgsLayoutItemMap 类定义了一个地图布局项。 然后在第二行中设置了一个矩形框架它有四个整数参数。 它是什么数字并不重要它只是用来确定形状的。 接下来是使用 zoomToExtent 方法将地图画布缩放到一定程度的方法。 在第四行中我们使用 attemptMove 方法将地图移动到位置 (x,y)。 地图布局坐标使用屏幕坐标原点在页面左上角最大坐标在页面右下角。 最后我们使用 attemptResize 调整地图框的大小其大小以 QgsUnitTypes 中定义的毫米为单位。执行代码我们将得到如图 3 所示的地图布局。图 3. 带有地图框的布局2添加地图标题现在让我们为地图添加一个标题让人们知道它是关于什么的。 要添加标题我们使用 QgsLayoutItemLabel 类。 接下来我们使用 setText 方法设置文本在第三行中我们使用 setFont 确定字体类型、大小和粗细。 在图 4 中可以看到标题已添加到地图布局中。titleQgsLayoutItemLabel(layout) title.setText(Vancouver City Street Map) title.setFont(QFont(Arial,28,QFont.Bold)) title.adjustSizeToText() layout.addLayoutItem(title) title.attemptMove(QgsLayoutPoint(80,5,QgsUnitTypes.LayoutMillimeters))3添加图例正如您在地图中看到的街道网络使用不同的颜色来区分每条街道的用途。 在地图布局中可以在图例项中找到数据的信息。 下面的代码用于添加街道图例。 数据层是使用 mapLayerByName 方法通过名称从当前项目的实例中选择的。 在第二行和第三行中所选图层被添加到 QGIS 图层树中。在图 5 中可以看到街道图例已添加到地图布局中。layer QgsProject.instance().mapLayersByName(Street Types) root QgsLayerTree() root.addLayer(layer[0]) legend QgsLayoutItemLegend(layout) legend.model().setRootGroup(root) legend.setLinkedMap(map) layout.addLayoutItem(legend) legend.attemptMove(QgsLayoutPoint(8,140,QgsUnitTypes.LayoutMillimeters))图 5. 带有图例的布局4添加比例尺为了给用户一个实际大小的透视图应该在布局中添加一个比例尺。 要添加比例使用 QgsLayoutItemScaleBar 类。 要确定比例尺的类型请应用 setStyle 方法。 有一些比例尺类型例如数字、单框、双框、中间线刻度线、向下刻度线和向上刻度线。 第 3-4 行用于自定义刻度的字体。 比例尺的默认颜色是黑色这与底图非常相似。 我在第 5 行中使用 setFillColor 方法将其更改为蓝色。scaleQgsLayoutItemScaleBar(layout) scale.setStyle(Single Box) scale.setFont(QFont(Arial,15)) scale.setFontColor(QColor(White)) scale.setFillColor(QColor(Blue)) scale.applyDefaultSize(QgsUnitTypes.DistanceMeters) scale.setMapUnitsPerScaleBarUnit(1000.0) scale.setNumberOfSegments(2) scale.setUnitsPerSegment(11000.0) scale.setUnitLabel(Km) scale.setLinkedMap(map) layout.addLayoutItem(scale) scale.attemptMove(QgsLayoutPoint(5,70,QgsUnitTypes.LayoutMillimeters))第 6 行中的 QgsDefaultSize 用于定义比例尺的单位。 当我们想要定义一个不同于地图画布单元的单元时使用此方法。 例如地图画布以度为单位但我们希望以米为单位进行缩放因此我们使用 QgsUnitTypes.DistanceMeters。 要格式化比例尺如比例尺单位、段数、每段单位包括单位标签请参见第 7-10 行。5添加指南针将添加到地图布局中的下一个项目是地图方向的指北针。 要添加指北针可以使用 QgsLayoutItemPicture。 下面代码中的第二行是设置图片格式为此我使用了SVG格式。 可以使用setPicturePath 方法来指定图片的路径。 在第五行中图片的大小被调整为 500x500 像素。northQgsLayoutItemPicture(layout) north.setMode(QgsLayoutItemPicture.FormatSVG) north.setPicturePath(/usr/share/qgis/svg/arrows/NorthArrow_04.svg) north.attemptMove(QgsLayoutPoint(8, 25, QgsUnitTypes.LayoutMillimeters)) north.attemptResize(QgsLayoutSize([500,500], QgsUnitTypes.LayoutPixels)) layout.addLayoutItem(north)6将布局导出为 PDF 或图像在结束本教程之前让我们将布局导出为 PDF 或图像。 要导出为 PDF 或图像使用 QgsLayoutExporter 类。 必须首先指定相应导出文件的路径和名称。 根据输出格式我们使用 exportToPdf 或 exportToImage 方法如下面的代码所示。output_path/QGIS/layout-export-pyqgis exporterQgsLayoutExporter(layout)#EXPORT TO PDF pdf_pathoutput_path/pdf_map.pdf exporter.exportToPdf(pdf_path,QgsLayoutExporter.PdfExportSettings())#EXPORT TO IMAGE img_pathp/img_map.png exporter.exportToImage(img_path,QgsLayoutExporter.ImageExportSettings())这就是本教程关于如何使用 Python 在 QGIS 中自动化地图布局的全部内容。 我们已经学习了如何添加最常见的地图项目如地图框、标题、比例尺、图例、指北针
- 上一篇: 南通企业网站常见的网络营销方法有哪些?
- 下一篇: 南通市住房建设局网站包工头注册劳务公司
相关文章
-
南通企业网站常见的网络营销方法有哪些?
南通企业网站常见的网络营销方法有哪些?
- 技术栈
- 2026年03月21日
-
南通企业模板建站wordpress付费下载功能
南通企业模板建站wordpress付费下载功能
- 技术栈
- 2026年03月21日
-
南通旅游网站建设ps怎么做网页制作
南通旅游网站建设ps怎么做网页制作
- 技术栈
- 2026年03月21日
-
南通市住房建设局网站包工头注册劳务公司
南通市住房建设局网站包工头注册劳务公司
- 技术栈
- 2026年03月21日
-
南通网站定制哪家好网站健设推广产品多少钱
南通网站定制哪家好网站健设推广产品多少钱
- 技术栈
- 2026年03月21日
-
南通网站建设方案咨询wordpress迁移后后台登陆不
南通网站建设方案咨询wordpress迁移后后台登陆不
- 技术栈
- 2026年03月21日

