Skip to content

Commit

Permalink
Merge commit 'b795a0bf08e06b810573f9a85126b538cc80c55b'
Browse files Browse the repository at this point in the history
  • Loading branch information
ftomei committed Jul 9, 2024
2 parents a999321 + b795a0b commit 4d2f4b6
Show file tree
Hide file tree
Showing 13 changed files with 66 additions and 60 deletions.
26 changes: 11 additions & 15 deletions agrolib/gis/color.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,8 @@ Crit3DColorScale::Crit3DColorScale()

_minimum = NODATA;
_maximum = NODATA;
_isRangeBlocked = false;
_isFixedRange = false;
_isHideOutliers = false;

_classification = classificationMethod::EqualInterval;
}
Expand Down Expand Up @@ -179,11 +180,12 @@ bool setDTMScale(Crit3DColorScale* myScale)

bool setLAIScale(Crit3DColorScale* myScale)
{
myScale->initialize(3, 256);
myScale->initialize(4, 256);

myScale->keyColor[0] = Crit3DColor(200, 150, 0); /*!< ocra */
myScale->keyColor[1] = Crit3DColor(32, 150, 32); /*!< dark green */
myScale->keyColor[2] = Crit3DColor(0, 255, 0); /*!< green */
myScale->keyColor[0] = Crit3DColor(200, 160, 0); /*!< ocra */
myScale->keyColor[1] = Crit3DColor(160, 160, 0); /*!< yellow */
myScale->keyColor[2] = Crit3DColor(32, 160, 32); /*!< dark green */
myScale->keyColor[3] = Crit3DColor(0, 255, 0); /*!< green */

return(myScale->classify());
}
Expand All @@ -205,19 +207,13 @@ bool setTemperatureScale(Crit3DColorScale* myScale)

bool setSlopeStabilityScale(Crit3DColorScale* myScale)
{
myScale->initialize(11, 220);
myScale->initialize(5, 256);

myScale->keyColor[0] = Crit3DColor(128, 0, 128); /*!< violet */
myScale->keyColor[1] = Crit3DColor(255, 0, 0); /*!< red */
myScale->keyColor[2] = Crit3DColor(255, 255, 0); /*!< yellow */
myScale->keyColor[3] = Crit3DColor(128, 196, 0); /*!< yellow/green */
myScale->keyColor[4] = Crit3DColor(64, 196, 64); /*!< green */
myScale->keyColor[5] = Crit3DColor(64, 196, 64); /*!< green */
myScale->keyColor[6] = Crit3DColor(64, 196, 64); /*!< green */
myScale->keyColor[7] = Crit3DColor(64, 196, 64); /*!< green */
myScale->keyColor[8] = Crit3DColor(64, 196, 64); /*!< green */
myScale->keyColor[9] = Crit3DColor(64, 196, 64); /*!< green */
myScale->keyColor[10] = Crit3DColor(64, 196, 64); /*!< green */
myScale->keyColor[3] = Crit3DColor(196, 196, 32); /*!< yellow/green */
myScale->keyColor[4] = Crit3DColor(64, 196, 64); /*!< green */

return(myScale->classify());
}
Expand All @@ -239,7 +235,7 @@ bool setAnomalyScale(Crit3DColorScale* myScale)

bool setPrecipitationScale(Crit3DColorScale* myScale)
{
myScale->initialize(6, 256);
myScale->initialize(6, 252);

myScale->keyColor[0] = Crit3DColor(255, 255, 255); /*!< white */
myScale->keyColor[1] = Crit3DColor(0, 0, 255); /*!< blue */
Expand Down
21 changes: 13 additions & 8 deletions agrolib/gis/color.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,9 @@
private:
unsigned int _nrColors, _nrKeyColors;
std::vector<Crit3DColor> color;
float _minimum, _maximum;
bool _isRangeBlocked;
double _minimum, _maximum;
bool _isFixedRange;
bool _isHideOutliers;
int _classification;

public:
Expand All @@ -38,18 +39,22 @@
unsigned int nrColors() { return _nrColors; }
unsigned int nrKeyColors() { return _nrKeyColors; }

float minimum() { return _minimum; }
void setMinimum(float min) { _minimum = min; }
double minimum() { return _minimum; }
void setMinimum(double min) { _minimum = min; }

float maximum() { return _maximum; }
void setMaximum(float max) { _maximum = max; }
double maximum() { return _maximum; }
void setMaximum(double max) { _maximum = max; }

Crit3DColor* getColor(float myValue);
unsigned int getColorIndex(float myValue);

bool setRange(float minimum, float maximum);
void setRangeBlocked(bool blocked) { _isRangeBlocked = blocked; }
bool isRangeBlocked() { return _isRangeBlocked; }

void setFixedRange(bool fixedRange) { _isFixedRange = fixedRange; }
bool isFixedRange() { return _isFixedRange; }

void setHideOutliers(bool hideOutliers) { _isHideOutliers = hideOutliers; }
bool isHideOutliers() { return _isHideOutliers; }
};

