forked from FarmMaps/FarmMapsApiClient
		
	Finding satellite items.
This commit is contained in:
		@@ -3,11 +3,16 @@ namespace FarmmapsApiSamples
 | 
				
			|||||||
    public static class Constants
 | 
					    public static class Constants
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        public const string USERINPUT_ITEMTYPE = "vnd.farmmaps.itemtype.user.input";
 | 
					        public const string USERINPUT_ITEMTYPE = "vnd.farmmaps.itemtype.user.input";
 | 
				
			||||||
 | 
					        public const string TEMPORAL_ITEMTYPE = "vnd.farmmaps.itemtype.temporal";
 | 
				
			||||||
        public const string GEOTIFF_ITEMTYPE = "vnd.farmmaps.itemtype.geotiff";
 | 
					        public const string GEOTIFF_ITEMTYPE = "vnd.farmmaps.itemtype.geotiff";
 | 
				
			||||||
        public const string GEOTIFF_PROCESSED_ITEMTYPE = "vnd.farmmaps.itemtype.geotiff.processed";
 | 
					        public const string GEOTIFF_PROCESSED_ITEMTYPE = "vnd.farmmaps.itemtype.geotiff.processed";
 | 
				
			||||||
        public const string CROPFIELD_ITEMTYPE = "vnd.farmmaps.itemtype.cropfield";
 | 
					        public const string CROPFIELD_ITEMTYPE = "vnd.farmmaps.itemtype.cropfield";
 | 
				
			||||||
        public const string SHAPE_PROCESSED_ITEMTYPE = "vnd.farmmaps.itemtype.shape.processed";
 | 
					        public const string SHAPE_PROCESSED_ITEMTYPE = "vnd.farmmaps.itemtype.shape.processed";
 | 
				
			||||||
        public const string SHAPE_ITEMTYPE = "vnd.farmmaps.itemtype.shape";
 | 
					        public const string SHAPE_ITEMTYPE = "vnd.farmmaps.itemtype.shape";
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
        public const string VRANBS_TASK = "vnd.farmmaps.task.vranbs";
 | 
					        public const string VRANBS_TASK = "vnd.farmmaps.task.vranbs";
 | 
				
			||||||
 | 
					        public const string VRAHERBICIDE_TASK = "vnd.farmmaps.task.vraherbicide";
 | 
				
			||||||
 | 
					        public const string VRAHAULMKILLING_TASK = "vnd.farmmaps.task.vrahaulmkilling";
 | 
				
			||||||
 | 
					        public const string SATELLITE_TASK = "vnd.farmmaps.task.satellite";
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -8,6 +8,8 @@ using FarmmapsHaulmkilling.Models;
 | 
				
			|||||||
using Microsoft.Extensions.Logging;
 | 
					using Microsoft.Extensions.Logging;
 | 
				
			||||||
using Newtonsoft.Json;
 | 
					using Newtonsoft.Json;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					using static FarmmapsApiSamples.Constants;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace FarmmapsHaulmkilling
 | 
					namespace FarmmapsHaulmkilling
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class HaulmkillingApplication : IApplication
 | 
					    public class HaulmkillingApplication : IApplication
 | 
				
			||||||
@@ -78,17 +80,47 @@ namespace FarmmapsHaulmkilling
 | 
				
			|||||||
                cropfieldItem = await _farmmapsApiService.GetItemAsync(_settings.CropfieldItemCode);
 | 
					                cropfieldItem = await _farmmapsApiService.GetItemAsync(_settings.CropfieldItemCode);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (!_settings.ProcessedSatellite)
 | 
					            ItemTaskStatus taskStatus;
 | 
				
			||||||
 | 
					            if (!string.IsNullOrEmpty(_settings.SatelliteTaskCode))
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                _logger.LogInformation("Gathering satellite information for cropfield, this might take a while!");
 | 
					                _logger.LogInformation("Gathering satellite information for cropfield, this might take a while!");
 | 
				
			||||||
                var taskStatus = await _generalService.RunAndWaitForTask(cropfieldItem, "vnd.farmmaps.task.satellite", null, 20);
 | 
					                taskStatus = await _generalService.RunAndWaitForTask(cropfieldItem, SATELLITE_TASK, null, 20);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                _settings.ProcessedSatellite = taskStatus.State == ItemTaskState.Ok;
 | 
					                if (taskStatus.State == ItemTaskState.Error)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    _logger.LogError($"Something went wrong when trying to process satellite data; {taskStatus.Message}");
 | 
				
			||||||
 | 
					                    return;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                _settings.SatelliteTaskCode = taskStatus.Code;
 | 
				
			||||||
                SaveSettings();
 | 
					                SaveSettings();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					            else
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                taskStatus = await _farmmapsApiService.GetTaskStatusAsync(_settings.CropfieldItemCode, _settings.SatelliteTaskCode);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            // find ndvi or wdvi satellite data geotiffs
 | 
					            // find ndvi or wdvi satellite data geotiffs
 | 
				
			||||||
 | 
					            var temporalITem = await _generalService.FindChildItemAsync(cropfieldItem.Code, TEMPORAL_ITEMTYPE,
 | 
				
			||||||
 | 
					                "Cropfield VRA Haulmkilling, Satellite", 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");
 | 
				
			||||||
 | 
					                return;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var satelliteTiffs = await _farmmapsApiService.GetItemChildrenAsync(temporalITem.Code);
 | 
				
			||||||
 | 
					            var firstSatelliteItem = satelliteTiffs.FirstOrDefault();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (firstSatelliteItem == null)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                _logger.LogError($"Satellite item not found");
 | 
				
			||||||
 | 
					                return;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            // create haulmkilling application map
 | 
					            // create haulmkilling application map
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,6 +3,6 @@ namespace FarmmapsHaulmkilling.Models
 | 
				
			|||||||
    public class Settings
 | 
					    public class Settings
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        public string CropfieldItemCode { get; set; }
 | 
					        public string CropfieldItemCode { get; set; }
 | 
				
			||||||
        public bool ProcessedSatellite { get; set; }
 | 
					        public string SatelliteTaskCode { get; set; }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user