답변:
현재 이것은 충족되지 않은 기능 요청입니다 ( 기능 # 1385 참조 ).
새로운 '토큰'(또는 요청에서 모금 된 '필드')에 대한 아이디어를 추가 할 수 있습니다. 데이터 형식에 대한 Qt 클래스 별로 권장되는 형식 지정 옵션을 포함해야합니다 (예 : 및 QDate 클래스 문자열 형식화를$CURRENT_DATE(yyyy-MM-dd)
사용하여 해결되는 구문) .QDate::currentDate().toString( formatText )
그러나 사용자가 필요로하거나 요청할 수있는 모든 유형의 토큰 (모든 확장 목록 일 수 있음)을 구현하는 것보다 더 나은 솔루션이 있습니다.
보다 강력한 솔루션을 구현하는 데는 현재 최소한 두 가지 방법이 있습니다.
A) 라벨 텍스트는 QGIS Expression Editor를 사용하여 선택적으로 생성됩니다
이것은 현재 고급 라벨링 엔진에서 사용되는 방법입니다 ...
Composer 레이블은 맵 레이어의 데이터 소스와 관련 Fields and Values
이 없으므로 섹션은 프로젝트 이름, 제목, 프로젝션, 사용자 등과 같은보다 적절한 인쇄 작성기 토큰으로 대체되고 채워 져야합니다 (날짜 함수는 이미 마스터에 있습니다. 분기 빌드). 운 좋게도 개발자는 새로운 표현 섹션을 추가하는 것이 상대적으로 '쉽게'이루어 지도록 노력했지만 여전히 약간의 작업이 필요합니다. 새로운 토큰을 수용하려면 추가 작업이 필요합니다.
B) 레이블 텍스트 (또는 토큰)는 선택적으로 Python 스 니펫의 결과입니다.
Expression Editor 솔루션만큼 사용자에게 친숙하지는 않지만 Python에 대한 이해가 필요하므로 이러한 기능을 구현하려면 단일 개발 노력 만 있으면됩니다. 그런 다음 PyQGIS API (예 : Python 콘솔)를 통해 사용 가능한 다양한 Composer 항목을 포함 하여 QGIS 프로젝트의 모든 텍스트 측면에 액세스하여 형식을 지정하고 텍스트로 출력 할 수 있습니다.
Python 스 니펫은 개별 토큰으로 랩핑되어 텍스트 편집 상자의 현재 텍스트에 포함되거나 GUI에서 별도의 텍스트 편집 상자에 포함되어 확인란으로 활성화 될 수 있습니다. 보안상의 이유로 코드는 Composer 실행시 자동 실행되지 않을 수 있습니다 (항상 허용하는 옵션 일 수 있음).
별도의 텍스트 편집 상자 접근 방식을 사용하면 Python 코드 유효성 검사 및 구체적으로 명명 된 Python 함수 (예 : 다음 스 니펫)를 입력 할 수 있습니다.
import getpass
from qgis.core import *
def pytoken_user():
return getpass.getuser()
def pytoken_title():
return QgsProject.instance().title()
라는 이름의 텍스트 토큰의 수 대체 할 것이다 $pytoken_user
또는 $pytoken_title
.
위의 솔루션은 모두 QGIS 소스 코드에서 개별 토큰을 인라인으로 구현하는 것보다 훨씬 확장 성이 뛰어납니다. 다른 또는 더 나은 솔루션도있을 수 있습니다.
Hugentobler 박사는 최근 QGIS의 마스터 브랜치에서 인쇄 작곡가를 재 작업하고 있으며, 이제 다음 버전의 QGIS에 이러한 라벨링 기능 을 요청할 수 있습니다. 이 두 ASAP에 대한 기능 요청을 추가하겠습니다.