diff --git a/FarmmapsBulkSatDownload/BulkSatDownloadApplication.cs b/FarmmapsBulkSatDownload/BulkSatDownloadApplication.cs index f663a77..ba0e346 100644 --- a/FarmmapsBulkSatDownload/BulkSatDownloadApplication.cs +++ b/FarmmapsBulkSatDownload/BulkSatDownloadApplication.cs @@ -51,96 +51,104 @@ namespace FarmmapsBulkSatDownload DateTime lastdownloadedimagedate; int cropYear; - // Option 1: When using database need to (1) fill in database data in DBsettings.secrets.json; (2) write tailor made SELECT query for fieldinputs in following lines; - // (3) Write tailor made INSERT INTO query in Task Process() below; - // Initialize databases. Username, password etc stored in file "DBsettings.secrets.json". - // Crashes if "DBsettings.secrets.json" is absent or empty - DB dbparcels = JsonConvert.DeserializeObject(File.ReadAllText("DBsettings.secrets.json")); - string schemaname = "bigdata"; - string parceltablename = "parcel_bollenrevolutie_tulips2020"; //"parcelsijbrandij" "parcel"; "parcel_flowerbulbs"; "parcel_disac"; ""parcel_bollenrevolutie_tulips2020"" - string groenmonitortablename = "groenmonitor_bollenrevolutie_tulips2020"; //"groenmonitorsijbrandij" "groenmonitor" "groenmonitor_flowerbulbs" "groenmonitor_disac" "groenmonitor_bollenrevolutie_tulips2020" - // The view 'groenmonitorlatestviewname' contains per parcelid (arbid) the year in which it "exists" and the date of the latest image downloaded. It is used to prevent unneccessary downloading of image statistics already in the database - string groenmonitorlatestviewname = "groenmonitorlatest_bollenrevolutie_tulips2020"; //"groenmonitorsijbrandijlatest" "groenmonitorlatest" "groenmonitorlatest_flowerbulbs" "groenmonitorlatest_disac" "groenmonitorlatest_bollenrevolutie_tulips2020" - - // Database query and connection. Geometry must be in WGS84 coordinate system, EPSG 4326 - // Apparently the FarmmapsApi cannot handle MultiPolygon, so we need to convert to single Polygon - // In case database returns a MultiPolygon use ST_NumGeometries(pt.geom) to count the number of polygons - // If necessary use WHERE ST_NumGeometries(pt.geom) = 1 to select only single polygons - // - // FarmMaps get's its satellite images from www.groenmonitor.nl through the https://agrodatacube.wur.nl/. - // Many images are available at www.groenmonitor.nl, the https://agrodatacube.wur.nl/ serves only the clean images, 10-30 per year, 2019 onwards. Possibly more images will be added for earlier years - // For other images contact www.groenmonitor.nl, gerbert.roerink@wur.nl - bulkSatDownloadInputListDB = new List(); - List satelliteBands = new List { "wdvi", "ndvi" }; - string connectionString = dbparcels.GetConnectionString(); - string readSql = string.Format( -@" -SELECT pt.arbid, pt.year, gml.lastwenrdate, ST_AsGeoJSON(ST_Transform((ST_DUMP(pt.geom)).geom::geometry(Polygon),4326)) AS geojson_polygon_wgs84, - COALESCE(pt.cropfielditemcode,'') AS cropfielditemcode, - CASE WHEN pt.year >= DATE_PART('year', CURRENT_DATE) THEN '' ELSE COALESCE(pt.satellitetaskcode,'') END AS satellitetaskcode -FROM {0}.{1} pt, {0}.{2} gml -WHERE - pt.arbid = gml.arbid - AND pt.satellitetaskcode IS NULL -ORDER BY pt.arbid -LIMIT 5;", schemaname, parceltablename, groenmonitorlatestviewname); //LIMIT x for testing - - using (NpgsqlConnection connection = new NpgsqlConnection(connectionString)) + //Use doDB to decide if reading from/writing to database (doDB = true) or + //read from file BulkSatDownloadInput.json and write satellite statistics to file(s) specified in BulkSatDownloadInput.json + //note in case of doDB == true you will need to provide a file "DBsettings.secrets.json" with login details for the database + //see empty example "DBsettings.json" + bool doDB = false; + if (doDB == true) { - connection.Open(); + // Option 1: When using database need to (1) fill in database data in DBsettings.secrets.json; (2) write tailor made SELECT query for fieldinputs in following lines; + // (3) Write tailor made INSERT INTO query in Task Process() below; + // Initialize databases. Username, password etc stored in file "DBsettings.secrets.json". + // Crashes if "DBsettings.secrets.json" is absent or empty + DB dbparcels = JsonConvert.DeserializeObject(File.ReadAllText("DBsettings.secrets.json")); + string schemaname = "bigdata"; + string parceltablename = "parcel_bollenrevolutie_tulips2020"; //"parcelsijbrandij" "parcel"; "parcel_flowerbulbs"; "parcel_disac"; ""parcel_bollenrevolutie_tulips2020"" + string groenmonitortablename = "groenmonitor_bollenrevolutie_tulips2020"; //"groenmonitorsijbrandij" "groenmonitor" "groenmonitor_flowerbulbs" "groenmonitor_disac" "groenmonitor_bollenrevolutie_tulips2020" + // The view 'groenmonitorlatestviewname' contains per parcelid (arbid) the year in which it "exists" and the date of the latest image downloaded. It is used to prevent unneccessary downloading of image statistics already in the database + string groenmonitorlatestviewname = "groenmonitorlatest_bollenrevolutie_tulips2020"; //"groenmonitorsijbrandijlatest" "groenmonitorlatest" "groenmonitorlatest_flowerbulbs" "groenmonitorlatest_disac" "groenmonitorlatest_bollenrevolutie_tulips2020" - // Read data (run query) = build a list of fields for which to download images - NpgsqlCommand command = connection.CreateCommand(); - command.CommandText = readSql; - NpgsqlDataReader dr = command.ExecuteReader(); - while (dr.Read()) + // Database query and connection. Geometry must be in WGS84 coordinate system, EPSG 4326 + // Apparently the FarmmapsApi cannot handle MultiPolygon, so we need to convert to single Polygon + // In case database returns a MultiPolygon use ST_NumGeometries(pt.geom) to count the number of polygons + // If necessary use WHERE ST_NumGeometries(pt.geom) = 1 to select only single polygons + // + // FarmMaps get's its satellite images from www.groenmonitor.nl through the https://agrodatacube.wur.nl/. + // Many images are available at www.groenmonitor.nl, the https://agrodatacube.wur.nl/ serves only the clean images, 10-30 per year, 2019 onwards. Possibly more images will be added for earlier years + // For other images contact www.groenmonitor.nl, gerbert.roerink@wur.nl + bulkSatDownloadInputListDB = new List(); + List satelliteBands = new List { "wdvi", "ndvi" }; + string connectionString = dbparcels.GetConnectionString(); + string readSql = string.Format( + @" + SELECT pt.arbid, pt.year, gml.lastwenrdate, ST_AsGeoJSON(ST_Transform((ST_DUMP(pt.geom)).geom::geometry(Polygon),4326)) AS geojson_polygon_wgs84, + COALESCE(pt.cropfielditemcode,'') AS cropfielditemcode, + CASE WHEN pt.year >= DATE_PART('year', CURRENT_DATE) THEN '' ELSE COALESCE(pt.satellitetaskcode,'') END AS satellitetaskcode + FROM {0}.{1} pt, {0}.{2} gml + WHERE + pt.arbid = gml.arbid + AND pt.satellitetaskcode IS NULL + ORDER BY pt.arbid + LIMIT 5;", schemaname, parceltablename, groenmonitorlatestviewname); //LIMIT x for testing + + using (NpgsqlConnection connection = new NpgsqlConnection(connectionString)) { - bulkSatDownloadInput = new BulkSatDownloadInput(); - bulkSatDownloadInput.fieldID = dr.GetInt16(0); - bulkSatDownloadInput.fieldName = string.Format($"{parceltablename}_{bulkSatDownloadInput.fieldID}"); - bulkSatDownloadInput.cropYear = dr.GetInt16(1); ; - bulkSatDownloadInput.lastdownloadedimagedate = dr.GetDateTime(2); - bulkSatDownloadInput.GeometryJson = JObject.Parse(dr.GetString(3)); - bulkSatDownloadInput.SatelliteBands = satelliteBands; - bulkSatDownloadInput.cropfielditemcode = dr.GetString(4); - bulkSatDownloadInput.satellitetaskcode = dr.GetString(5); - bulkSatDownloadInput.database = dbparcels; - bulkSatDownloadInput.schemaname = schemaname; - bulkSatDownloadInput.cropfieldtable = parceltablename; - bulkSatDownloadInput.satelllitetable = groenmonitortablename; - bulkSatDownloadInputListDB.Add(bulkSatDownloadInput); + connection.Open(); + + // Read data (run query) = build a list of fields for which to download images + NpgsqlCommand command = connection.CreateCommand(); + command.CommandText = readSql; + NpgsqlDataReader dr = command.ExecuteReader(); + while (dr.Read()) + { + bulkSatDownloadInput = new BulkSatDownloadInput(); + bulkSatDownloadInput.fieldID = dr.GetInt16(0); + bulkSatDownloadInput.fieldName = string.Format($"{parceltablename}_{bulkSatDownloadInput.fieldID}"); + bulkSatDownloadInput.cropYear = dr.GetInt16(1); ; + bulkSatDownloadInput.lastdownloadedimagedate = dr.GetDateTime(2); + bulkSatDownloadInput.GeometryJson = JObject.Parse(dr.GetString(3)); + bulkSatDownloadInput.SatelliteBands = satelliteBands; + bulkSatDownloadInput.cropfielditemcode = dr.GetString(4); + bulkSatDownloadInput.satellitetaskcode = dr.GetString(5); + bulkSatDownloadInput.database = dbparcels; + bulkSatDownloadInput.schemaname = schemaname; + bulkSatDownloadInput.cropfieldtable = parceltablename; + bulkSatDownloadInput.satelllitetable = groenmonitortablename; + bulkSatDownloadInputListDB.Add(bulkSatDownloadInput); + } + connection.Close(); } - connection.Close(); + // Now choose which list you want to use + bulkSatDownloadInputList = bulkSatDownloadInputListDB; + } + else + { + // Option 2: Example without database. Comment out this part if you want to use database + // Read cropfields "BulkSatDownloadInput.json" and write all stats to a single csv file + // Write all stats for multiple fields will be written to a single csv file + string downloadFolder; + string fileNameStats; + string headerLineStats = $"FieldName,satelliteDate,satelliteBand,max,min,mean,mode,median,stddev,minPlus,curtosis,maxMinus,skewness,variance,populationCount,variationCoefficient,confidenceIntervalLow, confidenceIntervalHigh,confidenceIntervalErrorMargin" + Environment.NewLine; + var fieldsInputJson = File.ReadAllText("BulkSatDownloadInput.json"); + bulkSatDownloadInputListCsv = JsonConvert.DeserializeObject>(fieldsInputJson); + for (int i = 0; i < bulkSatDownloadInputListCsv.Count; i++) + { + downloadFolder = bulkSatDownloadInputListCsv[i].downloadFolder; + fileNameStats = Path.Combine(downloadFolder, bulkSatDownloadInputListCsv[i].fileNameStats); + if (!Directory.Exists(downloadFolder)) + Directory.CreateDirectory(downloadFolder); + bulkSatDownloadInputListCsv[i].fileNameStats = fileNameStats; + // Header same as in GeneralService.DownloadSatelliteStats + // Delete fileNameStats if existing. Create a new file. Add a header to csv file + File.Delete(fileNameStats); + File.AppendAllText(fileNameStats, headerLineStats); + } + + // Now choose which list you want to use + bulkSatDownloadInputList = bulkSatDownloadInputListCsv; } - // Option 2: Example without database. Comment out this part if you want to use database - // Read cropfields "BulkSatDownloadInput.json" and write all stats to a single csv file - // Write all stats for multiple fields will be written to a single csv file - //string downloadFolder; - //string fileNameStats; - //string headerLineStats = $"FieldName,satelliteDate,satelliteBand,max,min,mean,mode,median,stddev,minPlus,curtosis,maxMinus,skewness,variance,populationCount,variationCoefficient,confidenceIntervalLow, confidenceIntervalHigh,confidenceIntervalErrorMargin" + Environment.NewLine; - //var fieldsInputJson = File.ReadAllText("BulkSatDownloadInput.json"); - //bulkSatDownloadInputListCsv = JsonConvert.DeserializeObject>(fieldsInputJson); - //for (int i = 0; i < bulkSatDownloadInputListCsv.Count; i++) - //{ - // downloadFolder = bulkSatDownloadInputListCsv[i].downloadFolder; - // fileNameStats = Path.Combine(downloadFolder, bulkSatDownloadInputListCsv[i].fileNameStats); - // if (!Directory.Exists(downloadFolder)) - // Directory.CreateDirectory(downloadFolder); - // bulkSatDownloadInputListCsv[i].fileNameStats = fileNameStats; - // // Header same as in GeneralService.DownloadSatelliteStats - // // Delete fileNameStats if existing. Create a new file. Add a header to csv file - // File.Delete(fileNameStats); - // File.AppendAllText(fileNameStats, headerLineStats); - //} - - // Now choose which list you want to use - bulkSatDownloadInputList = bulkSatDownloadInputListDB; //bulkSatDownloadInputListDB; //bulkSatDownloadInputListCsv; - - // Whichever option (database or json/csv), continue here - // Delete the settingsfile - // File.Delete(settingsfile); - // For each input download all images. Keep track to time, important when doing bulk downloads var watch = System.Diagnostics.Stopwatch.StartNew(); TimeSpan tsSofar = new TimeSpan(); diff --git a/FarmmapsBulkSatDownload/BulkSatDownloadInput.json b/FarmmapsBulkSatDownload/BulkSatDownloadInput.json index 6edabb0..4505680 100644 --- a/FarmmapsBulkSatDownload/BulkSatDownloadInput.json +++ b/FarmmapsBulkSatDownload/BulkSatDownloadInput.json @@ -1,46 +1,19 @@ [ { - "fieldName": "5641", // FarmMaps minimum needs are: fieldName, cropYear & geometryJson - "cropYear": 1999, //For testing a year for which we know no satellite data available, program shouldn't crash - "fieldID": 5641, + "fieldName": "BvdT FieldlabG92", // FarmMaps minimum needs are: fieldName, cropYear & geometryJson + "cropYear": 2022, // for testing same field last year + "fieldID": 1, "SatelliteBands": [ "wdvi", "ndvi" ], // ["ndvi"] or ["wdvi"] or both: [ "wdvi", "ndvi" ] - "lastdownloadedimagedate": "1999-01-01", //downloads images from this date till end of the year + "lastdownloadedimagedate": "2022-01-01", //downloads images from this date till end of the year "geometryJson": { "type": "Polygon", "coordinates": [ [ - [ 3.37837807779104, 51.3231095796538 ], - [ 3.38065689232502, 51.3212527499355 ], - [ 3.38022924592256, 51.3210683536359 ], - [ 3.37980548452565, 51.3208801127141 ], - [ 3.37959556105776, 51.3207540143696 ], - [ 3.3793691292654, 51.3205959677371 ], - [ 3.37822219207335, 51.3215667913007 ], - [ 3.37816999925795, 51.3216109809456 ], - [ 3.37646704574705, 51.3208025481261 ], - [ 3.37646695791282, 51.3208025061493 ], - [ 3.37608401443192, 51.3206231652693 ], - [ 3.37607169507628, 51.3206173959751 ], - [ 3.37606021048754, 51.320612017601 ], - [ 3.37582728410659, 51.3205029306946 ], - [ 3.37580409779263, 51.3206502985963 ], - [ 3.37575872019649, 51.3207993094705 ], - [ 3.37575476634361, 51.3208122883487 ], - [ 3.37571181656268, 51.3208797459348 ], - [ 3.3756624532907, 51.3209415238446 ], - [ 3.37557609963811, 51.3210110142077 ], - [ 3.37541089899821, 51.3211055871218 ], - [ 3.37477516102591, 51.3214102985009 ], - [ 3.37473173914127, 51.3214311108204 ], - [ 3.37455904622072, 51.3215138815012 ], - [ 3.37415098054777, 51.3217199232877 ], - [ 3.37313700916272, 51.3222422862785 ], - [ 3.37748824689601, 51.3242852920348 ], - [ 3.37749760805371, 51.3242713084009 ], - [ 3.37811903757028, 51.3233437635596 ], - [ 3.37818758851947, 51.3232647797363 ], - [ 3.37823803668144, 51.3232236798646 ], - [ 3.37837807779104, 51.3231095796538 ] + [ 5.563472073408009, 52.547554398144172 ], + [ 5.567425915520115, 52.547725375100377 ], + [ 5.563878143678981, 52.54048022658143 ], + [ 5.563878143678981, 52.54048022658143 ], + [ 5.563472073408009, 52.547554398144172 ] ] ] }, @@ -52,203 +25,20 @@ "satelllitetable": null }, { - "fieldName": "5641", // FarmMaps minimum needs are: fieldName, cropYear & geometryJson - "cropYear": 2021, //For testing a year for which we know no satellite data available, program shouldn't crash - "fieldID": 5641, + "fieldName": "BvdT FieldlabG92", // FarmMaps minimum needs are: fieldName, cropYear & geometryJson + "cropYear": 2021, // for testing same field last year (i.e. 2021) + "fieldID": 1, "SatelliteBands": [ "wdvi", "ndvi" ], // ["ndvi"] or ["wdvi"] or both: [ "wdvi", "ndvi" ] "lastdownloadedimagedate": "2021-01-01", //downloads images from this date till end of the year "geometryJson": { "type": "Polygon", "coordinates": [ [ - [ 3.37837807779104, 51.3231095796538 ], - [ 3.38065689232502, 51.3212527499355 ], - [ 3.38022924592256, 51.3210683536359 ], - [ 3.37980548452565, 51.3208801127141 ], - [ 3.37959556105776, 51.3207540143696 ], - [ 3.3793691292654, 51.3205959677371 ], - [ 3.37822219207335, 51.3215667913007 ], - [ 3.37816999925795, 51.3216109809456 ], - [ 3.37646704574705, 51.3208025481261 ], - [ 3.37646695791282, 51.3208025061493 ], - [ 3.37608401443192, 51.3206231652693 ], - [ 3.37607169507628, 51.3206173959751 ], - [ 3.37606021048754, 51.320612017601 ], - [ 3.37582728410659, 51.3205029306946 ], - [ 3.37580409779263, 51.3206502985963 ], - [ 3.37575872019649, 51.3207993094705 ], - [ 3.37575476634361, 51.3208122883487 ], - [ 3.37571181656268, 51.3208797459348 ], - [ 3.3756624532907, 51.3209415238446 ], - [ 3.37557609963811, 51.3210110142077 ], - [ 3.37541089899821, 51.3211055871218 ], - [ 3.37477516102591, 51.3214102985009 ], - [ 3.37473173914127, 51.3214311108204 ], - [ 3.37455904622072, 51.3215138815012 ], - [ 3.37415098054777, 51.3217199232877 ], - [ 3.37313700916272, 51.3222422862785 ], - [ 3.37748824689601, 51.3242852920348 ], - [ 3.37749760805371, 51.3242713084009 ], - [ 3.37811903757028, 51.3233437635596 ], - [ 3.37818758851947, 51.3232647797363 ], - [ 3.37823803668144, 51.3232236798646 ], - [ 3.37837807779104, 51.3231095796538 ] - ] - ] - }, - "downloadFolder": "C:\\workdir\\groenmonitor\\", - "fileNameStats": "BulkSatDownload.csv", - "database": null, - "schemaname": null, - "cropfieldtable": null, - "satelllitetable": null - }, - { - "fieldName": "5641", // FarmMaps minimum needs are: fieldName, cropYear & geometryJson - "cropYear": 2020, - "fieldID": 5641, - "SatelliteBands": [ "wdvi", "ndvi" ], // ["ndvi"] or ["wdvi"] or both: [ "wdvi", "ndvi" ] - "lastdownloadedimagedate": "2020-01-01", //downloads images from this date till end of the year - "geometryJson": { - "type": "Polygon", - "coordinates": [ - [ - [ 3.37837807779104, 51.3231095796538 ], - [ 3.38065689232502, 51.3212527499355 ], - [ 3.38022924592256, 51.3210683536359 ], - [ 3.37980548452565, 51.3208801127141 ], - [ 3.37959556105776, 51.3207540143696 ], - [ 3.3793691292654, 51.3205959677371 ], - [ 3.37822219207335, 51.3215667913007 ], - [ 3.37816999925795, 51.3216109809456 ], - [ 3.37646704574705, 51.3208025481261 ], - [ 3.37646695791282, 51.3208025061493 ], - [ 3.37608401443192, 51.3206231652693 ], - [ 3.37607169507628, 51.3206173959751 ], - [ 3.37606021048754, 51.320612017601 ], - [ 3.37582728410659, 51.3205029306946 ], - [ 3.37580409779263, 51.3206502985963 ], - [ 3.37575872019649, 51.3207993094705 ], - [ 3.37575476634361, 51.3208122883487 ], - [ 3.37571181656268, 51.3208797459348 ], - [ 3.3756624532907, 51.3209415238446 ], - [ 3.37557609963811, 51.3210110142077 ], - [ 3.37541089899821, 51.3211055871218 ], - [ 3.37477516102591, 51.3214102985009 ], - [ 3.37473173914127, 51.3214311108204 ], - [ 3.37455904622072, 51.3215138815012 ], - [ 3.37415098054777, 51.3217199232877 ], - [ 3.37313700916272, 51.3222422862785 ], - [ 3.37748824689601, 51.3242852920348 ], - [ 3.37749760805371, 51.3242713084009 ], - [ 3.37811903757028, 51.3233437635596 ], - [ 3.37818758851947, 51.3232647797363 ], - [ 3.37823803668144, 51.3232236798646 ], - [ 3.37837807779104, 51.3231095796538 ] - ] - ] - }, - "downloadFolder": "C:\\workdir\\groenmonitor\\", - "fileNameStats": "BulkSatDownload.csv", - "database": null, - "schemaname": null, - "cropfieldtable": null, - "satelllitetable": null - }, - { - "fieldName": "5641", // FarmMaps minimum needs are: fieldName, cropYear & geometryJson - "cropYear": 2019, - "fieldID": 5641, - "SatelliteBands": [ "wdvi", "ndvi" ], // ["ndvi"] or ["wdvi"] or both: [ "wdvi", "ndvi" ] - "lastdownloadedimagedate": "2019-01-01", //downloads images from this date till end of the year - "geometryJson": { - "type": "Polygon", - "coordinates": [ - [ - [ 3.37837807779104, 51.3231095796538 ], - [ 3.38065689232502, 51.3212527499355 ], - [ 3.38022924592256, 51.3210683536359 ], - [ 3.37980548452565, 51.3208801127141 ], - [ 3.37959556105776, 51.3207540143696 ], - [ 3.3793691292654, 51.3205959677371 ], - [ 3.37822219207335, 51.3215667913007 ], - [ 3.37816999925795, 51.3216109809456 ], - [ 3.37646704574705, 51.3208025481261 ], - [ 3.37646695791282, 51.3208025061493 ], - [ 3.37608401443192, 51.3206231652693 ], - [ 3.37607169507628, 51.3206173959751 ], - [ 3.37606021048754, 51.320612017601 ], - [ 3.37582728410659, 51.3205029306946 ], - [ 3.37580409779263, 51.3206502985963 ], - [ 3.37575872019649, 51.3207993094705 ], - [ 3.37575476634361, 51.3208122883487 ], - [ 3.37571181656268, 51.3208797459348 ], - [ 3.3756624532907, 51.3209415238446 ], - [ 3.37557609963811, 51.3210110142077 ], - [ 3.37541089899821, 51.3211055871218 ], - [ 3.37477516102591, 51.3214102985009 ], - [ 3.37473173914127, 51.3214311108204 ], - [ 3.37455904622072, 51.3215138815012 ], - [ 3.37415098054777, 51.3217199232877 ], - [ 3.37313700916272, 51.3222422862785 ], - [ 3.37748824689601, 51.3242852920348 ], - [ 3.37749760805371, 51.3242713084009 ], - [ 3.37811903757028, 51.3233437635596 ], - [ 3.37818758851947, 51.3232647797363 ], - [ 3.37823803668144, 51.3232236798646 ], - [ 3.37837807779104, 51.3231095796538 ] - ] - ] - }, - "downloadFolder": "C:\\workdir\\groenmonitor\\", - "fileNameStats": "BulkSatDownload.csv", - "database": null, - "schemaname": null, - "cropfieldtable": null, - "satelllitetable": null - }, - { - "fieldName": "5641", // FarmMaps minimum needs are: fieldName, cropYear & geometryJson - "cropYear": 2018, //little to no images for 2018 - "fieldID": 5641, - "SatelliteBands": [ "wdvi", "ndvi" ], // ["ndvi"] or ["wdvi"] or both: [ "wdvi", "ndvi" ] - "lastdownloadedimagedate": "2018-01-01", //downloads images from this date till end of the year - "geometryJson": { - "type": "Polygon", - "coordinates": [ - [ - [ 3.37837807779104, 51.3231095796538 ], - [ 3.38065689232502, 51.3212527499355 ], - [ 3.38022924592256, 51.3210683536359 ], - [ 3.37980548452565, 51.3208801127141 ], - [ 3.37959556105776, 51.3207540143696 ], - [ 3.3793691292654, 51.3205959677371 ], - [ 3.37822219207335, 51.3215667913007 ], - [ 3.37816999925795, 51.3216109809456 ], - [ 3.37646704574705, 51.3208025481261 ], - [ 3.37646695791282, 51.3208025061493 ], - [ 3.37608401443192, 51.3206231652693 ], - [ 3.37607169507628, 51.3206173959751 ], - [ 3.37606021048754, 51.320612017601 ], - [ 3.37582728410659, 51.3205029306946 ], - [ 3.37580409779263, 51.3206502985963 ], - [ 3.37575872019649, 51.3207993094705 ], - [ 3.37575476634361, 51.3208122883487 ], - [ 3.37571181656268, 51.3208797459348 ], - [ 3.3756624532907, 51.3209415238446 ], - [ 3.37557609963811, 51.3210110142077 ], - [ 3.37541089899821, 51.3211055871218 ], - [ 3.37477516102591, 51.3214102985009 ], - [ 3.37473173914127, 51.3214311108204 ], - [ 3.37455904622072, 51.3215138815012 ], - [ 3.37415098054777, 51.3217199232877 ], - [ 3.37313700916272, 51.3222422862785 ], - [ 3.37748824689601, 51.3242852920348 ], - [ 3.37749760805371, 51.3242713084009 ], - [ 3.37811903757028, 51.3233437635596 ], - [ 3.37818758851947, 51.3232647797363 ], - [ 3.37823803668144, 51.3232236798646 ], - [ 3.37837807779104, 51.3231095796538 ] + [ 5.563472073408009, 52.547554398144172 ], + [ 5.567425915520115, 52.547725375100377 ], + [ 5.563878143678981, 52.54048022658143 ], + [ 5.563878143678981, 52.54048022658143 ], + [ 5.563472073408009, 52.547554398144172 ] ] ] },