Làm cách nào để đặt giá trị mặc định cho các thuộc tính trong shapefiles?


8

Trong QGIS 2.14.6 tôi muốn xác định một giá trị mặc định cho một thuộc tính trong lớp shapefile (hoặc lớp spatialite) được áp dụng nếu người dùng không đặt giá trị rõ ràng.

Có cách nào để đạt được điều này bằng cách sử dụng các công cụ / cài đặt tiêu chuẩn (không có python) không?


1
Nhưng ngoài các trường ảo này không phải là thuộc tính 'thực' của nguồn dữ liệu của tôi (theo như tôi biết chỉ được lưu trữ với dự án), tôi sẽ làm thế nào để một trường ảo phản ứng với người dùng chỉnh sửa theo cách đặt giá trị của nó thành, giả sử 3.1415926, nếu người dùng không đặt giá trị thuộc tính? Và như vậy có thể được chuyển đổi thành các thuộc tính thực sự? Các câu hỏi về câu hỏi ... Bên cạnh đó, 'không có trăn' không bắt buộc, tôi sẽ ổn ngay cả khi tôi có thể đạt được điều này với 'một chút trăn' ;-) (Và bình luận của @ Joseph?!)
Jochen Schwarze

Xin lỗi, đã xóa nhận xét của tôi: "Bạn có thể sử dụng các trường ảo" để cung cấp phương thức khả thi bằng cách sử dụng plugin =)
Joseph

kiểm tra câu hỏi này, nhưng là một mã trăn. gis.stackexchange.com/questions/192105/ Khăn
Fran Raga

Câu trả lời:


16

Quốc gia 3

Chọn lớp trong bảng điều khiển lớp và nhấp chuột trái. Chọn thuộc tính. Chọn "Biểu mẫu thuộc tính" như hiển thị bên dưới. Chọn các trường từ danh sách "Widgets có sẵn" như hiển thị. Cung cấp một biểu thức cho giá trị mặc định trong hộp thoại "Mặc định". Nếu "Áp dụng giá trị mặc định khi cập nhật" được chọn, giá trị sẽ được điều chỉnh mỗi khi thay đổi hình dạng của tính năng hoặc thuộc tính khác. Điều này làm cho những thứ như dấu thời gian "last_modified" hoặc "khu vực" được cập nhật có thể.

Đặt giá trị mặc định của trường QGIS 3.0.3


Quốc tế 2.18

Bắt đầu từ QGIS 2.18, điều này là có thể mà không cần bất kỳ công cụ bổ sung nào.

Chỉ cần đi đến thuộc tính trường bấm vào nút trong trường bạn muốn gán giá trị mặc định và nhập biểu thức. Nó cũng có thể lấy hình học làm đầu vào.

nhập mô tả hình ảnh ở đây

Sidenote: Tôi biết rằng câu hỏi ban đầu nhắm vào QGIS 2.14, nhưng tôi nghĩ rằng điều này vẫn được các độc giả tương lai của câu hỏi này quan tâm.


1
Chắc chắn có hứng thú;)
Joseph

1
Chỉ cần nhìn vào tính năng trong 2.17. Chính xác những gì tôi đang tìm kiếm.
Jochen Schwarze

7

Có plugin AutoFields cho phép bạn tạo (hoặc sửa đổi) các trường thuộc tính và tự động cập nhật chúng với một biểu thức tùy chỉnh .

Nó cũng đã được thử nghiệm với các định dạng khác nhau và tự động cung cấp không được coi là các trường ảo (trích dẫn từ trang chủ của plugin ):

Do AutoField có hoạt động với định dạng vector 'X' không?

Chúng tôi đã thử nghiệm AutoField trên PostgreSQL / PostGIS, SpatiaLite , Shapefiles, WFS-T (Dịch vụ tính năng web giao dịch) và các lớp Bộ nhớ. Vui lòng cho tôi biết nếu bạn sử dụng AutoField trên các định dạng vector khác.

Có phải AutoField giống như Trường ảo?

Không. Không giống như các trường ảo, AutoFields:

  • Lưu trữ các giá trị tính toán trong dữ liệu;
  • Độc lập với các dự án của QGIS, tức là bạn có thể chuyển đổi giữa các dự án của QGIS và AutoFields vẫn sẽ hoạt động;
  • Chỉ làm việc trên các lớp vector có thể chỉnh sửa.

5

Vì tôi muốn sử dụng các giá trị thuộc tính được đề cập ở trên để kiểm soát một số khía cạnh của hệ thống ký hiệu (kích thước ký hiệu, độ mờ), một số nghiên cứu tiếp theo cho thấy rằng với các thuộc tính được xác định dữ liệu, có một cách tuyệt vời khác (và linh hoạt) để đạt được điều này. Một biểu thức (chung)

if("attribute_name" is null, @default_value, "attribute_name")

trong đó @default_valueđược định nghĩa là biến dự án, trả về mặc định mà người dùng có thể xác định khi không có giá trị nào được đặt cho thuộc tính attribute_namevà giá trị khác.

Xác định các biến trong thuộc tính dự án:

nhập mô tả hình ảnh ở đây

Thiết lập biểu thức với các thuộc tính được xác định dữ liệu (màu đỏ với độ mờ do người dùng xác định trong trường hợp này):

nhập mô tả hình ảnh ở đây

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.