No es una solución perfecta, pero podría utilizar el Geometry Generator que agrega una línea visualizada para representar la intersección. Luego puede configurar esto para superponer la función de línea original.
Agregue una nueva capa de símbolo haciendo clic en el signo más y seleccione el Geometry generator
tipo de capa como símbolo. Establezca el tipo de geoemtry en LineString / MultiLineString
y use la siguiente expresión:
intersection($geometry, geometry(get_feature( 'polygonLayer','fieldName','value')))
Debería agregar detalles sobre su polígono específico donde:
polygonLayer
es el nombre de tu capa de polígono
fieldName
es el nombre del campo
value
es el valor de la característica de su polígono específico
Tenga en cuenta que para colorear la línea visual, es posible que deba hacerlo desde la propiedad Dibujar efectos :
Este fue el resultado (tenga en cuenta que la línea visual no se superponía completamente con la línea original, por lo que modifiqué ligeramente el desplazamiento):
Y sin el polígono:
Editar:
Si desea que esto se aplique para cada entidad de línea que se cruza con una entidad poligonal, vaya al Editor de funciones y use la siguiente función (cambie el nombre de polygon example_2
para que coincida con el nombre de su capa de polígono):
from qgis.core import *
from qgis.gui import *
@qgsfunction(args='auto', group='Custom')
def func(feature, parent):
polygon_layer = QgsMapLayerRegistry.instance().mapLayersByName( "polygon example_2" )[0]
feat_list = []
geoms = QgsGeometry.fromWkt('GEOMETRYCOLLECTION()')
for polygon_feat in polygon_layer.getFeatures():
if feature.geometry().intersects(polygon_feat.geometry()):
intersection = feature.geometry().intersection(polygon_feat.geometry())
feat_list.append(intersection)
for x in feat_list:
geoms = geoms.combine(x)
return geoms
Haga clic en Cargar , vaya a la pestaña Expresión y escriba func()
. Esperemos que el resultado sea similar al siguiente (usando las mismas propiedades de estilo mencionadas anteriormente):