Questions tagged «pyqgis»

QGIS的Python绑定。

2
通过PyQGIS添加工具栏?
通过教程,我学习了如何通过python将工具按钮添加到plugins-toolbar。现在,我想知道如何通过python添加带有工具栏按钮的完整工具栏。 有人可以提供示例代码吗?
10 pyqgis  toolbar 

3
使用Python获取QGIS中一项选定功能的数据吗?
我对python和QGIS有问题。是否可以使用python获取QGIS中一项选定功能的数据,如果可以,怎么办? 在我的示例中,我有一个图层,其中显示了一些用于城市规划的地块。如果现在选择一个宗地,我想获取该宗地的数据。此数据应通过python脚本读取,然后添加到自动创建的PDF文件中。最后一步很容易,但是我没有从所选功能中获取数据。 可以从活动层获取数据,但是也可以从该层的一个选定要素中获取数据吗? 希望您能够帮助我。问候
10 qgis  python  pyqgis 

2
使用PyQGIS从QGIS上下文菜单中删除“另存为” [关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为地理信息系统堆栈交换的主题。 10个月前关闭。 我想从QGIS层的上下文菜单中删除一个现有选项(“另存为”),到目前为止,我发现的是在中添加新操作LegendItems,或用新选项完全覆盖。但是找不到使用该选项的任何选项,因此我可以删除现有的默认上下文菜单选项。 我还看到有可用的menuProvider()方法,但此方法无法获取任何详细信息。 如何从QGIS的上下文菜单中删除现有的“另存为”选项?
9 pyqgis  pyqt 



1
QGIS 2.18.10支持哪些SAGA版本?
从QGIS 2.18.10开始,SagaAlgorithmProvider不再有名为的字典supportedVersions。以前,它看起来像这样: supportedVersions = {"2.1.2": ("2.1.2", SagaAlgorithm212), "2.1.3": ("2.1.3", SagaAlgorithm213), "2.1.4": ("2.1.4", SagaAlgorithm214), "2.2.0": ("2.2.0", SagaAlgorithm214), "2.2.1": ("2.2.0", SagaAlgorithm214), "2.2.2": ("2.2.2", SagaAlgorithm214), "2.2.3": ("2.2.3", SagaAlgorithm214), "2.3.0": ("2.3.0", SagaAlgorithm230), "2.3.1": ("2.3.0", SagaAlgorithm230)} 现在它只是说: if not version.startswith('2.3.'): ProcessingLog.addToLog(ProcessingLog.LOG_ERROR, self.tr('Problem with SAGA installation unsupported SAGA version found.')) 因此,我假设现在仅支持从2.3开始的SAGA版本。但是,在我的QGIS GUI中,“日志消息面板”告诉我不支持SAGA 2.3.1版(有趣的是,您可以在诸如的自定义应用程序中使用SAGA 2.3.1 RQGIS)。那么QGIS 2.18.10支持哪些SAGA版本?

1
脚本化Atlas中基于表达式的标签无法更新
我尝试遵循以编程方式从模板加载作曲家,并使用pyQgis生成图集,以使用pyqgis自动化图集打印作曲家: 具体在图集代码中说: myAtlasMap = myComposition.getComposerMapById(0) myAtlas = QgsAtlasComposition(myComposition) myAtlas.setCoverageLayer(atlas_desktop) myAtlas.setComposerMap(myAtlasMap) myAtlas.setFixedScale(True) myAtlas.fixedScale() myAtlas.setHideCoverage(False) myAtlas.setFilterFeatures(True) 此代码适用于我的任务,我使用了100张新的Atlas功能图,但在我的template.qpt代码中有一些这样的标签: QGIS [%concat( "OBJECTID" )%] 这OBJECTID是所有新的100册feutures地图相同。知道为什么吗?如果我使用手动地图集导出,则可以进行任何地图OBJECTID更改。 我有更多详细信息,在我template.qpt有一些基本样式规则或基本标签规则的情况下,true不起作用与图层图集相关的任何内容: intersects($atlasgeometry, $geometry ) 要么 $id = $atlasfeatureid 那就是100张地图中的一些: 我认为,以编程方式从模板加载composer并使用pyQgis生成图集只是从我的图集层中逐一导出我的特征,而模板中的图集保持为False。 任何的想法 ?

1
如何解决QGIS中“日志消息”面板的问题:“未记录100个以上的请求错误。”?
我在pyqgis中使用以下代码从WMS层捕获错误/警告,以便在检测到错误/警告后立即触发重新绘制(基于先前的问题:如何从日志消息面板捕获WMS错误消息)在QGIS和python中?) 但是显然,“ WMS”提供者似乎有一个限制,即不能向消息日志发送超过100个错误请求,这意味着在第100个错误/警告之后,即使WMS层处于仍然无法正确响应。但是,如果我将自己的消息发送到日志面板,则似乎没有任何限制(请参见下面的代码)。 是否有可能直接从此处负责的实例(我猜是WMS提供者)捕获错误/警告,而不是使用消息日志面板?还是只是在运行的进程中清除/重置日志消息面板或删除限制? 我正在Windows 10上使用QGIS 2.18.2。 这是python代码: # coding=utf-8 from qgis.core import * wmsLayer_name="wms-dtk50_wgs" url_with_params ='url=http://sg.geodatenzentrum.de/wms_dtk50?&crs=EPSG:25832&featureCount=10&format=image/png&layers=DTK50&styles=' wmsLayer = QgsRasterLayer(url_with_params, wmsLayer_name,'wms') QgsMapLayerRegistry.instance().addMapLayer(wmsLayer) def errorCatcher( msg, tag, level ): if tag == 'WMS' and level != 0: #Warnings or Errors (0: Info, 1:Warning, 2:Error) print "WMS error detected!" myWMSLayer = QgsMapLayerRegistry.instance().mapLayersByName("wms-dtk50_wgs")[0] …
9 qgis  pyqgis  wms  log 

