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
tutorial:multiple_criteria_evaluation_in_dinamica_ego [2013/08/13 23:21]
admin
tutorial:multiple_criteria_evaluation_in_dinamica_ego [2017/01/27 17:00] (current)
francisco [Sixth step: identifying suitable areas 2]
Line 54: Line 54:
 **if i1 = 0 then null else if i1 = 1 then null else if i1 =4 then null else if i1 = 5 then null else 1** **if i1 = 0 then null else if i1 = 1 then null else if i1 =4 then null else if i1 = 5 then null else 1**
  
-The null value will mask out rivers, flooded plains, urban areas, and roads in subsequent map operations. Do not forget to set **Data Cell Type** to "​Unsigned 8 Bit Integer"​ and **Null Value** to 0.+The null value will mask out rivers, flooded plains, urban areas, and roads in subsequent map operations. Do not forget to set **Cell Type** to "​Unsigned 8 Bit Integer"​ and **Null Value** to 0.
  
 {{ :​tutorial:​mce_2.jpg |}} {{ :​tutorial:​mce_2.jpg |}}
Line 80: Line 80:
 **Source** is a map containing the features to which distances will be calculated. A feature is represented by a non-null value. **Mask** is a map used to mask the distance calculation on its null cells. Let’s connect the output from //​[[:​Calculate Categorical Map]]// to **Source** and Categorical Map ''​landuse.tif''​ to **Mask**. Now open the //​[[:​Calculate Categorical Map]]// and write the following equation:\\ **Source** is a map containing the features to which distances will be calculated. A feature is represented by a non-null value. **Mask** is a map used to mask the distance calculation on its null cells. Let’s connect the output from //​[[:​Calculate Categorical Map]]// to **Source** and Categorical Map ''​landuse.tif''​ to **Mask**. Now open the //​[[:​Calculate Categorical Map]]// and write the following equation:\\
  
-**if i1 = 5 then1 else null**+**if i1 = 5 then 1 else null**
  
-Remember that 5 is the number identifier for urban. You do not need to change either **Data cell type** or **Null Value** in both functors, although to save memory you could set "​Signed 8 Bit Integer"​ and **Null Value** to "​0"​ in //​[[:​Calculate Categorical Map]]//. You may also turn on the option **Truncate Distance** in Calc Distance to Feature Map. This will avoid exceeding the maximum numerical representation selected for **Data cell type**.+Remember that 5 is the number identifier for urban. You do not need to change either **Cell type** or **Null Value** in both functors, although to save memory you could set "​Signed 8 Bit Integer"​ and **Null Value** to "​0"​ in //​[[:​Calculate Categorical Map]]//. You may also turn on the option **Truncate Distance** in Calc Distance to Feature Map. This will avoid exceeding the maximum numerical representation selected for **Cell type**.
  
 Now connect the port **Distance** in //[[:Calc Distance to Feature Map]]// to //[[:Save Map]]//. The model should be ready to run. Always save the model before putting it to run. Save it as ''​my_MCE_part1&​2.egoml''​. Examine the result with the Map Viewer. Now connect the port **Distance** in //[[:Calc Distance to Feature Map]]// to //[[:Save Map]]//. The model should be ready to run. Always save the model before putting it to run. Save it as ''​my_MCE_part1&​2.egoml''​. Examine the result with the Map Viewer.
Line 164: Line 164:
 <note important>​Important:​ Do not forget to change **Cell Type** both in //​[[:​Calculate Map]]// that generates the friction map and also in //[[:Calc Cost Map]]// to "IEEE 754 Bit Real". Remember that the cell cost is expressed in fractional number.</​note>​ <note important>​Important:​ Do not forget to change **Cell Type** both in //​[[:​Calculate Map]]// that generates the friction map and also in //[[:Calc Cost Map]]// to "IEEE 754 Bit Real". Remember that the cell cost is expressed in fractional number.</​note>​
  
