Đối với bất cứ ai vẫn đang tìm kiếm một câu trả lời cho điều này mà không sử dụng định dạng spatialite, tôi đã tìm thấy một cái gì đó hoạt động.
Nếu bạn có một csv và sử dụng một phép nối để nối nó với một lớp không gian, một trong các tùy chọn của phép nối là lưu trữ lớp đó. Bạn có thể vào tùy chọn này nếu bạn đi đến các thuộc tính của lớp của bạn, sau đó đến dữ liệu đã tham gia và nhấp vào chỉnh sửa tham gia. Nếu bạn tắt tùy chọn bộ đệm , bạn có thể tải lại lớp dữ liệu sau khi csv thay đổi và sau đó kích hoạt bản vẽ lại bản đồ của bạn để có chế độ xem bản đồ được làm mới.
Bạn có thể thực hiện tải lại và sơn lại trong Bảng điều khiển Python. Trước tiên, bạn phải xác định tên cho khung vẽ bản đồ, csv và cho lớp:
mc = iface.mapCanvas()
layer=mc.currentLayer()
csv_layer=mc.currentLayer()
Hãy chắc chắn để các lớp hoạt động khi bạn đặt tên chúng trong bảng điều khiển khi sử dụng phương thức currentLayer (nó phải là 'lớp hiện tại').
Sau đó, nếu bạn đặt tùy chọn bộ đệm là tắt cho phép nối của mình, bạn có thể thay đổi csv và sau đó sử dụng hai lệnh sau trong bảng điều khiển Python để vẽ lại bản đồ của bạn:
csv_layer.reload()
layer.triggerRepaint()
Điều này làm việc cho tôi, nhưng tôi chỉ có 100 hàng dữ liệu. Nó có thể là các hoạt động sẽ chậm mà không lưu trữ khi bạn có một bộ dữ liệu lớn hơn.