Đang tải lại một tệp CSV trong QGIS?


9

Tôi sử dụng QGIS để minh họa kết quả từ mô phỏng Matlab của mình. Matlab tạo ra một tệp CSV được kết nối với một shapefile trong QGIS.

Hiện tại tôi phải đóng và mở lại QGIS để hiển thị kết quả mới từ mô phỏng Matlab.

Có thể tải lại bảng thuộc tính của tệp CSV mà không cần đóng và mở lại QGIS không?


Cảm ơn @ Jason tip của bạn đã làm việc thích một nét duyên dáng cho tôi - sử dụng QGIS 3.10 tùy chọn là dưới Properties-> nguồn [propertiescreatespatialindex! ] ( I.stack.imgur.com/5G3y5.png )
Hannes Buhrmann

Câu trả lời:


3

Tôi có thể đề xuất một quy trình công việc thay thế, trong khi không nhất thiết phải dễ dàng hơn việc đóng và mở QGIS mỗi lần, có thể có ý nghĩa hơn:

  • Nhập shapefile của bạn vào spatialite
  • Nhập CSV vào spatialite (sử dụng tùy chọn "Virtual TXT / CSV)
  • Tạo chế độ xem không gian trong spatialite bằng cách THAM GIA bảng không gian (shapefile) vào bảng CSV ảo

Bây giờ, Bạn có thể hiển thị chế độ xem trong QGIS giống như bất kỳ lớp không gian nào và sử dụng các giá trị THAM GIA từ spatialite. Nhưng, mỗi khi CSV được tạo lại, bạn sẽ cần DROP bảng CSV ảo và liên kết lại với nó. Sau đó, một làm mới trong QGIS sẽ hiển thị các giá trị mới. Điều này chỉ mất một chút thời gian và hơn thế nữa, bạn có thể xác định nhiều chế độ xem và giữ những quan điểm trước đó nếu cần ...

HTH


2

Đố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.


0

Mở thuộc tính lớp của shapefile và đi đến General- Coordinate reference system, nhấp Create spatial index. Một khi nó được hoàn thành, shapefile được làm mới.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.