当前位置: 首页 > news >正文

贵州省交通建设工程质量监督局网站百度指数只能查90天吗

贵州省交通建设工程质量监督局网站,百度指数只能查90天吗,电子商务网站建设课程设计总结,广告位网站模板前言创建地图布局是 GIS 作业结束时的一项常见任务。 它用于呈现最终结果的输出,作为与用户交流的一种方式,以便从地图中获取信息、知识或见解。 在包括 QGIS 在内的任何 GIS 软件中制作地图布局都非常容易。 但另一方面,当我们必须生成如此大…

前言

创建地图布局是 GIS 作业结束时的一项常见任务。 它用于呈现最终结果的输出,作为与用户交流的一种方式,以便从地图中获取信息、知识或见解。 在包括 QGIS 在内的任何 GIS 软件中制作地图布局都非常容易。 但另一方面,当我们必须生成如此大量的地图时,这可能是一项乏味的工作。 此外,在制作布局图时,我们经常会重复添加一些常见的制图项目,例如比例尺、图例、地图标题等。 那么,如果我们可以自动生成呢? 当然,加快地图布局速度会带来很多好处。

在本 PyQGIS 教程中,我将讨论如何在 QGIS 中使用 Python 脚本自动制作地图布局。 在本教程中,您将学习如何将地图添加到布局中,然后添加一些项目,如地图标题、图例、指北针、比例尺和图片。

1、数据准备

进行布局之前的第一步是在 QGIS 地图画布中准备地图。 对于本教程,我准备了一张温哥华市的街道地图,如图 1 所示。您可以准备自己的地图,但如果您想像我的一样,可以从 Vancouver Open Data 和 Cartodb Dark basemap 下载街道数据 使用 Tile+ 插件将其添加到地图画布中。

图 1. 在 QGIS 中准备地图

2、自动化地图布局组合

现在让我们使用 Python 自动构建地图布局。 首先定义一个当前项目实例,并使用以下代码启动一个默认设置为 A4 纸张大小的打印布局。

project=QgsProject.instance()
layout=QgsPrintLayout(project)
layout.initializeDefaults()

上面的代码将动态创建一个布局页面。 如果要将其添加到项目中,请使用此代码。

layout.setName("Street Map Layout")
project.layoutManager().addLayout(layout)

该布局将添加到项目的布局中,如图 2 所示。

图 2. 项目布局

(1)将地图框添加到布局

我们创建了一个空布局。 现在让我们添加地图项。 首先,我们将使用此代码将地图框添加到布局中。

map=QgsLayoutItemMap(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 中可以看到标题已添加到地图布局中。

title=QgsLayoutItemLabel(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 方法将其更改为蓝色。

scale=QgsLayoutItemScaleBar(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(1*1000.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 像素。

north=QgsLayoutItemPicture(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"
exporter=QgsLayoutExporter(layout)#EXPORT TO PDF
pdf_path=output_path+'/pdf_map.pdf'
exporter.exportToPdf(pdf_path,QgsLayoutExporter.PdfExportSettings())#EXPORT TO IMAGE
img_path=p+'/img_map.png'
exporter.exportToImage(img_path,QgsLayoutExporter.ImageExportSettings())

这就是本教程关于如何使用 Python 在 QGIS 中自动化地图布局的全部内容。 我们已经学习了如何添加最常见的地图项目,如地图框、标题、比例尺、图例、指北针

http://www.wangmingla.cn/news/56026.html

相关文章:

  • 网站后台生成文章很慢上海网站制作开发
  • 江苏专业网站制作新闻软文发布平台
  • 做网站和做免费推广网站的区别百度推广登录平台客服
  • 自己做个网站如何创建网站的快捷方式
  • 企业网站用哪个cms好电商平台怎么运营的
  • 中国菲律宾关系为什么不好惠州网站seo排名优化
  • 郑州做网站的大公谷歌商店paypal官网下载
  • 聊城做网站建设的公司seo服务工程
  • 坪山做网站的公司网络推广怎么做好
  • 做网站老板不发工资我拿尾款最新消息新闻头条
  • adobe 网站开发软件制作网站免费
  • 网页游戏网站4399seo作弊
  • 旅行社网站 模板市场营销实务
  • 做类似返利网的网站有哪些seo自学
  • 如何快速建设推广网站如何建立一个自己的网站
  • 江西 网站制作微信小程序开发零基础入门
  • 自己做网站需要什么软件下载付费推广方式有哪些
  • 国外ui界面设计网站大连网站制作
  • 灵璧做网站的公司抖音seo培训
  • 万网封停慧聪事件最后怎么处理了充电宝关键词优化
  • 微信小程序开发流程图seo服务指什么意思
  • 网上商城建设网站定制开发百度问答兼职怎么做
  • 设计师常看的网站招工 最新招聘信息
  • 吴江做网站的公司seo快速建站
  • .net网站做优化网络营销企业网站优化
  • 高端医院网站建设zoho crm
  • wordpress主题合并高中同步测控优化设计答案
  • 网站制作服务商seo整站优化系统
  • 外卖网站建设佣金高的推广平台
  • 4s店网站建设广东河源最新疫情