问题标签 [pyqgis]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
305 浏览

python - 使用 initQgis() 时出现分段错误 11 - MacOS

我在 macOS Catalina v.10.15.7 上使用 QGIS.3.16

运行以下代码时出现问题

当我在终端中运行它时,我得到以下错误代码

我知道 11 表示第 11 行,这就是 app.initQgis() 所以那里有些东西不起作用。

我在 Jupyter Notebook 中运行了相同的代码,但当时没有出现错误。我尝试重新启动计算机以“清理”内存,但仍然出现同样的错误。

此外,我在使用 QGIS.3.14 时使用了相同的代码并且效果很好,但现在我每次都会出错。

有什么想法可能是错的吗?

***************************** 编辑 ******************** ***************

跟进此事。我安装了QGIS3.10 LTR并尝试了相同的,然后错误没有出现。但是我必须添加 GDAL_PATH 才能打开 shapefile。

0 投票
1 回答
160 浏览

qgis - 通过 Python 脚本 startEditing 编辑图层,我们是否必须“关闭”编辑?

我正在处理一个矢量图层,我必须将所有 n+i [id] 属性合并到实体(n)[id] 中,其中实体(n+i)[id] 等于实体(n)[id],然后删除所有 n+i 个实体。一切正常,但我在提交更改之前调用了几次startEditing函数,我的问题是:调用commitChangesclosesstartEditing还是让它打开,就像它是我们需要在工作完成后释放的文件描述符或指针一样?

代码是:

如您所见,我们调用了多次olayer.startEditing,甚至更多,因为所有代码都在 while 正文中......那么这会产生大量的 startEditing “指针”还是只是不断地将 olayer 可编辑状态设置为“对版本开放”?

实际上代码可以工作,但是速度很慢,这是原因吗?

0 投票
0 回答
41 浏览

python - 查找覆盖某个特征的其他层的特征(检测叠加层)

在下图中,您可以看到 2 层。第 1 层被划分为比第 2 层更小的部分,但第 2 层中的所有要素都由第 1 层中的一个或多个要素组成。

我想做的是,使用 python 迭代第 2 层的特征并检测该特征“覆盖”的第 1 层的所有特征(poligonal 交叉点?)。因此,我将能够确定第 2 层的每个特征以红色打印的数字。

是否有一个简单的代码片段来执行此任务?

我尝试过使用feature.geometry().intersection(base_feature.geometry())和检查!= None,但这似乎没有奏效。据我所知,它只检查点,我需要检查该区域是否重叠/相交。

图层示例

0 投票
0 回答
173 浏览

python - PyQGIS 特征缺乏几何

我正在使用 QGIS(点层)中的 shapefile,并且我正在尝试遍历所有点,但是有些点显然没有有效的几何图形。
当我输入时,layer.getFeature(1).geometry() 我得到<QgsGeometry: null> 因此我不能使用该.asPoint()函数但是当我遍历所有特征时,它不会显示那些具有空几何的特征:

那么为什么在遍历所有层时没有显示任何空几何,而是第一个(实际上所有特征在使用单个特征layer.getFeature(x)命令时都显示空几何)。有没有办法解决这个问题?

0 投票
1 回答
1035 浏览

vector - 如何在 PyQGIS 中向地理包附加/添加图层

对于一个项目,我正在创建不同的图层,这些图层都应该写入一个地理包中。我正在使用 QGIS 3.16.1 和 QGIS 中的 Python 控制台,它在 Python 3.7 上运行

我尝试了很多事情,但无法弄清楚如何做到这一点。这是我到目前为止使用的。

问题是在“test.gpkg”中创建了一个名为“test”的层,而不是“points1”或“points2”。第二个 QgsVectorFileWriter.writeAsVectorFormatV2() 也覆盖第一个的输出,而不是将图层附加到现有的地理包中。

我还尝试创建单个 .geopackages,然后使用“包层”处理工具 (processing.run("native:package") 将所有层合并到一个地理包中,但不幸的是,属性类型都转换为字符串。

任何帮助深表感谢。提前谢谢了。

0 投票
1 回答
534 浏览

python - 如何从python中的列表中打印特定行

我有一个名为“DistInt”的列表,其中包含强度值和地震事件的相应距离。有没有办法只打印列表中的特定行?

将打印 DistInt 列表:

例如,我想打印行 - [2.0, 321.0121765154287]

0 投票
1 回答
72 浏览

python - 使用 PyQGIS 加载用户配置文件的问题

嗨,在启动 QGIS3 时,我的 startup.py 脚本有以下代码,我想检查用户配置文件是否存在,如果不存在,则创建并加载它,但似乎这个过程陷入了某种不可阻挡的循环,使其无法使用该应用程序。

有没有办法解决这个问题?

0 投票
0 回答
26 浏览

arcgis - 是否可以在 GIS 软件中创建泰森多边形,但根据 DEM 加权?

基本上我正在寻找的是一种类似于最低成本分析的算法或扩展,但不是使用 DEM 顶部的点来创建点之间的路径(线向量),而是创建一个泰森(Voronoi)多边形(以点为中心),其空间限制将由 DEM 定义。

因此,例如,2 个多边形之间的边界将由 2 个多边形的中心点之间的最低成本分析来确定。然后,目标将是,而不是获得一组带有箭头直线边界的泰森多边形(如图片中所示),而是创建一组多边形,其限制将由 DEM(浮雕)确定。有点像以一个点为中心的分水岭。

顺便说一句,如果有适用于 QGIS 的解决方案,那就太好了。

谢谢!

0 投票
0 回答
300 浏览

python - 如何将多边形划分为特定大小的小多边形?

我想将不规则多边形划分/切割成特定大小(1.6mx 1m)的小多边形,这样就必须利用大部分不规则多边形区域(优化模型)

多边形的长度和宽度可以互换(1.6m X 1m(或)1m X 1.6m)

所以,最后,我需要尽可能多的多边形(1.6m X 1m)。

您可以将其视为包装问题。我需要在多边形内尽可能多地打包大小(1.6mx 1m)的矩形。矩形可以平移和旋转,但不能相互交叉。 在此处输入图像描述

我使用了“创建网格”功能,但它只是以特定方式切割整个多边形。 在此处输入图像描述

但我还想要的是,这里也可以垂直切割一个蓝色多边形(1m x 1.6m)。 在此处输入图像描述

所以,我想知道 QGIS/ArcGIS 中是否有这个插件或任何用于这种多边形优化的 python 脚本?

0 投票
0 回答
404 浏览

python - 使用 PYQGIS 从受代理保护的地理服务器添加 WMS 层

我有一个托管在地理服务器上的 wms 图层,用于使用 OpenLayers 在 Web 地图应用程序上显示。我将使用代理 URL 获取地图图像,该代理 URL 向 Geoserver 发送请求并返回 wms 图层图像作为响应。但是,我不能在 pyqgis 中使用相同的 URL 来加载图层作为 QGIS 中的栅格图层。我可以使用 QgsRasterLater 函数成功加载我的 localhost GeoServer 数据,但由于我的远程服务器的 GeoServer 只能通过代理 URL 访问,我得到一个无效的图层响应。

加载本地主机层的功能(成功运行):

加载受代理保护的远程 GeoServer 层的功能(不工作):

情况1:

案例二: