인쇄 작곡가에 "현재 사용자"레이블을 추가하는 방법이 있습니까?


11

QGIS의 인쇄 작성기에 현재 사용자 레이블을 추가하는 방법이 있습니까?

사용 가능한 $ CURRENT_DATE 형식과 비슷한 것이 있다고 생각했습니다.

이것은 Windows 환경에 있습니다.


1
"$ CURRENT_DATE (yyyy-MM-dd)"는 매우 유용한 것으로 판명되어 많은 작곡가 템플릿에 포함 시켰습니다. 사용 가능한 이러한 명령이 더 있습니까? 프로젝트 이름이나 특정 레이어 이름 등을 자동으로 표시하고 싶습니까?
SAnderka

답변:


8

현재 이것은 충족되지 않은 기능 요청입니다 ( 기능 # 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에 대한 기능 요청을 추가하겠습니다.


hub.qgis.org에서 관련 기능 요청을 참조하십시오 .
dakcarto

이 솔루션 중 하나를 QGIS의 릴리스 버전으로 만들었습니까? 아니면 아직 개발 중입니까? 감사합니다
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.