fixed to store statistics of satellite images
This commit is contained in:
		| @@ -345,7 +345,7 @@ namespace FarmmapsApi.Services | |||||||
|         } |         } | ||||||
|  |  | ||||||
|  |  | ||||||
|         public async Task<Item> FindSatelliteItem(Item cropfieldItem, string satelliteTaskCode, string FieldName, bool StoreStatistics) { |         public async Task<Item> FindSatelliteItem(Item cropfieldItem, string satelliteTaskCode) { | ||||||
|  |  | ||||||
|             var taskStatus = await _farmmapsApiService.GetTaskStatusAsync(cropfieldItem.Code, satelliteTaskCode); |             var taskStatus = await _farmmapsApiService.GetTaskStatusAsync(cropfieldItem.Code, satelliteTaskCode); | ||||||
|  |  | ||||||
| @@ -384,11 +384,6 @@ namespace FarmmapsApi.Services | |||||||
|             } |             } | ||||||
|  |  | ||||||
|             return selectedSatelliteItem; |             return selectedSatelliteItem; | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         //VanDerSat |         //VanDerSat | ||||||
| @@ -416,32 +411,6 @@ namespace FarmmapsApi.Services | |||||||
|  |  | ||||||
|             return itemTask.Code; |             return itemTask.Code; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         public async Task<string> RunWatBalTask(Item cropfieldItem) { |  | ||||||
|  |  | ||||||
|             _logger.LogInformation("Gathering WatBal information for cropfield, this might take a while!"); |  | ||||||
|  |  | ||||||
|             var taskmapRequest = new TaskRequest { TaskType = WATBAL_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 VanDerSat 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 WatBal data; {itemTask.Message}"); |  | ||||||
|  |  | ||||||
|             } |  | ||||||
|  |  | ||||||
|             return itemTask.Code; |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         public async Task<Item> FindVanDerSatItem(Item cropfieldItem, string VanDerSatTaskCode, string FieldName, bool StoreStatistics) { |         public async Task<Item> FindVanDerSatItem(Item cropfieldItem, string VanDerSatTaskCode, string FieldName, bool StoreStatistics) { | ||||||
|  |  | ||||||
|             var taskStatus = await _farmmapsApiService.GetTaskStatusAsync(cropfieldItem.Code, VanDerSatTaskCode); |             var taskStatus = await _farmmapsApiService.GetTaskStatusAsync(cropfieldItem.Code, VanDerSatTaskCode); | ||||||
| @@ -478,7 +447,6 @@ namespace FarmmapsApi.Services | |||||||
|                         Console.WriteLine($"{numbervandersat} Van der Sat images found"); |                         Console.WriteLine($"{numbervandersat} Van der Sat images found"); | ||||||
|                     } |                     } | ||||||
|  |  | ||||||
|  |  | ||||||
|                     var VanderSatStatistics = item.Data["layers"][0]["renderer"]["band"]["statistics"]; |                     var VanderSatStatistics = item.Data["layers"][0]["renderer"]["band"]["statistics"]; | ||||||
|                     var VanDerSatImageDate = (DateTime)item.DataDate; |                     var VanDerSatImageDate = (DateTime)item.DataDate; | ||||||
|                     var VanderSatDate = VanDerSatImageDate.ToString("yyyy-MM-dd"); |                     var VanderSatDate = VanDerSatImageDate.ToString("yyyy-MM-dd"); | ||||||
| @@ -512,6 +480,32 @@ namespace FarmmapsApi.Services | |||||||
|  |  | ||||||
|  |  | ||||||
|         } |         } | ||||||
|  |         public async Task<string> RunWatBalTask(Item cropfieldItem) { | ||||||
|  |  | ||||||
|  |             _logger.LogInformation("Gathering WatBal information for cropfield, this might take a while!"); | ||||||
|  |  | ||||||
|  |             var taskmapRequest = new TaskRequest { TaskType = WATBAL_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 VanDerSat 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 WatBal data; {itemTask.Message}"); | ||||||
|  |  | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             return itemTask.Code; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |          | ||||||
|  |  | ||||||
|         public async Task<Item> FindWatBalItem(Item cropfieldItem, string WatBalTaskCode, string FieldName, bool StoreStatistics) { |         public async Task<Item> FindWatBalItem(Item cropfieldItem, string WatBalTaskCode, string FieldName, bool StoreStatistics) { | ||||||
|  |  | ||||||
| @@ -519,10 +513,8 @@ namespace FarmmapsApi.Services | |||||||
|  |  | ||||||
|  |  | ||||||
|             // find WatBal data temporal  |             // find WatBal data temporal  | ||||||
|             var temporalItem = await FindChildItemAsync(cropfieldItem.Code, TEMPORAL_ITEMTYPE, "WatBal");//, item => item.SourceTask == VANDERSAT_TASK && |             var temporalItem = await FindChildItemAsync(cropfieldItem.Code, TEMPORAL_ITEMTYPE, "Watbal", | ||||||
|                                                                                                          //                                           taskStatus.Finished >= item.Created && |                 item => item.SourceTask == WATBAL_TASK && taskStatus.Finished >= item.Created && taskStatus.Finished <= item.Created.Value.AddHours(1)); | ||||||
|                                                                                                          //                                         taskStatus.Finished <= item.Created.Value.AddHours(1)); |  | ||||||
|  |  | ||||||
|  |  | ||||||
|             if (temporalItem == null) { |             if (temporalItem == null) { | ||||||
|                 _logger.LogError("Temporal item not found"); |                 _logger.LogError("Temporal item not found"); | ||||||
|   | |||||||
| @@ -120,7 +120,7 @@ namespace FarmmapsNbs | |||||||
|  |  | ||||||
|  |  | ||||||
|                 // Select a particular satellite item from satelliteTask |                 // Select a particular satellite item from satelliteTask | ||||||
|                 Item satalliteItem = await _generalService.FindSatelliteItem(cropfieldItem, _settings.SatelliteTaskCode, FieldName, StoreStatistics); |                 Item satalliteItem = await _generalService.FindSatelliteItem(cropfieldItem, _settings.SatelliteTaskCode); | ||||||
|  |  | ||||||
|                 var satelliteBand = satalliteItem.Data["layers"][0]["name"]; |                 var satelliteBand = satalliteItem.Data["layers"][0]["name"]; | ||||||
|                 var satelliteStatistics = satalliteItem.Data["layers"][0]["renderer"]["band"]["statistics"]; |                 var satelliteStatistics = satalliteItem.Data["layers"][0]["renderer"]["band"]["statistics"]; | ||||||
| @@ -130,21 +130,18 @@ namespace FarmmapsNbs | |||||||
|                 //Store data to csv  |                 //Store data to csv  | ||||||
|                 if (StoreStatistics == true) |                 if (StoreStatistics == true) | ||||||
|                 { |                 { | ||||||
|                     var SatelliteFile = $"\\Downloads\\DataSatellite_{FieldName}.csv"; |  | ||||||
|                     var NewLineField = $"\"Field\":{FieldName}" + Environment.NewLine; |  | ||||||
|                     var NewLineDate = $"\"date\":{satalliteItem.DataDate}" + Environment.NewLine; |  | ||||||
|                     var i = 0; |  | ||||||
|                     foreach (var item in satelliteStatistics) |  | ||||||
|                     { |  | ||||||
|                         //var NewLines2; |  | ||||||
|                         if (i == 0) |  | ||||||
|                         { |  | ||||||
|                             File.AppendAllText(SatelliteFile, NewLineDate); |  | ||||||
|                             i++; |  | ||||||
|                         } |  | ||||||
|                         File.AppendAllText(SatelliteFile, $"{item}" + Environment.NewLine); |  | ||||||
|  |  | ||||||
|  |                     var SatelliteStatsFile = $"{DownloadFolder}/SatelliteDataStatistics_{FieldName}_{satalliteItem.DataDate.Value:d}.csv"; | ||||||
|  |                     using var w = new StreamWriter(SatelliteStatsFile); | ||||||
|  |                     { | ||||||
|  |                         foreach (var item in satelliteStatistics) | ||||||
|  |                         { | ||||||
|  |                             var line = string.Format("{0}", item); | ||||||
|  |                             w.WriteLine(line); | ||||||
|  |                             w.Flush(); | ||||||
|  |                         } | ||||||
|                     } |                     } | ||||||
|  |  | ||||||
|                 } |                 } | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -216,22 +213,6 @@ namespace FarmmapsNbs | |||||||
|             } |             } | ||||||
|  |  | ||||||
|  |  | ||||||
|             //// check if vandersat task not yet done, do here and save taskcode |  | ||||||
|             //if (useCreatedCropfield == false || string.IsNullOrEmpty(_settings.VanDerSatTaskCode)) { |  | ||||||
|             //    var VanDerSatTaskCode = await _generalService.RunVanDerSatTask(cropfieldItem); |  | ||||||
|             //    _settings.VanDerSatTaskCode = VanDerSatTaskCode; |  | ||||||
|             //    SaveSettings(settingsfile); |  | ||||||
|             //} |  | ||||||
|  |  | ||||||
|             //// Select a particular image item from VanDerSat |  | ||||||
|             //Item VanDerSatItem = await _generalService.FindVanDerSatItem(cropfieldItem, _settings.VanDerSatTaskCode, FieldName, StoreStatistics); |  | ||||||
|  |  | ||||||
|  |  | ||||||
|             //// download the geotiff |  | ||||||
|             //_logger.LogInformation("Downloading geotiff file"); |  | ||||||
|             //await _farmmapsApiService.DownloadItemAsync(VanDerSatItem.Code, |  | ||||||
|             //    Path.Combine(DownloadFolder, $"nbs_VanDerSatGeotiff_{input.OutputFileName}.zip")); |  | ||||||
|  |  | ||||||
|             _logger.LogInformation($"Calculating targetN with targetYield: {input.TargetYield}"); |             _logger.LogInformation($"Calculating targetN with targetYield: {input.TargetYield}"); | ||||||
|             var targetNItem = await _nitrogenService.CreateTargetNItem(cropfieldItem); |             var targetNItem = await _nitrogenService.CreateTargetNItem(cropfieldItem); | ||||||
|             var targetNData = await _nitrogenService.CalculateTargetN(cropfieldItem, targetNItem, plantingDate, |             var targetNData = await _nitrogenService.CalculateTargetN(cropfieldItem, targetNItem, plantingDate, | ||||||
|   | |||||||
| @@ -1,83 +1,42 @@ | |||||||
| [ | [ | ||||||
|     { |  | ||||||
|         "file": "Scan_1_20190605.json", |  | ||||||
|         "inputVariable": "irmi", |  | ||||||
|         "inputLayerName": "", |  | ||||||
|         "outputFileName": "vranbs1", |  | ||||||
|         "plantingDate": "2019-04-18", |  | ||||||
|         "measurementDate": "2019-06-05", |  | ||||||
|         "potatoPurposeType": "consumption", |  | ||||||
|         "targetYield": 45, |  | ||||||
|         "geometryJson": { |  | ||||||
|             "type": "Polygon", |  | ||||||
|             "coordinates": [ |  | ||||||
|                 [ |  | ||||||
|                     [ 3.40843828875524, 50.638966444680605 ], |  | ||||||
|                     [ 3.408953272886064, 50.639197789621612 ], |  | ||||||
|                     [ 3.409242951459603, 50.639469958681836 ], |  | ||||||
|                     [ 3.409328782148028, 50.639612846807708 ], |  | ||||||
|                     [ 3.409457528180712, 50.639789755314411 ], |  | ||||||
|                     [ 3.409639918393741, 50.640014292074966 ], |  | ||||||
|                     [ 3.409833037442765, 50.640211611372706 ], |  | ||||||
|                     [ 3.410069071836049, 50.640395321698435 ], |  | ||||||
|                     [ 3.410380208081761, 50.640572227259661 ], |  | ||||||
|                     [ 3.410605513638958, 50.640715112034222 ], |  | ||||||
|                     [ 3.411925160474145, 50.641177783561204 ], |  | ||||||
|                     [ 3.411935889310142, 50.640728720085136 ], |  | ||||||
|                     [ 3.412590348309737, 50.63948356709389 ], |  | ||||||
|                     [ 3.413244807309242, 50.638224772339846 ], |  | ||||||
|                     [ 3.413400375432099, 50.637901562841307 ], |  | ||||||
|                     [ 3.413539850300779, 50.637449065809889 ], |  | ||||||
|                     [ 3.413475477284437, 50.637418445552932 ], |  | ||||||
|                     [ 3.40999396998362, 50.637449065810451 ], |  | ||||||
|                     [ 3.409940325803365, 50.638102293212661 ], |  | ||||||
|                     [ 3.409575545377398, 50.638483338338325 ], |  | ||||||
|                     [ 3.409060561246574, 50.638707881340494 ], |  | ||||||
|                     [ 3.40843828875524, 50.638966444680605 ] |  | ||||||
|                 ] |  | ||||||
|             ] |  | ||||||
|         }, |  | ||||||
|  |  | ||||||
|         "GenerateTaskmap": true, |  | ||||||
|         "OutputType": "shape", // "shape" or "isoxml" if isoxml also add ddiCode |  | ||||||
|         "Precision": "2", |  | ||||||
|         "MaximumClasses": "4", |  | ||||||
|         "DdiCode": "0006", |  | ||||||
|         "CellWidth": "3", |  | ||||||
|         "CellHeight": "10", |  | ||||||
|         "Centered": "true", |  | ||||||
|         "StartPoint": { |  | ||||||
|             "type": "Point", |  | ||||||
|             "coordinates": [ 3.409341600000000, 50.638991900000001 ] |  | ||||||
|         }, |  | ||||||
|         "EndPoint": { // if no angle |  | ||||||
|             "type": "Point", |  | ||||||
|             "coordinates": [ 3.411897000000000, 50.638981500000000 ] |  | ||||||
|         }  |  | ||||||
|         //"Angle": "317.0" // if no endpoint |  | ||||||
|  |  | ||||||
|     }, |  | ||||||
|  |  | ||||||
|     //{ |     //{ | ||||||
|     //    "file": "", // keep emptpy to use satellite image |     //    "UseCreatedCropfield": true, | ||||||
|     //    "inputVariable": "wdvi", |     //    "file": "Scan_1_20190605.json", | ||||||
|     //    "InputLayerName": "wdvi", |     //    "inputVariable": "irmi", | ||||||
|     //    "outputFileName": "rtest1", |     //    "inputLayerName": "", | ||||||
|     //    "plantingDate": "2020-05-01", |     //    "outputFileName": "vranbs1", | ||||||
|     //    "measurementDate": "2020-06-14", |     //    "fieldName": "testJson_irmi", | ||||||
|  |     //    "storeSatelliteStatistics": true, | ||||||
|  |     //    "plantingDate": "2019-04-18", | ||||||
|  |     //    "measurementDate": "2019-06-05", | ||||||
|     //    "potatoPurposeType": "consumption", |     //    "potatoPurposeType": "consumption", | ||||||
|     //    "targetYield": 60, |     //    "targetYield": 45, | ||||||
|     //    "geometryJson": { |     //    "geometryJson": { | ||||||
|     //        "type": "Polygon", |     //        "type": "Polygon", | ||||||
|     //        "coordinates": [ |     //        "coordinates": [ | ||||||
|     //            [ |     //            [ | ||||||
|     //                [ 4.960707146896585, 52.800583669708487 ], |     //                [ 3.40843828875524, 50.638966444680605 ], | ||||||
|     //                [ 4.960645975538824, 52.800470217610922 ], |     //                [ 3.408953272886064, 50.639197789621612 ], | ||||||
|     //                [ 4.962140695752897, 52.799177147194797 ], |     //                [ 3.409242951459603, 50.639469958681836 ], | ||||||
|     //                [ 4.967523821195745, 52.801502400041208 ], |     //                [ 3.409328782148028, 50.639612846807708 ], | ||||||
|     //                [ 4.966336768950911, 52.802543735879809 ], |     //                [ 3.409457528180712, 50.639789755314411 ], | ||||||
|     //                [ 4.961711880764330, 52.801009996856429 ], |     //                [ 3.409639918393741, 50.640014292074966 ], | ||||||
|     //                [ 4.960707146896585, 52.800583669708487 ] |     //                [ 3.409833037442765, 50.640211611372706 ], | ||||||
|  |     //                [ 3.410069071836049, 50.640395321698435 ], | ||||||
|  |     //                [ 3.410380208081761, 50.640572227259661 ], | ||||||
|  |     //                [ 3.410605513638958, 50.640715112034222 ], | ||||||
|  |     //                [ 3.411925160474145, 50.641177783561204 ], | ||||||
|  |     //                [ 3.411935889310142, 50.640728720085136 ], | ||||||
|  |     //                [ 3.412590348309737, 50.63948356709389 ], | ||||||
|  |     //                [ 3.413244807309242, 50.638224772339846 ], | ||||||
|  |     //                [ 3.413400375432099, 50.637901562841307 ], | ||||||
|  |     //                [ 3.413539850300779, 50.637449065809889 ], | ||||||
|  |     //                [ 3.413475477284437, 50.637418445552932 ], | ||||||
|  |     //                [ 3.40999396998362, 50.637449065810451 ], | ||||||
|  |     //                [ 3.409940325803365, 50.638102293212661 ], | ||||||
|  |     //                [ 3.409575545377398, 50.638483338338325 ], | ||||||
|  |     //                [ 3.409060561246574, 50.638707881340494 ], | ||||||
|  |     //                [ 3.40843828875524, 50.638966444680605 ] | ||||||
|     //            ] |     //            ] | ||||||
|     //        ] |     //        ] | ||||||
|     //    }, |     //    }, | ||||||
| @@ -92,14 +51,61 @@ | |||||||
|     //    "Centered": "true", |     //    "Centered": "true", | ||||||
|     //    "StartPoint": { |     //    "StartPoint": { | ||||||
|     //        "type": "Point", |     //        "type": "Point", | ||||||
|     //        "coordinates": [ 4.960707146896585, 52.800583669708487 ] |     //        "coordinates": [ 3.409341600000000, 50.638991900000001 ] | ||||||
|     //    }, |     //    }, | ||||||
|     //    "EndPoint": { // if no angle |     //    "EndPoint": { // if no angle | ||||||
|     //        "type": "Point", |     //        "type": "Point", | ||||||
|     //        "coordinates": [ 4.961711880764330, 52.801009996856429 ] |     //        "coordinates": [ 3.411897000000000, 50.638981500000000 ] | ||||||
|     //    } |     //    } | ||||||
|     //    //"Angle": "317.0" // if no endpoint |     //    //"Angle": "317.0" // if no endpoint | ||||||
|     //} |  | ||||||
|  |     //}, | ||||||
|  |  | ||||||
|  |     { | ||||||
|  |         "UseCreatedCropfield": true, | ||||||
|  |         "file": "", // keep emptpy to use satellite image | ||||||
|  |         "inputVariable": "wdvi", | ||||||
|  |         "InputLayerName": "wdvi", | ||||||
|  |         "outputFileName": "rtest1", | ||||||
|  |         "fieldName": "test_satelliteWDVI", | ||||||
|  |         "storeSatelliteStatistics": true, | ||||||
|  |         "plantingDate": "2020-05-01", | ||||||
|  |         "measurementDate": "2020-06-14", | ||||||
|  |         "potatoPurposeType": "consumption", | ||||||
|  |         "targetYield": 60, | ||||||
|  |         "geometryJson": { | ||||||
|  |             "type": "Polygon", | ||||||
|  |             "coordinates": [ | ||||||
|  |                 [ | ||||||
|  |                     [ 4.960707146896585, 52.800583669708487 ], | ||||||
|  |                     [ 4.960645975538824, 52.800470217610922 ], | ||||||
|  |                     [ 4.962140695752897, 52.799177147194797 ], | ||||||
|  |                     [ 4.967523821195745, 52.801502400041208 ], | ||||||
|  |                     [ 4.966336768950911, 52.802543735879809 ], | ||||||
|  |                     [ 4.961711880764330, 52.801009996856429 ], | ||||||
|  |                     [ 4.960707146896585, 52.800583669708487 ] | ||||||
|  |                 ] | ||||||
|  |             ] | ||||||
|  |         }, | ||||||
|  |  | ||||||
|  |         "GenerateTaskmap": true, | ||||||
|  |         "OutputType": "shape", // "shape" or "isoxml" if isoxml also add ddiCode | ||||||
|  |         "Precision": "2", | ||||||
|  |         "MaximumClasses": "4", | ||||||
|  |         "DdiCode": "0006", | ||||||
|  |         "CellWidth": "3", | ||||||
|  |         "CellHeight": "10", | ||||||
|  |         "Centered": "true", | ||||||
|  |         "StartPoint": { | ||||||
|  |             "type": "Point", | ||||||
|  |             "coordinates": [ 4.960707146896585, 52.800583669708487 ] | ||||||
|  |         }, | ||||||
|  |         "EndPoint": { // if no angle | ||||||
|  |             "type": "Point", | ||||||
|  |             "coordinates": [ 4.961711880764330, 52.801009996856429 ] | ||||||
|  |         } | ||||||
|  |         //"Angle": "317.0" // if no endpoint | ||||||
|  |     } | ||||||
|      |      | ||||||
|  |  | ||||||
| ] | ] | ||||||
		Reference in New Issue
	
	Block a user