CS Center
지열자료실
홈 < 자료실 < 일반자료실

[GIS] 레이블 Advanced 모드 사용해 보기
 작성자 : 관리자
Date : 2020-12-21 15:29  |  Hit : 187  


단순한 '레이블'이 아닌 위처럼 특정한 이름에만 다른 색깔로 표현해본적 있는가?
없을 가능성도 있고 있다면 표현하고자 하는 지역만 따로 Clip해낸 뒤 색깔을 줬을 가능성이 높다.

그럴 땐 'Label Expression'을 이용해보자.
물론 표현식이 약간 복잡하게 느껴질 수 있겠지만 뭐든 할 수록 늘어나는 법이니 한번 도전해보는 것도 좋을 듯.
위 처럼 해볼까?


먼저, 표출하고자 하는 텍스트가 있는 레이어에 가서 우측 버튼을 누르고 'Properties..' -> Express 를 클릭한다.








맨 마지막 'Label Expression'에 가보면 여러분은 Advanced 에 클릭되어 있지 않을 것이다.
그게 기본형이니까.
헌데 지금 우리는 그 Advanced 모드를 이용해 볼 것이다.


Function FindLabel ( [NAME] )
    if StrComp("청운면", [NAME]) = 0 then
        FindLabel = "<clr red='255' green='255' blue='0'>" & [NAME] & "</clr>"
    else
        FindLabel = [NAME]
    End if
End Function



자아, 설명드린다.
저 위에 있는 [NAME]은 테이블 필드명이다.



프로그램이랄 것도 없다.
단순하게 name이란 필드를 읽어 그녀석이 "청운면"이면 색깔을 바꿔라하는 것인데...
일단, 위에 수식은 VBscript 라는 것이다.
흔히 비주얼 베이직이라고 하는데 GIS 에서는 비주얼 베이직 스크립트가 이용된다.
아, 파이썬이라는 언어도 이용된다.
아무거나 해도 괜찮다. 요즘 흔하고 흔한게 프로그램이니 이행하는데 어렵진 않을 것이다.


다만 색깔 바꾸는 과정이 조금 이해하기 어려울 텐데...
저건 HTML 문법이다. 비주얼 베이직에 HTML에 자꾸 어렵게만 간다.
HTML은 우리가 흔히 접하는 인터넷 페이지 언어라고 생각하면 된다.
쉽게, 인터넷으로 표출되려면 HTML로 씌여야 한다는 것이다.


위의 것과 연관시켜 생각해보면 비교라든가 분석이라든가 뭔가 생각하는 과정은 비주얼 베이직과 파이썬이라는 프로그램 언어로 하고 마지막 표출하는 건 인터넷 언어인 HTML로 표현된다는 것이다.


clr = color 의 줄임말(GIS 프로그램에서만 표현 가능하다)이고 red 이후에 쓴 숫자는 빨간색을 0부터 255단계로 나눈 것을 말한다.
즉, 위에서는 붉은색 최고와 초록색 최고를 섞어버린 효과가 노랑으로 표출된 것이다.


def FindLabel ( [NAME] ):
  if [NAME] == '청운면':
        FindLabel = "<clr red='255' green='255' blue='0'>" + [NAME] + "</clr>"
  else:
        FindLabel = [NAME]
return FindLabel


이건 같은 효과를 파이썬으로 나타낸 것이다.
보다 쉽게 이해될 것이다.


추가적으로 이건 하나의 필드 값만 처리했는데 다중의 필드 값을 가지고 처리가 가능하다.
이를테면 '면 이름'과 '면 인구' 필드를 받아 특정 면 이름 색깔을 바꾸고 그 면의 인구를 표현한다거나 하는 처리도 가능한 것이다.


* 파이썬으로 작업할 때에는 띄어쓰기에 주의해야 한다. 파이썬 언어 자체가 띄어쓰기에 따라 그 처리 과정이 달라질 수 있기 때문이다.