Estoy usando QGIS 2.18. Necesito crear luces de sector para fines de navegación en un mapa.
Tengo los datos del sector de la luz como campos que dan becon_id, grado inicial, grado final y color en un archivo de forma con más de 500 boyas, balizas y faros que deben mostrarse en el mapa. Para cada baliza, puede haber muchas filas, cada una de las cuales describe un sector ligero (por ejemplo, un sector blanco)
El resultado final debe ser similar al siguiente: los sectores de luz en los colores correctos, con el color marcado como el carácter en el campo de color (RGW) y líneas punteadas de 100 ma 1000 m desde la boya / baliza / faro.
Lo más probable es que esto se cree como un símbolo basado en reglas, pero ¿necesita algo de pitón, supongo?
A continuación se muestra un ejemplo de los datos del archivo de forma para un faro (desafortunadamente no el anterior) que tiene un sector verde entre 114 y 154 grados, un sector blanco entre 154 y 168 grados, un sector rojo entre 168 y 237 grados, un verde sector entre 237 y 314 grados, un sector blanco entre 314 y 320 grados, un sector rojo entre 320 y 337 grados (por alguna razón, 0 no es norte sino sur):
Respuestas:
EDITAR Edité la respuesta para manejar situaciones particulares (debido a valores de ángulo específicos) y para no mostrar las líneas punteadas cuando se define un ángulo redondo.
Propongo una solución recurriendo solo a la simbología y el etiquetado basados en reglas.
Antes de comenzar, quiero subrayar que enfocaré la atención en la explicación de las cosas mínimas para reproducir el resultado deseado: esto significa que usted debe ajustar fácilmente otros parámetros menores (como tamaños, anchos, etc.) para adaptarse mejor a sus necesidades.
Además, esta solución solo funciona si supone que el
0
grado es Norte en lugar de Sur (si0
es Sur, en cambio, sería suficiente sumar un180
valor cada vez que aparezca un '90' en las fórmulas que tratan con ángulos, por ejemplo,cos(radians(90))
se convertiría encos(radians(180 + 90))
). Preferí hacer esto solo por dar una solución más general.Estilo
Representaremos los puntos con
Single symbol
ay recurriendo a unaSimple Marker
y tresGeometry 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 una estrella negra (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 el
Geometry generator
tipo:Inserte esta expresión en el
Expression
campo:Acabamos de definir la primera línea que apunta hacia el punto desde donde comienza el sector de la luz. Esta línea tiene 1000 m de largo y se crea solo cuando el ángulo de apertura de la luz del sector no es un ángulo redondo (esto sucede para evitar que la línea rompa un círculo completo).
3) Geometry Generator No. 2
Igual que el anterior pero, en este paso, debe usar esta expresión:
Acabamos de definir la primera línea que apunta hacia el punto donde termina el sector de la luz. Esta línea tiene 1000 m de largo y se crea solo cuando el ángulo de apertura de la luz del sector no es un ángulo redondo (esto sucede para evitar que la línea rompa un círculo completo).
4) Geometry Generator No. 3
Inserte esta expresión en el
Expression
campo:Acabamos de definir el arco entre los puntos inicial y final del sector de la luz (tenga en cuenta que
2000
es un valor arbitrario porque estoy tratando de crear un polígono para intersecar con el límite del círculo que tiene un radio de 900 m).Además, necesitamos establecer el color que se almacena en el
"VARIS"
campo. Para hacer esto, necesitamos especificarlo con una expresión personalizada. Sigue la flecha en la imagen a continuación:y luego escriba esta expresión después de hacer clic en el
Edit...
botón:Tenga en cuenta que, para esta capa de símbolo, creé dos líneas: la línea superior define el color que se usará (de hecho, configuro la expresión personalizada para esta), mientras que la inferior es útil para definir un borde negro (tendrá un ancho que es más grande que el de la línea superior). Recuerde también para establecer
Flat
comoCap style
para ambas líneas para evitar cualquier color superpuestas.Etiquetado
1) Establecer las etiquetas
Vaya a
Layer Properties
>Labels
y, como siempre, siga las flechas rojas:y luego escribe esta expresión:
Acabamos de definir la regla de color utilizando el valor almacenado en el
"VARIS"
campo.2) Establecer la ubicación de las etiquetas
Seleccione la
Placement
opción en elLabels
Menú y seleccioneOffset from point
.Luego, con referencia a la imagen a continuación:
siga la flecha roja y escriba esta expresión:
Luego, sigue la flecha verde y escribe esta expresión:
Resultado final
Si realizó correctamente las tareas anteriores, debería poder obtener este resultado:
Prima
Dado que los parámetros menores eran demasiados para estar completamente cubiertos en esta respuesta, 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).
fuente