Questions tagged «pyqgis»

QGIS的Python绑定。

2
使用键盘停止具有无限循环的PyQGIS脚本?
因此,我编写了一个脚本,该脚本在一定时间间隔(使用time.sleep(5)每5秒一次)中使用“ while True:”一次又一次地执行我想要的操作。到目前为止,还不错,但是当我想要停止它时,我只是做不到。 我尝试了Control + C,Control + Break,Escape,但实际上它忽略了我的键盘。停止它的唯一方法是关闭QGIS。有任何想法吗?此外,当脚本命中time.sleep(5)时,QGIS会滞后5秒钟,并且无法进行平移,但是我认为这是正常的。 这是我的脚本: from PyQt4.QtGui import * from PyQt4.QtCore import * from qgis.core import * from qgis.utils import iface import time while True: def change_color(): active_layer = iface.activeLayer() pipeline=[] txt=open('C:/users/stelios/desktop/project/Sensor.txt','r') for line in txt.readlines(): pipeline.append(line.split()) print pipeline pipeline2=[] for label,color in pipeline: if "0" …
12 pyqgis  loop 

7
QGIS插件:导入资源(resources_rc)文件时出现问题-插件未加载-PATH问题?
我正在构建qgis插件,但找不到该错误的解决方案。 File "/usr/lib/python2.7/dist-packages/qgis/utils.py", line 478, in _import mod = _builtin_import(name, globals, locals, fromlist, level) ImportError: No module named resources_napoved_rc 对于每个要问的人,我都建立了python资源文件: pyrcc4 -o resources_napoved_rc.py resources_napoved.qrc 我仍然找不到使它起作用的方法。我总是得到同样的错误。 在脚本之上,我有: import resources_napoved_rc.py 我直接从qtbuilder使用ui文件。有什么想法要前进吗?我假设这一定是某种路径问题或类似问题。

2
如何在PyQGIS中使用QgsFeature更改属性的值?
我想更新一项功能的属性。但是,我不知道使用功能对象来更新它。我必须使用数据提供程序来更新它。 layers = QgsMapLayerRegistry.instance().mapLayersByName('my_line') layer = layers[0] dp = layer.dataProvider() it = dp.getFeatures() for i in range(0, dp.featureCount()): feat = it.next() attrs = { 2 : 30 } layer.dataProvider().changeAttributeValues({ feat.id() : attrs }) 我可以使用QgsFeature对象更改属性的值吗? 此外,是否可以使用迭代器对象进行循环?
12 qgis  python  pyqgis  features 

2
使用QGIS和环境变量的独立应用程序
我已经尝试过通过IRC来查看人们是否可以帮助我解决这个问题,但是该媒介似乎对于弄清任何答案都有些笨拙,因此我将尝试使用它。 我想使用已经可以使用ArcPy对独立应用程序进行编程的方式,使用PyQGIS对独立应用程序进行编程。 PyQGIS本身很简单。我在使用QGIS控制台编辑器中运行Python脚本时没有遇到困难。但是,为了在独立脚本中使用Python绑定,建议我必须使用批处理脚本更改环境设置(我在家中使用Windows Vista,因此我们正在讨论Windows的批处理脚本)。这最终导致一团糟,因为我不太了解批处理脚本,而且我不喜欢这样的想法,即我正在重置一种环境,该环境必须以某种方式运行我的其他应用程序。 我很难理解为什么创建这些设置的指令如此不必要地复杂,以及为什么它们不等于一行代码说“转到绑定位置,使我想要的库可供该程序使用” )。当然,ArcPy不需要人们去弄乱计算机的环境设置,所以我很难理解PyQGIS的原因,在我看来,人们只会放弃而不是自学Windows批处理脚本语言。 现在,我注意到当我在QGIS的控制台编辑器中运行脚本时,它可以工作。当然,在脚本运行后,它也会使其余QGIS无法使用,因此我必须在此后再次重新启动QGIS,但是该脚本的工作方式与我编程的完全相同。但是,当我在QGIS应用程序之外执行此操作时,事实并非如此。问题似乎不是我未能导入由QGIS应用程序自动导入的某些Python软件包(qgis.core和qgis.utils)-我的独立脚本中包含了这些import语句,以及所有其他软件包都导入了脚本要求。这使我相信,不同之处在于QGIS应用程序正确设置了外部环境变量,但是当我将其作为独立脚本运行时,这些变量没有正确设置。 另外,当我将脚本作为独立脚本运行时,它可以遍历所有代码而不会引发错误。它根本不执行代码命令。当我在控制台编辑器中运行脚本时,它可以正确完成所有操作。当我独立运行它时,它将创建一个窗口,然后立即销毁它,而不会引发任何错误。因此,解释员理解我要脚本执行的所有操作-它只是不会执行。 这是脚本: from PyQt4 import * from PyQt4 import * from PyQt4.QtCore import * from PyQt4.QtGui import * from qgis.core import * from qgis.gui import * from qgis.utils import * import Tkinter from Tkinter import * import sys import os qgishome = "c:/OSGeo4W/apps/qgis/" …
12 qgis  pyqgis 


