Skip to content

Commit

Permalink
update colorscale
Browse files Browse the repository at this point in the history
  • Loading branch information
ftomei committed Jul 10, 2024
1 parent 19e68b6 commit 35dfd1f
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 38 deletions.
3 changes: 0 additions & 3 deletions agrolib/meteo/meteo.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -764,9 +764,6 @@ bool setColorScale(meteoVariable variable, Crit3DColorScale *colorScale)
{
if (colorScale == nullptr) return false;

colorScale->setFixedRange(false);
colorScale->setHideOutliers(false);

switch(variable)
{
case airTemperature: case dailyAirTemperatureAvg: case dailyAirTemperatureMax:
Expand Down
54 changes: 24 additions & 30 deletions bin/CRITERIA3D/mainwindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2356,7 +2356,8 @@ void MainWindow::on_actionCriteria3D_run_models_triggered()
}


void MainWindow::showCriteria3DVariable(criteria3DVariable var, int layerIndex, bool isFixedRange, double minimum, double maximum)
void MainWindow::showCriteria3DVariable(criteria3DVariable var, int layerIndex, bool isFixedRange,
bool isHideOutliers, double minimum, double maximum)
{
if (! myProject.isCriteria3DInitialized)
{
Expand Down Expand Up @@ -2412,27 +2413,26 @@ void MainWindow::showCriteria3DVariable(criteria3DVariable var, int layerIndex,
ui->labelOutputRaster->setText("Factor of safety [-]");
}

// set range
myProject.criteria3DMap.colorScale->setFixedRange(false);
myProject.criteria3DMap.colorScale->setHideOutliers(false);

// range fixed
if (isFixedRange)
{
myProject.criteria3DMap.colorScale->setRange(minimum, maximum);
myProject.criteria3DMap.colorScale->setFixedRange(true);
myProject.criteria3DMap.colorScale->setHideOutliers(true);
}
else
// hide outliers
if (isHideOutliers)
{
myProject.criteria3DMap.colorScale->setFixedRange(false);
myProject.criteria3DMap.colorScale->setHideOutliers(false);

if (! isEqual(minimum, NODATA) || ! isEqual(maximum, NODATA))
{
if (! isEqual(minimum, NODATA))
myProject.criteria3DMap.colorScale->setMinimum(minimum);
if (! isEqual(maximum, NODATA))
myProject.criteria3DMap.colorScale->setMaximum(maximum);

myProject.criteria3DMap.colorScale->setHideOutliers(true);
myProject.criteria3DMap.colorScale->setMaximum(maximum);
}
myProject.criteria3DMap.colorScale->setHideOutliers(true);
}

setCurrentRasterOutput(&(myProject.criteria3DMap));
Expand Down Expand Up @@ -3226,7 +3226,7 @@ void MainWindow::on_actionHide_Geomap_triggered()

void MainWindow::on_actionView_SurfaceWaterContent_automatic_range_triggered()
{
showCriteria3DVariable(volumetricWaterContent, 0, false, 0.1, NODATA);
showCriteria3DVariable(volumetricWaterContent, 0, false, true, 0.0, NODATA);
}


Expand All @@ -3244,41 +3244,41 @@ void MainWindow::on_actionView_SurfaceWaterContent_fixed_range_triggered()
if (valueStr == "") return;
maximum = valueStr.toFloat();

showCriteria3DVariable(volumetricWaterContent, 0, true, minimum, maximum);
showCriteria3DVariable(volumetricWaterContent, 0, true, false, minimum, maximum);
}


void MainWindow::on_actionView_SoilMoisture_triggered()
{
int layerIndex = std::max(1, ui->layerNrEdit->value());
showCriteria3DVariable(volumetricWaterContent, layerIndex, false, NODATA, NODATA);
showCriteria3DVariable(volumetricWaterContent, layerIndex, false, false, NODATA, NODATA);
}


void MainWindow::on_actionView_DegreeOfSaturation_automatic_range_triggered()
{
int layerIndex = ui->layerNrEdit->value();
showCriteria3DVariable(degreeOfSaturation, layerIndex, false, NODATA, NODATA);
showCriteria3DVariable(degreeOfSaturation, layerIndex, false, false, NODATA, NODATA);
}


void MainWindow::on_actionView_DegreeOfSaturation_fixed_range_triggered()
{
int layerIndex = ui->layerNrEdit->value();
showCriteria3DVariable(degreeOfSaturation, layerIndex, true, 0.2, 1.0);
showCriteria3DVariable(degreeOfSaturation, layerIndex, true, false, 0.1, 1.0);
}


void MainWindow::on_actionView_Factor_of_safety_triggered()
{
int layerIndex = std::max(1, ui->layerNrEdit->value());
showCriteria3DVariable(factorOfSafety, layerIndex, true, 0, 4);
showCriteria3DVariable(factorOfSafety, layerIndex, true, true, 0, 4);
}


void MainWindow::on_actionView_Factor_of_safety_minimum_triggered()
{
showCriteria3DVariable(minimumFactorOfSafety, NODATA, true, 0, 4);
showCriteria3DVariable(minimumFactorOfSafety, NODATA, true, true, 0, 4);
}


Expand Down Expand Up @@ -3314,19 +3314,13 @@ void MainWindow::on_layerNrEdit_valueChanged(int layerIndex)
QString depthStr = QString::number(myProject.layerDepth[layerIndex],'f',2);
ui->layerDepthEdit->setText(depthStr + " m");

if (view3DVariable && current3DlayerIndex != 0)
{
if (myProject.criteria3DMap.colorScale->isFixedRange())
{
showCriteria3DVariable(current3DVariable, layerIndex, true,
myProject.criteria3DMap.colorScale->minimum(),
myProject.criteria3DMap.colorScale->maximum());
}
else
{
showCriteria3DVariable(current3DVariable, layerIndex, false, NODATA, NODATA);
}
}
bool isRangeFixed = myProject.criteria3DMap.colorScale->isFixedRange();
bool isHideOutliers = myProject.criteria3DMap.colorScale->isHideOutliers();

showCriteria3DVariable(current3DVariable, layerIndex, isRangeFixed, isHideOutliers,
myProject.criteria3DMap.colorScale->minimum(),
myProject.criteria3DMap.colorScale->maximum());

}


Expand Down
3 changes: 2 additions & 1 deletion bin/CRITERIA3D/mainwindow.h
Original file line number Diff line number Diff line change
Expand Up @@ -337,7 +337,8 @@

void showMeteoVariable(meteoVariable var);
void showSnowVariable(meteoVariable var);
void showCriteria3DVariable(criteria3DVariable var, int layerIndex, bool isFixedRange, double minimum, double maximum);
void showCriteria3DVariable(criteria3DVariable var, int layerIndex, bool isFixedRange,
bool isHideOutliers, double minimum, double maximum);

bool setRadiationAsCurrentVariable();
bool startModels(QDateTime firstTime, QDateTime lastTime);
Expand Down
10 changes: 6 additions & 4 deletions bin/CRITERIA3D/shared/project3D.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -911,22 +911,24 @@ void Project3D::computeWaterBalance3D(double totalTimeStep)

soilFluxes3D::initializeBalance();

currentSeconds = 0; // [s]
double showTime = 30; // [s]
currentSeconds = 0; // [s]
double minimumShowTime = 10; // [s]
int currentStep = 0;
while (currentSeconds < totalTimeStep)
{
currentSeconds += soilFluxes3D::computeStep(totalTimeStep - currentSeconds);

if (showEachTimeStep)
{
if (currentSeconds < totalTimeStep && int(currentSeconds / showTime) > currentStep)
if (currentSeconds < totalTimeStep && int(currentSeconds / minimumShowTime) > currentStep)
{
currentStep = int(currentSeconds / showTime);
currentStep = int(currentSeconds / minimumShowTime);
emit updateOutputSignal();
}
}
}

// refresh
emit updateOutputSignal();

double runoff = soilFluxes3D::getBoundaryWaterSumFlow(BOUNDARY_RUNOFF);
Expand Down

0 comments on commit 35dfd1f

Please sign in to comment.