forked from FarmMaps/FarmMapsApiClient
		
	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