Bài 4: Tính năng lọc

- Quảng cáo -

Bài 01: Hello world!
Bài 02: Tải 1 lớp vector
Bài 03: Xem các thuộc tính lớp vector

Trong phần trước, chúng ta đã xem các trường và thuộc tính của lớp vectơ. Bây giờ, sử dụng các thuộc tính này để đặt một bộ lọc trên lớp để nó chứa các tính năng nhất định.

Ví dụ: có thể lọc lớp vectơ quốc gia của mình thành các tính năng chỉ có giá trị ADMIN bắt đầu bằng A:

vlayer.setSubsetString("ADMIN LIKE 'A%'")
for feature in vlayer.getFeatures():
print(feature["ADMIN"]) 

Mã code này tương đương với việc chọn các thuộc tính của lớp và nhập ADMIN LIKE ‘A%’ vào bộ lọc.

Để xóa bộ lọc, chúng tôi đặt một chuỗi tập hợp con trống:

vlayer.setSubsetString("")
for feature in vlayer.getFeatures():
print(feature["ADMIN"]) 

Để làm cho mã code linh hoạt hơn, có thể sử dụng một biến để xác định ký tự muốn lọc. Ưu điểm của việc sử dụng một biến là ta chỉ cần xác định nó một lần và sau đó chúng ta có thể sử dụng nó ở nhiều nơi trong mã code của mình. Và nếu cuối cùng, ta muốn thay đổi nó thành một giá trị khác, chúng ta chỉ phải thay đổi nó ở một nơi. Đoạn mã code sau đây cho thấy hai cách tiếp cận khác nhau để chèn một biến vào một chuỗi:

my_char = "C"
vlayer.setSubsetString("ADMIN LIKE '"+my_char+"%'")
print("The following country names start with {}:".format(my_char))
for feature in vlayer.getFeatures():
print(feature['ADMIN']) 

Cách tiếp cận đầu tiên là nối các chuỗi bằng toán tử +. Cách tiếp cận thứ hai được gọi là string formatting (định dạng chuỗi) và cú pháp trên (với dấu ngoặc nhọn) dành riêng cho Python 3.

Định dạng chuỗi trông phức tạp ngay từ cái nhìn đầu tiên nhưng nó cũng thực sự mạnh mẽ. Ví dụ: chúng tôi có thể xuất số lượng người sống ở mỗi quốc gia bằng cách sử dụng:

for feature in vlayer.getFeatures():
print("{pop:.2f} mio people live in {name}".format(name=feature['ADMIN'],pop=feature['POP_EST']/1000000)) 

4.51 mio people live in Central African Republic
33.49 mio people live in Canada
16.60 mio people live in Chile

Điều này rất thú vị vì nhiều lý do: đầu tiên, các tham số trong hàm định dạng có thể được cung cấp theo bất kỳ thứ tự nào vì chúng tôi đã gán cho chúng tên (pop và name trong ví dụ này). Thứ hai, chúng tôi định dạng giá trị dân số để hiển thị hai chữ số sau dấu phân cách thập phân.

Đây là một cách để lọc các tính năng trong một lớp vectơ. Bạn cũng đã thấy một số phương thức khác nhau để tích hợp các biến vào chuỗi bằng cách sử dụng toán tử + hoặc định dạng chuỗi.

Bình luận bằng Facebook Comments

MẠNG XÃ HỘI

1,010ThíchThích
309Đăng kýĐăng Ký

TOOL PXTmap.com

BÀI VIẾT LIÊN QUAN

Bài 14: Viết kịch bản xử lý

Trong các bài trước, chúng tôi đã đề cập đến cách chạy các công cụ Processing cũng như cách xâu chuỗi các...

Bài 13: Tạo các hàm để tải các lớp GeoPackage

Hiện tại chúng ta đã từng sử dụng GeoPackages. Ví dụ: trong Tải một lớp vectơ, chúng tôi đã giới thiệu cách...

Bài 12: Sử dụng biểu thức để tính giá trị

Trong các bài trước đây, chúng tôi đã đề cập đến cách tạo các lớp vectơ, cách thêm các trường vào bảng...

Bài 11: Quản lý các lớp dự án (đổi tên và loại bỏ)

Trong các bài trước, chúng tôi đã đề cập đến việc thêm các lớp từ các tệp cũng như tạo các lớp...

Bài 10: Công cụ chuỗi xử lý (Chaining Processing)

Trong Bài 7: Chạy công cụ xử lý (Processing), chúng ta đã khám phá những điều cơ bản của việc chạy các...