QGIS composer에서 레이아웃에 좌표계를 추가 하시겠습니까?


10

QGIS composer 레이아웃에 동적 좌표계 필드를 추가하는 방법이 있는지 알고 싶습니다.

표현식을 사용하여 문서 이름, 파일 경로 등과 같은 많은 항목을 추가 할 수 있지만 좌표계를 추가하는 방법을 알 수없는 것 같습니다.


1
지금 QGIS 3.x를 사용하는 경우 녹색 수락 확인 표시를 QGIS 3.x 답변으로 옮길 수 있습니다.
PolyGeo

답변:


7

이 답변은 QGIS 3.0이 출시되기 전에 제공 및 수락되었습니다.

기관 ID를 받으려면 (예 : " EPSG : 4326 ") :

  • 당신은 단순히 표현을 사용할 수 있습니다 [% layer_property( 'your_layer_name_or_id', 'crs' ) %]

CRS의 텍스트 설명 (예 : " WGS84 ") 을 얻으려면 다음을 수행하십시오 .

  • AFAIK, 사용자 정의 기능을 작성해야합니다. 이렇게하려면 "표현식 삽입"으로 이동하여 함수 편집기 탭에 다음 함수를 입력하십시오.

암호:

from qgis.core import *
from qgis.gui import *

@qgsfunction(args='auto', group='Custom')
def get_crs(layer_name, feature, parent):
    return QgsMapLayerRegistry.instance().mapLayersByName(layer_name)[0].crs().description()
  • "로드"를 클릭하십시오
  • 식 탭에서 입력 get_crs( 'your_layer_name' )

9

QGIS 3.x에 대한 답변 :

파이썬이없는 쉬운 솔루션을 보려면 아래 gustry의 코멘트를 참조하십시오

이 스크립트를 사용자 정의 함수 편집기에 추가하십시오.

from qgis.core import *
from qgis.gui import *

@qgsfunction(args='auto', group='Custom')
def get_crs(layer_name, feature, parent):
    return QgsProject.instance().mapLayersByName(layer_name)[0].crs().description()

여기에 이미지 설명을 입력하십시오

식 편집기에서 crs 이름을 가져옵니다.

get_crs(@layer_name)

여기에 이미지 설명을 입력하십시오

프로젝트의 CRS 이름 (예 : 인쇄 레이아웃의 투영)에 다음을 사용하십시오.

이 스크립트를 사용자 정의 함수 편집기에 추가하십시오.

from qgis.core import *
from qgis.gui import *

@qgsfunction(args='auto', group='Custom')
def get_projectcrs(project_crs, feature, parent):
    return QgsCoordinateReferenceSystem(project_crs).description()

식 편집기에서 다음과 같이 crs 이름을 가져옵니다.

 get_projectcrs(@project_crs) 

물론 'EPSG:4326'수동으로 입력 하거나 @project_crsEPSG 코드를 반환하는 다른 함수를 사용할 수도 있습니다.

노트:

또한 한 번 봐 걸릴 https://qgis.org/api/api_break.html을 QGIS 3.x의 변경에 대한 자세한 내용은


감사합니다 @MrXsquared! 이전에 해당 코드를 정확하게 시도했지만 레이어 이름을 전달할 때 @를 사용하지 않았습니다. 그러나 여전히이 기능을 사용할 수 없습니다. 레이아웃 뷰에 맵을 추가하고 위에서 언급 한 함수로 레이블을 삽입하면 '출력 미리보기'에 NULL 만 표시 되고 레이블에 정보가 추가되지 않습니다. 모든 것을 여러 번 확인했는데지도에 이름과 ID가 있고 CRS가 있지만 아무것도 표시되지 않습니다. 사용 된 특정 CRS에 의존해서는 안됩니다.
TinkerPhil

물론 이것은 특정 레이어를 참조하므로 레이아웃보기에서는 작동하지 않습니다. 내 대답을 편집하고 프로젝트 의 사용한 crs를 반환하는 함수를 추가했습니다 . 이것을 인쇄 레이아웃에서 사용하여 사용 된 투사의 이름을 표시 할 수 있습니다.
MrXsquared

2
대답 A의 경우 파이썬 표현식이 필요하지 않습니다. `layer_property (@layer_name, 'crs_description')`할 수 있습니다.
etrimaille
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.