Skip to content
Snippets Groups Projects
Commit 80548bb3 authored by Tor-Einar Skog's avatar Tor-Einar Skog
Browse files

Added handling of provided daily and hourly min and max temps

parent 66dd8a49
Branches
No related tags found
No related merge requests found
Pipeline #319 canceled
......@@ -30,6 +30,7 @@ import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.TimeZone;
import java.util.stream.Collectors;
import no.nibio.vips.entity.ModelConfiguration;
import no.nibio.vips.entity.Result;
import no.nibio.vips.entity.ResultImpl;
......@@ -249,13 +250,23 @@ public class MaizePhenologyModel extends I18nImpl implements Model{
// Hourly data? Aggregate
if(inputWeatherData.get(0).getLogIntervalId().equals(WeatherObservation.LOG_INTERVAL_ID_1H))
{
Set<String> parametersFound = inputWeatherData.stream().map(o->o.getElementMeasurementTypeId()).collect(Collectors.toSet());
try
{
List<WeatherObservation> onlyMeanTemps = this.weatherUtil.filterWeatherObservationsByParameter(inputWeatherData, WeatherElements.TEMPERATURE_MEAN);
List<WeatherObservation> minTemps = this.weatherUtil.getAggregatedDailyValues(onlyMeanTemps, timeZone, 15, WeatherUtil.AGGREGATION_TYPE_MINIMUM,1, true);
this.weatherUtil.renameParameter(minTemps, WeatherElements.TEMPERATURE_MEAN, WeatherElements.TEMPERATURE_MINIMUM);
List<WeatherObservation> maxTemps = this.weatherUtil.getAggregatedDailyValues(onlyMeanTemps, timeZone, 15, WeatherUtil.AGGREGATION_TYPE_MAXIMUM,1, true);
this.weatherUtil.renameParameter(maxTemps, WeatherElements.TEMPERATURE_MEAN, WeatherElements.TEMPERATURE_MAXIMUM);
List<WeatherObservation> onlyTemps = this.weatherUtil.filterWeatherObservationsByParameter(inputWeatherData, parametersFound.contains(WeatherElements.TEMPERATURE_MINIMUM) ? WeatherElements.TEMPERATURE_MINIMUM : WeatherElements.TEMPERATURE_MEAN);
List<WeatherObservation> minTemps = this.weatherUtil.getAggregatedDailyValues(onlyTemps, timeZone, 15, WeatherUtil.AGGREGATION_TYPE_MINIMUM,1, true);
// If we only have mean temps, rename them to min temps
if(minTemps.get(0).getElementMeasurementTypeId().equals(WeatherElements.TEMPERATURE_MEAN))
{
this.weatherUtil.renameParameter(minTemps, WeatherElements.TEMPERATURE_MEAN, WeatherElements.TEMPERATURE_MINIMUM);
}
onlyTemps = this.weatherUtil.filterWeatherObservationsByParameter(inputWeatherData, parametersFound.contains(WeatherElements.TEMPERATURE_MAXIMUM) ? WeatherElements.TEMPERATURE_MAXIMUM : WeatherElements.TEMPERATURE_MEAN);
List<WeatherObservation> maxTemps = this.weatherUtil.getAggregatedDailyValues(onlyTemps, timeZone, 15, WeatherUtil.AGGREGATION_TYPE_MAXIMUM,1, true);
// If we only have mean temps, rename them to max temps
if(maxTemps.get(0).getElementMeasurementTypeId().equals(WeatherElements.TEMPERATURE_MEAN))
{
this.weatherUtil.renameParameter(maxTemps, WeatherElements.TEMPERATURE_MEAN, WeatherElements.TEMPERATURE_MAXIMUM);
}
inputWeatherData = minTemps;
inputWeatherData.addAll(maxTemps);
}
......
......@@ -78,6 +78,8 @@ public class MaizePhenologyModelTest {
instance.setConfiguration(config);
List<Result> result = instance.getResult();
//result.forEach(r->System.out.println(r));
/*
ObjectMapper om = new ObjectMapper();
try {
......@@ -90,6 +92,39 @@ public class MaizePhenologyModelTest {
assertNotNull(result);
//result.forEach(r->System.out.println(r));
// Testing with hourly min and max temps
config = wfr.getModelConfigurationWithWeatherData("/weather_data/hourly_min_max_Apelsvoll_Norway.json", MaizePhenologyModel.MODEL_ID.toString());
// The timezone is used to set daily temperatures and biofix date correctly
config.setConfigParameter("timeZone", "Europe/Oslo");
// The date for when to start calculating heat sums
config.setConfigParameter("sowingDate", "2021-06-02");
//System.out.println(config.toJSON());
instance.setConfiguration(config);
result = instance.getResult();
assertNotNull(result);
//result.forEach(r->System.out.println(r));
// Testing with daily min and max temps
config = wfr.getModelConfigurationWithWeatherData("/weather_data/daily_min_max_Apelsvoll_Norway.json", MaizePhenologyModel.MODEL_ID.toString());
// The timezone is used to set daily temperatures and biofix date correctly
config.setConfigParameter("timeZone", "Europe/Oslo");
// The date for when to start calculating heat sums
config.setConfigParameter("sowingDate", "2021-06-02");
//System.out.println(config.toJSON());
instance.setConfiguration(config);
result = instance.getResult();
assertNotNull(result);
//result.forEach(r->System.out.println(r));
}
/**
......
[{"elementMeasurementTypeId":"TX","logIntervalId":2,"timeMeasured":"2021-05-31T22:00:00Z","value":25.94},{"elementMeasurementTypeId":"TN","logIntervalId":2,"timeMeasured":"2021-05-31T22:00:00Z","value":8.15},{"elementMeasurementTypeId":"TX","logIntervalId":2,"timeMeasured":"2021-06-01T22:00:00Z","value":24.0},{"elementMeasurementTypeId":"TN","logIntervalId":2,"timeMeasured":"2021-06-01T22:00:00Z","value":8.44},{"elementMeasurementTypeId":"TX","logIntervalId":2,"timeMeasured":"2021-06-02T22:00:00Z","value":23.11},{"elementMeasurementTypeId":"TN","logIntervalId":2,"timeMeasured":"2021-06-02T22:00:00Z","value":12.02},{"elementMeasurementTypeId":"TX","logIntervalId":2,"timeMeasured":"2021-06-03T22:00:00Z","value":24.01},{"elementMeasurementTypeId":"TN","logIntervalId":2,"timeMeasured":"2021-06-03T22:00:00Z","value":8.35},{"elementMeasurementTypeId":"TX","logIntervalId":2,"timeMeasured":"2021-06-04T22:00:00Z","value":25.04},{"elementMeasurementTypeId":"TN","logIntervalId":2,"timeMeasured":"2021-06-04T22:00:00Z","value":8.6},{"elementMeasurementTypeId":"TX","logIntervalId":2,"timeMeasured":"2021-06-05T22:00:00Z","value":22.86},{"elementMeasurementTypeId":"TN","logIntervalId":2,"timeMeasured":"2021-06-05T22:00:00Z","value":13.63},{"elementMeasurementTypeId":"TX","logIntervalId":2,"timeMeasured":"2021-06-06T22:00:00Z","value":20.59},{"elementMeasurementTypeId":"TN","logIntervalId":2,"timeMeasured":"2021-06-06T22:00:00Z","value":12.69},{"elementMeasurementTypeId":"TX","logIntervalId":2,"timeMeasured":"2021-06-07T22:00:00Z","value":19.6},{"elementMeasurementTypeId":"TN","logIntervalId":2,"timeMeasured":"2021-06-07T22:00:00Z","value":12.45},{"elementMeasurementTypeId":"TX","logIntervalId":2,"timeMeasured":"2021-06-08T22:00:00Z","value":21.06},{"elementMeasurementTypeId":"TN","logIntervalId":2,"timeMeasured":"2021-06-08T22:00:00Z","value":8.2},{"elementMeasurementTypeId":"TX","logIntervalId":2,"timeMeasured":"2021-06-09T22:00:00Z","value":22.55},{"elementMeasurementTypeId":"TN","logIntervalId":2,"timeMeasured":"2021-06-09T22:00:00Z","value":10.52},{"elementMeasurementTypeId":"TX","logIntervalId":2,"timeMeasured":"2021-06-10T22:00:00Z","value":21.22},{"elementMeasurementTypeId":"TN","logIntervalId":2,"timeMeasured":"2021-06-10T22:00:00Z","value":13.19},{"elementMeasurementTypeId":"TX","logIntervalId":2,"timeMeasured":"2021-06-11T22:00:00Z","value":21.2},{"elementMeasurementTypeId":"TN","logIntervalId":2,"timeMeasured":"2021-06-11T22:00:00Z","value":9.55},{"elementMeasurementTypeId":"TX","logIntervalId":2,"timeMeasured":"2021-06-12T22:00:00Z","value":22.2},{"elementMeasurementTypeId":"TN","logIntervalId":2,"timeMeasured":"2021-06-12T22:00:00Z","value":9.09},{"elementMeasurementTypeId":"TX","logIntervalId":2,"timeMeasured":"2021-06-13T22:00:00Z","value":18.86},{"elementMeasurementTypeId":"TN","logIntervalId":2,"timeMeasured":"2021-06-13T22:00:00Z","value":10.79},{"elementMeasurementTypeId":"TX","logIntervalId":2,"timeMeasured":"2021-06-14T22:00:00Z","value":21.93},{"elementMeasurementTypeId":"TN","logIntervalId":2,"timeMeasured":"2021-06-14T22:00:00Z","value":6.55},{"elementMeasurementTypeId":"TX","logIntervalId":2,"timeMeasured":"2021-06-15T22:00:00Z","value":19.51},{"elementMeasurementTypeId":"TN","logIntervalId":2,"timeMeasured":"2021-06-15T22:00:00Z","value":5.728},{"elementMeasurementTypeId":"TX","logIntervalId":2,"timeMeasured":"2021-06-16T22:00:00Z","value":23.32},{"elementMeasurementTypeId":"TN","logIntervalId":2,"timeMeasured":"2021-06-16T22:00:00Z","value":11.45},{"elementMeasurementTypeId":"TX","logIntervalId":2,"timeMeasured":"2021-06-17T22:00:00Z","value":22.19},{"elementMeasurementTypeId":"TN","logIntervalId":2,"timeMeasured":"2021-06-17T22:00:00Z","value":14.76},{"elementMeasurementTypeId":"TX","logIntervalId":2,"timeMeasured":"2021-06-18T22:00:00Z","value":24.4},{"elementMeasurementTypeId":"TN","logIntervalId":2,"timeMeasured":"2021-06-18T22:00:00Z","value":13.42},{"elementMeasurementTypeId":"TX","logIntervalId":2,"timeMeasured":"2021-06-19T22:00:00Z","value":18.01},{"elementMeasurementTypeId":"TN","logIntervalId":2,"timeMeasured":"2021-06-19T22:00:00Z","value":13.18},{"elementMeasurementTypeId":"TX","logIntervalId":2,"timeMeasured":"2021-06-20T22:00:00Z","value":17.54},{"elementMeasurementTypeId":"TN","logIntervalId":2,"timeMeasured":"2021-06-20T22:00:00Z","value":12.22},{"elementMeasurementTypeId":"TX","logIntervalId":2,"timeMeasured":"2021-06-21T22:00:00Z","value":16.67},{"elementMeasurementTypeId":"TN","logIntervalId":2,"timeMeasured":"2021-06-21T22:00:00Z","value":11.32},{"elementMeasurementTypeId":"TX","logIntervalId":2,"timeMeasured":"2021-06-22T22:00:00Z","value":24.52},{"elementMeasurementTypeId":"TN","logIntervalId":2,"timeMeasured":"2021-06-22T22:00:00Z","value":8.09},{"elementMeasurementTypeId":"TX","logIntervalId":2,"timeMeasured":"2021-06-23T22:00:00Z","value":19.9},{"elementMeasurementTypeId":"TN","logIntervalId":2,"timeMeasured":"2021-06-23T22:00:00Z","value":12.24},{"elementMeasurementTypeId":"TX","logIntervalId":2,"timeMeasured":"2021-06-24T22:00:00Z","value":20.75},{"elementMeasurementTypeId":"TN","logIntervalId":2,"timeMeasured":"2021-06-24T22:00:00Z","value":11.59},{"elementMeasurementTypeId":"TX","logIntervalId":2,"timeMeasured":"2021-06-25T22:00:00Z","value":24.26},{"elementMeasurementTypeId":"TN","logIntervalId":2,"timeMeasured":"2021-06-25T22:00:00Z","value":8.21},{"elementMeasurementTypeId":"TX","logIntervalId":2,"timeMeasured":"2021-06-26T22:00:00Z","value":16.76},{"elementMeasurementTypeId":"TN","logIntervalId":2,"timeMeasured":"2021-06-26T22:00:00Z","value":13.76},{"elementMeasurementTypeId":"TX","logIntervalId":2,"timeMeasured":"2021-06-27T22:00:00Z","value":19.94},{"elementMeasurementTypeId":"TN","logIntervalId":2,"timeMeasured":"2021-06-27T22:00:00Z","value":13.41},{"elementMeasurementTypeId":"TX","logIntervalId":2,"timeMeasured":"2021-06-28T22:00:00Z","value":21.45},{"elementMeasurementTypeId":"TN","logIntervalId":2,"timeMeasured":"2021-06-28T22:00:00Z","value":10.64},{"elementMeasurementTypeId":"TX","logIntervalId":2,"timeMeasured":"2021-06-29T22:00:00Z","value":22.9},{"elementMeasurementTypeId":"TN","logIntervalId":2,"timeMeasured":"2021-06-29T22:00:00Z","value":12.18},{"elementMeasurementTypeId":"TX","logIntervalId":2,"timeMeasured":"2021-06-30T22:00:00Z","value":22.45},{"elementMeasurementTypeId":"TN","logIntervalId":2,"timeMeasured":"2021-06-30T22:00:00Z","value":7.43},{"elementMeasurementTypeId":"TX","logIntervalId":2,"timeMeasured":"2021-07-01T22:00:00Z","value":27.18},{"elementMeasurementTypeId":"TN","logIntervalId":2,"timeMeasured":"2021-07-01T22:00:00Z","value":13.49},{"elementMeasurementTypeId":"TX","logIntervalId":2,"timeMeasured":"2021-07-02T22:00:00Z","value":30.18},{"elementMeasurementTypeId":"TN","logIntervalId":2,"timeMeasured":"2021-07-02T22:00:00Z","value":10.61},{"elementMeasurementTypeId":"TX","logIntervalId":2,"timeMeasured":"2021-07-03T22:00:00Z","value":25.97},{"elementMeasurementTypeId":"TN","logIntervalId":2,"timeMeasured":"2021-07-03T22:00:00Z","value":14.05},{"elementMeasurementTypeId":"TX","logIntervalId":2,"timeMeasured":"2021-07-04T22:00:00Z","value":25.83},{"elementMeasurementTypeId":"TN","logIntervalId":2,"timeMeasured":"2021-07-04T22:00:00Z","value":13.74},{"elementMeasurementTypeId":"TX","logIntervalId":2,"timeMeasured":"2021-07-05T22:00:00Z","value":22.24},{"elementMeasurementTypeId":"TN","logIntervalId":2,"timeMeasured":"2021-07-05T22:00:00Z","value":14.49},{"elementMeasurementTypeId":"TX","logIntervalId":2,"timeMeasured":"2021-07-06T22:00:00Z","value":21.04},{"elementMeasurementTypeId":"TN","logIntervalId":2,"timeMeasured":"2021-07-06T22:00:00Z","value":13.5},{"elementMeasurementTypeId":"TX","logIntervalId":2,"timeMeasured":"2021-07-07T22:00:00Z","value":21.67},{"elementMeasurementTypeId":"TN","logIntervalId":2,"timeMeasured":"2021-07-07T22:00:00Z","value":13.04},{"elementMeasurementTypeId":"TX","logIntervalId":2,"timeMeasured":"2021-07-08T22:00:00Z","value":24.57},{"elementMeasurementTypeId":"TN","logIntervalId":2,"timeMeasured":"2021-07-08T22:00:00Z","value":10.12},{"elementMeasurementTypeId":"TX","logIntervalId":2,"timeMeasured":"2021-07-09T22:00:00Z","value":16.3},{"elementMeasurementTypeId":"TN","logIntervalId":2,"timeMeasured":"2021-07-09T22:00:00Z","value":14.35},{"elementMeasurementTypeId":"TX","logIntervalId":2,"timeMeasured":"2021-07-10T22:00:00Z","value":22.1},{"elementMeasurementTypeId":"TN","logIntervalId":2,"timeMeasured":"2021-07-10T22:00:00Z","value":13.26},{"elementMeasurementTypeId":"TX","logIntervalId":2,"timeMeasured":"2021-07-11T22:00:00Z","value":23.27},{"elementMeasurementTypeId":"TN","logIntervalId":2,"timeMeasured":"2021-07-11T22:00:00Z","value":12.41},{"elementMeasurementTypeId":"TX","logIntervalId":2,"timeMeasured":"2021-07-12T22:00:00Z","value":28.88},{"elementMeasurementTypeId":"TN","logIntervalId":2,"timeMeasured":"2021-07-12T22:00:00Z","value":9.06},{"elementMeasurementTypeId":"TX","logIntervalId":2,"timeMeasured":"2021-07-13T22:00:00Z","value":27.13},{"elementMeasurementTypeId":"TN","logIntervalId":2,"timeMeasured":"2021-07-13T22:00:00Z","value":15.96},{"elementMeasurementTypeId":"TX","logIntervalId":2,"timeMeasured":"2021-07-14T22:00:00Z","value":29.55},{"elementMeasurementTypeId":"TN","logIntervalId":2,"timeMeasured":"2021-07-14T22:00:00Z","value":15.68},{"elementMeasurementTypeId":"TX","logIntervalId":2,"timeMeasured":"2021-07-15T22:00:00Z","value":28.35},{"elementMeasurementTypeId":"TN","logIntervalId":2,"timeMeasured":"2021-07-15T22:00:00Z","value":15.43},{"elementMeasurementTypeId":"TX","logIntervalId":2,"timeMeasured":"2021-07-16T22:00:00Z","value":27.51},{"elementMeasurementTypeId":"TN","logIntervalId":2,"timeMeasured":"2021-07-16T22:00:00Z","value":10.93},{"elementMeasurementTypeId":"TX","logIntervalId":2,"timeMeasured":"2021-07-17T22:00:00Z","value":24.57},{"elementMeasurementTypeId":"TN","logIntervalId":2,"timeMeasured":"2021-07-17T22:00:00Z","value":12.78},{"elementMeasurementTypeId":"TX","logIntervalId":2,"timeMeasured":"2021-07-18T22:00:00Z","value":22.84},{"elementMeasurementTypeId":"TN","logIntervalId":2,"timeMeasured":"2021-07-18T22:00:00Z","value":6.787},{"elementMeasurementTypeId":"TX","logIntervalId":2,"timeMeasured":"2021-07-19T22:00:00Z","value":26.3},{"elementMeasurementTypeId":"TN","logIntervalId":2,"timeMeasured":"2021-07-19T22:00:00Z","value":10.39},{"elementMeasurementTypeId":"TX","logIntervalId":2,"timeMeasured":"2021-07-20T22:00:00Z","value":24.25},{"elementMeasurementTypeId":"TN","logIntervalId":2,"timeMeasured":"2021-07-20T22:00:00Z","value":12.24},{"elementMeasurementTypeId":"TX","logIntervalId":2,"timeMeasured":"2021-07-21T22:00:00Z","value":28.39},{"elementMeasurementTypeId":"TN","logIntervalId":2,"timeMeasured":"2021-07-21T22:00:00Z","value":10.05},{"elementMeasurementTypeId":"TX","logIntervalId":2,"timeMeasured":"2021-07-22T22:00:00Z","value":27.0},{"elementMeasurementTypeId":"TN","logIntervalId":2,"timeMeasured":"2021-07-22T22:00:00Z","value":9.8},{"elementMeasurementTypeId":"TX","logIntervalId":2,"timeMeasured":"2021-07-23T22:00:00Z","value":27.58},{"elementMeasurementTypeId":"TN","logIntervalId":2,"timeMeasured":"2021-07-23T22:00:00Z","value":9.82},{"elementMeasurementTypeId":"TX","logIntervalId":2,"timeMeasured":"2021-07-24T22:00:00Z","value":29.32},{"elementMeasurementTypeId":"TN","logIntervalId":2,"timeMeasured":"2021-07-24T22:00:00Z","value":10.37},{"elementMeasurementTypeId":"TX","logIntervalId":2,"timeMeasured":"2021-07-25T22:00:00Z","value":26.92},{"elementMeasurementTypeId":"TN","logIntervalId":2,"timeMeasured":"2021-07-25T22:00:00Z","value":14.27},{"elementMeasurementTypeId":"TX","logIntervalId":2,"timeMeasured":"2021-07-26T22:00:00Z","value":18.61},{"elementMeasurementTypeId":"TN","logIntervalId":2,"timeMeasured":"2021-07-26T22:00:00Z","value":16.05},{"elementMeasurementTypeId":"TX","logIntervalId":2,"timeMeasured":"2021-07-27T22:00:00Z","value":22.04},{"elementMeasurementTypeId":"TN","logIntervalId":2,"timeMeasured":"2021-07-27T22:00:00Z","value":15.25},{"elementMeasurementTypeId":"TX","logIntervalId":2,"timeMeasured":"2021-07-28T22:00:00Z","value":16.92},{"elementMeasurementTypeId":"TN","logIntervalId":2,"timeMeasured":"2021-07-28T22:00:00Z","value":12.6},{"elementMeasurementTypeId":"TX","logIntervalId":2,"timeMeasured":"2021-07-29T22:00:00Z","value":26.73},{"elementMeasurementTypeId":"TN","logIntervalId":2,"timeMeasured":"2021-07-29T22:00:00Z","value":10.24},{"elementMeasurementTypeId":"TX","logIntervalId":2,"timeMeasured":"2021-07-30T22:00:00Z","value":20.49},{"elementMeasurementTypeId":"TN","logIntervalId":2,"timeMeasured":"2021-07-30T22:00:00Z","value":14.59},{"elementMeasurementTypeId":"TX","logIntervalId":2,"timeMeasured":"2021-07-31T22:00:00Z","value":17.23},{"elementMeasurementTypeId":"TN","logIntervalId":2,"timeMeasured":"2021-07-31T22:00:00Z","value":13.04}]
\ No newline at end of file
Source diff could not be displayed: it is too large. Options to address this: view the blob.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment