Questions tagged «pyqgis»

QGIS的Python绑定。

2
编写独立的PyQGIS脚本时导入qgis.core的问题
我试图在Windows 7中使用qgis.core和其他各种qgis库编写一个独立的python脚本。 我在这里发现了一个有关此主题的老问题:使用PyQGIS编写独立的Python脚本吗?并通过使用以下指南来遵循其建议:http : //docs.qgis.org/testing/en/docs/pyqgis_developer_cookbook/intro.html#python-applications 建议的代码为: set PYTHONPATH=c:\qgispath\python 其次是: set PATH=C:\qgispath;%PATH% 我发现IDLE不喜欢“开始时设置”,因此我的代码如下所示: PYTHONPATH="C:\OSGeo4W64\apps\qgis\python" PATH="C:\OSGeo4W64\apps\qgis\python\qgis\core;%PATH%" import qgis.core 我得到: Traceback (most recent call last): File "<pyshell#15>", line 1, in <module> import qgis.core ImportError: No module named qgis.core 我已经尝试过所有可以想到的路径变体,包括最后删除;%PATH%“(看起来有点多余),但无法找到更多信息。有人对我可能有的想法有什么想法吗?出问题了吗? 编辑: 看到Luigi Pirelli的评论后,我现在尝试: >>> PYTHONPATH="C:/OSGEO4~1/apps/qgis/./python\qgis" >>> import qgis.core Traceback (most recent call last): File …
18 qgis  python  pyqgis  windows 


3
运行OSGeo4w Shell脚本时qgis.core的导入错误
我一直很努力,与此相伴后,要运行脚本OSGeo4w壳牌,QGIS之外。但是我收到以下错误: ImportError:没有名为qgis.core的模块 我还阅读了以下帖子,并尝试导入各种模块,但无济于事: 如何在QGIS python控制台之外运行sextante算法? 如何从外部为QGIS运行简单的python脚本(例如Sublime Text)? 使用PyQGIS编写独立的Python脚本? 这是一个简单的脚本,它创建一个网格并将一个多边形shapefile剪切到其上。 注意:该脚本已经过测试,可以在QGIS中运行时成功运行。 ##Test=name import os import glob import sys sys.path.append("C:\Program Files\QGIS Brighton\lib;%OSGEO4W_ROOT:\=/%/apps/qgis;%OSGEO4W_ROOT%\apps\qgis\bin;%OSGEO4W_ROOT%\apps\grass\grass-6.4.3\lib;%PATH%") from PyQt4.QtCore import * from PyQt4.QtGui import * from qgis.core import * QgsApplication.setPrefixPath("C:\Program Files\QGIS Brighton\apps\qgis", True) QgsApplication.initQgis() from os.path import expanduser home = expanduser("~") # Folder path of the Results …

4
在pyQGIS中缓冲?
我正在寻找一些示例来在QGIS中执行简单的python脚本。如何对数据集进行缓冲区分析? 在手册和QGIS python中,我似乎找不到与Esri文档完全匹配的内容。

1
使用PyQGIS编写独立的Python脚本?
我一直在学习如何使用来自qgisworkshop.org的引用在QGIS中使用Python控制台。我熟悉在ArcGIS中编写独立脚本的过程,并且想学习如何使用QGIS进行操作。 例如,在ArcGIS 10中,一个简单的独立python脚本将是: import arcpy setFolder = '' doProcess 我了解如何使用QGIS中的python控制台执行此操作,但是我还没有找到使用独立脚本执行相同步骤的示例。我怀疑我只是不太幸运地进行搜索。是否有明确的示例说明如何在线执行此操作?
17 pyqgis 

1
使用QGIS 3.0编写python处理脚本
在对QGIS 3.0进行更新之后,很难找到有关在QGIS 3.0中编写处理脚本的任何信息。 @Underdark(请参阅此处)为框架提供了基础。从模板(QGIS 3.0.2)编写新脚本时,似乎也已在QGIS中添加了此代码。 但是,我找不到任何方法来帮助像我这样的Python新手了解如何更改该代码,尤其是对于输入和输出层。 我的目标是编写一个脚本,该脚本以2个栅格图层和一个double图层作为输入,输出两个图层。 允许对示例代码进行哪些更改? 对于QGIS 2.x,我将使用以下语法: ##Layer1=raster ##Layer2=raster ##myDouble=Double ##OutLayer1=output raster ##OutLayer2=output raster 据我了解,必须在以下过程中进行更改,但是我不确定要执行的操作。 def initAlgorithm(self, config=None): self.addParameter(QgsProcessingParameterFeatureSource( self.INPUT, self.tr("Input layer"), [QgsProcessing.TypeVectorAnyGeometry])) self.addParameter(QgsProcessingParameterFeatureSink( self.OUTPUT, self.tr("Output layer"), QgsProcessing.TypeVectorAnyGeometry)) 5月16日,发布了QGIS Python API文档。但是,我仍然不清楚如何在这里使用它。(这很可能是缺乏Python知识)
17 qgis  pyqgis  qgis-3 

1
释放PyQGIS文件锁?
我想知道是什么触发了pyQGIS中文件锁定的释放? 我试图通过调用删除一些数据源(临时使用)QgsVectorFileWriter.deleteShapeFile,但是必须退出QGIS才能这样做。我已经将源代码加载到QgsVectorLayer对象中。在删除源之前,是否必须对所有这些对象及其引用进行垃圾回收?有没有办法强制执行此操作? 我设法创建了一个失败的最小代码示例。在运行之前,请确保temp目录为空。 from qgis.core import * import processing, os, gc project_temp_dir = "C:/Path/To/My/Dir/" layer1_path = project_temp_dir + "layer1.shp" layer2_path = project_temp_dir + "layer2.shp" input_layer = QgsMapLayerRegistry.instance().mapLayersByName('in_layer')[0] if not input_layer.isValid(): raise Exception("Failed to grab input layer") # Create layer 1 err = QgsVectorFileWriter.writeAsVectorFormat(input_layer, layer1_path, "utf-8", input_layer.crs()) if err != QgsVectorFileWriter.NoError: …
16 pyqgis  lock 

4
使用Python根据其属性过滤功能?
如何使用python在Qgis中按特征(类似于arcobjects中的Iqueryfilter)的属性获取特征?除了获取所有功能并手动对其进行过滤之外,是否可以使用where子句将其过滤掉? 示例:我有一个名为“县”的字段。它具有五万多个特征。即,由于耗时,无法获取所有特征并对其进行过滤。所以我可以在arcobjects中使用iqueryfilter.whereclause ='Counties = Norwich'来查询它。我在PyQgis中需要类似的东西。
16 qgis  pyqgis 

3
使用Python在QGIS中“按属性选择”?
有没有一种方法可以使用python命令在QGIS中使用“按属性选择”功能?在我的插件中,用户应通过GUI输入一个值,并且该值应在选择具有此属性的所有功能的函数中使用。列名在代码中是固定的,该函数应仅搜索正确的值。 在我当前的解决方案中,该函数将QGIS连接到PostgreSQL数据库并运行SQL语句。这将从结果中创建一个表,并且该表在QGIS中显示为Shapefile。 原则上,突出显示特征就足够了,而不必创建所选内容的新Shapefile就足够了。使用“按属性选择”功能还将跳过不必要的数据库连接。 有没有办法在python中使用功能“按属性选择”,以便突出显示功能?使用QGIS中的功能,所有与查询不匹配的功能都可以暂时删除,这也是可以的。
16 qgis  pyqgis 

6
在PyQGIS中定义层CRS并避免CRS对话框?
有一个现有的Shapefile,我想添加。 目前,我的代码如下所示: self.iface.addVectorLayer(self.shpFilePath, "Track", "ogr") 它工作正常,但我想在代码中定义crs。可能吗?我发现了类似的问题:使用Python在QGIS 2.4中以编程方式选择CRS 但是我还是无法正常工作。

2
用Python访问`processing`吗?
我想从独立脚本访问QGIS之外的Python中的爆炸线功能。 我必须加载哪个模块才能使用它? 我该如何访问processing? from qgis.core import * layerInput = QgsVectorLayer('test.shp', 'test', 'ogr') processing.runalg('qgis:explodelines', layerInput, 'temp.shp')

4
为QGIS插件编写自动化测试?
我正在寻找有关为用Python编写的QGIS插件编写自动测试的建议。 过去,我使用PyUnit(unittest模块)编写了针对Python脚本的测试,但从未针对具有GUI的应用程序进行过测试。我已经找到了一个页面,描述了如何使用PyQt4.QTest对Qt小部件进行单元测试(http://www.voom.net/pyqt-qtest-example),但是我正在努力查看如何使用它带有设计为从QGIS内部运行的小部件。 PyQGIS文档中关于“测试”的部分明显不存在。 到目前为止,我有: 将实际的数据处理保存在隔离的模块或功能中,并为这些模块或功能编写单元测试; 使用QTest对UI进行基本测试; 当从QGIS内部使用插件时,请祈祷一切融合在一起。 有没有更好的办法?

1
如何立即应用QSettings中的更改?
使用PyQGIS,您可以更改各种设置,例如使“图层面板”(或目录)中的组变为粗体: from PyQt4.QtCore import QSettings QSettings().setValue("/Qgis/legendGroupsBold", True) 可以写入设置,可以从选项或键入中看到: QSettings().value("/Qgis/legendGroupsBold") >>> u'true' 但这并没有得到应用。我以为使用 QSettings().sync() 可能会有帮助,但不幸的是没有帮助。应用它的唯一方法是转到GUI(Settings > Options),然后单击OK或重新启动QGIS。 是否有通过PyQGIS做到这一点的方法? 内容: 我想将此添加为项目文件中的宏,以确保(出于美观目的)仅组名为粗体,而图层名则为非粗体。因此,理想的是在项目加载后应用QSettings(在项目关闭时将重新应用初始设置)。

1
在QGIS启动画面上显示启动消息
在QGIS启动期间,初始屏幕的下部显示了状态消息,例如“恢复已加载的插件”。 我正在使用startup.py功能,我想从该功能通知用户当前启动脚本的哪一部分已执行。 是否可以在初始屏幕上显示此信息? 编辑1: 作为解决方法,我在启动期间设法使用了自己的启动画面: from qgis.gui import * from qgis.utils import * from qgis.core import * from PyQt4.QtGui import * from qgis.PyQt.QtCore import QSettings, Qt import time template=QgsApplication.qgisSettingsDirPath() + "python/" app=QgsApplication.instance() splash_pix = QPixmap(template+'splashscreen.png') splash = QSplashScreen(splash_pix, Qt.WindowStaysOnTopHint) splash.setWindowFlags(Qt.WindowStaysOnTopHint | Qt.FramelessWindowHint) splash.setEnabled(False) splash.setMask(splash_pix.mask()) progressBar = QProgressBar(splash) progressBar.setMaximum(10) progressBar.setGeometry(0, splash_pix.height() …
15 qgis  pyqgis  pyqt4 

3
使用PyQGIS控制基于规则的标签?
接下来是这个问题:如何在QGIS中打开/​​关闭所有层的所有标签,OP在他的评论中提到他使用基于规则的标签。我尝试在线搜索有关如何读取和修改这些类型的标签,但只能通过lutraconsulting找到这篇文章: 为了便于添加基于规则的标签,对QGIS标签引擎界面进行了一些内部更改。现在,标签由新类驱动,新类QgsLabelingEngineV2可能具有与其关联的多个标签提供程序。 听起来不错。但是,在阅读QgsLabelingEngineV2类时,它提到: 此类尚未成为公共API的一部分。 目前是否可以使用python控制基于规则的标签?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.