Если я правильно понял, ответ - да, QGIS поддерживает имена динамических слоев.
Вам нужно написать макрос Python, который будет запускаться при каждом открытии проекта. Это будет рабочий процесс:
Перейти QGIS->Project->Project Properties
и заменить openProject()
следующим кодом Python:
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 )
Примечание 1: я протестировал его на шейп-файлах, поэтому поле, из которого я беру даты, состоит в том, traffic_da
что шейп-файлы не поддерживают больше букв в именах полей. Отрегулируйте это в коде, чтобы работать с вашими слоями.
Примечание 2: В зависимости от конфигурации вашего проекта, вы должны добавить проверочный код, чтобы действовать только на нужные вам слои. Например, если вы запустите код на растровых слоях, ошибки наверняка появятся. Если вам нужна помощь в этом, откройте новый вопрос, я могу вам помочь.
Убедитесь, что вы включили макросы в свой проект, таким образом: Settings->Options->General->Enable macros: Always
Загрузите свои слои в проект.
Сохраните свой проект.
Каждый раз, когда вы открываете свой проект с этой точки, имена ваших слоев будут динамическими, дата будет взята из поля traffic_date
в таблице атрибутов каждого слоя.
После того, как я впервые открыл проект, вот как динамически генерировались имена моих слоев:
Я думаю, что это может помочь вам начать. Скажите, если у вас возникли неочевидные проблемы.