Tạo thuộc tính theo cách tự động với QGIS?


11

Tôi muốn tự động tạo ID trong khi tôi tạo các tính năng mới. Vì vậy, mỗi khi tôi tạo một điểm mới, ID của nó sẽ tăng thêm 1 như sau:

Feature 1: id 1
Feature 2: id 2
Feature 3: id 3

Làm thế nào tôi có thể tấn công này?

Câu trả lời:


8

Nếu bạn nhấp chuột phải vào lớp của bạn và Properties > Fieldssau đó nhấp vào Text Edit, bạn có thể đặt Giá trị mặc định (bằng cách nhập giá trị hoặc sử dụng biểu thức) sẽ tự động xuất hiện trong bảng thuộc tính.

Thật không may, việc sử dụng một biểu thức như $rownum(sẽ mang lại cho bạn các id duy nhất cho các tính năng của bạn) không hoạt động (tôi đoán là vì tính năng này phải được cam kết trước?). Nhưng chúng ta có thể tạo một hàm đếm số lượng tính năng được tạo và thêm 1. Bạn có thể truy cập Trình chỉnh sửa chức năng như trong hình:

Chức năng chỉnh sửa

Sau đó, trong Trình chỉnh sửa chức năng, tạo một tệp mới hoặc chỉnh sửa tệp hiện có và sử dụng mã sau đây:

from qgis.core import *
from qgis.gui import *

@qgsfunction(args='auto', group='Custom')
def update(feature, parent):
    layer = qgis.utils.iface.activeLayer()
    x = layer.featureCount()
    return x + 1

Nhấp vào Tải, sau đó chuyển đến tab Biểu thức bên cạnh và chèn biểu thức:

update()

Sau đó bấm OK và bạn sẽ thấy giá trị xem trước:

Xem trước

Nhấp vào OK , Áp dụng vv và bây giờ hy vọng khi bạn tạo một tính năng, nó sẽ tự động tạo một id duy nhất trong trường bạn đã chọn.



3

Tôi nghĩ rằng bạn không thể đặt giá trị mặc định khi tạo một tính năng mới nhưng bạn có thể thử các công việc sau:

  • khi hoàn thành việc tạo các tính năng của bạn, hãy chuyển đến bảng thuộc tính
  • Chuyển đến máy tính trường và tạo một cột mới được gọi idvới kiểu Int
  • Khi chèn giá trị @row_numbersẽ mang lại giá trị duy nhất theo số hàng
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.