Added project FarmmapsBulkSatDownload
Merge branch 'master' of https://git.akkerweb.nl/jits/FarmMapsApiClient_WURtest # Conflicts: # FarmmapsApi/Services/GeneralService.cs
This commit is contained in:
		| @@ -348,7 +348,7 @@ namespace FarmmapsApi.Services | |||||||
|         } |         } | ||||||
|  |  | ||||||
|  |  | ||||||
|         public async Task<Item> FindSatelliteItem(Item cropfieldItem, string satelliteTaskCode) { |         public async Task<Item> FindSatelliteItem(Item cropfieldItem, string satelliteTaskCode, string FieldName = null, int selectedLayer = 0, bool allItemsStatistics = false, string DownloadFolder = null) { | ||||||
|  |  | ||||||
|             var taskStatus = await _farmmapsApiService.GetTaskStatusAsync(cropfieldItem.Code, satelliteTaskCode); |             var taskStatus = await _farmmapsApiService.GetTaskStatusAsync(cropfieldItem.Code, satelliteTaskCode); | ||||||
|  |  | ||||||
| @@ -367,27 +367,78 @@ namespace FarmmapsApi.Services | |||||||
|  |  | ||||||
|             var satelliteTiffs = await _farmmapsApiService.GetItemChildrenAsync(temporalItem.Code); |             var satelliteTiffs = await _farmmapsApiService.GetItemChildrenAsync(temporalItem.Code); | ||||||
|              |              | ||||||
|             _logger.LogInformation("Available satellite images:"); |             if (allItemsStatistics == false) { | ||||||
|             var count = 0; |                 _logger.LogInformation("Available satellite images:"); | ||||||
|             TimeSpan.FromSeconds(0.5); |                 var count = 0; | ||||||
|             foreach (var item in satelliteTiffs) { |                 TimeSpan.FromSeconds(0.5); | ||||||
|  |                 foreach (var item in satelliteTiffs) { | ||||||
|  |  | ||||||
|                 Console.WriteLine($"Satellite image #{count}: {item.DataDate}"); |                     Console.WriteLine($"Satellite image #{count}: {item.DataDate}"); | ||||||
|                 count++; |                     count++; | ||||||
|  |                 } | ||||||
|  |  | ||||||
|  |                 _logger.LogInformation("Enter satellite image number for NBS application"); | ||||||
|  |                 int element = Int32.Parse(Console.ReadLine()); | ||||||
|  |                 var selectedSatelliteItem = satelliteTiffs[element]; | ||||||
|  |  | ||||||
|  |                 if (selectedSatelliteItem == null) { | ||||||
|  |                     _logger.LogError("Satellite item not found"); | ||||||
|  |                  | ||||||
|  |                     return selectedSatelliteItem; | ||||||
|  |                 } | ||||||
|             } |             } | ||||||
|  |  | ||||||
|             _logger.LogInformation("Enter satellite image number for NBS application"); |             if (allItemsStatistics == true ) { | ||||||
|             int element = Int32.Parse(Console.ReadLine()); |                 var count = 0; | ||||||
|             var selectedSatelliteItem = satelliteTiffs[element]; |                 foreach (var item in satelliteTiffs) {                     | ||||||
|  |                         var satellitetBand = item.Data["layers"][selectedLayer]["name"]; | ||||||
|  |                         var SatelliteImageYear = (DateTime)item.DataDate; | ||||||
|  |                         var SatelliteYear = SatelliteImageYear.ToString("yyyy"); | ||||||
|  |                         var SatelliteFile = $"{DownloadFolder}/SatelliteDataStatistics_{SatelliteYear}_{FieldName}_{satellitetBand}.csv";  | ||||||
|  |                         var NewLineField = $"Field,Date,Mean,Min,Max,Standard deviation, ConfidenceInterval low, ConfidenceInterval high" + Environment.NewLine; | ||||||
|  |                         if (count == 0) { | ||||||
|  |                             File.AppendAllText(SatelliteFile, NewLineField); | ||||||
|  |                             var numbervandersat = satelliteTiffs.Count; | ||||||
|  |                             Console.WriteLine($"{numbervandersat} Satellite images found"); | ||||||
|  |                         } | ||||||
|  |  | ||||||
|             if (selectedSatelliteItem == null) { |                         var SatelliteStatistics = item.Data["layers"][0]["renderer"]["band"]["statistics"]; | ||||||
|  |                         var SatelliteImageDate = (DateTime)item.DataDate; | ||||||
|  |                         var satelliteDate = SatelliteImageDate.ToString("yyyy-MM-dd"); | ||||||
|  |                         var NewLineDate = $"\"date\":{satelliteDate}" + Environment.NewLine; | ||||||
|  |                         if (SatelliteStatistics == null) { | ||||||
|  |                             Console.WriteLine($"{satelliteDate} no statistics found"); | ||||||
|  |                             //Console.WriteLine($"Available data: {item.Data}"); | ||||||
|  |                         } else { | ||||||
|  |                             File.AppendAllText(SatelliteFile, $"{FieldName},{satelliteDate},{SatelliteStatistics["mean"]},{SatelliteStatistics["min"]},{SatelliteStatistics["max"]},{SatelliteStatistics["stddev"]},{SatelliteStatistics["confidenceIntervalLow"]},{SatelliteStatistics["confidenceIntervalHigh"]}" + Environment.NewLine); | ||||||
|  |                         } | ||||||
|  |  | ||||||
|  |                     if (true) { | ||||||
|  |                         // download the geotiff of needed inputtype | ||||||
|  |                         var selectedSatelliteItemDate = (DateTime)item.DataDate; | ||||||
|  |                         var SatelliteDate = selectedSatelliteItemDate.ToString("yyyyMMdd"); | ||||||
|  |                         _logger.LogInformation("Downloading geotiff file"); | ||||||
|  |                         await _farmmapsApiService.DownloadItemAsync(item.Code, | ||||||
|  |                             Path.Combine(DownloadFolder, $"satelliteGeotiff_{FieldName}_{satellitetBand}_{SatelliteDate}.zip")); | ||||||
|  |                     } | ||||||
|  |  | ||||||
|  |                     count++; | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             var selectedSatelliteItemTemp = satelliteTiffs[0]; | ||||||
|  |  | ||||||
|  |             if (selectedSatelliteItemTemp == null) { | ||||||
|                 _logger.LogError("Satellite item not found"); |                 _logger.LogError("Satellite item not found"); | ||||||
|  |  | ||||||
|  |                 return selectedSatelliteItemTemp; | ||||||
|             } |             } | ||||||
|  |  | ||||||
|             return selectedSatelliteItem; |             return selectedSatelliteItemTemp; | ||||||
|  |  | ||||||
|         } |         } | ||||||
|          |          | ||||||
|  |  | ||||||
|         public async Task<List<Item>> FindSatelliteItemsAll(Item cropfieldItem, string satelliteTaskCode) |         public async Task<List<Item>> FindSatelliteItemsAll(Item cropfieldItem, string satelliteTaskCode) | ||||||
|         { |         { | ||||||
|  |  | ||||||
| @@ -413,7 +464,6 @@ namespace FarmmapsApi.Services | |||||||
|         } |         } | ||||||
|         //VanDerSat |         //VanDerSat | ||||||
|         public async Task<string> RunVanDerSatTask(Item cropfieldItem) { |         public async Task<string> RunVanDerSatTask(Item cropfieldItem) { | ||||||
|  |  | ||||||
|             _logger.LogInformation("Gathering VanDerSat information for cropfield, this might take a while!"); |             _logger.LogInformation("Gathering VanDerSat information for cropfield, this might take a while!"); | ||||||
|  |  | ||||||
|             var taskmapRequest = new TaskRequest { TaskType = VANDERSAT_TASK }; |             var taskmapRequest = new TaskRequest { TaskType = VANDERSAT_TASK }; | ||||||
|   | |||||||
| @@ -67,6 +67,7 @@ namespace FarmmapsDataDownload | |||||||
|             var cropYear = input.CropYear; |             var cropYear = input.CropYear; | ||||||
|             var fieldName = input.fieldName; |             var fieldName = input.fieldName; | ||||||
|             bool storeSatelliteStatistics = input.StoreSatelliteStatistics; |             bool storeSatelliteStatistics = input.StoreSatelliteStatistics; | ||||||
|  |             bool storeSatelliteStatisticsCropYear = input.StoreSatelliteStatisticsCropYear; | ||||||
|             string settingsfile = $"Settings_{fieldName}.json"; |             string settingsfile = $"Settings_{fieldName}.json"; | ||||||
|  |  | ||||||
|             LoadSettings(settingsfile); |             LoadSettings(settingsfile); | ||||||
| @@ -133,19 +134,22 @@ namespace FarmmapsDataDownload | |||||||
|                     SaveSettings(settingsfile); |                     SaveSettings(settingsfile); | ||||||
|                 } |                 } | ||||||
|  |  | ||||||
|                 // Select a particular satellite item from satelliteTask |  | ||||||
|                 Item satalliteItem = await _generalService.FindSatelliteItem(cropfieldItem, _settings.SatelliteTaskCode); |  | ||||||
|                 int selectedLayer= 2; |                 int selectedLayer= 2; | ||||||
|  |  | ||||||
|                 if (input.SatelliteBand == "ndvi") selectedLayer = 0; |                 if (input.SatelliteBand == "ndvi") selectedLayer = 0; | ||||||
|                 if (input.SatelliteBand == "wdvi") selectedLayer = 1; |                 if (input.SatelliteBand == "wdvi") selectedLayer = 1; | ||||||
|                 if (input.SatelliteBand == "natural") selectedLayer = 2; |                 if (input.SatelliteBand == "natural") selectedLayer = 2; | ||||||
|  |                 // Select a particular satellite item from satelliteTask | ||||||
|  |                 Item satalliteItem = await _generalService.FindSatelliteItem(cropfieldItem, _settings.SatelliteTaskCode, fieldName, selectedLayer, storeSatelliteStatisticsCropYear, DownloadFolder); | ||||||
|  |  | ||||||
|  |  | ||||||
|                 var satelliteBand = satalliteItem.Data["layers"][selectedLayer]["name"]; |                 var satelliteBand = satalliteItem.Data["layers"][selectedLayer]["name"]; | ||||||
|  |  | ||||||
|                 //Store satellite data to csv  |                 //Store satellite data to csv  | ||||||
|                 if (storeSatelliteStatistics == true && (selectedLayer == 0 || selectedLayer ==1)) |                 if (storeSatelliteStatistics == true && (selectedLayer == 0 || selectedLayer ==1)) | ||||||
|                 { |                 { | ||||||
|  |                      | ||||||
|  |                      | ||||||
|                     var satelliteStatistics = satalliteItem.Data["layers"][selectedLayer]["renderer"]["band"]["statistics"]; |                     var satelliteStatistics = satalliteItem.Data["layers"][selectedLayer]["renderer"]["band"]["statistics"]; | ||||||
|                     Console.WriteLine($"Satellite image date: {satalliteItem.DataDate}"); |                     Console.WriteLine($"Satellite image date: {satalliteItem.DataDate}"); | ||||||
|  |  | ||||||
| @@ -160,24 +164,24 @@ namespace FarmmapsDataDownload | |||||||
|                         } |                         } | ||||||
|                     } |                     } | ||||||
|  |  | ||||||
|                 } |                     var inputType = (satalliteItem.Data["layers"] as JArray)?[selectedLayer]["name"].ToString(); | ||||||
|  |                     if (string.IsNullOrEmpty(inputType)) { | ||||||
|  |                         _logger.LogError("Could not get the input type name from the satellite item"); | ||||||
|  |                         return; | ||||||
|  |                     } | ||||||
|  |  | ||||||
|                 var inputType = (satalliteItem.Data["layers"] as JArray)?[selectedLayer]["name"].ToString(); |                     // download the geotiff of needed inputtype | ||||||
|                 if (string.IsNullOrEmpty(inputType)) |                     var SatelliteImageDate = (DateTime)satalliteItem.DataDate; | ||||||
|                 { |                     var SatelliteDate = SatelliteImageDate.ToString("yyyyMMdd"); | ||||||
|                     _logger.LogError("Could not get the input type name from the satellite item"); |                     _logger.LogInformation("Downloading geotiff file"); | ||||||
|                     return; |                     await _farmmapsApiService.DownloadItemAsync(satalliteItem.Code, | ||||||
|  |                         Path.Combine(DownloadFolder, $"satelliteGeotiff_{input.OutputFileName}_{inputType}_{SatelliteDate}.zip")); | ||||||
|                 } |                 } | ||||||
|  |  | ||||||
|                 // download the geotiff of needed inputtype |  | ||||||
|                 var SatelliteImageDate = (DateTime)satalliteItem.DataDate; |  | ||||||
|                 var SatelliteDate = SatelliteImageDate.ToString("yyyyMMdd"); |  | ||||||
|                 _logger.LogInformation("Downloading geotiff file"); |  | ||||||
|                 await _farmmapsApiService.DownloadItemAsync(satalliteItem.Code, |  | ||||||
|                     Path.Combine(DownloadFolder, $"satelliteGeotiff_{input.OutputFileName}_{inputType}_{SatelliteDate}.zip")); |  | ||||||
|             } |             } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|             // Get vanDerSat data |             // Get vanDerSat data | ||||||
|             if (input.GetVanDerSatData) |             if (input.GetVanDerSatData) | ||||||
|             { |             { | ||||||
|   | |||||||
| @@ -1,31 +1,32 @@ | |||||||
| [ | [ | ||||||
|     { |   { | ||||||
|         "UseCreatedCropfield": true, |     "UseCreatedCropfield": true, | ||||||
|         "outputFileName": "testSatData", |     "outputFileName": "testSatData2", | ||||||
|         "fieldName": "test_satData", |     "fieldName": "test_satData2", | ||||||
|         "GetShadowData": true, |     "GetShadowData": false, | ||||||
|         "GetSatelliteData": true, |     "GetSatelliteData": true, | ||||||
|         "SatelliteBand": "natural", // "ndvi" or "wdvi" |     "SatelliteBand": "wdvi", // "natural", "ndvi" or "wdvi" | ||||||
|         "StoreSatelliteStatistics": true, |     "StoreSatelliteStatistics": false, | ||||||
|  |     "StoreSatelliteStatisticsCropYear": true, | ||||||
|  |  | ||||||
|         "GetVanDerSatData": false, |     "GetVanDerSatData": false, | ||||||
|         "StoreVanDerSatStatistics": false, |     "StoreVanDerSatStatistics": false, | ||||||
|         "CropYear": "2020-01-01", |     "CropYear": "2020-01-01", | ||||||
|         "geometryJson": { |     "geometryJson": { | ||||||
|             "type": "Polygon", |       "type": "Polygon", | ||||||
|             "coordinates": [ |       "coordinates": [ | ||||||
|                 [ |         [ | ||||||
|                     [ 4.960707146896585, 52.800583669708487 ], |           [ 4.960707146896585, 52.800583669708487 ], | ||||||
|                     [ 4.960645975538824, 52.800470217610922 ], |           [ 4.960645975538824, 52.800470217610922 ], | ||||||
|                     [ 4.962140695752897, 52.799177147194797 ], |           [ 4.962140695752897, 52.799177147194797 ], | ||||||
|                     [ 4.967523821195745, 52.801502400041208 ], |           [ 4.967523821195745, 52.801502400041208 ], | ||||||
|                     [ 4.966336768950911, 52.802543735879809 ], |           [ 4.966336768950911, 52.802543735879809 ], | ||||||
|                     [ 4.961711880764330, 52.801009996856429 ], |           [ 4.961711880764330, 52.801009996856429 ], | ||||||
|                     [ 4.960707146896585, 52.800583669708487 ] |           [ 4.960707146896585, 52.800583669708487 ] | ||||||
|                 ] |         ] | ||||||
|             ] |       ] | ||||||
|         } |  | ||||||
|     } |     } | ||||||
|  |   } | ||||||
|      |      | ||||||
|  |  | ||||||
| ] | ] | ||||||
| @@ -2,7 +2,7 @@ | |||||||
|  |  | ||||||
|     <PropertyGroup> |     <PropertyGroup> | ||||||
|         <OutputType>Exe</OutputType> |         <OutputType>Exe</OutputType> | ||||||
|         <TargetFramework>netcoreapp3.1</TargetFramework> |         <TargetFramework>netcoreapp3.0</TargetFramework> | ||||||
|     </PropertyGroup> |     </PropertyGroup> | ||||||
|  |  | ||||||
|     <ItemGroup> |     <ItemGroup> | ||||||
|   | |||||||
| @@ -17,6 +17,7 @@ namespace FarmmapsDataDownload.Models | |||||||
|         public bool GetVanDerSatData { get; set; } |         public bool GetVanDerSatData { get; set; } | ||||||
|         public string SatelliteBand { get; set; } |         public string SatelliteBand { get; set; } | ||||||
|         public bool StoreSatelliteStatistics { get; set; } |         public bool StoreSatelliteStatistics { get; set; } | ||||||
|  |         public bool StoreSatelliteStatisticsCropYear { get; set; } | ||||||
|         public bool StoreVanDerSatStatistics { get; set; } |         public bool StoreVanDerSatStatistics { get; set; } | ||||||
|         public bool GetShadowData { get; set; } |         public bool GetShadowData { get; set; } | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										10
									
								
								FarmmapsDataDownload/appsettings.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								FarmmapsDataDownload/appsettings.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,10 @@ | |||||||
|  | { | ||||||
|  |     "Authority": "https://accounts.test.farmmaps.eu/", | ||||||
|  |     "Endpoint": "https://test.farmmaps.eu/", | ||||||
|  |     "BasePath": "api/v1", | ||||||
|  |     "DiscoveryEndpointUrl": "https://accounts.test.farmmaps.eu/.well-known/openid-configuration", | ||||||
|  |     "RedirectUri": "http://example.nl/api", | ||||||
|  |     "ClientId": "", | ||||||
|  |     "ClientSecret": "", | ||||||
|  |     "Scopes": [ "api" ] | ||||||
|  | } | ||||||
		Reference in New Issue
	
	Block a user