bool setDefaultScale(Crit3DColorScale* myScale);
Expand Down
6 changes: 4 additions & 2 deletions agrolib/gis/gis.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -628,7 +628,7 @@ namespace gis
myGrid->maximum = maximum;
myGrid->minimum = minimum;

if (! myGrid->colorScale->isRangeBlocked())
if (! myGrid->colorScale->isFixedRange())
{
myGrid->colorScale->setRange(minimum, maximum);
}
Expand Down Expand Up @@ -1355,7 +1355,9 @@ namespace gis
c = -1;

float valueBoundary = rasterRef.getValueFromRowCol(row + r, col + c);
return isEqual(valueBoundary, rasterRef.header->flag);
bool isBoundary = isEqual(valueBoundary, rasterRef.header->flag);

return isBoundary;
}


Expand Down
15 changes: 9 additions & 6 deletions agrolib/graphics/colorLegend.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,12 @@ void ColorLegend::paintEvent(QPaintEvent *event)
{
Q_UNUSED(event)

if (this->colorScale == nullptr) return;
// check
if (this->colorScale == nullptr)
return;
if (isEqual(this->colorScale->minimum(), NODATA)
|| isEqual(this->colorScale->maximum(), NODATA)) return;
|| isEqual(this->colorScale->maximum(), NODATA))
return;

QPainter painter(this);
Crit3DColor* myColor;
Expand All @@ -36,14 +39,14 @@ void ColorLegend::paintEvent(QPaintEvent *event)
const int BLANK_DX = 16;
int legendWidth = painter.window().width() - BLANK_DX*2;
unsigned int nrStep = this->colorScale->nrColors();
float step = (colorScale->maximum() - colorScale->minimum()) / float(nrStep);
double step = (colorScale->maximum() - colorScale->minimum()) / double(nrStep);
double dx = double(legendWidth) / double(nrStep+1);
unsigned int stepText = MAXVALUE(nrStep / 4, 1);
QString valueStr;
int nrDigits;
double dblValue, shiftFatctor;

