# 75. Mutation: Generate "EquationMap" asynchronously

## Overview

Generate "EquationMap" for the "Field" asynchronously.

{% hint style="info" %}
The asynchronous approach puts a task (Generate "`generateEquationMap`") to process and the Subscription will be received as soon as the processing is finished.
{% endhint %}

## Supported Data Layers

EquationMaps can be executed on any data layer available in GeoPard, including Satellite Imagery, Soil Datasets, Yield Datasets, As-Applied Datasets, Topography, Zones Maps, and even other EquationMaps. The format of `dataVariables` input will vary depending on the selected data layer.

```graphql
dataVariables: [
  # YieldDataset
  {
    variable: "yield_variable"
    yieldDatasetUuid: "<placeholder_of_yielddataset_uuid>"
    yieldAttribute: "<placeholder_of_yielddataset_attribute>"
  }, 
  
  # SoilDataset
  {
    variable: "soil_variable"
    soilDatasetUuid: "<placeholder_of_soildataset_uuid>"
    soilAttribute: "<placeholder_of_soildataset_attribute>"
  },
  
  # AsAppliedDataset
  {
    variable: "asapplied_variable"
    asAppliedDatasetUuid: "<placeholder_of_asapplieddataset_uuid>"
    asAppliedAttribute: "<placeholder_of_asapplieddataset_attribute>"
  },
  
  # SatelliteImage
  {
    variable: "satelliteimage_variable"
    satelliteImageUuids: ["<placeholder_of_satelliteimage_uuid>"]
    index: "<placeholder_of_satelliteimage_vegetation_index>"
  },
  
  # TopographyMap
  {
    variable: "topography_variable"
    topographyMapUuid: "<placeholder_of_topographymap_uuid>"
    topographyAttribute: "<placeholder_of_topography_attribute>"
  },
  
  # EquationMap
  {
    variable: "equationmap_variable"
    equationMapUuid: "<placeholder_of_equationmap_uuid>"
  },
  
  # ZonesMap (VectorAnalysisMap)
  {
    variable: "zonesmap_variable"
    vectorAnalysisMapUuid: "<placeholder_of_zonesmap_uuid>"
  }
]
```

## Sample

<pre class="language-graphql" data-overflow="wrap" data-line-numbers><code class="lang-graphql">mutation GenerateEquationMap {
  generateEquationMapAsync(input: {
    fieldUuid: "&#x3C;placeholder_of_field_uuid>"
    gridPixelSizeX: <a data-footnote-ref href="#user-content-fn-1">30</a>
    gridPixelSizeY: <a data-footnote-ref href="#user-content-fn-1">30</a>
    type: FERTILIZING
    equationAsText:"""calculated = yield_vol/prod + 0.5
if calculated >= 9:
    result = 35
elif calculated >=5  and calculated &#x3C; 9:
    result = 25
else:
    result = 15
    """
    equationResultVariable: "result"
    dataVariables: [{
      variable: "yield_vol"
      yieldDatasetUuid: "&#x3C;placeholder_of_yielddataset_uuid>"
      yieldAttribute: "Yld_Vol_We"
    }, {
      variable: "prod"
      yieldDatasetUuid: "&#x3C;placeholder_of_yielddataset_uuid>"
      yieldAttribute: "Prod_ac_h_"
    }]
  }) {
    uuid
    fieldUuid
    statusCode
  }
}
</code></pre>

[^1]: put any pixel size in meters here
