No hay una solución perfecta, pero se puede hacer uso de la Geometría Generador que añade un visualizadas línea para representar la intersección. Entonces, podría establecer esta a la superposición de la línea original de la característica.
Añadir un nuevo símbolo de la capa haciendo clic en el signo más y seleccione el Geometry generator
como símbolo del tipo de capa. Establecer el geoemtry tipo a LineString / MultiLineString
y el uso de la siguiente expresión:
intersection($geometry, geometry(get_feature( 'polygonLayer','fieldName','value')))
Se necesitaría añadir detalles acerca de su polígono donde:
polygonLayer
es el nombre de la capa de polígono
fieldName
es el nombre del campo
value
es la función de valor de su polígono
![Style properties]()
Tenga en cuenta que para el color de la línea visual, usted puede necesitar para hacerlo desde el Sorteo de los efectos de la propiedad:
![Draw effects properties]()
Este fue el resultado (tenga en cuenta que la línea visual no se superpone a la línea original completamente así que he modificado el desplazamiento un poco):
![Result]()
Y sin el polígono:
![Result without polygon]()
Editar:
Si usted desea que se aplique para cada entidad de línea de intersección de un polígono característica, vaya al Editor de la Función y el uso de la siguiente función (cambiar el nombre de polygon example_2
a coincidir con el nombre de su capa de polígonos):
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
![Function editor]()
Haga clic en Cargar , a continuación, vaya a la Expresión tab y escriba en func()
. Esperemos que el resultado debería parecerse a la siguiente (usando el mismo estilo de propiedades mencionadas anteriormente):
![Final result]()