기호 만 사용하려면 비슷한 질문 : QGIS에서 섹터 조명 만들기? .
비슷한 접근 방식에 따라 투영 된 CRS 에서 작업하고 있다고 가정하면 (지리 좌표계를 사용하는 경우 답변 끝 부분의 참고 사항 참조) 설명에주의를 집중할 것임을 강조하고 싶습니다. 원하는 결과를 재현하기 위해해야 할 최소한의 일 중 : 이는 다른 작은 매개 변수 (예 : 크기, 너비 등)를 사용자의 요구에 맞게 조정하여 쉽게 조정할 수 있음을 의미합니다.
또한 "AZIMUTH"
방위각 값 "BEAMWIDTH"
을 저장하는 필드이고 안테나 빔 폭을 저장하는 필드 라고 가정합니다 .
해결책
우리는 점을 렌더링하고 Single symbol
하나 Simple Marker
와 두 개의 Geometry generator
심볼 레이어 로 반복하여 렌더링합니다 .
추가 설명에서 위의 이미지에서 동일한 순서의 기호를 따릅니다.
1) 단순 마커
크기가 3mm이고 너비가 0.4mm 인 빨간색 원의 기본 기호 (이 자습서에서는 더 쉬운 부분)를 선택했습니다.
2) 지오메트리 생성기 1 번
새 심볼 레이어를 추가 Geometry generator
하고 LineString / MultiLineString
유형을 선택하십시오 .
이 표현식을 Expression
필드 에 삽입하십시오 .
make_line(
$geometry,
make_point($x + 300*cos(radians(90 - "AZIMUTH" )), $y + 300*sin(radians((90 - "AZIMUTH" ))))
)
방위각 세트를 가리키는 화살표를 정의했습니다 (화살표를 만들 려면 기본 심볼 메뉴 Arrow
의 Line
옵션에서 심볼 레이어 유형 을 선택해야 함 ). 참고 300
이렇게 자유롭게 미터의 거리를 표시하고 임의의 값의는 필요에 따라 변경합니다.
3) 지오메트리 생성기 2 번
새 심볼 레이어를 추가하고 Geometry generator
유형과 유형을 선택하십시오 Polygon / MultiPolygon
.
이 표현식을 Expression
필드 에 삽입하십시오 .
CASE
WHEN ("BEAMWIDTH") <= 180
THEN
intersection(
buffer(
$geometry, 200),
make_polygon(
geom_from_wkt(
geom_to_wkt(
make_line(
$geometry,
make_point($x + 2000*cos(radians(90 - "AZIMUTH" - "BEAMWIDTH"/2 )), $y + 2000*sin(radians((90 - "AZIMUTH" - "BEAMWIDTH"/2 )))),
make_point($x + 2000*cos(radians(90 - "AZIMUTH" )), $y + 2000*sin(radians((90 - "AZIMUTH" )))),
make_point($x + 2000*cos(radians(90 - "AZIMUTH" + "BEAMWIDTH" /2)), $y + 2000*sin(radians((90 - "AZIMUTH" + "BEAMWIDTH"/2)))),
$geometry)
)
)
)
)
WHEN ("BEAMWIDTH") > 180
THEN
difference(
buffer(
$geometry, 200),
make_polygon(
geom_from_wkt(
geom_to_wkt(
make_line(
$geometry,
make_point($x + 2000*cos(radians(90 - "AZIMUTH" - "BEAMWIDTH"/2 )), $y + 2000*sin(radians((90 - "AZIMUTH" - "BEAMWIDTH"/2 )))),
make_point($x - 2000*cos(radians(90 - "AZIMUTH" )), $y - 2000*sin(radians((90 - "AZIMUTH" )))),
make_point($x + 2000*cos(radians(90 - "AZIMUTH" + "BEAMWIDTH" /2)), $y + 2000*sin(radians((90 - "AZIMUTH" + "BEAMWIDTH"/2)))),
$geometry)
)
)
)
)
END
방금 섹터를 정의했습니다. 참고하시기 바랍니다 200
및 2000
미터의 거리를 표현하고 임의의 값입니다 내가 200m의 반경을 갖는 원이 교차하는 다각형을 만들려고 해요 있기 때문에, 그래서 당신의 필요에 따라 변경할 주시기 바랍니다.
최종 결과
이전 작업을 올바르게 수행하면 다음과 같은 결과를 얻을 수 있어야합니다 (라벨은이 솔루션과 별도로 추가되며 상황을보다 잘 설명해야합니다).
노트
지리적 좌표 시스템을 사용하는 경우, 즉 거리가 아닌 각도를 다루는 경우 이전 수식에서 거리를 사용할 때 적절한 값을 사용하면 충분합니다. 내가 사용한 거리는 다음과 같습니다.
- 300m (지오메트리 생성기 1 번 참조);
- 200m (지오메트리 생성기 2 번 참조);
- 2000m (지오메트리 생성기 2 번 참조);
따라서 각도로 표시된 다른 임의의 값 (예 : 등 0.0002
)으로 바꿀 수 있습니다 0.002
.
보너스
여기 에 스타일을 첨부했습니다 . 텍스트 편집기에서이 코드를 열고 QGIS Layer Style 파일 (예 : .qml
확장명) 로 저장할 수 있습니다.
위의 스타일은 QGIS 2.18.4를 사용하여 생성되었습니다 (사용 중인 셰이프 파일의 이름이 같아야 함).