I have a point layer and a polyline layer. I want to select all points in the point layer that are not snapped to a vertex in the polyline layer. How can I accomplish this? I'm using MapInfo and hoping that some SQL select statement can do the trick, but I'm happy with solutions using other GIS packages/program languages as well.
In pretty much any GIS you just need to do an SQL Select query something like the following:
And then reverse the selection.
In Mapinfo this requires using the Query -> SQL Select dialog box and putting "Points.ID" in the Select Columns box, "Points, Lines" in the from tables box and "Lines.obj Intersects Points.obj" in the where Condition box.
Then select the table and do Query -> Invert Selection, which will give you all points that do not intersect a line object.
Please note that you should replace Points and Lines with the real name of your points table and Lines table, but keep the suffixes. Also this will only work where the points are on a vertex of a line, not half way along a line between vertices.
This is not a query per se but if you are doing data clean up I find a thematic can be handy to see what is not snapped. The thematic is dynamic vs a query which is a one of and you have to keep running it.
What you need to do is:
The result is a thematic that updated as you drag the nodes to snap onto the line. Quite handy when you are doing clean up and need to see what you have left.