[Git][debian-gis-team/saga][upstream] New upstream version 9.8.1+dfsg

Bas Couwenberg (@sebastic) gitlab at salsa.debian.org
Mon May 12 14:55:59 BST 2025



Bas Couwenberg pushed to branch upstream at Debian GIS Project / saga


Commits:
6a8f95cb by Bas Couwenberg at 2025-05-12T15:35:55+02:00
New upstream version 9.8.1+dfsg
- - - - -


29 changed files:

- 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/accessories/helper/saga_setup_x64.iss
- saga-gis/src/accessories/python/tools/climate_tools.py
- saga-gis/src/accessories/python/tools/io_webservices.py
- saga-gis/src/accessories/python/tools/ta_lighting.py
- saga-gis/src/saga_core/saga_api/mat_indexing.cpp
- saga-gis/src/saga_core/saga_api/mat_tools.h
- saga-gis/src/saga_core/saga_api/pointcloud.h
- 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/dlg_about.cpp
- saga-gis/src/saga_core/saga_gui/man/saga_gui.1
- saga-gis/src/saga_core/saga_gui/saga_frame.cpp
- saga-gis/src/saga_core/saga_gui/wksp_data_menu_file.cpp
- saga-gis/src/saga_core/saga_gui/wksp_grid.cpp
- saga-gis/src/saga_core/saga_gui/wksp_layer.cpp
- saga-gis/src/saga_core/saga_gui/wksp_layer.h
- saga-gis/src/saga_core/saga_gui/wksp_pointcloud.cpp
- saga-gis/src/saga_core/saga_gui/wksp_shapes.cpp
- saga-gis/src/saga_core/saga_gui/wksp_shapes_type.cpp
- saga-gis/src/saga_core/saga_gui/wksp_tool.cpp
- saga-gis/src/tools/imagery/imagery_tools/spot_scene_import.cpp
- saga-gis/src/tools/imagery/imagery_vigra/vigra_random_forest.cpp
- saga-gis/src/tools/projection/pj_georeference/Georef_Grid.cpp
- saga-gis/src/tools/visualization/vis_3d_viewer/3d_viewer_multiple_grids.cpp
- saga-gis/version.cmake


Changes:

=====================================
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.8.0 # omit patch number
+#PROJECT_NUMBER        = v9.8.1 # omit patch number
 PROJECT_NUMBER         = v9.8
 
 # Using the PROJECT_BRIEF tag one can provide an optional one line description
@@ -59,7 +59,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.8.0_api_doc
+OUTPUT_DIRECTORY       = saga-9.8.1_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
@@ -1372,7 +1372,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.8.0_api.chm
+CHM_FILE               = ../../saga-9.8.1_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.8.0 # omit patch number
+#PROJECT_NUMBER        = v9.8.1 # omit patch number
 PROJECT_NUMBER         = v9.8
 
 # Using the PROJECT_BRIEF tag one can provide an optional one line description
@@ -59,7 +59,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.8.0_api_doc
+OUTPUT_DIRECTORY       = saga-9.8.1_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
@@ -1372,7 +1372,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.8.0_api.chm
+CHM_FILE               = ../../saga-9.8.1_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
=====================================
@@ -30,15 +30,15 @@ REM ___________________________________
 REM Version
 
 SET SAGA_VERSION=9.8
-SET SAGA_RELEASE=9.8.0
-SET SAGA_VERSION_NEXT=9.9
-SET SAGA_RELEASE_NEXT=9.9.0
+SET SAGA_RELEASE=9.8.1
+SET SAGA_VERSION_NEXT=9.8
+SET SAGA_RELEASE_NEXT=9.8.2
 SET SAGA_RELEASE_NAME=saga-%SAGA_RELEASE%
 
 REM !!! For all bug-fix-releases !!!
 REM Don't forget to activate the variable
 REM - SWITCH_TO_BRANCH -
-REM SET SWITCH_TO_BRANCH=saga-%SAGA_VERSION%
+SET SWITCH_TO_BRANCH=saga-%SAGA_VERSION%
 
 
 REM ___________________________________


