Solved

I would like to find out point which does not intersect with line.

  • 15 September 2017
  • 5 replies
  • 18 views

icon

Best answer by fmelizard 15 September 2017, 20:08

View original

5 replies

Userlevel 4
Badge +13

Hi @ujjwalpakhare. Welcome to the FME Knowledge Center Community!

The following transformers may be useful by applying the opposite logic they are usually used for: Intersector, PointOnLineOverlayer, or the SpatialFilter. Please consider checking out this article on Determining Spatial Relationships.

If you require further assistance, sharing a few more details will help the FME community help you. Please reply to this thread and provide additional details including:

  • The version of FME you are using, including build number and edition
  • A small sample of your data, or screenshots of the data in the FME Data Inspector
  • A description of your expected output, with screenshots if possible
  • Your FME workspace
  • Your FME translation log file
  • Any other information that may be useful to share

Badge

You can use the SpatialFilter transformer. Set the Lines as the Filter and the Points and the Candidate. If you have multiple lines, makes sure Filter Type is set to "Multiple Filters". Set Spatial Predicates to Test to "Filter Intersects Candidate". The points that do not intersect the line will exit through the Failed port.

Userlevel 5
Badge +30

Hi @ujjwalpakhare,

You can use the PointOnLineOverlayer and Tester to filter Points were _overlaps = 0.

Thanks,

Danilo

Userlevel 3
Badge +17

You can use the SpatialFilter transformer. Set the Lines as the Filter and the Points and the Candidate. If you have multiple lines, makes sure Filter Type is set to "Multiple Filters". Set Spatial Predicates to Test to "Filter Intersects Candidate". The points that do not intersect the line will exit through the Failed port.

Just be aware that there could always be a computational error in geometric operations by computers, and FME won't apply a tolerance implicitly to determine spatial relations. This means, even if it's mathematically true that a point is on a line, there are cases that the SpatialFilter could not determine the relation correctly.

 

I therefore think the PointOnLineOverlayer is suitable here since you can specify a tolerance. Or, it's also a possible approach to use the Bufferer to create a slender buffer representing tolerance area around the line, then apply the SpatialFilter to filter the points by the buffer.

Thanks for the solution. It helps. However, it gives the error where point not snapped on line.

Reply