can now specify geojson bounds for upload.
changed how to get agents for haulmkilling.
This commit is contained in:
		| @@ -132,11 +132,11 @@ namespace FarmmapsHaulmkilling | ||||
|             } | ||||
|              | ||||
|             var selectedAgent = agents[0]; | ||||
|             var selectedOption = selectedAgent.SupportedOptions[0]; | ||||
|             var selectedOption = selectedAgent.ValidOptions[0]; | ||||
|              | ||||
|             _logger.LogInformation("Calculating application map"); | ||||
|             var applianceMapItem = await _haulmkillingService.CalculateApplicationMapAsync(cropfieldItem,  | ||||
|                 firstSatelliteItem, inputType, selectedAgent.Name, selectedOption); | ||||
|                 firstSatelliteItem, inputType, selectedOption, selectedAgent); | ||||
|             if (applianceMapItem == null) | ||||
|             { | ||||
|                 return; | ||||
|   | ||||
| @@ -6,6 +6,7 @@ using FarmmapsApi.Models; | ||||
| using FarmmapsApi.Services; | ||||
| using FarmmapsHaulmkilling.Models; | ||||
| using Microsoft.Extensions.Logging; | ||||
| using Newtonsoft.Json; | ||||
| using static FarmmapsApi.Extensions; | ||||
| using static FarmmapsApiSamples.Constants; | ||||
|  | ||||
| @@ -31,14 +32,11 @@ namespace FarmmapsHaulmkilling | ||||
|         /// <returns>List of haulmkilling agents</returns> | ||||
|         public async Task<List<HaulmkillingAgent>> GetHaulmkillingAgents() | ||||
|         { | ||||
|             var itemType = "vnd.farmmaps.package.vra.haulmkilling"; | ||||
|             var vraHerbicideDataItems = await _farmmapsApiService.GetItemsAsync(string.Empty, itemType); | ||||
|             var itemType = "vnd.farmmaps.itemtype.codelist.fm005"; | ||||
|             var haulmkillingAgentItems = await _farmmapsApiService.GetItemsAsync(string.Empty, itemType); | ||||
|  | ||||
|             var item = vraHerbicideDataItems.FirstOrDefault(); | ||||
|             if (item == null) | ||||
|                 return null; | ||||
|  | ||||
|             return item.Data.ContainsKey("agents") ? item.Data["agents"].ToObject<List<HaulmkillingAgent>>() : null; | ||||
|             return haulmkillingAgentItems.Select(item => item.Data.ToObject<HaulmkillingAgent>()) | ||||
|                 .ToList(); | ||||
|         } | ||||
|          | ||||
|         /// <summary> | ||||
| @@ -47,11 +45,11 @@ namespace FarmmapsHaulmkilling | ||||
|         /// <param name="cropfieldItem">The context cropfield item to use</param> | ||||
|         /// <param name="inputItem">The geotiff item to use</param> | ||||
|         /// <param name="inputType">WDVI or NDVI</param> | ||||
|         /// <param name="agentName">One of the available agents</param> | ||||
|         /// <param name="agentCode">code of one of the available agents</param> | ||||
|         /// <param name="selectedOption">One of the available options</param> | ||||
|         /// <returns>Haulmkilling application map item</returns> | ||||
|         public async Task<Item> CalculateApplicationMapAsync(Item cropfieldItem, Item inputItem, string inputType, | ||||
|             string agentName, string selectedOption) | ||||
|             string selectedOption, HaulmkillingAgent agent) | ||||
|         { | ||||
|             var taskRequest = new TaskRequest() | ||||
|             { | ||||
| @@ -59,7 +57,7 @@ namespace FarmmapsHaulmkilling | ||||
|             }; | ||||
|             taskRequest.attributes["inputCode"] = inputItem.Code; | ||||
|             taskRequest.attributes["inputType"] = inputType; | ||||
|             taskRequest.attributes["agentName"] = agentName; | ||||
|             taskRequest.attributes["agentCode"] = agent.Code; | ||||
|             taskRequest.attributes["selectedOption"] = selectedOption; | ||||
|             taskRequest.attributes["minPercentile"] = "0.0"; | ||||
|  | ||||
| @@ -79,7 +77,7 @@ namespace FarmmapsHaulmkilling | ||||
|                 return null; | ||||
|             } | ||||
|  | ||||
|             var itemName = $"VRAHaulmkilling {agentName}"; | ||||
|             var itemName = $"VRAHaulmkilling {agent.Label}"; | ||||
|             var applianceMapItem = await _generalService.FindChildItemAsync(cropfieldItem.Code, | ||||
|                 GEOTIFF_PROCESSED_ITEMTYPE, itemName,  | ||||
|                 i => i.Updated >= itemTask.Finished && | ||||
|   | ||||
| @@ -5,26 +5,11 @@ namespace FarmmapsHaulmkilling.Models | ||||
| { | ||||
|     public class HaulmkillingAgent | ||||
|     { | ||||
|         public string Name { get; set; } | ||||
|         public List<string> SupportedOptions { get; set; } | ||||
|         public Dictionary<string, List<HaulmkillingAgentValue>> Values { get; set; } | ||||
|         public string Cl { get; set; } | ||||
|         public string Code { get; set; } | ||||
|         public string Label { get; set; } | ||||
|         public string Options { get; set; } | ||||
|  | ||||
|         public HaulmkillingAgentValue? GetAgentValue(string inputName, string optionKey) | ||||
|         { | ||||
|             if (!Values.ContainsKey(inputName)) | ||||
|                 return null; | ||||
|  | ||||
|             var agentDataValues = Values[inputName]; | ||||
|             return agentDataValues.FirstOrDefault(v => v.Option.Equals(optionKey)); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public struct HaulmkillingAgentValue | ||||
|     { | ||||
|         public string Option { get; set; } | ||||
|         public float Min { get; set; } | ||||
|         public float Max { get; set; } | ||||
|         public float FMul { get; set; } | ||||
|         public float FExp { get; set; } | ||||
|         public List<string> ValidOptions => Options.Split(',').ToList(); | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user