QGIS의 라벨에서 피처로의 직선?


11

내가하려고하는 것은 일련의 포인트 피처에 레이블을 지정하는 것이지만 포인트 피처의 밀도로 인해 포인트 피처에서 레이블을 멀리 이동해야합니다. 그런 다음 간단한 레이블 (화살표 아님)을 사용하여 어떤 레이블이 어떤 점을 가리키는 지 보여주고 싶습니다.

플러그인“Easy Custom Labels”를 사용하여 레이블을 생성하고 원하는 위치로 옮겼습니다. 그러나 내가 할 수없는 것은 포인트와 테이블 사이에 간단한 얇은 직선을 만드는 것입니다.

내가 달성 한 최선의 방법은 "심볼 레이어 유형"(라벨 레이어> 속성> 스타일)을 "화살표"로 변경하고 "곡선 화살표"를 선택 취소하고 "각 세그먼트의 화살표 반복"을 선택 해제하는 것입니다. 그런 다음 헤드 길이와 두께를 0으로 만들고 가능한 한 "화살표 너비"와 "화살표 너비"를 만듭니다. 그러나 이것은 여전히 ​​청크 라인을 만듭니다. 이미지 A를 참조하십시오.

"심볼 후자 유형"을 "간단한 선"으로 설정하려고했지만 꼬임 / 꼭지점 / 코너가있는 선이 나타납니다. 이미지 B를 참조하십시오.

이상적으로는 이미지 B의 너비와 비슷한 너비와 레이블 (이미지 A와 같은) 사이의 직선을 원합니다.

두 가지 유형의 라벨링의 예

답변:


11

표현식을 사용하여 레이블과 지오메트리 사이에 선을 만들 수 있습니다.

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

설명 :

CASE 
 WHEN (label_x IS NOT NULL AND label_y IS NOT NULL) THEN
  make_line(centroid($geometry),make_point(label_x -2,label_y), make_point(label_x ,label_y))
ELSE
  NULL
END

결과는 다음과 같습니다.

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


참고로, 레이블 속성 도구 모음을 사용하여 레이블을 수동으로 이동하고 위치가 프로젝트에 저장되면 label_x, y 변수가 "auxiliary_storage_labeling_positionx"및 "auxiliary_storage_labeling_positiony"라는 필드로 변경됩니다.
Gabriel C.

1
여기에서와 같이 중간 지점을 서쪽으로 2 대 배치하면 서해안 make_point(label_x -2,label_y)의 라벨이 재미있어 보일 것입니다. 또한 다른 규모로 작업하면 쓸모가 없습니다. 레이블까지의 거리 및 중심으로부터의 상대적 위치와 관련하여이 점을 설정하는 것이 좋습니다.
Albert

2

카를로스의 대답은 지오메트리 생성기에서 단 하나의 지점 만 직선으로 표시하지만 레이블 끝에 수평으로 정렬 된 지시선을 만듭니다. 이 예에서는 QGIS 3.0.3의 라벨 도구 모음을 사용하여 라벨을 수동으로 옮겼습니다. 이 기술은 질문 232709 에서 찾을 수 있습니다 .

내가 변경해야 할 유일한 것은 내 표현의 x, y 값입니다.

CASE
   WHEN ("auxiliary_storage_labeling_positionx" IS NOT NULL AND "auxiliary_storage_labeling_positiony" IS NOT NULL) THEN
        make_line(centroid($geometry),make_point("auxiliary_storage_labeling_positionx","auxiliary_storage_labeling_positiony"))
   ELSE
      NULL
END

지시선 자체의 경우 심볼 트리는 다음과 같습니다.

  • 가득 따르다
    • 지오메트리 생성기
        • 마커 라인
          • 채점자
            • 간단한 마커
          • 간단한 라인

지시선이 레이블 중심에서 끝나도록하려면 레이블 데이터 정의 값을 가로로 '중심'으로, 세로로 '반'으로 정렬하십시오. 선을 원하는대로 스타일을 지정하려면 마커 선에 중첩 된 간단한 선을 사용하십시오.

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