float value = this->colorScale->minimum();
double value = this->colorScale->minimum();
for (unsigned int i = 0; i <= nrStep; i++)
{
dblValue = double(value);
Expand All @@ -53,13 +56,13 @@ void ColorLegend::paintEvent(QPaintEvent *event)

if ((i % stepText) == 0)
{
if (isEqual(dblValue, 0))
if (fabs(dblValue) <= 1)
{
nrDigits = 1;
}
else
{
nrDigits = int(ceil(log10(abs(dblValue))));
nrDigits = int(ceil(log10(fabs(dblValue))));
}

// negative numbers
Expand Down
14 changes: 2 additions & 12 deletions agrolib/graphics/mapGraphicsRasterObject.cpp
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/*!
\file mapGraphicsRasterObject.cpp
\abstract draw raster in MapGraphics widget
\abstract draws a lat-lon raster in the MapGraphics widget
This file is part of CRITERIA-3D distribution.
Expand Down Expand Up @@ -73,16 +73,6 @@ void RasterObject::clear()
}


void RasterObject::setRaster(gis::Crit3DRasterGrid* rasterPtr)
{
rasterPointer = rasterPtr;
}

gis::Crit3DRasterGrid* RasterObject::getRaster()
{
return rasterPointer;
}

void RasterObject::setDrawing(bool value)
{
isDrawing = value;
Expand Down Expand Up @@ -381,7 +371,7 @@ bool RasterObject::drawRaster(gis::Crit3DRasterGrid *myRaster, QPainter* myPaint
}

// dynamic color scale
if (! myRaster->colorScale->isRangeBlocked())
if (! myRaster->colorScale->isFixedRange())
{
if (this->isLatLon)
{
Expand Down
6 changes: 4 additions & 2 deletions agrolib/graphics/mapGraphicsRasterObject.h
Original file line number Diff line number Diff line change
Expand Up @@ -79,8 +79,10 @@
const gis::Crit3DLatLonHeader& latLonHeader, bool isGrid_);
float getRasterMaxSize();
gis::Crit3DGeoPoint* getRasterCenter();
void setRaster(gis::Crit3DRasterGrid* rasterPtr);
gis::Crit3DRasterGrid* getRaster();

void setRaster(gis::Crit3DRasterGrid* rasterPtr) { rasterPointer = rasterPtr; }
gis::Crit3DRasterGrid* getRasterPointer() { return rasterPointer; }

void updateCenter();
Position getCurrentCenter();

Expand Down
16 changes: 12 additions & 4 deletions agrolib/graphics/mapGraphicsRasterUtm.cpp
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/*!
\file mapGraphicsRasterObject.cpp
\file mapGraphicsRasterUtm.cpp
\abstract draw raster in MapGraphics widget
\abstract draws a UTM raster in the MapGraphics widget
This file is part of CRITERIA-3D distribution.
Expand Down Expand Up @@ -29,6 +29,7 @@
#include "commonConstants.h"
#include "mapGraphicsRasterUtm.h"
#include "basicMath.h"
#include "color.h"

#include <math.h>
#include <QMenu>
Expand Down Expand Up @@ -326,7 +327,7 @@ bool RasterUtmObject::drawRaster(QPainter* painter)
}

// dynamic color scale
if (! _rasterPointer->colorScale->isRangeBlocked())
if (! _rasterPointer->colorScale->isFixedRange())
{
gis::updateColorScale(_rasterPointer, rasterWindow);
roundColorScale(_rasterPointer->colorScale, 4, true);
Expand Down Expand Up @@ -362,10 +363,17 @@ bool RasterUtmObject::drawRaster(QPainter* painter)
// raster value
float value = _rasterPointer->value[rowCenter][colCenter];

// skip the NODATA value
// check NODATA value (transparent)
if (isEqual(value, _rasterPointer->header->flag) || isEqual(value, NODATA))
continue;

// check outliers (transparent)
if (_rasterPointer->colorScale->isHideOutliers())
{
if (value < _rasterPointer->colorScale->minimum() || value > _rasterPointer->colorScale->maximum())
continue;
}

// set color
myColor = _rasterPointer->colorScale->getColor(value);
myQColor = QColor(myColor->red, myColor->green, myColor->blue);
Expand Down
2 changes: 1 addition & 1 deletion agrolib/graphics/mapGraphicsRasterUtm.h
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@
void setColorLegend(ColorLegend* colorLegendPtr) {_colorLegendPointer = colorLegendPtr;}
void setRaster(gis::Crit3DRasterGrid* rasterPtr) {_rasterPointer = rasterPtr;}

gis::Crit3DRasterGrid* getRaster() {return _rasterPointer;}
gis::Crit3DRasterGrid* getRasterPointer() {return _rasterPointer;}

float getValue(Position& pos);
float getRasterMaxSize();
Expand Down
6 changes: 3 additions & 3 deletions agrolib/interpolation/interpolation.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1625,7 +1625,7 @@ bool multipleDetrendingMain(std::vector <Crit3DInterpolationDataPoint> &myPoints

if (otherParameters[0].size() > 2)
{
for (int i = 0; i < (paramSize - 1); i++)
for (int i = 0; i < (int(paramSize) - 1); i++)
otherParameters[i] = otherParameters[i+1];
otherParameters.pop_back();
}
Expand Down Expand Up @@ -1771,7 +1771,7 @@ bool multipleDetrendingElevation(Crit3DProxyCombination elevationCombination, st
}
}

if (mySettings->getUseLocalDetrending() && elevationPoints.size() < mySettings->getMinPointsLocalDetrending())
if (mySettings->getUseLocalDetrending() && int(elevationPoints.size()) < mySettings->getMinPointsLocalDetrending())
{
elevationProxy->setIsSignificant(false);
Crit3DProxyCombination myCombination = mySettings->getSelectedCombination();
Expand Down Expand Up @@ -1999,7 +1999,7 @@ bool multipleDetrending(Crit3DProxyCombination othersCombination, std::vector<st
weights.push_back(myPoints[i].regressionWeight);
}

if (mySettings->getUseLocalDetrending() && othersPoints.size() < mySettings->getMinPointsLocalDetrending())
if (mySettings->getUseLocalDetrending() && int(othersPoints.size()) < mySettings->getMinPointsLocalDetrending())
{
Crit3DProxyCombination myCombination = mySettings->getCurrentCombination();
for (int pos = 1; pos < proxyNr; pos++)
Expand Down
4 changes: 2 additions & 2 deletions agrolib/interpolation/interpolationSettings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -316,7 +316,7 @@ void Crit3DInterpolationSettings::setFittingFunction(const std::vector<std::func

void Crit3DInterpolationSettings::addFittingFunction(const std::vector<std::function<double (double, std::vector<double> &)> > &newFittingFunction)
{
for (int i = 0; i < newFittingFunction.size(); i ++)
for (int i = 0; i < int(newFittingFunction.size()); i ++)
fittingFunction.push_back(newFittingFunction[i]);
}

Expand Down Expand Up @@ -482,7 +482,7 @@ Crit3DProxy* Crit3DInterpolationSettings::getProxy(unsigned pos)

int Crit3DInterpolationSettings::getProxyPosFromName(TProxyVar name)
{
for (int i = 0; i < getProxyNr(); i++)
for (int i = 0; i < int(getProxyNr()); i++)
{
if (getProxyPragaName(getProxyName(i)) == name)
return i;
Expand Down
4 changes: 2 additions & 2 deletions agrolib/proxyWidget/localProxyWidget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -538,7 +538,7 @@ void Crit3DLocalProxyWidget::modelLRClicked(int toggled)
for (int m = xMin; m < xMax; m += 5)
xVector.push_back(m);

for (int p = 0; p < xVector.size(); p++)
for (int p = 0; p < int(xVector.size()); p++)
{
point.setX(xVector[p]);
point.setY(lapseRatePiecewiseThree_withSlope(xVector[p], parameters[proxyPos]));
Expand Down Expand Up @@ -575,7 +575,7 @@ void Crit3DLocalProxyWidget::modelLRClicked(int toggled)
for (int m = xMin; m < xMax; m += 5)
xVector.push_back(m);

for (int p = 0; p < xVector.size(); p++)
for (int p = 0; p < int(xVector.size()); p++)
{
point.setX(xVector[p]);
point.setY(lapseRatePiecewiseFree(xVector[p], parameters[proxyPos]));
Expand Down
2 changes: 1 addition & 1 deletion agrolib/waterTable/importData.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,7 @@ bool loadWaterTableDepthCsv(const QString &csvFileName, std::vector<Well> &wellL
QString id = items[posId].remove(QChar('"'));
bool found = false;
int index = NODATA;
for (int i = 0; i < wellList.size(); i++)
for (int i = 0; i < int(wellList.size()); i++)
{
if (wellList[i].getId() == id)
{
Expand Down
4 changes: 2 additions & 2 deletions agrolib/waterTable/waterTable.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@ bool WaterTable::setMeteoData(QDate myDate, float tmin, float tmax, float prec)
{
int index = firstMeteoDate.daysTo(myDate);

if (index < etpValues.size() && index < precValues.size())
if (index < int(etpValues.size()) && index < int(precValues.size()))
{
Crit3DDate date = Crit3DDate(myDate.day(), myDate.month(), myDate.year());
etpValues[index] = dailyEtpHargreaves(tmin, tmax, date, well.getLatitude(), &meteoSettings);
Expand Down Expand Up @@ -283,7 +283,7 @@ double WaterTable::computeCWB(QDate myDate, int nrDays)
{
actualDate = myDate.addDays(-shift);
int index = firstMeteoDate.daysTo(actualDate);
if (index >= 0 && index < precValues.size())
if (index >= 0 && index < int(precValues.size()))
{
float etp = etpValues[index];
float prec = precValues[index];
Expand Down

0 comments on commit 4d2f4b6

Please sign in to comment.