Não é uma solução perfeita, mas você pode usar o Geometry Generator, que adiciona uma linha visualizada para representar a interseção. Você pode definir isso para sobrepor o recurso de linha original.
Adicione uma nova camada de símbolo clicando no sinal de mais e selecione o Geometry generator
tipo de camada como símbolo. Defina o tipo de região geográfica LineString / MultiLineString
e use a seguinte expressão:
intersection($geometry, geometry(get_feature( 'polygonLayer','fieldName','value')))
Você precisaria adicionar detalhes sobre seu polígono específico onde:
polygonLayer
é o nome da sua camada de polígono
fieldName
é o nome do campo
value
é o valor do recurso de seu polígono específico
Observe que para colorir a linha visual, você pode precisar fazer isso na propriedade Efeitos do desenho :
Este foi o resultado (observe que a linha visual não se sobrepôs completamente à linha original, por isso modifiquei ligeiramente o deslocamento):
E sem o polígono:
Editar:
Se você deseja que isso seja aplicado a cada recurso de linha que cruza um recurso de polígono, vá para o Editor de Funções e use a seguinte função (altere o nome de polygon example_2
para corresponder ao nome da camada 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
Clique em Carregar , vá para a guia Expressão e digite func()
. Esperamos que o resultado seja o seguinte (usando as mesmas propriedades de estilo mencionadas acima):