4
在QGIS中重命名Shapefile?
我在项目中用外语命名的图层列表很多。我想翻译英文名称并将其添加到名称中。 当我右键单击图层并选择Properties -> General并更改图层名称时,它会在图层树中可视化,但原始文件保持不变。 有没有办法从QGIS更改原始文件的名称? 太多了,以至于无法在我的文件夹中全部搜索它们。

2
从QGIS的python控制台缩放
在python控制台中应用所有类型的缩放(完整,选定图层等)的命令是什么?我同时搜索pyqgis食谱和API文档,但没有发现任何有趣的东西。
11 qgis  pyqgis 


2
无法将“ pyrcc5”识别为内部或外部命令
我在Windows 10上安装了Qgis 3.0。每次我运行pyrcc4或pyrcc5命令时,都会出现此错误: 'pyrcc4' is not recognized as an internal or external command, 即使我找到了一个带有pyrcc4.exe文件的地方或一个带有apyrcc5.bat文件的地方并将路径添加到环境变量中,我也遇到了同样的错误。在osgeo4w的先前安装中,我有一个pyqtdev文件夹或类似的东西出现,我认为它在C /上。是否应该有这样一个文件夹,我需要单独下载pyqt吗?
11 qgis  pyqgis 

2
以毫米为单位生成尺寸一致的多边形?
我有一个函数可以创建表示为多边形的“太阳光能”面板。本质上,它创建一个矩形网格,用户可以在其中指定以下参数: 长度 宽度 水平距离 垂直距离 该代码基于插件FeatureGridCreator,但仅专注于多边形方面。它在大多数情况下效果很好,尤其是在创建较大尺寸的多边形(例如,长度和宽度为10m;水平和垂直距离为10m)时。 但是我注意到了两个问题: 指定长度和宽度均小于2m的多边形时,不会创建任何多边形。 当指定具有不同尺寸(例如5m长度和7m宽度)的多边形时,使用“ 测量线”工具测量时尺寸不相同。对于这些尺寸,长度和宽度分别显示为4m和6m。 用于投影和图层的CRS是EPSG:27700,尽管我不认为这会是一个问题。 那么,有谁知道会导致这些问题的原因吗?对于如何改进代码甚至用更好的替代方法替代代码,我也持开放态度。 这是可以在Python控制台中复制的代码,在运行函数之前必须使用相关的CRS选择一个多边形层: from PyQt4.QtCore import QVariant from math import ceil def generate_pv_panels(length, width, distance_x, distance_y): # Define layer properties layer = iface.activeLayer() crs = layer.crs() memory_lyr = QgsVectorLayer("Polygon?crs=epsg:" + unicode(crs.postgisSrid()) + "&index=yes", "PV panels for " + str(layer.name()), "memory") …

