18.2.4. 라벨 항목

Label 항목은 사용자의 맵을 이해할 수 있도록 돕는 텍스트로 장식할 수 있는 도구입니다. 라벨은 제목, 작성자, 데이터소스 또는 기타 모든 정보를 담을 수 있습니다. 항목 생성 지침 을 따라 label Add Label 도구로 라벨을 추가하고 대화형 조판기 항목 작업 에서 설명한 내용과 동일한 방법으로 수정할 수 있습니다.

라벨 항목은 기본적으로 라벨의 Item Properties 패널에서 사용자 지정할 수 있는 기본 텍스트를 제공합니다. 이 항목은 공통 속성 이외에도 다음과 같은 기능을 가지고 있습니다(그림 18.23 참조):

../../../../_images/label_mainproperties.png

그림 18.23 라벨 항목 속성 패널

18.2.4.1. 주요 속성

Main properties 그룹에서 라벨 작성에 필요한 텍스트(HTML도 가능) 또는 표현식을 작성할 수 있습니다. 표현식을 표현식으로 해석되게 하려면, 표현식을 [%%] 로 둘러싸야 합니다.

  • checkbox Render as HTML: 이 옵션을 활성화하면 라벨을 HTML 코드로 해석시킬 수 있습니다. URL, 웹페이지로 연결되는 클릭할 수 있는 이미지, 또는 더 복잡한 무언가를 삽입할 수 있습니다.

  • Insert or Edit an expression… 버튼을 클릭하면 표현식 도 사용할 수 있습니다. 대화창이 열리면 동일한 방법으로 공식을 작성하십시오. QGIS가 괄호 문자를 자동적으로 추가합니다.

참고

텍스트란에서 아무것도 선택하지 않았을 때 Insert or Edit an expression… 버튼을 클릭하면 기존 텍스트에 새 표현식을 덧붙일 것입니다. 기존 텍스트를 업데이트하고 싶다면, Insert an Expression 버튼을 클릭하기 전에 텍스트에서 관심 부분을 선택해야 합니다.

HTML 렌더링과 표현식을 결합해서 고급 라벨 작업을 할 수 있습니다. 다음 코드는 그림 18.24 를 산출할 것입니다:

<html>
 <head>
   <style>
      /* Define some custom styles, with attribute-based size */
      name {color:red; font-size: [% ID %]px; font-family: Verdana; text-shadow: grey 1px 0 10px;}
      use {color:blue;}
   </style>
 </head>

 <body>
   <!-- Information to display -->
   <u>Feature Information</u>
   <ul style="list-style-type:disc">
     <li>Feature Id: [% ID %]</li>
     <li>Airport: <name>[% NAME %]</name></li>
     <li>Main use: <use>[% USE %]</use></li>
   </ul>
   Last check: [% concat( format_date( "control_date", 'yyyy-MM-dd'), ' by <b><i>', @user_full_name, '</i></b>' ) %]

   <!-- Insert an image -->
   <p align=center><img src="path/to/logos/qgis-logo-made-with-color.svg" alt="QGIS icon" style="width:80px;height:50px;"</p>
 </body>
</html>
../../../../_images/label_htmlexpression.png

그림 18.24 HTML 스타일 작업으로 라벨에 영향 주기

18.2.4.2. 모양

  • Font… 버튼을 눌러서 Font 를 정의하거나, 또는 색상 위젯 을 눌러 Font color 를 선택하십시오.

  • 서로 다른 수직 및 수평 여백을 mm 단위로 지정할 수 있습니다. 조판 항목의 경계로부터의 여백입니다. 라벨 경계 바깥쪽에 ─ 예를 들어 라벨 항목을 다른 항목과 정렬시키기 위해 ─ 라벨을 배치할 수 있습니다. 이 경우 여백에 음의 값을 사용해야 합니다.

  • 텍스트 alignment 옵션은 사용자 라벨을 배치하기 위한 또다른 방법입니다. 다음 가운데 하나를 선택할 수 있습니다:

    • Horizontal alignment 의 경우 Left, Center, Right 또는 Justify

    • Vertical alignment 의 경우 Top, Middle, Bottom

18.2.4.3. 라벨 항목에서의 표현식 탐구

다음은 사용자가 라벨 항목을 흥미로운 정보로 채우는 데 사용할 수 있는 몇몇 표현식 예시입니다. Main properties 프레임에서 코드를, 또는 적어도 계산식 부분을 [%%] 로 둘러싸야 한다는 점을 기억하십시오.

  • 제목을 “field1” 에 있는 현재 지도책 피처값과 함께 표시합니다:

    'This is the map for ' || "field1"
    

    또는 Main properties 부분에서 작성하면:

    This is the map for [% "field1" %]
    
  • 공간 처리된 지도책 피처용 페이지 번호를 (예: Page 1/10) 추가합니다:

    concat( 'Page ', @atlas_featurenumber, '/', @atlas_totalfeatures )
    
  • 공항의 공통 속성을 기반으로 현재 지도책 지역 피처의 공항 이름을 반환합니다:

    aggregate( layer := 'airports',
               aggregate := 'concatenate',
               expression := "NAME",
               filter := fk_regionId = attribute( @atlas_feature, 'ID' ),
               concatenator := ', '
             )
    

    또는, 속성 관계 를 설정한 경우:

    relation_aggregate( relation := 'airports_in_region_relation',
                        aggregate := 'concatenate',
                        expression := "NAME",
                        concatenator := ', '
                      )
    
  • 공항의 공간 관계를 기반으로 현재 현재 지도책 지역 피처가 담고 있는 공항 이름을 반환합니다:

    aggregate( layer := 'airports',
               aggregate := 'concatenate',
               expression := "NAME",
               filter := contains( geometry( @parent ), $geometry ),
               concatenator := ', '
             )
    

    또는:

    array_to_string( array:= overlay_contains( layer := 'airports',
                                               expression := "NAME" ),
                     delimiter:= ', '
                   )
    
  • Map 1 항목 범위의 하단 X 좌표를 반환합니다:

    x_min( map_get( item_variables( 'Map 1' ), 'map_extent' ) )
    
  • 현재 조판기 Map 1 항목에 있는 레이어명들을 추출해서, 한 줄 서식으로 표시합니다:

    array_to_string(
     array_foreach(
      map_get( item_variables( 'Map 1' ), 'map_layers' ), -- retrieve the layers list
      layer_property( @element, 'name' ) -- retrieve each layer name
     ),
     '\n' -- converts the list to string separated by breaklines
    )