[Git][debian-gis-team/saga][upstream] New upstream version 9.3.2+dfsg
Bas Couwenberg (@sebastic)
gitlab at salsa.debian.org
Wed Mar 13 04:50:52 GMT 2024
Bas Couwenberg pushed to branch upstream at Debian GIS Project / saga
Commits:
b55c37e5 by Bas Couwenberg at 2024-03-13T05:34:20+01:00
New upstream version 9.3.2+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/helper.py
- saga-gis/src/accessories/python/tools/climate_tools.py
- saga-gis/src/accessories/python/tools/grid_analysis.py
- saga-gis/src/accessories/python/tools/grid_gridding.py
- saga-gis/src/accessories/python/tools/grids_tools.py
- saga-gis/src/accessories/python/tools/imagery_classification.py
- saga-gis/src/accessories/python/tools/imagery_segmentation.py
- saga-gis/src/accessories/python/tools/statistics_grid.py
- saga-gis/src/accessories/python/tools/statistics_regression.py
- saga-gis/src/accessories/python/tools/ta_lighting.py
- saga-gis/src/accessories/python/tools/ta_morphometry.py
- saga-gis/src/saga_core/saga_api/geo_classes.cpp
- saga-gis/src/saga_core/saga_api/mat_tools.h
- saga-gis/src/saga_core/saga_api/parameter.cpp
- saga-gis/src/saga_core/saga_api/parameters.cpp
- saga-gis/src/saga_core/saga_api/saga_api.h
- 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/tools/imagery/imagery_classification/classify_cluster_analysis.cpp
- saga-gis/src/tools/projection/pj_proj4/crs_transform_coords.cpp
- saga-gis/src/tools/projection/pj_proj4/crs_transform_coords.h
- saga-gis/src/tools/projection/pj_proj4/crs_transform_grid.cpp
- saga-gis/src/tools/shapes/shapes_grid/Grid_To_Contour.cpp
- saga-gis/src/tools/statistics/statistics_regression/point_multi_grid_regression.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.3.1 # omit patch number
+#PROJECT_NUMBER = v9.3.2 # omit patch number
PROJECT_NUMBER = v9.3
# 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.3.1_api_doc
+OUTPUT_DIRECTORY = saga-9.3.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
@@ -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.3.1_api.chm
+CHM_FILE = ../../saga-9.3.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.3.1 # omit patch number
+#PROJECT_NUMBER = v9.3.2 # omit patch number
PROJECT_NUMBER = v9.3
# 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.3.1_api_doc
+OUTPUT_DIRECTORY = saga-9.3.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
@@ -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.3.1_api.chm
+CHM_FILE = ../../saga-9.3.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
=====================================
@@ -30,9 +30,9 @@ REM ___________________________________
REM Version
SET SAGA_VERSION=9.3
-SET SAGA_RELEASE=9.3.1
+SET SAGA_RELEASE=9.3.2
SET SAGA_VERSION_NEXT=9.4
-SET SAGA_RELEASE_NEXT=9.4.0
+SET SAGA_RELEASE_NEXT=9.3.1
SET SAGA_RELEASE_NAME=saga-%SAGA_RELEASE%
REM !!! For all bug-fix-releases !!!
=====================================
saga-gis/src/accessories/helper/saga_setup_x64.iss
=====================================
@@ -1,5 +1,5 @@
-; To build installer (for example, saga-9.3.1_setup.exe).
-; - Unzip the SAGA binary files in their own folder (for example, saga-9.3.1.zip).
+; To build installer (for example, saga-9.3.2_setup.exe).
+; - Unzip the SAGA binary files in their own folder (for example, saga-9.3.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.3.1
+AppVerName=SAGA 9.3.2
ArchitecturesAllowed=x64
ArchitecturesInstallIn64BitMode=x64
@@ -22,9 +22,9 @@ Compression=lzma
SolidCompression=yes
OutputDir=.
-OutputBaseFilename=saga-9.3.1_x64_setup
+OutputBaseFilename=saga-9.3.2_x64_setup
-VersionInfoVersion=9.3.1.0
+VersionInfoVersion=9.3.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.3.1"; ValueType: string; ValueName: "InstallDir"; ValueData: "{app}"; Flags: uninsdeletekey
-Root: HKLM; Subkey: "SOFTWARE\SAGA User Group Association\SAGA\9.3.1"; ValueType: string; ValueName: "Version"; ValueData: "9.3.1.0"
+Root: HKLM; Subkey: "SOFTWARE\SAGA User Group Association\SAGA\9.3.2"; ValueType: string; ValueName: "InstallDir"; ValueData: "{app}"; Flags: uninsdeletekey
+Root: HKLM; Subkey: "SOFTWARE\SAGA User Group Association\SAGA\9.3.2"; ValueType: string; ValueName: "Version"; ValueData: "9.3.2.0"
=====================================
saga-gis/src/accessories/python/helper.py
=====================================
@@ -381,7 +381,7 @@ class Tool_Wrapper:
#____________________________________
def Set_Output(self, ID, Object):
- if self.is_Okay():
+ if self.is_Okay() and Object:
self.Output.append([ID, Object])
#____________________________________
=====================================
saga-gis/src/accessories/python/tools/climate_tools.py
=====================================
@@ -329,8 +329,8 @@ def Run_Evapotranspiration_Grid(T=None, T_MIN=None, T_MAX=None, RH=None, SR=None
- 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: 0
- - DAY [`integer number`] : Day of Month. Minimum: 1 Maximum: 31 Default: 23
+ - 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: 2
+ - 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
@@ -377,7 +377,7 @@ def Run_Sunrise_and_Sunset(TARGET=None, SUNRISE=None, SUNSET=None, LENGTH=None,
- SUNRISE [`output grid`] : Sunrise
- SUNSET [`output grid`] : Sunset
- LENGTH [`output grid`] : Day Length
- - DAY [`date`] : Day of Month. Default: 2024-01-24
+ - DAY [`date`] : Day of Month. Default: 2024-03-12
- 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
@@ -983,7 +983,7 @@ def Run_PhenIps_Grids_Days(ATMEAN=None, ATMAX=None, SIREL=None, LAT_GRID=None, G
- YD_END_ONSET [`date`] : End of Breeding. Default: 2024-08-31
- YD_END [`date`] : End of Development. Default: 2024-10-31
- RESET [`boolean`] : Reset. Default: 1
- - DAY [`date`] : Start Day. Default: 2024-01-24
+ - DAY [`date`] : Start Day. Default: 2024-03-12
- Verbose [`integer number`] : Verbosity level, 0=silent, 1=tool name and success notification, 2=complete tool output.\n
Returns
@@ -1051,7 +1051,7 @@ def Run_Soil_Water_Balance_Days(TAVG=None, TMIN=None, TMAX=None, PSUM=None, LAT_
- 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: 2024-01-24
+ - DAY [`date`] : Start Day. Default: 2024-03-12
- Verbose [`integer number`] : Verbosity level, 0=silent, 1=tool name and success notification, 2=complete tool output.\n
Returns
@@ -1363,8 +1363,8 @@ def Run_Daily_Solar_Radiation(LATITUDE=None, SOLARRAD=None, MONTH=None, DAY=None
----------
- 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: 0
- - DAY [`integer number`] : Day of Month. Minimum: 1 Maximum: 31 Default: 23
+ - 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: 2
+ - 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/grid_analysis.py
=====================================
@@ -650,9 +650,9 @@ def Run_Diversity_of_Categories(CATEGORIES=None, COUNT=None, DIVERSITY=None, CON
- NORMALIZE [`choice`] : Normalize. Available Choices: [0] no [1] by number of cells [2] by area size Default: 0
- KERNEL_TYPE [`choice`] : Kernel Type. Available Choices: [0] Square [1] Circle Default: 1 The kernel's shape.
- KERNEL_RADIUS [`integer number`] : Radius. Minimum: 0 Default: 2 cells
- - DW_WEIGHTING [`choice`] : Weighting Function. Available Choices: [0] no distance weighting [1] inverse distance to a power [2] exponential [3] gaussian Default: 0
+ - DW_WEIGHTING [`choice`] : Weighting Function. Available Choices: [0] no distance weighting [1] inverse distance to a power [2] exponential [3] gaussian Default: 3
- DW_IDW_POWER [`floating point number`] : Power. Minimum: 0.000000 Default: 2.000000
- - DW_BANDWIDTH [`floating point number`] : Bandwidth. Minimum: 0.000000 Default: 1.000000 Bandwidth for exponential and Gaussian weighting
+ - DW_BANDWIDTH [`floating point number`] : Bandwidth. Minimum: 0.000000 Default: 0.700000 Bandwidth for exponential and Gaussian weighting
- Verbose [`integer number`] : Verbosity level, 0=silent, 1=tool name and success notification, 2=complete tool output.\n
Returns
=====================================
saga-gis/src/accessories/python/tools/grid_gridding.py
=====================================
@@ -104,7 +104,7 @@ def Run_Inverse_Distance_Weighted(POINTS=None, TARGET_TEMPLATE=None, CV_SUMMARY=
- SEARCH_POINTS_ALL [`choice`] : Number of Points. Available Choices: [0] maximum number of nearest points [1] all points within search distance Default: 1
- SEARCH_POINTS_MIN [`integer number`] : Minimum. Minimum: 1 Default: 1 minimum number of points to use
- SEARCH_POINTS_MAX [`integer number`] : Maximum. Minimum: 1 Default: 20 maximum number of nearest points
- - DW_WEIGHTING [`choice`] : Weighting Function. Available Choices: [0] no distance weighting [1] inverse distance to a power [2] exponential [3] gaussian Default: 0
+ - DW_WEIGHTING [`choice`] : Weighting Function. Available Choices: [0] no distance weighting [1] inverse distance to a power [2] exponential [3] gaussian Default: 1
- DW_IDW_POWER [`floating point number`] : Power. Minimum: 0.000000 Default: 2.000000
- DW_BANDWIDTH [`floating point number`] : Bandwidth. Minimum: 0.000000 Default: 1.000000 Bandwidth for exponential and Gaussian weighting
@@ -442,7 +442,7 @@ def Run_Angular_Distance_Weighted(POINTS=None, TARGET_TEMPLATE=None, CV_SUMMARY=
- SEARCH_POINTS_ALL [`choice`] : Number of Points. Available Choices: [0] maximum number of nearest points [1] all points within search distance Default: 1
- SEARCH_POINTS_MIN [`integer number`] : Minimum. Minimum: 1 Default: 1 minimum number of points to use
- SEARCH_POINTS_MAX [`integer number`] : Maximum. Minimum: 1 Default: 20 maximum number of nearest points
- - DW_WEIGHTING [`choice`] : Weighting Function. Available Choices: [0] no distance weighting [1] inverse distance to a power [2] exponential [3] gaussian Default: 0
+ - DW_WEIGHTING [`choice`] : Weighting Function. Available Choices: [0] no distance weighting [1] inverse distance to a power [2] exponential [3] gaussian Default: 1
- DW_IDW_POWER [`floating point number`] : Power. Minimum: 0.000000 Default: 2.000000
- DW_BANDWIDTH [`floating point number`] : Bandwidth. Minimum: 0.000000 Default: 1.000000 Bandwidth for exponential and Gaussian weighting
=====================================
saga-gis/src/accessories/python/tools/grids_tools.py
=====================================
@@ -259,7 +259,7 @@ def Run_Inverse_Distance_Weighted_3D(POINTS=None, TARGET_TEMPLATE=None, GRIDS=No
- SEARCH_POINTS_ALL [`choice`] : Number of Points. Available Choices: [0] maximum number of nearest points [1] all points within search distance Default: 1
- SEARCH_POINTS_MIN [`integer number`] : Minimum. Minimum: 1 Default: 1 minimum number of points to use
- SEARCH_POINTS_MAX [`integer number`] : Maximum. Minimum: 1 Default: 20 maximum number of nearest points
- - DW_WEIGHTING [`choice`] : Weighting Function. Available Choices: [0] no distance weighting [1] inverse distance to a power [2] exponential [3] gaussian Default: 0
+ - DW_WEIGHTING [`choice`] : Weighting Function. Available Choices: [0] no distance weighting [1] inverse distance to a power [2] exponential [3] gaussian Default: 1
- DW_IDW_POWER [`floating point number`] : Power. Minimum: 0.000000 Default: 2.000000
- DW_BANDWIDTH [`floating point number`] : Bandwidth. Minimum: 0.000000 Default: 1.000000 Bandwidth for exponential and Gaussian weighting
=====================================
saga-gis/src/accessories/python/tools/imagery_classification.py
=====================================
@@ -82,7 +82,7 @@ def Run_KMeans_Clustering_for_Grids(GRIDS=None, CLUSTER=None, STATISTICS=None, M
- STATISTICS [`output table`] : Statistics
- METHOD [`choice`] : Method. Available Choices: [0] Iterative Minimum Distance (Forgy 1965) [1] Hill-Climbing (Rubin 1967) [2] Combined Minimum Distance / Hillclimbing Default: 1
- NCLUSTER [`integer number`] : Clusters. Minimum: 2 Default: 10 Number of clusters
- - MAXITER [`integer number`] : Maximum Iterations. Minimum: 0 Default: 10 maximum number of iterations, ignored if set to zero (default)
+ - MAXITER [`integer number`] : Maximum Iterations. Minimum: 0 Default: 10 Maximum number of iterations, ignored if set to zero.
- NORMALISE [`boolean`] : Normalise. Default: 0 Automatically normalise grids by standard deviation before clustering.
- INITIALIZE [`choice`] : Start Partition. Available Choices: [0] random [1] periodical [2] keep values Default: 0
- OLDVERSION [`boolean`] : Old Version. Default: 0 slower but memory saving
=====================================
saga-gis/src/accessories/python/tools/imagery_segmentation.py
=====================================
@@ -102,9 +102,9 @@ def Run_Seed_Generation(FEATURES=None, VARIANCE=None, SEED_GRID=None, SEED_POINT
- METHOD [`choice`] : Method. Available Choices: [0] band width smoothing [1] band width search Default: 0
- BAND_WIDTH [`floating point number`] : Bandwidth (Cells). Minimum: 1.000000 Default: 10.000000
- NORMALIZE [`boolean`] : Normalize Features. Default: 0 Standardize the input features, i.e. rescale the input data (features) such that the mean equals 0 and the standard deviation equals 1. This is helpful when the input features have different scales, units or outliers.
- - DW_WEIGHTING [`choice`] : Weighting Function. Available Choices: [0] no distance weighting [1] inverse distance to a power [2] exponential [3] gaussian Default: 0
+ - DW_WEIGHTING [`choice`] : Weighting Function. Available Choices: [0] no distance weighting [1] inverse distance to a power [2] exponential [3] gaussian Default: 3
- DW_IDW_POWER [`floating point number`] : Power. Minimum: 0.000000 Default: 2.000000
- - DW_BANDWIDTH [`floating point number`] : Bandwidth. Minimum: 0.000000 Default: 1.000000 Bandwidth for exponential and Gaussian weighting
+ - DW_BANDWIDTH [`floating point number`] : Bandwidth. Minimum: 0.000000 Default: 5.000000 Bandwidth for exponential and Gaussian weighting
- Verbose [`integer number`] : Verbosity level, 0=silent, 1=tool name and success notification, 2=complete tool output.\n
Returns
=====================================
saga-gis/src/accessories/python/tools/statistics_grid.py
=====================================
@@ -288,9 +288,9 @@ def Run_Directional_Statistics_for_Single_Grid(GRID=None, POINTS=None, MEAN=None
- DIRECTION [`floating point number`] : Direction [Degree]. Default: 0.000000
- TOLERANCE [`floating point number`] : Tolerance [Degree]. Minimum: 0.000000 Maximum: 45.000000 Default: 0.000000
- MAXDISTANCE [`integer number`] : Maximum Distance [Cells]. Minimum: 0 Default: 0 Maximum distance parameter is ignored if set to zero (default).
- - DW_WEIGHTING [`choice`] : Weighting Function. Available Choices: [0] no distance weighting [1] inverse distance to a power [2] exponential [3] gaussian Default: 0
+ - DW_WEIGHTING [`choice`] : Weighting Function. Available Choices: [0] no distance weighting [1] inverse distance to a power [2] exponential [3] gaussian Default: 3
- DW_IDW_POWER [`floating point number`] : Power. Minimum: 0.000000 Default: 2.000000
- - DW_BANDWIDTH [`floating point number`] : Bandwidth. Minimum: 0.000000 Default: 1.000000 Bandwidth specified as number of cells.
+ - DW_BANDWIDTH [`floating point number`] : Bandwidth. Minimum: 0.000000 Default: 25.000000 Bandwidth specified as number of cells.
- Verbose [`integer number`] : Verbosity level, 0=silent, 1=tool name and success notification, 2=complete tool output.\n
Returns
=====================================
saga-gis/src/accessories/python/tools/statistics_regression.py
=====================================
@@ -186,7 +186,7 @@ def Run_GWR_for_Single_Predictor_Gridded_Model_Output(POINTS=None, TARGET_TEMPLA
- TARGET_USER_ROWS [`integer number`] : Rows. Minimum: 1 Default: 101 Number of cells in North-South direction.
- TARGET_USER_FITS [`choice`] : Fit. Available Choices: [0] nodes [1] cells Default: 0
- TARGET_SYSTEM [`grid system`] : Grid System
- - DW_WEIGHTING [`choice`] : Weighting Function. Available Choices: [0] no distance weighting [1] inverse distance to a power [2] exponential [3] gaussian Default: 0
+ - DW_WEIGHTING [`choice`] : Weighting Function. Available Choices: [0] no distance weighting [1] inverse distance to a power [2] exponential [3] gaussian Default: 3
- DW_IDW_POWER [`floating point number`] : Power. Minimum: 0.000000 Default: 2.000000
- DW_BANDWIDTH [`floating point number`] : Bandwidth. Minimum: 0.000000 Default: 1.000000 Bandwidth for exponential and Gaussian weighting
- SEARCH_RANGE [`choice`] : Search Range. Available Choices: [0] local [1] global Default: 1
@@ -249,7 +249,7 @@ def Run_GWR_for_Single_Predictor_Grid(POINTS=None, PREDICTOR=None, RESIDUALS=Non
- SLOPE [`output grid`] : Slope
- DEPENDENT [`table field`] : Dependent Variable
- LOGISTIC [`boolean`] : Logistic Regression. Default: 0
- - DW_WEIGHTING [`choice`] : Weighting Function. Available Choices: [0] no distance weighting [1] inverse distance to a power [2] exponential [3] gaussian Default: 0
+ - DW_WEIGHTING [`choice`] : Weighting Function. Available Choices: [0] no distance weighting [1] inverse distance to a power [2] exponential [3] gaussian Default: 3
- DW_IDW_POWER [`floating point number`] : Power. Minimum: 0.000000 Default: 2.000000
- DW_BANDWIDTH [`floating point number`] : Bandwidth. Minimum: 0.000000 Default: 1.000000 Bandwidth for exponential and Gaussian weighting
- SEARCH_RANGE [`choice`] : Search Range. Available Choices: [0] local [1] global Default: 1
@@ -312,7 +312,7 @@ def Run_GWR_for_Multiple_Predictors_Gridded_Model_Output(POINTS=None, TARGET_TEM
- TARGET_USER_ROWS [`integer number`] : Rows. Minimum: 1 Default: 101 Number of cells in North-South direction.
- TARGET_USER_FITS [`choice`] : Fit. Available Choices: [0] nodes [1] cells Default: 0
- TARGET_SYSTEM [`grid system`] : Grid System
- - DW_WEIGHTING [`choice`] : Weighting Function. Available Choices: [0] no distance weighting [1] inverse distance to a power [2] exponential [3] gaussian Default: 0
+ - DW_WEIGHTING [`choice`] : Weighting Function. Available Choices: [0] no distance weighting [1] inverse distance to a power [2] exponential [3] gaussian Default: 3
- DW_IDW_POWER [`floating point number`] : Power. Minimum: 0.000000 Default: 2.000000
- DW_BANDWIDTH [`floating point number`] : Bandwidth. Minimum: 0.000000 Default: 1.000000 Bandwidth for exponential and Gaussian weighting
- SEARCH_RANGE [`choice`] : Search Range. Available Choices: [0] local [1] global Default: 1
@@ -377,7 +377,7 @@ def Run_GWR_for_Multiple_Predictor_Grids(POINTS=None, PREDICTORS=None, RESIDUALS
- MODEL_OUT [`boolean`] : Output of Regression Parameters. Default: 0
- RESOLUTION [`choice`] : Model Resolution. Available Choices: [0] same as predictors [1] user defined Default: 1
- RESOLUTION_VAL [`floating point number`] : Resolution. Minimum: 0.000000 Default: 1.000000 map units
- - DW_WEIGHTING [`choice`] : Weighting Function. Available Choices: [0] no distance weighting [1] inverse distance to a power [2] exponential [3] gaussian Default: 0
+ - DW_WEIGHTING [`choice`] : Weighting Function. Available Choices: [0] no distance weighting [1] inverse distance to a power [2] exponential [3] gaussian Default: 3
- DW_IDW_POWER [`floating point number`] : Power. Minimum: 0.000000 Default: 2.000000
- DW_BANDWIDTH [`floating point number`] : Bandwidth. Minimum: 0.000000 Default: 1.000000 Bandwidth for exponential and Gaussian weighting
- SEARCH_RANGE [`choice`] : Search Range. Available Choices: [0] local [1] global Default: 1
@@ -428,7 +428,7 @@ def Run_GWR_for_Multiple_Predictors_Shapes(POINTS=None, REGRESSION=None, DEPENDE
- DEPENDENT [`table field`] : Dependent Variable
- PREDICTORS [`table fields`] : Predictors
- LOGISTIC [`boolean`] : Logistic Regression. Default: 0
- - DW_WEIGHTING [`choice`] : Weighting Function. Available Choices: [0] no distance weighting [1] inverse distance to a power [2] exponential [3] gaussian Default: 0
+ - DW_WEIGHTING [`choice`] : Weighting Function. Available Choices: [0] no distance weighting [1] inverse distance to a power [2] exponential [3] gaussian Default: 3
- DW_IDW_POWER [`floating point number`] : Power. Minimum: 0.000000 Default: 2.000000
- DW_BANDWIDTH [`floating point number`] : Bandwidth. Minimum: 0.000000 Default: 1.000000 Bandwidth for exponential and Gaussian weighting
- SEARCH_RANGE [`choice`] : Search Range. Available Choices: [0] local [1] global Default: 1
@@ -712,9 +712,9 @@ def Run_GWR_for_Grid_Downscaling(PREDICTORS=None, DEPENDENT=None, REGRESSION=Non
- MODEL_OUT [`boolean`] : Output of Model Parameters. Default: 0
- SEARCH_RANGE [`choice`] : Search Range. Available Choices: [0] local [1] global Default: 0
- SEARCH_RADIUS [`integer number`] : Search Distance [Cells]. Minimum: 1 Default: 10
- - DW_WEIGHTING [`choice`] : Weighting Function. Available Choices: [0] no distance weighting [1] inverse distance to a power [2] exponential [3] gaussian Default: 0
+ - DW_WEIGHTING [`choice`] : Weighting Function. Available Choices: [0] no distance weighting [1] inverse distance to a power [2] exponential [3] gaussian Default: 3
- DW_IDW_POWER [`floating point number`] : Power. Minimum: 0.000000 Default: 2.000000
- - DW_BANDWIDTH [`floating point number`] : Bandwidth. Minimum: 0.000000 Default: 1.000000 Bandwidth for exponential and Gaussian weighting
+ - DW_BANDWIDTH [`floating point number`] : Bandwidth. Minimum: 0.000000 Default: 7.000000 Bandwidth for exponential and Gaussian weighting
- Verbose [`integer number`] : Verbosity level, 0=silent, 1=tool name and success notification, 2=complete tool output.\n
Returns
=====================================
saga-gis/src/accessories/python/tools/ta_lighting.py
=====================================
@@ -28,7 +28,7 @@ def Run_Analytical_Hillshading(ELEVATION=None, SHADE=None, METHOD=None, POSITION
- 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: 2024-01-24
+ - DATE [`date`] : Day. Default: 2024-03-12
- 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
@@ -89,8 +89,8 @@ def Run_Potential_Incoming_Solar_Radiation(GRD_DEM=None, GRD_SVF=None, GRD_VAPOU
- 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
- - DAY [`date`] : Day. Default: 2024-01-24
- - DAY_STOP [`date`] : Last Day. Default: 2024-01-24
+ - DAY [`date`] : Day. Default: 2024-03-12
+ - DAY_STOP [`date`] : Last Day. Default: 2024-03-12
- 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/accessories/python/tools/ta_morphometry.py
=====================================
@@ -580,7 +580,7 @@ def Run_Terrain_Ruggedness_Index_TRI(DEM=None, TRI=None, MODE=None, RADIUS=None,
- RADIUS [`integer number`] : Search Radius. Minimum: 1 Default: 1 radius in cells
- DW_WEIGHTING [`choice`] : Weighting Function. Available Choices: [0] no distance weighting [1] inverse distance to a power [2] exponential [3] gaussian Default: 0
- DW_IDW_POWER [`floating point number`] : Power. Minimum: 0.000000 Default: 2.000000
- - DW_BANDWIDTH [`floating point number`] : Bandwidth. Minimum: 0.000000 Default: 1.000000 Bandwidth for exponential and Gaussian weighting
+ - DW_BANDWIDTH [`floating point number`] : Bandwidth. Minimum: 0.000000 Default: 75.000000 Bandwidth for exponential and Gaussian weighting
- Verbose [`integer number`] : Verbosity level, 0=silent, 1=tool name and success notification, 2=complete tool output.\n
Returns
@@ -613,7 +613,7 @@ def Run_Vector_Ruggedness_Measure_VRM(DEM=None, VRM=None, MODE=None, RADIUS=None
- RADIUS [`integer number`] : Search Radius. Minimum: 1 Default: 1 radius in cells
- DW_WEIGHTING [`choice`] : Weighting Function. Available Choices: [0] no distance weighting [1] inverse distance to a power [2] exponential [3] gaussian Default: 0
- DW_IDW_POWER [`floating point number`] : Power. Minimum: 0.000000 Default: 2.000000
- - DW_BANDWIDTH [`floating point number`] : Bandwidth. Minimum: 0.000000 Default: 1.000000 Bandwidth for exponential and Gaussian weighting
+ - DW_BANDWIDTH [`floating point number`] : Bandwidth. Minimum: 0.000000 Default: 75.000000 Bandwidth for exponential and Gaussian weighting
- Verbose [`integer number`] : Verbosity level, 0=silent, 1=tool name and success notification, 2=complete tool output.\n
Returns
@@ -646,7 +646,7 @@ def Run_Topographic_Position_Index_TPI(DEM=None, TPI=None, STANDARD=None, RADIUS
- RADIUS [`value range`] : Scale. kernel radius in map units; defines an annulus if inner radius is greater than zero
- DW_WEIGHTING [`choice`] : Weighting Function. Available Choices: [0] no distance weighting [1] inverse distance to a power [2] exponential [3] gaussian Default: 0
- DW_IDW_POWER [`floating point number`] : Power. Minimum: 0.000000 Default: 2.000000
- - DW_BANDWIDTH [`floating point number`] : Bandwidth. Minimum: 0.000000 Default: 1.000000 Bandwidth for exponential and Gaussian weighting
+ - DW_BANDWIDTH [`floating point number`] : Bandwidth. Minimum: 0.000000 Default: 75.000000 Bandwidth for exponential and Gaussian weighting
- Verbose [`integer number`] : Verbosity level, 0=silent, 1=tool name and success notification, 2=complete tool output.\n
Returns
@@ -679,7 +679,7 @@ def Run_TPI_Based_Landform_Classification(DEM=None, LANDFORMS=None, RADIUS_A=Non
- RADIUS_B [`value range`] : Large Scale. kernel radius in map units; defines an annulus if inner radius is greater than zero
- DW_WEIGHTING [`choice`] : Weighting Function. Available Choices: [0] no distance weighting [1] inverse distance to a power [2] exponential [3] gaussian Default: 0
- DW_IDW_POWER [`floating point number`] : Power. Minimum: 0.000000 Default: 2.000000
- - DW_BANDWIDTH [`floating point number`] : Bandwidth. Minimum: 0.000000 Default: 1.000000 Bandwidth for exponential and Gaussian weighting
+ - DW_BANDWIDTH [`floating point number`] : Bandwidth. Minimum: 0.000000 Default: 75.000000 Bandwidth for exponential and Gaussian weighting
- Verbose [`integer number`] : Verbosity level, 0=silent, 1=tool name and success notification, 2=complete tool output.\n
Returns
@@ -711,9 +711,9 @@ def Run_Terrain_Surface_Texture(DEM=None, TEXTURE=None, EPSILON=None, SCALE=None
- EPSILON [`floating point number`] : Flat Area Threshold. Minimum: 0.000000 Default: 1.000000 maximum difference between original and median filtered elevation (3x3 moving window) that still is recognized flat
- SCALE [`integer number`] : Scale (Cells). Minimum: 1 Default: 10
- METHOD [`choice`] : Method. Available Choices: [0] counting cells [1] resampling Default: 1
- - DW_WEIGHTING [`choice`] : Weighting Function. Available Choices: [0] no distance weighting [1] inverse distance to a power [2] exponential [3] gaussian Default: 0
+ - DW_WEIGHTING [`choice`] : Weighting Function. Available Choices: [0] no distance weighting [1] inverse distance to a power [2] exponential [3] gaussian Default: 3
- DW_IDW_POWER [`floating point number`] : Power. Minimum: 0.000000 Default: 2.000000
- - DW_BANDWIDTH [`floating point number`] : Bandwidth. Minimum: 0.000000 Default: 1.000000 Bandwidth for exponential and Gaussian weighting
+ - DW_BANDWIDTH [`floating point number`] : Bandwidth. Minimum: 0.000000 Default: 0.700000 Bandwidth for exponential and Gaussian weighting
- Verbose [`integer number`] : Verbosity level, 0=silent, 1=tool name and success notification, 2=complete tool output.\n
Returns
@@ -748,9 +748,9 @@ def Run_Terrain_Surface_Convexity(DEM=None, CONVEXITY=None, KERNEL=None, TYPE=No
- EPSILON [`floating point number`] : Flat Area Threshold. Minimum: 0.000000 Default: 0.000000
- SCALE [`integer number`] : Scale (Cells). Minimum: 1 Default: 10
- METHOD [`choice`] : Method. Available Choices: [0] counting cells [1] resampling Default: 1
- - DW_WEIGHTING [`choice`] : Weighting Function. Available Choices: [0] no distance weighting [1] inverse distance to a power [2] exponential [3] gaussian Default: 0
+ - DW_WEIGHTING [`choice`] : Weighting Function. Available Choices: [0] no distance weighting [1] inverse distance to a power [2] exponential [3] gaussian Default: 3
- DW_IDW_POWER [`floating point number`] : Power. Minimum: 0.000000 Default: 2.000000
- - DW_BANDWIDTH [`floating point number`] : Bandwidth. Minimum: 0.000000 Default: 1.000000 Bandwidth for exponential and Gaussian weighting
+ - DW_BANDWIDTH [`floating point number`] : Bandwidth. Minimum: 0.000000 Default: 0.700000 Bandwidth for exponential and Gaussian weighting
- Verbose [`integer number`] : Verbosity level, 0=silent, 1=tool name and success notification, 2=complete tool output.\n
Returns
=====================================
saga-gis/src/saga_core/saga_api/geo_classes.cpp
=====================================
@@ -1365,10 +1365,12 @@ bool CSG_Distance_Weighting::Create_Parameters(CSG_Parameters &Parameters, const
{
if( Add_Parameters(Parameters, Parent, bIDW_Offset) )
{
- if( Parameters("DW_WEIGHTING" ) ) { Parameters("DW_WEIGHTING" )->Set_Value((int)m_Weighting ); }
- if( Parameters("DW_IDW_POWER" ) ) { Parameters("DW_IDW_POWER" )->Set_Value( m_IDW_Power ); }
- if( Parameters("DW_IDW_OFFSET") ) { Parameters("DW_IDW_OFFSET")->Set_Value( m_IDW_bOffset); }
- if( Parameters("DW_BANDWIDTH" ) ) { Parameters("DW_BANDWIDTH" )->Set_Value( m_Bandwidth ); }
+ #define INIT_VALUE(id, val) if( Parameters(id) ) { Parameters(id)->Set_Value(val); Parameters(id)->Set_Default(val); }
+
+ INIT_VALUE("DW_WEIGHTING" ,(int)m_Weighting );
+ INIT_VALUE("DW_IDW_POWER" , m_IDW_Power );
+ INIT_VALUE("DW_IDW_OFFSET", m_IDW_bOffset);
+ INIT_VALUE("DW_BANDWIDTH" , m_Bandwidth );
return( true );
}
=====================================
saga-gis/src/saga_core/saga_api/mat_tools.h
=====================================
@@ -117,8 +117,8 @@
#define N_MEGABYTE_BYTES 0x100000
//---------------------------------------------------------
-#define M_ALMOST_ZERO 0.001l
-#define M_TINY (1.0e-20)
+#define M_ALMOST_ZERO (1.e-03)
+#define M_TINY (1.e-20)
//---------------------------------------------------------
#define M_SQR(x) ((x) * (x))
=====================================
saga-gis/src/saga_core/saga_api/parameter.cpp
=====================================
@@ -1866,10 +1866,10 @@ CSG_Grids * CSG_Parameters_Grid_Target::Get_Grids(const CSG_String &Identifier,
CSG_Grids *pGrids = NULL;
- if( (*m_pParameters)(m_Prefix + "DEFINITION")->asInt() == 0
- && (*m_pParameters)(Identifier + "_CREATE") )
+ if( (*m_pParameters)(m_Prefix + "DEFINITION")->asInt() == 0 && m_pParameters->Get_Tool()->has_GUI() )
{
- if( (*m_pParameters)(Identifier + "_CREATE")->asBool() )
+ if( (*m_pParameters)(Identifier + "_CREATE") == NULL
+ || (*m_pParameters)(Identifier + "_CREATE")->asBool() )
{
pGrids = SG_Create_Grids(System, 0, 0., Type);
}
@@ -1882,6 +1882,10 @@ CSG_Grids * CSG_Parameters_Grid_Target::Get_Grids(const CSG_String &Identifier,
{
pGrids = SG_Create_Grids(System, 0, 0., Type);
}
+ else if( pGrids && (pGrids->Get_Type() != Type || !pGrids->Get_System().is_Equal(System)) )
+ {
+ pGrids->Create(System, 0, 0., Type);
+ }
}
if( pGrids && pGrids != pParameter->asGrids() )
@@ -1889,6 +1893,7 @@ CSG_Grids * CSG_Parameters_Grid_Target::Get_Grids(const CSG_String &Identifier,
pParameter->Set_Value(pGrids);
}
+ //-----------------------------------------------------
if( pGrids
&& (*m_pParameters)(m_Prefix + "USER_ZSIZE")
&& (*m_pParameters)(m_Prefix + "USER_ZMIN" )
=====================================
saga-gis/src/saga_core/saga_api/parameters.cpp
=====================================
@@ -202,6 +202,14 @@ void CSG_Parameters::Destroy(void)
void CSG_Parameters::Set_Tool(CSG_Tool *pTool)
{
m_pTool = pTool;
+
+ for(int i=0; i<Get_Count(); i++)
+ {
+ if( m_Parameters[i]->Get_Type() == PARAMETER_TYPE_Parameters )
+ {
+ m_Parameters[i]->asParameters()->Set_Tool(pTool);
+ }
+ }
}
//---------------------------------------------------------
@@ -1554,11 +1562,16 @@ bool CSG_Parameters::Assign_Parameters(CSG_Parameters *pSource)
for(int i=0; i<pSource->m_nParameters; i++)
{
_Add(pSource->m_Parameters[i]);
+
+ if( m_Parameters[i]->asParameters() )
+ {
+ m_Parameters[i]->asParameters()->Set_Tool(m_pTool);
+ }
}
if( pSource->m_pGrid_System )
{
- m_pGrid_System = Get_Parameter(pSource->m_pGrid_System->Get_Identifier());
+ m_pGrid_System = Get_Parameter(pSource->m_pGrid_System->Get_Identifier());
}
return( m_nParameters == pSource->m_nParameters );
=====================================
saga-gis/src/saga_core/saga_api/saga_api.h
=====================================
@@ -86,8 +86,8 @@
//---------------------------------------------------------
#define SAGA_MAJOR_VERSION 9
#define SAGA_MINOR_VERSION 3
-#define SAGA_RELEASE_NUMBER 1
-#define SAGA_VERSION SG_T("9.3.1")
+#define SAGA_RELEASE_NUMBER 2
+#define SAGA_VERSION SG_T("9.3.2")
///////////////////////////////////////////////////////////
=====================================
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.3.1" " "
+.TH SAGA_CMD 1 "2021-07-07" "9.3.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.3.1" " "
+.TH SAGA_GUI 1 "2021-07-07" "9.3.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/tools/imagery/imagery_classification/classify_cluster_analysis.cpp
=====================================
@@ -117,7 +117,7 @@ CGrid_Cluster_Analysis::CGrid_Cluster_Analysis(void)
Parameters.Add_Int("",
"MAXITER" , _TL("Maximum Iterations"),
- _TL("maximum number of iterations, ignored if set to zero (default)"),
+ _TL("Maximum number of iterations, ignored if set to zero."),
10, 0, true
);
=====================================
saga-gis/src/tools/projection/pj_proj4/crs_transform_coords.cpp
=====================================
@@ -50,9 +50,9 @@
///////////////////////////////////////////////////////////
-// //
-// //
-// //
+// //
+// //
+// //
///////////////////////////////////////////////////////////
//---------------------------------------------------------
@@ -71,25 +71,25 @@ CCRS_Transform_Coords_Grid::CCRS_Transform_Coords_Grid(void)
//-----------------------------------------------------
Parameters.Add_Grid("",
- "SOURCE_X" , _TL("X Coordinate Source"),
+ "SOURCE_X", _TL("X Coordinate Source"),
_TL("Grid that provides the source X coordinates."),
PARAMETER_INPUT
);
Parameters.Add_Grid("",
- "SOURCE_Y" , _TL("Y Coordinate Source"),
+ "SOURCE_Y", _TL("Y Coordinate Source"),
_TL("Grid that provides the source Y coordinates."),
PARAMETER_INPUT
);
Parameters.Add_Grid("",
- "TARGET_X" , _TL("Projected X Coordinates"),
+ "TARGET_X", _TL("Projected X Coordinates"),
_TL(""),
PARAMETER_OUTPUT
);
Parameters.Add_Grid("",
- "TARGET_Y" , _TL("Projected Y Coordinates"),
+ "TARGET_Y", _TL("Projected Y Coordinates"),
_TL(""),
PARAMETER_OUTPUT
);
@@ -97,20 +97,18 @@ CCRS_Transform_Coords_Grid::CCRS_Transform_Coords_Grid(void)
//-----------------------------------------------------
CCRS_Picker Picker;
- Parameters.Add_Parameters("",
- "SOURCE_CRS", _TL("Source Coordinate System"),
- _TL("")
- )->asParameters()->Assign_Parameters(Picker.Get_Parameters());
+ Parameters.Add_Parameters("", "SOURCE_CRS", _TL("Source Coordinate System"), _TL(""))
+ ->asParameters()->Assign_Parameters(Picker.Get_Parameters()
+ );
- Parameters.Add_Parameters("",
- "TARGET_CRS", _TL("Target Coordinate System"),
- _TL("")
- )->asParameters()->Assign_Parameters(Picker.Get_Parameters());
+ Parameters.Add_Parameters("", "TARGET_CRS", _TL("Target Coordinate System"), _TL(""))
+ ->asParameters()->Assign_Parameters(Picker.Get_Parameters()
+ );
}
///////////////////////////////////////////////////////////
-// //
+// //
///////////////////////////////////////////////////////////
//---------------------------------------------------------
@@ -131,15 +129,15 @@ int CCRS_Transform_Coords_Grid::On_Parameters_Enable(CSG_Parameters *pParameters
///////////////////////////////////////////////////////////
-// //
+// //
///////////////////////////////////////////////////////////
//---------------------------------------------------------
bool CCRS_Transform_Coords_Grid::On_Execute(void)
{
- CSG_CRSProjector Projector;
+ CSG_CRSProjector Projector;
- CSG_Projection Source(Parameters("SOURCE_CRS")->asParameters()->Get_Parameter("CRS_PROJ4")->asString(), SG_PROJ_FMT_Proj4);
+ CSG_Projection Source(Parameters("SOURCE_CRS")->asParameters()->Get_Parameter("CRS_PROJ4")->asString(), SG_PROJ_FMT_Proj4);
if( !Projector.Set_Source(Source) )
{
@@ -148,7 +146,7 @@ bool CCRS_Transform_Coords_Grid::On_Execute(void)
return( false );
}
- CSG_Projection Target(Parameters("TARGET_CRS")->asParameters()->Get_Parameter("CRS_PROJ4")->asString(), SG_PROJ_FMT_Proj4);
+ CSG_Projection Target(Parameters("TARGET_CRS")->asParameters()->Get_Parameter("CRS_PROJ4")->asString(), SG_PROJ_FMT_Proj4);
if( !Projector.Set_Source(Source) || !Projector.Set_Target(Target) )
{
@@ -158,11 +156,11 @@ bool CCRS_Transform_Coords_Grid::On_Execute(void)
}
//-----------------------------------------------------
- CSG_Grid *pSource_X = Parameters("SOURCE_X")->asGrid();
- CSG_Grid *pSource_Y = Parameters("SOURCE_Y")->asGrid();
+ CSG_Grid *pSource_X = Parameters("SOURCE_X")->asGrid();
+ CSG_Grid *pSource_Y = Parameters("SOURCE_Y")->asGrid();
- CSG_Grid *pTarget_X = Parameters("TARGET_X")->asGrid();
- CSG_Grid *pTarget_Y = Parameters("TARGET_Y")->asGrid();
+ CSG_Grid *pTarget_X = Parameters("TARGET_X")->asGrid();
+ CSG_Grid *pTarget_Y = Parameters("TARGET_Y")->asGrid();
//-----------------------------------------------------
for(int y=0; y<Get_NY() && Set_Progress_Rows(y); y++)
@@ -172,7 +170,7 @@ bool CCRS_Transform_Coords_Grid::On_Execute(void)
{
if( !pSource_X->is_NoData(x, y) && !pSource_Y->is_NoData(x, y) )
{
- CSG_Point Point(pSource_X->asDouble(x, y), pSource_Y->asDouble(x, y));
+ CSG_Point Point(pSource_X->asDouble(x, y), pSource_Y->asDouble(x, y));
if( Projector.Get_Projection(Point) )
{
@@ -194,9 +192,9 @@ bool CCRS_Transform_Coords_Grid::On_Execute(void)
///////////////////////////////////////////////////////////
-// //
-// //
-// //
+// //
+// //
+// //
///////////////////////////////////////////////////////////
//---------------------------------------------------------
@@ -215,29 +213,29 @@ CCRS_Transform_Coords_Table::CCRS_Transform_Coords_Table(void)
//-----------------------------------------------------
Parameters.Add_Table("",
- "TABLE" , _TL("Table"),
+ "TABLE" , _TL("Table"),
_TL(""),
PARAMETER_INPUT
);
Parameters.Add_Table_Field("TABLE",
- "SOURCE_X" , _TL("X Coordinate Source"),
+ "SOURCE_X", _TL("X Coordinate Source"),
_TL("Table field that provides the source X coordinates.")
);
Parameters.Add_Table_Field("TABLE",
- "SOURCE_Y" , _TL("Y Coordinate Source"),
+ "SOURCE_Y", _TL("Y Coordinate Source"),
_TL("Table field that provides the source Y coordinates.")
);
Parameters.Add_Table_Field("TABLE",
- "TARGET_X" , _TL("Projected X Coordinates"),
+ "TARGET_X", _TL("Projected X Coordinates"),
_TL(""),
true
);
Parameters.Add_Table_Field("TABLE",
- "TARGET_Y" , _TL("Projected Y Coordinates"),
+ "TARGET_Y", _TL("Projected Y Coordinates"),
_TL(""),
true
);
@@ -245,20 +243,18 @@ CCRS_Transform_Coords_Table::CCRS_Transform_Coords_Table(void)
//-----------------------------------------------------
CCRS_Picker Picker;
- Parameters.Add_Parameters("",
- "SOURCE_CRS", _TL("Source Coordinate System"),
- _TL("")
- )->asParameters()->Assign_Parameters(Picker.Get_Parameters());
+ Parameters.Add_Parameters("", "SOURCE_CRS", _TL("Source Coordinate System"), _TL(""))
+ ->asParameters()->Assign_Parameters(Picker.Get_Parameters()
+ );
- Parameters.Add_Parameters("",
- "TARGET_CRS", _TL("Target Coordinate System"),
- _TL("")
- )->asParameters()->Assign_Parameters(Picker.Get_Parameters());
+ Parameters.Add_Parameters("", "TARGET_CRS", _TL("Target Coordinate System"), _TL(""))
+ ->asParameters()->Assign_Parameters(Picker.Get_Parameters()
+ );
}
///////////////////////////////////////////////////////////
-// //
+// //
///////////////////////////////////////////////////////////
//---------------------------------------------------------
@@ -279,15 +275,15 @@ int CCRS_Transform_Coords_Table::On_Parameters_Enable(CSG_Parameters *pParameter
///////////////////////////////////////////////////////////
-// //
+// //
///////////////////////////////////////////////////////////
//---------------------------------------------------------
bool CCRS_Transform_Coords_Table::On_Execute(void)
{
- CSG_CRSProjector Projector;
+ CSG_CRSProjector Projector;
- CSG_Projection Source(Parameters("SOURCE_CRS")->asParameters()->Get_Parameter("CRS_PROJ4")->asString(), SG_PROJ_FMT_Proj4);
+ CSG_Projection Source(Parameters("SOURCE_CRS")->asParameters()->Get_Parameter("CRS_PROJ4")->asString(), SG_PROJ_FMT_Proj4);
if( !Projector.Set_Source(Source) )
{
@@ -296,7 +292,7 @@ bool CCRS_Transform_Coords_Table::On_Execute(void)
return( false );
}
- CSG_Projection Target(Parameters("TARGET_CRS")->asParameters()->Get_Parameter("CRS_PROJ4")->asString(), SG_PROJ_FMT_Proj4);
+ CSG_Projection Target(Parameters("TARGET_CRS")->asParameters()->Get_Parameter("CRS_PROJ4")->asString(), SG_PROJ_FMT_Proj4);
if( !Projector.Set_Source(Source) || !Projector.Set_Target(Target) )
{
@@ -306,24 +302,24 @@ bool CCRS_Transform_Coords_Table::On_Execute(void)
}
//-----------------------------------------------------
- CSG_Table *pTable = Parameters("TABLE")->asTable();
+ CSG_Table *pTable = Parameters("TABLE")->asTable();
- int Source_X = Parameters("SOURCE_X")->asInt();
- int Source_Y = Parameters("SOURCE_Y")->asInt();
+ int Source_X = Parameters("SOURCE_X")->asInt();
+ int Source_Y = Parameters("SOURCE_Y")->asInt();
- int Target_X = Parameters("TARGET_X")->asInt();
- int Target_Y = Parameters("TARGET_Y")->asInt();
+ int Target_X = Parameters("TARGET_X")->asInt();
+ int Target_Y = Parameters("TARGET_Y")->asInt();
if( Target_X < 0 )
{
- Target_X = pTable->Get_Field_Count();
+ Target_X = pTable->Get_Field_Count();
pTable->Add_Field("X_PROJECTED", SG_DATATYPE_Double);
}
if( Target_Y < 0 )
{
- Target_Y = pTable->Get_Field_Count();
+ Target_Y = pTable->Get_Field_Count();
pTable->Add_Field("Y_PROJECTED", SG_DATATYPE_Double);
}
@@ -352,14 +348,16 @@ bool CCRS_Transform_Coords_Table::On_Execute(void)
}
//-----------------------------------------------------
+ DataObject_Update(pTable);
+
return( true );
}
///////////////////////////////////////////////////////////
-// //
-// //
-// //
+// //
+// //
+// //
///////////////////////////////////////////////////////////
//---------------------------------------------------------
=====================================
saga-gis/src/tools/projection/pj_proj4/crs_transform_coords.h
=====================================
@@ -51,9 +51,9 @@
///////////////////////////////////////////////////////////
-// //
-// //
-// //
+// //
+// //
+// //
///////////////////////////////////////////////////////////
//---------------------------------------------------------
@@ -61,9 +61,9 @@
///////////////////////////////////////////////////////////
-// //
-// //
-// //
+// //
+// //
+// //
///////////////////////////////////////////////////////////
//---------------------------------------------------------
@@ -86,7 +86,7 @@ protected:
///////////////////////////////////////////////////////////
-// //
+// //
///////////////////////////////////////////////////////////
//---------------------------------------------------------
@@ -109,9 +109,9 @@ protected:
///////////////////////////////////////////////////////////
-// //
-// //
-// //
+// //
+// //
+// //
///////////////////////////////////////////////////////////
//---------------------------------------------------------
=====================================
saga-gis/src/tools/projection/pj_proj4/crs_transform_grid.cpp
=====================================
@@ -165,6 +165,7 @@ int CCRS_Transform_Grid::On_Parameter_Changed(CSG_Parameters *pParameters, CSG_P
|| pParameter->Cmp_Identifier("CRS_PROJ4" )
|| pParameter->Cmp_Identifier("CRS_DIALOG" )
|| pParameter->Cmp_Identifier("CRS_PICKER" )
+ || pParameter->Cmp_Identifier("CRS_FILE" )
|| pParameter->Cmp_Identifier("CRS_EPSG" )
|| pParameter->Cmp_Identifier("CRS_EPSG_AUTH" )
|| pParameter->Cmp_Identifier("CRS_EPSG_GEOGCS")
=====================================
saga-gis/src/tools/shapes/shapes_grid/Grid_To_Contour.cpp
=====================================
@@ -761,42 +761,15 @@ bool CGrid_To_Contour::Get_Edge_Segments(CSG_Shapes &Edges, CSG_Shapes *pContour
}
else if( Edge.asLong(0) == Edge.asLong(1) ) // needs to determine 'going lower/higher' state in relation to contour elevation
{
- #define Edge_Point(i) { p[i] = Edge.Get_Point(i);\
- p[i].x = (p[i].x - m_pGrid->Get_XMin()) / m_pGrid->Get_Cellsize();\
- p[i].y = (p[i].y - m_pGrid->Get_YMin()) / m_pGrid->Get_Cellsize();\
- }
-
- CSG_Point p[2]; Edge_Point(0); Edge_Point(1);
-
- if( p[0].x > p[1].x || p[0].y > p[1].y )
- {
- CSG_Point _p = p[0]; p[0] = p[1]; p[1] = _p;
- }
-
- int x = (int)p[0].x, y = (int)p[0].y;
-
- double z = pContours->Get_Shape(Edge.asLong(0))->asDouble(1), dz = 0.;
-
- if( p[0].x < p[1].x )
- {
- if( p[0].x == x )
- {
- x += m_pGrid->is_InGrid(x + 1, y) && m_pGrid->asDouble(x + 1, y) != z ? 1 : -1;
- }
+ CSG_Point p[2] = { Edge.Get_Point(0), Edge.Get_Point(1) };
- dz = p[0].x < x ? z - m_pGrid->asDouble(x, y) : m_pGrid->asDouble(x, y) - z;
- }
- else // if( p[0].y < p[1].y )
- {
- if( p[0].y == y )
- {
- y += m_pGrid->is_InGrid(x, y + 1) && m_pGrid->asDouble(x, y + 1) != z ? 1 : -1;
- }
+ p[1].x = p[0].x + 0.5 * (p[1].x - p[0].x);
+ p[1].y = p[0].y + 0.5 * (p[1].y - p[0].y);
- dz = p[0].y < y ? z - m_pGrid->asDouble(x, y) : m_pGrid->asDouble(x, y) - z;
- }
+ double dz = m_pGrid->Get_Value(p[1], GRID_RESAMPLING_Bilinear)
+ - m_pGrid->Get_Value(p[0], GRID_RESAMPLING_Bilinear);
- if( dz > 0. )
+ if( dz < 0. )
{
Edge.Add_Value(0, -1);
}
@@ -1017,7 +990,7 @@ bool CGrid_To_Contour::Get_Polygons(CSG_Shape_Polygon &Polygon, CSG_Shapes &Edge
while( Add_Polygon_Segment(Segments, pPart) );
- if( Polygon.Get_Area(iPart) == 0. )
+ if( !Polygon.Get_Area(iPart) )
{
Polygon.Del_Part(iPart);
}
=====================================
saga-gis/src/tools/statistics/statistics_regression/point_multi_grid_regression.cpp
=====================================
@@ -60,7 +60,6 @@
//---------------------------------------------------------
CPoint_Multi_Grid_Regression::CPoint_Multi_Grid_Regression(void)
{
- //-----------------------------------------------------
Set_Name (_TL("Multiple Regression Analysis (Points and Predictor Grids)"));
Set_Author ("O.Conrad (c) 2004");
@@ -80,60 +79,60 @@ CPoint_Multi_Grid_Regression::CPoint_Multi_Grid_Regression(void)
//-----------------------------------------------------
Parameters.Add_Grid_List("",
- "PREDICTORS" , _TL("Predictors"),
+ "PREDICTORS" , _TL("Predictors"),
_TL(""),
PARAMETER_INPUT, true
);
Parameters.Add_Shapes("",
- "POINTS" , _TL("Points"),
+ "POINTS" , _TL("Points"),
_TL(""),
PARAMETER_INPUT, SHAPE_TYPE_Point
);
Parameters.Add_Table_Field("POINTS",
- "ATTRIBUTE" , _TL("Dependent Variable"),
+ "ATTRIBUTE" , _TL("Dependent Variable"),
_TL("")
);
Parameters.Add_Table("",
- "INFO_COEFF" , _TL("Details: Coefficients"),
+ "INFO_COEFF" , _TL("Details: Coefficients"),
_TL(""),
PARAMETER_OUTPUT_OPTIONAL
);
Parameters.Add_Table("",
- "INFO_MODEL" , _TL("Details: Model"),
+ "INFO_MODEL" , _TL("Details: Model"),
_TL(""),
PARAMETER_OUTPUT_OPTIONAL
);
Parameters.Add_Table("",
- "INFO_STEPS" , _TL("Details: Steps"),
+ "INFO_STEPS" , _TL("Details: Steps"),
_TL(""),
PARAMETER_OUTPUT_OPTIONAL
);
Parameters.Add_Shapes("",
- "RESIDUALS" , _TL("Residuals"),
+ "RESIDUALS" , _TL("Residuals"),
_TL(""),
PARAMETER_OUTPUT_OPTIONAL, SHAPE_TYPE_Point
);
Parameters.Add_Grid("",
- "REGRESSION" , _TL("Regression"),
+ "REGRESSION" , _TL("Regression"),
_TL("regression model applied to predictor grids"),
PARAMETER_OUTPUT, SHAPE_TYPE_Point
);
Parameters.Add_Grid("",
- "REGRESCORR" , _TL("Regression with Residual Correction"),
+ "REGRESCORR" , _TL("Regression with Residual Correction"),
_TL("regression model applied to predictor grids with interpolated residuals added"),
PARAMETER_OUTPUT_OPTIONAL
);
Parameters.Add_Choice("",
- "RESAMPLING" , _TL("Resampling"),
+ "RESAMPLING" , _TL("Resampling"),
_TL(""),
CSG_String::Format("%s|%s|%s|%s",
_TL("Nearest Neighbour"),
@@ -144,25 +143,25 @@ CPoint_Multi_Grid_Regression::CPoint_Multi_Grid_Regression(void)
);
Parameters.Add_Bool("",
- "COORD_X" , _TL("Include X Coordinate"),
+ "COORD_X" , _TL("Include X Coordinate"),
_TL(""),
false
);
Parameters.Add_Bool("",
- "COORD_Y" , _TL("Include Y Coordinate"),
+ "COORD_Y" , _TL("Include Y Coordinate"),
_TL(""),
false
);
Parameters.Add_Bool("",
- "INTERCEPT" , _TL("Intercept"),
+ "INTERCEPT" , _TL("Intercept"),
_TL(""),
true
);
Parameters.Add_Choice("",
- "METHOD" , _TL("Method"),
+ "METHOD" , _TL("Method"),
_TL(""),
CSG_String::Format("%s|%s|%s|%s",
_TL("include all"),
@@ -173,13 +172,13 @@ CPoint_Multi_Grid_Regression::CPoint_Multi_Grid_Regression(void)
);
Parameters.Add_Double("",
- "P_VALUE" , _TL("Significance Level"),
+ "P_VALUE" , _TL("Significance Level"),
_TL("Significance level (aka p-value) as threshold for automated predictor selection, given as percentage"),
5., 0., true, 100., true
);
Parameters.Add_Choice("",
- "CROSSVAL" , _TL("Cross Validation"),
+ "CROSSVAL" , _TL("Cross Validation"),
_TL(""),
CSG_String::Format("%s|%s|%s|%s",
_TL("none"),
@@ -190,13 +189,13 @@ CPoint_Multi_Grid_Regression::CPoint_Multi_Grid_Regression(void)
);
Parameters.Add_Int("",
- "CROSSVAL_K" , _TL("Cross Validation Subsamples"),
+ "CROSSVAL_K" , _TL("Cross Validation Subsamples"),
_TL("number of subsamples for k-fold cross validation"),
10, 2, true
);
Parameters.Add_Choice("",
- "RESIDUAL_COR" , _TL("Residual Interpolation"),
+ "RESIDUAL_COR" , _TL("Residual Interpolation"),
_TL(""),
CSG_String::Format("%s|%s",
_TL("Multilevel B-Spline Interpolation"),
@@ -239,24 +238,13 @@ int CPoint_Multi_Grid_Regression::On_Parameters_Enable(CSG_Parameters *pParamete
//---------------------------------------------------------
bool CPoint_Multi_Grid_Regression::On_Execute(void)
{
- bool bResult;
- int iAttribute;
- double P;
- CSG_Strings Names;
- CSG_Matrix Samples;
- CSG_Shapes *pPoints;
- CSG_Grid *pRegression;
- CSG_Parameter_Grid_List *pGrids;
+ CSG_Shapes *pPoints = Parameters("POINTS" )->asShapes ();
+ int Attribute = Parameters("ATTRIBUTE" )->asInt ();
+ CSG_Parameter_Grid_List *pGrids = Parameters("PREDICTORS")->asGridList();
- //-----------------------------------------------------
- pGrids = Parameters("PREDICTORS")->asGridList();
- pRegression = Parameters("REGRESSION")->asGrid();
- pPoints = Parameters("POINTS" )->asShapes();
- iAttribute = Parameters("ATTRIBUTE" )->asInt();
- P = Parameters("P_VALUE" )->asDouble() / 100.;
+ CSG_Matrix Samples; CSG_Strings Names;
- //-----------------------------------------------------
- if( !Get_Samples(pGrids, pPoints, iAttribute, Samples, Names) )
+ if( !Get_Samples(pGrids, pPoints, Attribute, Samples, Names) )
{
return( false );
}
@@ -264,12 +252,14 @@ bool CPoint_Multi_Grid_Regression::On_Execute(void)
//-----------------------------------------------------
m_Regression.Set_With_Intercept(Parameters("INTERCEPT")->asBool());
+ bool bResult; double p = Parameters("P_VALUE")->asDouble() / 100.;
+
switch( Parameters("METHOD")->asInt() )
{
- default: bResult = m_Regression.Get_Model (Samples , &Names); break;
- case 1: bResult = m_Regression.Get_Model_Forward (Samples, P , &Names); break;
- case 2: bResult = m_Regression.Get_Model_Backward(Samples, P, &Names); break;
- case 3: bResult = m_Regression.Get_Model_Stepwise(Samples, P, P, &Names); break;
+ default: bResult = m_Regression.Get_Model (Samples , &Names); break;
+ case 1: bResult = m_Regression.Get_Model_Forward (Samples, p , &Names); break;
+ case 2: bResult = m_Regression.Get_Model_Backward(Samples, p, &Names); break;
+ case 3: bResult = m_Regression.Get_Model_Stepwise(Samples, p, p, &Names); break;
}
if( bResult == false )
@@ -283,14 +273,14 @@ bool CPoint_Multi_Grid_Regression::On_Execute(void)
Message_Add(m_Regression.Get_Info(), false);
//-----------------------------------------------------
- int CrossVal;
+ int CrossVal = Parameters("CROSSVAL")->asInt();
- switch( Parameters("CROSSVAL")->asInt() )
+ switch( CrossVal )
{
- default: CrossVal = 0; break; // none
- case 1: CrossVal = 1; break; // leave one out (LOOVC)
- case 2: CrossVal = 2; break; // 2-fold
- case 3: CrossVal = Parameters("CROSSVAL_K")->asInt(); break; // k-fold
+ default: CrossVal = 0; break; // none
+ case 1: CrossVal = 1; break; // leave one out (LOOVC)
+ case 2: CrossVal = 2; break; // 2-fold
+ case 3: CrossVal = Parameters("CROSSVAL_K")->asInt(); break; // k-fold
}
if( CrossVal > 0 && m_Regression.Get_CrossValidation(CrossVal) )
@@ -304,6 +294,8 @@ bool CPoint_Multi_Grid_Regression::On_Execute(void)
}
//-----------------------------------------------------
+ CSG_Grid *pRegression = Parameters("REGRESSION")->asGrid();
+
Set_Regression(pGrids, pRegression, CSG_String::Format("%s.%s [%s]", pPoints->Get_Name(), Parameters("ATTRIBUTE")->asString(), _TL("Regression")));
//-----------------------------------------------------
@@ -341,16 +333,21 @@ bool CPoint_Multi_Grid_Regression::On_Execute(void)
///////////////////////////////////////////////////////////
//---------------------------------------------------------
-bool CPoint_Multi_Grid_Regression::Get_Samples(CSG_Parameter_Grid_List *pGrids, CSG_Shapes *pPoints, int iAttribute, CSG_Matrix &Samples, CSG_Strings &Names)
+bool CPoint_Multi_Grid_Regression::Get_Samples(CSG_Parameter_Grid_List *pGrids, CSG_Shapes *pPoints, int Attribute, CSG_Matrix &Samples, CSG_Strings &Names)
{
- int iGrid;
- double zGrid;
- CSG_Vector Sample;
+ Names.Clear(); Names += pPoints->Get_Field_Name(Attribute); // Dependent Variable
- //-----------------------------------------------------
- bool bCoord_X = Parameters("COORD_X")->asBool();
- bool bCoord_Y = Parameters("COORD_Y")->asBool();
+ for(int iGrid=0; iGrid<pGrids->Get_Grid_Count(); iGrid++) // Independent Variables
+ {
+ Names += pGrids->Get_Grid(iGrid)->Get_Name();
+ }
+
+ bool bCoord_X = Parameters("COORD_X")->asBool(); if( bCoord_X ) { Names += "X"; }
+ bool bCoord_Y = Parameters("COORD_Y")->asBool(); if( bCoord_Y ) { Names += "Y"; }
+ CSG_Vector Sample(1 + pGrids->Get_Grid_Count() + (bCoord_X ? 1 : 0) + (bCoord_Y ? 1 : 0));
+
+ //-----------------------------------------------------
TSG_Grid_Resampling Resampling;
switch( Parameters("RESAMPLING")->asInt() )
@@ -361,50 +358,37 @@ bool CPoint_Multi_Grid_Regression::Get_Samples(CSG_Parameter_Grid_List *pGrids,
case 3: Resampling = GRID_RESAMPLING_BSpline ; break;
}
- Names += pPoints->Get_Field_Name(iAttribute); // Dependent Variable
-
- for(iGrid=0; iGrid<pGrids->Get_Grid_Count(); iGrid++) // Independent Variables
- {
- Names += pGrids->Get_Grid(iGrid)->Get_Name();
- }
-
- if( bCoord_X ) { Names += "X"; }
- if( bCoord_Y ) { Names += "Y"; }
-
- Sample.Create(1 + pGrids->Get_Grid_Count() + (bCoord_X ? 1 : 0) + (bCoord_Y ? 1 : 0));
-
//-----------------------------------------------------
- for(sLong iShape=0; iShape<pPoints->Get_Count() && Set_Progress(iShape, pPoints->Get_Count()); iShape++)
+ for(sLong i=0; i<pPoints->Get_Count() && Set_Progress(i, pPoints->Get_Count()); i++)
{
- CSG_Shape *pShape = pPoints->Get_Shape(iShape);
+ CSG_Shape *pShape = pPoints->Get_Shape(i);
- if( !pShape->is_NoData(iAttribute) )
+ if( !pShape->is_NoData(Attribute) )
{
- Sample[0] = pShape->asDouble(iAttribute);
+ Sample[0] = pShape->asDouble(Attribute);
for(int iPart=0; iPart<pShape->Get_Part_Count(); iPart++)
{
for(int iPoint=0; iPoint<pShape->Get_Point_Count(iPart); iPoint++)
{
- bool bAdd = true;
- TSG_Point Point = pShape->Get_Point(iPoint, iPart);
+ int iPredictor; double z; CSG_Point Point = pShape->Get_Point(iPoint, iPart);
- for(iGrid=0; iGrid<pGrids->Get_Grid_Count() && bAdd; iGrid++)
+ for(iPredictor=0; iPredictor<pGrids->Get_Grid_Count(); iPredictor++)
{
- if( pGrids->Get_Grid(iGrid)->Get_Value(Point, zGrid, Resampling) )
+ if( pGrids->Get_Grid(iPredictor)->Get_Value(Point, z, Resampling) )
{
- Sample[1 + iGrid] = zGrid;
+ Sample[1 + iPredictor] = z;
}
else
{
- bAdd = false;
+ break;
}
}
- if( bAdd )
+ if( iPredictor == pGrids->Get_Grid_Count() )
{
- if( bCoord_X ) { Sample[1 + iGrid++] = Point.x; }
- if( bCoord_Y ) { Sample[1 + iGrid++] = Point.y; }
+ if( bCoord_X ) { Sample[1 + iPredictor++] = Point.x; }
+ if( bCoord_Y ) { Sample[1 + iPredictor++] = Point.y; }
Samples.Add_Row(Sample);
}
@@ -431,29 +415,26 @@ bool CPoint_Multi_Grid_Regression::Set_Regression(CSG_Parameter_Grid_List *pGrid
}
//-----------------------------------------------------
- int iGrid, nGrids, x, y;
- TSG_Point p;
-
TSG_Grid_Resampling Resampling;
switch( Parameters("RESAMPLING")->asInt() )
{
- default: Resampling = GRID_RESAMPLING_NearestNeighbour; break;
- case 1: Resampling = GRID_RESAMPLING_Bilinear; break;
- case 2: Resampling = GRID_RESAMPLING_BicubicSpline; break;
- case 3: Resampling = GRID_RESAMPLING_BSpline; break;
+ default: Resampling = GRID_RESAMPLING_NearestNeighbour; break;
+ case 1: Resampling = GRID_RESAMPLING_Bilinear ; break;
+ case 2: Resampling = GRID_RESAMPLING_BicubicSpline ; break;
+ case 3: Resampling = GRID_RESAMPLING_BSpline ; break;
}
- CSG_Grid **ppGrids = (CSG_Grid **)SG_Malloc(m_Regression.Get_nPredictors() * sizeof(CSG_Grid *));
+ //-----------------------------------------------------
+ CSG_Grid **ppGrids = (CSG_Grid **)SG_Malloc(m_Regression.Get_nPredictors() * sizeof(CSG_Grid *));
- int iCoord_X = -1;
- int iCoord_Y = -1;
+ int iCoord_X = -1, iCoord_Y = -1, nGrids = 0;
- for(iGrid=0, nGrids=0; iGrid<m_Regression.Get_nPredictors(); iGrid++)
+ for(int iGrid=0; iGrid<m_Regression.Get_nPredictors(); iGrid++)
{
if( m_Regression.Get_Predictor(iGrid) < pGrids->Get_Grid_Count() )
{
- ppGrids[nGrids++] = pGrids->Get_Grid(m_Regression.Get_Predictor(iGrid));
+ ppGrids[nGrids++] = pGrids->Get_Grid(m_Regression.Get_Predictor(iGrid));
}
else if( m_Regression.Get_Predictor(iGrid) == pGrids->Get_Grid_Count() && Parameters("COORD_X")->asBool() )
{
@@ -468,24 +449,21 @@ bool CPoint_Multi_Grid_Regression::Set_Regression(CSG_Parameter_Grid_List *pGrid
pRegression->Set_Name(Name);
//-----------------------------------------------------
- for(y=0, p.y=Get_YMin(); y<Get_NY() && Set_Progress_Rows(y); y++, p.y+=Get_Cellsize())
+ for(int y=0; y<Get_NY() && Set_Progress_Rows(y); y++)
{
- for(x=0, p.x=Get_XMin(); x<Get_NX(); x++, p.x+=Get_Cellsize())
+ double py = Get_YMin() + y * Get_Cellsize();
+
+ for(int x=0; x<Get_NX(); x++)
{
- bool bOkay;
- double z = m_Regression.Get_RConst();
+ double px = Get_XMin() + x * Get_Cellsize(), pz, z = m_Regression.Get_RConst();
- for(iGrid=0, bOkay=true; bOkay && iGrid<nGrids; iGrid++)
- {
- double zGrid;
+ bool bOkay = true;
- if( ppGrids[iGrid]->Get_Value(p, zGrid, Resampling) )
- {
- z += m_Regression.Get_RCoeff(iGrid) * zGrid;
- }
- else
+ for(int iGrid=0; bOkay && iGrid<nGrids; iGrid++)
+ {
+ if( (bOkay = ppGrids[iGrid]->Get_Value(px, py, pz, Resampling)) == true )
{
- bOkay = false;
+ z += m_Regression.Get_RCoeff(iGrid) * pz;
}
}
@@ -494,12 +472,12 @@ bool CPoint_Multi_Grid_Regression::Set_Regression(CSG_Parameter_Grid_List *pGrid
{
if( iCoord_X >= 0 )
{
- z += m_Regression.Get_RCoeff(iCoord_X) * p.x;
+ z += m_Regression.Get_RCoeff(iCoord_X) * px;
}
if( iCoord_Y >= 0 )
{
- z += m_Regression.Get_RCoeff(iCoord_Y) * p.y;
+ z += m_Regression.Get_RCoeff(iCoord_Y) * py;
}
pRegression->Set_Value (x, y, z);
@@ -531,45 +509,44 @@ bool CPoint_Multi_Grid_Regression::Set_Residuals(CSG_Shapes *pResiduals)
}
//-----------------------------------------------------
- CSG_Shapes *pPoints = Parameters("POINTS" )->asShapes();
- CSG_Grid *pRegression = Parameters("REGRESSION")->asGrid();
- int iAttribute = Parameters("ATTRIBUTE" )->asInt();
+ CSG_Shapes *pPoints = Parameters("POINTS" )->asShapes();
+ int Attribute = Parameters("ATTRIBUTE" )->asInt ();
+ CSG_Grid *pRegression = Parameters("REGRESSION")->asGrid ();
TSG_Grid_Resampling Resampling;
switch( Parameters("RESAMPLING")->asInt() )
{
- default: Resampling = GRID_RESAMPLING_NearestNeighbour; break;
- case 1: Resampling = GRID_RESAMPLING_Bilinear; break;
- case 2: Resampling = GRID_RESAMPLING_BicubicSpline; break;
- case 3: Resampling = GRID_RESAMPLING_BSpline; break;
+ default: Resampling = GRID_RESAMPLING_NearestNeighbour; break;
+ case 1: Resampling = GRID_RESAMPLING_Bilinear ; break;
+ case 2: Resampling = GRID_RESAMPLING_BicubicSpline ; break;
+ case 3: Resampling = GRID_RESAMPLING_BSpline ; break;
}
//-----------------------------------------------------
pResiduals->Create(SHAPE_TYPE_Point, CSG_String::Format("%s.%s [%s]", pPoints->Get_Name(), Parameters("ATTRIBUTE")->asString(), _TL("Residuals")));
- pResiduals->Add_Field(pPoints->Get_Field_Name(iAttribute), SG_DATATYPE_Double);
+ pResiduals->Add_Field(pPoints->Get_Field_Name(Attribute), SG_DATATYPE_Double);
pResiduals->Add_Field("TREND" , SG_DATATYPE_Double);
pResiduals->Add_Field("RESIDUAL", SG_DATATYPE_Double);
//-----------------------------------------------------
for(sLong iShape=0; iShape<pPoints->Get_Count() && Set_Progress(iShape, pPoints->Get_Count()); iShape++)
{
- CSG_Shape *pShape = pPoints->Get_Shape(iShape);
+ CSG_Shape *pShape = pPoints->Get_Shape(iShape);
- if( !pShape->is_NoData(iAttribute) )
+ if( !pShape->is_NoData(Attribute) )
{
- double zShape = pShape->asDouble(iAttribute);
+ double zShape = pShape->asDouble(Attribute);
for(int iPart=0; iPart<pShape->Get_Part_Count(); iPart++)
{
for(int iPoint=0; iPoint<pShape->Get_Point_Count(iPart); iPoint++)
{
- double zGrid;
- TSG_Point Point = pShape->Get_Point(iPoint, iPart);
+ double zGrid; CSG_Point Point = pShape->Get_Point(iPoint, iPart);
if( pRegression->Get_Value(Point, zGrid, Resampling) )
{
- CSG_Shape *pResidual = pResiduals->Add_Shape();
+ CSG_Shape *pResidual = pResiduals->Add_Shape();
pResidual->Add_Point(Point);
pResidual->Set_Value(0, zShape);
@@ -588,14 +565,13 @@ bool CPoint_Multi_Grid_Regression::Set_Residuals(CSG_Shapes *pResiduals)
//---------------------------------------------------------
bool CPoint_Multi_Grid_Regression::Set_Residual_Corr(CSG_Grid *pRegression, CSG_Shapes *pResiduals, CSG_Grid *pCorrection)
{
- //-----------------------------------------------------
if( !pCorrection )
{
return( false );
}
//-----------------------------------------------------
- CSG_Shapes Residuals;
+ CSG_Shapes Residuals;
if( !pResiduals )
{
@@ -604,47 +580,46 @@ bool CPoint_Multi_Grid_Regression::Set_Residual_Corr(CSG_Grid *pRegression, CSG_
return( false );
}
- pResiduals = &Residuals;
+ pResiduals = &Residuals;
}
//-----------------------------------------------------
switch( Parameters("RESIDUAL_COR")->asInt() )
{
- default: // Multlevel B-Spline Interpolation
- SG_RUN_TOOL_ExitOnError("grid_spline", 4,
- SG_TOOL_PARAMETER_SET("SHAPES" , pResiduals)
- && SG_TOOL_PARAMETER_SET("FIELD" , 2)
- && SG_TOOL_PARAMETER_SET("TARGET_DEFINITION", 1) // grid or grid system
- && SG_TOOL_PARAMETER_SET("TARGET_OUT_GRID" , pCorrection)
+ default:
+ SG_RUN_TOOL_ExitOnError("grid_spline", 4, // Multlevel B-Spline Interpolation
+ SG_TOOL_PARAMETER_SET("SHAPES" , pResiduals )
+ && SG_TOOL_PARAMETER_SET("FIELD" , 2 )
+ && SG_TOOL_PARAMETER_SET("TARGET_DEFINITION", 1 ) // grid or grid system
+ && SG_TOOL_PARAMETER_SET("TARGET_OUT_GRID" , pCorrection)
);
break;
- case 1: // Inverse Distance Weighted
- SG_RUN_TOOL_ExitOnError("grid_gridding", 1,
- SG_TOOL_PARAMETER_SET("SHAPES" , pResiduals)
- && SG_TOOL_PARAMETER_SET("FIELD" , 2)
- && SG_TOOL_PARAMETER_SET("TARGET_DEFINITION", 1) // grid or grid system
- && SG_TOOL_PARAMETER_SET("TARGET_OUT_GRID" , pCorrection)
- && SG_TOOL_PARAMETER_SET("SEARCH_RANGE" , 1) // global
- && SG_TOOL_PARAMETER_SET("SEARCH_POINTS_ALL", 1) // all points within search distance
+ case 1:
+ SG_RUN_TOOL_ExitOnError("grid_gridding", 1, // Inverse Distance Weighted
+ SG_TOOL_PARAMETER_SET("POINTS" , pResiduals )
+ && SG_TOOL_PARAMETER_SET("FIELD" , 2 )
+ && SG_TOOL_PARAMETER_SET("TARGET_DEFINITION", 1 ) // grid or grid system
+ && SG_TOOL_PARAMETER_SET("TARGET_OUT_GRID" , pCorrection)
+ && SG_TOOL_PARAMETER_SET("SEARCH_RANGE" , 1 ) // global
+ && SG_TOOL_PARAMETER_SET("SEARCH_POINTS_ALL", 1 ) // all points within search distance
+ // && SG_TOOL_PARAMETER_SET("DW_WEIGHTING" , 1 ) // inverse distance to a power (default)
+ // && SG_TOOL_PARAMETER_SET("DW_IDW_POWER" , 2. ) // power
);
break;
}
//-----------------------------------------------------
#pragma omp parallel for
- for(int y=0; y<Get_NY(); y++)
+ for(int y=0; y<Get_NY(); y++) for(int x=0; x<Get_NX(); x++)
{
- for(int x=0; x<Get_NX(); x++)
+ if( pRegression->is_NoData(x, y) || pCorrection->is_NoData(x, y) )
{
- if( pRegression->is_NoData(x, y) || pCorrection->is_NoData(x, y) )
- {
- pCorrection->Set_NoData(x, y);
- }
- else
- {
- pCorrection->Add_Value(x, y, pRegression->asDouble(x, y));
- }
+ pCorrection->Set_NoData(x, y);
+ }
+ else
+ {
+ pCorrection->Add_Value(x, y, pRegression->asDouble(x, y));
}
}
@@ -662,10 +637,8 @@ bool CPoint_Multi_Grid_Regression::Set_Residual_Corr(CSG_Grid *pRegression, CSG_
///////////////////////////////////////////////////////////
//---------------------------------------------------------
-
-// //-----------------------------------------------------
-// Parameters.Add_Choice(
-// NULL ,"CORRECTION" , _TL("Adjustment"),
+// Parameters.Add_Choice("",
+// "CORRECTION", _TL("Adjustment"),
// _TL(""),
// CSG_String::Format("%s|%s|%s|%s|%s|%s",
// _TL("Smith"),
@@ -677,16 +650,16 @@ bool CPoint_Multi_Grid_Regression::Set_Residual_Corr(CSG_Grid *pRegression, CSG_
// ), 1
// );
//
-// TSG_Regression_Correction m_Correction;
+// TSG_Regression_Correction m_Correction;
//
// switch( Parameters("CORRECTION")->asInt() )
// {
-// case 0: m_Correction = REGRESSION_CORR_Smith; break;
-// case 1: m_Correction = REGRESSION_CORR_Wherry_1; break;
-// case 2: m_Correction = REGRESSION_CORR_Wherry_2; break;
-// case 3: m_Correction = REGRESSION_CORR_Olkin_Pratt; break;
-// case 4: m_Correction = REGRESSION_CORR_Pratt; break;
-// case 5: m_Correction = REGRESSION_CORR_Claudy_3; break;
+// case 0: m_Correction = REGRESSION_CORR_Smith ; break;
+// case 1: m_Correction = REGRESSION_CORR_Wherry_1 ; break;
+// case 2: m_Correction = REGRESSION_CORR_Wherry_2 ; break;
+// case 3: m_Correction = REGRESSION_CORR_Olkin_Pratt; break;
+// case 4: m_Correction = REGRESSION_CORR_Pratt ; break;
+// case 5: m_Correction = REGRESSION_CORR_Claudy_3 ; break;
// }
//
=====================================
saga-gis/version.cmake
=====================================
@@ -1,7 +1,7 @@
# The version number.
set (SAGA_VERSION_MAJOR 9)
set (SAGA_VERSION_MINOR 3)
-set (SAGA_VERSION_PATCH 1)
+set (SAGA_VERSION_PATCH 2)
# get git commit hash (or dirty if git is not installed)
View it on GitLab: https://salsa.debian.org/debian-gis-team/saga/-/commit/b55c37e530c6112a69e3bd0da325a0859009ffca
--
View it on GitLab: https://salsa.debian.org/debian-gis-team/saga/-/commit/b55c37e530c6112a69e3bd0da325a0859009ffca
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/20240313/9db2110f/attachment-0001.htm>
More information about the Pkg-grass-devel
mailing list