Question

Create catchment polygons from road network

  • 27 October 2017
  • 6 replies
  • 24 views

Badge +1

Hi I have two data sets:

  • service stations, about 100 points
  • road network
I would like to create polygons for the service area for each point, much like image #3 here, https://www.zimmi.cz/posts/2017/routing-with-grass-gis-catchment-area-calculation/, but instead of dividing the network, I would like a polygon for each zone. I have been unable to find any FME examples for this task. Any recommendations on how to solve this? Regards, Magnus

6 replies

Userlevel 2
Badge +12

Have a look at the VoronoiDiagrammer transformer.

That should be able to do something similar.

You might have to create a rectangle for the entire area first.

Userlevel 4
Badge +25

As @erik_jan says, the VoronoiDiagrammer transformer is a way to create assigned areas based on strict spatial location (so the resulting polygon will be the area that is closest to the original point).

This is a good example.

However, if you want the areas to be based on the actual road network distance (or time) then I think you would need to the use the NetworkCostCalculator transformer. This article here shows one example. That example actually uses firehall zones that were calculated using the VoronoiDiagrammer, so it's a mix of techniques. Anyway, I think this will be a good starting point for you.

You'll also find some help here in previous questions - like this or this.

Badge +1

Thank you for the suggestions. I have created distance isochrones for a single service station, but I am a bit stuck on how to go from there to create catchment areas for the whole data set (about 100 points). Thanks in advance for any further suggestions.

Badge +3

The article you posted from Zimmerman using Grass Gis can be fully emulated using fme.

Snapper, topology builder network calculation and some supporting transformers.

Building a decent network is required.

Maybe post sample data, we can construct sample?

Badge +1

The article you posted from Zimmerman using Grass Gis can be fully emulated using fme.

Snapper, topology builder network calculation and some supporting transformers.

Building a decent network is required.

Maybe post sample data, we can construct sample?

I have attached some sample data (road network and a few points). Any hints on how to solve this would be appreciated.

 

 

data.zip

 

Userlevel 4
Badge +25

Thank you for the suggestions. I have created distance isochrones for a single service station, but I am a bit stuck on how to go from there to create catchment areas for the whole data set (about 100 points). Thanks in advance for any further suggestions.

I think you'll need to create a sequential ID number for the points, create a matching set of lines (using a Cloner), then set the ID number as a group-by in the NetworkCostCalculator.

 

Here's an example. Note the point ID attribute and the Cloner copynumber ID need to be the same name, and you need to create the same number of network clones as there are points (ie one set of lines per point). Not very elegant, but it works.

 

groupednetwork.fmwt

 

Reply