Có thể chỉ chọn một dòng đường viền để ghi nhãn?
Tôi có nhiều nhãn cho mỗi dòng và tôi chỉ thích dán nhãn cho các nhãn chính, như 1000 m
và1500 m
Có thể chỉ chọn một dòng đường viền để ghi nhãn?
Tôi có nhiều nhãn cho mỗi dòng và tôi chỉ thích dán nhãn cho các nhãn chính, như 1000 m
và1500 m
Câu trả lời:
Trong QGIS 2.6 (có thể là các phiên bản trước đó, tôi không biết) bạn có thể làm điều này trong phần Thuộc tính lớp, Labels
tab, Rendering
phần. Khoảng một nửa danh sách các tùy chọn kết xuất là một nút cho phép bạn viết một biểu thức sẽ xác định danh sách các tính năng sẽ thực sự được gắn nhãn. Biểu hiện của bạn sẽ là một cái gì đó như "Elevation" IN (1000, 1500)
. Đây là nút (màu vàng), tôi có bộ này chỉ đặt các đường viền nhãn với giá trị độ cao là 32:
Một cách tiếp cận sẽ là tải lớp đường viền và tạo kiểu cho nó. Sau đó tải lại cùng một lớp và áp dụng bộ lọc (nhấp chuột phải vào lớp đó và đi xuống 'Bộ lọc ..') Sử dụng biểu thức lọc tương tự như bộ lọc được hiển thị trong hình. Trong trường hợp của tôi, tôi muốn các đường viền chính ở các khoảng cách dọc 50 mét và trường chứa các giá trị độ cao được gọi là "prop_value".
Khi lớp được lọc hiển thị các đường viền chính đã được tải, áp dụng các đường viền và (nếu cần) củng cố kiểu đường kẻ như được hiển thị.
Biểu thức lọc:
("prop_value" % 50) = 0
cũng sẽ chọn các đường viền theo các khoảng cách dọc là 50 mét. Hoạt động với cơ sở dữ liệu Spatialite, không chắc chắn về shapefiles.
Tôi đang sử dụng phương pháp này giúp việc ghi nhãn và hiển thị đường viền theo điều kiện khá dễ dàng.
Tôi sử dụng "Thuộc tính được xác định dữ liệu" của chiều rộng và màu sắc của biểu tượng đường với biểu thức (xem ảnh chụp màn hình 1) để bạn có thể áp dụng các độ rộng đường khác nhau dựa trên các điều kiện tùy chỉnh và biểu thức tương tự để ghi nhãn (xem ảnh chụp màn hình 2).
Chỉ cần đặt các giá trị cần thiết cho các biểu thức và đó là tất cả.
Tức là nếu bạn muốn ẩn các đường viền ngoài 500 m, bạn có thể sử dụng biểu thức này cho các thuộc tính được xác định dữ liệu của biểu tượng đường:
CASE WHEN Elevation / 500 - floor(Elevation / 500) = 0 then
color_rgba(255,255,255,100)
else
color_rgba(255,255,255,0)
end
tức là để ghi nhãn chỉ cách nhau 500m, hãy sử dụng biểu thức này cho:
CASE WHEN Elevation /500 - floor(Elevation / 500) = 0 THEN Elevation || ' m' END
tức là để áp dụng độ rộng dòng khác nhau, hãy sử dụng một biểu thức như thế này cho các thuộc tính được xác định dữ liệu:
CASE WHEN Elevation / 100 - floor(Elevation / 100) = 0 THEN
0.25
WHEN Elevation / 50 - floor(Elevation / 50) = 0 THEN
0.15
ELSE
0.1
END