Introduction¶
Economical Suitability Analysis Module is the most recent addition to AEZ framework (Figure 12). This module converts AEZ's final crop suitability (a result of the previous 5 modules) into an economic suitability. Additionally, all crops of interest are compared to the umbrella crop (crop with the highest economical potential) in order to indicate and map out its comparative advantage in terms of an attainable net revenue relative to the best available option. For more detailed calculations, refer to Module 6 chapter in National Agro-Economic Zoning for Major Crops in Thailand (NAEZ) report (FAO, 2017a).
Figure: Overview of Module VI: Economic Suitability

Mandatory Functions¶
Initialization of M6 Object Class Creation¶
Firstly, we have to import M6 object class named EconomicSuitability to initiate the mandatory process.
| Initializing M6 Object | |
|---|---|
Input
| Arguments | Description | Unit | Data Format |
|---|---|---|---|
| None | - | - | - |
Output
| Arguments | Description | Unit | Data Format |
|---|---|---|---|
| None | - | - | - |
Crop Economic Data Input¶
This function allows usres to set up crop-specific parameters for an economic analysis/ The key inputs for Module 5 are the crop yield information which passed through from Module 2 to Module 5 in PyAEZ, market price and the cost of the crop.
This mandatory function can be called multiple times if users want to import multiple crop-specific information. However, at least one crop data should be provided. If users want to analyze comparative economic analysis at least two crop data should be provided.
| Import Crop Eco data | |
|---|---|
Input
| Arguments | Description | Unit | Data Format |
|---|---|---|---|
| crop_name | Unique ID of a crop. This name will be used later in other function arguments. | - | String |
| crop_cost | Cost of production for each yield value in crop_yield variable. |
Currency-based | 1D-NumPy Array |
| crop_yield | Yield of the crop. | tonnes per hectare. | 1D-NumPy Array |
| farm_price | Historical crop price that farmers sell | currency unit per tonne | 1D-NumPy Array |
| yield_map | Yield map of the crop | tonne per hectare | 2D-NumPy Array |
Output
| Arguments | Description | Unit | Data Format |
|---|---|---|---|
| None | - | - | - |
Additional Information
-
Value of
crop_costandcrop_yieldmust be corresponding to each other for all elements, i.e., the length ofcrop_costandcrop_yieldmust be the same. -
Both arrays of
crop-costandcrop_yieldmust be arranged in ascending order from left to right. -
Unit of
crop_costmust be currency per hectare. -
In M6, the currency can be flexible. However, users are warned that for all variables which applies currency must have the same currency names. In case the crop economic data have different currencies, they must be converted into a single currency.
-
In
farm_price, the array is used to calculate distribution (mean) of prices. Unit is currency unit per tonne.
Major Functionalities¶
Net Revenue¶
This function returns net revenue from the crop identified with crop_name.
| Get net revenue | |
|---|---|
Input
| Arguments | Description | Unit | Data Format |
|---|---|---|---|
| crop_name | Unique crop ID from earlier setting. | - | String |
Output
| Arguments | Description | Unit | Data Format |
|---|---|---|---|
| crop_revenue | Net revenue of input crop | currency per hectare | 2D-NumPy Array |
Classified Net Revenue¶
This function returns classified net revenue for the crop crop_name. This classified scheme for crop net revenue is provided in the table below.
This classification is based on identification of minimum and maximum value of net revenue in a given area of interest. The net revenue percentage is delineated between zero percent (minimum net revenue) and 100 (maximum net revenue), and seven classes are divided based on percentage ranges.
| Get classified net revenue | |
|---|---|
Input
| Arguments | Description | Unit | Data Format |
|---|---|---|---|
| crop_name | Unique crop ID from earlier setting. | - | String |
Output
| Arguments | Description | Unit | Data Format |
|---|---|---|---|
| crop_rev_class | Classified net revenue of input crop | - | 2D-NumPy Array |
Table: Net Revenue Classification
| Pixel Value | Net Revenue Class | Description |
|---|---|---|
| 0 | Not suitable | Net revenue less than 0% |
| 1 | Very marginal | Net revenue between 0% and 10% |
| 2 | Marginal | Net revenue between 10% and 20% |
| 3 | Moderate | Net revenue between 20% and 35% |
| 4 | Medium | Net revenue between 35% and 50% |
| 5 | Good | Net revenue between 50% and 63% |
| 6 | High | Net revenue between 63% and 75% |
| 7 | Very high | Net revenue greater than 75% |
Normalized Net Revenue¶
This function returns the normalized net revenue for the crop crop_name, which requires at least two crops to be provided in the crop economic data input. This classification checks the net revenues for all crops and select the maximum net revenue value of the crop (known as umbrella crop) and is compared with user-specified crop net revenue to generate normalized net revenue. After normalization, the normalized values are classified to six major classes, providing the comparative performance information of the economic crops.
| Get normalized net revenue | |
|---|---|
Input
| Arguments | Description | Unit | Data Format |
|---|---|---|---|
| crop_name | Unique crop ID from earlier setting. | - | String |
Output
| Arguments | Description | Unit | Data Format |
|---|---|---|---|
| crop_rev_norm | Classified net revenue of input crop | - | 2D-NumPy Array |
Table: Normalized Net Revenue Classification
| Pixel Value | Normalized Net Revenue Class | Description |
|---|---|---|
| 0 | Normalized value less than 0 | Not Suitable |
| 1 | Normalized value between 0 and 0.2 | Marginal |
| 2 | Normalized value between 0.2 and 0.4 | Moderate |
| 3 | Normalized value between 0.4 and 0.6 | Fair |
| 4 | Normalized value between 0.6 and 0.8 | Good |
| 5 | Normalized value greater than 0.8 | Very Good |
__