Für alle, die noch nach einer Antwort suchen, ohne ein Spatialite-Format zu verwenden, habe ich etwas gefunden, das funktioniert.
Wenn Sie eine CSV-Datei haben und einen Join verwenden, um sie mit einer räumlichen Ebene zu verbinden, besteht eine der Optionen der Verknüpfung darin, die Ebene zwischenzuspeichern. Sie können zu dieser Option gelangen, wenn Sie zu den Eigenschaften Ihrer Ebene und dann zu den verknüpften Daten gehen und auf Verknüpfung bearbeiten klicken. Wenn Sie die Cache-Option deaktivieren , können Sie die Datenebene nach dem Ändern der CSV neu laden und anschließend ein Repaint Ihrer Karte auslösen, um eine aktualisierte Kartenansicht zu erhalten.
Sie können das Neuladen und Neulackieren in der Python-Konsole durchführen. Zuerst müssen Sie einen Namen für die Kartenleinwand, die CSV und für den Layer definieren:
mc = iface.mapCanvas()
layer=mc.currentLayer()
csv_layer=mc.currentLayer()
Stellen Sie sicher, dass die Ebenen aktiv sind, wenn Sie sie in der Konsole benennen, wenn Sie die currentLayer-Methode verwenden (es muss sich um die 'aktuelle Ebene' handeln).
Wenn Sie dann die Cache-Option für Ihren Join deaktiviert haben, können Sie die CSV ändern und dann die folgenden zwei Befehle in der Python-Konsole verwenden, um Ihre Map neu zu zeichnen:
csv_layer.reload()
layer.triggerRepaint()
Das hat bei mir funktioniert, aber ich hatte nur 100 Datenzeilen. Es kann sein, dass Vorgänge ohne Caching langsam sind, wenn Sie einen größeren Datensatz haben.