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 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; }
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user