I'm using the Intersect tool in QGIS 3.10.3 on two line layers A and B to create the intersecting layer C. I can then use the Difference tool to subtract A-C and to subtract B-C, resulting in three mutually exclusive layers. The problem is that each of the features in layer C has two copies of the intersecting line segment (one from each input layer?) so that when the feature is drawn the line appears heavier or thicker than the lines in the other two layers. How can I resolve this? Can I make an intersecting layer with just one copy of each intersecting line? I have tried using the Remove Duplicate Vertices tool without effect, maybe I don't know how to use it.

I guess I should clarify. I'm looking for line segments that overlay each other, so I'm using the Geoprocessing tool called Intersection. I'm not interested in lines that simply cross each other at a point.

  • Can you add a screenshot showing the problem? – BERA Mar 6 '20 at 19:03
  • 1
    Have you tried the Delete duplicate geometries tool on layer C? – Gabriel C. Mar 6 '20 at 20:17
  • Thanks for the suggestion, but Delete duplicate geometries doesn't help. It deletes duplicate geometries between different features. In my case, each individual feature contains two copies of the same line; that is, each individual feature has two copies of every vertex. – Eric Mar 6 '20 at 21:37
  • The intersection result should be just one line. You can isolate the problem: create two layers with the same line; intersect them; the result should be just one line. Not two. – jgrocha Mar 7 '20 at 10:39
  • Yes, the result should be just one line, but it's not. It's one feature but not just one line. Try it with a line that has 5 vertices. Examine the vertex table of the intersected feature (layer C) and you will see that there are now 8 vertices! There's one instance of each end vertex and 2 instances of every vertex in between. That's what I mean by two lines. If v is the number of vertices in the layer A line, then the intersected line C always has 2v-2 vertices. – Eric Mar 7 '20 at 14:56

One possible solution to your problem is to use the Field Calculator to create a new line that represents the segment of intersection between two lines (A and B for you).

In the Processing Toolbox select the tool Vector Geometry > Geometry By expression.

enter image description here

Here select "line_b" as Input Layer, "Line" as Geometry Type and had this expression to the Geometry Expression

intersection($geometry, (geometry(get_feature_by_id('line_b',$id))))

This will create a new layer with a line that is the result of the intersection of line a and line b.

enter image description here

  • Layer A and layer B each contain hundreds of line features and the intersecting layer might also contain hundreds of intersecting lines.. This looks like a lot of labor to create them one by one. In addition I want an intersecting layer that contains the attributes from both A and B. Can this be automated? – Eric Mar 7 '20 at 1:44
  • I have edited my answer to suit your request. Now you can create x new lines C , by expression, for any intersection of line A and B. – Val P Mar 7 '20 at 11:37

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.