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