Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revision Both sides next revision
tutorial:calculating_accumulated_cost_surface_and_least-cost_pathway [2013/08/14 14:55]
admin
tutorial:calculating_accumulated_cost_surface_and_least-cost_pathway [2017/01/25 18:52]
francisco [What will you learn?]
Line 7: Line 7:
  
   * How to calculate a friction surface, cost surface and least-cost pathway   * How to calculate a friction surface, cost surface and least-cost pathway
-  * Functors: \\ - //[[:Calc Cost map]]//\\ - //[[:Calc Pathway ​map]]//+  * Functors: \\ - //[[:Calc Cost Map]]//\\ - //[[:Calc Pathway ​Map]]//
  
 This exercise requires the calculation of a friction surface, representing the relative cost of crossing a unit cell depending on the land use. We can express this surface both in terms of distance – no differential cost exits among types of land uses; hence the least-cost pathway will be the shortest route, i.e. the Euclidian distance – time, financial cost or some type of effort. Thus, this value is calculated in relation to some unit (time, transportation cost, etc).  This exercise requires the calculation of a friction surface, representing the relative cost of crossing a unit cell depending on the land use. We can express this surface both in terms of distance – no differential cost exits among types of land uses; hence the least-cost pathway will be the shortest route, i.e. the Euclidian distance – time, financial cost or some type of effort. Thus, this value is calculated in relation to some unit (time, transportation cost, etc). 
Line 59: Line 59:
 | > 20            | 5  |  | > 20            | 5  | 
  
-Let’s begin the model by loading the maps ''​landuse.tif''​ and ''​slope.tif''​ using the functor //[[:Load Map]]//. Then, let’s incorporate the two previous tables. Add a Lookup Table from Table tab.  ​+Let’s begin the model by loading the maps ''​landuse.tif''​ and ''​slope.tif''​ using the functor //[[:Load Map]]//. Then, let’s incorporate the two previous tables. Add a [[:Lookup Table]] from Lookup ​Table tab.  ​
  
 You should have something like this:\\ You should have something like this:\\
Line 66: Line 66:
 \\ \\
 \\ \\
-Now place three //​[[:​Calculate Map]]// and four //[[:Number Map]]// functors, one within each //​[[:​Calculate Map]]// and two //[[:Number Map]]// functors within the third, and one //[[:Number Table]]// within one of the two first //​[[:​Calculate Map]]// functors and //[[:Save Map]]//. Open //[[:Number Map]]//, assign a unique number (1 and 2) to each one and assign "​1"​ to //[[:Number Table]]//. Finally connect Map ''​landuse.tif'' ​to //[[:Number Map]]// 1 and Map ''​slope.tif''​ to //[[:Number Map]]// ​of the two first //​[[:​Calculate Map]]//. Then, connect the two first to the third //​[[:​Calculate Map]]// and it to //[[:Save Map]]//. Open //[[:Save Map]]// and enter ''​friction.tif''​. This is what you get.+Now place three //​[[:​Calculate Map]]// and four //[[:Number Map]]// functors, one within each //​[[:​Calculate Map]]// and two //[[:Number Map]]// functors within the third, and one //[[:Number Table]]// within one of the two first //​[[:​Calculate Map]]// functors and //[[:Save Map]]//. Open //[[:Number Map]]//, assign a unique number (1 and 2) to each one and assign "​1"​ to //[[:Number Table]]//. Finally connect Map ''​landuse.tif''​ and Map ''​slope.tif''​ to //[[:Number Map]]// ​of the two first //​[[:​Calculate Map]]//. Then, connect the two first to the third //​[[:​Calculate Map]]// ​respectively ​and it to //[[:Save Map]]//. Open //[[:Save Map]]// and enter ''​friction.tif''​. This is what you get.
  
 {{ :​tutorial:​cost3.jpg |}} {{ :​tutorial:​cost3.jpg |}}
Line 86: Line 86:
 **i1*i2**\\ **i1*i2**\\
 \\ \\
-Save the model as ''​my_friction'', ​verify its integrity ​and if it is O.K., run it.\\+Save the model as ''​my_friction'',​ and run it.\\
 \\ \\
 Open on the Map Viewer ''​friction.tif'',​ using “Pseudocolor” as Current Color Palette and in the Histogram click on Limits to Actual and Histogram Equalize. ​ Open on the Map Viewer ''​friction.tif'',​ using “Pseudocolor” as Current Color Palette and in the Histogram click on Limits to Actual and Histogram Equalize. ​
Line 115: Line 115:
 </​WRAP>​\\ </​WRAP>​\\
  
-The **Source** port will receive the Map ''​railroad.tif''​ and the friction ​map output by the third //​[[:​Calculate Map]]//. Turn on **Diagonals Cost More**. This will penalize the movement across diagonal cells. Set **Maximum Number of Passes** to “2”. Leave all other options untouched.{{ :​tutorial:​cost7.2.jpg |}}+The **Source** port of [[:Calc Cost Map]] functor ​will receive the Map ''​railroad.tif''​ and the **Friction** port will receive the map output by the third Calculate Map //​[[:​Calculate Map]]//. Turn on **Diagonals Cost More**. This will penalize the movement across diagonal cells. Set **Maximum Number of Passes** to “2”. Leave all other options untouched.
  
