Si desea utilizar solo la simbología, le propongo una solución inspirada en mi respuesta de una pregunta similar: ¿ Crear luces de sector en QGIS? .
Siguiendo un enfoque similar, y suponiendo que está trabajando en un CRS proyectado (en cambio, si está utilizando un Sistema de coordenadas geográficas, vea la nota al final de la respuesta), quiero subrayar que enfocaré la atención en la explicación de las cosas mínimas para reproducir el resultado deseado: esto significa que algunos otros parámetros menores (como tamaños, anchos, etc.) deben ser ajustados fácilmente por usted para adaptarse mejor a sus necesidades.
Además, supongo que ese "AZIMUTH"
es el campo que almacena los valores de acimut y "BEAMWIDTH"
es el campo que almacena los anchos del haz de la antena.
Solución
Representaremos los puntos con Single symbol
ay recurriendo a una Simple Marker
y dos Geometry generator
capas de símbolos:
En la explicación adicional, seguiré el mismo orden de los símbolos en la imagen de arriba.
1) Marcador simple
Elegí un símbolo predeterminado de un círculo rojo (esta es la parte más fácil de este tutorial), que tiene un tamaño de 3 mm y un ancho de 0.4 mm.
2) Geometry Generator No. 1
Agregue una nueva capa de símbolo y seleccione Geometry generator
los LineString / MultiLineString
tipos y:
Inserte esta expresión en el Expression
campo:
make_line(
$geometry,
make_point($x + 300*cos(radians(90 - "AZIMUTH" )), $y + 300*sin(radians((90 - "AZIMUTH" ))))
)
Acabamos de definir la flecha que apunta hacia el conjunto de acimut (para crear la flecha, recuerde seleccionar el Arrow
tipo de capa de símbolo en la Line
opción del menú de símbolo principal). Tenga en cuenta que 300
representa una distancia en metros y es un valor arbitrario, así que siéntase libre de cambiarlo según sus necesidades.
3) Geometry Generator No. 2
Agregue una nueva capa de símbolo y seleccione el Geometry generator
tipo y los Polygon / MultiPolygon
tipos:
Inserte esta expresión en el Expression
campo:
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
Acabamos de definir el sector. Tenga en cuenta eso 200
y 2000
represente distancias en metros y son valores arbitrarios porque estoy tratando de crear un polígono para intersecar con el círculo que tiene un radio de 200 m, así que siéntase libre de cambiarlos según sus necesidades.
Resultado final
Si realiza correctamente las tareas anteriores, debería poder obtener resultados como estos (las etiquetas se agregan aparte de esta solución y solo deberían explicar mejor el contexto):
Nota
Si está utilizando un Sistema de coordenadas geográficas , es decir, si está tratando con grados y no con distancias, debería ser suficiente con los valores adecuados cuando utilicé una distancia en las fórmulas anteriores. Las distancias que utilicé son:
- 300 m (ver Geometry Generator No. 1);
- 200 m (ver Geometry Generator No. 2);
- 2000 m (ver Geometry Generator No. 2);
por lo que puede reemplazarlo con otros valores arbitrarios expresadas en grados (por ejemplo, 0.0002
, 0.002
y así sucesivamente).
Prima
He adjuntado el estilo aquí : puede abrir este código con cualquier editor de texto y guardarlo como un archivo de estilo de capa QGIS (es decir, con una .qml
extensión).
El estilo anterior se creó con QGIS 2.18.4 (debe tener el mismo nombre del archivo de forma que está utilizando).