Eerdere aanpassingen NBS en zonering verwerkt
This commit is contained in:
		| @@ -147,6 +147,8 @@ namespace FarmmapsApi.Services | ||||
|             { | ||||
|                 _logger.LogInformation($"Trying to get {containsName} data"); | ||||
|                 var uploadedFilesChildren = await _farmmapsApiService.GetItemChildrenAsync(parentCode, itemType); | ||||
|  | ||||
|  | ||||
|                 Func<Item, bool> func = filter ?? (i => i.Name.ToLower().Contains(containsName.ToLower())); | ||||
|                 dataItem = uploadedFilesChildren.FirstOrDefault(func); | ||||
|                 if (dataItem != null || tries == maxTries) | ||||
| @@ -268,5 +270,88 @@ namespace FarmmapsApi.Services | ||||
|  | ||||
|             return shadowItem; | ||||
|         } | ||||
|  | ||||
|  | ||||
|         public async Task<string> RunSatelliteTask(Item cropfieldItem) | ||||
|         { | ||||
|  | ||||
|             _logger.LogInformation("Gathering satellite information for cropfield, this might take a while!"); | ||||
|  | ||||
|             var taskmapRequest = new TaskRequest { TaskType = SATELLITE_TASK }; | ||||
|             string itemTaskCode = await _farmmapsApiService.QueueTaskAsync(cropfieldItem.Code, taskmapRequest); | ||||
|  | ||||
|             await PollTask(TimeSpan.FromSeconds(5), async (tokenSource) => | ||||
|             { | ||||
|                 var itemTaskStatus = await _farmmapsApiService.GetTaskStatusAsync(cropfieldItem.Code, itemTaskCode); | ||||
|                 _logger.LogInformation($"Waiting on satellite data; status: {itemTaskStatus.State}"); | ||||
|                 if (itemTaskStatus.IsFinished) | ||||
|                     tokenSource.Cancel(); | ||||
|                  | ||||
|             }); | ||||
|  | ||||
|             var itemTask = await _farmmapsApiService.GetTaskStatusAsync(cropfieldItem.Code, itemTaskCode); | ||||
|  | ||||
|             if (itemTask.State == ItemTaskState.Error) | ||||
|             { | ||||
|                 _logger.LogError($"Something went wrong when trying to process satellite data; {itemTask.Message}"); | ||||
|  | ||||
|             } | ||||
|  | ||||
|             return itemTask.Code; | ||||
|         } | ||||
|  | ||||
|  | ||||
|         public async Task<Item> FindSatelliteItem(Item cropfieldItem, string satelliteTaskCode) | ||||
|         { | ||||
|  | ||||
|             var taskStatus = await _farmmapsApiService.GetTaskStatusAsync(cropfieldItem.Code, satelliteTaskCode); | ||||
|  | ||||
|  | ||||
|             // find ndvi or wdvi satellite data geotiffs | ||||
|             var temporalItem = await FindChildItemAsync(cropfieldItem.Code, TEMPORAL_ITEMTYPE, | ||||
|                 "Cropfield Satellite items", item => item.SourceTask == SATELLITE_TASK && | ||||
|                                                                  taskStatus.Finished >= item.Created && | ||||
|                                                                  taskStatus.Finished <= item.Created.Value.AddHours(1)); | ||||
|  | ||||
|  | ||||
|             if (temporalItem == null) | ||||
|             { | ||||
|                 _logger.LogError("Temporal item not found"); | ||||
|  | ||||
|             } | ||||
|  | ||||
|             var satelliteTiffs = await _farmmapsApiService.GetItemChildrenAsync(temporalItem.Code); | ||||
|  | ||||
|             _logger.LogInformation("Available satellite images:"); | ||||
|             var count = 0; | ||||
|             TimeSpan.FromSeconds(0.5); | ||||
|             foreach (var item in satelliteTiffs) | ||||
|             { | ||||
|  | ||||
|                 Console.WriteLine($"Satellite image #{count}: {item.DataDate}"); | ||||
|                 count++; | ||||
|             } | ||||
|             _logger.LogInformation("Enter satellite image number for NBS application"); | ||||
|             int elment = Int32.Parse(Console.ReadLine()); | ||||
|  | ||||
|             var selectedSatelliteItem = satelliteTiffs[elment]; | ||||
|  | ||||
|             if (selectedSatelliteItem == null) | ||||
|             { | ||||
|                 _logger.LogError("Satellite item not found"); | ||||
|  | ||||
|             } | ||||
|  | ||||
|             return selectedSatelliteItem; | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|         } | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user