내가 맞다면 QGIS는 동적 레이어 이름을 지원합니다.
프로젝트를 열 때마다 실행되도록 Python 매크로를 작성해야합니다. 이것은 워크 플로우입니다.
다음 Python 코드로 이동하여 QGIS->Project->Project Properties
대체하십시오 openProject()
.
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 : shapefile에서 테스트 했으므로 날짜를 가져 오는 필드는 traffic_da
Shapefile이 필드 이름에서 더 많은 문자를 지원하지 않기 때문입니다. 코드에서 레이어에서 작동하도록 조정하십시오.
참고 2 : 프로젝트 구성에 따라 원하는 레이어에서만 작동하도록 유효성 검사 코드를 추가해야합니다. 예를 들어, 래스터 레이어에서 코드를 실행하면 오류가 확실하게 나타납니다. 도움이 필요하시면 새로운 질문을여십시오. 도와 드리겠습니다.
다음과 같은 방법으로 프로젝트에서 매크로를 활성화하십시오. Settings->Options->General->Enable macros: Always
레이어를 프로젝트에로드하십시오.
프로젝트를 저장하십시오.
이 시점에서 프로젝트를 열 때마다 레이어 이름이 동적이되고 날짜는 traffic_date
각 레이어의 속성 테이블에 있는 필드 에서 가져옵니다 .
프로젝트를 처음 열면 레이어 이름이 동적으로 생성되는 방식입니다.
시작하는 데 도움이 될 것 같습니다. 명백한 문제가 발생하면 알려주십시오.