QGIS에서 레이블을 연결하는 방법은 무엇입니까?


14

Windows XP 컴퓨터에서 QGIS 1.8을 사용하고 있으며 속성 테이블에서 로컬 도로 이름을 레이블링하기 위해 여러 필드를 연결하려고 시도하지만 올바른 구문을 찾을 수 없습니다. 첫 번째 필드는 거리, 두 번째 링크 유형 (예 : 애비뉴 및 세 번째 방향 (예 : 동 또는 서))으로 구성됩니다. 수식을 기반으로하는 레이블 대화 상자를 사용하여 올바른 구문을 작성하는 방법을 알려주십시오. 속성 테이블을 보여주는 스크린 샷을 첨부했습니다.

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

답변:


19

연결 연산자는 ||(홀수?)이므로 다음과 같은 것을 사용합니다.

street || ', ' || link || ', ' || orientation

원하는 구분 기호 및 정적 문자열을 사용하십시오.

@NathanW가 지적했듯이 필드 중 하나가 NULL이면 실패하지만 그 경우 대체 값을 사용할 수 있습니다.

street || ', ' || CASE WHEN ("link" IS NULL) THEN '(nodata)' ELSE "link" END || ', ' || orientation

QGIS는 coalesce버전 2.0부터 도우미 기능을 지원합니다 . NULL의 문제를 피하기 위해 존재하며 예제는 다음과 같습니다.

 street || ', ' || coalesce(link, '(nodata)') || ', ' || orientation

2
concat개발자 버전 에도 기능 이 있습니다 . || 사용 NULL을 처리하지 않습니다. NULL 인 경우 link전체 레이블이 null이면 concat이 문제가 없습니다. || Postgres postgresql.org/docs/9.1/static/functions-string.html
Nathan W

사례 진술을 직접 지원하지 않는 것 같습니다. 링크 컬럼의 NULL이 아닌 사본을 작성하기 위해 SQL을 직접 사용하지 않는 유일한 옵션입니까?
lynxlynxlynx

사례 진술을 지원하지 않는 것은 무엇을 의미합니까?
Nathan W

3
END가 없습니다. 올바른 문자열은CASE WHEN ("link" IS NULL) THEN '(nodata)' ELSE "link" END
Nathan W

1
아아 coalesce내가 의미하는 것입니다.
Nathan W

2

QGIS veriosn 2.0.1에서 간단한 표현은 다음과 같이 작동했습니다.

"field1"|| '('|| "field2"|| ')'

원하는 출력 : field1 (field2)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.