Me gustaría simbolizar un polígono sin convertirlos en una línea. Tengo una función de polígono (sombreada y delimitada por una línea roja) que coincide en la parte superior e inferior de la costa (línea azul). Me gustaría simbolizar el contorno de un polígono solo en dos lados y quiero eliminar el color rojo en la parte superior e inferior.
Me gustaría ver el resultado final así.
Respuestas:
Geometry generator
Luché un poco con el como @GSienko. Para la parte de intersección también puede usar la función incorporadaaggregate
. También utilicé lasegment_to_lines
función que convierte polígonos en líneas.o
Si tiene algún polígono "no relacionado" con las líneas, puede agregar una
if
condición para la intersección. Si las capas están en intersección, entonces se aplica la diferencia para la simbología, de lo contrario se aplica la geometría completa.editar : El uso del generador de líneas de esta manera tiene un punto débil: debe manejar el símbolo de la leyenda, porque representa la línea a través del polígono (no como un borde). Sin embargo, aún puede duplicar la capa, establecer un relleno simple y usarlo como leyenda.
fuente
Intente usar el complemento refFunction dentro del generador de geometría.
Suposición. 2 capas: una línea como línea y polígonos como polígono.
Estilo de polígono como ese:
geomintersect realizará una consulta espacial entre la capa de polígono y la capa de línea, y devolverá la geometría de la intersección de dos de ellas, en nuestro caso, dos bordes de polígonos. El siguiente paso es hacer la diferencia con el borde del polígono. No sé si tendrá agujeros dentro o no, entonces exterior_ring () devolverá solo el borde exterior.
Resultado final:
La limitación: geomintersect verificará la intersección solo para un polígono. Gestiono esa limitación creando capas de polígonos en un gran multipolígono, por ejemplo, mediante una capa virtual para el diseño de bordes.
fuente
¿Qué tal agregar una línea blanca debajo de la línea azul en la otra capa, que tiene el mismo ancho que la línea roja? Si coloca la línea azul sobre la capa de polígono, la línea blanca oscurecerá la línea roja.
Por supuesto, esto supone que tiene un fondo blanco como en su ejemplo, y que está de acuerdo con que algunos de los cruces también estén ocultos.
Este es el resultado de mi prueba rápida:
Configuraciones para línea azul:
fuente
Descargo de responsabilidad: esta respuesta no funcionará si tiene varios polígonos
Lo que podría hacer es averiguar qué nodos forman las cuatro esquinas del polígono entre las que desea dibujar líneas, y luego usarlos en las funciones MAKE_LINE () para dibujar las líneas:
Para encontrar qué nodos necesita:
POINT_N($geometry, 1)
para mostrar el primer nodo como un puntoPara dibujar las líneas:
MAKE_LINE(POINT_N($geometry, *first point*), POINT_N($geometry, *second point*)
A continuación, solo agrega una simbología de relleno de patrón de línea normal debajo de esos dos generadores de geometría
fuente