# 87. Mutation: Save Custom VectorAnalysisMap (ZonesMap)

Below are details on how to save a Custom ZonesMap with a custom color schema.

### 1. Save ZonesMap geometries

{% hint style="danger" %}
VectorAnalysisMap (ZonesMap) `zonesMapGeojson` attribute must be in the WGS84 (EPSG:4326) projection and follow the GeoJson [specification](https://geojson.org/).

The expected `geojson` type is `FeatureCollection` with `MultiPolygon`.
{% endhint %}

Mutation `saveVectorAnalysisMap` overview:

* The attribute `fieldUuid` is a linkage to the existing Field.
* The attribute `name` describes the name of the ZonesMap.
* The attribute type is an enum value representing the operation type. It can be any value from `GENERAL` , `SPRAYING`, `SEEDING`, `FERTILIZING` or `IRRIGATION`. It is optional.
* The key attribute with all details including rates for VRA is `zonesMapGeojson` as an escaped JSON string.&#x20;
  * Zone number is mentioned in `properties` >> `zone`.
  * Rates are going to be incorporated into `properties`  >> `attributes`.&#x20;

<mark style="background-color:yellow;">The</mark> <mark style="background-color:yellow;"></mark><mark style="background-color:yellow;">`properties`</mark> <mark style="background-color:yellow;"></mark><mark style="background-color:yellow;">attribute is a JSON object that is extended with</mark>  `zone`<mark style="background-color:yellow;">,</mark> <mark style="background-color:yellow;"></mark><mark style="background-color:yellow;">`rates`</mark><mark style="background-color:yellow;">,</mark> <mark style="background-color:yellow;"></mark><mark style="background-color:yellow;">`ratesHeaders`</mark><mark style="background-color:yellow;">,</mark>  <mark style="background-color:yellow;"></mark><mark style="background-color:yellow;">`ratesPrices`</mark> <mark style="background-color:yellow;"></mark><mark style="background-color:yellow;">and</mark> <mark style="background-color:yellow;"></mark><mark style="background-color:yellow;">`ratesUnits`</mark> <mark style="background-color:yellow;"></mark><mark style="background-color:yellow;">details.</mark>  \
An explanation of how to assign rates is [HERE](https://docs.geopard.tech/geopard-tutorials/api-docs/requests-overview/85.-mutation-assign-rates-to-vectoranalysismap-zonesmap).

{% code overflow="wrap" lineNumbers="true" %}

```json
 {
    \"zone\":1,
    \"attributes\":{
        \"rates\":[100],
        \"ratesHeaders\":[\"Product1\"],
        \"ratesPrices\":[0],
        \"ratesUnits\":[\"KG_HA\"]
    }
}
```

{% endcode %}

Sample mutation without defined rates:

{% code overflow="wrap" lineNumbers="true" %}

```graphql
mutation saveVectorAnalysisMap {  
  saveVectorAnalysisMap(
    input: {
      fieldUuid:"abef3a63-a64b-4d84-aab0-43eaa8fbe0cd" 
      name:"Custom Zones" 
      zonesMapGeojson:"{\"type\":\"FeatureCollection\",\"features\":[{\"type\":\"Feature\",\"properties\":{\"zone\":1,\"attributes\":{}},\"geometry\":{\"type\":\"MultiPolygon\",\"coordinates\":[[[[10.426584494429108,52.872847225483895],[10.426789204309529,52.87282914352929],[10.42676923261385,52.87256092698456],[10.42679456306152,52.87240585041315],[10.427391783218683,52.87195386627311],[10.427338425939524,52.872087776901424],[10.427073800972806,52.87238914697767],[10.426899048635903,52.872624214183844],[10.42701887880915,52.872889416681545],[10.427403333950082,52.87288037571423],[10.427498199505067,52.872940648795804],[10.427403333950082,52.8731003720562],[10.42777780324397,52.873242012946434],[10.428022456514952,52.87323297205208],[10.428167251308338,52.8731244811766],[10.42807737867767,52.87286832108788],[10.42809735037332,52.87259407743369],[10.428501777209902,52.872404215426826],[10.428611621536277,52.87250969442229],[10.42882132434022,52.87257900905101],[10.429100928079123,52.87232585943539],[10.429155850242694,52.87216914702836],[10.429205779481066,52.87184065187668],[10.429263945397143,52.87180554285836],[10.42928833,52.87242022],[10.42922193,52.8725049],[10.42915175626986,52.87255993568499],[10.429021041297204,52.872554899627374],[10.428771395100966,52.872708596972984],[10.42838693996012,52.872847225483895],[10.428257123938948,52.87296777165494],[10.428370342208543,52.873172781233286],[10.42795711,52.87349687],[10.42718139841625,52.87321758481732],[10.427228581614003,52.87319078118864],[10.427208609918353,52.87305516741958],[10.42683913354881,52.873015990029785],[10.426664381211879,52.87293763514347],[10.426584494429108,52.872847225483895]]],[[[10.427804124872603,52.871641800637654],[10.42875584,52.87092153],[10.42897875,52.87105982],[10.42921404,52.87137376],[10.429231472601687,52.87152239994234],[10.428951140362273,52.871638731603355],[10.42879635972102,52.87193709107814],[10.428666543698995,52.872057639778546],[10.428371961188788,52.872057639778546],[10.42821218762407,52.87183161069021],[10.427967534352206,52.871708047624395],[10.427804124872603,52.871641800637654]]]]}},{\"type\":\"Feature\",\"properties\":{\"zone\":2,\"attributes\":{}},\"geometry\":{\"type\":\"MultiPolygon\",\"coordinates\":[[[[10.426899048635903,52.872624214183844],[10.427073800972806,52.87238914697767],[10.427338425939524,52.872087776901424],[10.427391783218683,52.87195386627311],[10.427804124872603,52.871641800637654],[10.427967534352206,52.871708047624395],[10.42821218762407,52.87183161069021],[10.428371961188788,52.872057639778546],[10.428666543698995,52.872057639778546],[10.42879635972102,52.87193709107814],[10.428951140362273,52.871638731603355],[10.429231472601687,52.87152239994234],[10.42926357,52.87179608],[10.429263945397143,52.87180554285836],[10.429205779481066,52.87184065187668],[10.429155850242694,52.87216914702836],[10.429100928079123,52.87232585943539],[10.42882132434022,52.87257900905101],[10.428611621536277,52.87250969442229],[10.428501777209902,52.872404215426826],[10.42809735037332,52.87259407743369],[10.42807737867767,52.87286832108788],[10.428167251308338,52.8731244811766],[10.428022456514952,52.87323297205208],[10.42777780324397,52.873242012946434],[10.427403333950082,52.8731003720562],[10.427498199505067,52.872940648795804],[10.427403333950082,52.87288037571423],[10.42701887880915,52.872889416681545],[10.426899048635903,52.872624214183844]]]]}},{\"type\":\"Feature\",\"properties\":{\"zone\":3,\"attributes\":{}},\"geometry\":{\"type\":\"MultiPolygon\",\"coordinates\":[[[[10.428257123938948,52.87296777165494],[10.42838693996012,52.872847225483895],[10.428771395100966,52.872708596972984],[10.429021041297204,52.872554899627374],[10.42915175626986,52.87255993568499],[10.428370342208543,52.873172781233286],[10.428257123938948,52.87296777165494]]],[[[10.42619246,52.87286153],[10.42679456306152,52.872405850413145],[10.42676923261385,52.87256092698456],[10.426789204309529,52.87282914352929],[10.426584494429108,52.872847225483895],[10.426664381211879,52.87293763514347],[10.42683913354881,52.873015990029785],[10.427208609918353,52.87305516741958],[10.427228581614003,52.87319078118864],[10.42718139841625,52.87321758481732],[10.42619246,52.87286153]]]]}}]}"
    }
  ) {
    uuid
  }
}
```

{% endcode %}

Default representation without assigned color schema looks like. The user ZonesMap >> `geoMaps` >> `url` is similar to [https://api.geopard.tech/geo/map/reflect?TRANSPARENT=true\&VIEWPARAMS=uuid:4a3929a5-c166-41d7-b547-da1511a9fa1d\&LAYERS=custom\_zone\_map\_view\&SRS=EPSG:3857\&STYLES=default\_zonesmap\&HEIGHT=64\&BBOX=1160638.4354309493,6959157.496681602,1160983.0667152018,6959632.459385279\&geopardApiKey=\<your\_geopard\_api\_key>](https://api.geopard.tech/geo/map/reflect?TRANSPARENT=true\&VIEWPARAMS=uuid:4a3929a5-c166-41d7-b547-da1511a9fa1d\&LAYERS=custom_zone_map_view\&SRS=EPSG:3857\&STYLES=default_zonesmap\&HEIGHT=64\&BBOX=1160638.4354309493,6959157.496681602,1160983.0667152018,6959632.459385279\&geopardApiKey=%3Cyour_geopard_api_key%3E).

<figure><img src="https://3272281156-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYICBELdyAXXebKAzfLOR%2Fuploads%2Fh7EyJMKNRfwooOT2kPEu%2Fimage.png?alt=media&#x26;token=4c490f03-4e3b-437c-b129-2168ee5a5c5d" alt=""><figcaption></figcaption></figure>

### 2. Assign custom color schema

Mutation `setGeoMaps` overview:

* The attribute `fieldUuid` is a linkage to the existing Field.
* The attribute `vectorAnalysisMapUuid` is a linkage to the just saved ZonesMap (VectorAnalysisMap) from the first step.
* The attribute `shortName` describes the style to amend. \
  Options for ZonesMap are `zones` and `thumbnail`.
* The attribute `hexColorCodes` describes the hex color codes to set.

{% hint style="danger" %}
The number of colors in `hexColorCodes` must represent the exact number of existing zones`.`
{% endhint %}

An explanation of how to save custom colors is [HERE](https://docs.geopard.tech/geopard-tutorials/api-docs/requests-overview/39.-mutation-set-custom-color-schemas-to-selected-geomaps) and how to apply custom colors on the fly is [HERE](https://docs.geopard.tech/geopard-tutorials/api-docs/geo-endpoints/wms-get-raster-pictures-of-spatial-data-layers/6.-zonesmap-custom-color-schema).

Sample mutation:

{% code overflow="wrap" lineNumbers="true" %}

```graphql
mutation setGeoMaps{
  setGeoMaps(
    input: {
      geoMaps:[
        {
          shortName:"zones" 
          fieldUuid:"abef3a63-a64b-4d84-aab0-43eaa8fbe0cd" 
          vectorAnalysisMapUuid:"9799e2eb-06d2-4a42-8f47-38655abf11e1"
          hexColorCodes:[
            "#ffffbf",
            "#66bd63",
            "#f46d43"
          ]
        }, {
          shortName:"thumbnail" 
          fieldUuid:"abef3a63-a64b-4d84-aab0-43eaa8fbe0cd" 
          vectorAnalysisMapUuid:"9799e2eb-06d2-4a42-8f47-38655abf11e1" 
          hexColorCodes:[
            "#ffffbf",
            "#66bd63",
            "#f46d43"
          ]
        }
      ]
    }
  ) {
    shortName
  }
}
```

{% endcode %}

As a result, the visual representation from the ZonesMap >> `geoMaps` >> `url` similar to [https://api.geopard.tech/geo/map/reflect?TRANSPARENT=true\&VIEWPARAMS=uuid:9799e2eb-06d2-4a42-8f47-38655abf11e1\&LAYERS=custom\_zone\_map\_view\&SRS=EPSG:3857\&STYLES=default\_zonesmap\&HEIGHT=64\&BBOX=1160638.4354309493,6959157.496681602,1160983.0667152018,6959632.459385279\&env=c1:#ffffbf;c2:#66bd63;c3:#f46d43\&geopardApiKey=\<your\_geopard\_api\_key>](https://api.geopard.tech/geo/map/reflect?TRANSPARENT=true\&VIEWPARAMS=uuid:9799e2eb-06d2-4a42-8f47-38655abf11e1\&LAYERS=custom_zone_map_view\&SRS=EPSG:3857\&STYLES=default_zonesmap\&HEIGHT=64\&BBOX=1160638.4354309493,6959157.496681602,1160983.0667152018,6959632.459385279\&env=c1:#ffffbf;c2:#66bd63;c3:#f46d43\&geopardApiKey=%3Cyour_geopard_api_key%3E) looks like.

<figure><img src="https://3272281156-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYICBELdyAXXebKAzfLOR%2Fuploads%2FeG8IE9nHxZHDQv1uv5Hv%2Fimage.png?alt=media&#x26;token=71493e47-ef3a-4e7a-991d-15d630b9de67" alt=""><figcaption></figcaption></figure>
