From 9dec6f9e2502a2491786209a09b49562e40258f3 Mon Sep 17 00:00:00 2001 From: Atena Niazi Nasihati Date: Wed, 29 Jan 2025 13:30:10 +0100 Subject: [PATCH 1/3] in tooltip of Meteopoint add province and region --- graphics/stationMarker.cpp | 6 ++++-- graphics/stationMarker.h | 8 ++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/graphics/stationMarker.cpp b/graphics/stationMarker.cpp index 7faae038..24849d8d 100644 --- a/graphics/stationMarker.cpp +++ b/graphics/stationMarker.cpp @@ -31,11 +31,13 @@ void StationMarker::setToolTip() QString name = QString::fromStdString(_name); QString dataset = QString::fromStdString(_dataset); QString altitude = QString::number(_altitude); + QString region = QString::fromStdString(_region); + QString province = QString::fromStdString(_province); QString municipality = QString::fromStdString(_municipality); QString lapseRateName = QString::fromStdString(getLapseRateCodeName(_lapseRateCode)); - QString toolTipText = QString("Point: %1
ID: %2
dataset: %3
altitude: %4 m
municipality: %5
lapse rate code: %6") - .arg(name, idpoint, dataset, altitude, municipality, lapseRateName); + QString toolTipText = QString("Point: %1
ID: %2
dataset: %3
altitude: %4 m
region: %5
province: %6

municipality: %7

lapse rate code: %8") + .arg(name, idpoint, dataset, altitude, region, province, municipality, lapseRateName); double value = currentValue(); if (! isEqual(value, NODATA) || isMarked()) diff --git a/graphics/stationMarker.h b/graphics/stationMarker.h index c98841de..3a222741 100644 --- a/graphics/stationMarker.h +++ b/graphics/stationMarker.h @@ -38,6 +38,12 @@ void setLapseRateCode(lapseRateCodeType code) { _lapseRateCode = code; } + void setRegion(const std::string ®ion) + { _region = region; } + + void setProvince(const std::string &province) + { _province = province; } + void setMunicipality(const std::string &municipality) { _municipality = municipality; } @@ -48,6 +54,8 @@ std::string _id; std::string _name; std::string _dataset; + std::string _region; + std::string _province; std::string _municipality; double _altitude; From 53181149a30e1ee0a9fc1d35cd44b854dcf6d7ed Mon Sep 17 00:00:00 2001 From: Caterina Toscano Date: Thu, 30 Jan 2025 10:39:45 +0100 Subject: [PATCH 2/3] changed proxy graph --- project/project.cpp | 6 ++-- project/project.h | 2 +- proxyWidget/proxyWidget.cpp | 55 +++++++++++++++++++++++++++++++++++-- proxyWidget/proxyWidget.h | 4 ++- 4 files changed, 59 insertions(+), 8 deletions(-) diff --git a/project/project.cpp b/project/project.cpp index c8fe65a5..14c5e899 100644 --- a/project/project.cpp +++ b/project/project.cpp @@ -4384,7 +4384,7 @@ void Project::deleteProxyWidget() } -void Project::showProxyGraph() +void Project::showProxyGraph(int macroAreaNumber) { Crit3DMeteoPoint* meteoPointsSelected; int nSelected = 0; @@ -4397,7 +4397,7 @@ void Project::showProxyGraph() } if (nSelected == 0) { - proxyWidget = new Crit3DProxyWidget(&interpolationSettings, meteoPoints, nrMeteoPoints, currentFrequency, currentDate, currentHour, quality, &qualityInterpolationSettings, meteoSettings, &climateParameters, checkSpatialQuality); + proxyWidget = new Crit3DProxyWidget(&interpolationSettings, meteoPoints, nrMeteoPoints, currentFrequency, currentDate, currentHour, quality, &qualityInterpolationSettings, meteoSettings, &climateParameters, checkSpatialQuality, macroAreaNumber); } else { @@ -4411,7 +4411,7 @@ void Project::showProxyGraph() posMpSelected = posMpSelected + 1; } } - proxyWidget = new Crit3DProxyWidget(&interpolationSettings, meteoPointsSelected, nSelected, currentFrequency, currentDate, currentHour, quality, &qualityInterpolationSettings, meteoSettings, &climateParameters, checkSpatialQuality); + proxyWidget = new Crit3DProxyWidget(&interpolationSettings, meteoPointsSelected, nSelected, currentFrequency, currentDate, currentHour, quality, &qualityInterpolationSettings, meteoSettings, &climateParameters, checkSpatialQuality, macroAreaNumber); } QObject::connect(proxyWidget, SIGNAL(closeProxyWidget()), this, SLOT(deleteProxyWidget())); return; diff --git a/project/project.h b/project/project.h index 82ffb3cc..fbf6ad33 100644 --- a/project/project.h +++ b/project/project.h @@ -296,7 +296,7 @@ void showMeteoWidgetPoint(std::string idMeteoPoint, std::string namePoint, std::string dataset, double altitude, std::string lapseRateCode, bool isAppend); void showMeteoWidgetGrid(std::string idCell, bool isAppend); - void showProxyGraph(); + void showProxyGraph(int macroAreaNumber); void showLocalProxyGraph(gis::Crit3DGeoPoint myPoint); void clearSelectedPoints(); diff --git a/proxyWidget/proxyWidget.cpp b/proxyWidget/proxyWidget.cpp index 4140ec1c..53f4a917 100644 --- a/proxyWidget/proxyWidget.cpp +++ b/proxyWidget/proxyWidget.cpp @@ -11,8 +11,8 @@ #include -Crit3DProxyWidget::Crit3DProxyWidget(Crit3DInterpolationSettings* interpolationSettings, Crit3DMeteoPoint *meteoPoints, int nrMeteoPoints, frequencyType currentFrequency, QDate currentDate, int currentHour, Crit3DQuality *quality, Crit3DInterpolationSettings* SQinterpolationSettings, Crit3DMeteoSettings *meteoSettings, Crit3DClimateParameters *climateParam, bool checkSpatialQuality) -:interpolationSettings(interpolationSettings), meteoPoints(meteoPoints), nrMeteoPoints(nrMeteoPoints), currentFrequency(currentFrequency), currentDate(currentDate), currentHour(currentHour), quality(quality), SQinterpolationSettings(SQinterpolationSettings), meteoSettings(meteoSettings), climateParam(climateParam), checkSpatialQuality(checkSpatialQuality) +Crit3DProxyWidget::Crit3DProxyWidget(Crit3DInterpolationSettings* interpolationSettings, Crit3DMeteoPoint *meteoPoints, int nrMeteoPoints, frequencyType currentFrequency, QDate currentDate, int currentHour, Crit3DQuality *quality, Crit3DInterpolationSettings* SQinterpolationSettings, Crit3DMeteoSettings *meteoSettings, Crit3DClimateParameters *climateParam, bool checkSpatialQuality, int macroAreaNumber) + :interpolationSettings(interpolationSettings), meteoPoints(meteoPoints), nrMeteoPoints(nrMeteoPoints), currentFrequency(currentFrequency), currentDate(currentDate), currentHour(currentHour), quality(quality), SQinterpolationSettings(SQinterpolationSettings), meteoSettings(meteoSettings), climateParam(climateParam), checkSpatialQuality(checkSpatialQuality), macroAreaNumber(macroAreaNumber) { this->setWindowTitle("Proxy analysis over " + QString::number(nrMeteoPoints) + " points"); this->resize(1024, 700); @@ -380,6 +380,11 @@ void Crit3DProxyWidget::plot() { modelLRClicked(1); } + + if (macroAreaNumber != NODATA) + { + addMacroAreaLR(); + } } @@ -474,7 +479,7 @@ void Crit3DProxyWidget::modelLRClicked(int toggled) } lapseRate.setText(QString("%1").arg(regressionSlope*1000, 0, 'f', 2)); } - else if (interpolationSettings->getUseMultipleDetrending() && ! interpolationSettings->getUseLocalDetrending()) + else if (interpolationSettings->getUseMultipleDetrending() && ! interpolationSettings->getUseLocalDetrending() && ! interpolationSettings->getUseGlocalDetrending()) { std::string errorStr; @@ -541,3 +546,47 @@ void Crit3DProxyWidget::modelLRClicked(int toggled) } } +void Crit3DProxyWidget::addMacroAreaLR() +{ + //controllo is glocal ready viene fatto a monte + chartView->cleanModelLapseRate(); + r2.clear(); + lapseRate.clear(); + if (macroAreaNumber < interpolationSettings->getMacroAreas().size()) + { + std::string errorStr; + setMultipleDetrendingHeightTemperatureRange(interpolationSettings); + glocalDetrendingFitting(outInterpolationPoints, interpolationSettings, myVar,errorStr); + + //plot + std::vector> myParameters = interpolationSettings->getMacroAreas()[macroAreaNumber].getParameters(); + + if (myParameters.empty()) return; + if (myParameters.front().size() < 4) return; //elevation is not significant + + double xMin = getZmin(outInterpolationPoints); + double xMax = getZmax(outInterpolationPoints); + QList point_vector; + QPointF point; + + std::vector xVector; + for (int m = xMin; m < xMax; m += 5) + xVector.push_back(m); + + for (int p = 0; p < int(xVector.size()); p++) + { + point.setX(xVector[p]); + if (myParameters.front().size() == 4) + point.setY(lapseRatePiecewise_two(xVector[p], myParameters.front())); + else if (myParameters.front().size() == 5) + point.setY(lapseRatePiecewise_three(xVector[p], myParameters.front())); + else if (myParameters.front().size() == 6) + point.setY(lapseRatePiecewise_three_free(xVector[p], myParameters.front())); + point_vector.append(point); + } + + macroAreaNumber = NODATA; + chartView->drawModelLapseRate(point_vector); + } + return; +} diff --git a/proxyWidget/proxyWidget.h b/proxyWidget/proxyWidget.h index e8117e38..62c471d1 100644 --- a/proxyWidget/proxyWidget.h +++ b/proxyWidget/proxyWidget.h @@ -13,7 +13,7 @@ Q_OBJECT public: - Crit3DProxyWidget(Crit3DInterpolationSettings* interpolationSettings, Crit3DMeteoPoint* meteoPoints, int nrMeteoPoints, frequencyType currentFrequency, QDate currentDate, int currentHour, Crit3DQuality* quality, Crit3DInterpolationSettings* SQinterpolationSettings, Crit3DMeteoSettings *meteoSettings, Crit3DClimateParameters *climateParam, bool checkSpatialQuality); + Crit3DProxyWidget(Crit3DInterpolationSettings* interpolationSettings, Crit3DMeteoPoint* meteoPoints, int nrMeteoPoints, frequencyType currentFrequency, QDate currentDate, int currentHour, Crit3DQuality* quality, Crit3DInterpolationSettings* SQinterpolationSettings, Crit3DMeteoSettings *meteoSettings, Crit3DClimateParameters *climateParam, bool checkSpatialQuality, int macroAreaNumber); ~Crit3DProxyWidget(); void closeEvent(QCloseEvent *event); void updateDateTime(QDate newDate, int newHour); @@ -23,6 +23,7 @@ void plot(); void climatologicalLRClicked(int toggled); void modelLRClicked(int toggled); + void addMacroAreaLR(); private: Crit3DInterpolationSettings* interpolationSettings; @@ -47,6 +48,7 @@ ChartView *chartView; meteoVariable myVar; int proxyPos; + int macroAreaNumber; Crit3DTime getCurrentTime(); From 919ec2e8e91146c80cba2a48bda6c097254a65b1 Mon Sep 17 00:00:00 2001 From: ftomei Date: Thu, 30 Jan 2025 17:24:43 +0100 Subject: [PATCH 3/3] fix tooltip --- graphics/stationMarker.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/graphics/stationMarker.cpp b/graphics/stationMarker.cpp index 24849d8d..97828d5b 100644 --- a/graphics/stationMarker.cpp +++ b/graphics/stationMarker.cpp @@ -36,7 +36,8 @@ void StationMarker::setToolTip() QString municipality = QString::fromStdString(_municipality); QString lapseRateName = QString::fromStdString(getLapseRateCodeName(_lapseRateCode)); - QString toolTipText = QString("Point: %1
ID: %2
dataset: %3
altitude: %4 m
region: %5
province: %6

municipality: %7

lapse rate code: %8") + QString toolTipText = QString("Point: %1
ID: %2
dataset: %3
altitude: %4 m
" + "
municipality: %7
province: %6
region: %5

lapse rate code: %8") .arg(name, idpoint, dataset, altitude, region, province, municipality, lapseRateName); double value = currentValue();