Skip to content

Commit

Permalink
Merge commit 'a413700c4c03427718cc4f4f6c57c1bee4935aac'
Browse files Browse the repository at this point in the history
  • Loading branch information
ftomei committed Jan 31, 2025
2 parents b589c3e + a413700 commit 9432135
Show file tree
Hide file tree
Showing 5 changed files with 234 additions and 127 deletions.
163 changes: 84 additions & 79 deletions agrolib/criteriaModel/criteria1DProject.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ void Crit1DProject::initialize()

path = "";
projectName = "";
logFileName = "";
outputCsvFileName = "";
addDateTimeLogFile = false;

Expand Down Expand Up @@ -100,99 +99,105 @@ bool Crit1DProject::readSettings()
// PROJECT
projectSettings->beginGroup("project");

path += projectSettings->value("path", "").toString();
projectName = projectSettings->value("name", "CRITERIA1D").toString();
projectName = projectSettings->value("name", "CRITERIA1D").toString();
path += projectSettings->value("path", "").toString();

dbCropName = projectSettings->value("db_crop", "").toString();
if (dbCropName == "")
{
dbCropName = projectSettings->value("crop_db", "").toString();
}
if (dbCropName.left(1) == ".")
{
dbCropName = QDir::cleanPath(path + dbCropName);
}

dbSoilName = projectSettings->value("db_soil", "").toString();
if (dbSoilName == "")
{
dbSoilName = projectSettings->value("soil_db", "").toString();
}
if (dbSoilName.left(1) == ".")
{
dbSoilName = QDir::cleanPath(path + dbSoilName);
}

dbMeteoName = projectSettings->value("db_meteo", "").toString();
if (dbMeteoName.left(1) == ".")
{
dbMeteoName = QDir::cleanPath(path + dbMeteoName);
}
if (dbMeteoName.right(3).toUpper() == "XML")
{
isXmlMeteoGrid = true;
}
dbCropName = projectSettings->value("db_crop", "").toString();
if (dbCropName == "")
{
dbCropName = projectSettings->value("crop_db", "").toString();
}
if (dbCropName.left(1) == ".")
{
dbCropName = QDir::cleanPath(path + dbCropName);
}

dbForecastName = projectSettings->value("db_forecast", "").toString();
if (dbForecastName.left(1) == ".")
{
dbForecastName = QDir::cleanPath(path + dbForecastName);
}
dbSoilName = projectSettings->value("db_soil", "").toString();
if (dbSoilName == "")
{
dbSoilName = projectSettings->value("soil_db", "").toString();
}
if (dbSoilName.left(1) == ".")
{
dbSoilName = QDir::cleanPath(path + dbSoilName);
}

// computational units db
dbComputationUnitsName = projectSettings->value("db_comp_units", "").toString();
if (dbComputationUnitsName == "")
{
// check old name
dbComputationUnitsName = projectSettings->value("db_units", "").toString();
}
if (dbComputationUnitsName == "")
{
projectError = "Missing information on computational units";
return false;
}
if (dbComputationUnitsName.left(1) == ".")
{
dbComputationUnitsName = QDir::cleanPath(path + dbComputationUnitsName);
}
dbMeteoName = projectSettings->value("db_meteo", "").toString();
if (dbMeteoName.left(1) == ".")
{
dbMeteoName = QDir::cleanPath(path + dbMeteoName);
}
if (dbMeteoName.right(3).toUpper() == "XML")
{
isXmlMeteoGrid = true;
}

// output db
dbOutputName = projectSettings->value("db_output", "").toString();
if (dbOutputName.left(1) == ".")
{
dbOutputName = QDir::cleanPath(path + dbOutputName);
}
dbForecastName = projectSettings->value("db_forecast", "").toString();
if (dbForecastName.left(1) == ".")
{
dbForecastName = QDir::cleanPath(path + dbForecastName);
}

