PyQGIS 101:加载矢量层

打开矢量层,例如Natural Earth geopackage中包含的国家/地区数据集,使用 GUI 就像在数据源管理器中双击或将其拖放到地图窗口一样简单:
在这里插入图片描述

如果我们想要使用 Python 做同样的事情,我们需要知道层数据的确切来源。此信息可以在层属性中找到。请注意源如何包含geopackage装路径以及有关国家层层名称的信息:

在这里插入图片描述

如果您尚未使用 QGIS 3,上述对话框看起来会有所不同,但它包含相同的信息。

复制源信息,我们将需要它!请注意前方斜线/在文件路径中。即使在 Windows 上,您也应该使用前斜线而不是向后斜杠以避免错误。

让我们回到蟒蛇控制台。如"你好世界"示例中所述,交互式 Python 控制台在按下"输入"后立即执行我们输入的代码。由于我们计划在本示例中编写多个行代码(实际上为两行),因此使用内置代码编辑器而不是交互式控制台会很方便。它基本上是一个文本编辑器,可以让你在多行代码上工作,直到你高兴,并希望一次执行这一切。Python 控制台中的**“显示编辑器”**按钮打开代码编辑器面板:

在这里插入图片描述

现在是时候使用我们从层属性中复制的源信息了。我们创建一个名为 uri 的**变量,并将源信息串存储在该变量中。我们选择调用可变uri-我们可以称之为任何我们喜欢的。然后,我们可以使用uri作为iface**的三个参数之一。

uri = "E:/Geodata/NaturalEarth/vector_v4/natural_earth_vector.gpkg_v4.1.0/packages/natural_earth_vector.gpkg|layername=ne_10m_admin_0_countries"
iface.addVectorLayer(uri, "countries", "ogr")

如果按下运行脚本按钮,将执行代码,QGIS 将将层加载到当前项目中。祝贺!

好吧,那很好,但这到底是什么鬼东西?iface是属于QGIS的对象——它具有我们可以用来与QGIS交互的属性和行为。iface 是 QGIS 中非常重要的对象,因为没有它,我们就无法与 QGIS 或项目中加载的任何层进行交互。在我们的代码中,我们已告诉 iface 对象执行与之相关的功能之一 - 在这种情况下,添加VectorLayer功能。不同的对象与不同的功能相关联。只是为了使生活混乱,功能有时被称为方法。您可以在官方的PyQGIS 文档中找到所有功能的列表。您将看到添加的VectorLayer在文档中列出,作为一种属于 iface 的方法,并具有以下描述:

addVectorLayer(self, vectorLayerPath: str, baseName: str, providerKey: str) → QgsVectorLayer

此描述为我们提供了有关添加VectorLayer参数的一些信息:

  1. 第一个参数是self。这是编写许多 Python 函数时所需的默认参数,但在调用函数时不必提供该参数。因此,我们可以忽略它,并提前跳到第二个参数:
  2. 描述显示 vectorLayerPath应该是一个字符串(str)。在上示例中,我们使用字符串变量 uri 提供此输入。
  3. 下一个参数是一个称为 baseName的字符串。这将是显示在层列表中的层名称,我们可以自由选择值。
  4. 最后,最后一个参数是一个字符串称为providerKey。对于大多数矢量数据格式(包括地理包装和形状文件),首选提供商将是OGR。其他矢量providerKey包括postgres, delimitedtext, gpx, spatialite, 和WFS。(另见: PyQGIS 开发人员教程:加载层)

描述的最后一部分(→ QgsVectorLayer) 意味着该函数返回创建的QgsVectorLayer对象。现在不要担心这个,我们将在接下来的例子中,承诺!

**别忘了!**由于退出 QGIS 时不会自动保存脚本,因此您应该确保使用编辑器中的保存按钮手动保存脚本。

这些是使用代码编辑器编写多行代码的基本知识,可以同时执行。您还看到了如何从官方的 PyQGIS 文档中解释函数描述。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值