Seni haklı çıkarsam, cevap evet, QGIS dinamik katman adlarını destekliyor.
Proje her açıldığında çalıştırılacak bir Python makrosu yazmanız gerekir. Bu iş akışı olurdu:
Aşağıdaki Python koduna gidin QGIS->Project->Project Properties
ve openProject()
onunla değiştirin :
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 )
Not 1: Shapefiles üzerinde test ettim, bu yüzden tarih aldığım alan traffic_da
Shapefiles alan adlarında daha fazla harfi desteklemediğinden. Kodunuzda katmanlarınız üzerinde çalışacak şekilde ayarlayın.
Not 2: Proje yapılandırmanıza bağlı olarak, yalnızca istediğiniz katmanlara işlemek için doğrulama kodu eklemeniz gerekir. Örneğin, kodu raster katmanlarında çalıştırırsanız, hatalar kesinlikle görünür. Bu konuda yardıma ihtiyacınız varsa, yeni bir soru açın, size yardımcı olabilirim.
Projenizde makroları şu şekilde etkinleştirdiğinizden emin olun: Settings->Options->General->Enable macros: Always
Katmanlarınızı projeye yükleyin.
Projenizi kaydedin.
Projenizi bu noktadan her açtığınızda, katman adlarınız dinamik olacak, tarih traffic_date
her katmanın öznitelik tablosundaki alandan alınacaktır .
Projeyi ilk açtıktan sonra, katman adlarım dinamik olarak şu şekilde oluşturuldu:
Bence bu başlamanıza yardımcı olabilir. Açık olmayan sorunlarla karşılaşıp karşılaşmadığını söyle.