//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- // Create function that takes the dimensions and georeferencing of a raster // but then sets all data to value, setting the NoDataValues to // the NoData of the raster //=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- void LSDSoilHydroRaster::create(LSDRaster& OtherRaster, float value) { NRows = OtherRaster.get_NRows(); NCols = OtherRaster.get_NCols(); XMinimum = OtherRaster.get_XMinimum(); YMinimum = OtherRaster.get_YMinimum(); DataResolution = OtherRaster.get_DataResolution(); NoDataValue = OtherRaster.get_NoDataValue(); GeoReferencingStrings = OtherRaster.get_GeoReferencingStrings(); // set the raster data to be a certain value Array2D<float> data(NRows,NCols,NoDataValue); for (int row = 0; row <NRows; row++) { for (int col = 0; col<NCols; col++) { if (OtherRaster.get_data_element(row,col) != NoDataValue) { data[row][col] = value; //cout << value << endl; } } } RasterData = data.copy(); }
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- // Creates an LSDChiTools from an LSDRaster //=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- void LSDChiTools::create(LSDRaster& ThisRaster) { NRows = ThisRaster.get_NRows(); NCols = ThisRaster.get_NCols(); XMinimum = ThisRaster.get_XMinimum(); YMinimum = ThisRaster.get_YMinimum(); DataResolution = ThisRaster.get_DataResolution(); NoDataValue = ThisRaster.get_NoDataValue(); GeoReferencingStrings = ThisRaster.get_GeoReferencingStrings(); }
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- // // Create function that reads from a raster // //=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- void LSDRasterInfo::create(LSDRaster& Raster) { ///Number of rows. NRows = Raster.get_NRows(); NCols = Raster.get_NCols(); XMinimum = Raster.get_XMinimum(); YMinimum = Raster.get_YMinimum(); DataResolution = Raster.get_DataResolution(); NoDataValue = Raster.get_NoDataValue(); GeoReferencingStrings = Raster.get_GeoReferencingStrings(); }
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- // Create function that just copies a raster into the hydro raster //=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- void LSDSoilHydroRaster::create(LSDRaster& OtherRaster) { NRows = OtherRaster.get_NRows(); NCols = OtherRaster.get_NCols(); XMinimum = OtherRaster.get_XMinimum(); YMinimum = OtherRaster.get_YMinimum(); DataResolution = OtherRaster.get_DataResolution(); NoDataValue = OtherRaster.get_NoDataValue(); GeoReferencingStrings = OtherRaster.get_GeoReferencingStrings(); RasterData = OtherRaster.get_RasterData(); }
void LSDSoilHydroRaster::create(LSDRaster& DEM, LSDRaster& OtherRaster, int min_max) { NRows = OtherRaster.get_NRows(); NCols = OtherRaster.get_NCols(); XMinimum = OtherRaster.get_XMinimum(); YMinimum = OtherRaster.get_YMinimum(); DataResolution = OtherRaster.get_DataResolution(); NoDataValue = OtherRaster.get_NoDataValue(); GeoReferencingStrings = OtherRaster.get_GeoReferencingStrings(); // set the raster data to be a certain value Array2D<float> data(NRows,NCols,NoDataValue); float min_max_val = NoDataValue; if (min_max == 0){ // get the minimum value of OtherRaster Array2D<float> tmp = OtherRaster.get_RasterData(); min_max_val = Get_Minimum(tmp, NoDataValue); } else if (min_max == 1){ // get the maximum value of OtherRaster Array2D<float> tmp = OtherRaster.get_RasterData(); min_max_val = Get_Maximum(tmp, NoDataValue); } // for each cell, if there is no paramter data but there is topo, fill in the data with the minimum/maximum value // otherwise, just keep the minimum value. for (int i = 0; i < NRows; ++i){ for (int j = 0; j < NCols; ++j){ if (DEM.get_data_element(i, j) != NoDataValue && OtherRaster.get_data_element(i,j) == NoDataValue){ data[i][j] = min_max_val; } else if (DEM.get_data_element(i, j) != NoDataValue && OtherRaster.get_data_element(i, j) != NoDataValue){ data[i][j] = OtherRaster.get_data_element(i,j); } } } RasterData = data.copy(); }