Nếu tôi hiểu đúng về bạn, câu trả lời là có, QGIS hỗ trợ tên lớp động.
Bạn sẽ cần phải viết một macro Python để được chạy mỗi khi dự án được mở. Đây sẽ là quy trình công việc:
Chuyển đến QGIS->Project->Project Properties
và thay thế openProject()
bằng mã Python sau:
def openProject():
import re, qgis
iface = qgis.utils.iface
layers = iface.mapCanvas().layers()
for lyr in layers:
# Get date from layer
it=lyr.getFeatures()
feat = next(it)
idx = lyr.fieldNameIndex('traffic_da')
currDate = feat.attributes()[idx]
# Set new layer name
name = lyr.name()
if re.search(' on \d{2,2}.\d{2,2}.\d{4,4}$', name):
name = name[:-14]
name = name + " on " + currDate
lyr.setLayerName( name )
Lưu ý 1: Tôi đã thử nghiệm nó trên shapefiles, vì vậy trường mà tôi lấy ngày là traffic_da
vì Shapefiles không hỗ trợ thêm chữ cái trong tên trường. Điều chỉnh trong mã để làm việc trên các lớp của bạn.
Lưu ý 2: Tùy thuộc vào cấu hình dự án của bạn, bạn nên thêm mã xác thực để chỉ hành động trên các lớp bạn muốn. Chẳng hạn, nếu bạn chạy mã trên các lớp raster, chắc chắn sẽ xuất hiện lỗi. Nếu bạn cần giúp đỡ với điều này, hãy mở một câu hỏi mới, tôi có thể giúp bạn.
Hãy chắc chắn rằng bạn bật macro trên dự án của bạn, theo cách này: Settings->Options->General->Enable macros: Always
Tải các lớp của bạn vào dự án.
Lưu dự án của bạn.
Mỗi khi bạn mở dự án của mình từ thời điểm này, tên lớp của bạn sẽ động, ngày sẽ được lấy từ trường traffic_date
trên bảng thuộc tính của mỗi lớp.
Sau lần đầu tiên tôi mở dự án, đây là cách tên lớp của tôi được tạo động:
Tôi nghĩ rằng điều này có thể giúp bạn bắt đầu. Hãy cho tôi biết nếu bạn phải đối mặt với những rắc rối không rõ ràng.