1
在QGIS中自动保存python脚本
编写python脚本时,当用户使用ctrl+S命令或使用来保存其主项目时,QGIS不会保存它们Project->Save。此外,离开QGIS时,该程序不会警告python脚本中未保存的更改,即使它警告了项目中未保存的更改并提供了保存它们的警告。 是否可以更改此行为? 我应该补充一点,退出时使用对白选项来保存项目确实确实可以保存项目,而不是python脚本。这些简直就是输了。

2
在QGIS 2.18.1中通过python合并矢量层
我目前正在使用以下代码将两个矢量层合并在一起: def append_layers(layer1, layer2, output): from processing.core.Processing import Processing Processing.initialize() import processing.tools processing.tools.general.runalg("qgis:mergevectorlayers", layer1, layer2, output) append_layers(layer1.shp, layer2.shp, output.shp) 这在QGIS 2.14中似乎可以正常工作,但是在2.18.1中失败,并显示以下消息: Error: Wrong number of parameters ALGORITHM: Merge vector layers 在2.14和2.18之间是否有变化?还是我只是缺少真正明显的东西?


2
将文本从每个分隔符之前的字符串字段拆分为新字段
我试图从包含以点分隔的文本的字符串字段中提取文本数据,然后使用字段计算器将其放置在新字段中。 我正在使用此python函数(源自QGIS中/之前的如何提取文本?): from qgis.core import * from qgis.gui import * @qgsfunction(args='auto', group='Custom') def func(value1, feature, parent): return value1.split('.')[0] 这将返回第一个点之前的所有文本。现在,我想知道如何编写该函数以将每个分隔的文本行放在单独的字段中。 之前: 后:

1
在QGIS API中保存空间索引?
我正在尝试使用Qgis API为某些shapefile创建空间索引。我已按照内森·伍德罗(Nathan Woodrow)博客(https://nathanw.net/2013/01/04/using-a-qgis-spatial-index-to-speed-up-your-code/)中所述的步骤进行操作,并且效果很好: layer = QgsVectorLayer(path, name, 'ogr') idx = QgsSpatialIndex() all_features = layer.getFeatures() map(idx.insertFeature, all_features) 我的问题是我没有任何结果文件(.qix?.sbn?.sbx?) 如何保存该空间索引,以便Shapefile的未来用户可以从中受益?

3
更改Shapefile数据源编码?
我试图通过属性更改唯一的shapefile数据源编码,以及如何将shapefile从LATIN1编码为UTF-8?但这并没有改变。 如果不保存QGIS项目,是否不能直接更改shapefile数据源编码? 我也尝试了这段代码,它显示了更改编码,但是当我再次打开shapefile时,它显示了相同的旧系统编码: for layer in QgsMapLayerRegistry.instance().mapLayers().values(): layer.setProviderEncoding(u'UTF-8') layer.dataProvider().setEncoding(u'UTF-8') print layer.name(), layer.dataProvider().encoding() (我不是保存QGIS项目,而是直接访问和保存shapefile。保存项目并执行此任务后,它将正常工作)
9 qgis  pyqgis  encoding 

1
如何在独立的PyQGIS脚本中列出项目层?
我正在尝试加载现有的.qgs项目并获取其中的图层列表。我似乎可以打开该项目,但无法获取图层列表。对于基本的PyQGIS语法,我有些困惑,本食谱未涵盖此特定示例。 from qgis.core import * from PyQt4.QtCore import QFileInfo QgsApplication.setPrefixPath(r"C:\OSGeo4W\apps\qgis-ltr", True) qgs = QgsApplication([], False) qgs.initQgis() # Get the project instance project = QgsProject.instance() # Open the project project.read(QFileInfo( r'C:\path\to\project\project.qgs')) print project.fileName() # Get the layers in the project layers = QgsMapLayerRegistry.instance().mapLayers() print layers qgs.exitQgis() 当前,layers尽管该项目存在并且其中包含许多层,但是这仅返回一个空dict。
9 pyqgis 

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.