I have been given a spreadsheet which contains coordinates of welds along a pipeline. I'm using FME to create points from the coordinates. On average, the points are roughly 11 metres from each other, with some exceptions.

See below image:

enter image description here

What I would like to do is identify when the gaps are larger than about 15 or 20 metres apart. For example, the image below shows a gap of about 90m.

enter image description here

As this pipeline is not yet fully built, there will be many such gaps along its length. Here's an example of a couple of gaps which are several kilometres long (this image is zoomed out so the points look like lines):

enter image description here

One idea I had was to connect the points that are within 15 or 20 metres of each other. Or perhaps group them together somehow by giving each group a unique ID. Any change in that ID, will identify a gap in the points. However, I'm not really sure how I could do either of those in FME.

Any ideas?

  • Suggestion: Why not make them lines and then use a NearestNeighbour +Tester Pass/Fail to detect the distance if >15m send to a pass stream, use the end_of_line and buffer the distance up to >30m and when an intersect is detected that should be your gap convert that to a polygon in the visualiser. – Mapperz Oct 4 '13 at 3:31
  • A pipe segment is 20'. The 90 meters could be a crossing bore. – Brad Nesom Oct 4 '13 at 3:50
  • @BradNesom, could be, but I'd still like to identify it. – Fezter Oct 4 '13 at 4:02
  1. Point Connector (group by the lines Unique ID if appicable)
    • Creates a line from the points
  2. Chopper (max vertices = 2)
    • Chops the line into sections at the vertices
  3. 2D Length Calculator (or 3D if your line has XYZ Coords)
  4. Calculates the length of each segment... you can now query (or use a TestFilter) to identify line segments greater than x feet/meters.
  • Thanks @Matthew, this is a simple solution that worked for me. – Fezter Oct 7 '13 at 23:42

You can use linear referencing for this. If you have your pipeline data as a line feature (which you can construct by joining all the points together if required), use linear referencing to given each weld location and M value along the pipeline. Then iterate over the points and create a new attribute (let's call it 'gap') which is the current M value minus the previous one. You can then identify gaps by selecting points where the gap attribute is greater than your threshold.

  • In theory, this makes a lot of sense to me. However, I couldn't figure out how to compare the M value to the previous one. – Fezter Oct 7 '13 at 23:20
  • ONe way you could do it would be to create a table where you can store the M values (in ArcGIS there's a function to do this, though I haven't got access to Arc and I can't remember what it's called, but I would expect FME can do the same thing). You can then iterate over the table and create another attribute which is the product of the current row's M value minus the previous one (so it may mean a bit of scripting). – MappaGnosis Oct 8 '13 at 13:24

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.