1
QGIS导出作曲家在python中为pdf
我有一个包含作曲家的QGIS项目。当然,如果进入GUI,我可以将其导出为pdf等。对于我的make脚本,尽管我想通过python脚本来完成。通过在线阅读,这是我的尝试: #!/usr/bin/env python import sys from qgis.gui import QgsMapCanvas, QgsLayerTreeMapCanvasBridge from PyQt4.QtCore import QFileInfo from PyQt4.QtXml import QDomDocument from qgis.core import * qgs = QgsApplication(sys.argv, True) QgsApplication.setPrefixPath("/usr", True) qgs.initQgis() def make_pdf(): canvas = QgsMapCanvas() bridge = QgsLayerTreeMapCanvasBridge( QgsProject.instance().layerTreeRoot(), canvas) bridge.setCanvasLayers() QgsProject.instance().read(QFileInfo('../board.qgs')) composition = QgsComposition(canvas.mapSettings()) map_item = composition.getComposerItemById('board36x48') map_item.setMapCanvas(canvas) map_item.zoomToExtent(canvas.extent()) composition.refreshItems() …
11 qgis  python  pyqgis  pdf 

1
等待画布完成渲染,然后再保存图像
我正在尝试编写一个脚本,该脚本将使用地图编辑器保存多个图层的渲染。我遇到的问题是脚本在qgis完成渲染所有图层之前保存。 根据其他几个答案(1,2,3),我试图使用iface.mapCanvas.mapCanvasRefreshed.connect(),并把图像函数内部节约,但我仍然遇到了同样的问题-图像不包括所有层。 下面列出了我正在使用的代码以及主窗口和渲染图的图像。 我注意到,如果打开控制台窗口并取消注释了print layerList三行,程序将等待渲染完成,然后再保存图像。我不确定这是由于处理时间的增加,还是正在改变程序的执行方式。 如何正确实现此功能,以便所有层都包含在图像中? from qgis.core import * from qgis.utils import * from qgis.gui import * from PyQt4.QtCore import * from PyQt4.QtGui import * import os.path ##StackExchange Version=name ##Map_Save_Folder=folder ##Map_Save_Name=string roadmap # Create save file location mapName = "%s.png" %Map_Save_Name outfile = os.path.join(Map_Save_Folder,mapName) pdfName = "%s.pdf" %Map_Save_Name outPDF …

2
在QGIS中设置图层面板的宽度?
当我打开QGIS时,“图层面板”默认设置为不显示“删除图层/组”按钮的宽度。因此,每次打开QGIS时,我必须调整面板大小以显示按钮。 是否可以为此面板设置默认宽度,这样我就不必调整其大小了? 我正在Windows 10上使用QGIS 2.18.5。

5
在QGIS中拖动不同线要素的多个顶点
是否可以同时拖动QGIS中某些平行线的多个顶点? 我有一个平行线的线层。在某些区域中,我必须移动所有平行线的顶点,以使它们仍然彼此保持距离。 使用节点工具,我只能选择要拖动的一条线的顶点,而不能同时选择多条线的顶点: 在“多行图层”中,可以同时拖动所有行,但这不是一种选择,因为我必须保留单行的所有属性。 还有其他选项可以同时拖动所有行吗? Edit1:刚刚找到了CadNodeTool(https://github.com/wonder-sk/CadNodeTool)。使用此插件,至少已经可以同时选择多条线的顶点了。也许可以扩展此插件以移动平行线的顶点。

2
如何使用Python将透明度设置为多个栅格值
使用以下代码,我可以将100%透明度设置为栅格值0: map=None for lyr in QgsMapLayerRegistry.instance().mapLayers().values(): if lyr.name() == "some_layer": map= lyr tr=None tr=QgsRasterTransparency() tr.initializeTransparentPixelList(0) map.renderer().setRasterTransparency(tr) map.triggerRepaint() 如何定义两个值(0和8)为100%透明? 当我用栅格值8重复最后一个块的命令时,第一个值(0)从图层透明度中删除。

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.