[Git][debian-gis-team/saga][master] 4 commits: New upstream version 9.1.2+dfsg
Bas Couwenberg (@sebastic)
gitlab at salsa.debian.org
Wed Sep 13 04:33:47 BST 2023
Bas Couwenberg pushed to branch master at Debian GIS Project / saga
Commits:
3e6b2118 by Bas Couwenberg at 2023-09-13T05:17:54+02:00
New upstream version 9.1.2+dfsg
- - - - -
44237b7a by Bas Couwenberg at 2023-09-13T05:18:07+02:00
Update upstream source from tag 'upstream/9.1.2+dfsg'
Update to upstream version '9.1.2+dfsg'
with Debian dir 594ae4f63c3b1f0719930e350f870dff7500ce93
- - - - -
f98ac2b9 by Bas Couwenberg at 2023-09-13T05:19:29+02:00
New upstream releases.
- - - - -
c0649707 by Bas Couwenberg at 2023-09-13T05:20:04+02:00
Set distribution to unstable.
- - - - -
18 changed files:
- debian/changelog
- saga-gis/src/accessories/helper/doxygen_saga_api_chm
- saga-gis/src/accessories/helper/doxygen_saga_api_html
- saga-gis/src/accessories/helper/make_saga_release.bat
- saga-gis/src/saga_core/saga_api/saga_api.h
- saga-gis/src/saga_core/saga_api/table.cpp
- saga-gis/src/saga_core/saga_cmd/man/saga_cmd.1
- saga-gis/src/saga_core/saga_gui/man/saga_gui.1
- saga-gis/src/saga_core/saga_gui/wksp_grid.cpp
- saga-gis/src/saga_core/saga_gui/wksp_shapes_edit.cpp
- saga-gis/src/tools/grid/grid_tools/Grid_Shrink_Expand.cpp
- saga-gis/src/tools/imagery/imagery_opencv/opencv_canny.cpp
- saga-gis/src/tools/imagery/imagery_tools/landsat_scene_import.cpp
- saga-gis/src/tools/imagery/imagery_tools/landsat_scene_import.h
- saga-gis/src/tools/shapes/shapes_lines/line_split_with_lines.cpp
- saga-gis/src/tools/terrain_analysis/ta_lighting/SolarRadiation.cpp
- saga-gis/version.cmake
- saga_setup_x64.iss
Changes:
=====================================
debian/changelog
=====================================
@@ -1,11 +1,12 @@
-saga (9.1.1+dfsg-2) UNRELEASED; urgency=medium
+saga (9.1.2+dfsg-1) unstable; urgency=medium
* Team upload.
+ * New upstream releases.
* Use execute_{before,after} instead of override in rules file.
(closes: #1049309)
* Enable Salsa CI.
- -- Bas Couwenberg <sebastic at debian.org> Sun, 13 Aug 2023 15:01:42 +0200
+ -- Bas Couwenberg <sebastic at debian.org> Wed, 13 Sep 2023 05:19:55 +0200
saga (9.1.1+dfsg-1) unstable; urgency=medium
=====================================
saga-gis/src/accessories/helper/doxygen_saga_api_chm
=====================================
@@ -38,7 +38,7 @@ PROJECT_NAME = "SAGA API"
# could be handy for archiving the generated documentation or if some version
# control system is used.
-PROJECT_NUMBER = v9.1.1
+PROJECT_NUMBER = v9.1.2
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
@@ -58,7 +58,7 @@ PROJECT_LOGO = ../../../saga_core/saga_gui/res/saga_icon_64.png
# entered, it will be relative to the location where doxygen was started. If
# left blank the current directory will be used.
-OUTPUT_DIRECTORY = saga-9.1.1_api_doc
+OUTPUT_DIRECTORY = saga-9.1.2_api_doc
# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub-
# directories (in 2 levels) under the output directory of each output format and
@@ -1371,7 +1371,7 @@ GENERATE_HTMLHELP = YES
# written to the html output directory.
# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-CHM_FILE = ../../saga-9.1.1_api.chm
+CHM_FILE = ../../saga-9.1.2_api.chm
# The HHC_LOCATION tag can be used to specify the location (absolute path
# including file name) of the HTML help compiler (hhc.exe). If non-empty,
=====================================
saga-gis/src/accessories/helper/doxygen_saga_api_html
=====================================
@@ -38,7 +38,7 @@ PROJECT_NAME = "SAGA API"
# could be handy for archiving the generated documentation or if some version
# control system is used.
-PROJECT_NUMBER = v9.1.1
+PROJECT_NUMBER = v9.1.2
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
@@ -58,7 +58,7 @@ PROJECT_LOGO = ../../../saga_core/saga_gui/res/saga_icon_64.png
# entered, it will be relative to the location where doxygen was started. If
# left blank the current directory will be used.
-OUTPUT_DIRECTORY = saga-9.1.1_api_doc
+OUTPUT_DIRECTORY = saga-9.1.2_api_doc
# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub-
# directories (in 2 levels) under the output directory of each output format and
@@ -1371,7 +1371,7 @@ GENERATE_HTMLHELP = NO
# written to the html output directory.
# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-CHM_FILE = ../../saga-9.1.1_api.chm
+CHM_FILE = ../../saga-9.1.2_api.chm
# The HHC_LOCATION tag can be used to specify the location (absolute path
# including file name) of the HTML help compiler (hhc.exe). If non-empty,
=====================================
saga-gis/src/accessories/helper/make_saga_release.bat
=====================================
@@ -33,8 +33,8 @@ REM For all bug-fix-releases!
REM Don't forget to activate the variable
REM - SWITCH_TO_BRANCH -
SET SWITCH_TO_BRANCH=saga-9.1
-SET SAGA_VER_TEXT=9.1.1
-SET SAGA_VER_NEXT=9.1.1
+SET SAGA_VER_TEXT=9.1.2
+SET SAGA_VER_NEXT=9.1.3
SET SAGA_VERSION=saga-%SAGA_VER_TEXT%
=====================================
saga-gis/src/saga_core/saga_api/saga_api.h
=====================================
@@ -86,8 +86,8 @@
//---------------------------------------------------------
#define SAGA_MAJOR_VERSION 9
#define SAGA_MINOR_VERSION 1
-#define SAGA_RELEASE_NUMBER 1
-#define SAGA_VERSION SG_T("9.1.1")
+#define SAGA_RELEASE_NUMBER 2
+#define SAGA_VERSION SG_T("9.1.2")
///////////////////////////////////////////////////////////
=====================================
saga-gis/src/saga_core/saga_api/table.cpp
=====================================
@@ -1506,19 +1506,15 @@ public:
switch( m_pTable->Get_Field_Type(Field) )
{
default: {
- double d =
- m_pTable->Get_Record(a)->asDouble(Field) -
- m_pTable->Get_Record(b)->asDouble(Field);
-
+ double d = m_pTable->Get_Record(a)->asDouble(Field);
+ d -= m_pTable->Get_Record(b)->asDouble(Field);
Difference = d < 0. ? -1 : d > 0. ? 1 : 0;
} break;
case SG_DATATYPE_String:
case SG_DATATYPE_Date :
- Difference = SG_STR_CMP(
- m_pTable->Get_Record(a)->asString(Field),
- m_pTable->Get_Record(b)->asString(Field)
- );
+ CSG_String s (m_pTable->Get_Record(a)->asString(Field));
+ Difference = s.Cmp(m_pTable->Get_Record(b)->asString(Field));
break;
}
}
=====================================
saga-gis/src/saga_core/saga_cmd/man/saga_cmd.1
=====================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SAGA_CMD 1"
-.TH SAGA_CMD 1 "2021-07-07" "9.1.1" " "
+.TH SAGA_CMD 1 "2021-07-07" "9.1.2" " "
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
=====================================
saga-gis/src/saga_core/saga_gui/man/saga_gui.1
=====================================
@@ -124,7 +124,7 @@
.\" ========================================================================
.\"
.IX Title "SAGA_GUI 1"
-.TH SAGA_GUI 1 "2021-07-07" "9.1.1" " "
+.TH SAGA_GUI 1 "2021-07-07" "9.1.2" " "
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
=====================================
saga-gis/src/saga_core/saga_gui/wksp_grid.cpp
=====================================
@@ -1018,15 +1018,7 @@ bool CWKSP_Grid::Edit_On_Mouse_Up(const CSG_Point &Point, double ClientToWorld,
for(int x=0; x<nx; x++)
{
pRecord->Set_Value(0, m_ySel + ny - y);
-
- if( !Get_Grid()->is_NoData(m_xSel + x, m_ySel + ny - 1 - y) )
- {
- pRecord->Set_Value(1 + x, Get_Grid()->asDouble(m_xSel + x, m_ySel + ny - 1 - y));
- }
- else
- {
- pRecord->Set_NoData(1 + x);
- }
+ pRecord->Set_Value(1 + x, Get_Grid()->asDouble(m_xSel + x, m_ySel + ny - 1 - y));
}
}
}
=====================================
saga-gis/src/saga_core/saga_gui/wksp_shapes_edit.cpp
=====================================
@@ -672,7 +672,7 @@ bool CWKSP_Shapes::_Edit_Split(void)
{
CSG_Shape *pSplit = Get_Shapes()->Add_Shape(Split.Get_Shape(iSplit));
- ((CSG_Table_Record *)pSplit)->Assign(pSelection);
+ pSplit->Assign( pSelection, SHAPE_COPY_ATTR );
Get_Shapes()->Select(pSplit, true);
}
=====================================
saga-gis/src/tools/grid/grid_tools/Grid_Shrink_Expand.cpp
=====================================
@@ -166,9 +166,12 @@ int CGrid_Shrink_Expand::On_Parameters_Enable(CSG_Parameters *pParameters, CSG_P
pParameters->Set_Enabled("ITERATIVE", pParameter->asInt() > 0);
}
- if( pParameter->Cmp_Identifier("EXPAND") )
+ if( pParameter->Cmp_Identifier("EXPAND") || pParameter->Cmp_Identifier("RESULT") )
{
- pParameters->Set_Enabled("KEEP_TYPE", pParameter->asInt() == 2); // mean?!
+ pParameters->Set_Enabled("KEEP_TYPE",
+ (*pParameters)("EXPAND")->asInt() == 2 // expand mean?!
+ && (*pParameters)("RESULT")->asPointer() // create new target?!
+ );
}
return( CSG_Tool_Grid::On_Parameters_Enable(pParameters, pParameter) );
@@ -205,12 +208,15 @@ bool CGrid_Shrink_Expand::On_Execute(void)
{
Input.Create(*pInput); pResult = pInput; pInput = &Input;
}
-
- //-----------------------------------------------------
- if( pResult->Get_Type() != Type )
+ else
{
- pResult->Create(Get_System(), Type);
- pResult->Set_Name(pInput->Get_Name());
+ if( pResult->Get_Type() != Type )
+ {
+ pResult->Create(Get_System(), Type);
+ }
+
+ pResult->Set_Scaling(pInput->Get_Scaling(), pInput->Get_Offset());
+ pResult->Set_NoData_Value_Range(pInput->Get_NoData_Value(false), pInput->Get_NoData_Value(true));
}
//-----------------------------------------------------
@@ -522,13 +528,18 @@ bool CGrids_Shrink_Expand::On_Execute(void)
{
pResult->Create(Get_System(), pInput->Get_Attributes(), pInput->Get_Z_Attribute(), Type, true);
pResult->Set_Z_Name_Field(pInput->Get_Z_Name_Field());
- pResult->Set_Name(pInput->Get_Name());
+
+ if( Type == pInput->Get_Type() )
+ {
+ pResult->Set_Scaling(pInput->Get_Scaling(), pInput->Get_Offset());
+ pResult->Set_NoData_Value_Range(pInput->Get_NoData_Value(false), pInput->Get_NoData_Value(true));
+ }
}
//-----------------------------------------------------
for(int i=0; i<pInput->Get_NZ(); i++)
{
- Process_Set_Text(CSG_String::Format("%s %d/%d", _TL("processing"), i, pInput->Get_NZ()));
+ Process_Set_Text(CSG_String::Format("%s %d/%d", _TL("processing"), i + 1, pInput->Get_NZ()));
Do_Operation(pInput->Get_Grid_Ptr(i), pResult->Get_Grid_Ptr(i));
}
=====================================
saga-gis/src/tools/imagery/imagery_opencv/opencv_canny.cpp
=====================================
@@ -106,12 +106,13 @@ bool COpenCV_Canny::On_Execute(void)
cv::Mat Grid(Get_NY(), Get_NX(), CV_8U);
- unsigned char *data = (unsigned char *)Grid.data;
-
- #pragma omp parallel for
- for(sLong i=0; i<Get_NCells(); i++)
+ for(int y=0; y<Get_NY() && Process_Get_Okay(); y++)
{
- data[i] = (unsigned char)((pGrid->asDouble(i) - pGrid->Get_Min()) * 255 / pGrid->Get_Range());
+ #pragma omp parallel for
+ for(int x=0; x<Get_NX(); x++)
+ {
+ Grid.at<uchar>(y, x) = (unsigned char)((pGrid->asDouble(x, y) - pGrid->Get_Min()) * 255 / pGrid->Get_Range());
+ }
}
//-----------------------------------------------------
@@ -133,6 +134,8 @@ bool COpenCV_Canny::On_Execute(void)
pEdges->Fmt_Name("%s [%s]", pGrid->Get_Name(), Get_Name().c_str());
pEdges->Set_NoData_Value(0.);
+ unsigned char *data = (unsigned char *)Grid.data;
+
#pragma omp parallel for
for(sLong i=0; i<Get_NCells(); i++)
{
=====================================
saga-gis/src/tools/imagery/imagery_tools/landsat_scene_import.cpp
=====================================
@@ -234,34 +234,32 @@ int CLandsat_Scene_Import::On_Parameters_Enable(CSG_Parameters *pParameters, CSG
{
if( pParameter->Cmp_Identifier("METAFILE") )
{
- CSG_MetaData Info_Scene, Metadata;
- CSG_Table Info_Bands;
- CSG_Strings File_Bands;
+ CSG_MetaData Metadata, Info_Scene; CSG_Table Info_Bands; CSG_Strings File_Bands;
if( Load_Metadata(Metadata, pParameter->asString()) && Get_Info(Metadata, File_Bands, Info_Bands, Info_Scene) )
{
- int Sensor = Get_Info_Sensor(Metadata);
+ int Sensor = Get_Info_Sensor(Metadata);
- pParameters->Set_Enabled("SKIP_PAN" , Sensor == SENSOR_OLI_TIRS || Sensor == SENSOR_ETM);
- pParameters->Set_Enabled("SKIP_AEROSOL", Sensor == SENSOR_OLI_TIRS);
- pParameters->Set_Enabled("SKIP_CIRRUS" , Sensor == SENSOR_OLI_TIRS);
+ pParameters->Set_Enabled("SKIP_PAN" , Sensor >= SENSOR_ETM);
+ pParameters->Set_Enabled("SKIP_AEROSOL", Sensor >= SENSOR_OLI);
+ pParameters->Set_Enabled("SKIP_CIRRUS" , Sensor >= SENSOR_OLI);
- const CSG_Table_Record &Info_Band = Info_Bands[0];
+ const CSG_Table_Record &Info_Band = Info_Bands[0];
- bool bRadiance = (Info_Band.asString("RADIANCE_ADD") && Info_Band.asString("RADIANCE_MUL"))
- || (Info_Band.asString("L_MIN") && Info_Band.asString("QCAL_MIN")
- && Info_Band.asString("L_MAX") && Info_Band.asString("QCAL_MAX"));
+ bool bRadiance = (Info_Band.asString("RADIANCE_ADD") && Info_Band.asString("RADIANCE_MUL"))
+ || (Info_Band.asString("L_MIN") && Info_Band.asString("QCAL_MIN")
+ && Info_Band.asString("L_MAX") && Info_Band.asString("QCAL_MAX"));
- bool bReflectance = Info_Band.asString("REFLECTANCE_ADD") && Info_Band.asString("REFLECTANCE_MUL");
+ bool bReflectance = Info_Band.asString("REFLECTANCE_ADD") && Info_Band.asString("REFLECTANCE_MUL");
pParameters->Set_Enabled("CALIBRATION", bRadiance || bReflectance);
if( bRadiance || bReflectance )
{
- CSG_String Choices(_TL("none"));
+ CSG_String Choices(_TL("none"));
- if( bRadiance ) Choices += CSG_String("|") + _TL("radiance" );
- if( bReflectance ) Choices += CSG_String("|") + _TL("reflectance");
+ if( bRadiance ) Choices += CSG_String("|") + _TL("radiance" );
+ if( bReflectance ) Choices += CSG_String("|") + _TL("reflectance");
(*pParameters)("CALIBRATION")->asChoice()->Set_Items(Choices);
}
@@ -277,15 +275,15 @@ int CLandsat_Scene_Import::On_Parameters_Enable(CSG_Parameters *pParameters, CSG
if( pParameter->Cmp_Identifier("CALIBRATION") )
{
- pParameters->Set_Enabled("DATA_TYPE", pParameter->asInt() != 0);
- pParameters->Set_Enabled("TEMP_UNIT", pParameter->asInt() == 2);
+ pParameters->Set_Enabled("DATA_TYPE" , pParameter->asInt() != 0);
+ pParameters->Set_Enabled("TEMP_UNIT" , pParameter->asInt() == 2);
}
if( pParameter->Cmp_Identifier("PROJECTION") )
{
- pParameters->Set_Enabled("RESAMPLING", pParameter->asInt() >= 2);
- pParameters->Set_Enabled("UTM_ZONE" , pParameter->asInt() == 3);
- pParameters->Set_Enabled("UTM_SOUTH" , pParameter->asInt() == 3);
+ pParameters->Set_Enabled("RESAMPLING" , pParameter->asInt() >= 2);
+ pParameters->Set_Enabled("UTM_ZONE" , pParameter->asInt() == 3);
+ pParameters->Set_Enabled("UTM_SOUTH" , pParameter->asInt() == 3);
}
if( pParameter->Cmp_Identifier("EXTENT") )
@@ -310,7 +308,7 @@ int CLandsat_Scene_Import::On_Parameters_Enable(CSG_Parameters *pParameters, CSG
//---------------------------------------------------------
bool CLandsat_Scene_Import::On_Execute(void)
{
- CSG_MetaData Metadata;
+ CSG_MetaData Metadata;
if( !Load_Metadata(Metadata, Parameters("METAFILE")->asString()) )
{
@@ -320,16 +318,14 @@ bool CLandsat_Scene_Import::On_Execute(void)
}
//-----------------------------------------------------
- CSG_MetaData Info_Scene;
- CSG_Table Info_Bands;
- CSG_Strings File_Bands;
+ CSG_MetaData Info_Scene; CSG_Table Info_Bands; CSG_Strings File_Bands;
if( !Get_Info(Metadata, File_Bands, Info_Bands, Info_Scene) )
{
return( false );
}
- int Sensor = Get_Info_Sensor(Metadata);
+ int Sensor = Get_Info_Sensor(Metadata);
//-----------------------------------------------------
if( Parameters("BAND_INFO")->asTable() )
@@ -345,16 +341,16 @@ bool CLandsat_Scene_Import::On_Execute(void)
}
//-----------------------------------------------------
- CSG_String Path = SG_File_Get_Path(Parameters("METAFILE")->asString());
+ CSG_String Path = SG_File_Get_Path(Parameters("METAFILE")->asString());
- bool bMultiGrids = Parameters("MULTI2GRIDS")->asBool();
- int Calibration = Parameters("CALIBRATION")->asInt ();
+ bool bMultiGrids = Parameters("MULTI2GRIDS")->asBool();
+ int Calibration = Parameters("CALIBRATION")->asInt ();
- double SunHeight = -1;
+ double SunHeight = -1;
if( Info_Scene("SUN_ELEVATION") )
{
- SunHeight = Info_Scene["SUN_ELEVATION"].Get_Content().asDouble();
+ SunHeight = Info_Scene["SUN_ELEVATION"].Get_Content().asDouble();
}
//-----------------------------------------------------
@@ -404,7 +400,7 @@ bool CLandsat_Scene_Import::On_Execute(void)
DataObject_Add(pBand); DataObject_Set_Colors(pBand, 2, SG_COLORS_BLACK_WHITE);
}
- if( bMultiGrids && is_Multispectral(Sensor, i) && !is_Aerosol(Sensor, i) && !is_Cirrus(Sensor, i) )
+ if( bMultiGrids && is_Spectral(Sensor, i) && !is_Aerosol(Sensor, i) && !is_Cirrus(Sensor, i) )
{
if( pBands == NULL )
{
@@ -414,8 +410,6 @@ bool CLandsat_Scene_Import::On_Execute(void)
return( false );
}
-
- Parameters("BANDS")->asGridList()->Add_Item(pBands);
}
pBands->Add_Grid(Info_Bands[i], pBand, true);
@@ -434,6 +428,8 @@ bool CLandsat_Scene_Import::On_Execute(void)
pBands->Set_Description(Info_Scene.asText());
pBands->Set_Z_Attribute (4);
pBands->Set_Z_Name_Field(2);
+
+ Parameters("BANDS")->asGridList()->Add_Item(pBands);
}
//-----------------------------------------------------
@@ -446,13 +442,7 @@ bool CLandsat_Scene_Import::On_Execute(void)
///////////////////////////////////////////////////////////
//---------------------------------------------------------
-bool CLandsat_Scene_Import::is_Panchromatic(int Sensor, int Band)
-{
- return( (Sensor == SENSOR_ETM && Band == 8) || (Sensor == SENSOR_OLI_TIRS && Band == 7) );
-}
-
-//---------------------------------------------------------
-bool CLandsat_Scene_Import::is_Multispectral(int Sensor, int Band)
+bool CLandsat_Scene_Import::is_Spectral(int Sensor, int Band)
{
switch( Sensor )
{
@@ -465,7 +455,7 @@ bool CLandsat_Scene_Import::is_Multispectral(int Sensor, int Band)
case SENSOR_ETM:
return( Band != 5 && Band != 6 && Band != 8 );
- case SENSOR_OLI_TIRS:
+ case SENSOR_OLI: case SENSOR_OLI_TIRS:
return( Band != 7 && Band != 9 && Band != 10 );
}
@@ -473,21 +463,60 @@ bool CLandsat_Scene_Import::is_Multispectral(int Sensor, int Band)
}
//---------------------------------------------------------
-bool CLandsat_Scene_Import::is_Aerosol(int Sensor, int Band)
+bool CLandsat_Scene_Import::is_Thermal(int Sensor, int Band)
{
- return( (Sensor == SENSOR_OLI_TIRS && Band == 0) );
+ switch( Sensor )
+ {
+ case SENSOR_TM:
+ return( Band == 5 );
+
+ case SENSOR_ETM:
+ return( Band == 5 || Band == 6 );
+
+ case SENSOR_OLI_TIRS:
+ return( Band == 9 || Band == 10 );
+ }
+
+ return( false );
}
//---------------------------------------------------------
-bool CLandsat_Scene_Import::is_Cirrus(int Sensor, int Band)
+bool CLandsat_Scene_Import::is_Panchromatic(int Sensor, int Band)
{
- return( (Sensor == SENSOR_OLI_TIRS && Band == 8) );
+ switch( Sensor )
+ {
+ case SENSOR_ETM:
+ return( Band == 8 );
+
+ case SENSOR_OLI: case SENSOR_OLI_TIRS:
+ return( Band == 7 );
+ }
+
+ return( false );
}
//---------------------------------------------------------
-bool CLandsat_Scene_Import::is_Thermal(int Sensor, int Band)
+bool CLandsat_Scene_Import::is_Aerosol(int Sensor, int Band)
+{
+ switch( Sensor )
+ {
+ case SENSOR_OLI: case SENSOR_OLI_TIRS:
+ return( Band == 0 );
+ }
+
+ return( false );
+}
+
+//---------------------------------------------------------
+bool CLandsat_Scene_Import::is_Cirrus(int Sensor, int Band)
{
- return( !is_Panchromatic(Sensor, Band) && !is_Multispectral(Sensor, Band) );
+ switch( Sensor )
+ {
+ case SENSOR_OLI: case SENSOR_OLI_TIRS:
+ return( Band == 8 );
+ }
+
+ return( false );
}
@@ -498,14 +527,14 @@ bool CLandsat_Scene_Import::is_Thermal(int Sensor, int Band)
//---------------------------------------------------------
bool CLandsat_Scene_Import::Load_Metadata(CSG_MetaData &Metadata, const CSG_String &File)
{
- CSG_File Stream;
+ CSG_File Stream;
if( !Stream.Open(File, SG_FILE_R, false) )
{
return( false );
}
- CSG_String Line, Key, Value;
+ CSG_String Line, Key, Value;
if( !Stream.Read_Line(Line) || !Load_Metadata(Line, Key, Value) || Key.Cmp("GROUP") )
{
@@ -528,15 +557,15 @@ bool CLandsat_Scene_Import::Load_Metadata(CSG_MetaData &Metadata, const CSG_Stri
//---------------------------------------------------------
bool CLandsat_Scene_Import::Load_Metadata(const CSG_String &Line, CSG_String &Key, CSG_String &Value)
{
- Key = Line.BeforeFirst('='); Key.Trim(true); Key.Trim(false);
+ Key = Line.BeforeFirst('='); Key.Trim(true); Key.Trim(false);
if( !Key.is_Empty() )
{
- Value = Line.AfterFirst('='); Value.Trim(true); Value.Trim(false);
+ Value = Line.AfterFirst('='); Value.Trim(true); Value.Trim(false);
if( Value.Length() >= 2 && Value[0] == '\"' )
{
- Value = Value.Mid(1, Value.Length() - 2);
+ Value = Value.Mid(1, Value.Length() - 2);
}
return( !Value.is_Empty() );
@@ -564,13 +593,14 @@ int CLandsat_Scene_Import::Get_Info_Sensor(const CSG_MetaData &Metadata)
{
if( Metadata("SENSOR_ID") )
{
- CSG_String Sensor = Metadata["SENSOR_ID"].Get_Content();
-
- if( !Sensor.Cmp("MSS" ) ) return( SENSOR_MSS );
- if( !Sensor.Cmp("TM" ) ) return( SENSOR_TM );
- if( !Sensor.Cmp("ETM" ) ) return( SENSOR_ETM );
- if( !Sensor.Cmp("ETM+" ) ) return( SENSOR_ETM );
- if( !Sensor.Cmp("OLI_TIRS") ) return( SENSOR_OLI_TIRS );
+ CSG_String Sensor = Metadata["SENSOR_ID"].Get_Content();
+
+ if( !Sensor.Cmp("MSS" ) ) return( SENSOR_MSS );
+ if( !Sensor.Cmp("TM" ) ) return( SENSOR_TM );
+ if( !Sensor.Cmp("ETM" ) ) return( SENSOR_ETM );
+ if( !Sensor.Cmp("ETM+" ) ) return( SENSOR_ETM );
+ if( !Sensor.Cmp("OLI" ) ) return( SENSOR_OLI );
+ if( !Sensor.Cmp("OLI_TIRS") ) return( SENSOR_OLI_TIRS );
}
return( SENSOR_UNKNOWN );
@@ -609,7 +639,7 @@ struct SBand_Keys
//---------------------------------------------------------
enum EBand_Head
{
- BAND_HEAD_ID = 0,
+ BAND_HEAD_ID = 0,
BAND_HEAD_NR,
BAND_HEAD_NAME,
BAND_HEAD_WAVE_MIN,
@@ -667,7 +697,7 @@ struct SBand_Keys Band_Data[BAND_DATA_COUNT] =
//---------------------------------------------------------
bool CLandsat_Scene_Import::Get_Info(const CSG_MetaData &Metadata, CSG_Strings &File_Bands, CSG_Table &Info_Bands, CSG_MetaData &Info_Scene)
{
- int Version = Get_Info_Version(Metadata);
+ int Version = Get_Info_Version(Metadata);
if( Version == VERSION_UNKNOWN )
{
@@ -676,7 +706,7 @@ bool CLandsat_Scene_Import::Get_Info(const CSG_MetaData &Metadata, CSG_Strings &
return( false );
}
- int Sensor = Get_Info_Sensor(Metadata);
+ int Sensor = Get_Info_Sensor(Metadata);
if( Sensor == SENSOR_UNKNOWN )
{
@@ -707,12 +737,10 @@ bool CLandsat_Scene_Import::Get_Info(const CSG_MetaData &Metadata, CSG_Strings &
GET_INFO_SCENE(false, "ROLL_ANGLE" ); // MTL
//-----------------------------------------------------
- int iField;
-
Info_Bands.Destroy();
Info_Bands.Set_Name(_TL("Band Info"));
- for(iField=0; iField<BAND_HEAD_COUNT; iField++)
+ for(int iField=0; iField<BAND_HEAD_COUNT; iField++)
{
Info_Bands.Add_Field(
Band_Head[iField].Name,
@@ -720,11 +748,11 @@ bool CLandsat_Scene_Import::Get_Info(const CSG_MetaData &Metadata, CSG_Strings &
);
}
- bool bOkay[BAND_DATA_COUNT];
+ bool bOkay[BAND_DATA_COUNT];
- for(iField=0; iField<BAND_DATA_COUNT; iField++)
+ for(int iField=0; iField<BAND_DATA_COUNT; iField++)
{
- bOkay[iField] = false;
+ bOkay[iField] = false;
Info_Bands.Add_Field(
Band_Data[iField].Name,
@@ -733,31 +761,31 @@ bool CLandsat_Scene_Import::Get_Info(const CSG_MetaData &Metadata, CSG_Strings &
}
//-----------------------------------------------------
- const int Sensor_nBands[SENSOR_UNKNOWN] =
+ const int Sensor_nBands[SENSOR_UNKNOWN] =
{
- 4, 7, 9, 11
+ 4, 7, 9, 9, 11 // MSS, TM, ETM, OLI, OLI/TIRS
};
for(int Band=0; Band<Sensor_nBands[Sensor]; Band++)
{
- CSG_String Value;
+ CSG_String Value;
if( !Get_Info_Band(Metadata, Version, Sensor, Band, BAND_DATA_FILE, Value) )
{
return( false );
}
- File_Bands += Value;
+ File_Bands += Value;
- CSG_Table_Record &Info = *Info_Bands.Add_Record();
+ CSG_Table_Record &Info = *Info_Bands.Add_Record();
Set_Info_Band(Sensor, Band, Info); // set defaults
- for(iField=0; iField<BAND_DATA_COUNT; iField++)
+ for(int iField=0; iField<BAND_DATA_COUNT; iField++)
{
if( Get_Info_Band(Metadata, Version, Sensor, Band, iField, Value) )
{
- bOkay[iField] = true;
+ bOkay[iField] = true;
Info.Set_Value (BAND_HEAD_COUNT + iField, Value);
}
@@ -769,7 +797,7 @@ bool CLandsat_Scene_Import::Get_Info(const CSG_MetaData &Metadata, CSG_Strings &
}
//-----------------------------------------------------
- for(iField=BAND_DATA_COUNT-1; iField>=0; iField--)
+ for(int iField=BAND_DATA_COUNT-1; iField>=0; iField--)
{
if( !bOkay[iField] )
{
@@ -783,21 +811,21 @@ bool CLandsat_Scene_Import::Get_Info(const CSG_MetaData &Metadata, CSG_Strings &
//---------------------------------------------------------
bool CLandsat_Scene_Import::Get_Info_Band(const CSG_MetaData &Metadata, int Version, int Sensor, int Band, int Key, CSG_String &Value)
{
- CSG_String Name;
+ CSG_String Name;
if( Sensor == SENSOR_ETM )
{
switch( Band )
{
- case 0: Name = Version != VERSION_MTL_2 ? "BAND1" : "BAND_1" ; break;
- case 1: Name = Version != VERSION_MTL_2 ? "BAND2" : "BAND_2" ; break;
- case 2: Name = Version != VERSION_MTL_2 ? "BAND3" : "BAND_3" ; break;
- case 3: Name = Version != VERSION_MTL_2 ? "BAND4" : "BAND_4" ; break;
- case 4: Name = Version != VERSION_MTL_2 ? "BAND5" : "BAND_5" ; break;
- case 5: Name = Version != VERSION_MTL_2 ? "BAND61" : "BAND_6_VCID_1"; break;
- case 6: Name = Version != VERSION_MTL_2 ? "BAND62" : "BAND_6_VCID_2"; break;
- case 7: Name = Version != VERSION_MTL_2 ? "BAND7" : "BAND_7" ; break;
- case 8: Name = Version != VERSION_MTL_2 ? "BAND8" : "BAND_8" ; break;
+ case 0: Name = Version != VERSION_MTL_2 ? "BAND1" : "BAND_1" ; break;
+ case 1: Name = Version != VERSION_MTL_2 ? "BAND2" : "BAND_2" ; break;
+ case 2: Name = Version != VERSION_MTL_2 ? "BAND3" : "BAND_3" ; break;
+ case 3: Name = Version != VERSION_MTL_2 ? "BAND4" : "BAND_4" ; break;
+ case 4: Name = Version != VERSION_MTL_2 ? "BAND5" : "BAND_5" ; break;
+ case 5: Name = Version != VERSION_MTL_2 ? "BAND61" : "BAND_6_VCID_1"; break;
+ case 6: Name = Version != VERSION_MTL_2 ? "BAND62" : "BAND_6_VCID_2"; break;
+ case 7: Name = Version != VERSION_MTL_2 ? "BAND7" : "BAND_7" ; break;
+ case 8: Name = Version != VERSION_MTL_2 ? "BAND8" : "BAND_8" ; break;
}
}
else if( Sensor == SENSOR_MSS && Version == VERSION_MTL_2 )
@@ -810,7 +838,7 @@ bool CLandsat_Scene_Import::Get_Info_Band(const CSG_MetaData &Metadata, int Vers
}
//-----------------------------------------------------
- CSG_String Tag;
+ CSG_String Tag;
Tag.Printf(Key != BAND_DATA_FILE ? Band_Data[Key].Format : Version != VERSION_MTL_2
? "%s_FILE_NAME" : "FILE_NAME_%s", Name.c_str()
@@ -821,7 +849,7 @@ bool CLandsat_Scene_Import::Get_Info_Band(const CSG_MetaData &Metadata, int Vers
return( false );
}
- Value = Metadata[Tag].Get_Content();
+ Value = Metadata[Tag].Get_Content();
return( true );
}
@@ -829,7 +857,7 @@ bool CLandsat_Scene_Import::Get_Info_Band(const CSG_MetaData &Metadata, int Vers
//---------------------------------------------------------
bool CLandsat_Scene_Import::Set_Info_Band(int Sensor, int Band, CSG_Table_Record &Info)
{
- #define SET_INFO_BAND(band, name, wmin, wmax) {\
+ #define SET_INFO_BAND(band, name, wmin, wmax) {\
Info.Set_Value(BAND_HEAD_ID , 1 + (int)Info.Get_Index());\
Info.Set_Value(BAND_HEAD_NR , band);\
Info.Set_Value(BAND_HEAD_NAME , name);\
@@ -879,7 +907,7 @@ bool CLandsat_Scene_Import::Set_Info_Band(int Sensor, int Band, CSG_Table_Record
}
break;
- case SENSOR_OLI_TIRS:
+ case SENSOR_OLI: case SENSOR_OLI_TIRS:
switch( Band )
{
case 0: SET_INFO_BAND( 1, _TL("Coast & Aerosol"), 0.433, 0.453);
@@ -936,8 +964,8 @@ CSG_Grid * CLandsat_Scene_Import::Load_Grid(const CSG_String &File)
}
//-----------------------------------------------------
- CSG_Grid *pGrid = NULL;
- CSG_Tool *pTool = SG_Get_Tool_Library_Manager().Create_Tool("io_gdal", 0); // Import Raster
+ CSG_Grid *pGrid = NULL;
+ CSG_Tool *pTool = SG_Get_Tool_Library_Manager().Create_Tool("io_gdal", 0); // Import Raster
if( pTool && pTool->Set_Manager(NULL)
&& pTool->Set_Parameter("FILES" , File)
@@ -948,7 +976,7 @@ CSG_Grid * CLandsat_Scene_Import::Load_Grid(const CSG_String &File)
&& pTool->Set_Parameter("EXTENT_YMAX", Extent.Get_YMax())
&& pTool->Execute() )
{
- pGrid = pTool->Get_Parameter("GRIDS")->asGridList()->Get_Grid(0);
+ pGrid = pTool->Get_Parameter("GRIDS")->asGridList()->Get_Grid(0);
}
SG_Get_Tool_Library_Manager().Delete_Tool(pTool);
@@ -982,9 +1010,9 @@ CSG_Grid * CLandsat_Scene_Import::Load_Band(const CSG_String &File)
//-----------------------------------------------------
else if( Parameters("PROJECTION")->asInt() <= 1 ) // UTM
{
- CSG_Grid *pTmp = pBand;
+ CSG_Grid *pTmp = pBand;
- CSG_String Projection = pTmp->Get_Projection().Get_Proj4();
+ CSG_String Projection = pTmp->Get_Projection().Get_Proj4();
if( Projection.Find("+proj=utm") >= 0
&& ( (Projection.Find("+south") >= 0 && Parameters("PROJECTION")->asInt() == 0)
@@ -1021,7 +1049,7 @@ CSG_Grid * CLandsat_Scene_Import::Load_Band(const CSG_String &File)
//-----------------------------------------------------
else if( Parameters("PROJECTION")->asInt() == 2 ) // Geographic Coordinates
{
- CSG_Tool *pTool = SG_Get_Tool_Library_Manager().Create_Tool("pj_proj4", 4); // Coordinate Transformation (Grid)
+ CSG_Tool *pTool = SG_Get_Tool_Library_Manager().Create_Tool("pj_proj4", 4); // Coordinate Transformation (Grid)
if( pTool )
{
@@ -1037,7 +1065,7 @@ CSG_Grid * CLandsat_Scene_Import::Load_Band(const CSG_String &File)
{
delete(pBand);
- pBand = pTool->Get_Parameters()->Get_Parameter("GRID")->asGrid();
+ pBand = pTool->Get_Parameters()->Get_Parameter("GRID")->asGrid();
}
SG_Get_Tool_Library_Manager().Delete_Tool(pTool);
@@ -1054,7 +1082,7 @@ CSG_Grid * CLandsat_Scene_Import::Load_Band(const CSG_String &File)
if( !Projection.is_Equal(pBand->Get_Projection()) )
{
- CSG_Tool *pTool = SG_Get_Tool_Library_Manager().Create_Tool("pj_proj4", 4); // Coordinate Transformation (Grid)
+ CSG_Tool *pTool = SG_Get_Tool_Library_Manager().Create_Tool("pj_proj4", 4); // Coordinate Transformation (Grid)
if( pTool )
{
@@ -1071,7 +1099,7 @@ CSG_Grid * CLandsat_Scene_Import::Load_Band(const CSG_String &File)
{
delete(pBand);
- pBand = pTool->Get_Parameters()->Get_Parameter("GRID")->asGrid();
+ pBand = pTool->Get_Parameters()->Get_Parameter("GRID")->asGrid();
}
SG_Get_Tool_Library_Manager().Delete_Tool(pTool);
@@ -1106,19 +1134,19 @@ bool CLandsat_Scene_Import::Get_Float(CSG_Grid *pBand, CSG_Grid &DN)
bool CLandsat_Scene_Import::Get_Radiance(CSG_Grid *pBand, const CSG_Table_Record &Info_Band)
{
//-----------------------------------------------------
- double Offset, Scale, DNmin;
+ double Offset, Scale, DNmin;
if( Info_Band.asString("RADIANCE_ADD") && Info_Band.asString("RADIANCE_MUL") )
{
- DNmin = 0.;
- Offset = Info_Band.asDouble("RADIANCE_ADD");
- Scale = Info_Band.asDouble("RADIANCE_MUL");
+ DNmin = 0.;
+ Offset = Info_Band.asDouble("RADIANCE_ADD");
+ Scale = Info_Band.asDouble("RADIANCE_MUL");
}
else if( Info_Band.asString("L_MIN") && Info_Band.asString("L_MAX") && Info_Band.asString("QCAL_MIN") && Info_Band.asString("QCAL_MAX") )
{
- DNmin = Info_Band.asDouble("QCAL_MIN");
- Offset = Info_Band.asDouble("L_MIN");
- Scale = (Info_Band.asDouble("L_MAX") - Offset) / (Info_Band.asDouble("QCAL_MAX") - DNmin);
+ DNmin = Info_Band.asDouble("QCAL_MIN");
+ Offset = Info_Band.asDouble("L_MIN");
+ Scale = (Info_Band.asDouble("L_MAX") - Offset) / (Info_Band.asDouble("QCAL_MAX") - DNmin);
}
else
{
@@ -1128,7 +1156,7 @@ bool CLandsat_Scene_Import::Get_Radiance(CSG_Grid *pBand, const CSG_Table_Record
}
//-----------------------------------------------------
- CSG_Grid DN(*pBand);
+ CSG_Grid DN(*pBand);
if( Parameters("DATA_TYPE")->asInt() == 1 )
{
@@ -1136,7 +1164,7 @@ bool CLandsat_Scene_Import::Get_Radiance(CSG_Grid *pBand, const CSG_Table_Record
}
else
{
- double MaxVal = (pBand->Get_Type() == SG_DATATYPE_Byte ? 256 : 256*256) - 1;
+ double MaxVal = (pBand->Get_Type() == SG_DATATYPE_Byte ? 256 : 256*256) - 1;
pBand->Set_NoData_Value(MaxVal--);
pBand->Set_Scaling(1000. / MaxVal, 0.);
}
@@ -1165,12 +1193,12 @@ bool CLandsat_Scene_Import::Get_Radiance(CSG_Grid *pBand, const CSG_Table_Record
bool CLandsat_Scene_Import::Get_Reflectance(CSG_Grid *pBand, const CSG_Table_Record &Info_Band, double SunHeight)
{
//-----------------------------------------------------
- double Offset, Scale;
+ double Offset, Scale;
if( Info_Band.asString("REFLECTANCE_ADD") && Info_Band.asString("REFLECTANCE_MUL") )
{
- Offset = Info_Band.asDouble("REFLECTANCE_ADD");
- Scale = Info_Band.asDouble("REFLECTANCE_MUL");
+ Offset = Info_Band.asDouble("REFLECTANCE_ADD");
+ Scale = Info_Band.asDouble("REFLECTANCE_MUL");
}
else
{
@@ -1179,10 +1207,10 @@ bool CLandsat_Scene_Import::Get_Reflectance(CSG_Grid *pBand, const CSG_Table_Rec
return( false );
}
- SunHeight = sin(SunHeight * M_DEG_TO_RAD);
+ SunHeight = sin(SunHeight * M_DEG_TO_RAD);
//-----------------------------------------------------
- CSG_Grid DN(*pBand);
+ CSG_Grid DN(*pBand);
if( Parameters("DATA_TYPE")->asInt() == 1 )
{
@@ -1190,7 +1218,7 @@ bool CLandsat_Scene_Import::Get_Reflectance(CSG_Grid *pBand, const CSG_Table_Rec
}
else
{
- double MaxVal = (pBand->Get_Type() == SG_DATATYPE_Byte ? 256 : 256*256) - 1;
+ double MaxVal = (pBand->Get_Type() == SG_DATATYPE_Byte ? 256 : 256*256) - 1;
pBand->Set_NoData_Value(MaxVal--);
pBand->Set_Scaling(1. / MaxVal, 0.); // 0 to 1 (reflectance)
}
@@ -1207,7 +1235,7 @@ bool CLandsat_Scene_Import::Get_Reflectance(CSG_Grid *pBand, const CSG_Table_Rec
}
else
{
- double r = (Offset + Scale * DN.asDouble(i)) / SunHeight;
+ double r = (Offset + Scale * DN.asDouble(i)) / SunHeight;
pBand->Set_Value(i, r < 0. ? 0. : r > 1. ? 1. : r);
}
@@ -1227,16 +1255,16 @@ bool CLandsat_Scene_Import::Get_Temperature(CSG_Grid *pBand, const CSG_Table_Rec
return( false );
}
- double Offset = Info_Band.asDouble("RADIANCE_ADD");
- double Scale = Info_Band.asDouble("RADIANCE_MUL");
+ double Offset = Info_Band.asDouble("RADIANCE_ADD");
+ double Scale = Info_Band.asDouble("RADIANCE_MUL");
- double k1 = Info_Band.asDouble("THERMAL_K1");
- double k2 = Info_Band.asDouble("THERMAL_K2");
+ double k1 = Info_Band.asDouble("THERMAL_K1");
+ double k2 = Info_Band.asDouble("THERMAL_K2");
//-----------------------------------------------------
- CSG_Grid DN(*pBand);
+ CSG_Grid DN(*pBand);
- int Unit = Parameters("TEMP_UNIT")->asInt();
+ int Unit = Parameters("TEMP_UNIT")->asInt();
if( Parameters("DATA_TYPE")->asInt() == 1 )
{
@@ -1244,7 +1272,7 @@ bool CLandsat_Scene_Import::Get_Temperature(CSG_Grid *pBand, const CSG_Table_Rec
}
else
{
- double MaxVal = (pBand->Get_Type() == SG_DATATYPE_Byte ? 256 : 256*256) - 1;
+ double MaxVal = (pBand->Get_Type() == SG_DATATYPE_Byte ? 256 : 256*256) - 1;
pBand->Set_NoData_Value(MaxVal--);
pBand->Set_Scaling(100. / MaxVal, (Unit == 0 ? 273.15 : 0.) - 40.); // -40�C to 60�C
}
@@ -1261,7 +1289,7 @@ bool CLandsat_Scene_Import::Get_Temperature(CSG_Grid *pBand, const CSG_Table_Rec
}
else
{
- double r = Offset + Scale * DN.asDouble(i);
+ double r = Offset + Scale * DN.asDouble(i);
pBand->Set_Value(i, k2 / log(1. + (k1 / r)) - (Unit == 0 ? 0. : 273.15));
}
=====================================
saga-gis/src/tools/imagery/imagery_tools/landsat_scene_import.h
=====================================
@@ -71,6 +71,7 @@ enum
SENSOR_MSS = 0,
SENSOR_TM,
SENSOR_ETM,
+ SENSOR_OLI,
SENSOR_OLI_TIRS,
SENSOR_UNKNOWN
};
@@ -98,11 +99,11 @@ protected:
private:
+ bool is_Spectral (int Sensor, int Band);
+ bool is_Thermal (int Sensor, int Band);
bool is_Panchromatic (int Sensor, int Band);
- bool is_Multispectral (int Sensor, int Band);
bool is_Aerosol (int Sensor, int Band);
bool is_Cirrus (int Sensor, int Band);
- bool is_Thermal (int Sensor, int Band);
bool Load_Metadata (CSG_MetaData &Metadata, const CSG_String &File);
bool Load_Metadata (const CSG_String &Line, CSG_String &Key, CSG_String &Value);
=====================================
saga-gis/src/tools/shapes/shapes_lines/line_split_with_lines.cpp
=====================================
@@ -63,31 +63,31 @@ CLine_Split_with_Lines::CLine_Split_with_Lines(void)
Set_Author ("O. Conrad (c) 2014");
Set_Description (_TW(
- "Split Lines with Lines."
+ "The tool allows one to split lines with lines."
));
//-----------------------------------------------------
Parameters.Add_Shapes("",
"LINES" , _TL("Lines"),
- _TL(""),
+ _TL("The input lines to split."),
PARAMETER_INPUT , SHAPE_TYPE_Line
);
Parameters.Add_Shapes("",
"SPLIT" , _TL("Split Features"),
- _TL(""),
+ _TL("The lines with which the input lines are to be divided."),
PARAMETER_INPUT , SHAPE_TYPE_Line
);
Parameters.Add_Shapes("",
"INTERSECT" , _TL("Intersection"),
- _TL(""),
+ _TL("The splitted lines."),
PARAMETER_OUTPUT, SHAPE_TYPE_Line
);
Parameters.Add_Choice("",
"OUTPUT" , _TL("Output"),
- _TL(""),
+ _TL("Choose the output line type, either polylines or separate lines."),
CSG_String::Format("%s|%s",
_TL("polylines"),
_TL("separate lines")
@@ -221,31 +221,31 @@ CLine_Split_at_Points::CLine_Split_at_Points(void)
Set_Author ("O. Conrad (c) 2015");
Set_Description (_TW(
- "Split Lines at Points."
+ "The tool allows one to split lines at certain points. The points must be provided as point shapes."
));
//-----------------------------------------------------
Parameters.Add_Shapes("",
"LINES" , _TL("Lines"),
- _TL(""),
+ _TL("The input lines to split."),
PARAMETER_INPUT , SHAPE_TYPE_Line
);
Parameters.Add_Shapes("",
"SPLIT" , _TL("Split Features"),
- _TL(""),
+ _TL("The points at which the input lines are to be split."),
PARAMETER_INPUT , SHAPE_TYPE_Point
);
Parameters.Add_Shapes("",
"INTERSECT" , _TL("Intersection"),
- _TL(""),
+ _TL("The splitted lines."),
PARAMETER_OUTPUT, SHAPE_TYPE_Line
);
Parameters.Add_Choice("",
"OUTPUT" , _TL("Output"),
- _TL(""),
+ _TL("Choose the output line type, either polylines or separate lines."),
CSG_String::Format("%s|%s",
_TL("polylines"),
_TL("separate lines")
@@ -254,7 +254,7 @@ CLine_Split_at_Points::CLine_Split_at_Points(void)
Parameters.Add_Double("",
"EPSILON" , _TL("Epsilon"),
- _TL(""),
+ _TL("The tolerance used to find the point-line intersections [map units]."),
0., true
);
}
@@ -307,7 +307,7 @@ bool CLine_Split_at_Points::On_Execute(void)
if( Parameters("OUTPUT")->asInt() == 1 )
{
- for(int iPart=pLine->Get_Part_Count()-1; iPart>1; iPart--)
+ for(int iPart=pLine->Get_Part_Count()-1; iPart>0; iPart--)
{
CSG_Shape_Line *pAdd = (CSG_Shape_Line *)pIntersect->Add_Shape(pLine, SHAPE_COPY_ATTR); // only attributes
=====================================
saga-gis/src/tools/terrain_analysis/ta_lighting/SolarRadiation.cpp
=====================================
@@ -1053,7 +1053,7 @@ inline bool CSolarRadiation::Get_Shade_Params(double Sun_Height, double Sun_Azim
{
if( Sun_Height > 0. )
{
- dx = sin(dz); dy = cos(dz); dz = Sun_Azimuth + M_PI_180;
+ dz = Sun_Azimuth + M_PI_180; dx = sin(dz); dy = cos(dz);
if( fabs(dx) - fabs(dy) > EPSILON )
{
=====================================
saga-gis/version.cmake
=====================================
@@ -1,7 +1,7 @@
# The version number.
set (SAGA_VERSION_MAJOR 9)
set (SAGA_VERSION_MINOR 1)
-set (SAGA_VERSION_PATCH 1)
+set (SAGA_VERSION_PATCH 2)
# get git commit hash (or dirty if git is not installed)
=====================================
saga_setup_x64.iss
=====================================
@@ -1,5 +1,5 @@
-; To build installer (for example, saga-9.1.1_setup.exe).
-; - Unzip the SAGA binary files in their own folder (for example, saga-9.1.1.zip).
+; To build installer (for example, saga-9.1.2_setup.exe).
+; - Unzip the SAGA binary files in their own folder (for example, saga-9.1.2.zip).
; - Place saga.iss and saga_readme.rtf in the SAGA folder (contains saga_gui.exe, etc.).
; - Open saga.iss in Inno Setup.
; - Choose Build | Compile.
@@ -7,7 +7,7 @@
[Setup]
AppName=SAGA - System for Automated Geoscientific Analyses
-AppVerName=SAGA 9.1.1
+AppVerName=SAGA 9.1.2
ArchitecturesAllowed=x64
ArchitecturesInstallIn64BitMode=x64
@@ -22,9 +22,9 @@ Compression=lzma
SolidCompression=yes
OutputDir=.
-OutputBaseFilename=saga-9.1.1_x64_setup
+OutputBaseFilename=saga-9.1.2_x64_setup
-VersionInfoVersion=9.1.1.0
+VersionInfoVersion=9.1.2.0
VersionInfoCompany=SAGA User Group Association
VersionInfoCopyright=(c) 2005-2023 by O. Conrad
VersionInfoDescription=SAGA single-file installer
@@ -51,5 +51,5 @@ Name: "{commondesktop}\SAGA"; Filename: "{app}\saga_gui.exe"; WorkingDir: "{app}
Root: HKLM; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\saga_gui.exe"; ValueType: string; ValueName: ""; ValueData: "{app}\saga_gui.exe"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\saga_gui.exe"; ValueType: string; ValueName: "Path"; ValueData: "{app}"
-Root: HKLM; Subkey: "SOFTWARE\SAGA User Group Association\SAGA\9.1.1"; ValueType: string; ValueName: "InstallDir"; ValueData: "{app}"; Flags: uninsdeletekey
-Root: HKLM; Subkey: "SOFTWARE\SAGA User Group Association\SAGA\9.1.1"; ValueType: string; ValueName: "Version"; ValueData: "9.1.1.0"
+Root: HKLM; Subkey: "SOFTWARE\SAGA User Group Association\SAGA\9.1.2"; ValueType: string; ValueName: "InstallDir"; ValueData: "{app}"; Flags: uninsdeletekey
+Root: HKLM; Subkey: "SOFTWARE\SAGA User Group Association\SAGA\9.1.2"; ValueType: string; ValueName: "Version"; ValueData: "9.1.2.0"
View it on GitLab: https://salsa.debian.org/debian-gis-team/saga/-/compare/5c17a0b6b0982a05bb1d642bf7c11c315b235144...c0649707e3dc1ce27189139195bd24351384317a
--
View it on GitLab: https://salsa.debian.org/debian-gis-team/saga/-/compare/5c17a0b6b0982a05bb1d642bf7c11c315b235144...c0649707e3dc1ce27189139195bd24351384317a
You're receiving this email because of your account on salsa.debian.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/pkg-grass-devel/attachments/20230913/99806a48/attachment-0001.htm>
More information about the Pkg-grass-devel
mailing list