从更改的数据源进行Qgis图层更新
我试图让图层在其数据源更改时自动更新。我正在使用R编写具有属性的shapefile,并根据QGIS中的该属性进行着色。 我想编写一个具有不同属性值的新shapefile,并更新Qgis贴图颜色。第1步触发该过程,第2步从修改后的shapefile重新加载图层。我在这里担心它的第2步。 其他问题/邮件列表聊天者提到triggerRepaint了在图层上使用的内容-不起作用。其他建议包括setCacheImage(None)一遍又一遍不起作用。该层确实会最终更新,但是我真的看不到逻辑,有时在我什么都不做之后会意外地发生。或者也许我在两分钟前做了一些事情。 一种可更新的更新方式是从图例菜单中复制图层-副本始终从当前shapefile获取其数据,而原始图层也将自行更新!因此,必须有某种方法可以做到这一点。 我认为它在2.8中工作得更好,但这是2.10,因此也许某个地方存在一个新的错误。 相关,但在2.10中不适用于我: 如果在QGIS中更改了源,如何自动重新加载栅格图层? 我尝试过的其他方法: layer.dataProvider().dataChanged.emit() -工作一次,然后不在同一层上工作 我想我已经找到了为什么要复制图层的原因-如果我基于更新的图层创建一个新的一次性图层,然后调用.triggerRepaint()更新的图层,它将在地图画布上更新: QgsVectorLayer( layer.source(), "layer copy", layer.providerType() ) layer.triggerRepaint() 如果我使用不同的图层源,它将无法正常工作,因此似乎是基于相同图层源创建图层对象的。 现在,使用栅格图层(来自GeoTIFF)进行快速测试,并且只需调用rlayer.triggerRepaint()即可可靠地更新地图画布中栅格的视图。