-Now pass the output of the //[[:Calc Cost Map]]// to another //​[[:​Calculate Map]]// to produce a Boolean map according to the maximum time of traveling, as follows:+After connecting the output of the last //​[[:​Calculate Map]]// to  the //[[:Calc Cost Map]]// functor (to its **Source** port), ​pass the output of the //[[:Calc Cost Map]]// to another //​[[:​Calculate Map]]// to produce a Boolean map according to the maximum time of traveling, as follows:
  
 **if i1 < 30 then 1 else null** **if i1 < 30 then 1 else null**
  
-Finally save the output map as ''​near_town_region.tif''​. Note that you have added to the model three additional //​[[:​Calculate Map]]// functors, three //[[:Number Map]]// functors, one //[[:Calc Cost Map]]// and another //[[:Save Map]]//. The model should look like the following figure, in which the functors added in this step appear in the upper part. +Finally save the output map as ''​near_town_region.tif''​. Note that you have added to the model three additional //​[[:​Calculate Map]]// functors, three //[[:Number Map]]// functors, one //[[:Calc Cost Map]]// and another //[[:Save Map]]//. The model should look like the following figure.
 {{ :​tutorial:​mce12.jpg |}} {{ :​tutorial:​mce12.jpg |}}
  
-Check model, integrity, save it as ''​my_MCE_part1&​2&​3.egoml'',​ and run it. Examine map ''​near_town_region.tif''​. Is this what you got?+Save the model as ''​my_MCE_part1&​2&​3.egoml'',​ and run it. Examine map ''​near_town_region.tif''​. Is this what you got?
  
 {{ :​tutorial:​mce13.jpg |}} {{ :​tutorial:​mce13.jpg |}}
Line 194: Line 193:
 Firstly, you can delete the //[[:Save Map]]// functors, since you have already checked their results. Second, you can add comments to some functors highlighting their outcomes. Let’s do it! Firstly, you can delete the //[[:Save Map]]// functors, since you have already checked their results. Second, you can add comments to some functors highlighting their outcomes. Let’s do it!
  
-Grab the Add Comment to Functor tool from the sketch toolbar. Describe the outcome in each functor preceding the //[[:Save Map]]// functors, so you can trace each data flow back to its initial node (that is Map ''​landuse.tif''​).  In order to be able to see the comment you need to close the container //​[[:​Calculate Map]]// first. Do it by clicking on its top left icon. +Grab the Add Comment to Functor tool from the sketch toolbar. Describe the outcome in each functor preceding the //[[:Save Map]]// functors, so you can trace each data flow back to its initial node (that is Map ''​landuse.tif''​). Do it by clicking on its top left icon. 
  
 Write in respective functors: Near town regions, Malaria free zone, Away from towns, Unconstrained land uses, Not too far from main roads. Write in respective functors: Near town regions, Malaria free zone, Away from towns, Unconstrained land uses, Not too far from main roads.
Line 242: Line 241:
 ==== Fifth step: identifying suitable areas ==== ==== Fifth step: identifying suitable areas ====
  
-In this step, you will identify the suitable areas equal to or greater than 1000 hectares. First, delete //[[:Load Map]]// ''​five_criteria_combined.tif''​. Remember that the less the software accesses the disk, the faster the model runs. Now, drag from Map Algebra tab the functor [[:Calc Patch Label Map]]. This functor labels patches of cells using sequential numbers. A patch consists of a continuous group of neighboring cells of the same category (see also lesson 10: Landscape metrics in Dinamica EGO). You need this in order to solve the area criterion. Connect the output from "​Combine Five Criteria"​ to it. Some of its parameters are:+In this step, you will identify the suitable areas equal to or greater than 1000 hectares. First, delete //[[:Save Map]]// ''​five_criteria_combined.tif''​. Remember that the less the software accesses the disk, the faster the model runs. Now, drag from Map Algebra tab the functor [[:Calc Patch Label Map]]. This functor labels patches of cells using sequential numbers. A patch consists of a continuous group of neighboring cells of the same category (see also [[landscape_metrics_in_dinamica_ego|Landscape metrics in Dinamica EGO]]). You need this in order to solve the area criterion. Connect the output from "​Combine Five Criteria"​ to it. Some of its parameters are:
  
 **Initial Patch Label**: Set it to "​1"​. ​ **Initial Patch Label**: Set it to "​1"​. ​
