Questions tagged «pyqgis»

QGIS的Python绑定。

3
如何确定QGIS中的相邻图块ID?
在最近的培训课程中,有人问我QGIS是否可以自动计算使用地图集生成器创建的地图册的下一页/上一页以及上一页/下一页。如果您知道网格的宽度和高度,那么我设法为常规网格制定了一个相当合理的标签表达式。 但是随后我们开始考虑一些现实的示例,在这些示例中我们不想绘制不包含我们感兴趣的地区的页面,例如我的家乡之一: 因此,今天下午我在一个python脚本上玩耍,计算出每个网格单元我感兴趣的4个邻居,并将这些值添加到我的网格中(这很大程度上基于Ujaval Gandhi的教程): for f in feature_dict.values(): print 'Working on %s' % f[_NAME_FIELD] geom = f.geometry() # Find all features that intersect the bounding box of the current feature. # We use spatial index to find the features intersecting the bounding box # of the current feature. This will …

4
如何使用QGIS轻松高效地重新投影500个CSV文件?
我知道,我的问题类似于该网站上的一些旧问题。 我有很多CSV文件(地理坐标)要导入到qgis(然后进行转换),通常的方法不是最好的方法(太长)。 我有将近500个CSV文件(wgs84坐标),这就是我想要做的: 一次将所有CSV文件导入QGIS 投射他们 再次将它们导出到CSV文件中,但坐标不同(转换为UTM33N) 我试图了解如何使用python控制台,但我没有继续:( 谁能向我解释如何逐步实现它?
11 qgis  python  pyqgis  export  csv 

4
使用Python将Print / Map QGIS composer视图保存为PNG / PDF(不更改可见布局中的任何内容)吗?
我打开了QGIS作曲者/打印视图,并根据需要调整了所有元素。现在,我需要从Python控制台/ Python脚本将此文件打印/保存/导出为PNG或PDF文件。 我不想更改当前布局中的任何内容。与我在当前作曲家视图中看到的相比,我发现的大多数示例(例如:this)都会更改输出PDF中的地图位置或大小。我希望获得与单击“打印-> 导出为图像”时得到的结果完全相同的结果。 我怎样才能做到这一点?Atlas对我来说不是解决方案。


2
编写可以同时在Arcpy和PyQGIS上调用的脚本吗?
我花了很多时间来寻找这个主题的明确答案,但仍然无法真正实现以独立脚本访问PyQGIS的目标。 已针对许多不同的问题提供了部分答案,例如: 使用QGIS和环境变量的独立应用程序 独立脚本中的pyQgis,矢量加载错误 使用PyQGIS编写独立的Python脚本? 我发现的最困难的答案是@gene 在这里提供的。 我特别感兴趣的是能够编写可以在Arcpy和PyQGIS上调用的脚本。我已经根据PyQGIS Cookbook文档将PATH和PYTHONPATH系统变量设置为: C:\OSGeo4W\apps\qgis\bin,%PATH%;C:\Python27\ArcGIS10.2\Lib\site-packages\PyQt4;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\DTS\Binn\;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\;C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies\;C:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\ 和 C:\OSGeo4W\apps\qgis\python; C:\OSGeo4W\apps\Python27\Lib\site-packages 分别。 我从以下脚本开始: from qgis.core import * QgsApplication.setPrefixPath("C:\OSGeo4W\bin\qgis.bat", True) QgsApplication.initQgis() # or your solution # …

1
如何在QGIS中保存python会话?
在QGIS的python控制台中运行了许多脚本之后,我有10多个字典和列表,并且需要它们进行进一步分析。有没有一种方法可以保存所有这些变量的python会话? 总的来说,我的问题是如何将变量从python控制台导出到某些东西,以便将来可以再次加载它们? 谢谢
11 qgis  python  pyqgis 

1
我如何使用QThread和PyQGIS来维护可重复使用的GUI
我一直在开发一些批处理工具作为QGIS 1.8的python插件。 我发现在我的工具运行时,GUI变得无响应。 一般的看法是,应该在工作线程上完成工作,并将状态/完成信息作为信号传递回GUI。 我已经通过阅读河岸文档,并研究doGeometry.py源(从工作实施ftools)。 使用这些资源,我尝试构建一个简单的实现,以便在更改已建立的代码库之前探索此功能。 整体结构是“插件”菜单中的一个条目,它展开了一个带有“开始”和“停止”按钮的对话框。这些按钮控制着一个计数为100的线程,将每个数字的信号发送回GUI。GUI接收每个信号,然后发送一个字符串,其中包含消息日志和窗口标题的编号。 此实现的代码在这里: from PyQt4.QtCore import * from PyQt4.QtGui import * from qgis.core import * class ThreadTest: def __init__(self, iface): self.iface = iface def initGui(self): self.action = QAction( u"ThreadTest", self.iface.mainWindow()) self.action.triggered.connect(self.run) self.iface.addPluginToMenu(u"&ThreadTest", self.action) def unload(self): self.iface.removePluginMenu(u"&ThreadTest",self.action) def run(self): BusyDialog(self.iface.mainWindow()) class BusyDialog(QDialog): def __init__(self, parent): QDialog.__init__(self, …


2
processing.runalg()引发“ TypeError:不允许捕获未继承自BaseException的类”
大家好,我是PyQGIS的新手,我一直在尝试在QGIS 3.0中运行脚本而没有成功(它在2.18中完美运行),并且总是遇到相同的错误: AttributeError:模块“处理”没有属性“ runalg”在处理上述异常期间,发生了另一个异常:追溯(最近一次调用为最后一次):文件“ C:\ PROGRA〜1 \ QGIS3〜1.0 \ apps \ Python36 \ lib \ Runcode exec(code,self.locals)文件中的code.py“,行91,TypeError中的行8,”:捕获不继承自BaseException的类是不允许的 这与PYTHONPATH有关吗?输入时,我什至看不到算法列表:processing.alglist()

3
在QGIS中将多个点对齐到线?
我想使用指定的公差或围绕线对象的缓冲区将多点对齐到一条线或一层内的线。请参考附件中的示例草图。 出于本示例的考虑,在图片之前,最接近直线的点在直线的5个地图单位内,而最外面的点则在10个地图单​​位之外。我想使用5个地图单位的公差将最近的点捕捉到最近的线上,以在AFTER图片中获得结果。


2
在PyQGIS中检索可用的PostGIS连接
我可以在PyQGIS中检索到PostGIS数据库的可用连接吗?我想提供一个可用的数据库连接列表,然后在我的插件的用户界面中提供一个表列表。 我检查了食谱,但找不到进一步的方法。
11 qgis  postgis  pyqgis 

3
如何从QGIS处理加载内存输出?
许多处理算法可以选择将输出保存为内存。如果从工具箱运行,则可以正常工作,因为您可以选中“运行算法后打开输出文件”框。 查看QGIS的源代码,似乎在函数中定义了用于加载内存层的代码Postprocessing.handleAlgorithmResults。该函数使用对alg.outputs列表的访问权,并执行以下操作: for out in alg.outputs: progress.setPercentage(100 * i / float(len(alg.outputs))) if out.hidden or not out.open: continue if isinstance(out, (OutputRaster, OutputVector, OutputTable)): try: if out.value.startswith('memory:'): layer = out.memoryLayer # NOTE!! QgsMapLayerRegistry.instance().addMapLayers([layer]) # NOTE!! else: # ... 当您从控制台运行处理算法时,是否可以在不访问该对象的情况下加载图层?我可以跑 processing.runalg("qgis:intersection", layer1, layer2, "memory:") 甚至 processing.runalg("qgis:intersection", layer1, layer2, "memory:myLayerName") 但是,我找不到一种方法来获取结果输出。

1
使用PyQGIS以编程方式打开/关闭面板
在QGIS中,可以right-click在工具栏中的某个区域打开/关闭面板,如下面的屏幕截图所示(例如GPS信息面板)。 我需要以编程方式执行此操作,因此如何从PyQGIS切换开/关面板?我发现QgsInterface该类具有一些addDockWidget和removeDockWidget方法,但是我真的不知道这是否是实现此目标的正确方法...
10 pyqgis  panel 

1
QGIS Modeler if / else条件,用于Modeler的自定义脚本
我想在模型中创建一个简单的if / else函数,我想知道是否可行。 我希望这件事做到这一点,如果选择了“细分层”的输入,则它不必执行“细分(均移)”,而将“细分层”用作下一个流程的输入。 “细分(平均转换)”的输入如下 尝试实现约瑟夫的答案后进行更新:我使用以下代码,并收到此错误 更新2,替换参数后,在第28行出现错误,这是“ else:”立场 ##Example=name ##BGREN=optional raster ##Segment_Layer=optional vector ##output=output vector if BGREN is not None: processing.runalg('otb:segmentationmeanshift', \ -BGREN\ -0\ -70\ -70\ -0.1\ -100\ -100\ -0\ -0\ -0\ -'True'\ -'False'\ -1\ -0.1\ -'Layer'\ -'DN'\ -1024\ -1\ -0\ -output) else: output=Segment_Layer 更新它的工作原理:)经过几次尝试,并在Joseph的帮助下,此代码现在像个魅力一样工作了,最后的技巧是用'None'替换两个可选值。 ##Example=name ##BGREN=optional raster ##Segment_Layer=optional vector …

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.