Question

Service area from many polygons

  • 4 August 2022
  • 2 replies
  • 23 views

Hello! I am trying to create a service area from polygons. I need to create an area that can be achieved during xx minutes with average speed xx km/hour. Is this possible with FME Workbench? (Or do I need to transform the polygon -type into point-type etc.)? I hope you understoor the question and am happy to inform some more.


2 replies

Userlevel 3
Badge +16

It's very possible, just takes a bit of work, I've done this for a 15 minute city concept for walking distance to key amenities.

To begin with set it up to trace from one polygon before expanding to your whole set, because depending on the number of startpoints, and the area to be traced, the processing time can balloon.

The key transformer for this is the NetworkCostCalculator, this will calculate the cost to travel along a line network, out from a point.

image The network lines will need to have an attribute which describes the cost (usually in time) to travel long each line, you can create this by average speed x length, scale it to minutes or seconds as needed.

For the actual trace with the NetworkCostCalculator, you want to only trace along as much of the network as is needed, because it can be very processing intensive (once you get to multiple starting polygons). So you use a buffer and a filter, so that the trace out from each point is only done on just enough line network to get the result.

The NetworkCostCalculator adds its results as Measures, a sort-of attribute that only exists at each vertex on the geometry, so that's how you select the distance along each line to know once your service area 'limit' has been reached.

All that will get you the length of network which can be travelled in X amount of time from a point. To get the actual service area from a polygon (instead of a point as in this example), you'd have to trace from each point along the polygon where it intersects with the network. This may be unnecessarily accurate - it depends on the size of the polygon as to whether using its centrepoint is a sufficient analogue.

To perform the trace from multiple points you will need to use the GroupBy setting on many of the transformers, which I indicated in the screenshot. That ensures their results are calculated separately, and enables traced lines to overlap.

To get the final service area polygon, you can use something like a HullReplacer on the line network, then select all your parcels or property features which it touches.

It's very possible, just takes a bit of work, I've done this for a 15 minute city concept for walking distance to key amenities.

To begin with set it up to trace from one polygon before expanding to your whole set, because depending on the number of startpoints, and the area to be traced, the processing time can balloon.

The key transformer for this is the NetworkCostCalculator, this will calculate the cost to travel along a line network, out from a point.

image The network lines will need to have an attribute which describes the cost (usually in time) to travel long each line, you can create this by average speed x length, scale it to minutes or seconds as needed.

For the actual trace with the NetworkCostCalculator, you want to only trace along as much of the network as is needed, because it can be very processing intensive (once you get to multiple starting polygons). So you use a buffer and a filter, so that the trace out from each point is only done on just enough line network to get the result.

The NetworkCostCalculator adds its results as Measures, a sort-of attribute that only exists at each vertex on the geometry, so that's how you select the distance along each line to know once your service area 'limit' has been reached.

All that will get you the length of network which can be travelled in X amount of time from a point. To get the actual service area from a polygon (instead of a point as in this example), you'd have to trace from each point along the polygon where it intersects with the network. This may be unnecessarily accurate - it depends on the size of the polygon as to whether using its centrepoint is a sufficient analogue.

To perform the trace from multiple points you will need to use the GroupBy setting on many of the transformers, which I indicated in the screenshot. That ensures their results are calculated separately, and enables traced lines to overlap.

To get the final service area polygon, you can use something like a HullReplacer on the line network, then select all your parcels or property features which it touches.

Hey! Thanks so much for the answer. This sounds promising

Reply