Line 248: Line 247:
 <note important>​Important:​ Set **Null Value** to "​0"​ and **Cell Type** to **Signed 32 Bit Integ**er.</​note> ​ <note important>​Important:​ Set **Null Value** to "​0"​ and **Cell Type** to **Signed 32 Bit Integ**er.</​note> ​
  
-This will be sufficient to store all patch label number identifiers. Leave the other parameters untouched. Go to help for further details. Now connect its output to [[:Calc Areas]], available in the Map Algebra tab. As output this functor provides one table with three columns. See [[:Calc Areas#​notes]] for additional information about the [[:Calc Areas]] result. We need area in hectares, <​del>​so use the port **Areas in Hectares** for subsequent connection</​del>​.+This will be sufficient to store all patch label number identifiers. Leave the other parameters untouched. Go to help for further details. Now connect its output to [[:Calc Areas]], available in the Map Algebra tab. As output this functor provides one table with three columns. See [[:Calc Areas#​notes]] for additional information about the [[:Calc Areas]] result.
  
-{{ :tutorial:mce20.jpg |}}+Now, place on the sketch one //[[:Calculate Map]]// and one //[[:Number Map]]// and one //[[:Number Table]]// within itConnect //[[:Calc Areas]]// to Table 1 (this implies that output of //[[:Calc Areas]]// is a lookup table), and **Map** output from //[[:Calc Patch Label Map]]// to Map #1. Now open //​[[:​Calculate Map]]// and write:
  
-Now, place on the sketch one //​[[:​Calculate Map]]// and one //[[:Number Map]]// and one //[[:Number Table]]// within it. Connect //[[:Calc Areas]]// to Table 1 (this implies that output of //[[:Calc Areas]]// is a lookup table), and **Map** output from //[[:Calc Patch Label Map]]// to Map #1. Now open //[[:Calculate Map]]// and write:  +**''​if (t1[ [i1]["​Area_In_Hectares"​] ] < 1000) then null else 1''​**
- +
-**if (t1[i1] < 1000) then null else 1**+
  
 Using this formula, the functor will analyze the size of each patch and then eliminate the patches smaller than 1000 hectares. Now place one //[[:Save Map]]// and enter ''​big_areas.tif''​. Using this formula, the functor will analyze the size of each patch and then eliminate the patches smaller than 1000 hectares. Now place one //[[:Save Map]]// and enter ''​big_areas.tif''​.
Line 270: Line 267:
 {{ :​tutorial:​mce23.jpg |}} {{ :​tutorial:​mce23.jpg |}}
  
-<note important>​You need //​[[:​Calculate Categorical Map]]// instead of //​[[:​Calculate Map]]//, because patch labels will be used ahead to regionalize the slope map, set Null Value to "​0"​and Cell Type to Signed 32 Bit Integer.</​note>​+<note important>​You need //​[[:​Calculate Categorical Map]]// instead of //​[[:​Calculate Map]]//, because patch labels will be used ahead to regionalize the slope map, set **Null Value** to "​0"​ and **Cell Type** to "Signed 32 Bit Integer".</​note>​
  
 Write: **i1*i2**, close the functor and insert the comment "Keep labels only for big patches"​. Now you are ready to move on to the last step. Write: **i1*i2**, close the functor and insert the comment "Keep labels only for big patches"​. Now you are ready to move on to the last step.
Line 278: Line 275:
 The final criterion establishes that the average slope on the selected patches must be less than 0.5 degrees. Place //Load Map// and load it with ''​\lesson4\originals\slope.tif''​. Now revise Lesson3, as you will to need to reapply the concept of region. The final criterion establishes that the average slope on the selected patches must be less than 0.5 degrees. Place //Load Map// and load it with ''​\lesson4\originals\slope.tif''​. Now revise Lesson3, as you will to need to reapply the concept of region.
  
-Drag //[[:Region Manager]]//, ​//[[:For Each Category]]//, //​[[:​Regionalize Map]]//, and //​[[:​Step]]// ​and insert the two latter functors within the previous ​and //[[:For Each Category]]//​ within the //[[:Region Manager]]// ​and connect them as follows.+Drag //[[:For Each Region]]//, //​[[:​Regionalize Map]]//, and //​[[:​Step]]//​insert the two latter functors within the previous and connect them as follows.
  
 {{ :​tutorial:​mce24.jpg |}} {{ :​tutorial:​mce24.jpg |}}
  
-The map to be regionalized is the ''​slope.tif''​. ​ The map output from the last //​[[:​Calculate Categorical Map]]// will control ​both //[[:Region Manager]]// and //[[:For Each Category]]//. Remember that this functor enables the model to iterate according to the map categories passed to it. Now place one //[[:Mux Lookup Table]]//, one //​[[:​Extract Map Attributes]]//,​ one //​[[:​Calculate Value]]//, one //[[:Number Table]]// and one //[[:Set Lookup Table]]//, all within //[[:For Each Category]]// and connect them as follows.+The map to be regionalized is the ''​slope.tif''​. ​ The map output from the last //​[[:​Calculate Categorical Map]]// will control //[[:For Each Region]]//. Remember that this functor enables the model to iterate according to the map categories passed to it. Now place one //[[:Mux Lookup Table]]//, one //​[[:​Extract Map Attributes]]//,​ one //​[[:​Calculate Value]]//, one //[[:Number Table]]// and one //[[:Set Lookup Table Value]]//, all within //[[:For Each Region]]// and connect them as follows.
  
 {{ :​tutorial:​mce25.jpg |}} {{ :​tutorial:​mce25.jpg |}}
Line 290: Line 287:
 {{ :​tutorial:​mce26.jpg |}} {{ :​tutorial:​mce26.jpg |}}
  
-Remember to link //​[[:​Step]]//​ to **Key** on the //[[:Set Lookup Table]]//+Remember to link //​[[:​Step]]//​ to **Key** on the //[[:Set Lookup Table Value]]//
  
 {{ :​tutorial:​mce27.jpg |}} {{ :​tutorial:​mce27.jpg |}}
Line 302: Line 299:
 {{ :​tutorial:​mce29.jpg |}} {{ :​tutorial:​mce29.jpg |}}
  
-Finally place //​[[:​Calculate Categorical Map]]// after the //​[[:​Region ​Manager]]// and place //[[:Number Map]]// and //[[:Number Table]]// within it. Number them and write the following equation: **if t1[i1] > 0.5** then null else i1+Finally place //​[[:​Calculate Categorical Map]]// after the //[[:For Each Region]]// and place //[[:Number Map]]// and //[[:Number Table]]// within it. Number them and write the following equation: **if t1[i1] > 0.5** then null else i1 
 + 
 +Save the result as ''​suitable_for_a_new_town.tif''​ on the lesson5 folder. 
  
-Save the result as ''​suitable_for_a_new_town.tif''​. 
  
 {{ :​tutorial:​mce30.jpg |}} {{ :​tutorial:​mce30.jpg |}}
Line 312: Line 311:
 {{ :​tutorial:​mce31.jpg |}} {{ :​tutorial:​mce31.jpg |}}
  
-Finally you just need to organize the model in a more legible layout. Place one //​[[:​Group]]//​ and drag //[[:Calc Patch Label Map]]//, //[[:Calc Areas]]//, //​[[:​Calculate Map]]// "​Identify big areas", and //​[[:​Calculate Map]]// "Keep labels only for big patches"​ into it.+Finally you just need to organize the model in a more legible layout. Place one //​[[:​Group]]//​ and drag //[[:Calc Patch Label Map]]//, //[[:Calc Areas]]//, //​[[:​Calculate Map]]// "​Identify big patches", and //​[[:​Calculate ​Categorical ​Map]]// "Keep labels only for big patches"​ into it.
  
 {{ :​tutorial:​mce32.jpg |}} {{ :​tutorial:​mce32.jpg |}}