在QGIS中重新加载CSV文件?


9

我使用QGIS来说明Matlab仿真的结果。Matlab生成CSV文件,该文件已连接到QGIS中的shapefile。

目前,我必须关闭并重新打开QGIS才能显示Matlab仿真的新结果。

是否可以在不关闭和重新打开QGIS的情况下重新加载CSV文件的属性表?


谢谢@Jason,您的工作技巧对我来说很有吸引力-使用QGIS 3.10,该选项位于properties-> source ![propertiescreatespatialindex ](i.stack.imgur.com/5G3y5.png
Hannes Buhrmann

Answers:


3

我可以提出一个替代的工作流程,虽然不一定比每次关闭和打开QGIS都容易,但可能更有意义:

  • 将shapefile导入spacespaceite
  • 导入CSV到spacespaceite(使用“虚拟TXT / CSV”选项)
  • 通过将空间表(shapefile)加入虚拟CSV表,在spacespaceite中创建空间视图

现在,您可以像任何空间图层一样在QGIS中显示视图,并使用来自spacespaceite的JOINed值。但是,每次重新创建CSV时,您都需要删除虚拟CSV表,然后重新链接到该表。然后,QGIS中的刷新将显示新值。这只需要一点时间,而且,您可以定义许多视图,并在需要时保留先前的视图...

高温超导


2

对于仍在寻找答案而不使用spacespaceite格式的任何人,我发现了一些可行的方法。

如果您有一个csv并使用联接将其联接到空间图层,则联接的选项之一是缓存该层。如果转到图层的属性,然后转到联接的数据,然后单击“编辑联接”,则可以使用此选项。如果禁用了cache选项,则可以在csv更改后重新加载数据层,然后触发对地图进行重新绘制以获取刷新的地图视图。

您可以在Python控制台中进行重新加载和重新绘制。首先,您必须为地图画布,csv和图层定义名称:

mc = iface.mapCanvas()
layer=mc.currentLayer()
csv_layer=mc.currentLayer()

当使用currentLayer方法在控制台中命名图层时,请确保这些图层处于活动状态(它必须是“当前图层”)。

然后,如果将联接的cache选项设置为off,则可以更改csv,然后在Python控制台中使用以下两个命令来重绘地图:

csv_layer.reload()
layer.triggerRepaint()

这对我有用,但是我只有100行数据。当您拥有更大的数据集时,如果不进行缓存,操作将会很慢。


0

打开shapefile的图层属性,然后转到General- Coordinate reference system,单击Create spatial index。完成后,将刷新shapefile。

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.