forked from FarmMaps/FarmMapsApiClient
Finding satellite items.
This commit is contained in:
parent
276cce1808
commit
a331437433
@ -3,11 +3,16 @@ namespace FarmmapsApiSamples
|
||||
public static class Constants
|
||||
{
|
||||
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_PROCESSED_ITEMTYPE = "vnd.farmmaps.itemtype.geotiff.processed";
|
||||
public const string CROPFIELD_ITEMTYPE = "vnd.farmmaps.itemtype.cropfield";
|
||||
public const string SHAPE_PROCESSED_ITEMTYPE = "vnd.farmmaps.itemtype.shape.processed";
|
||||
public const string SHAPE_ITEMTYPE = "vnd.farmmaps.itemtype.shape";
|
||||
|
||||
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 Newtonsoft.Json;
|
||||
|
||||
using static FarmmapsApiSamples.Constants;
|
||||
|
||||
namespace FarmmapsHaulmkilling
|
||||
{
|
||||
public class HaulmkillingApplication : IApplication
|
||||
@ -78,17 +80,47 @@ namespace FarmmapsHaulmkilling
|
||||
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!");
|
||||
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();
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
taskStatus = await _farmmapsApiService.GetTaskStatusAsync(_settings.CropfieldItemCode, _settings.SatelliteTaskCode);
|
||||
}
|
||||
|
||||
// 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
|
||||
|
||||
|
@ -3,6 +3,6 @@ namespace FarmmapsHaulmkilling.Models
|
||||
public class Settings
|
||||
{
|
||||
public string CropfieldItemCode { get; set; }
|
||||
public bool ProcessedSatellite { get; set; }
|
||||
public string SatelliteTaskCode { get; set; }
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user