// date
if (firstSimulationDate == QDate(1800,1,1))
{
firstSimulationDate = projectSettings->value("firstDate",0).toDate();
if (! firstSimulationDate.isValid())
dbComputationUnitsName = projectSettings->value("db_comp_units", "").toString();
if (dbComputationUnitsName == "")
{
firstSimulationDate = projectSettings->value("first_date",0).toDate();
// checks the old name
dbComputationUnitsName = projectSettings->value("db_units", "").toString();
}
if (! firstSimulationDate.isValid())
if (dbComputationUnitsName == "")
{
firstSimulationDate = QDate(1800,1,1);
projectError = "Missing information on computational units";
return false;
}
if (dbComputationUnitsName.left(1) == ".")
{
dbComputationUnitsName = QDir::cleanPath(path + dbComputationUnitsName);
}
}

if (lastSimulationDate == QDate(1800,1,1))
{
lastSimulationDate = projectSettings->value("lastDate",0).toDate();
if (! lastSimulationDate.isValid())
// output db
dbOutputName = projectSettings->value("db_output", "").toString();
if (dbOutputName.left(1) == ".")
{
lastSimulationDate = projectSettings->value("last_date",0).toDate();
dbOutputName = QDir::cleanPath(path + dbOutputName);
}
if (! lastSimulationDate.isValid())

// first and last date
if (firstSimulationDate == QDate(1800,1,1))
{
lastSimulationDate = QDate(1800,1,1);
firstSimulationDate = projectSettings->value("firstDate",0).toDate();
if (! firstSimulationDate.isValid())
{
firstSimulationDate = projectSettings->value("first_date",0).toDate();
}
if (! firstSimulationDate.isValid())
{
firstSimulationDate = QDate(1800,1,1);
}
}
}

addDateTimeLogFile = projectSettings->value("add_date_to_log","").toBool();
isSaveState = projectSettings->value("save_state","").toBool();
isRestart = projectSettings->value("restart","").toBool();
if (lastSimulationDate == QDate(1800,1,1))
{
lastSimulationDate = projectSettings->value("lastDate",0).toDate();
if (! lastSimulationDate.isValid())
{
lastSimulationDate = projectSettings->value("last_date",0).toDate();
}
if (! lastSimulationDate.isValid())
{
lastSimulationDate = QDate(1800,1,1);
}
}

isSaveState = projectSettings->value("save_state","").toBool();
isRestart = projectSettings->value("restart","").toBool();

projectSettings->endGroup();

// SETTINGS
projectSettings->beginGroup("settings");
addDateTimeLogFile = projectSettings->value("add_date_to_log","").toBool();

// TODO computation depth

projectSettings->endGroup();

Expand Down
1 change: 0 additions & 1 deletion agrolib/criteriaModel/criteria1DProject.h
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,6 @@
std::vector<float> precSeries;

QString outputString;
QString logFileName;
QString outputCsvFileName;
std::ofstream outputCsvFile;

Expand Down
21 changes: 11 additions & 10 deletions agrolib/gdalHandler/gdalRasterFunctions.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -141,15 +141,7 @@ bool convertGdalRaster(GDALDataset* dataset, gis::Crit3DRasterGrid* myRaster, in
myRaster->header->cellSize = adfGeoTransform[1];
myRaster->header->llCorner.x = adfGeoTransform[0];
myRaster->header->llCorner.y = adfGeoTransform[3] - myRaster->header->cellSize * myRaster->header->nrRows;
if (dataType == "Float64")
{
qDebug() << "NODATA will be converted to " << NODATA;
myRaster->header->flag = float(NODATA);
}
else
{
myRaster->header->flag = float(nodataValue);
}
myRaster->header->flag = float(NODATA);

if (! myRaster->initializeGrid(myRaster->header->flag))
{
Expand Down Expand Up @@ -203,7 +195,16 @@ bool convertGdalRaster(GDALDataset* dataset, gis::Crit3DRasterGrid* myRaster, in
// set data
for (int row = 0; row < myRaster->header->nrRows; row++)
for (int col = 0; col < myRaster->header->nrCols; col++)
myRaster->value[row][col] = data[row*xSize+col];
{
if (data[row*xSize+col] == nodataValue)
{
myRaster->value[row][col] = myRaster->header->flag;
}
else
{
myRaster->value[row][col] = data[row*xSize+col];
}
}

// free memory
CPLFree(data);
Expand Down
Loading

0 comments on commit 9432135

Please sign in to comment.