Làm thế nào để tượng trưng cho các tính năng với các giá trị NULL trong hệ thống ký hiệu tốt nghiệp?


15

Tôi có một bộ dữ liệu tính năng đa giác và một thuộc tính từ một bảng khác mà tôi tham gia (một-một) trong QGIS để tượng trưng cho các thuộc tính dưới dạng bản đồ choropleth. Tuy nhiên, không phải tất cả các trường đa giác đều có trường khớp trong bảng thuộc tính số, do đó, có một số giá trị null khi tạo ra ký hiệu chia độ.

Từ nghiên cứu của tôi, lời khuyên phổ biến nhất trong tình huống này là bao gồm một bản sao của bộ dữ liệu đa giác (hoặc một số nền tảng khác) xác định một hệ thống ký hiệu mặc định. Điều này hoạt động vì các giá trị null không được phân loại trong hệ thống ký hiệu tốt nghiệp, vì vậy người ta có thể thấy "bên dưới" chúng. Tôi đã đính kèm một hình ảnh chính xác này. Các tính năng màu xám đen không tồn tại trong bảng tham gia ( mb_percentile_isochrones_all), nhưng vẫn tồn tại trong bảng đa giác ranh giới ( mb2013_wgtn). Vì vậy, tôi cần hai phiên bản của mb2013_wgtnbảng để hiển thị các tính năng "không có dữ liệu".

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

Tuy nhiên, điều này có vẻ không thanh lịch với tôi. Trực quan hơn nhiều sẽ là xác định một biểu tượng giá trị null. Có lẽ điều này có thể hoàn toàn minh bạch để phù hợp với những gì hiện đang tồn tại, hoặc có lẽ nó sẽ là một loại màu xám bị tắt tiếng bất cứ điều gì người dùng muốn. Vấn đề là, hiện tại người ta cần hai lớp khác nhau trong nội dung để xử lý ký hiệu của các giá trị null. Điều này có nghĩa là để thay đổi hệ thống ký hiệu của tất cả các tính năng của bạn cùng một lúc (giả sử, nếu bạn muốn tăng độ rộng của tất cả các đường viền), điều này phải được xử lý hai lần: một lần trong các thuộc tính cho tính năng với hệ thống ký hiệu tốt nghiệp và một lần cho lớp "nền" xử lý ký hiệu null.

Có thể xác định ký hiệu giá trị "null" mà không cần sử dụng "bản sao" của cùng một lớp được sử dụng cho hệ thống ký hiệu tốt nghiệp, trong QGIS (2.6.1) không?


Có gì sai khi có cùng một lớp hai lần với hệ thống ký hiệu khác nhau? Có lẽ sử dụng tính năng lọc thuộc tính để không có đa giác xuất hiện trong cả hai lớp nếu bạn đang nhầm lẫn trong việc xác định hoặc xử lý địa lý. Các tính năng chưa từng có là 'null' trong giá trị tham gia của chúng hay chúng có giá trị không xuất hiện trong bảng không?
Michael Promotionson

1
1. Vấn đề: nếu tôi muốn kiểm soát các thuộc tính chung của các tính năng bằng một giá trị và bằng null (ví dụ: màu đường viền), nó đã được thực hiện hai lần. Điều này làm cho việc quên thay đổi một trong số chúng dễ dàng hơn hoặc mắc một lỗi nhỏ (ví dụ: sai màu xám cho đường viền). 2. Không có vấn đề liên quan đến sự nhầm lẫn cho việc xử lý địa lý, chỉ là ký hiệu: Tôi muốn tượng trưng cho nulltính năng trong cùng một lớp. 3. Các tính năng chưa từng có nằm nulltrong giá trị tham gia của chúng (như được thấy trong bảng thuộc tính sau khi tham gia bảng thuộc tính QGIS).
alphasoup

Điều này cũng gây khó khăn hơn khi xây dựng một huyền thoại để bao gồm một mẫu "không có dữ liệu", vì biểu tượng này sẽ đến từ một lớp khác.
alphasoup

2
Bạn đúng. Không có nơi nào để chọn 'hiển thị các tính năng NULL như thế này' trong hộp thoại biểu tượng chia độ, các hàng có giá trị NULL đơn giản không được hiển thị.
Michael Promotionson

Câu trả lời:


17

Như @ MichaelMiles-Promotionson đã đề cập, dường như không có cách nào để tượng trưng cho các tính năng NULL . Tuy nhiên, có một cách khác để bạn tạo bộ lọc để buộc QGIS coi các giá trị NULL là một số nguyên như 0. Tôi đã bao gồm một ví dụ trong đó tôi đã tạo 3 đa giác đơn giản cho mỗi đa giác có một giá trị nhất định:

3 đa giác

Bảng thuộc tính

Đây là Symbology tốt nghiệp mà tôi đã sử dụng với lệnh sau:

case when "Some_Value" IS NULL then 0 else "Some_Value" end

Tốt nghiệp cộng sinh

