Skip to main content

Hello World of FME,

I want to create vertice in the middle of existing vertice. This might be no problem but there is a huge amount of vertice and the creation of the new ones has to be realized by a special schmema you can see in the pictures. There should be created new points between serial vertice of the same line. Every vertex has information about the id of its line. And every point has a number which describes the chronology. An old and a new attribute table of the points is attached.

Thank you for your answers!

Felix

Hi @felixderglueckl, on creating the new nodes I would do the following:

pointonlineoverlayer on the existing nodes and lines > calculate the resulting segments length > adding a new point half way the length> again pointonlineoverlayer with the new nodes and original lines > grouping/aggregating the lines to form the new geometry.

Just an idea, hope it helps.


What I would do:

If centerpoints needed.

- add UUID's to original lines

 

- chop original lines to lines of 2 vertices

 

- assign UUID's to chopped lines

 

- calculate length per chopped line

 

- chop line by half calculated length

 

- join lines by 2nd uuid

 

- join lines by first uuid

 

- featuremerge original attributes by first uuid

 

 

If not centerpoints but specific coordinates needed.

- add UUID's to original lines

 

- chop original lines to vertices

 

- record pointorder by counter

 

- add vertices from add-point-table

 

- make sure the pointorderattributes lign up correctly

 

- sort points by UUID and pointorder

 

- use pointconnector to build lines from points group by UUID

 

- featuremerge original attributes by UUID


Are you hoping for lines or points at the end of this? The diagram indicates you want start and end points but your list doesn't include end points at the end of line


You could simply use the old table to either snip, chop or build the linepieces.

Then snip at 50/50 and enumerate.

You can also insert them using a attribute creator to create the coordinateset.

Can also be done using a variable setter and retriever.

Then create the lines using 2 vertexcreators and then use snipper at 50/50 to create the point.

Then u can recreate the line using a pointconnector. (grouped by line id )


I would do this:

Chop the lines into segments (Chopper, with 2 vertices).

Use CenterpointReplacer to create the halfway points.

Use the PointOnLineOverlayer to enter the halfway points into the lines.

Use the LineJoiner to recreate the lines from the segments.


Reply