Skip to main content
Solved

I got a circle (buffer of 30km around an emission-source), which I've to divide in 12 Segments (30 DegreeSegments)? ?

  • December 10, 2015
  • 6 replies
  • 30 views

I got a circle (buffer of 30km around an emission-source), which I've to divide in 12 Segments (30 DegreeSegments)? ?

Best answer by erik_jan

It can also be done like this:

Create the centerpoint from the Circle using CenterPointReplacer (also keep the Circle).

Use the RadiateLineGenerator to generate 12 lines a bit longer than the radius of the Circle (40).

Use the Intersector to clip the lines and circle.

Use AreaBuilder to create the segments.

View original
Did this help you find an answer to your question?
This post is closed to further activity.
It may be a question with a best answer, an implemented idea, or just a post needing no comment.
If you have a follow-up or related question, please post a new question or idea.
If there is a genuine update to be made, please contact us and request that the post is reopened.

6 replies

jdh
Contributor
Forum|alt.badge.img+28
  • Contributor
  • December 10, 2015

I would probably create 12 radiating lines and then use them to split the polygon.

You can create the lines with a VertexCreator based on the original emission-source point and the following values:

x: @XValue()+$(Distance)*@cos(@degToRad($(Angle)))

y: @XValue()+$(Distance)*@sin(@degToRad($(Angle)))

Splitting the polygon is trickier (why doesn't fme have an AreaOnLineOverlayer?) But essentially run both the buffer and the lines through either an Intersector or TopologyBuilder and then use an AreaBuilder to reconstitude the polygon.

If you have a unique ID attribute on your source point (and buffered area) you can use a group by on the AreaBuilder to preserve that attribute and then use a FeatureMerger to restore the attributes, otherwise some sort of spatial joining will need to occur.


erik_jan
Contributor
Forum|alt.badge.img+17
  • Contributor
  • Best Answer
  • December 10, 2015

It can also be done like this:

Create the centerpoint from the Circle using CenterPointReplacer (also keep the Circle).

Use the RadiateLineGenerator to generate 12 lines a bit longer than the radius of the Circle (40).

Use the Intersector to clip the lines and circle.

Use AreaBuilder to create the segments.


jdh
Contributor
Forum|alt.badge.img+28
  • Contributor
  • December 10, 2015
erik_jan wrote:

It can also be done like this:

Create the centerpoint from the Circle using CenterPointReplacer (also keep the Circle).

Use the RadiateLineGenerator to generate 12 lines a bit longer than the radius of the Circle (40).

Use the Intersector to clip the lines and circle.

Use AreaBuilder to create the segments.

I didn't know about the RadiateLineGenerator, I'll have to look into it


gio
Contributor
Forum|alt.badge.img+15
  • Contributor
  • December 10, 2015

Or use a 2dArcCreator center x = source_x, center y = source_y, primary axis and secondary axis =30, 0 to 360

create line centerpoint (Creator) to (source_x + 30,source_y) and clone this 12x (Cloner 12)

then rotate lines by 360/12 * copynum (Rotator)

intersect them all and create area (Areabuilder).


  • Author
  • December 10, 2015

Thanks for the advices. Didn't know the RadiateLineGenerator. Worked very well!


jdh
Contributor
Forum|alt.badge.img+28
  • Contributor
  • December 10, 2015

As a completely different alternative, clone your emission source 12 times, create an azimuth attribute of copynum*30 and send them to a SectorGenerator with a radius of 30km. The Sectors output port will give you your pie wedges.


Cookie policy

We use cookies to enhance and personalize your experience. If you accept you agree to our full cookie policy. Learn more about our cookies.

 
Cookie settings