I have a line file and a polygon file in QGIS.

Primarily I am looking for any polygon that has a line intersecting it - easy, sorted.

From these intersects, I then want to pull out just the polygons that have a line going all the way through them and ignore those where the line ends within the polygon. See the below diagram for an explanation: I only want polygons 2 and 3.


Does that make sense? I haven't managed to find any predefined tools thus far.


Tested on QGIS 2.18

I can suggest using a "Virtual Layer" through Layer > Add Layer > Add/Edit Virtual Layer...

Let's assume we have two layers, namely "lines_test" and "polygons"


With using this query you may achieve the result you are looking for.

FROM polygons
WHERE polygons.id NOT IN (
    SELECT polygons.id
    FROM polygons, lines_test
    WHERE ST_Within(ST_StartPoint(lines_test.geometry), polygons.geometry) OR ST_Within(ST_EndPoint(lines_test.geometry), polygons.geometry)



| improve this answer | |

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.