답변:
예, 가능합니다. 일반적으로 부분적으로 투명한 버퍼를 제안하지만이를지도로 작성하려는 이유를 알 수 있습니다.
속도가 느릴 수 있으며 레이블을 이동할 위치를 수동으로 결정해야합니다. 그러나지도 제작 방식으로는 나쁘지 않습니다!
스크린 샷이 있습니다 ...
보시다시피 버퍼가 없습니다. 아래의 래스터는 영향을받지 않습니다. 더 얇은 중간 등고선을 포함 시켰으며 ELEV % 50 <> 0 인 경우에만 표시되도록 스타일을 지정했습니다.
QGIS 2.12에서이 작업을 수행했습니다. 마일리지는 이전 버전과 다를 수 있습니다.
여기 각 윤곽선에 "ELEV"필드가 있다고 가정합니다.
등고선을 세분화
처리 및 GRASS 알고리즘 v.split.length 를 사용하여 등고선을 동일한 길이의 세그먼트로 분할하십시오. 미터를 사용한다고 가정 할 때지도 단위에서 레이블 크기에 가까운 길이를 선택해야합니다. 여기서는 200m를 사용했습니다.
파일을 훨씬 더 크게 만들 수 있으므로이 점에주의하십시오 (스크린 샷의 기능 개수에 유의하십시오).
이 문제를 해결하려면 모든 중간 등고선 처리를 피하기 위해 스타일을 지정할 등고선 (예 : 50 또는 100 미터마다) 만 생성 할 수 있습니다.
이 레이어에 showLabel 이라는 1 자리 정수 필드를 추가하십시오 . 기본값은 0 또는 NULL입니다.
이 필드가 1로 설정된 세그먼트에만 표시되도록 레이블을 변경하십시오. 레이블 텍스트 표현식에 사용하십시오.
if ( "showlabel" is not null, "ELEV", "")
나는 if (expression, true-value, false-value) 가 상당히 새로운 것이라고 생각 합니다 . 이전 버전을 사용하는 경우 CASE-ELSE를 사용할 수 있습니다
레이블이 표시되는 세그먼트를 제외하고 고정 길이 세그먼트가 모두 그려 지도록 선 스타일을 변경하십시오 . 따라서 두 가지 규칙을 사용하여 규칙 기반 렌더링을 사용하십시오.
Rule 1: "showLabel" is null
Black, 0% transparent
Rule 2: "showLabel" is not null
Any colour, 100% transparent
이제 모든 윤곽선이 기본적으로 표시되지만 레이블은 표시되지 않습니다.
라벨을 표시하려는 세그먼트를 수동으로 수정
편집 모드 로 이동 하여 형상 값을 표시 할 선분을 수동으로 선택 showLabel
하고 선택한 피처에 대해 값 을 1로 설정합니다 . 당신은 사용할 수 있습니다 Ctrl(우분투 / 승리에 + 선택 Cmd+ Ctrl+는 Mac에서 / 클릭?) 다중 선택 세그먼트에 속도 일까지.
이제 레이블을 표시 할 윤곽선을 '클립'해야하며 레이블이 간격에 표시됩니다.
이 경우 라벨 설정은 다음과 같습니다.
CRS: EPSG 27700 (Local UTM for UK, in meters)
Text size: 50 map units
Placement: Parallel, On Line
희망이 도움이됩니다!
"라벨 설정"탭에서 "버퍼"옵션을 사용합니다. (레이어 속성 대화 상자에서 이전 레이블 옵션이 아닌 레이블 단추를 사용합니다.) 이렇게하면 윤곽선이 지워지지 않지만 레이블을 읽을 수있게 만듭니다.
현재 QGIS 기능으로 얻을 수있는 가장 가까운 것은 기본 그리드에 사용 된 것과 같은 표고 값과 색 구성표를 기반으로 테이블에서 가져온 색상으로 후광 (또는 배경) 효과 를 사용 하는 것입니다. 물론 이것은 언덕의 그늘과 후광 아래의 모든 것을 고려하지 않았습니다 . 임의의 색상 예 : 약간의 코드로 그리드 색상을 반영하는 함수로 다시 작성할 수 있습니다.
이론적으로 사용자 정의 선 패턴과 레이블 반복 + 오프셋을 사용할 수 있어야합니다 . 불행히도 라벨 오프셋 설정이 없습니다.
최근에 같은 문제에 부딪힌 후 QGIS Python 스크립트를 작성하여 무거운 작업을 수행했습니다. 사용 된 일부 (영국) 테스트 데이터, 추가 정보 (가이드) 및 스타일 시트가 포함 된 스크립트는 https://github.com/pjgeng/Contour-Labels 에서 찾을 수 있습니다.
간단히 말해서 스크립트는 주석이있는 등고선 레이어와 "가이드"레이어라는 두 개의 벡터 레이어를 입력으로 사용합니다. 후자는 원하는 레이블 위치에서 윤곽선을 교차하는 폴리 라인으로 구성됩니다.
그런 다음 스크립트는 윤곽선과 적용 할 레이블이있는 색인 윤곽선 간격 사이의 거리에 따라 작동하고 레이블 값에 회전 값을 추가 한 다음 원래 윤곽선 레이어를 잘라 간격을 만듭니다.
이 방법은 사용자가 동일한 영역에서 서로 다른 간격으로 등고선 맵을 생성해야하는 경우 특히 효과적입니다 (즉, 안내선은 변경되지 않음). 단점은 스크립트가 완료되면 레이블 위치를 변경할 수 없다는 것입니다. 이를 위해 사용자는 안내선을 조정하고 원래 입력에 대해 스크립트를 다시 실행해야합니다. 이전에는 레이블 주위의 버퍼를 사용하여 중단 효과를 만들었지 만 벡터 데이터 기반 맵에서는 미적으로 불쾌한 것으로 나타났습니다.
불행히도 현재 프로세스를 자세히 문서화하거나 설명하기 위해 더 이상 그림을 추가 할 수 없습니다.
추신 : 리포지토리에 제공된 스타일 레이어를 사용하는 경우 라벨링 메뉴에서 "회전", "라벨 표시"및 "항상 표시"에 대한 사용자 정의 필드를 "활성화"해야 할 수도 있습니다. 일부 QGIS 설치에서 이들은 스타일 시트에서 자동으로 적용됩니다-아직이 원인을 알지 못했습니다.
ESRI 블로그 항목 : http://blogs.esri.com/esri/arcgis/2011/11/28/variable-depth-masking-contour-label-example/
등고선 레이블의 가변 심도 마스킹에는 다음 세 단계가 포함됩니다.
1 레이블에서 주석 만들기, 2 Feature Outline Masks 도구를 사용하여 마스크 만들기 및 3 고급 그리기 옵션> 마스킹 설정을 사용하여 마스크에서 마스크를 제거 할 레이어 지정