Hi vọng điêu nay co ich!


Điều này khá hữu ích và có lẽ tôi sẽ áp dụng điều này vào thực tế. Vấn đề tôi dự đoán là 0 là một giá trị có ý nghĩa trong tập dữ liệu của tôi. Tôi có thể có thể sử dụng -1 hoặc một cái gì đó. Nhưng trong cả hai trường hợp, điều này sẽ làm cho việc nhận dạng tự động các lớp bị phá vỡ hơi khó sử dụng. Có lẽ tôi nên gửi một yêu cầu tính năng cho điều này vì hiện tại rõ ràng cách giải quyết không lý tưởng.
alphasoup

Có, bao gồm NULLcác giá trị có thể khá hữu ích. Đây không phải là một cách giải quyết tốt nhưng bạn luôn có thể gửi yêu cầu tính năng và hy vọng nó sẽ có sẵn trong phiên bản tiếp theo :)
Joseph

6

Tôi biết nó đã được trả lời, nhưng chỉ để đưa ra một lựa chọn khác:

Bạn chỉ có thể rời khỏi trường mà không có bộ lọc hoặc giá trị (Tôi biết nó hoạt động cho CATEGORIZED hoặc RULE BASED):

http://docs.qgis.org/2.0/uk/docs/training_manual/vector_ classification / classification.html

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

Tôi đang sử dụng QGIS 2.10 và nó hoạt động.


Luôn luôn tốt đẹp để biết thêm phương pháp trong việc giải quyết hoặc giải quyết một vấn đề! +1
Joseph

1
Khuyến khích để thấy sự cải thiện này kể từ 2.6, phải không? Bạn có thể xác nhận rằng nó hoạt động khi các giá trị null đến từ một bảng đã tham gia không?
alphabetasoup

1
Một vài lưu ý về điều này mặc dù. Hệ thống ký hiệu trống hoặc NULL trong hệ thống ký hiệu dựa trên quy tắc sẽ được áp dụng cho TẤT CẢ các tính năng. Các quy tắc được áp dụng từ trên xuống, do đó, nó có thể được phủ bởi một quy tắc khác, nhưng NULL cũng sẽ ở đó. Quan trọng nếu đó là một hệ thống ký hiệu mạnh. Bạn cũng có thể "tạo" cho mình các quy tắc bằng cách trước tiên tạo chúng theo
mã vạch được

@Vesanto, tôi không biết nếu tôi có nó, hoặc nếu nó là một vấn đề. Trong trường hợp của tôi, tôi đang thêm các giá trị Z vào SHP được tạo từ các đường đồng mức, ban đầu không có giá trị Z (Z = NULL). Tôi đã đặt các tính năng có giá trị NULL thành màu đỏ và các tính năng có giá trị bất kỳ thành màu đen. Khi chỉnh sửa, ngay khi tôi đặt giá trị Z, tính năng (đường đồng mức) chuyển từ màu đỏ sang màu đen, theo cách này tôi biết những giá trị mà tôi chưa đặt giá trị Z.
Marcos Saito

@Marcos nó sẽ không là vấn đề trong trường hợp của bạn. Nhưng giả sử dòng bắt đầu có màu đỏ và bạn muốn biến nó thành vô hình một khi nó không còn trống nữa. Điều đó sẽ không làm việc.
HeikkiVesanto

4

Tương tự như những gì người dùng khác đã nói, tùy chọn tốt nhất là sử dụng các biểu tượng dựa trên quy tắc. Để tránh tự tạo quy tắc:

  1. Thay đổi loại biểu tượng thành Tốt nghiệp .
  2. Xác định cột biểu tượng, màu sắc, khoảng thời gian, vv như bình thường Biểu tượng tốt nghiệp, với các giá trị null không được hiển thị
  3. Thay đổi loại biểu tượng từ Tốt nghiệp thành Dựa trên quy tắc . Các biểu tượng được xác định trong bước trước sẽ được chuyển qua. Nhấp vào nút thêm biểu tượng và chọn ELSE . Thay đổi phong cách cho phù hợp. Lớp biểu tượng ELSE này sẽ bắt bất kỳ giá trị nào chưa được ký hiệu, bao gồm các giá trị null. Thêm biểu tượng bắt tất cả ELSE
  4. Nhấn OK. Giá trị Null bây giờ sẽ được tượng trưng. Biểu tượng tốt nghiệp, bao gồm các giá trị null

(Đã thử nghiệm trong QGIS 3.6.0)


đơn giản và hữu ích Cảm ơn. Tôi đề nghị QGIS nên có tùy chọn loại trừ giá trị để phân loại Tốt nghiệp. Tôi đã gặp phải một số nhầm lẫn khi cố gắng phân loại với các giá trị nốt được gắn cờ là -1, -999 ... vv (sử dụng QGIS 3.14 LTR). May mắn thay, QGIS tự động bỏ qua các giá trị null ít nhất là khi thực hiện ký hiệu Tốt nghiệp.
Iván Santiago
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.