Question

Using FME to create a Polygon datasets froma Point dataset

  • 22 February 2016
  • 8 replies
  • 8 views

I have a point dataset in Oracle and want to convert it using FME to a polygon dataset.Can anyone let me know how this can be done using FME ?


8 replies

Badge +7

Yes, I can.

Badge +7

Yes, I can.

But seriously though: try to be more specific and I'm sure that someone will help you. Do you need to connect points to form polygons? Do they need to be grouped based on proximity and then turned into a convex/concave hull? Do the points have useful attributes?

Currently the point dataset is held in Oracle and has the SDO_POINT_TYPE attribute , What i want to do is export this as a point data set initially and then transform into a polygon dataset. The grouping should be based on proximity of the point and turned into a convex hull. What is also important is to extract the useful attributes from the points also. hope that helps

Userlevel 2
Badge +17

Hi, if a group of points represents the vertices of a polygon boundary, the PointConnector can be used to create the boundary line. Then, you can use the LineCloser to transform the boundary into a polygon.

Badge +7

In that case, you can use the NeighborhoodAggregator, followed by a HullReplacer.

 

The attributes you specify for the Group By clause in the NeighborhoodAggregator will also be persisted. Unfortunately, the NeighborhoodAggregator does not have a list attribute option, so if you want to keep additional attributes, you would need to figure something out (e.g. use a Counter to distinct the neighborhoods, deaggregate everything and then perform a spatial join with the original points to get the other attributes, then use the Aggregator with the count attribute as a Group By clause and specify a list attribute).
Badge +3

I did this by doing a iterative network building.

1. Find closest neighbour, using Neighbourfinder in "Candidates only" mode)

2. Create lines form these (using closest canditae_X and Y).

3. Then create a topology of these (TopologyBuilder ) followed by a NetworkTopology builder. This will give you the number of separate networks and their network_id (connected points).

4. Repeat this till there are no more points within your set distance. This should result in a collection of networks that are not within your set distance of eachother.

The Repeat bit is a bit tricky: u need to have the neighbourfinder only look at different networks. This means that after neighbourfinder you need to test if the list containes elements of other network and filter these. etc.

5. This then you can hullaccumulate grouped by network_id.

see pic. (based on near

est points)

I have another solution, wich connects the points totaly different, creates less boxtype shapes.

Hi, if a group of points represents the vertices of a polygon boundary, the PointConnector can be used to create the boundary line. Then, you can use the LineCloser to transform the boundary into a polygon.

 

But how do you sort the point connector (points), my output does not close my line as it is zig-zagged because my vertexes need to be ordered around the polygon! What's the easiest way to reorder the vertex points (I've tried counter then sorter).

 

 

Thank you!

 

Userlevel 2
Badge +17

Hi, if a group of points represents the vertices of a polygon boundary, the PointConnector can be used to create the boundary line. Then, you can use the LineCloser to transform the boundary into a polygon.

Hi @logancohrs, in some special cases, the HullAccumulator (convex or concave hull) might help you. Otherwise, it's hard to find a solution perfectly automated unless you can find any regularity on attributes and/or geometry which can be used to reorder the points appropriately. See the discuss in this thread: build polygon from point

 

Reply