=====================================
saga-gis/src/accessories/helper/saga_setup_x64.iss
=====================================
@@ -1,5 +1,5 @@
-; To build installer (for example, saga-9.8.0_setup.exe).
-; - Unzip the SAGA binary files in their own folder (for example, saga-9.8.0.zip).
+; To build installer (for example, saga-9.8.1_setup.exe).
+; - Unzip the SAGA binary files in their own folder (for example, saga-9.8.1.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.8.0
+AppVerName=SAGA 9.8.1
 
 ArchitecturesAllowed=x64
 ArchitecturesInstallIn64BitMode=x64
@@ -22,9 +22,9 @@ Compression=lzma
 SolidCompression=yes
 
 OutputDir=.
-OutputBaseFilename=saga-9.8.0_x64_setup
+OutputBaseFilename=saga-9.8.1_x64_setup
 
-VersionInfoVersion=9.8.0.0
+VersionInfoVersion=9.8.1.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.8.0"; ValueType: string; ValueName: "InstallDir"; ValueData: "{app}"; Flags: uninsdeletekey
-Root: HKLM; Subkey: "SOFTWARE\SAGA User Group Association\SAGA\9.8.0"; ValueType: string; ValueName: "Version"; ValueData: "9.8.0.0"
+Root: HKLM; Subkey: "SOFTWARE\SAGA User Group Association\SAGA\9.8.1"; ValueType: string; ValueName: "InstallDir"; ValueData: "{app}"; Flags: uninsdeletekey
+Root: HKLM; Subkey: "SOFTWARE\SAGA User Group Association\SAGA\9.8.1"; ValueType: string; ValueName: "Version"; ValueData: "9.8.1.0"


=====================================
saga-gis/src/accessories/python/tools/climate_tools.py
=====================================
@@ -775,8 +775,8 @@ def Evapotranspiration_Grid(
     - SR_EST [`boolean`] : Estimate Solar Radiation. Default: 0 Estimate solar radiation from date, latitudinal position and sunshine duration as percentage of its potential maximum.
     - SUNSHINE [`floating point number`] : Sunshine Duration. Minimum: 0.000000 Maximum: 100.000000 Default: 50.000000 Daily sunshine duration as percentage of its potential maximum.
     - TIME [`choice`] : Time. Available Choices: [0] day [1] month Default: 0
-    - MONTH [`choice`] : Month. Available Choices: [0] January [1] February [2] March [3] April [4] May [5] June [6] July [7] August [8] September [9] October [10] November [11] December Default: 3
-    - DAY [`integer number`] : Day of Month. Minimum: 1 Maximum: 31 Default: 1
+    - MONTH [`choice`] : Month. Available Choices: [0] January [1] February [2] March [3] April [4] May [5] June [6] July [7] August [8] September [9] October [10] November [11] December Default: 4
+    - DAY [`integer number`] : Day of Month. Minimum: 1 Maximum: 31 Default: 12
     - LAT [`floating point number`] : Latitude. Minimum: -90.000000 Maximum: 90.000000 Default: 53.000000 [Degree]
 
     - Verbose [`integer number`] : Verbosity level, 0=silent, 1=tool name and success notification, 2=complete tool output.\n
@@ -860,8 +860,8 @@ def run_tool_climate_tools_8(
     - SR_EST [`boolean`] : Estimate Solar Radiation. Default: 0 Estimate solar radiation from date, latitudinal position and sunshine duration as percentage of its potential maximum.
     - SUNSHINE [`floating point number`] : Sunshine Duration. Minimum: 0.000000 Maximum: 100.000000 Default: 50.000000 Daily sunshine duration as percentage of its potential maximum.
     - TIME [`choice`] : Time. Available Choices: [0] day [1] month Default: 0
-    - MONTH [`choice`] : Month. Available Choices: [0] January [1] February [2] March [3] April [4] May [5] June [6] July [7] August [8] September [9] October [10] November [11] December Default: 3
-    - DAY [`integer number`] : Day of Month. Minimum: 1 Maximum: 31 Default: 1
+    - MONTH [`choice`] : Month. Available Choices: [0] January [1] February [2] March [3] April [4] May [5] June [6] July [7] August [8] September [9] October [10] November [11] December Default: 4
+    - DAY [`integer number`] : Day of Month. Minimum: 1 Maximum: 31 Default: 12
     - LAT [`floating point number`] : Latitude. Minimum: -90.000000 Maximum: 90.000000 Default: 53.000000 [Degree]
 
     - Verbose [`integer number`] : Verbosity level, 0=silent, 1=tool name and success notification, 2=complete tool output.\n
@@ -914,7 +914,7 @@ def Sunrise_and_Sunset(
     - SUNRISE [`output grid`] : Sunrise
     - SUNSET [`output grid`] : Sunset
     - LENGTH [`output grid`] : Day Length
-    - DAY [`date`] : Day of Month. Default: 2025-04-01
+    - DAY [`date`] : Day of Month. Default: 2025-05-13
     - TIME [`choice`] : Time. Available Choices: [0] local [1] world Default: 0
 
     - Verbose [`integer number`] : Verbosity level, 0=silent, 1=tool name and success notification, 2=complete tool output.\n
@@ -951,7 +951,7 @@ def run_tool_climate_tools_9(
     - SUNRISE [`output grid`] : Sunrise
     - SUNSET [`output grid`] : Sunset
     - LENGTH [`output grid`] : Day Length
-    - DAY [`date`] : Day of Month. Default: 2025-04-01
+    - DAY [`date`] : Day of Month. Default: 2025-05-13
     - TIME [`choice`] : Time. Available Choices: [0] local [1] world Default: 0
 
     - Verbose [`integer number`] : Verbosity level, 0=silent, 1=tool name and success notification, 2=complete tool output.\n
@@ -2449,7 +2449,7 @@ def PhenIps_Grids_Days(
     - YD_END_ONSET [`date`] : End of Breeding. Default: 2025-08-31
     - YD_END [`date`] : End of Development. Default: 2025-10-31
     - RESET [`boolean`] : Reset. Default: 1
-    - DAY [`date`] : Start Day. Default: 2025-04-01
+    - DAY [`date`] : Start Day. Default: 2025-05-13
 
     - Verbose [`integer number`] : Verbosity level, 0=silent, 1=tool name and success notification, 2=complete tool output.\n
     Returns
@@ -2570,7 +2570,7 @@ def run_tool_climate_tools_23(
     - YD_END_ONSET [`date`] : End of Breeding. Default: 2025-08-31
     - YD_END [`date`] : End of Development. Default: 2025-10-31
     - RESET [`boolean`] : Reset. Default: 1
-    - DAY [`date`] : Start Day. Default: 2025-04-01
+    - DAY [`date`] : Start Day. Default: 2025-05-13
 
     - Verbose [`integer number`] : Verbosity level, 0=silent, 1=tool name and success notification, 2=complete tool output.\n
     Returns
@@ -2653,7 +2653,7 @@ def Soil_Water_Balance_Days(
     - SWC_SURFACE [`floating point number`] : Top Soil Water Capacity. Minimum: 0.000000 Default: 30.000000
     - SWT_RESIST [`floating point number`] : Transpiration Resistance. Minimum: 0.010000 Default: 0.500000
     - RESET [`boolean`] : Reset. Default: 1
-    - DAY [`date`] : Start Day. Default: 2025-04-01
+    - DAY [`date`] : Start Day. Default: 2025-05-13
 
     - Verbose [`integer number`] : Verbosity level, 0=silent, 1=tool name and success notification, 2=complete tool output.\n
     Returns
@@ -2717,7 +2717,7 @@ def run_tool_climate_tools_24(
     - SWC_SURFACE [`floating point number`] : Top Soil Water Capacity. Minimum: 0.000000 Default: 30.000000
     - SWT_RESIST [`floating point number`] : Transpiration Resistance. Minimum: 0.010000 Default: 0.500000
     - RESET [`boolean`] : Reset. Default: 1
-    - DAY [`date`] : Start Day. Default: 2025-04-01
+    - DAY [`date`] : Start Day. Default: 2025-05-13
 
     - Verbose [`integer number`] : Verbosity level, 0=silent, 1=tool name and success notification, 2=complete tool output.\n
     Returns
@@ -3468,8 +3468,8 @@ def Daily_Solar_Radiation(
     ----------
     - LATITUDE [`input grid`] : Latitude. [Degree]
     - SOLARRAD [`output grid`] : Solar Radiation. [J/cm²]
-    - MONTH [`choice`] : Month. Available Choices: [0] January [1] February [2] March [3] April [4] May [5] June [6] July [7] August [8] September [9] October [10] November [11] December Default: 3
-    - DAY [`integer number`] : Day of Month. Minimum: 1 Maximum: 31 Default: 1
+    - MONTH [`choice`] : Month. Available Choices: [0] January [1] February [2] March [3] April [4] May [5] June [6] July [7] August [8] September [9] October [10] November [11] December Default: 4
+    - DAY [`integer number`] : Day of Month. Minimum: 1 Maximum: 31 Default: 12
     - SUNSHINE [`floating point number`] : Sunshine Duration. Minimum: 0.000000 Maximum: 100.000000 Default: 50.000000 Daily sunshine duration as percentage of its potential maximum.
 
     - Verbose [`integer number`] : Verbosity level, 0=silent, 1=tool name and success notification, 2=complete tool output.\n
@@ -3503,8 +3503,8 @@ def run_tool_climate_tools_31(
     ----------
     - LATITUDE [`input grid`] : Latitude. [Degree]
     - SOLARRAD [`output grid`] : Solar Radiation. [J/cm²]
-    - MONTH [`choice`] : Month. Available Choices: [0] January [1] February [2] March [3] April [4] May [5] June [6] July [7] August [8] September [9] October [10] November [11] December Default: 3
-    - DAY [`integer number`] : Day of Month. Minimum: 1 Maximum: 31 Default: 1
+    - MONTH [`choice`] : Month. Available Choices: [0] January [1] February [2] March [3] April [4] May [5] June [6] July [7] August [8] September [9] October [10] November [11] December Default: 4
+    - DAY [`integer number`] : Day of Month. Minimum: 1 Maximum: 31 Default: 12
     - SUNSHINE [`floating point number`] : Sunshine Duration. Minimum: 0.000000 Maximum: 100.000000 Default: 50.000000 Daily sunshine duration as percentage of its potential maximum.
 
     - Verbose [`integer number`] : Verbosity level, 0=silent, 1=tool name and success notification, 2=complete tool output.\n


=====================================
saga-gis/src/accessories/python/tools/io_webservices.py
=====================================
@@ -421,8 +421,8 @@ def USGS_Earthquake_Catalog(
     - SHAPES [`input shapes`] : Shapes
     - GRID [`optional input grid`] : Grid
     - EARTHQUAKES [`output shapes`] : Earthquakes
-    - DATE_START [`date`] : Start. Default: 2025-03-25
-    - DATE_END [`date`] : End. Default: 2025-04-01
+    - DATE_START [`date`] : Start. Default: 2025-05-06
+    - DATE_END [`date`] : End. Default: 2025-05-13
     - MAGNITUDE [`value range`] : Magnitude
     - EXTENT [`choice`] : Extent. Available Choices: [0] user defined [1] shapes extent [2] grid system extent Default: 0
     - GRID_SYSTEM [`grid system`] : Grid System
@@ -482,8 +482,8 @@ def run_tool_io_webservices_5(
     - SHAPES [`input shapes`] : Shapes
     - GRID [`optional input grid`] : Grid
     - EARTHQUAKES [`output shapes`] : Earthquakes
-    - DATE_START [`date`] : Start. Default: 2025-03-25
-    - DATE_END [`date`] : End. Default: 2025-04-01
+    - DATE_START [`date`] : Start. Default: 2025-05-06
+    - DATE_END [`date`] : End. Default: 2025-05-13
     - MAGNITUDE [`value range`] : Magnitude
     - EXTENT [`choice`] : Extent. Available Choices: [0] user defined [1] shapes extent [2] grid system extent Default: 0
     - GRID_SYSTEM [`grid system`] : Grid System


=====================================
saga-gis/src/accessories/python/tools/ta_lighting.py
=====================================
@@ -41,7 +41,7 @@ def Analytical_Hillshading(
     - POSITION [`choice`] : Sun's Position. Available Choices: [0] azimuth and height [1] date and time Default: 0
     - AZIMUTH [`floating point number`] : Azimuth. Minimum: 0.000000 Maximum: 360.000000 Default: 315.000000 Direction of the light source, measured in degree clockwise from the North direction.
     - DECLINATION [`floating point number`] : Height. Minimum: 0.000000 Maximum: 90.000000 Default: 45.000000 Height of the light source, measured in degree above the horizon.
-    - DATE [`date`] : Day. Default: 2025-04-01
+    - DATE [`date`] : Day. Default: 2025-05-13
     - TIME [`floating point number`] : Hour. Minimum: 0.000000 Maximum: 24.000000 Default: 12.000000
     - EXAGGERATION [`floating point number`] : Exaggeration. Default: 1.000000 The terrain exaggeration factor allows one to increase the shading contrasts in flat areas.
     - UNIT [`choice`] : Unit. Available Choices: [0] radians [1] degree Default: 0
@@ -99,7 +99,7 @@ def run_tool_ta_lighting_0(
     - POSITION [`choice`] : Sun's Position. Available Choices: [0] azimuth and height [1] date and time Default: 0
     - AZIMUTH [`floating point number`] : Azimuth. Minimum: 0.000000 Maximum: 360.000000 Default: 315.000000 Direction of the light source, measured in degree clockwise from the North direction.
     - DECLINATION [`floating point number`] : Height. Minimum: 0.000000 Maximum: 90.000000 Default: 45.000000 Height of the light source, measured in degree above the horizon.
-    - DATE [`date`] : Day. Default: 2025-04-01
+    - DATE [`date`] : Day. Default: 2025-05-13
     - TIME [`floating point number`] : Hour. Minimum: 0.000000 Maximum: 24.000000 Default: 12.000000
     - EXAGGERATION [`floating point number`] : Exaggeration. Default: 1.000000 The terrain exaggeration factor allows one to increase the shading contrasts in flat areas.
     - UNIT [`choice`] : Unit. Available Choices: [0] radians [1] degree Default: 0
@@ -193,8 +193,8 @@ def Potential_Incoming_Solar_Radiation(
     - LOCATION [`choice`] : Location. Available Choices: [0] constant latitude [1] calculate from grid system Default: 0
     - LATITUDE [`degree`] : Latitude. Minimum: -90.000000 Maximum: 90.000000 Default: 53.000000
     - PERIOD [`choice`] : Time Period. Available Choices: [0] moment [1] day [2] range of days Default: 1 Momentum output will be in units of power [W/m²], time span will be in units of energy, either [kWh/m²], [kJ/m²], or [J/cm²].
-    - DAY [`date`] : Day. Default: 2025-04-01
-    - DAY_STOP [`date`] : Last Day. Default: 2025-04-01
+    - DAY [`date`] : Day. Default: 2025-05-13
+    - DAY_STOP [`date`] : Last Day. Default: 2025-05-13
     - DAYS_STEP [`integer number`] : Resolution [d]. Minimum: 1 Default: 5 Time step size for a range of days calculation given in days.
     - MOMENT [`floating point number`] : Moment [h]. Minimum: 0.000000 Maximum: 24.000000 Default: 12.000000
     - HOUR_RANGE [`value range`] : Time Span [h]. Time span used for the calculation of daily radiation sums.
@@ -312,8 +312,8 @@ def run_tool_ta_lighting_2(
     - LOCATION [`choice`] : Location. Available Choices: [0] constant latitude [1] calculate from grid system Default: 0
     - LATITUDE [`degree`] : Latitude. Minimum: -90.000000 Maximum: 90.000000 Default: 53.000000
     - PERIOD [`choice`] : Time Period. Available Choices: [0] moment [1] day [2] range of days Default: 1 Momentum output will be in units of power [W/m²], time span will be in units of energy, either [kWh/m²], [kJ/m²], or [J/cm²].
-    - DAY [`date`] : Day. Default: 2025-04-01
-    - DAY_STOP [`date`] : Last Day. Default: 2025-04-01
+    - DAY [`date`] : Day. Default: 2025-05-13
+    - DAY_STOP [`date`] : Last Day. Default: 2025-05-13
     - DAYS_STEP [`integer number`] : Resolution [d]. Minimum: 1 Default: 5 Time step size for a range of days calculation given in days.
     - MOMENT [`floating point number`] : Moment [h]. Minimum: 0.000000 Maximum: 24.000000 Default: 12.000000
     - HOUR_RANGE [`value range`] : Time Span [h]. Time span used for the calculation of daily radiation sums.


=====================================
saga-gis/src/saga_core/saga_api/mat_indexing.cpp
=====================================
@@ -94,6 +94,27 @@ bool CSG_Index::Destroy(void)
 }
 
 
+///////////////////////////////////////////////////////////
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+bool CSG_Index::Invert(void)
+{
+	if( m_nValues > 0 )
+	{
+		for(sLong a=0, b=m_nValues-1; a<b; a++, b--)
+		{
+			sLong i = m_Index[a]; m_Index[a] = m_Index[b]; m_Index[b] = i;
+		}
+
+		return( true );
+	}
+
+	return( false );
+}
+
+
 ///////////////////////////////////////////////////////////
 //														 //
 ///////////////////////////////////////////////////////////


=====================================
saga-gis/src/saga_core/saga_api/mat_tools.h
=====================================
@@ -230,6 +230,8 @@ public:
 
 	bool						Destroy				(void);
 
+	bool						Invert				(void);
+
 	void						Show_Progress		(bool bProgress = true);
 
 	bool						Add_Entry			(sLong Position = -1);


=====================================
saga-gis/src/saga_core/saga_api/pointcloud.h
=====================================
@@ -183,6 +183,9 @@ public:
 	bool							Set_NoData			(sLong Index, int Field)				{	return( Set_Value(Index, Field, Get_NoData_Value()) );}
 	bool							is_NoData			(sLong Index, int Field)	const		{	return( is_NoData_Value(Get_Value(Index, Field)) );	}
 
+	virtual bool					Get_Value			(sLong Index, int Field, double        &Value)	const	{	Value = _Get_Field_Value(m_Points[Index], Field); return( Index >= 0 && Index < m_nRecords ); }
+	virtual bool					Get_Attribute		(sLong Index, int Field, double        &Value)	const	{	return( Get_Value(Index, Field + 3, Value) );	}
+
 	virtual bool					Set_Value			(             int Field, const SG_Char *Value)			{	return( _Set_Field_Value(m_Cursor, Field, Value) );	}
 	virtual bool					Get_Value			(             int Field, CSG_String    &Value)	const	{	return( _Get_Field_Value(m_Cursor, Field, Value) );	}
 	virtual bool					Set_Value			(sLong Index, int Field, const SG_Char *Value)			{	return( _Set_Field_Value(Index >= 0 && Index < m_nRecords ? m_Points[Index] : NULL, Field, Value) );	}


=====================================
saga-gis/src/saga_core/saga_api/saga_api.h
=====================================
@@ -86,8 +86,8 @@
 //---------------------------------------------------------
 #define SAGA_MAJOR_VERSION		9
 #define SAGA_MINOR_VERSION		8
-#define SAGA_RELEASE_NUMBER		0
-#define SAGA_VERSION			SG_T("9.8.0")
+#define SAGA_RELEASE_NUMBER		1
+#define SAGA_VERSION			SG_T("9.8.1")
 
 
 ///////////////////////////////////////////////////////////


=====================================
saga-gis/src/saga_core/saga_api/table.cpp
=====================================
@@ -639,10 +639,14 @@ bool CSG_Table::Set_Field_Type(int Field, TSG_Data_Type Type)
 		}
 		else if( pValue->Get_Type() == SG_TABLE_VALUE_TYPE_String && SG_Data_Type_is_Numeric(Type) )
 		{
-			if( !pRecord->m_Values[Field]->Set_Value(pValue->asString()) )
+			CSG_String String(pValue->asString()); double Value;
+
+			if( !String.asDouble(Value) )
 			{
-				pRecord->m_Values[Field]->Set_Value(Get_NoData_Value());
+				Value = Get_NoData_Value();
 			}
+
+			pRecord->m_Values[Field]->Set_Value(Value);
 		}
 		else
 		{
@@ -1406,21 +1410,25 @@ bool CSG_Table::Del_Index(void)
 }
 
 //---------------------------------------------------------
-bool CSG_Table::Toggle_Index(int iField)
+bool CSG_Table::Toggle_Index(int Field)
 {
-	if( iField < 0 || iField >= m_nFields )
+	if( Field < 0 || Field >= m_nFields )
 	{
 		return( false );
 	}
 
-	if( iField != Get_Index_Field(0) )
+	if( Field != Get_Index_Field(0) )
 	{
-		return( Set_Index(iField, TABLE_INDEX_Ascending) );
+		Del_Index();
+
+		return( Set_Index(Field, TABLE_INDEX_Ascending) );
 	}
 
 	if( Get_Index_Order(0) == TABLE_INDEX_Ascending )
 	{
-		return( Set_Index(iField, TABLE_INDEX_Descending) );
+		m_Index_Fields[0] = -m_Index_Fields[0]; m_Index.Invert();
+
+		return( true );
 	}
 
 	return( Del_Index() );
@@ -1456,20 +1464,16 @@ public:
 
 		switch( m_pTable->Get_Field_Type(m_Field) )
 		{
-		default: {
-			double d =
-				m_pTable->Get_Record(a)->asDouble(m_Field) -
-				m_pTable->Get_Record(b)->asDouble(m_Field);
-
-			return( d < 0. ? -1 : d > 0. ? 1 : 0 );
-		}
+		default: { double Value[2] = { 0., 0. };
+			m_pTable->Get_Value(a, m_Field, Value[0]);
+			m_pTable->Get_Value(b, m_Field, Value[1]);
+			return( Value[0] < Value[1] ? -1 : Value[0] > Value[1] ? 1 : 0 ); }
 
 		case SG_DATATYPE_String:
-		case SG_DATATYPE_Date  :
-			return( SG_STR_CMP(
-				m_pTable->Get_Record(a)->asString(m_Field),
-				m_pTable->Get_Record(b)->asString(m_Field))
-			);
+		case SG_DATATYPE_Date  : { CSG_String Value[2];
+			m_pTable->Get_Value(a, m_Field, Value[0]);
+			m_pTable->Get_Value(b, m_Field, Value[1]);
+			return( Value[0].Cmp(Value[1]) ); }
 		}
 	}
 
@@ -1537,28 +1541,29 @@ public:
 
 	virtual int			Compare		(const sLong _a, const sLong _b)
 	{
-		int	Difference	= 0;
+		int Difference = 0;
 
 		for(int i=0; !Difference && i<m_nFields; i++)
 		{
-			int	Field = m_Fields[i];
+			int Field = m_Fields[i];
 
 			sLong a = m_Ascending[i] ? _a : _b;
 			sLong b = m_Ascending[i] ? _b : _a;
 
 			switch( m_pTable->Get_Field_Type(Field) )
 			{
-			default: {
-				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;
+			default: { double Value[2] = { 0., 0. };
+				m_pTable->Get_Value(a, Field, Value[0]);
+				m_pTable->Get_Value(b, Field, Value[1]);
+				Difference = Value[0] < Value[1] ? -1 : Value[0] > Value[1] ? 1 : 0;
+				break; }
 
 			case SG_DATATYPE_String:
-			case SG_DATATYPE_Date  :
-				CSG_String   s    (m_pTable->Get_Record(a)->asString(Field));
-				Difference = s.Cmp(m_pTable->Get_Record(b)->asString(Field));
-				break;
+			case SG_DATATYPE_Date  : { CSG_String Value[2];
+				m_pTable->Get_Value(a, Field, Value[0]);
+				m_pTable->Get_Value(b, Field, Value[1]);
+				Difference = Value[0].Cmp(Value[1]);
+				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.8.0" " "
+.TH SAGA_CMD 1 "2021-07-07" "9.8.1" " "
 .\" 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/dlg_about.cpp
=====================================
@@ -178,22 +178,22 @@ wxString CDLG_About::_Get_Version(void)
 	#if defined(COMPILER)
 		if( *COMPILER )
 		{
-			s	+= "<hr><i>Compiled with</i><br>[ " COMPILER " ]<br>";
+			s += "<hr><i>Compiled with</i><br>[ " COMPILER " ]<br>";
 
 			#if defined(_SAGA_MSW) && defined(_MSC_VER) && _MSC_VER >= 1900
-				s	+= "[ Microsoft Visual Studio "
+				s += "[ Microsoft Visual Studio ";
 				#if   _MSC_VER == 1900
-					"2015 (14)"
-				#elif _MSC_VER <= 1920
-					"2017 (15)"
-				#elif _MSC_VER <= 1930
-					"2019 (16)"
-				#elif _MSC_VER <= 1940
-					"2022 (17)"
+					s += "2015 (14)";
+				#elif _MSC_VER >= 1910 && _MSC_VER < 1920
+					s += "2017 (15)";
+				#elif _MSC_VER >= 1920 && _MSC_VER < 1930
+					s += wxString::Format("2019 (16.%d)", _MSC_VER - 1920);
+				#elif _MSC_VER >= 1930 && _MSC_VER < 1950
+					s += wxString::Format("2022 (17.%d)", _MSC_VER - 1930);
 				#else
-					"(unknown version)"
+					s += "(unknown version)";
 				#endif
-				" ]<br>";
+				s += " ]<br>";
 			#endif
 		}
 	#endif


=====================================
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.8.0" " "
+.TH SAGA_GUI 1 "2021-07-07" "9.8.1" " "
 .\" 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/saga_frame.cpp
=====================================
@@ -1249,13 +1249,21 @@ wxMenuBar * CSAGA_Frame::_Create_MenuBar(void)
 	//-----------------------------------------------------
 	wxMenuBar *pMenuBar = new wxMenuBar;
 
-	pMenuBar->Append(g_pData ->Get_Menu_Files()->Get_Menu(), _TL("File"         ));	// 0
-	pMenuBar->Append(g_pTools->Get_Menu_Tools()            , _TL("Geoprocessing"));	// 1
-	pMenuBar->Append(pMenu_Window                          , _TL("Window"       ));	// 2
-	pMenuBar->Append(pMenu_Help                            , _TL("?"            ));	// 3
+#if defined(__WXMAC__)
+	wxMenu *OSX_pMenu_Window = pMenu_Window; pMenu_Window = new wxMenu;
+#endif
+
+	pMenuBar->Append(g_pData ->Get_Menu_Files()->Get_Menu(), _TL("File"         )); // 0
+	pMenuBar->Append(g_pTools->Get_Menu_Tools()            , _TL("Geoprocessing")); // 1
+	pMenuBar->Append(pMenu_Window                          , _TL("Window"       )); // 2
+	pMenuBar->Append(pMenu_Help                            , _TL("?"            )); // 3
 
 	SetMenuBar(pMenuBar);
 
+#if defined(__WXMAC__)
+	pMenuBar->Replace(2, OSX_pMenu_Window                  , _TL("Window"       )); // 2
+#endif
+
 	return( pMenuBar );
 }
 


=====================================
saga-gis/src/saga_core/saga_gui/wksp_data_menu_file.cpp
=====================================
@@ -210,7 +210,7 @@ void CWKSP_Data_Menu_File::Update(void)
 	//-----------------------------------------------------
 	else
 	{
-		if( m_pMenu->GetMenuItemCount() == m_Offset )
+		if( m_pMenu->GetMenuItemCount() == m_Offset && m_Offset > 0 )
 		{
 			m_pMenu->AppendSeparator();
 		}


=====================================
saga-gis/src/saga_core/saga_gui/wksp_grid.cpp
=====================================
@@ -824,17 +824,17 @@ void CWKSP_Grid::_LUT_Create(void)
 				Colors.Set_Count(Get_Grid()->Get_NCells());
 			}
 
-			double	Minimum, Maximum	= Get_Grid()->Get_Histogram().Get_Quantile(0.);
+			double Minimum, Maximum = Get_Grid()->Get_Min();
 
 			for(int iClass=0; iClass<Colors.Get_Count(); iClass++)
 			{
-				Minimum	= Maximum;
-				Maximum	= Get_Grid()->Get_Histogram().Get_Quantile((1. + iClass) / Colors.Get_Count());
+				Minimum	= Maximum; double Quantile = (1. + iClass) / (double)Colors.Get_Count();
+				Maximum	= Get_Grid()->Get_Histogram().Get_Quantile(Quantile);
 
-				CSG_String	Name	= SG_Get_String(Minimum, -2)
-							+ " - " + SG_Get_String(Maximum, -2);
+				CSG_String Name = SG_Get_String(Minimum, -2)
+				        + " - " + SG_Get_String(Maximum, -2);
 
-				CSG_Table_Record	*pClass	= Classes.Add_Record();
+				CSG_Table_Record *pClass = Classes.Add_Record();
 
 				pClass->Set_Value(0, Colors[iClass]);	// Color
 				pClass->Set_Value(1, Name          );	// Name


=====================================
saga-gis/src/saga_core/saga_gui/wksp_layer.cpp
=====================================
@@ -965,7 +965,8 @@ bool CWKSP_Layer::Set_Colors(CSG_Colors *pColors)
 //---------------------------------------------------------
 bool CWKSP_Layer::Set_Color_Range(double Minimum, double Maximum)
 {
-	m_Parameters.Set_Parameter("STRETCH_DEFAULT"  , 3);	// manual
+	m_Parameters.Set_Parameter("COLORS_TYPE"      , CLASSIFY_GRADUATED);
+	m_Parameters.Set_Parameter("STRETCH_DEFAULT"  , _TL("Manual"));	// manual
 	m_Parameters.Set_Parameter("METRIC_ZRANGE.MIN", Minimum < Maximum ? Minimum : Maximum);
 	m_Parameters.Set_Parameter("METRIC_ZRANGE.MAX", Minimum < Maximum ? Maximum : Minimum);
 
@@ -1093,12 +1094,6 @@ bool CWKSP_Layer::Show(int Flags)
 	return( false );
 }
 
-//---------------------------------------------------------
-bool CWKSP_Layer::Update(CWKSP_Layer *pChanged)
-{
-	return( pChanged == this );
-}
-
 //---------------------------------------------------------
 void CWKSP_Layer::On_Update_Views(bool bAll)
 {


=====================================
saga-gis/src/saga_core/saga_gui/wksp_layer.h
=====================================
@@ -107,7 +107,6 @@ public:
 
 	virtual bool					Show					(class CWKSP_Map *pMap);
 	virtual bool					Show					(int Flags = 0);
-	virtual bool					Update					(CWKSP_Layer *pChanged);
 	virtual bool					View_Closes				(class MDI_ChildFrame *pView);
 	virtual bool					asImage					(CSG_Grid *pImage)		{	return( false );	}
 


=====================================
saga-gis/src/saga_core/saga_gui/wksp_pointcloud.cpp
=====================================
@@ -473,14 +473,14 @@ void CWKSP_PointCloud::On_Parameters_Changed(void)
 
 		m_pClassify->Set_Mode(CLASSIFY_SINGLE);
 	}
-	else if( m_Parameters("COLORS_TYPE")->asInt() == CLASSIFY_OVERLAY )
+	else if( m_Parameters("COLORS_TYPE")->asInt() == 4 ) // CLASSIFY_RGB
 	{
 		m_pClassify->Set_Mode(CLASSIFY_RGB);
 	}
 
+	//-----------------------------------------------------
 	m_pObject->Set_Max_Samples(Get_PointCloud()->Get_Count() * (m_Parameters("MAX_SAMPLES")->asDouble() / 100.) );
 
-	//-----------------------------------------------------
 	long DefColor = m_Parameters("SINGLE_COLOR")->asColor();
 	m_Color_Pen   = wxColour(SG_GET_R(DefColor), SG_GET_G(DefColor), SG_GET_B(DefColor));
 
@@ -513,6 +513,20 @@ int CWKSP_PointCloud::On_Parameter_Changed(CSG_Parameters *pParameters, CSG_Para
 
 			pParameters->Get_Parameter("METRIC_ZRANGE")->asRange()->Set_Range(min, max);
 		}
+
+		if(	pParameter->Cmp_Identifier("LUT_ATTRIB") || (pParameter->Cmp_Identifier("COLORS_TYPE") && pParameter->asInt() == 1) ) // CLASSIFY_LUT
+		{
+			int Field = (*pParameters)("LUT_ATTRIB")->asInt();
+
+			if(	Field >= 0 && Field < Get_PointCloud()->Get_Field_Count() )
+			{
+				TSG_Data_Type Type = SG_Data_Type_is_Numeric(Get_PointCloud()->Get_Field_Type(Field))
+					? SG_DATATYPE_Double : SG_DATATYPE_String;
+		
+				(*pParameters)("LUT")->asTable()->Set_Field_Type(LUT_MIN, Type);
+				(*pParameters)("LUT")->asTable()->Set_Field_Type(LUT_MAX, Type);
+			}
+		}
 	}
 
 	//-----------------------------------------------------
@@ -717,10 +731,11 @@ void CWKSP_PointCloud::_LUT_Create(void)
 			{
 				CSG_Table_Record &Class = *Classes.Add_Record();
 
-				sLong i = (sLong)(0.5 + iClass * Step);
+				sLong i = (sLong)(Step * (1 + iClass));
 
-				double Minimum = Maximum;
-				Maximum	= i < Get_PointCloud()->Get_Count() ? Get_PointCloud()->Get_Value(Index[i], Field) : Get_PointCloud()->Get_Maximum(Field) + 1.;
+				double Minimum = Maximum; Maximum = i < Get_PointCloud()->Get_Count()
+					? Get_PointCloud()->Get_Value(Index[i], Field)
+					: Get_PointCloud()->Get_Maximum(Field) + 1.;
 
 				CSG_String Name(SG_Get_String(Minimum, -2) + " - " + SG_Get_String(Maximum, -2));
 


=====================================
saga-gis/src/saga_core/saga_gui/wksp_shapes.cpp
=====================================
@@ -114,7 +114,7 @@ wxString CWKSP_Shapes::Get_Description(void)
 	wxString s;
 
 	//-----------------------------------------------------
-	s += wxString::Format("<h4>%s</h4>", _TL("Shapes"));
+	s += "<h4>" + Get_Manager()->Get_Name() + "</h4>";
 
 	s += "<table border=\"0\">";
 
@@ -547,9 +547,6 @@ void CWKSP_Shapes::On_Create_Parameters(void)
 		_TL("snap distance in screen units (pixels)"),
 		10, 0, true
 	);
-
-	m_Parameters("LUT")->asTable()->Set_Field_Type(LUT_MIN, SG_DATATYPE_String);
-	m_Parameters("LUT")->asTable()->Set_Field_Type(LUT_MAX, SG_DATATYPE_String);
 }
 
 
@@ -591,13 +588,6 @@ void CWKSP_Shapes::On_Parameters_Changed(void)
 	case  1:	// CLASSIFY_LUT
 		m_fValue	= m_Parameters("LUT_ATTRIB"   )->asInt();	if( m_fValue >= Get_Shapes()->Get_Field_Count() )	{	m_fValue	= -1;	}
 		m_fNormal	= -1;
-
-		{
-			TSG_Data_Type	Type	= SG_Data_Type_is_Numeric(Get_Shapes()->Get_Field_Type(m_Parameters("LUT_ATTRIB")->asInt())) ? SG_DATATYPE_Double : SG_DATATYPE_String;
-
-			m_Parameters("LUT")->asTable()->Set_Field_Type(LUT_MIN, Type);
-			m_Parameters("LUT")->asTable()->Set_Field_Type(LUT_MAX, Type);
-		}
 		break;
 
 	case  2:	// CLASSIFY_DISCRETE
@@ -741,25 +731,29 @@ int CWKSP_Shapes::On_Parameter_Changed(CSG_Parameters *pParameters, CSG_Paramete
 		||	pParameter->Cmp_Identifier("METRIC_NORFMT") )
 		{
 			Set_Metrics(
-				pParameters->Get_Parameter("METRIC_ATTRIB")->asInt(),
-				pParameters->Get_Parameter("METRIC_NORMAL")->asInt(),
-				pParameters->Get_Parameter("METRIC_NORFMT")->asInt()
+				(*pParameters)("METRIC_ATTRIB")->asInt(),
+				(*pParameters)("METRIC_NORMAL")->asInt(),
+				(*pParameters)("METRIC_NORFMT")->asInt()
 			);
 
-			pParameters->Get_Parameter("METRIC_ZRANGE")->asRange()->Set_Range(
+			(*pParameters)("METRIC_ZRANGE")->asRange()->Set_Range(
 				m_Metrics.Get_Minimum(),
 				m_Metrics.Get_Maximum()
 			);
 		}
 
-		if(	pParameter->Cmp_Identifier("LUT_ATTRIB")
-		&&  pParameter->asInt() >= 0 && pParameter->asInt() < Get_Shapes()->Get_Field_Count() )
+		if(	pParameter->Cmp_Identifier("LUT_ATTRIB") || (pParameter->Cmp_Identifier("COLORS_TYPE") && pParameter->asInt() == 1) ) // CLASSIFY_LUT
 		{
-			TSG_Data_Type	Type	= SG_Data_Type_is_Numeric(Get_Shapes()->Get_Field_Type(pParameter->asInt()))
-									? SG_DATATYPE_Double : SG_DATATYPE_String;
+			int Field = (*pParameters)("LUT_ATTRIB")->asInt();
+
+			if(	Field >= 0 && Field < Get_Shapes()->Get_Field_Count() )
+			{
+				TSG_Data_Type Type = SG_Data_Type_is_Numeric(Get_Shapes()->Get_Field_Type(Field))
+					? SG_DATATYPE_Double : SG_DATATYPE_String;
 
-			pParameters->Get_Parameter("LUT")->asTable()->Set_Field_Type(LUT_MIN, Type);
-			pParameters->Get_Parameter("LUT")->asTable()->Set_Field_Type(LUT_MAX, Type);
+				(*pParameters)("LUT")->asTable()->Set_Field_Type(LUT_MIN, Type);
+				(*pParameters)("LUT")->asTable()->Set_Field_Type(LUT_MAX, Type);
+			}
 		}
 	}
 


=====================================
saga-gis/src/saga_core/saga_gui/wksp_shapes_type.cpp
=====================================
@@ -83,7 +83,14 @@ CWKSP_Shapes_Type::CWKSP_Shapes_Type(TSG_Shape_Type Type)
 //---------------------------------------------------------
 wxString CWKSP_Shapes_Type::Get_Name(void)
 {
-	return( SG_Get_ShapeType_Name(m_Shape_Type).c_str() );
+	switch( m_Shape_Type )
+	{
+	case SHAPE_TYPE_Point  : return( _TL("Points"         ) );
+	case SHAPE_TYPE_Points : return( _TL("Multiple Points") );
+	case SHAPE_TYPE_Line   : return( _TL("Lines"          ) );
+	case SHAPE_TYPE_Polygon: return( _TL("Polygons"       ) );
+	default                : return( _TL("Features"       ) );
+	}
 }
 
 //---------------------------------------------------------


=====================================
saga-gis/src/saga_core/saga_gui/wksp_tool.cpp
=====================================
@@ -332,8 +332,6 @@ bool CWKSP_Tool::Execute(bool bDialog)
 
 			SG_UI_ProgressAndMsg_Reset();
 
-			g_pActive->Get_Parameters()->Update_Parameters(m_pTool->Get_Parameters(), false);
-
 			if( g_pTools && g_pTools->Do_Beep() )
 			{
 				Do_Beep();
@@ -341,6 +339,8 @@ bool CWKSP_Tool::Execute(bool bDialog)
 		}
 
 		m_pTool->On_After_Execution();
+
+		g_pActive->Get_Parameters()->Update_Parameters(m_pTool->Get_Parameters(), false);
 	}
 
 	if( !bResult || !m_pTool->is_Interactive() )


=====================================
saga-gis/src/tools/imagery/imagery_tools/spot_scene_import.cpp
=====================================
@@ -399,6 +399,7 @@ bool CSPOT_Scene_Import::Georeference(const CSG_MetaData &Metadata, CSG_Grids &B
 	{
 		int  UTM_Zone  = Parameters("UTM_ZONE" )->asInt();
 		bool UTM_South = Parameters("UTM_SOUTH")->asBool();
+
 		Set_Reference_UTM(Frame, UTM_Zone, UTM_South);
 
 		xField = 4; yField = 5; Projection.Set_UTM_WGS84(UTM_Zone, UTM_South);
@@ -469,8 +470,7 @@ bool CSPOT_Scene_Import::Georeference(const CSG_MetaData &Metadata, CSG_Grids &B
 	&&  pTool->Set_Parameter("XFIELD"          , xField)
 	&&  pTool->Set_Parameter("YFIELD"          , yField)
 	&&  pTool->Set_Parameter("METHOD"          , 0) // automatic
-	&&  pTool->Set_Parameter("CRS_WKT"         , Projection.Get_WKT2())
-	&&  pTool->Set_Parameter("CRS_PROJ"        , Projection.Get_PROJ())
+	&&  pTool->Set_Parameter("CRS_STRING"      , Projection.Get_WKT())
 	&&  pTool->Set_Parameter("TARGET_USER_SIZE", Cellsize)
 	&&  pTool->Set_Parameter("TARGET_USER_XMIN", Extent.xMin)
 	&&  pTool->Set_Parameter("TARGET_USER_XMAX", Extent.xMax)
@@ -559,9 +559,7 @@ bool CSPOT_Scene_Import::Set_Reference_UTM(CSG_Shapes &Frame, int UTM_Zone, bool
 	&&  pTool->Set_Parameter("SOURCE_Y", "FRAME_LAT")
 	&&  pTool->Set_Parameter("TARGET_X", "FRAME_X"  )
 	&&  pTool->Set_Parameter("TARGET_Y", "FRAME_Y"  )
-	&&  pTool->Set_Parameter("SOURCE_CRS.CRS_METHOD", 0) // Definition String
 	&&  pTool->Set_Parameter("SOURCE_CRS.CRS_STRING", GCS.Get_WKT())
-	&&  pTool->Set_Parameter("TARGET_CRS.CRS_METHOD", 0) // Definition String
 	&&  pTool->Set_Parameter("TARGET_CRS.CRS_STRING", UTM.Get_WKT())
 	&&  pTool->Execute() )
 	{


=====================================
saga-gis/src/tools/imagery/imagery_vigra/vigra_random_forest.cpp
=====================================
@@ -887,7 +887,7 @@ CViGrA_RF_Presence::CViGrA_RF_Presence(void)
 	Parameters.Add_Grid("",
 		"PROBABILITY"	, _TL("Presence Probability"),
 		_TL(""),
-		PARAMETER_OUTPUT_OPTIONAL
+		PARAMETER_OUTPUT
 	);
 
 	Parameters.Add_Shapes("",


=====================================
saga-gis/src/tools/projection/pj_georeference/Georef_Grid.cpp
=====================================
@@ -402,7 +402,14 @@ CSG_Data_Object * CGeoref_Grid::Get_Target(CSG_Data_Object *pSource, TSG_Data_Ty
 			Type = pSource->asGrid()->Get_Type();
 		}
 
-		pTarget = m_Grid_Target.Get_Grid("TARGET_GRID", Type != SG_DATATYPE_Undefined ? Type : pSource->asGrid()->Get_Type());
+		if( m_bList )
+		{
+			pTarget = SG_Create_Grid(m_Grid_Target.Get_System(), Type);
+		}
+		else
+		{
+			pTarget = m_Grid_Target.Get_Grid("TARGET_GRID", Type);
+		}
 
 		if( pTarget )
 		{


=====================================
saga-gis/src/tools/visualization/vis_3d_viewer/3d_viewer_multiple_grids.cpp
=====================================
@@ -118,8 +118,7 @@ C3D_Viewer_Multiple_Grids_Panel::C3D_Viewer_Multiple_Grids_Panel(wxWindow *pPare
 {
 	m_pGrids = pGrids;
 
-	m_Parameters.Add_Colors("GENERAL", "COLORS"     , _TL("Colours"     ), _TL(""));
-	m_Parameters.Add_Bool  ("COLORS" , "COLORS_GRAD", _TL("Graduated"   ), _TL(""), true);
+	m_Parameters.Add_Bool  ("GENERAL", "COLORS_GRAD", _TL("Graduated"   ), _TL(""), true);
 
 	m_Parameters.Add_Choice("GENERAL", "SHADING"    , _TL("Light Source"), _TL(""), CSG_String::Format("%s|%s", _TL("no"), _TL("yes")), 1);
 	m_Parameters.Add_Double("SHADING", "SHADE_DEC"  , _TL("Height"      ), _TL(""), 45., -180., true, 180., true);
@@ -216,7 +215,7 @@ int C3D_Viewer_Multiple_Grids_Panel::Get_Color(double Value)
 
 	double c = m_Color_Scale * (Value - m_Color_Min);
 
-	return( m_Color_bGrad ? m_Colors.Get_Interpolated(c) : m_Colors[(int)c] );
+	return( m_Color_bGrad ? m_Colors.Get_Interpolated(c) : m_Colors.Get_Color((int)(0.5 + c)) );
 }
 
 
@@ -266,16 +265,15 @@ inline bool C3D_Viewer_Multiple_Grids_Panel::Get_Node(CSG_Grid *pGrid, int x, in
 //---------------------------------------------------------
 void C3D_Viewer_Multiple_Grids_Panel::Draw_Grid(CSG_Grid *pGrid)
 {
-	//-----------------------------------------------------
 	if( !SG_UI_DataObject_Colors_Get(pGrid, &m_Colors) )
 	{
-		m_Colors  = *m_Parameters("COLORS")->asColors();
+		m_Colors.Set_Default();
 	}
 
 	m_Color_bGrad = m_Parameters("COLORS_GRAD")->asBool();
 
 	m_Color_Min   = pGrid->Get_Min();
-	m_Color_Scale = pGrid->Get_Range() > 0. ? m_Colors.Get_Count() / pGrid->Get_Range() : 0.;
+	m_Color_Scale = pGrid->Get_Range() > 0. ? (m_Colors.Get_Count() - 1) / pGrid->Get_Range() : 0.;
 
 	//-----------------------------------------------------
 	CSG_Vector LightSource;


=====================================
saga-gis/version.cmake
=====================================
@@ -1,7 +1,7 @@
 # The version number.
 set (SAGA_VERSION_MAJOR 9)
 set (SAGA_VERSION_MINOR 8)
-set (SAGA_VERSION_PATCH 0)
+set (SAGA_VERSION_PATCH 1)
 
 # get git commit hash (or dirty if git is not installed)
 



View it on GitLab: https://salsa.debian.org/debian-gis-team/saga/-/commit/6a8f95cb3fcd9f4a6c6aa13ae53c0c56a274187c

-- 
View it on GitLab: https://salsa.debian.org/debian-gis-team/saga/-/commit/6a8f95cb3fcd9f4a6c6aa13ae53c0c56a274187c
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/20250512/67b81509/attachment-0001.htm>


More information about the Pkg-grass-devel mailing list