-Open //[[:Calc Pathway Map]]// now with the Edit Functor Ports. ​Link Map ''​town1.tif''​ to the **Source** port <note tip>​**TIP**:​ **Source**, in this case, also represents the destiny since the cost map was built from the existing railroad. Thus, this algorithm will search for the least-cost pathway from the source to the existing feature, i.e. the railroad.</​note> ​+Open //[[:Calc Pathway Map]]// now with the Edit Functor Ports. ​
  
-Link the map output from //[[:Calc Cost Map]]// to the port **Cost** and Map ''​railroad.tif''​ to **Network** (because it represents a linear feature network) and the output **Network** port to //Save Map//. {{ :​tutorial:​cost8.2.jpg |}}+Link Map ''​town1.tif''​ to the **Source** port <note tip>​**TIP**:​ **Source**, in this case, also represents the destiny since the cost map was built from the existing railroad. Thus, this algorithm will search for the least-cost pathway from the source to the existing feature, i.e. the railroad.</​note>​  
 + 
 +Link the map output from //[[:Calc Cost Map]]// to the port **Cost** and Map ''​railroad.tif''​ to **Network** (because it represents a linear feature network) and the output **Network** port to //[[:Save Map]]//. {{ :​tutorial:​cost8.2.jpg |}}
  
 Activate the option **Use Lottery** (this is an artifact that permits the model to solve the path when two or more local minima are found).\\ Activate the option **Use Lottery** (this is an artifact that permits the model to solve the path when two or more local minima are found).\\
 \\ \\
  
-{{ :​tutorial:​cost9.jpg?​300|}}//​[[:​Calc Pathway Map]]// ignores cells with values equal or lesser than 0 or null cells. In turn //[[:Calc Cost Map]]// needs a network map with null cells representing non-features. Go to //[[:Load Categorical Map]] and open it with the Edit Functor. Press the flag **Null Value** and make sure **Use specific value** is set to “0”.\\+{{ :​tutorial:​cost9.jpg?​300|}}//​[[:​Calc Pathway Map]]// ignores cells with values equal or lesser than 0 or null cells. In turn //[[:Calc Cost Map]]// needs a network map with null cells representing non-features. Go to //[[:Load Categorical Map]]// and open it with the Edit Functor. Press the flag **Null Value** and make sure **Use specific value** is set to “0”.\\
 \\ \\
 \\ \\
Line 130: Line 132:
 Click on //[[:Save Map]]// with the Edit Functor, change the folder to an upper level, change the file format to “geotiff” and set **Suffix to Digits** to “0”, finally enter ''​railway.tif''​. The final model will look as follows: {{ :​tutorial:​cost10.jpg |}} Click on //[[:Save Map]]// with the Edit Functor, change the folder to an upper level, change the file format to “geotiff” and set **Suffix to Digits** to “0”, finally enter ''​railway.tif''​. The final model will look as follows: {{ :​tutorial:​cost10.jpg |}}
  
-Save the model to a new file ''​my_pathway.egoml'', ​verify it and if it is O.K., run it. This is going to take only a little while. Dinamica EGO has superior performance in relation to most commercial GIS packages; you may want to try this model on other software just for performance comparison. Open on the Map viewer ''​railway.tif'',​ using "​PseudoColor"​ as **Current Color Palette**. What do you see?​\\ ​+Save the model to a new file ''​my_pathway.egoml'',​ and run it. This is going to take only a little while. Dinamica EGO has superior performance in relation to most commercial GIS packages; you may want to try this model on other software just for performance comparison. Open on the Map viewer ''​railway.tif'',​ using "​PseudoColor"​ as **Current Color Palette**. What do you see?​\\ ​
 \\ \\
 {{ :​tutorial:​cost11.2.jpg |}}\\ {{ :​tutorial:​cost11.2.jpg |}}\\
 \\ \\
 \\ \\
-You may try to maximize the solution for the Calc Cost Map algorithm by setting the **Maximum Number of Passes** to “0”. Compare the time spent by this run and its resulting path with that of previous model? Did it make a big difference?​\\+You may try to maximize the solution for the //[[:Calc Cost Map]]// algorithm by setting the **Maximum Number of Passes** to “0”. Compare the time spent by this run and its resulting path with that of previous model? Did it make a big difference?​\\
 \\ \\
 This type of model can also be modified to develop simultaneously multiple paths. Open the model ''​join_towns.egoml''​ in lesson 4 folder.{{ :​tutorial:​cost12.jpg |}} This type of model can also be modified to develop simultaneously multiple paths. Open the model ''​join_towns.egoml''​ in lesson 4 folder.{{ :​tutorial:​cost12.jpg |}}
Line 141: Line 143:
 This model shows how you can use //​[[:​Calculate Map]]// to merge information from several maps into a single one. The product will be a map depicting the center cells for four towns. TIP: use always a sole cell to represent a location to be reached by //[[:Calc Pathway Map]]//.\\ This model shows how you can use //​[[:​Calculate Map]]// to merge information from several maps into a single one. The product will be a map depicting the center cells for four towns. TIP: use always a sole cell to represent a location to be reached by //[[:Calc Pathway Map]]//.\\
  
-Now replace the input in Map ''​town1.tif''​ with the file ''​multiple_towns.tif''​ and change the file in Map ''​railway.tif''​ to ''​xrailways.tif''​.\\+Now replace, into model my_pathway.egoml, ​the input in Map ''​town1.tif''​ with the file ''​multiple_towns.tif''​ and change the file in Map ''​railway.tif''​ to ''​xrailways.tif''​.\\
  
 Did you get something like this?\\ Did you get something like this?\\