问题标签 [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 投票
0 回答
15 浏览

geolocation - 查找具有多个位置的设备的路线

我有一个数据框。在该数据框中,我们有具有多个位置的设备。我需要使用 OSRM API 或 pyqgis 找到起点和目的地之间的可能路线。我已将它们的位置存储在点组列中,并将设备的原点存储在原点列中。我可以使用以下代码在 osrm api 中找到只有两个位置(起点、终点)的设备的路线。先感谢您...

我的数据框

0 投票
1 回答
37 浏览

python-3.x - PyQGIS:更新,在选择之前插入

我可以在 PostGIS 表中运行 SQL 以在 QGIS3.16(运行 Ubuntu Desktop 20.04)中加载查询,如下所示:

我没有使用 Psycopg2。如上所示,在运行 SELECT 之前,有人会给我一个见解或指出如何使用 PyQGIS 在表上运行 UPDATE 或 INSERT 的方向吗?

0 投票
0 回答
13 浏览

python - QWebView windows shows page but does not allow to interact with it

I am developing a plugin using python in QGIS. Either form, when trying to use QWebView() or QWebEngineView() it throws the following error:

NameError: name 'QWebView' is not defined NameError: name 'QWebEngineView' is not defined

The only way I can use QWebView is if I run first the following import:

from qgis.PyQt.QtWebKitWidgets import QWebView

It has to be that specific import, I have tried others such as 'from PyQt5 import QtWebKitWidgets' and it does not work.

Then I can use QWebView. But after creating a QWebView object and setting the url (either using the method .load() or .setUrl()) I show the WebView and I can see the page loaded but the window is covered by a 'gray' layer and it does not allow me to interact with the page

I mean, if I load google, I can see the page but I cannot write in the searchbar or click on any button.

I am currently using the last QGIS version (3.22.3)

Thanks a lot beforehand.

0 投票
1 回答
32 浏览

docker - 即使在 exitQgis() 之后第二次创建 PyQGIS 独立应用程序后出现分段错误 - Debian

我正在尝试创建几个 .qgs 项目文件,以便稍后由 qgis 服务器实例提供服务。为此,我需要根据请求多次启动一个新的 PyQGIS 应用程序。该应用程序在第一次调用时运行顺利,但如果我第二次尝试运行它,我会收到分段错误错误。

这是触发问题的示例代码:

执行时,我得到以下输出:

如果我将循环的内容包含在一个函数中并多次调用它,就会发生类似的事情。在这种情况下,第二次调用时会发生分段错误qgs.exitQgis()(并且在此之前添加的任何矢量或栅格层都将无效)。

也许问题是由于某种原因qgs.exitQgis()在退出之前没有真正清理?

该代码在 Debian Bullseye 附带的 Python:3.9 docker 容器上运行。Qgis 已按照 QGIS 文档中的说明进行安装: https ://qgis.org/en/site/forusers/alldownloads.html#debian-ubuntu 。QGIS 版本是 QGIS 3.22.3-Białowieża 'Białowieża'。

为了防止加载时出现导入错误,qgis.core我必须设置环境变量PYTHONPATH = /usr/lib/python3/dist-packages/

0 投票
1 回答
27 浏览

python-3.x - Python 3:如何组合来自 csv 的值并根据键值将它们附加到新的 csv

我有一个如下所示的 .csv 表:

原始csv

我想获得一个新的 .csv 数据,如下所示:

新的 csv

我已经明白我在第一列中有第二个具有 SITENAMES 唯一值的 csv,但现在我正在努力将 SPECIESNAMES 附加到第二列中。

0 投票
0 回答
9 浏览

runtime - PyQGIS - 编辑图层时已删除 QgsVectorLayer 类型的包装 C/C++ 对象

我目前正在开发一个 QGIS 插件。当我使用 edit(QgsVectorLayer)或使用QgsVectorLayer.startediting()开始编辑图层时,此 RuneTimeError 发生大多数运行:RuntimeError: Wrapped C/C++ object of type QgsVectorLayer has been deleted。我可以运行脚本 10 次并且没有错误,然后再运行 10 次并连续出现 10 次错误。感觉完全随机。

正如我通过阅读诸如理解“底层 C/C++ 对象已被删除”错误之类的帖子所理解的那样,它可能是 C++ 方面的垃圾收集器问题。但我看到的帖子都不是关于 QgsVectorLayer 的,所以我不确定它是否适用。

这真的让我很恼火,以至于我开始创建空层来存储修改过的特征而不是编辑。

我试图在循环之前移动开始编辑,因为我正在考虑不断开始编辑并提交每个功能的更改可能会导致问题,但错误仍然出现。
然后我认为这可能是最后使用break但删除它并不能解决错误。
因为这是我第一次真正使用 PyQGIS,所以我有时会阅读开发者食谱或在线搜索(Anita Graser - 创建和编辑新的矢量图层),但我找不到任何解决方案。
我尝试了不同的版本,LTR 与否。绝望地使用另一台计算机,但问题仍然存在。
我还在某处读到进度条是问题所在,所以我删除了脚本中的反馈也没有成功。

以下是一些代码示例:

确切的错误:

希望这个例子就足够了。代码的目标是让节点在不经过线路的情况下了解其周围环境。它只是用于治疗,这些字段将在最终输出中删除。

0 投票
0 回答
12 浏览

python - 用 PyQGIS 添加线条弯曲度?

我有一个来自旧 SO 帖子的工作代码,用于使用现场计算器检测线弯曲度,如下所示:

曲折

这在上图中很明显有效,其中 1 = 直线,所有更高或更低的值都表示曲线。

当我在具有连接件的较大数据集上运行此程序时,我得到了混合结果,如图所示,清晰的直线突出显示的值为 32.76,其他值具有不同的值:

曲折2

我尝试将行字符串从多部分转换为单部分,但这似乎并不能解决问题。

0 投票
0 回答
10 浏览

openstreetmap - 打开街道地图地图导出

如何导出国家地图,不仅是线、多边形和点,还有道路、街道等。试图下载这个http://download.geofabrik.de/europe/ukraine.html,但它只包含点,线,多面体。

0 投票
0 回答
3 浏览

pyqgis - PyQGIS:更改数据定义符号系统的表达式

我有一个在地图上显示计算结果的 QGIS 项目。有几个向量层,每个向量层都有 >100 个计算字段。所有这些层/字段的数据可视化方式都非常相似。我尝试编写一个复制模板层的脚本,并根据所选字段名称更改符号系统的表达式。

下面是我尝试访问的属性的屏幕截图(如果我要使用 UI 更改它们)。

我要更改的符号系统属性的屏幕截图,我应该使用 UI

如何访问/更改 PyQGIS 中分级符号系统的线宽和线偏移的表达式?