[saga] 01/05: Imported Upstream version 2.2.4+dfsg

Johan Van de Wauw johanvdw-guest at moszumanska.debian.org
Thu Feb 25 17:10:09 UTC 2016


This is an automated email from the git hooks/post-receive script.

johanvdw-guest pushed a commit to branch master
in repository saga.

commit b870a04a8408744f7862fd1bb49f21e6fadd55d8
Author: Johan Van de Wauw <johan at vandewauw.be>
Date:   Thu Feb 25 18:07:32 2016 +0100

    Imported Upstream version 2.2.4+dfsg
---
 AUTHORS                                            |    0
 COPYING                                            |    0
 ChangeLog                                          |    0
 Makefile.am                                        |    7 +-
 Makefile.in                                        |   88 +-
 NEWS                                               |    0
 README                                             |    2 +-
 config.h.in                                        |    3 +
 configure                                          |  218 +-
 configure.ac                                       |   39 +-
 m4/ax_lib_postgresql.m4                            |    0
 m4/ax_pkg_swig.m4                                  |    0
 m4/ax_python_devel.m4                              |    0
 m4/ax_swig_enable_cxx.m4                           |    0
 m4/ax_swig_python.m4                               |    0
 src/Makefile.am                                    |    0
 src/modules/Makefile.am                            |    0
 src/modules/climate/Makefile.am                    |    0
 .../climate/climate_tools/MLB_Interface.cpp        |    0
 src/modules/climate/climate_tools/MLB_Interface.h  |    0
 src/modules/climate/climate_tools/Makefile.am      |    0
 src/modules/climate/climate_tools/daily_sun.cpp    |    0
 src/modules/climate/climate_tools/daily_sun.h      |    0
 .../climate/climate_tools/etp_hargreave.cpp        |    0
 src/modules/climate/climate_tools/etp_hargreave.h  |    0
 .../climate_tools/grid_levels_interpolation.cpp    |   22 +-
 .../climate_tools/grid_levels_interpolation.h      |    4 +-
 src/modules/climate/climate_tools/milankovic.cpp   |    0
 src/modules/climate/climate_tools/milankovic.h     |    0
 src/modules/contrib/Makefile.am                    |    0
 src/modules/contrib/contrib_peregro/A1WiTh.cpp     |    0
 src/modules/contrib/contrib_peregro/A1WiTh.h       |    0
 src/modules/contrib/contrib_peregro/A2WiTh.cpp     |    0
 src/modules/contrib/contrib_peregro/A2WiTh.h       |    0
 src/modules/contrib/contrib_peregro/A3WiTh.cpp     |    0
 src/modules/contrib/contrib_peregro/A3WiTh.h       |    0
 src/modules/contrib/contrib_peregro/AvWiMa1.cpp    |    0
 src/modules/contrib/contrib_peregro/AvWiMa1.h      |    0
 src/modules/contrib/contrib_peregro/AvWiMa2.cpp    |    0
 src/modules/contrib/contrib_peregro/AvWiMa2.h      |    0
 .../contrib/contrib_peregro/MLB_Interface.cpp      |    0
 .../contrib/contrib_peregro/MLB_Interface.h        |    0
 src/modules/contrib/contrib_peregro/Makefile.am    |    0
 .../contrib/contrib_peregro/destriping1.cpp        |    0
 src/modules/contrib/contrib_peregro/destriping1.h  |    0
 .../contrib/contrib_peregro/destriping2.cpp        |    0
 src/modules/contrib/contrib_peregro/destriping2.h  |    0
 .../contrib/contrib_peregro/directional1.cpp       |    0
 src/modules/contrib/contrib_peregro/directional1.h |    0
 src/modules/db/Makefile.am                         |    0
 src/modules/db/db_odbc/MLB_Interface.cpp           |    0
 src/modules/db/db_odbc/MLB_Interface.h             |    0
 src/modules/db/db_odbc/Makefile.am                 |    0
 src/modules/db/db_odbc/get_connection.cpp          |    0
 src/modules/db/db_odbc/get_connection.h            |    0
 src/modules/db/db_odbc/odbc.cpp                    |    0
 src/modules/db/db_odbc/odbc.h                      |    0
 src/modules/db/db_odbc/otlv4.h                     |    0
 src/modules/db/db_odbc/table.cpp                   |    0
 src/modules/db/db_odbc/table.h                     |    0
 src/modules/db/db_pgsql/MLB_Interface.cpp          |    0
 src/modules/db/db_pgsql/MLB_Interface.h            |    0
 src/modules/db/db_pgsql/Makefile.am                |    0
 src/modules/db/db_pgsql/db_pgsql.cpp               |    0
 src/modules/db/db_pgsql/db_pgsql.h                 |    0
 src/modules/db/db_pgsql/get_connection.cpp         |    0
 src/modules/db/db_pgsql/get_connection.h           |    0
 src/modules/db/db_pgsql/pgis_raster.cpp            |    0
 src/modules/db/db_pgsql/pgis_raster.h              |    0
 src/modules/db/db_pgsql/pgis_shapes.cpp            |    0
 src/modules/db/db_pgsql/pgis_shapes.h              |    0
 src/modules/db/db_pgsql/table.cpp                  |    0
 src/modules/db/db_pgsql/table.h                    |    0
 src/modules/docs/Makefile.am                       |    0
 src/modules/docs/docs_html/CreateWebContent.cpp    |    0
 src/modules/docs/docs_html/CreateWebContent.h      |    0
 src/modules/docs/docs_html/MLB_Interface.cpp       |    0
 src/modules/docs/docs_html/MLB_Interface.h         |    0
 src/modules/docs/docs_html/Makefile.am             |    0
 src/modules/docs/docs_html/doc_html.cpp            |    0
 src/modules/docs/docs_html/doc_html.h              |    0
 src/modules/docs/docs_html/doc_svg.cpp             |    0
 src/modules/docs/docs_html/doc_svg.h               |    0
 src/modules/docs/docs_html/svg_interactive_map.cpp |    2 +-
 src/modules/docs/docs_html/svg_interactive_map.h   |    0
 src/modules/docs/docs_pdf/MLB_Interface.cpp        |    0
 src/modules/docs/docs_pdf/MLB_Interface.h          |    0
 src/modules/docs/docs_pdf/Makefile.am              |    0
 .../docs/docs_pdf/Profile_Cross_Sections.cpp       |    0
 src/modules/docs/docs_pdf/Profile_Cross_Sections.h |    0
 src/modules/docs/docs_pdf/Shapes_Report.cpp        |    0
 src/modules/docs/docs_pdf/Shapes_Report.h          |    0
 src/modules/docs/docs_pdf/Shapes_Summary.cpp       |    0
 src/modules/docs/docs_pdf/Shapes_Summary.h         |    0
 src/modules/docs/docs_pdf/doc_pdf.cpp              |    0
 src/modules/docs/docs_pdf/doc_pdf.h                |    0
 src/modules/garden/Makefile.am                     |    0
 .../garden_3d_viewer/3d_viewer_globe_grid.cpp      |    0
 .../garden/garden_3d_viewer/3d_viewer_globe_grid.h |    0
 .../garden_3d_viewer/3d_viewer_multiple_grids.cpp  |    0
 .../garden_3d_viewer/3d_viewer_multiple_grids.h    |    0
 .../garden_3d_viewer/3d_viewer_pointcloud.cpp      |    0
 .../garden/garden_3d_viewer/3d_viewer_pointcloud.h |    0
 .../garden/garden_3d_viewer/3d_viewer_shapes.cpp   |    0
 .../garden/garden_3d_viewer/3d_viewer_shapes.h     |    0
 .../garden/garden_3d_viewer/3d_viewer_tin.cpp      |    0
 .../garden/garden_3d_viewer/3d_viewer_tin.h        |    0
 .../garden/garden_3d_viewer/MLB_Interface.cpp      |    0
 .../garden/garden_3d_viewer/MLB_Interface.h        |    0
 src/modules/garden/garden_3d_viewer/Makefile.am    |    0
 src/modules/garden/garden_fractals/Bifurcation.cpp |    0
 src/modules/garden/garden_fractals/Bifurcation.h   |    0
 .../garden/garden_fractals/Gaussian_Landscapes.cpp |    0
 .../garden/garden_fractals/Gaussian_Landscapes.h   |    0
 .../garden_fractals/Grid_FractalDimension.cpp      |    4 +-
 .../garden/garden_fractals/Grid_FractalDimension.h |    0
 .../garden/garden_fractals/MLB_Interface.cpp       |    0
 src/modules/garden/garden_fractals/MLB_Interface.h |    0
 src/modules/garden/garden_fractals/Makefile.am     |    0
 src/modules/garden/garden_fractals/Mandelbrot.cpp  |    0
 src/modules/garden/garden_fractals/Mandelbrot.h    |    0
 src/modules/garden/garden_fractals/Newton.cpp      |    0
 src/modules/garden/garden_fractals/Newton.h        |    0
 .../garden/garden_fractals/Pythagoras_Tree.cpp     |    0
 .../garden/garden_fractals/Pythagoras_Tree.h       |    0
 src/modules/garden/garden_games/MLB_Interface.cpp  |    0
 src/modules/garden/garden_games/MLB_Interface.h    |    0
 src/modules/garden/garden_games/Makefile.am        |    0
 src/modules/garden/garden_games/Mine_Sweeper.cpp   |    0
 src/modules/garden/garden_games/Mine_Sweeper.h     |    0
 .../garden/garden_games/Mine_Sweeper_Res.cpp       |    0
 src/modules/garden/garden_games/Sudoku.cpp         |    0
 src/modules/garden/garden_games/Sudoku.h           |    0
 .../garden/garden_learn_to_program/Exercise_01.cpp |    0
 .../garden/garden_learn_to_program/Exercise_01.h   |    0
 .../garden/garden_learn_to_program/Exercise_02.cpp |    0
 .../garden/garden_learn_to_program/Exercise_02.h   |    0
 .../garden/garden_learn_to_program/Exercise_03.cpp |    0
 .../garden/garden_learn_to_program/Exercise_03.h   |    0
 .../garden/garden_learn_to_program/Exercise_04.cpp |    0
 .../garden/garden_learn_to_program/Exercise_04.h   |    0
 .../garden/garden_learn_to_program/Exercise_05.cpp |    0
 .../garden/garden_learn_to_program/Exercise_05.h   |    0
 .../garden/garden_learn_to_program/Exercise_06.cpp |    0
 .../garden/garden_learn_to_program/Exercise_06.h   |    0
 .../garden/garden_learn_to_program/Exercise_07.cpp |    0
 .../garden/garden_learn_to_program/Exercise_07.h   |    0
 .../garden/garden_learn_to_program/Exercise_08.cpp |    0
 .../garden/garden_learn_to_program/Exercise_08.h   |    0
 .../garden/garden_learn_to_program/Exercise_09.cpp |    0
 .../garden/garden_learn_to_program/Exercise_09.h   |    0
 .../garden/garden_learn_to_program/Exercise_10.cpp |    0
 .../garden/garden_learn_to_program/Exercise_10.h   |    0
 .../garden/garden_learn_to_program/Exercise_11.cpp |    0
 .../garden/garden_learn_to_program/Exercise_11.h   |    0
 .../garden/garden_learn_to_program/Exercise_12.cpp |    0
 .../garden/garden_learn_to_program/Exercise_12.h   |    0
 .../garden/garden_learn_to_program/Exercise_13.cpp |    0
 .../garden/garden_learn_to_program/Exercise_13.h   |    0
 .../garden/garden_learn_to_program/Exercise_14.cpp |    0
 .../garden/garden_learn_to_program/Exercise_14.h   |    0
 .../garden_learn_to_program/MLB_Interface.cpp      |    0
 .../garden/garden_learn_to_program/MLB_Interface.h |    0
 .../garden/garden_learn_to_program/Makefile.am     |    0
 .../garden/garden_webservices/MLB_Interface.cpp    |    0
 .../garden/garden_webservices/MLB_Interface.h      |    0
 src/modules/garden/garden_webservices/Makefile.am  |    0
 .../garden/garden_webservices/osm_import.cpp       |    0
 src/modules/garden/garden_webservices/osm_import.h |    0
 .../garden/garden_webservices/wms_import.cpp       |  589 +-
 src/modules/garden/garden_webservices/wms_import.h |   58 +-
 src/modules/grid/Makefile.am                       |    0
 .../grid/grid_analysis/Cost_Anisotropic.cpp        |  191 -
 src/modules/grid/grid_analysis/Cost_Anisotropic.h  |   60 -
 src/modules/grid/grid_analysis/Cost_Isotropic.cpp  |  444 +-
 src/modules/grid/grid_analysis/Cost_Isotropic.h    |   97 +-
 src/modules/grid/grid_analysis/CoveredDistance.cpp |    0
 src/modules/grid/grid_analysis/CoveredDistance.h   |    0
 .../grid/grid_analysis/CrossClassification.cpp     |    0
 .../grid/grid_analysis/CrossClassification.h       |    0
 src/modules/grid/grid_analysis/Grid_AHP.cpp        |    0
 src/modules/grid/grid_analysis/Grid_AHP.h          |    0
 .../grid_analysis/Grid_Accumulation_Functions.cpp  |    0
 .../grid_analysis/Grid_Accumulation_Functions.h    |    0
 .../grid/grid_analysis/Grid_AggregationIndex.cpp   |    0
 .../grid/grid_analysis/Grid_AggregationIndex.h     |    0
 src/modules/grid/grid_analysis/Grid_CVA.cpp        |    0
 src/modules/grid/grid_analysis/Grid_CVA.h          |    0
 src/modules/grid/grid_analysis/Grid_IMCORR.cpp     |    0
 src/modules/grid/grid_analysis/Grid_IMCORR.h       |    0
 .../grid_analysis/Grid_LayerOfMaximumValue.cpp     |    0
 .../grid/grid_analysis/Grid_LayerOfMaximumValue.h  |    0
 src/modules/grid/grid_analysis/Grid_Pattern.cpp    |    0
 src/modules/grid/grid_analysis/Grid_Pattern.h      |    0
 .../grid/grid_analysis/LeastCostPathProfile.cpp    |  235 +-
 .../grid/grid_analysis/LeastCostPathProfile.h      |   22 +-
 .../grid_analysis/LeastCostPathProfile_Points.cpp  |  217 +-
 .../grid_analysis/LeastCostPathProfile_Points.h    |   15 +-
 src/modules/grid/grid_analysis/MLB_Interface.cpp   |    6 +-
 src/modules/grid/grid_analysis/MLB_Interface.h     |    0
 src/modules/grid/grid_analysis/Makefile.am         |    6 +-
 src/modules/grid/grid_analysis/Makefile.in         |   24 +-
 src/modules/grid/grid_analysis/PointsEx.cpp        |   44 -
 src/modules/grid/grid_analysis/PointsEx.h          |   29 -
 src/modules/grid/grid_analysis/Soil_Texture.cpp    |    0
 src/modules/grid/grid_analysis/Soil_Texture.h      |    0
 .../grid/grid_analysis/diversity_analysis.cpp      |  184 +-
 .../grid/grid_analysis/diversity_analysis.h        |    6 +-
 .../grid/grid_analysis/fragmentation_base.cpp      |    0
 .../grid/grid_analysis/fragmentation_base.h        |    0
 .../grid/grid_analysis/fragmentation_classify.cpp  |    0
 .../grid/grid_analysis/fragmentation_classify.h    |    0
 .../grid_analysis/fragmentation_resampling.cpp     |    0
 .../grid/grid_analysis/fragmentation_resampling.h  |    0
 .../grid/grid_analysis/fragmentation_standard.cpp  |    0
 .../grid/grid_analysis/fragmentation_standard.h    |    0
 src/modules/grid/grid_analysis/owa.cpp             |    0
 src/modules/grid/grid_analysis/owa.h               |    0
 src/modules/grid/grid_calculus/Fuzzify.cpp         |    0
 src/modules/grid/grid_calculus/Fuzzify.h           |    0
 src/modules/grid/grid_calculus/FuzzyAND.cpp        |    0
 src/modules/grid/grid_calculus/FuzzyAND.h          |    0
 src/modules/grid/grid_calculus/FuzzyOR.cpp         |    0
 src/modules/grid/grid_calculus/FuzzyOR.h           |    0
 src/modules/grid/grid_calculus/Grid_Calculator.cpp |   61 +-
 src/modules/grid/grid_calculus/Grid_Calculator.h   |    0
 .../grid/grid_calculus/Grid_Geometric_Figures.cpp  |    0
 .../grid/grid_calculus/Grid_Geometric_Figures.h    |    0
 src/modules/grid/grid_calculus/Grid_Normalise.cpp  |    0
 src/modules/grid/grid_calculus/Grid_Normalise.h    |    0
 src/modules/grid/grid_calculus/Grid_Plotter.cpp    |  165 +-
 src/modules/grid/grid_calculus/Grid_Plotter.h      |   23 +-
 .../grid/grid_calculus/Grid_Random_Field.cpp       |    0
 src/modules/grid/grid_calculus/Grid_Random_Field.h |    0
 .../grid/grid_calculus/Grid_Random_Terrain.cpp     |    0
 .../grid/grid_calculus/Grid_Random_Terrain.h       |    0
 src/modules/grid/grid_calculus/Grid_Volume.cpp     |    0
 src/modules/grid/grid_calculus/Grid_Volume.h       |    0
 src/modules/grid/grid_calculus/MLB_Interface.cpp   |    0
 src/modules/grid/grid_calculus/MLB_Interface.h     |    0
 src/modules/grid/grid_calculus/Makefile.am         |    0
 .../grid/grid_calculus/gradient_cartes_polar.cpp   |    0
 .../grid/grid_calculus/gradient_cartes_polar.h     |    0
 src/modules/grid/grid_calculus/grid_difference.cpp |   74 +-
 src/modules/grid/grid_calculus/grid_difference.h   |    0
 .../grid/grid_calculus/grid_metric_conversion.cpp  |    0
 .../grid/grid_calculus/grid_metric_conversion.h    |    0
 src/modules/grid/grid_calculus/kff_synth.cpp       |    0
 src/modules/grid/grid_calculus/kff_synth.h         |    0
 .../grid/grid_calculus_bsl/MLB_Interface.cpp       |    0
 src/modules/grid/grid_calculus_bsl/MLB_Interface.h |    0
 src/modules/grid/grid_calculus_bsl/Makefile.am     |    0
 src/modules/grid/grid_calculus_bsl/ausdruck.cpp    |    0
 src/modules/grid/grid_calculus_bsl/ausdruck.h      |    0
 .../grid/grid_calculus_bsl/auswert_anweisung.cpp   |    0
 .../grid/grid_calculus_bsl/auswert_anweisung.h     |    0
 .../grid/grid_calculus_bsl/auswert_foreach.cpp     |    0
 .../grid/grid_calculus_bsl/auswert_foreach.h       |    0
 src/modules/grid/grid_calculus_bsl/auswert_if.cpp  |    0
 src/modules/grid/grid_calculus_bsl/auswert_if.h    |    0
 .../grid/grid_calculus_bsl/auswert_zuweisung.cpp   |    0
 .../grid/grid_calculus_bsl/auswert_zuweisung.h     |    0
 src/modules/grid/grid_calculus_bsl/basistypen.cpp  |    4 +-
 src/modules/grid/grid_calculus_bsl/basistypen.h    |    0
 src/modules/grid/grid_calculus_bsl/bedingung.cpp   |    0
 src/modules/grid/grid_calculus_bsl/bedingung.h     |    0
 .../grid/grid_calculus_bsl/bsl_interpreter.cpp     |    0
 .../grid/grid_calculus_bsl/bsl_interpreter.h       |    0
 src/modules/grid/grid_calculus_bsl/diverses.cpp    |    0
 src/modules/grid/grid_calculus_bsl/diverses.h      |    0
 src/modules/grid/grid_calculus_bsl/foreach.cpp     |    0
 src/modules/grid/grid_calculus_bsl/foreach.h       |    0
 src/modules/grid/grid_calculus_bsl/funktion.cpp    |    0
 src/modules/grid/grid_calculus_bsl/funktion.h      |    0
 .../grid/grid_calculus_bsl/funktion_numerisch.h    |    0
 .../grid/grid_calculus_bsl/funktion_statistisch.h  |    0
 src/modules/grid/grid_calculus_bsl/gr_def.h        |    0
 src/modules/grid/grid_calculus_bsl/gr_syst.h       |    0
 src/modules/grid/grid_calculus_bsl/grid_bsl.cpp    |    0
 src/modules/grid/grid_calculus_bsl/grid_bsl.h      |    0
 .../grid/grid_calculus_bsl/interpolation.cpp       |    0
 src/modules/grid/grid_calculus_bsl/interpolation.h |    0
 src/modules/grid/grid_calculus_bsl/pars_all.cpp    |    0
 src/modules/grid/grid_calculus_bsl/pars_all.h      |    0
 src/modules/grid/grid_calculus_bsl/vector.cpp      |    0
 src/modules/grid/grid_calculus_bsl/vector.h        |    0
 src/modules/grid/grid_calculus_bsl/zuweisung.cpp   |    0
 src/modules/grid/grid_calculus_bsl/zuweisung.h     |    0
 src/modules/grid/grid_filter/Filter.cpp            |    0
 src/modules/grid/grid_filter/Filter.h              |    0
 src/modules/grid/grid_filter/FilterClumps.cpp      |    0
 src/modules/grid/grid_filter/FilterClumps.h        |    0
 src/modules/grid/grid_filter/Filter_3x3.cpp        |    0
 src/modules/grid/grid_filter/Filter_3x3.h          |    0
 src/modules/grid/grid_filter/Filter_Gauss.cpp      |    0
 src/modules/grid/grid_filter/Filter_Gauss.h        |    0
 src/modules/grid/grid_filter/Filter_LoG.cpp        |    0
 src/modules/grid/grid_filter/Filter_LoG.h          |    0
 src/modules/grid/grid_filter/Filter_Majority.cpp   |    0
 src/modules/grid/grid_filter/Filter_Majority.h     |    0
 src/modules/grid/grid_filter/Filter_Morphology.cpp |    0
 src/modules/grid/grid_filter/Filter_Morphology.h   |    0
 .../grid/grid_filter/Filter_Multi_Dir_Lee.cpp      |    0
 .../grid/grid_filter/Filter_Multi_Dir_Lee.h        |    0
 src/modules/grid/grid_filter/Filter_Rank.cpp       |    0
 src/modules/grid/grid_filter/Filter_Rank.h         |    0
 src/modules/grid/grid_filter/Filter_Resample.cpp   |    2 +-
 src/modules/grid/grid_filter/Filter_Resample.h     |    0
 src/modules/grid/grid_filter/Filter_Sieve.cpp      |    0
 src/modules/grid/grid_filter/Filter_Sieve.h        |    0
 .../grid/grid_filter/Filter_Terrain_SlopeBased.cpp |    0
 .../grid/grid_filter/Filter_Terrain_SlopeBased.h   |    0
 ...Filter_Morphology.cpp => Filter_in_Polygon.cpp} |  213 +-
 .../Filter_in_Polygon.h}                           |   33 +-
 src/modules/grid/grid_filter/MLB_Interface.cpp     |    6 +-
 src/modules/grid/grid_filter/MLB_Interface.h       |    0
 src/modules/grid/grid_filter/Makefile.am           |    4 +-
 src/modules/grid/grid_filter/Makefile.in           |    7 +-
 .../grid/grid_filter/bin_erosion_reconst.cpp       |    0
 src/modules/grid/grid_filter/bin_erosion_reconst.h |    0
 src/modules/grid/grid_filter/connect_analysis.cpp  |    0
 src/modules/grid/grid_filter/connect_analysis.h    |    0
 .../grid_filter/geodesic_morph_rec/bin_geovinc.c   |    0
 .../grid_filter/geodesic_morph_rec/bin_geovinc.h   |    0
 .../grid_filter/geodesic_morph_rec/combcontour.c   |    0
 .../grid_filter/geodesic_morph_rec/combcontour.h   |    0
 .../grid/grid_filter/geodesic_morph_rec/errfunc.c  |    0
 .../grid/grid_filter/geodesic_morph_rec/errfunc.h  |    0
 .../grid/grid_filter/geodesic_morph_rec/geovinc.c  |    0
 .../grid/grid_filter/geodesic_morph_rec/geovinc.h  |    0
 .../grid_filter/geodesic_morph_rec/listfuncs.inc   |    0
 .../grid/grid_filter/geodesic_morph_rec/rho.h      |    0
 .../grid/grid_filter/geodesic_morph_rec/spezfunc.c |    0
 .../grid/grid_filter/geodesic_morph_rec/spezfunc.h |    0
 .../grid/grid_filter/geodesic_morph_rec/storeorg.c |    0
 .../grid/grid_filter/geodesic_morph_rec/storeorg.h |    0
 src/modules/grid/grid_filter/geomrec.cpp           |    0
 src/modules/grid/grid_filter/geomrec.h             |    0
 src/modules/grid/grid_filter/mesh_denoise.cpp      |    0
 src/modules/grid/grid_filter/mesh_denoise.h        |    0
 src/modules/grid/grid_filter/wombling.cpp          |    0
 src/modules/grid/grid_filter/wombling.h            |    0
 src/modules/grid/grid_gridding/Interpolation.cpp   |    0
 src/modules/grid/grid_gridding/Interpolation.h     |    0
 .../Interpolation_AngularDistance.cpp              |    0
 .../grid_gridding/Interpolation_AngularDistance.h  |    0
 .../Interpolation_InverseDistance.cpp              |    0
 .../grid_gridding/Interpolation_InverseDistance.h  |    0
 .../Interpolation_NaturalNeighbour.cpp             |    0
 .../grid_gridding/Interpolation_NaturalNeighbour.h |    0
 .../Interpolation_NearestNeighbour.cpp             |    0
 .../grid_gridding/Interpolation_NearestNeighbour.h |    0
 .../grid/grid_gridding/Interpolation_Shepard.cpp   |    0
 .../grid/grid_gridding/Interpolation_Shepard.h     |    0
 .../grid_gridding/Interpolation_Triangulation.cpp  |    0
 .../grid_gridding/Interpolation_Triangulation.h    |    0
 src/modules/grid/grid_gridding/MLB_Interface.cpp   |    0
 src/modules/grid/grid_gridding/MLB_Interface.h     |    0
 src/modules/grid/grid_gridding/Makefile.am         |   12 +-
 src/modules/grid/grid_gridding/Makefile.in         |   85 +-
 src/modules/grid/grid_gridding/Shapes2Grid.cpp     |    0
 src/modules/grid/grid_gridding/Shapes2Grid.h       |    0
 src/modules/grid/grid_gridding/Shepard.cpp         |    4 +-
 src/modules/grid/grid_gridding/Shepard.h           |    0
 src/modules/grid/grid_gridding/kernel_density.cpp  |    0
 src/modules/grid/grid_gridding/kernel_density.h    |    0
 src/modules/grid/grid_gridding/nn/delaunay.c       |    0
 src/modules/grid/grid_gridding/nn/delaunay.h       |    0
 src/modules/grid/grid_gridding/nn/hash.c           |    0
 src/modules/grid/grid_gridding/nn/hash.h           |    0
 src/modules/grid/grid_gridding/nn/istack.c         |    0
 src/modules/grid/grid_gridding/nn/istack.h         |    0
 src/modules/grid/grid_gridding/nn/lpi.c            |    0
 src/modules/grid/grid_gridding/nn/nan.h            |    0
 src/modules/grid/grid_gridding/nn/nn.h             |    0
 src/modules/grid/grid_gridding/nn/nnai.c           |    0
 src/modules/grid/grid_gridding/nn/nncommon.c       |    0
 src/modules/grid/grid_gridding/nn/nnpi.c           |    0
 src/modules/grid/grid_gridding/nn/version.h        |    0
 .../grid/grid_spline/Gridding_Spline_BA.cpp        |    0
 src/modules/grid/grid_spline/Gridding_Spline_BA.h  |    0
 .../grid/grid_spline/Gridding_Spline_Base.cpp      |    0
 .../grid/grid_spline/Gridding_Spline_Base.h        |    0
 .../grid/grid_spline/Gridding_Spline_CSA.cpp       |    0
 src/modules/grid/grid_spline/Gridding_Spline_CSA.h |    0
 .../grid/grid_spline/Gridding_Spline_MBA.cpp       |    0
 src/modules/grid/grid_spline/Gridding_Spline_MBA.h |    0
 .../grid/grid_spline/Gridding_Spline_MBA_Grid.cpp  |    0
 .../grid/grid_spline/Gridding_Spline_MBA_Grid.h    |    0
 .../grid/grid_spline/Gridding_Spline_TPS_Local.cpp |    0
 .../grid/grid_spline/Gridding_Spline_TPS_Local.h   |    0
 .../grid/grid_spline/Gridding_Spline_TPS_TIN.cpp   |    0
 .../grid/grid_spline/Gridding_Spline_TPS_TIN.h     |    0
 .../grid/grid_spline/MBASpline_for_Categories.cpp  |    0
 .../grid/grid_spline/MBASpline_for_Categories.h    |    0
 src/modules/grid/grid_spline/MLB_Interface.cpp     |    0
 src/modules/grid/grid_spline/MLB_Interface.h       |    0
 src/modules/grid/grid_spline/Makefile.am           |    0
 src/modules/grid/grid_spline/csa.c                 |    0
 src/modules/grid/grid_spline/csa.h                 |    0
 src/modules/grid/grid_tools/CreateGridSystem.cpp   |    0
 src/modules/grid/grid_tools/CreateGridSystem.h     |    0
 src/modules/grid/grid_tools/Grid_Aggregate.cpp     |    0
 src/modules/grid/grid_tools/Grid_Aggregate.h       |    0
 src/modules/grid/grid_tools/Grid_Buffer.cpp        |    0
 src/modules/grid/grid_tools/Grid_Buffer.h          |    0
 .../grid/grid_tools/Grid_Buffer_Proximity.cpp      |    0
 .../grid/grid_tools/Grid_Buffer_Proximity.h        |    0
 src/modules/grid/grid_tools/Grid_CombineGrids.cpp  |    0
 src/modules/grid/grid_tools/Grid_CombineGrids.h    |    0
 src/modules/grid/grid_tools/Grid_Completion.cpp    |   84 +-
 src/modules/grid/grid_tools/Grid_Completion.h      |    0
 src/modules/grid/grid_tools/Grid_ConstantGrid.cpp  |    0
 src/modules/grid/grid_tools/Grid_ConstantGrid.h    |    0
 src/modules/grid/grid_tools/Grid_CropToData.cpp    |    4 +-
 src/modules/grid/grid_tools/Grid_CropToData.h      |    0
 src/modules/grid/grid_tools/Grid_Cut.cpp           |    6 +-
 src/modules/grid/grid_tools/Grid_Cut.h             |    0
 src/modules/grid/grid_tools/Grid_Fill.cpp          |    0
 src/modules/grid/grid_tools/Grid_Fill.h            |    0
 src/modules/grid/grid_tools/Grid_Gaps.cpp          |    0
 src/modules/grid/grid_tools/Grid_Gaps.h            |    0
 src/modules/grid/grid_tools/Grid_Gaps_OneCell.cpp  |    0
 src/modules/grid/grid_tools/Grid_Gaps_OneCell.h    |    0
 .../grid/grid_tools/Grid_Gaps_Resampling.cpp       |   62 +-
 src/modules/grid/grid_tools/Grid_Gaps_Resampling.h |    0
 .../grid/grid_tools/Grid_Gaps_Spline_Fill.cpp      |    0
 .../grid/grid_tools/Grid_Gaps_Spline_Fill.h        |    0
 src/modules/grid/grid_tools/Grid_InvertNoData.cpp  |    0
 src/modules/grid/grid_tools/Grid_InvertNoData.h    |    0
 src/modules/grid/grid_tools/Grid_Mask.cpp          |    4 +-
 src/modules/grid/grid_tools/Grid_Mask.h            |    0
 src/modules/grid/grid_tools/Grid_Merge.cpp         |   29 +-
 src/modules/grid/grid_tools/Grid_Merge.h           |    6 +-
 src/modules/grid/grid_tools/Grid_Orientation.cpp   |  273 +-
 src/modules/grid/grid_tools/Grid_Orientation.h     |   79 +-
 src/modules/grid/grid_tools/Grid_Proximity.cpp     |    0
 src/modules/grid/grid_tools/Grid_Proximity.h       |    0
 src/modules/grid/grid_tools/Grid_Resample.cpp      |   72 +-
 src/modules/grid/grid_tools/Grid_Resample.h        |    0
 src/modules/grid/grid_tools/Grid_Shrink_Expand.cpp |    0
 src/modules/grid/grid_tools/Grid_Shrink_Expand.h   |    0
 src/modules/grid/grid_tools/Grid_SortRaster.cpp    |    0
 src/modules/grid/grid_tools/Grid_SortRaster.h      |    0
 .../grid/grid_tools/Grid_Support_Tool_Chains.cpp   |    0
 .../grid/grid_tools/Grid_Support_Tool_Chains.h     |    0
 .../grid/grid_tools/Grid_ThresholdBuffer.cpp       |    0
 src/modules/grid/grid_tools/Grid_ThresholdBuffer.h |    0
 src/modules/grid/grid_tools/Grid_Tiling.cpp        |    8 +-
 src/modules/grid/grid_tools/Grid_Tiling.h          |    0
 src/modules/grid/grid_tools/Grid_Transpose.cpp     |    0
 src/modules/grid/grid_tools/Grid_Transpose.h       |    0
 .../grid/grid_tools/Grid_Value_Reclassify.cpp      |    0
 .../grid/grid_tools/Grid_Value_Reclassify.h        |    0
 src/modules/grid/grid_tools/Grid_Value_Replace.cpp |    0
 src/modules/grid/grid_tools/Grid_Value_Replace.h   |    0
 .../grid_tools/Grid_Value_Replace_Interactive.cpp  |    0
 .../grid_tools/Grid_Value_Replace_Interactive.h    |    0
 src/modules/grid/grid_tools/Grid_Value_Request.cpp |   46 +-
 src/modules/grid/grid_tools/Grid_Value_Request.h   |   15 +-
 src/modules/grid/grid_tools/Grid_Value_Type.cpp    |    0
 src/modules/grid/grid_tools/Grid_Value_Type.h      |    0
 .../grid/grid_tools/GridsFromTableAndGrid.cpp      |    0
 .../grid/grid_tools/GridsFromTableAndGrid.h        |    0
 src/modules/grid/grid_tools/MLB_Interface.cpp      |   22 +-
 src/modules/grid/grid_tools/MLB_Interface.h        |    0
 src/modules/grid/grid_tools/Makefile.am            |    0
 .../grid/grid_visualisation/Grid_3D_Image.cpp      |    0
 .../grid/grid_visualisation/Grid_3D_Image.h        |    0
 .../grid_visualisation/Grid_Aspect_Slope_Map.cpp   |    0
 .../grid_visualisation/Grid_Aspect_Slope_Map.h     |    0
 .../grid/grid_visualisation/Grid_Color_Blend.cpp   |    0
 .../grid/grid_visualisation/Grid_Color_Blend.h     |    0
 .../grid/grid_visualisation/Grid_Color_Rotate.cpp  |    0
 .../grid/grid_visualisation/Grid_Color_Rotate.h    |    0
 .../grid_visualisation/Grid_Color_Triangle.cpp     |    0
 .../grid/grid_visualisation/Grid_Color_Triangle.h  |    0
 .../grid/grid_visualisation/Grid_Colors_Fit.cpp    |    0
 .../grid/grid_visualisation/Grid_Colors_Fit.h      |    0
 .../grid_visualisation/Grid_Histogram_Surface.cpp  |    0
 .../grid_visualisation/Grid_Histogram_Surface.h    |    0
 .../grid/grid_visualisation/Grid_LUT_Assign.cpp    |    0
 .../grid/grid_visualisation/Grid_LUT_Assign.h      |    0
 .../grid/grid_visualisation/Grid_RGB_Composite.cpp |    0
 .../grid/grid_visualisation/Grid_RGB_Composite.h   |    0
 .../grid/grid_visualisation/Grid_Terrain_Map.cpp   |    0
 .../grid/grid_visualisation/Grid_Terrain_Map.h     |    0
 .../grid/grid_visualisation/MLB_Interface.cpp      |    0
 .../grid/grid_visualisation/MLB_Interface.h        |    0
 src/modules/grid/grid_visualisation/Makefile.am    |    0
 src/modules/imagery/Makefile.am                    |    0
 .../imagery_classification/MLB_Interface.cpp       |    4 +-
 .../imagery/imagery_classification/MLB_Interface.h |    0
 .../imagery/imagery_classification/Makefile.am     |    4 +
 .../imagery/imagery_classification/Makefile.in     |    9 +-
 .../imagery_classification/change_detection.cpp    |    0
 .../imagery_classification/change_detection.h      |    0
 .../classification_quality.cpp                     |    0
 .../classification_quality.h                       |    0
 .../classify_cluster_analysis.cpp                  |   98 +-
 .../classify_cluster_analysis.h                    |    4 +-
 .../imagery_classification/classify_isocluster.cpp |  380 ++
 .../imagery_classification/classify_isocluster.h}  |  205 +-
 .../imagery_classification/classify_supervised.cpp |   28 +-
 .../imagery_classification/classify_supervised.h   |    0
 .../classify_supervised_polygons.cpp               |    0
 .../classify_supervised_polygons.h                 |    0
 .../imagery_classification/cluster_isodata.cpp     | 1435 ++++
 ...{classification_quality.h => cluster_isodata.h} |  256 +-
 .../imagery_classification/decision_tree.cpp       |    0
 .../imagery/imagery_classification/decision_tree.h |    0
 .../imagery/imagery_maxent/MLB_Interface.cpp       |    0
 src/modules/imagery/imagery_maxent/MLB_Interface.h |    0
 src/modules/imagery/imagery_maxent/Makefile.am     |    0
 .../imagery/imagery_maxent/classify_grid.cpp       |    0
 src/modules/imagery/imagery_maxent/classify_grid.h |    0
 src/modules/imagery/imagery_maxent/lbfgs.cpp       |    0
 src/modules/imagery/imagery_maxent/lbfgs.h         |    0
 src/modules/imagery/imagery_maxent/mathvec.h       |    0
 src/modules/imagery/imagery_maxent/maxent.cpp      |    0
 src/modules/imagery/imagery_maxent/maxent.h        |    0
 src/modules/imagery/imagery_maxent/me.cpp          |    0
 src/modules/imagery/imagery_maxent/me.h            |    0
 src/modules/imagery/imagery_maxent/owlqn.cpp       |    0
 .../imagery/imagery_maxent/presence_prediction.cpp |    0
 .../imagery/imagery_maxent/presence_prediction.h   |    0
 src/modules/imagery/imagery_maxent/sgd.cpp         |    0
 .../imagery/imagery_opencv/MLB_Interface.cpp       |    0
 src/modules/imagery/imagery_opencv/MLB_Interface.h |    0
 src/modules/imagery/imagery_opencv/Makefile.am     |    2 +-
 src/modules/imagery/imagery_opencv/Makefile.in     |    2 +-
 src/modules/imagery/imagery_opencv/opencv.cpp      |    0
 src/modules/imagery/imagery_opencv/opencv.h        |    0
 .../imagery/imagery_opencv/opencv_fourier.cpp      |    0
 .../imagery/imagery_opencv/opencv_fourier.h        |    0
 .../imagery/imagery_opencv/opencv_morphology.cpp   |    0
 .../imagery/imagery_opencv/opencv_morphology.h     |    0
 src/modules/imagery/imagery_opencv/opencv_nnet.cpp |    0
 src/modules/imagery/imagery_opencv/opencv_nnet.h   |    0
 .../imagery/imagery_opencv/opencv_stereo_match.cpp |    0
 .../imagery/imagery_opencv/opencv_stereo_match.h   |    0
 src/modules/imagery/imagery_opencv/opencv_svd.cpp  |    0
 src/modules/imagery/imagery_opencv/opencv_svd.h    |    0
 .../imagery_photogrammetry/Colorisation.cpp        |    0
 .../imagery/imagery_photogrammetry/Colorisation.h  |    0
 .../imagery_photogrammetry/MLB_Interface.cpp       |    0
 .../imagery/imagery_photogrammetry/MLB_Interface.h |    0
 .../imagery/imagery_photogrammetry/Makefile.am     |    0
 .../imagery/imagery_photogrammetry/Resection.cpp   |    0
 .../imagery/imagery_photogrammetry/Resection.h     |    0
 .../imagery/imagery_photogrammetry/methods.cpp     |    0
 .../imagery/imagery_photogrammetry/methods.h       |    0
 .../imagery/imagery_segmentation/MLB_Interface.cpp |    0
 .../imagery/imagery_segmentation/MLB_Interface.h   |    0
 .../imagery/imagery_segmentation/Makefile.am       |    0
 .../imagery/imagery_segmentation/grid_seeds.cpp    |    4 +-
 .../imagery/imagery_segmentation/grid_seeds.h      |    0
 .../imagery/imagery_segmentation/rga_basic.cpp     |    0
 .../imagery/imagery_segmentation/rga_basic.h       |    0
 .../imagery_segmentation/skeletonization.cpp       |    0
 .../imagery/imagery_segmentation/skeletonization.h |    0
 .../watershed_segmentation.cpp                     |    0
 .../imagery_segmentation/watershed_segmentation.h  |    0
 src/modules/imagery/imagery_svm/MLB_Interface.cpp  |    0
 src/modules/imagery/imagery_svm/MLB_Interface.h    |    0
 src/modules/imagery/imagery_svm/Makefile.am        |    0
 src/modules/imagery/imagery_svm/svm_grids.cpp      |    0
 src/modules/imagery/imagery_svm/svm_grids.h        |    0
 .../imagery/imagery_tools/Image_VI_Distance.cpp    |    0
 .../imagery/imagery_tools/Image_VI_Distance.h      |    0
 .../imagery/imagery_tools/Image_VI_Slope.cpp       |    8 +-
 src/modules/imagery/imagery_tools/Image_VI_Slope.h |    0
 .../imagery/imagery_tools/MLB_Interface.cpp        |    0
 src/modules/imagery/imagery_tools/MLB_Interface.h  |    0
 src/modules/imagery/imagery_tools/Makefile.am      |    0
 src/modules/imagery/imagery_tools/evi.cpp          |    0
 src/modules/imagery/imagery_tools/evi.h            |    0
 src/modules/imagery/imagery_tools/landsat_acca.cpp |    0
 src/modules/imagery/imagery_tools/landsat_acca.h   |    0
 .../imagery/imagery_tools/landsat_import.cpp       |   26 +-
 src/modules/imagery/imagery_tools/landsat_import.h |    0
 src/modules/imagery/imagery_tools/landsat_toar.cpp |    0
 src/modules/imagery/imagery_tools/landsat_toar.h   |    0
 .../imagery/imagery_tools/landsat_toar_core.cpp    |    0
 .../imagery/imagery_tools/landsat_toar_core.h      |    0
 .../imagery/imagery_tools/pansharpening.cpp        |   18 +-
 src/modules/imagery/imagery_tools/pansharpening.h  |    0
 src/modules/imagery/imagery_tools/tasseled_cap.cpp |    0
 src/modules/imagery/imagery_tools/tasseled_cap.h   |    0
 .../imagery/imagery_vigra/MLB_Interface.cpp        |    0
 src/modules/imagery/imagery_vigra/MLB_Interface.h  |    0
 src/modules/imagery/imagery_vigra/Makefile.am      |    0
 src/modules/imagery/imagery_vigra/vigra.cpp        |    0
 src/modules/imagery/imagery_vigra/vigra.h          |    0
 .../imagery/imagery_vigra/vigra_distance.cpp       |    0
 src/modules/imagery/imagery_vigra/vigra_distance.h |    0
 src/modules/imagery/imagery_vigra/vigra_edges.cpp  |    0
 src/modules/imagery/imagery_vigra/vigra_edges.h    |    0
 src/modules/imagery/imagery_vigra/vigra_fft.cpp    |    0
 src/modules/imagery/imagery_vigra/vigra_fft.h      |    0
 .../imagery/imagery_vigra/vigra_morphology.cpp     |    0
 .../imagery/imagery_vigra/vigra_morphology.h       |    0
 .../imagery/imagery_vigra/vigra_random_forest.cpp  |   66 +-
 .../imagery/imagery_vigra/vigra_random_forest.h    |    0
 .../imagery/imagery_vigra/vigra_smoothing.cpp      |    0
 .../imagery/imagery_vigra/vigra_smoothing.h        |    0
 .../imagery/imagery_vigra/vigra_watershed.cpp      |    0
 .../imagery/imagery_vigra/vigra_watershed.h        |    0
 src/modules/io/Makefile.am                         |    0
 src/modules/io/io_esri_e00/ESRI_E00_Import.cpp     |    0
 src/modules/io/io_esri_e00/ESRI_E00_Import.h       |    0
 src/modules/io/io_esri_e00/MLB_Interface.cpp       |    0
 src/modules/io/io_esri_e00/MLB_Interface.h         |    0
 src/modules/io/io_esri_e00/Makefile.am             |    0
 src/modules/io/io_esri_e00/e00compr/cpl_conv.c     |    0
 src/modules/io/io_esri_e00/e00compr/cpl_conv.h     |    0
 src/modules/io/io_esri_e00/e00compr/cpl_error.c    |    0
 src/modules/io/io_esri_e00/e00compr/cpl_error.h    |    0
 src/modules/io/io_esri_e00/e00compr/cpl_port.h     |    0
 src/modules/io/io_esri_e00/e00compr/cpl_vsi.h      |    0
 .../io/io_esri_e00/e00compr/cpl_vsisimple.c        |    0
 src/modules/io/io_esri_e00/e00compr/e00compr.h     |    0
 src/modules/io/io_esri_e00/e00compr/e00read.c      |    0
 src/modules/io/io_esri_e00/e00compr/e00write.c     |    0
 src/modules/io/io_gdal/MLB_Interface.cpp           |    7 +-
 src/modules/io/io_gdal/MLB_Interface.h             |    0
 src/modules/io/io_gdal/Makefile.am                 |    2 +
 src/modules/io/io_gdal/Makefile.in                 |    7 +-
 src/modules/io/io_gdal/gdal_catalogue.cpp          |    0
 src/modules/io/io_gdal/gdal_catalogue.h            |    0
 src/modules/io/io_gdal/gdal_driver.cpp             |  123 +-
 src/modules/io/io_gdal/gdal_driver.h               |   10 +-
 src/modules/io/io_gdal/gdal_export.cpp             |    0
 src/modules/io/io_gdal/gdal_export.h               |    0
 src/modules/io/io_gdal/gdal_export_geotiff.cpp     |    0
 src/modules/io/io_gdal/gdal_export_geotiff.h       |    0
 src/modules/io/io_gdal/gdal_import.cpp             |   35 +-
 src/modules/io/io_gdal/gdal_import.h               |    0
 src/modules/io/io_gdal/gdal_import_netcdf.cpp      |   55 +-
 src/modules/io/io_gdal/gdal_import_netcdf.h        |    0
 src/modules/io/io_gdal/gdal_import_wms.cpp         |  572 ++
 .../io_gdal/{gdal_import.h => gdal_import_wms.h}   |   41 +-
 src/modules/io/io_gdal/ogr_driver.cpp              |    0
 src/modules/io/io_gdal/ogr_driver.h                |    0
 src/modules/io/io_gdal/ogr_export.cpp              |    0
 src/modules/io/io_gdal/ogr_export.h                |    0
 src/modules/io/io_gdal/ogr_export_kml.cpp          |    0
 src/modules/io/io_gdal/ogr_export_kml.h            |    0
 src/modules/io/io_gdal/ogr_import.cpp              |    0
 src/modules/io/io_gdal/ogr_import.h                |    0
 src/modules/io/io_gps/GPSBabel.cpp                 |    0
 src/modules/io/io_gps/GPSBabel.h                   |    0
 src/modules/io/io_gps/MLB_Interface.cpp            |    0
 src/modules/io/io_gps/MLB_Interface.h              |    0
 src/modules/io/io_gps/Makefile.am                  |    0
 src/modules/io/io_gps/gpx2shp.cpp                  |    0
 src/modules/io/io_gps/gpx2shp.h                    |    0
 src/modules/io/io_grid/MLB_Interface.cpp           |    0
 src/modules/io/io_grid/MLB_Interface.h             |    0
 src/modules/io/io_grid/Makefile.am                 |    0
 src/modules/io/io_grid/bmp_export.cpp              |    0
 src/modules/io/io_grid/bmp_export.h                |    0
 src/modules/io/io_grid/citygml_import.cpp          |    0
 src/modules/io/io_grid/citygml_import.h            |    0
 src/modules/io/io_grid/erdas_lan.cpp               |    0
 src/modules/io/io_grid/erdas_lan.h                 |    0
 src/modules/io/io_grid/esri_arcinfo.cpp            |    0
 src/modules/io/io_grid/esri_arcinfo.h              |    0
 src/modules/io/io_grid/grid_table.cpp              |    0
 src/modules/io/io_grid/grid_table.h                |    0
 src/modules/io/io_grid/import_clip_resample.cpp    |    0
 src/modules/io/io_grid/import_clip_resample.h      |    0
 src/modules/io/io_grid/mola.cpp                    |    0
 src/modules/io/io_grid/mola.h                      |    0
 src/modules/io/io_grid/raw.cpp                     |    0
 src/modules/io/io_grid/raw.h                       |    0
 src/modules/io/io_grid/srtm30.cpp                  |    0
 src/modules/io/io_grid/srtm30.h                    |    0
 src/modules/io/io_grid/surfer.cpp                  |    0
 src/modules/io/io_grid/surfer.h                    |    0
 src/modules/io/io_grid/usgs_srtm.cpp               |    0
 src/modules/io/io_grid/usgs_srtm.h                 |    0
 src/modules/io/io_grid/wrf.cpp                     |    0
 src/modules/io/io_grid/wrf.h                       |    0
 src/modules/io/io_grid/xyz.cpp                     |    0
 src/modules/io/io_grid/xyz.h                       |    0
 src/modules/io/io_grid_grib2/MLB_Interface.cpp     |    0
 src/modules/io/io_grid_grib2/MLB_Interface.h       |    0
 src/modules/io/io_grid_grib2/Makefile.am           |   16 +-
 src/modules/io/io_grid_grib2/Makefile.in           |  207 +-
 src/modules/io/io_grid_grib2/grib2_import.cpp      |    0
 src/modules/io/io_grid_grib2/grib2_import.h        |    0
 src/modules/io/io_grid_image/MLB_Interface.cpp     |    0
 src/modules/io/io_grid_image/MLB_Interface.h       |    0
 src/modules/io/io_grid_image/Makefile.am           |    0
 src/modules/io/io_grid_image/grid_export.cpp       |    0
 src/modules/io/io_grid_image/grid_export.h         |    0
 src/modules/io/io_grid_image/grid_import.cpp       |    4 +-
 src/modules/io/io_grid_image/grid_import.h         |    0
 src/modules/io/io_grid_image/grid_to_kml.cpp       |   14 +-
 src/modules/io/io_grid_image/grid_to_kml.h         |    0
 src/modules/io/io_shapes/MLB_Interface.cpp         |    0
 src/modules/io/io_shapes/MLB_Interface.h           |    0
 src/modules/io/io_shapes/Makefile.am               |    0
 src/modules/io/io_shapes/atlas_bna.cpp             |    0
 src/modules/io/io_shapes/atlas_bna.h               |    0
 src/modules/io/io_shapes/generate.cpp              |    0
 src/modules/io/io_shapes/generate.h                |    0
 src/modules/io/io_shapes/gpx.cpp                   |    0
 src/modules/io/io_shapes/gpx.h                     |    0
 src/modules/io/io_shapes/gstat.cpp                 |    0
 src/modules/io/io_shapes/gstat.h                   |    0
 src/modules/io/io_shapes/pointcloud_from_file.cpp  |    0
 src/modules/io/io_shapes/pointcloud_from_file.h    |    0
 .../io/io_shapes/pointcloud_from_text_file.cpp     |    0
 .../io/io_shapes/pointcloud_from_text_file.h       |    0
 .../io/io_shapes/pointcloud_to_text_file.cpp       |    0
 src/modules/io/io_shapes/pointcloud_to_text_file.h |    0
 src/modules/io/io_shapes/stl.cpp                   |    0
 src/modules/io/io_shapes/stl.h                     |    0
 src/modules/io/io_shapes/surfer_bln.cpp            |    0
 src/modules/io/io_shapes/surfer_bln.h              |    0
 src/modules/io/io_shapes/svg.cpp                   |    0
 src/modules/io/io_shapes/svg.h                     |    0
 src/modules/io/io_shapes/wasp_map.cpp              |    0
 src/modules/io/io_shapes/wasp_map.h                |    0
 src/modules/io/io_shapes/wktb.cpp                  |    0
 src/modules/io/io_shapes/wktb.h                    |    0
 src/modules/io/io_shapes/xyz.cpp                   |    0
 src/modules/io/io_shapes/xyz.h                     |    0
 src/modules/io/io_shapes_dxf/MLB_Interface.cpp     |    0
 src/modules/io/io_shapes_dxf/MLB_Interface.h       |    0
 src/modules/io/io_shapes_dxf/Makefile.am           |    0
 src/modules/io/io_shapes_dxf/dxf_import.cpp        |    0
 src/modules/io/io_shapes_dxf/dxf_import.h          |    0
 .../io/io_shapes_dxf/dxflib/dl_attributes.h        |    0
 src/modules/io/io_shapes_dxf/dxflib/dl_codes.h     |    0
 .../io/io_shapes_dxf/dxflib/dl_creationadapter.h   |    0
 .../io/io_shapes_dxf/dxflib/dl_creationinterface.h |    0
 src/modules/io/io_shapes_dxf/dxflib/dl_dxf.cpp     |    0
 src/modules/io/io_shapes_dxf/dxflib/dl_dxf.h       |    0
 src/modules/io/io_shapes_dxf/dxflib/dl_entities.h  |    0
 src/modules/io/io_shapes_dxf/dxflib/dl_exception.h |    0
 src/modules/io/io_shapes_dxf/dxflib/dl_extrusion.h |    0
 src/modules/io/io_shapes_dxf/dxflib/dl_writer.h    |    0
 .../io/io_shapes_dxf/dxflib/dl_writer_ascii.cpp    |    0
 .../io/io_shapes_dxf/dxflib/dl_writer_ascii.h      |    0
 src/modules/io/io_shapes_las/MLB_Interface.cpp     |    0
 src/modules/io/io_shapes_las/MLB_Interface.h       |    0
 src/modules/io/io_shapes_las/Makefile.am           |    0
 src/modules/io/io_shapes_las/las_export.cpp        |    0
 src/modules/io/io_shapes_las/las_export.h          |    0
 src/modules/io/io_shapes_las/las_import.cpp        |    0
 src/modules/io/io_shapes_las/las_import.h          |    0
 src/modules/io/io_shapes_las/las_info.cpp          |    0
 src/modules/io/io_shapes_las/las_info.h            |    0
 src/modules/io/io_table/MLB_Interface.cpp          |    0
 src/modules/io/io_table/MLB_Interface.h            |    0
 src/modules/io/io_table/Makefile.am                |    0
 src/modules/io/io_table/io_table_txt.cpp           |    0
 src/modules/io/io_table/io_table_txt.h             |    0
 src/modules/io/io_virtual/MLB_Interface.cpp        |    0
 src/modules/io/io_virtual/MLB_Interface.h          |    0
 src/modules/io/io_virtual/Makefile.am              |    0
 src/modules/io/io_virtual/pc_create_spcvf.cpp      |    0
 src/modules/io/io_virtual/pc_create_spcvf.h        |    0
 src/modules/io/io_virtual/pc_get_grid_spcvf.cpp    |    5 +-
 src/modules/io/io_virtual/pc_get_grid_spcvf.h      |    0
 src/modules/io/io_virtual/pc_get_subset_spcvf.cpp  |    9 +-
 src/modules/io/io_virtual/pc_get_subset_spcvf.h    |    0
 .../io/io_virtual/pc_remove_overlap_from_spcvf.cpp |    0
 .../io/io_virtual/pc_remove_overlap_from_spcvf.h   |    0
 .../io/io_virtual/pc_tileshape_from_spcvf.cpp      |    0
 .../io/io_virtual/pc_tileshape_from_spcvf.h        |    0
 src/modules/pointcloud/Makefile.am                 |    0
 .../pointcloud/pointcloud_tools/MLB_Interface.cpp  |    0
 .../pointcloud/pointcloud_tools/MLB_Interface.h    |    0
 .../pointcloud/pointcloud_tools/Makefile.am        |    0
 .../pointcloud_tools/pc_attribute_calculator.cpp   |    0
 .../pointcloud_tools/pc_attribute_calculator.h     |    0
 .../pointcloud_tools/pc_cluster_analysis.cpp       |    0
 .../pointcloud_tools/pc_cluster_analysis.h         |    0
 src/modules/pointcloud/pointcloud_tools/pc_cut.cpp |    0
 src/modules/pointcloud/pointcloud_tools/pc_cut.h   |    0
 .../pointcloud_tools/pc_drop_attribute.cpp         |    0
 .../pointcloud_tools/pc_drop_attribute.h           |    0
 .../pointcloud/pointcloud_tools/pc_from_grid.cpp   |    0
 .../pointcloud/pointcloud_tools/pc_from_grid.h     |    0
 .../pointcloud/pointcloud_tools/pc_from_shapes.cpp |    0
 .../pointcloud/pointcloud_tools/pc_from_shapes.h   |    0
 .../pointcloud/pointcloud_tools/pc_from_table.cpp  |    0
 .../pointcloud/pointcloud_tools/pc_from_table.h    |    0
 .../pointcloud/pointcloud_tools/pc_merge.cpp       |    0
 src/modules/pointcloud/pointcloud_tools/pc_merge.h |    0
 .../pointcloud_tools/pc_reclass_extract.cpp        |    0
 .../pointcloud_tools/pc_reclass_extract.h          |    0
 .../pointcloud_tools/pc_thinning_simple.cpp        |    0
 .../pointcloud_tools/pc_thinning_simple.h          |    0
 .../pointcloud/pointcloud_tools/pc_to_grid.cpp     |    0
 .../pointcloud/pointcloud_tools/pc_to_grid.h       |    0
 .../pointcloud/pointcloud_tools/pc_to_shapes.cpp   |    0
 .../pointcloud/pointcloud_tools/pc_to_shapes.h     |    0
 .../pointcloud/pointcloud_tools/pc_transform.cpp   |    0
 .../pointcloud/pointcloud_tools/pc_transform.h     |    0
 .../pointcloud/pointcloud_viewer/MLB_Interface.cpp |    0
 .../pointcloud/pointcloud_viewer/MLB_Interface.h   |    0
 .../pointcloud/pointcloud_viewer/Makefile.am       |    0
 .../pointcloud_viewer/points_view_control.cpp      |    0
 .../pointcloud_viewer/points_view_control.h        |    0
 .../pointcloud_viewer/points_view_dialog.cpp       |    0
 .../pointcloud_viewer/points_view_dialog.h         |    0
 .../pointcloud_viewer/points_view_extent.cpp       |    0
 .../pointcloud_viewer/points_view_extent.h         |    0
 .../pointcloud_viewer/points_view_module.cpp       |    0
 .../pointcloud_viewer/points_view_module.h         |    0
 src/modules/projection/Makefile.am                 |    0
 .../projection/pj_georeference/Collect_Points.cpp  |    0
 .../projection/pj_georeference/Collect_Points.h    |    0
 .../projection/pj_georeference/Georef_Engine.cpp   |    0
 .../projection/pj_georeference/Georef_Engine.h     |    0
 .../projection/pj_georeference/Georef_Grid.cpp     |   35 +-
 .../projection/pj_georeference/Georef_Grid.h       |    2 +-
 .../projection/pj_georeference/Georef_Shapes.cpp   |    0
 .../projection/pj_georeference/Georef_Shapes.h     |    0
 .../projection/pj_georeference/MLB_Interface.cpp   |    0
 .../projection/pj_georeference/MLB_Interface.h     |    0
 src/modules/projection/pj_georeference/Makefile.am |    0
 .../pj_georeference/direct_georeferencing.cpp      |   29 +-
 .../pj_georeference/direct_georeferencing.h        |    0
 .../pj_georeference/georef_grid_move.cpp           |    0
 .../projection/pj_georeference/georef_grid_move.h  |    0
 .../pj_georeference/set_grid_georeference.cpp      |    0
 .../pj_georeference/set_grid_georeference.h        |    0
 src/modules/projection/pj_proj4/MLB_Interface.cpp  |    0
 src/modules/projection/pj_proj4/MLB_Interface.h    |    0
 src/modules/projection/pj_proj4/Makefile.am        |    0
 src/modules/projection/pj_proj4/PROJ4_Base.cpp     |    0
 src/modules/projection/pj_proj4/PROJ4_Base.h       |    0
 src/modules/projection/pj_proj4/PROJ4_Grid.cpp     |   29 +-
 src/modules/projection/pj_proj4/PROJ4_Grid.h       |    4 +-
 src/modules/projection/pj_proj4/PROJ4_Shapes.cpp   |    0
 src/modules/projection/pj_proj4/PROJ4_Shapes.h     |    0
 src/modules/projection/pj_proj4/crs_assign.cpp     |    0
 src/modules/projection/pj_proj4/crs_assign.h       |    0
 src/modules/projection/pj_proj4/crs_base.cpp       |    0
 src/modules/projection/pj_proj4/crs_base.h         |    0
 src/modules/projection/pj_proj4/crs_distance.cpp   |    0
 src/modules/projection/pj_proj4/crs_distance.h     |    0
 .../projection/pj_proj4/crs_grid_geogcoords.cpp    |    0
 .../projection/pj_proj4/crs_grid_geogcoords.h      |    0
 src/modules/projection/pj_proj4/crs_indicatrix.cpp |    0
 src/modules/projection/pj_proj4/crs_indicatrix.h   |    0
 src/modules/projection/pj_proj4/crs_transform.cpp  |    0
 src/modules/projection/pj_proj4/crs_transform.h    |    0
 .../projection/pj_proj4/crs_transform_grid.cpp     |   27 +-
 .../projection/pj_proj4/crs_transform_grid.h       |    4 +-
 .../pj_proj4/crs_transform_pointcloud.cpp          |    0
 .../projection/pj_proj4/crs_transform_pointcloud.h |    0
 .../projection/pj_proj4/crs_transform_shapes.cpp   |    0
 .../projection/pj_proj4/crs_transform_shapes.h     |    0
 src/modules/projection/pj_proj4/gcs_graticule.cpp  |    0
 src/modules/projection/pj_proj4/gcs_graticule.h    |    0
 src/modules/projection/pj_proj4/gcs_lon_range.cpp  |    0
 src/modules/projection/pj_proj4/gcs_lon_range.h    |    0
 src/modules/shapes/Makefile.am                     |    0
 .../shapes/shapes_grid/Grid_Classes_To_Shapes.cpp  |    0
 .../shapes/shapes_grid/Grid_Classes_To_Shapes.h    |    0
 .../shapes/shapes_grid/Grid_Polygon_Clip.cpp       |    0
 src/modules/shapes/shapes_grid/Grid_Polygon_Clip.h |    0
 .../shapes_grid/Grid_Statistics_AddTo_Polygon.cpp  |  204 +-
 .../shapes_grid/Grid_Statistics_AddTo_Polygon.h    |   18 +-
 .../shapes_grid/Grid_Statistics_For_Points.cpp     |    0
 .../shapes_grid/Grid_Statistics_For_Points.h       |    0
 src/modules/shapes/shapes_grid/Grid_To_Contour.cpp |    4 +-
 src/modules/shapes/shapes_grid/Grid_To_Contour.h   |    0
 .../shapes/shapes_grid/Grid_To_Gradient.cpp        |    6 +-
 src/modules/shapes/shapes_grid/Grid_To_Gradient.h  |    0
 src/modules/shapes/shapes_grid/Grid_To_Points.cpp  |    0
 src/modules/shapes/shapes_grid/Grid_To_Points.h    |    0
 .../shapes/shapes_grid/Grid_To_Points_Random.cpp   |    0
 .../shapes/shapes_grid/Grid_To_Points_Random.h     |    0
 .../shapes_grid/Grid_Values_AddTo_Points.cpp       |   31 +-
 .../shapes/shapes_grid/Grid_Values_AddTo_Points.h  |    0
 .../shapes_grid/Grid_Values_AddTo_Shapes.cpp       |   47 +-
 .../shapes/shapes_grid/Grid_Values_AddTo_Shapes.h  |    4 +-
 src/modules/shapes/shapes_grid/MLB_Interface.cpp   |    0
 src/modules/shapes/shapes_grid/MLB_Interface.h     |    0
 src/modules/shapes/shapes_grid/Makefile.am         |    0
 src/modules/shapes/shapes_grid/grid_extent.cpp     |    0
 src/modules/shapes/shapes_grid/grid_extent.h       |    0
 .../shapes_grid/grid_local_extremes_to_points.cpp  |    0
 .../shapes_grid/grid_local_extremes_to_points.h    |    0
 .../shapes/shapes_grid/grid_rectangle_clip.cpp     |    0
 .../shapes/shapes_grid/grid_rectangle_clip.h       |    0
 .../shapes/shapes_lines/Lines_From_Points.cpp      |    0
 .../shapes/shapes_lines/Lines_From_Points.h        |    0
 .../shapes/shapes_lines/Lines_From_Polygons.cpp    |    0
 .../shapes/shapes_lines/Lines_From_Polygons.h      |    0
 src/modules/shapes/shapes_lines/MLB_Interface.cpp  |    0
 src/modules/shapes/shapes_lines/MLB_Interface.h    |    0
 src/modules/shapes/shapes_lines/Makefile.am        |    0
 src/modules/shapes/shapes_lines/line_dissolve.cpp  |    0
 src/modules/shapes/shapes_lines/line_dissolve.h    |    0
 .../shapes_lines/line_polygon_intersection.cpp     |    0
 .../shapes_lines/line_polygon_intersection.h       |    0
 .../shapes/shapes_lines/line_properties.cpp        |    0
 src/modules/shapes/shapes_lines/line_properties.h  |    0
 .../shapes/shapes_lines/line_simplification.cpp    |    0
 .../shapes/shapes_lines/line_simplification.h      |    0
 src/modules/shapes/shapes_lines/line_smoothing.cpp |    0
 src/modules/shapes/shapes_lines/line_smoothing.h   |    0
 .../shapes/shapes_lines/line_split_with_lines.cpp  |    0
 .../shapes/shapes_lines/line_split_with_lines.h    |    0
 .../shapes/shapes_points/AddCoordinates.cpp        |    0
 src/modules/shapes/shapes_points/AddCoordinates.h  |    0
 src/modules/shapes/shapes_points/Clip_Points.cpp   |    0
 src/modules/shapes/shapes_points/Clip_Points.h     |    0
 src/modules/shapes/shapes_points/CountPoints.cpp   |    0
 src/modules/shapes/shapes_points/CountPoints.h     |    0
 .../shapes/shapes_points/CreatePointGrid.cpp       |    0
 src/modules/shapes/shapes_points/CreatePointGrid.h |    0
 .../shapes/shapes_points/DistanceMatrix.cpp        |    0
 src/modules/shapes/shapes_points/DistanceMatrix.h  |    0
 .../shapes/shapes_points/FitNPointsToShape.cpp     |    0
 .../shapes/shapes_points/FitNPointsToShape.h       |    0
 src/modules/shapes/shapes_points/MLB_Interface.cpp |    0
 src/modules/shapes/shapes_points/MLB_Interface.h   |    0
 src/modules/shapes/shapes_points/Makefile.am       |    0
 .../shapes/shapes_points/Points_From_Lines.cpp     |   20 +-
 .../shapes/shapes_points/Points_From_Lines.h       |    0
 .../shapes/shapes_points/Points_From_Table.cpp     |    0
 .../shapes/shapes_points/Points_From_Table.h       |    0
 .../shapes_points/add_polygon_attributes.cpp       |    0
 .../shapes/shapes_points/add_polygon_attributes.h  |    0
 src/modules/shapes/shapes_points/convex_hull.cpp   |    0
 src/modules/shapes/shapes_points/convex_hull.h     |    0
 .../shapes/shapes_points/gps_track_aggregation.cpp |    0
 .../shapes/shapes_points/gps_track_aggregation.h   |    0
 src/modules/shapes/shapes_points/points_filter.cpp |    0
 src/modules/shapes/shapes_points/points_filter.h   |    0
 .../shapes/shapes_points/points_thinning.cpp       |    0
 src/modules/shapes/shapes_points/points_thinning.h |    0
 .../shapes/shapes_points/remove_duplicates.cpp     |    0
 .../shapes/shapes_points/remove_duplicates.h       |    0
 src/modules/shapes/shapes_points/select_points.cpp |    0
 src/modules/shapes/shapes_points/select_points.h   |    0
 .../shapes/shapes_points/separate_by_direction.cpp |    0
 .../shapes/shapes_points/separate_by_direction.h   |    0
 .../shapes_points/snap_points_to_features.cpp      |    0
 .../shapes/shapes_points/snap_points_to_features.h |    0
 .../shapes/shapes_points/snap_points_to_grid.cpp   |    0
 .../shapes/shapes_points/snap_points_to_grid.h     |    0
 .../shapes/shapes_points/thiessen_polygons.cpp     |    0
 .../shapes/shapes_points/thiessen_polygons.h       |    0
 .../shapes/shapes_polygons/MLB_Interface.cpp       |    0
 src/modules/shapes/shapes_polygons/MLB_Interface.h |    0
 src/modules/shapes/shapes_polygons/Makefile.am     |    0
 .../shapes/shapes_polygons/Polygon_Centroids.cpp   |    0
 .../shapes/shapes_polygons/Polygon_Centroids.h     |    0
 .../shapes/shapes_polygons/Polygon_Clip.cpp        |    0
 src/modules/shapes/shapes_polygons/Polygon_Clip.h  |    0
 .../shapes/shapes_polygons/Polygon_Geometrics.cpp  |    0
 .../shapes/shapes_polygons/Polygon_Geometrics.h    |    0
 .../shapes_polygons/Polygon_Intersection.cpp       |    0
 .../shapes/shapes_polygons/Polygon_Intersection.h  |    0
 .../shapes_polygons/Polygon_SelfIntersection.cpp   |    0
 .../shapes_polygons/Polygon_SelfIntersection.h     |    0
 .../Polygon_StatisticsFromPoints.cpp               |    0
 .../shapes_polygons/Polygon_StatisticsFromPoints.h |    0
 .../shapes/shapes_polygons/Polygon_Union.cpp       |    0
 src/modules/shapes/shapes_polygons/Polygon_Union.h |    0
 .../shapes/shapes_polygons/Polygons_From_Lines.cpp |    0
 .../shapes/shapes_polygons/Polygons_From_Lines.h   |    0
 .../shapes_polygons/add_point_attributes.cpp       |    0
 .../shapes/shapes_polygons/add_point_attributes.h  |    0
 .../shapes/shapes_polygons/polygon_flatten.cpp     |    0
 .../shapes/shapes_polygons/polygon_flatten.h       |    0
 .../shapes_polygons/polygon_line_intersection.cpp  |    0
 .../shapes_polygons/polygon_line_intersection.h    |    0
 .../shapes_polygons/polygon_shared_edges.cpp       |    0
 .../shapes/shapes_polygons/polygon_shared_edges.h  |    0
 .../shapes/shapes_polygons/polygon_split_parts.cpp |    0
 .../shapes/shapes_polygons/polygon_split_parts.h   |    0
 .../shapes_polygons/polygon_to_edges_nodes.cpp     |    0
 .../shapes_polygons/polygon_to_edges_nodes.h       |    0
 .../shapes/shapes_polygons/polygon_to_points.cpp   |    0
 .../shapes/shapes_polygons/polygon_to_points.h     |    0
 src/modules/shapes/shapes_polygons/shape_index.cpp |    0
 src/modules/shapes/shapes_polygons/shape_index.h   |    0
 .../shapes/shapes_tools/CreateChartLayer.cpp       |    0
 src/modules/shapes/shapes_tools/CreateChartLayer.h |    0
 .../shapes/shapes_tools/GraticuleBuilder.cpp       |    0
 src/modules/shapes/shapes_tools/GraticuleBuilder.h |    0
 .../shapes/shapes_tools/LandUse_Scenario.cpp       |    0
 src/modules/shapes/shapes_tools/LandUse_Scenario.h |    0
 src/modules/shapes/shapes_tools/MLB_Interface.cpp  |    0
 src/modules/shapes/shapes_tools/MLB_Interface.h    |    0
 src/modules/shapes/shapes_tools/Makefile.am        |    0
 .../shapes_tools/NewLayerFromSelectedShapes.cpp    |    0
 .../shapes_tools/NewLayerFromSelectedShapes.h      |    0
 src/modules/shapes/shapes_tools/QueryBuilder.cpp   |    0
 src/modules/shapes/shapes_tools/QueryBuilder.h     |    0
 src/modules/shapes/shapes_tools/SearchInTable.cpp  |    0
 src/modules/shapes/shapes_tools/SearchInTable.h    |    0
 src/modules/shapes/shapes_tools/SelectByTheme.cpp  |    0
 src/modules/shapes/shapes_tools/SelectByTheme.h    |    0
 src/modules/shapes/shapes_tools/SeparateShapes.cpp |    0
 src/modules/shapes/shapes_tools/SeparateShapes.h   |    0
 .../shapes/shapes_tools/Shapes_Create_Empty.cpp    |    0
 .../shapes/shapes_tools/Shapes_Create_Empty.h      |    0
 src/modules/shapes/shapes_tools/Shapes_Merge.cpp   |    0
 src/modules/shapes/shapes_tools/Shapes_Merge.h     |    0
 .../shapes/shapes_tools/TransformShapes.cpp        |    0
 src/modules/shapes/shapes_tools/TransformShapes.h  |    0
 .../shapes/shapes_tools/quadtree_structure.cpp     |    0
 .../shapes/shapes_tools/quadtree_structure.h       |    0
 src/modules/shapes/shapes_tools/shapes_buffer.cpp  |    0
 src/modules/shapes/shapes_tools/shapes_buffer.h    |    0
 .../shapes_tools/shapes_convert_vertex_type.cpp    |    4 +-
 .../shapes_tools/shapes_convert_vertex_type.h      |    0
 src/modules/shapes/shapes_tools/shapes_cut.cpp     |    0
 src/modules/shapes/shapes_tools/shapes_cut.h       |    0
 .../shapes/shapes_tools/shapes_cut_interactive.cpp |    0
 .../shapes/shapes_tools/shapes_cut_interactive.h   |    0
 src/modules/shapes/shapes_tools/shapes_extents.cpp |    0
 src/modules/shapes/shapes_tools/shapes_extents.h   |    0
 .../shapes/shapes_tools/shapes_generate.cpp        |    8 +-
 src/modules/shapes/shapes_tools/shapes_generate.h  |    0
 .../shapes/shapes_tools/shapes_polar_to_cartes.cpp |    0
 .../shapes/shapes_tools/shapes_polar_to_cartes.h   |    0
 src/modules/shapes/shapes_tools/shapes_split.cpp   |    0
 src/modules/shapes/shapes_tools/shapes_split.h     |    0
 .../shapes_tools/shapes_split_by_attribute.cpp     |    0
 .../shapes_tools/shapes_split_by_attribute.h       |    0
 .../shapes/shapes_tools/shapes_split_randomly.cpp  |    0
 .../shapes/shapes_tools/shapes_split_randomly.h    |    0
 .../shapes/shapes_transect/MLB_Interface.cpp       |    0
 src/modules/shapes/shapes_transect/MLB_Interface.h |    0
 src/modules/shapes/shapes_transect/Makefile.am     |    0
 .../shapes/shapes_transect/Polygon_Transect.cpp    |    0
 .../shapes/shapes_transect/Polygon_Transect.h      |    0
 src/modules/simulation/Makefile.am                 |    6 +-
 src/modules/simulation/Makefile.in                 |    9 +-
 .../simulation/sim_cellular_automata/Life.cpp      |  195 +-
 .../simulation/sim_cellular_automata/Life.h        |   15 +-
 .../sim_cellular_automata/MLB_Interface.cpp        |    0
 .../sim_cellular_automata/MLB_Interface.h          |    0
 .../simulation/sim_cellular_automata/Makefile.am   |    0
 .../simulation/sim_cellular_automata/Wator.cpp     |  329 +-
 .../simulation/sim_cellular_automata/Wator.h       |   16 +-
 .../simulation/sim_ecosystems_hugget/Hugget_01.cpp |    0
 .../simulation/sim_ecosystems_hugget/Hugget_01.h   |    0
 .../simulation/sim_ecosystems_hugget/Hugget_02.cpp |    0
 .../simulation/sim_ecosystems_hugget/Hugget_02.h   |    0
 .../simulation/sim_ecosystems_hugget/Hugget_03.cpp |    0
 .../simulation/sim_ecosystems_hugget/Hugget_03.h   |    0
 .../sim_ecosystems_hugget/MLB_Interface.cpp        |    0
 .../sim_ecosystems_hugget/MLB_Interface.h          |    0
 .../simulation/sim_ecosystems_hugget/Makefile.am   |    0
 .../simulation/sim_erosion/MLB_Interface.cpp       |    0
 src/modules/simulation/sim_erosion/MLB_Interface.h |    0
 src/modules/simulation/sim_erosion/MMF_SAGA.cpp    |    0
 src/modules/simulation/sim_erosion/MMF_SAGA.h      |    0
 src/modules/simulation/sim_erosion/Makefile.am     |    0
 .../simulation/sim_fire_spreading/Forecasting.cpp  |  666 ++
 .../simulation/sim_fire_spreading/Forecasting.h    |   84 +
 .../sim_fire_spreading}/MLB_Interface.cpp          |   65 +-
 .../sim_fire_spreading}/MLB_Interface.h            |   12 +-
 .../Makefile.am                                    |   18 +-
 .../Makefile.in                                    |  124 +-
 .../simulation/sim_fire_spreading/Simulate.cpp     |  363 +
 .../simulation/sim_fire_spreading/Simulate.h       |   81 +
 .../simulation/sim_hydrology/DVWK_SoilMoisture.cpp |    0
 .../simulation/sim_hydrology/DVWK_SoilMoisture.h   |    0
 src/modules/simulation/sim_hydrology/KinWav_D8.cpp |    0
 src/modules/simulation/sim_hydrology/KinWav_D8.h   |    0
 .../simulation/sim_hydrology/MLB_Interface.cpp     |    6 +-
 .../simulation/sim_hydrology/MLB_Interface.h       |    0
 src/modules/simulation/sim_hydrology/Makefile.am   |    2 +
 src/modules/simulation/sim_hydrology/Makefile.in   |    8 +-
 .../sim_hydrology/WaterRetentionCapacity.cpp       |    0
 .../sim_hydrology/WaterRetentionCapacity.h         |    0
 .../sim_hydrology/diffuse_pollution_risk.cpp       |    0
 .../sim_hydrology/diffuse_pollution_risk.h         |    0
 .../diffusion_gradient_concentration.cpp           |  800 +++
 .../diffusion_gradient_concentration.h}            |  322 +-
 src/modules/simulation/sim_hydrology/idw.cpp       |    0
 src/modules/simulation/sim_hydrology/idw.h         |    0
 src/modules/simulation/sim_hydrology/topmodel.cpp  |    0
 src/modules/simulation/sim_hydrology/topmodel.h    |    0
 .../simulation/sim_hydrology/topmodel_values.cpp   |    0
 .../simulation/sim_hydrology/topmodel_values.h     |    0
 .../simulation/sim_ihacres/MLB_Interface.cpp       |    0
 src/modules/simulation/sim_ihacres/MLB_Interface.h |    0
 src/modules/simulation/sim_ihacres/Makefile.am     |    0
 src/modules/simulation/sim_ihacres/convert_sl.cpp  |    0
 src/modules/simulation/sim_ihacres/convert_sl.h    |    0
 .../simulation/sim_ihacres/ihacres_basin.cpp       |    0
 src/modules/simulation/sim_ihacres/ihacres_basin.h |    0
 .../simulation/sim_ihacres/ihacres_cal2.cpp        |    0
 src/modules/simulation/sim_ihacres/ihacres_cal2.h  |    0
 .../simulation/sim_ihacres/ihacres_elev.cpp        |    0
 src/modules/simulation/sim_ihacres/ihacres_elev.h  |    0
 .../simulation/sim_ihacres/ihacres_elev_bands.cpp  |    0
 .../simulation/sim_ihacres/ihacres_elev_bands.h    |    0
 .../simulation/sim_ihacres/ihacres_elev_cal.cpp    |    0
 .../simulation/sim_ihacres/ihacres_elev_cal.h      |    0
 src/modules/simulation/sim_ihacres/ihacres_eq.cpp  |    0
 src/modules/simulation/sim_ihacres/ihacres_eq.h    |    0
 src/modules/simulation/sim_ihacres/ihacres_v1.cpp  |    0
 src/modules/simulation/sim_ihacres/ihacres_v1.h    |    0
 src/modules/simulation/sim_ihacres/model_tools.cpp |    0
 src/modules/simulation/sim_ihacres/model_tools.h   |    0
 src/modules/simulation/sim_ihacres/snow_module.cpp |    0
 src/modules/simulation/sim_ihacres/snow_module.h   |    0
 .../simulation/sim_qm_of_esp/MLB_Interface.cpp     |    0
 .../simulation/sim_qm_of_esp/MLB_Interface.h       |    0
 src/modules/simulation/sim_qm_of_esp/Makefile.am   |    0
 .../simulation/sim_qm_of_esp/fill_sinks.cpp        |    0
 src/modules/simulation/sim_qm_of_esp/fill_sinks.h  |    0
 .../simulation/sim_qm_of_esp/flow_routing.cpp      |    0
 .../simulation/sim_qm_of_esp/flow_routing.h        |    0
 .../sim_qm_of_esp/hillslope_evolution_adi.cpp      |    0
 .../sim_qm_of_esp/hillslope_evolution_adi.h        |    0
 .../sim_qm_of_esp/hillslope_evolution_ftcs.cpp     |    0
 .../sim_qm_of_esp/hillslope_evolution_ftcs.h       |    0
 .../sim_qm_of_esp/successive_flow_routing.cpp      |    0
 .../sim_qm_of_esp/successive_flow_routing.h        |    0
 src/modules/simulation/sim_rivflow/DataTrans.cpp   |    0
 src/modules/simulation/sim_rivflow/DataTrans.h     |    0
 src/modules/simulation/sim_rivflow/GridComb.cpp    |    0
 src/modules/simulation/sim_rivflow/GridComb.h      |    0
 src/modules/simulation/sim_rivflow/LandFlow.cpp    |    0
 src/modules/simulation/sim_rivflow/LandFlow.h      |    0
 .../simulation/sim_rivflow/MLB_Interface.cpp       |    0
 src/modules/simulation/sim_rivflow/MLB_Interface.h |    0
 src/modules/simulation/sim_rivflow/Makefile.am     |    0
 src/modules/simulation/sim_rivflow/RivBasin.cpp    |    0
 src/modules/simulation/sim_rivflow/RivBasin.h      |    0
 .../simulation/sim_rivflow/RivCourseImpr.cpp       |    0
 src/modules/simulation/sim_rivflow/RivCourseImpr.h |    0
 src/modules/simulation/sim_rivflow/RivGridPrep.cpp |    0
 src/modules/simulation/sim_rivflow/RivGridPrep.h   |    0
 src/modules/statistics/Makefile.am                 |    0
 .../GSGrid_Directional_Statistics.cpp              |    0
 .../GSGrid_Directional_Statistics.h                |    0
 .../statistics_grid/GSGrid_Residuals.cpp           |    0
 .../statistics/statistics_grid/GSGrid_Residuals.h  |    0
 .../statistics_grid/GSGrid_Statistics.cpp          |    0
 .../statistics/statistics_grid/GSGrid_Statistics.h |    0
 .../statistics/statistics_grid/GSGrid_Variance.cpp |    0
 .../statistics/statistics_grid/GSGrid_Variance.h   |    0
 .../statistics_grid/GSGrid_Variance_Radius.cpp     |    0
 .../statistics_grid/GSGrid_Variance_Radius.h       |    0
 .../statistics_grid/GSGrid_Zonal_Statistics.cpp    |    0
 .../statistics_grid/GSGrid_Zonal_Statistics.h      |    0
 .../statistics/statistics_grid/MLB_Interface.cpp   |    0
 .../statistics/statistics_grid/MLB_Interface.h     |    0
 src/modules/statistics/statistics_grid/Makefile.am |    0
 .../statistics_grid/fast_representativeness.cpp    |    0
 .../statistics_grid/fast_representativeness.h      |    0
 .../statistics_grid/grid_autocorrelation.cpp       |    0
 .../statistics_grid/grid_autocorrelation.h         |    0
 .../statistics_grid/grid_latlon_statistics.cpp     |    0
 .../statistics_grid/grid_latlon_statistics.h       |    0
 .../statistics/statistics_grid/grid_pca.cpp        |    0
 src/modules/statistics/statistics_grid/grid_pca.h  |    0
 .../statistics_grid/multiband_variation.cpp        |    0
 .../statistics_grid/multiband_variation.h          |    0
 .../statistics_kriging/MLB_Interface.cpp           |    0
 .../statistics/statistics_kriging/MLB_Interface.h  |    0
 .../statistics/statistics_kriging/Makefile.am      |    0
 .../statistics/statistics_kriging/kriging_base.cpp |    0
 .../statistics/statistics_kriging/kriging_base.h   |    0
 .../statistics_kriging/kriging_ordinary.cpp        |    0
 .../statistics_kriging/kriging_ordinary.h          |    0
 .../statistics_kriging/kriging_regression.cpp      |   11 +-
 .../statistics_kriging/kriging_regression.h        |    0
 .../statistics_kriging/kriging_simple.cpp          |    0
 .../statistics/statistics_kriging/kriging_simple.h |    0
 .../statistics_kriging/kriging_universal.cpp       |   22 +-
 .../statistics_kriging/kriging_universal.h         |    2 +-
 .../statistics_kriging/semivariogram.cpp           |    0
 .../statistics/statistics_kriging/semivariogram.h  |    0
 .../statistics_kriging/variogram_dialog.cpp        |    0
 .../statistics_kriging/variogram_dialog.h          |    0
 .../statistics_points/GSPoints_Distances.cpp       |    0
 .../statistics_points/GSPoints_Distances.h         |    0
 .../GSPoints_Pattern_Analysis.cpp                  |    0
 .../statistics_points/GSPoints_Pattern_Analysis.h  |    0
 .../statistics_points/GSPoints_Semi_Variances.cpp  |    0
 .../statistics_points/GSPoints_Semi_Variances.h    |    0
 .../statistics_points/GSPoints_Variogram_Cloud.cpp |    0
 .../statistics_points/GSPoints_Variogram_Cloud.h   |    0
 .../GSPoints_Variogram_Surface.cpp                 |    0
 .../statistics_points/GSPoints_Variogram_Surface.h |    0
 .../statistics/statistics_points/MLB_Interface.cpp |    0
 .../statistics/statistics_points/MLB_Interface.h   |    0
 .../statistics/statistics_points/Makefile.am       |    0
 .../statistics_regression/MLB_Interface.cpp        |    0
 .../statistics_regression/MLB_Interface.h          |    0
 .../statistics/statistics_regression/Makefile.am   |    0
 .../grid_multi_grid_regression.cpp                 |   38 +-
 .../grid_multi_grid_regression.h                   |    0
 .../statistics_regression/grids_trend_polynom.cpp  |    0
 .../statistics_regression/grids_trend_polynom.h    |    0
 .../statistics_regression/gw_multi_regression.cpp  |    0
 .../statistics_regression/gw_multi_regression.h    |    0
 .../gw_multi_regression_grid.cpp                   |   14 +-
 .../gw_multi_regression_grid.h                     |    0
 .../gw_multi_regression_points.cpp                 |    0
 .../gw_multi_regression_points.h                   |    0
 .../statistics_regression/gw_regression.cpp        |    0
 .../statistics_regression/gw_regression.h          |    0
 .../statistics_regression/gw_regression_grid.cpp   |    0
 .../statistics_regression/gw_regression_grid.h     |    0
 .../statistics_regression/gwr_grid_downscaling.cpp |   10 +-
 .../statistics_regression/gwr_grid_downscaling.h   |    0
 .../point_grid_regression.cpp                      |   24 +-
 .../statistics_regression/point_grid_regression.h  |    2 +-
 .../point_multi_grid_regression.cpp                |   51 +-
 .../point_multi_grid_regression.h                  |    0
 .../statistics_regression/point_trend_surface.cpp  |    0
 .../statistics_regression/point_trend_surface.h    |    0
 .../point_zonal_multi_grid_regression.cpp          |   23 +-
 .../point_zonal_multi_grid_regression.h            |    0
 .../table_regression_multiple.cpp                  |    0
 .../table_regression_multiple.h                    |    0
 .../statistics_regression/table_trend.cpp          |    0
 .../statistics/statistics_regression/table_trend.h |    0
 src/modules/table/Makefile.am                      |    0
 src/modules/table/table_calculus/Fit.cpp           |   15 +-
 src/modules/table/table_calculus/Fit.h             |    0
 src/modules/table/table_calculus/LMFit.cpp         |    0
 src/modules/table/table_calculus/LMFit.h           |    0
 src/modules/table/table_calculus/MLB_Interface.cpp |    0
 src/modules/table/table_calculus/MLB_Interface.h   |    0
 src/modules/table/table_calculus/Makefile.am       |    0
 .../table/table_calculus/Table_Calculator.cpp      |    0
 .../table/table_calculus/Table_Calculator.h        |    0
 .../table_calculus/table_cluster_analysis.cpp      |    0
 .../table/table_calculus/table_cluster_analysis.h  |    0
 .../table/table_calculus/table_field_analyzer.cpp  |    0
 .../table/table_calculus/table_field_analyzer.h    |    0
 .../table_calculus/table_field_statistics.cpp      |    0
 .../table/table_calculus/table_field_statistics.h  |    0
 .../table_calculus/table_fill_record_gaps.cpp      |    0
 .../table/table_calculus/table_fill_record_gaps.h  |    0
 src/modules/table/table_calculus/table_mRMR.cpp    |    0
 src/modules/table/table_calculus/table_mRMR.h      |    0
 src/modules/table/table_calculus/table_pca.cpp     |    0
 src/modules/table/table_calculus/table_pca.h       |    0
 .../table/table_calculus/table_running_average.cpp |    0
 .../table/table_calculus/table_running_average.h   |    0
 src/modules/table/table_tools/Join_Tables.cpp      |    0
 src/modules/table/table_tools/Join_Tables.h        |    0
 src/modules/table/table_tools/MLB_Interface.cpp    |    0
 src/modules/table/table_tools/MLB_Interface.h      |    0
 src/modules/table/table_tools/Makefile.am          |    0
 .../table/table_tools/Table_Create_Empty.cpp       |    0
 src/modules/table/table_tools/Table_Create_Empty.h |    0
 src/modules/table/table_tools/Table_Enumerate.cpp  |    0
 src/modules/table/table_tools/Table_Enumerate.h    |    0
 src/modules/table/table_tools/Table_Rotate.cpp     |    0
 src/modules/table/table_tools/Table_Rotate.h       |    0
 .../table_tools/table_categories_to_indicators.cpp |    0
 .../table_tools/table_categories_to_indicators.h   |    0
 .../table_tools/table_change_color_format.cpp      |    0
 .../table/table_tools/table_change_color_format.h  |    0
 .../table/table_tools/table_change_date_format.cpp |    0
 .../table/table_tools/table_change_date_format.h   |    0
 .../table/table_tools/table_change_field_type.cpp  |    0
 .../table/table_tools/table_change_field_type.h    |    0
 .../table/table_tools/table_field_deletion.cpp     |    0
 .../table/table_tools/table_field_deletion.h       |    0
 src/modules/table/table_tools/table_selection.cpp  |    0
 src/modules/table/table_tools/table_selection.h    |    0
 .../table/table_tools/table_text_replacer.cpp      |    0
 .../table/table_tools/table_text_replacer.h        |    0
 src/modules/terrain_analysis/Makefile.am           |    0
 .../ta_channels/ChannelNetwork.cpp                 |    0
 .../terrain_analysis/ta_channels/ChannelNetwork.h  |    0
 .../ta_channels/ChannelNetwork_Altitude.cpp        |    0
 .../ta_channels/ChannelNetwork_Altitude.h          |    0
 .../ta_channels/ChannelNetwork_Distance.cpp        |    0
 .../ta_channels/ChannelNetwork_Distance.h          |    0
 .../ta_channels/D8_Flow_Analysis.cpp               |    0
 .../ta_channels/D8_Flow_Analysis.h                 |    0
 .../terrain_analysis/ta_channels/MLB_Interface.cpp |    0
 .../terrain_analysis/ta_channels/MLB_Interface.h   |    0
 .../terrain_analysis/ta_channels/Makefile.am       |    0
 .../terrain_analysis/ta_channels/Strahler.cpp      |    0
 .../terrain_analysis/ta_channels/Strahler.h        |    0
 .../terrain_analysis/ta_channels/Watersheds.cpp    |    0
 .../terrain_analysis/ta_channels/Watersheds.h      |    0
 .../ta_channels/Watersheds_ext.cpp                 |    4 +-
 .../terrain_analysis/ta_channels/Watersheds_ext.h  |    0
 .../terrain_analysis/ta_compound/MLB_Interface.cpp |    0
 .../terrain_analysis/ta_compound/MLB_Interface.h   |    0
 .../terrain_analysis/ta_compound/Makefile.am       |    0
 .../terrain_analysis/ta_compound/TA_Standard.cpp   |    0
 .../terrain_analysis/ta_compound/TA_Standard.h     |    0
 .../terrain_analysis/ta_hydrology/CellBalance.cpp  |    0
 .../terrain_analysis/ta_hydrology/CellBalance.h    |    0
 .../ta_hydrology/EdgeContamination.cpp             |    0
 .../ta_hydrology/EdgeContamination.h               |    0
 .../ta_hydrology/Erosion_LS_Fields.cpp             |    0
 .../ta_hydrology/Erosion_LS_Fields.h               |    0
 src/modules/terrain_analysis/ta_hydrology/Flow.cpp |  190 +-
 src/modules/terrain_analysis/ta_hydrology/Flow.h   |    9 +-
 .../terrain_analysis/ta_hydrology/FlowDepth.cpp    |    0
 .../terrain_analysis/ta_hydrology/FlowDepth.h      |    0
 .../ta_hydrology/Flow_AreaDownslope.cpp            |    0
 .../ta_hydrology/Flow_AreaDownslope.h              |    0
 .../ta_hydrology/Flow_AreaUpslope.cpp              |    0
 .../ta_hydrology/Flow_AreaUpslope.h                |    0
 .../terrain_analysis/ta_hydrology/Flow_BRM.h       |    0
 .../ta_hydrology/Flow_Distance.cpp                 |    0
 .../terrain_analysis/ta_hydrology/Flow_Distance.h  |    2 +-
 .../ta_hydrology/Flow_Parallel.cpp                 |   63 +-
 .../terrain_analysis/ta_hydrology/Flow_Parallel.h  |   14 +-
 .../ta_hydrology/Flow_RecursiveDown.cpp            |   16 +-
 .../ta_hydrology/Flow_RecursiveDown.h              |    2 +-
 .../ta_hydrology/Flow_RecursiveUp.cpp              |   80 +-
 .../ta_hydrology/Flow_RecursiveUp.h                |   24 +-
 .../terrain_analysis/ta_hydrology/Helper.cpp       |    0
 src/modules/terrain_analysis/ta_hydrology/Helper.h |    0
 .../ta_hydrology/IsochronesConst.cpp               |    0
 .../ta_hydrology/IsochronesConst.h                 |    0
 .../ta_hydrology/IsochronesVar.cpp                 |    0
 .../terrain_analysis/ta_hydrology/IsochronesVar.h  |    0
 .../terrain_analysis/ta_hydrology/LakeFlood.cpp    |    0
 .../terrain_analysis/ta_hydrology/LakeFlood.h      |    4 +-
 .../ta_hydrology/LakeFloodInteractive.cpp          |    0
 .../ta_hydrology/MLB_Interface.cpp                 |    0
 .../terrain_analysis/ta_hydrology/MLB_Interface.h  |    7 -
 .../terrain_analysis/ta_hydrology/Makefile.am      |    0
 .../ta_hydrology/SAGA_Wetness_Index.cpp            |    0
 .../ta_hydrology/SAGA_Wetness_Index.h              |    0
 .../terrain_analysis/ta_hydrology/Sinuosity.cpp    |    0
 .../terrain_analysis/ta_hydrology/Sinuosity.h      |    0
 .../terrain_analysis/ta_hydrology/SlopeLength.cpp  |    0
 .../terrain_analysis/ta_hydrology/SlopeLength.h    |    0
 .../ta_hydrology/TopographicIndices.cpp            |    0
 .../ta_hydrology/TopographicIndices.h              |    8 +-
 .../ta_hydrology/flow_by_slope.cpp                 |    0
 .../terrain_analysis/ta_hydrology/flow_by_slope.h  |    0
 .../ta_hydrology/flow_massflux.cpp                 |    0
 .../terrain_analysis/ta_hydrology/flow_massflux.h  |    0
 .../terrain_analysis/ta_hydrology/flow_width.cpp   |    0
 .../terrain_analysis/ta_hydrology/flow_width.h     |    0
 .../ta_hydrology/melton_ruggedness.cpp             |    0
 .../ta_hydrology/melton_ruggedness.h               |    0
 .../terrain_analysis/ta_lighting/HillShade.cpp     |    0
 .../terrain_analysis/ta_lighting/HillShade.h       |    0
 .../terrain_analysis/ta_lighting/MLB_Interface.cpp |    0
 .../terrain_analysis/ta_lighting/MLB_Interface.h   |    0
 .../terrain_analysis/ta_lighting/Makefile.am       |    0
 .../ta_lighting/SolarRadiation.cpp                 |    0
 .../terrain_analysis/ta_lighting/SolarRadiation.h  |    0
 .../ta_lighting/Visibility_BASE.cpp                |    0
 .../terrain_analysis/ta_lighting/Visibility_BASE.h |    0
 .../ta_lighting/Visibility_Point.cpp               |    0
 .../ta_lighting/Visibility_Point.h                 |    0
 .../ta_lighting/Visibility_Points.cpp              |    0
 .../ta_lighting/Visibility_Points.h                |    0
 .../ta_lighting/topographic_correction.cpp         |    4 +-
 .../ta_lighting/topographic_correction.h           |    0
 .../ta_lighting/topographic_openness.cpp           |    0
 .../ta_lighting/topographic_openness.h             |    0
 .../terrain_analysis/ta_lighting/view_shed.cpp     |    0
 .../terrain_analysis/ta_lighting/view_shed.h       |    0
 .../ta_morphometry/Convergence.cpp                 |    0
 .../terrain_analysis/ta_morphometry/Convergence.h  |    0
 .../ta_morphometry/Convergence_Radius.cpp          |    0
 .../ta_morphometry/Convergence_Radius.h            |    0
 .../ta_morphometry/Curvature_Classification.cpp    |    0
 .../ta_morphometry/Curvature_Classification.h      |    0
 .../ta_morphometry/Curvature_UpDownSlope.cpp       |    0
 .../ta_morphometry/Curvature_UpDownSlope.h         |    0
 .../terrain_analysis/ta_morphometry/Hypsometry.cpp |    0
 .../terrain_analysis/ta_morphometry/Hypsometry.h   |    0
 .../ta_morphometry/MLB_Interface.cpp               |    0
 .../ta_morphometry/MLB_Interface.h                 |    0
 .../terrain_analysis/ta_morphometry/Makefile.am    |    0
 .../ta_morphometry/Morphometry.cpp                 |    0
 .../terrain_analysis/ta_morphometry/Morphometry.h  |    0
 .../ta_morphometry/ProtectionIndex.cpp             |    0
 .../ta_morphometry/ProtectionIndex.h               |    0
 .../terrain_analysis/ta_morphometry/RealArea.cpp   |    0
 .../terrain_analysis/ta_morphometry/RealArea.h     |    0
 .../ta_morphometry/SurfaceSpecificPoints.cpp       |    0
 .../ta_morphometry/SurfaceSpecificPoints.h         |    0
 .../ta_morphometry/air_flow_height.cpp             |    0
 .../ta_morphometry/air_flow_height.h               |    0
 .../ta_morphometry/anisotropic_heating.cpp         |    0
 .../ta_morphometry/anisotropic_heating.h           |    0
 .../ta_morphometry/distance_gradient.cpp           |    0
 .../ta_morphometry/distance_gradient.h             |    0
 .../ta_morphometry/fuzzy_landform_elements.cpp     |    0
 .../ta_morphometry/fuzzy_landform_elements.h       |    0
 .../ta_morphometry/land_surface_temperature.cpp    |    0
 .../ta_morphometry/land_surface_temperature.h      |    0
 .../ta_morphometry/mass_balance_index.cpp          |    0
 .../ta_morphometry/mass_balance_index.h            |    0
 .../terrain_analysis/ta_morphometry/mrvbf.cpp      |    9 +-
 .../terrain_analysis/ta_morphometry/mrvbf.h        |    0
 .../ta_morphometry/param_scale.cpp                 |    0
 .../terrain_analysis/ta_morphometry/param_scale.h  |    0
 .../ta_morphometry/relative_heights.cpp            |    0
 .../ta_morphometry/relative_heights.h              |    0
 .../terrain_analysis/ta_morphometry/ruggedness.cpp |    0
 .../terrain_analysis/ta_morphometry/ruggedness.h   |    0
 .../ta_morphometry/tc_iwahashi_pike.cpp            |    4 +-
 .../ta_morphometry/tc_iwahashi_pike.h              |    0
 .../terrain_analysis/ta_morphometry/top_hat.cpp    |    0
 .../terrain_analysis/ta_morphometry/top_hat.h      |    0
 .../terrain_analysis/ta_morphometry/tpi.cpp        |    0
 src/modules/terrain_analysis/ta_morphometry/tpi.h  |    0
 .../ta_morphometry/wind_effect.cpp                 |    0
 .../terrain_analysis/ta_morphometry/wind_effect.h  |    0
 .../terrain_analysis/ta_preprocessor/FillSinks.cpp |    0
 .../terrain_analysis/ta_preprocessor/FillSinks.h   |    0
 .../ta_preprocessor/FillSinks_WL.cpp               |    0
 .../ta_preprocessor/FillSinks_WL.h                 |    0
 .../ta_preprocessor/FillSinks_WL_XXL.cpp           |    0
 .../ta_preprocessor/Flat_Detection.cpp             |    0
 .../ta_preprocessor/Flat_Detection.h               |    0
 .../ta_preprocessor/MLB_Interface.cpp              |    0
 .../ta_preprocessor/MLB_Interface.h                |    0
 .../terrain_analysis/ta_preprocessor/Makefile.am   |    0
 .../ta_preprocessor/Pit_Eliminator.cpp             |    0
 .../ta_preprocessor/Pit_Eliminator.h               |    0
 .../ta_preprocessor/Pit_Router.cpp                 |    0
 .../terrain_analysis/ta_preprocessor/Pit_Router.h  |    0
 .../ta_preprocessor/burn_in_streams.cpp            |    0
 .../ta_preprocessor/burn_in_streams.h              |    0
 .../ta_profiles/Grid_Cross_Profiles.cpp            |    0
 .../ta_profiles/Grid_Cross_Profiles.h              |    0
 .../ta_profiles/Grid_Flow_Profile.cpp              |    0
 .../ta_profiles/Grid_Flow_Profile.h                |    0
 .../terrain_analysis/ta_profiles/Grid_Profile.cpp  |    0
 .../terrain_analysis/ta_profiles/Grid_Profile.h    |    0
 .../ta_profiles/Grid_ProfileFromPoints.cpp         |    0
 .../ta_profiles/Grid_ProfileFromPoints.h           |    0
 .../ta_profiles/Grid_Profile_From_Lines.cpp        |    0
 .../ta_profiles/Grid_Profile_From_Lines.h          |    0
 .../ta_profiles/Grid_Swath_Profile.cpp             |    4 +-
 .../ta_profiles/Grid_Swath_Profile.h               |    0
 .../terrain_analysis/ta_profiles/MLB_Interface.cpp |    0
 .../terrain_analysis/ta_profiles/MLB_Interface.h   |    0
 .../terrain_analysis/ta_profiles/Makefile.am       |    0
 .../ta_slope_stability/ANGMAP_01.cpp               |    0
 .../ta_slope_stability/ANGMAP_01.h                 |    0
 .../ta_slope_stability/MLB_Interface.cpp           |    0
 .../ta_slope_stability/MLB_Interface.h             |    0
 .../ta_slope_stability/Makefile.am                 |    0
 .../ta_slope_stability/SHALSTAB_01.cpp             |    0
 .../ta_slope_stability/SHALSTAB_01.h               |    0
 .../ta_slope_stability/Safetyfactor_01.cpp         |    0
 .../ta_slope_stability/Safetyfactor_01.h           |    0
 .../ta_slope_stability/TOBIA_01.cpp                |    4 +-
 .../terrain_analysis/ta_slope_stability/TOBIA_01.h |    0
 .../ta_slope_stability/WEDGEFAIL_01.cpp            |    0
 .../ta_slope_stability/WEDGEFAIL_01.h              |    0
 .../ta_slope_stability/WETNESS_01.cpp              |    0
 .../ta_slope_stability/WETNESS_01.h                |    0
 src/modules/tin/Makefile.am                        |    0
 src/modules/tin/tin_tools/MLB_Interface.cpp        |    0
 src/modules/tin/tin_tools/MLB_Interface.h          |    0
 src/modules/tin/tin_tools/Makefile.am              |    0
 src/modules/tin/tin_tools/TIN_Flow_Parallel.cpp    |    0
 src/modules/tin/tin_tools/TIN_Flow_Parallel.h      |    0
 src/modules/tin/tin_tools/TIN_Flow_Trace.cpp       |    0
 src/modules/tin/tin_tools/TIN_Flow_Trace.h         |    0
 src/modules/tin/tin_tools/TIN_From_Grid.cpp        |    0
 src/modules/tin/tin_tools/TIN_From_Grid.h          |    0
 .../tin_tools/TIN_From_Grid_Specific_Points.cpp    |    0
 .../tin/tin_tools/TIN_From_Grid_Specific_Points.h  |    0
 src/modules/tin/tin_tools/TIN_From_Shapes.cpp      |    0
 src/modules/tin/tin_tools/TIN_From_Shapes.h        |    0
 src/modules/tin/tin_tools/TIN_Gradient.cpp         |    0
 src/modules/tin/tin_tools/TIN_Gradient.h           |    0
 src/modules/tin/tin_tools/TIN_To_Shapes.cpp        |    0
 src/modules/tin/tin_tools/TIN_To_Shapes.h          |    0
 src/modules/tin/tin_viewer/MLB_Interface.cpp       |    0
 src/modules/tin/tin_viewer/MLB_Interface.h         |    0
 src/modules/tin/tin_viewer/Makefile.am             |    0
 src/modules/tin/tin_viewer/tin_view_control.cpp    |   23 +-
 src/modules/tin/tin_viewer/tin_view_control.h      |    6 +-
 src/modules/tin/tin_viewer/tin_view_dialog.cpp     |    0
 src/modules/tin/tin_viewer/tin_view_dialog.h       |    0
 src/modules/tin/tin_viewer/tin_view_module.cpp     |    0
 src/modules/tin/tin_viewer/tin_view_module.h       |    0
 src/saga_core/Makefile.am                          |    0
 src/saga_core/saga_api/Makefile.am                 |    0
 src/saga_core/saga_api/api_callback.cpp            |    0
 src/saga_core/saga_api/api_colors.cpp              |    0
 src/saga_core/saga_api/api_core.cpp                |   28 +-
 src/saga_core/saga_api/api_core.h                  |   61 +-
 src/saga_core/saga_api/api_file.cpp                |    0
 src/saga_core/saga_api/api_memory.cpp              |   56 +-
 src/saga_core/saga_api/api_string.cpp              |    0
 src/saga_core/saga_api/api_translator.cpp          |    0
 src/saga_core/saga_api/clipper.cpp                 |    0
 src/saga_core/saga_api/clipper.hpp                 |    0
 src/saga_core/saga_api/compatibility.h             |    0
 src/saga_core/saga_api/data_manager.cpp            |    0
 src/saga_core/saga_api/data_manager.h              |    0
 src/saga_core/saga_api/dataobject.cpp              |    0
 src/saga_core/saga_api/dataobject.h                |    0
 src/saga_core/saga_api/datetime.cpp                |    0
 src/saga_core/saga_api/datetime.h                  |    0
 src/saga_core/saga_api/geo_classes.cpp             |    0
 src/saga_core/saga_api/geo_functions.cpp           |    0
 src/saga_core/saga_api/geo_tools.h                 |    0
 src/saga_core/saga_api/grid.cpp                    |  342 +-
 src/saga_core/saga_api/grid.h                      |   49 +-
 src/saga_core/saga_api/grid_io.cpp                 |    0
 src/saga_core/saga_api/grid_memory.cpp             |    0
 src/saga_core/saga_api/grid_operation.cpp          |  511 +-
 src/saga_core/saga_api/grid_pyramid.cpp            |    0
 src/saga_core/saga_api/grid_pyramid.h              |    0
 src/saga_core/saga_api/grid_system.cpp             |    0
 src/saga_core/saga_api/mat_formula.cpp             |  244 +-
 src/saga_core/saga_api/mat_grid_radius.cpp         |    0
 src/saga_core/saga_api/mat_indexing.cpp            |    0
 src/saga_core/saga_api/mat_mRMR.cpp                |   23 +-
 src/saga_core/saga_api/mat_matrix.cpp              |    0
 src/saga_core/saga_api/mat_regression.cpp          |    0
 src/saga_core/saga_api/mat_regression_multiple.cpp |    0
 src/saga_core/saga_api/mat_regression_weighted.cpp |    0
 src/saga_core/saga_api/mat_spline.cpp              |    0
 src/saga_core/saga_api/mat_tools.cpp               |    0
 src/saga_core/saga_api/mat_tools.h                 |   36 +-
 src/saga_core/saga_api/mat_trend.cpp               |    0
 src/saga_core/saga_api/metadata.cpp                |   83 +-
 src/saga_core/saga_api/metadata.h                  |    6 +-
 src/saga_core/saga_api/module.cpp                  |   50 +-
 src/saga_core/saga_api/module.h                    |    0
 src/saga_core/saga_api/module_chain.cpp            |   51 +-
 src/saga_core/saga_api/module_chain.h              |    0
 src/saga_core/saga_api/module_grid.cpp             |    4 +-
 src/saga_core/saga_api/module_grid_interactive.cpp |    0
 src/saga_core/saga_api/module_interactive.cpp      |    0
 src/saga_core/saga_api/module_interactive_base.cpp |    0
 src/saga_core/saga_api/module_library.cpp          |  153 +-
 src/saga_core/saga_api/module_library.h            |    0
 .../saga_api/module_library_interface.cpp          |    0
 src/saga_core/saga_api/parameter.cpp               |  172 +-
 src/saga_core/saga_api/parameter_data.cpp          |    4 +-
 src/saga_core/saga_api/parameters.cpp              |  104 +-
 src/saga_core/saga_api/parameters.h                |   13 +-
 src/saga_core/saga_api/pointcloud.cpp              |    0
 src/saga_core/saga_api/pointcloud.h                |    0
 src/saga_core/saga_api/projections.cpp             |    0
 src/saga_core/saga_api/quadtree.cpp                |    0
 src/saga_core/saga_api/saga_api.cpp                |    0
 src/saga_core/saga_api/saga_api.h                  |    4 +-
 src/saga_core/saga_api/shape.cpp                   |    0
 src/saga_core/saga_api/shape_line.cpp              |    0
 src/saga_core/saga_api/shape_part.cpp              |    0
 src/saga_core/saga_api/shape_point.cpp             |    0
 src/saga_core/saga_api/shape_points.cpp            |    0
 src/saga_core/saga_api/shape_polygon.cpp           |    0
 src/saga_core/saga_api/shapes.cpp                  |    5 +-
 src/saga_core/saga_api/shapes.h                    |    0
 src/saga_core/saga_api/shapes_io.cpp               |   40 +-
 src/saga_core/saga_api/shapes_ogis.cpp             |    0
 src/saga_core/saga_api/shapes_polygons.cpp         |    0
 src/saga_core/saga_api/shapes_search.cpp           |    0
 src/saga_core/saga_api/shapes_selection.cpp        |    0
 src/saga_core/saga_api/table.cpp                   |    5 +-
 src/saga_core/saga_api/table.h                     |    0
 src/saga_core/saga_api/table_dbase.cpp             |    8 +-
 src/saga_core/saga_api/table_dbase.h               |    4 +-
 src/saga_core/saga_api/table_io.cpp                |   42 +-
 src/saga_core/saga_api/table_record.cpp            |    0
 src/saga_core/saga_api/table_selection.cpp         |    0
 src/saga_core/saga_api/table_value.h               |    0
 src/saga_core/saga_api/tin.cpp                     |    0
 src/saga_core/saga_api/tin.h                       |    0
 src/saga_core/saga_api/tin_elements.cpp            |    0
 src/saga_core/saga_api/tin_triangulation.cpp       |    0
 src/saga_core/saga_cmd/Makefile.am                 |    0
 src/saga_core/saga_cmd/callback.cpp                |    0
 src/saga_core/saga_cmd/callback.h                  |    0
 src/saga_core/saga_cmd/man/Makefile.am             |    0
 src/saga_core/saga_cmd/man/saga_cmd.1              |    2 +-
 src/saga_core/saga_cmd/module_library.cpp          |    7 +-
 src/saga_core/saga_cmd/module_library.h            |    0
 src/saga_core/saga_cmd/saga_cmd.cpp                |   92 +-
 src/saga_core/saga_gdi/3d_view.h                   |    0
 src/saga_core/saga_gdi/3d_view_canvas.cpp          |    0
 src/saga_core/saga_gdi/3d_view_dialog.cpp          |    0
 src/saga_core/saga_gdi/3d_view_panel.cpp           |   36 +-
 src/saga_core/saga_gdi/3d_view_projector.cpp       |    0
 src/saga_core/saga_gdi/3d_view_tools.h             |    6 +-
 src/saga_core/saga_gdi/Makefile.am                 |    0
 src/saga_core/saga_gdi/saga_gdi.cpp                |    0
 src/saga_core/saga_gdi/saga_gdi.h                  |    0
 src/saga_core/saga_gdi/sgdi_core.h                 |    0
 src/saga_core/saga_gdi/sgdi_diagram.cpp            |    0
 src/saga_core/saga_gdi/sgdi_diagram.h              |    0
 src/saga_core/saga_gdi/sgdi_dialog.cpp             |    0
 src/saga_core/saga_gdi/sgdi_dialog.h               |    0
 src/saga_core/saga_gdi/sgdi_helper.cpp             |    0
 src/saga_core/saga_gdi/sgdi_helper.h               |    0
 src/saga_core/saga_gui/Makefile.am                 |    6 +-
 src/saga_core/saga_gui/Makefile.in                 |   76 +-
 src/saga_core/saga_gui/active.cpp                  |    3 +-
 src/saga_core/saga_gui/active.h                    |    0
 src/saga_core/saga_gui/active_HTMLExtraInfo.cpp    |  119 -
 src/saga_core/saga_gui/active_HTMLExtraInfo.h      |  101 -
 src/saga_core/saga_gui/active_attributes.cpp       |    0
 src/saga_core/saga_gui/active_attributes.h         |    0
 .../saga_gui/active_attributes_control.cpp         |    0
 src/saga_core/saga_gui/active_attributes_control.h |    0
 src/saga_core/saga_gui/active_description.cpp      |    0
 src/saga_core/saga_gui/active_description.h        |    0
 src/saga_core/saga_gui/active_history.cpp          |    0
 src/saga_core/saga_gui/active_history.h            |    0
 src/saga_core/saga_gui/active_legend.cpp           |    0
 src/saga_core/saga_gui/active_legend.h             |    0
 src/saga_core/saga_gui/active_parameters.cpp       |    0
 src/saga_core/saga_gui/active_parameters.h         |    0
 src/saga_core/saga_gui/callback.cpp                |    0
 src/saga_core/saga_gui/callback.h                  |    0
 src/saga_core/saga_gui/data_source.cpp             |    0
 src/saga_core/saga_gui/data_source.h               |    0
 src/saga_core/saga_gui/data_source_files.cpp       |    0
 src/saga_core/saga_gui/data_source_files.h         |    0
 src/saga_core/saga_gui/data_source_odbc.cpp        |    9 +-
 src/saga_core/saga_gui/data_source_odbc.h          |    0
 src/saga_core/saga_gui/data_source_pgsql.cpp       |   30 +-
 src/saga_core/saga_gui/data_source_pgsql.h         |    0
 src/saga_core/saga_gui/dc_helper.cpp               |    0
 src/saga_core/saga_gui/dc_helper.h                 |    0
 src/saga_core/saga_gui/dlg_about.cpp               |    0
 src/saga_core/saga_gui/dlg_about.h                 |    0
 src/saga_core/saga_gui/dlg_about_logo.cpp          |    0
 src/saga_core/saga_gui/dlg_about_logo.h            |    0
 src/saga_core/saga_gui/dlg_base.cpp                |    0
 src/saga_core/saga_gui/dlg_base.h                  |    0
 src/saga_core/saga_gui/dlg_colors.cpp              |    0
 src/saga_core/saga_gui/dlg_colors.h                |    0
 src/saga_core/saga_gui/dlg_colors_control.cpp      |    0
 src/saga_core/saga_gui/dlg_colors_control.h        |    0
 src/saga_core/saga_gui/dlg_list_base.cpp           |    0
 src/saga_core/saga_gui/dlg_list_base.h             |    0
 src/saga_core/saga_gui/dlg_list_grid.cpp           |    0
 src/saga_core/saga_gui/dlg_list_grid.h             |    0
 src/saga_core/saga_gui/dlg_list_pointcloud.cpp     |    0
 src/saga_core/saga_gui/dlg_list_pointcloud.h       |    0
 src/saga_core/saga_gui/dlg_list_shapes.cpp         |    0
 src/saga_core/saga_gui/dlg_list_shapes.h           |    0
 src/saga_core/saga_gui/dlg_list_table.cpp          |    0
 src/saga_core/saga_gui/dlg_list_table.h            |    0
 src/saga_core/saga_gui/dlg_list_tin.cpp            |    0
 src/saga_core/saga_gui/dlg_list_tin.h              |    0
 src/saga_core/saga_gui/dlg_parameters.cpp          |    0
 src/saga_core/saga_gui/dlg_parameters.h            |    0
 src/saga_core/saga_gui/dlg_table.cpp               |    0
 src/saga_core/saga_gui/dlg_table.h                 |    0
 src/saga_core/saga_gui/dlg_table_control.cpp       |    0
 src/saga_core/saga_gui/dlg_table_control.h         |    0
 src/saga_core/saga_gui/dlg_text.cpp                |    0
 src/saga_core/saga_gui/dlg_text.h                  |    0
 src/saga_core/saga_gui/helper.cpp                  |   14 +-
 src/saga_core/saga_gui/helper.h                    |   10 +-
 src/saga_core/saga_gui/info.cpp                    |    0
 src/saga_core/saga_gui/info.h                      |    0
 src/saga_core/saga_gui/info_messages.cpp           |    0
 src/saga_core/saga_gui/info_messages.h             |    0
 src/saga_core/saga_gui/man/Makefile.am             |    0
 src/saga_core/saga_gui/man/saga_gui.1              |    0
 src/saga_core/saga_gui/parameters_control.cpp      |    0
 src/saga_core/saga_gui/parameters_control.h        |    0
 src/saga_core/saga_gui/parameters_properties.cpp   |    0
 src/saga_core/saga_gui/parameters_properties.h     |    0
 src/saga_core/saga_gui/project.cpp                 |   20 +-
 src/saga_core/saga_gui/project.h                   |    0
 src/saga_core/saga_gui/res/colours.bmp             |  Bin
 src/saga_core/saga_gui/res/resource.h              |    0
 src/saga_core/saga_gui/res/saga.appdata.xml        |    0
 src/saga_core/saga_gui/res/saga.bra.txt            | 7046 ++++++++++++++++++++
 src/saga_core/saga_gui/res/saga.desktop            |    0
 src/saga_core/saga_gui/res/saga.ger.txt            |  194 +-
 src/saga_core/saga_gui/res/saga.ico                |  Bin
 src/saga_core/saga_gui/res/saga.lng.txt            |  194 +-
 src/saga_core/saga_gui/res/saga.png                |  Bin
 src/saga_core/saga_gui/res/saga_dic.txt            |    0
 src/saga_core/saga_gui/res/saga_gui.rc             |    0
 src/saga_core/saga_gui/res/saga_icon_128.png       |  Bin
 src/saga_core/saga_gui/res/saga_icon_64.png        |  Bin
 src/saga_core/saga_gui/res/saga_srs.txt            |    0
 src/saga_core/saga_gui/res/saga_tip.txt            |    0
 src/saga_core/saga_gui/res/tool_menus.xml          |    0
 src/saga_core/saga_gui/res/tool_menus_example.xml  |    0
 .../saga_gui/res/xpm/crs_edit_point_add.xpm        |    0
 .../saga_gui/res/xpm/crs_edit_point_move.xpm       |    0
 src/saga_core/saga_gui/res/xpm/crs_hand.xpm        |    0
 src/saga_core/saga_gui/res/xpm/crs_hand_grap.xpm   |    0
 src/saga_core/saga_gui/res/xpm/crs_info.xpm        |    0
 src/saga_core/saga_gui/res/xpm/crs_magnifier.xpm   |    0
 src/saga_core/saga_gui/res/xpm/crs_select.xpm      |    0
 src/saga_core/saga_gui/res/xpm/default.xpm         |    0
 .../saga_gui/res/xpm/nb_active_attributes.xpm      |    0
 .../saga_gui/res/xpm/nb_active_description.xpm     |    0
 .../saga_gui/res/xpm/nb_active_htmlextrainfo.xpm   |    0
 .../saga_gui/res/xpm/nb_active_legend.xpm          |    0
 .../saga_gui/res/xpm/nb_active_parameters.xpm      |    0
 src/saga_core/saga_gui/res/xpm/nb_info_error.xpm   |    0
 .../saga_gui/res/xpm/nb_info_execution.xpm         |    0
 .../saga_gui/res/xpm/nb_info_messages.xpm          |    0
 src/saga_core/saga_gui/res/xpm/nb_wksp_data.xpm    |    0
 src/saga_core/saga_gui/res/xpm/nb_wksp_maps.xpm    |    0
 src/saga_core/saga_gui/res/xpm/nb_wksp_modules.xpm |    0
 .../saga_gui/res/xpm/nb_wksp_thumbnails.xpm        |    0
 .../saga_gui/res/xpm/nb_wksp_treeview.xpm          |    0
 src/saga_core/saga_gui/res/xpm/saga_icon_16.xpm    |    0
 src/saga_core/saga_gui/res/xpm/saga_icon_32.xpm    |    0
 src/saga_core/saga_gui/res/xpm/saga_splash.xpm     |    0
 src/saga_core/saga_gui/res/xpm/tb_active.xpm       |    0
 src/saga_core/saga_gui/res/xpm/tb_datasource.xpm   |    0
 src/saga_core/saga_gui/res/xpm/tb_delete.xpm       |    0
 .../saga_gui/res/xpm/tb_diagram_parameters.xpm     |    0
 .../saga_gui/res/xpm/tb_edit_shape_add.xpm         |    0
 .../saga_gui/res/xpm/tb_edit_shape_add_part.xpm    |    0
 .../saga_gui/res/xpm/tb_edit_shape_del.xpm         |    0
 .../saga_gui/res/xpm/tb_edit_shape_del_part.xpm    |    0
 .../saga_gui/res/xpm/tb_edit_shape_del_point.xpm   |    0
 .../saga_gui/res/xpm/tb_edit_shape_select.xpm      |    0
 src/saga_core/saga_gui/res/xpm/tb_help.xpm         |    0
 .../saga_gui/res/xpm/tb_histogram_as_table.xpm     |    0
 .../saga_gui/res/xpm/tb_histogram_cumulative.xpm   |    0
 src/saga_core/saga_gui/res/xpm/tb_info.xpm         |    0
 .../saga_gui/res/xpm/tb_layout_page_setup.xpm      |    0
 src/saga_core/saga_gui/res/xpm/tb_layout_print.xpm |    0
 .../saga_gui/res/xpm/tb_layout_print_preview.xpm   |    0
 .../saga_gui/res/xpm/tb_layout_print_setup.xpm     |    0
 .../saga_gui/res/xpm/tb_map3d_central_less.xpm     |    0
 .../saga_gui/res/xpm/tb_map3d_central_more.xpm     |    0
 .../saga_gui/res/xpm/tb_map3d_exaggerate_less.xpm  |    0
 .../saga_gui/res/xpm/tb_map3d_exaggerate_more.xpm  |    0
 .../saga_gui/res/xpm/tb_map3d_interpolated.xpm     |    0
 .../saga_gui/res/xpm/tb_map3d_properties.xpm       |    0
 .../saga_gui/res/xpm/tb_map3d_rotate_x_less.xpm    |    0
 .../saga_gui/res/xpm/tb_map3d_rotate_x_more.xpm    |    0
 .../saga_gui/res/xpm/tb_map3d_rotate_z_less.xpm    |    0
 .../saga_gui/res/xpm/tb_map3d_rotate_z_more.xpm    |    0
 .../saga_gui/res/xpm/tb_map3d_shift_x_less.xpm     |    0
 .../saga_gui/res/xpm/tb_map3d_shift_x_more.xpm     |    0
 .../saga_gui/res/xpm/tb_map3d_shift_y_less.xpm     |    0
 .../saga_gui/res/xpm/tb_map3d_shift_y_more.xpm     |    0
 .../saga_gui/res/xpm/tb_map3d_shift_z_less.xpm     |    0
 .../saga_gui/res/xpm/tb_map3d_shift_z_more.xpm     |    0
 src/saga_core/saga_gui/res/xpm/tb_map3d_stereo.xpm |    0
 src/saga_core/saga_gui/res/xpm/tb_map_3d_show.xpm  |    0
 .../saga_gui/res/xpm/tb_map_layout_show.xpm        |    0
 .../saga_gui/res/xpm/tb_map_legend_horizontal.xpm  |    0
 .../saga_gui/res/xpm/tb_map_legend_vertical.xpm    |    0
 .../saga_gui/res/xpm/tb_map_mode_distance.xpm      |    0
 src/saga_core/saga_gui/res/xpm/tb_map_mode_pan.xpm |    0
 .../saga_gui/res/xpm/tb_map_mode_select.xpm        |    0
 .../saga_gui/res/xpm/tb_map_mode_zoom.xpm          |    0
 .../saga_gui/res/xpm/tb_map_north_arrow.xpm        |    0
 src/saga_core/saga_gui/res/xpm/tb_map_scalebar.xpm |    0
 .../saga_gui/res/xpm/tb_map_synchronize.xpm        |    0
 .../saga_gui/res/xpm/tb_map_zoom_active.xpm        |    0
 .../saga_gui/res/xpm/tb_map_zoom_full.xpm          |    0
 .../saga_gui/res/xpm/tb_map_zoom_last.xpm          |    0
 .../saga_gui/res/xpm/tb_map_zoom_next.xpm          |    0
 .../saga_gui/res/xpm/tb_map_zoom_selection.xpm     |    0
 src/saga_core/saga_gui/res/xpm/tb_open.xpm         |    0
 src/saga_core/saga_gui/res/xpm/tb_open_grid.xpm    |    0
 src/saga_core/saga_gui/res/xpm/tb_open_module.xpm  |    0
 src/saga_core/saga_gui/res/xpm/tb_open_shapes.xpm  |    0
 src/saga_core/saga_gui/res/xpm/tb_open_table.xpm   |    0
 src/saga_core/saga_gui/res/xpm/tb_open_tin.xpm     |    0
 src/saga_core/saga_gui/res/xpm/tb_save.xpm         |    0
 .../saga_gui/res/xpm/tb_scatterplot_parameters.xpm |    0
 src/saga_core/saga_gui/res/xpm/tb_show.xpm         |    0
 .../saga_gui/res/xpm/tb_table_col_add.xpm          |    0
 .../saga_gui/res/xpm/tb_table_col_del.xpm          |    0
 .../saga_gui/res/xpm/tb_table_row_add.xpm          |    0
 .../saga_gui/res/xpm/tb_table_row_del.xpm          |    0
 .../saga_gui/res/xpm/tb_table_row_del_all.xpm      |    0
 .../saga_gui/res/xpm/tb_table_row_ins.xpm          |    0
 src/saga_core/saga_gui/res/xpm/tb_wksp.xpm         |    0
 .../saga_gui/res/xpm/wksp_data_manager.xpm         |    0
 src/saga_core/saga_gui/res/xpm/wksp_grid.xpm       |    0
 .../saga_gui/res/xpm/wksp_grid_manager.xpm         |    0
 .../saga_gui/res/xpm/wksp_grid_system.xpm          |    0
 src/saga_core/saga_gui/res/xpm/wksp_map.xpm        |    0
 .../saga_gui/res/xpm/wksp_map_graticule.xpm        |    0
 .../saga_gui/res/xpm/wksp_map_manager.xpm          |    0
 src/saga_core/saga_gui/res/xpm/wksp_module.xpm     |    0
 .../saga_gui/res/xpm/wksp_module_library.xpm       |    0
 .../saga_gui/res/xpm/wksp_module_manager.xpm       |    0
 src/saga_core/saga_gui/res/xpm/wksp_noitems.xpm    |    0
 .../saga_gui/res/xpm/wksp_odbc_source_off.xpm      |    0
 .../saga_gui/res/xpm/wksp_odbc_source_on.xpm       |    0
 .../saga_gui/res/xpm/wksp_odbc_sources.xpm         |    0
 .../saga_gui/res/xpm/wksp_shapes_line.xpm          |    0
 .../saga_gui/res/xpm/wksp_shapes_manager.xpm       |    0
 .../saga_gui/res/xpm/wksp_shapes_point.xpm         |    0
 .../saga_gui/res/xpm/wksp_shapes_points.xpm        |    0
 .../saga_gui/res/xpm/wksp_shapes_polygon.xpm       |    0
 src/saga_core/saga_gui/res/xpm/wksp_table.xpm      |    0
 .../saga_gui/res/xpm/wksp_table_manager.xpm        |    0
 src/saga_core/saga_gui/res/xpm/wksp_tin.xpm        |    0
 .../saga_gui/res/xpm/wksp_tin_manager.xpm          |    0
 src/saga_core/saga_gui/res/xpm/wnd_diagram.xpm     |    0
 src/saga_core/saga_gui/res/xpm/wnd_histogram.xpm   |    0
 src/saga_core/saga_gui/res/xpm/wnd_layout.xpm      |    0
 src/saga_core/saga_gui/res/xpm/wnd_map.xpm         |    0
 src/saga_core/saga_gui/res/xpm/wnd_map3d.xpm       |    0
 src/saga_core/saga_gui/res/xpm/wnd_scatterplot.xpm |    0
 src/saga_core/saga_gui/res/xpm/wnd_table.xpm       |    0
 src/saga_core/saga_gui/res_commands.cpp            |    5 +-
 src/saga_core/saga_gui/res_commands.h              |    4 +-
 src/saga_core/saga_gui/res_controls.cpp            |    0
 src/saga_core/saga_gui/res_controls.h              |    0
 src/saga_core/saga_gui/res_dialogs.cpp             |    0
 src/saga_core/saga_gui/res_dialogs.h               |    0
 src/saga_core/saga_gui/res_images.cpp              |    3 +-
 src/saga_core/saga_gui/res_images.h                |    3 +-
 src/saga_core/saga_gui/saga.cpp                    |    0
 src/saga_core/saga_gui/saga.h                      |    0
 src/saga_core/saga_gui/saga_frame.cpp              |    0
 src/saga_core/saga_gui/saga_frame.h                |    0
 src/saga_core/saga_gui/saga_frame_droptarget.cpp   |    0
 src/saga_core/saga_gui/saga_frame_droptarget.h     |    0
 src/saga_core/saga_gui/view_base.cpp               |    0
 src/saga_core/saga_gui/view_base.h                 |    0
 src/saga_core/saga_gui/view_histogram.cpp          |    0
 src/saga_core/saga_gui/view_histogram.h            |    0
 src/saga_core/saga_gui/view_layout.cpp             |    0
 src/saga_core/saga_gui/view_layout.h               |    0
 src/saga_core/saga_gui/view_layout_control.cpp     |    0
 src/saga_core/saga_gui/view_layout_control.h       |    0
 src/saga_core/saga_gui/view_layout_info.cpp        |    0
 src/saga_core/saga_gui/view_layout_info.h          |    0
 src/saga_core/saga_gui/view_layout_printout.cpp    |    0
 src/saga_core/saga_gui/view_layout_printout.h      |    0
 src/saga_core/saga_gui/view_map.cpp                |   13 +-
 src/saga_core/saga_gui/view_map.h                  |    3 +-
 src/saga_core/saga_gui/view_map_3d.cpp             |    0
 src/saga_core/saga_gui/view_map_3d.h               |    0
 src/saga_core/saga_gui/view_map_3d_panel.cpp       |    2 +-
 src/saga_core/saga_gui/view_map_3d_panel.h         |    0
 src/saga_core/saga_gui/view_map_control.cpp        |    6 +-
 src/saga_core/saga_gui/view_map_control.h          |    0
 src/saga_core/saga_gui/view_ruler.cpp              |    0
 src/saga_core/saga_gui/view_ruler.h                |    0
 src/saga_core/saga_gui/view_scatterplot.cpp        |    7 +-
 src/saga_core/saga_gui/view_scatterplot.h          |    0
 src/saga_core/saga_gui/view_table.cpp              |    0
 src/saga_core/saga_gui/view_table.h                |    0
 src/saga_core/saga_gui/view_table_control.cpp      |    0
 src/saga_core/saga_gui/view_table_control.h        |    0
 src/saga_core/saga_gui/view_table_diagram.cpp      |    0
 src/saga_core/saga_gui/view_table_diagram.h        |    0
 src/saga_core/saga_gui/wksp.cpp                    |    0
 src/saga_core/saga_gui/wksp.h                      |    0
 src/saga_core/saga_gui/wksp_base_control.cpp       |  107 +-
 src/saga_core/saga_gui/wksp_base_control.h         |   10 +-
 src/saga_core/saga_gui/wksp_base_item.cpp          |    9 +-
 src/saga_core/saga_gui/wksp_base_item.h            |    9 +-
 src/saga_core/saga_gui/wksp_base_manager.cpp       |    0
 src/saga_core/saga_gui/wksp_base_manager.h         |    0
 src/saga_core/saga_gui/wksp_data_control.cpp       |   88 +-
 src/saga_core/saga_gui/wksp_data_control.h         |   17 +-
 src/saga_core/saga_gui/wksp_data_item.cpp          |    0
 src/saga_core/saga_gui/wksp_data_item.h            |    0
 src/saga_core/saga_gui/wksp_data_layers.cpp        |   14 +-
 src/saga_core/saga_gui/wksp_data_layers.h          |    0
 src/saga_core/saga_gui/wksp_data_manager.cpp       |  263 +-
 src/saga_core/saga_gui/wksp_data_manager.h         |   11 +-
 src/saga_core/saga_gui/wksp_data_menu_file.cpp     |   12 +-
 src/saga_core/saga_gui/wksp_data_menu_file.h       |    0
 src/saga_core/saga_gui/wksp_data_menu_files.cpp    |    0
 src/saga_core/saga_gui/wksp_data_menu_files.h      |    0
 src/saga_core/saga_gui/wksp_grid.cpp               |  213 +-
 src/saga_core/saga_gui/wksp_grid.h                 |    6 +-
 src/saga_core/saga_gui/wksp_grid_manager.cpp       |   14 +-
 src/saga_core/saga_gui/wksp_grid_manager.h         |    0
 src/saga_core/saga_gui/wksp_grid_system.cpp        |    6 +-
 src/saga_core/saga_gui/wksp_grid_system.h          |    0
 src/saga_core/saga_gui/wksp_layer.cpp              |   10 +-
 src/saga_core/saga_gui/wksp_layer.h                |    0
 src/saga_core/saga_gui/wksp_layer_classify.cpp     |    0
 src/saga_core/saga_gui/wksp_layer_classify.h       |    0
 src/saga_core/saga_gui/wksp_layer_legend.cpp       |    0
 src/saga_core/saga_gui/wksp_layer_legend.h         |    0
 src/saga_core/saga_gui/wksp_map.cpp                |   82 +-
 src/saga_core/saga_gui/wksp_map.h                  |    3 +-
 .../{wksp_map_layer.cpp => wksp_map_basemap.cpp}   |  301 +-
 .../{wksp_map_graticule.h => wksp_map_basemap.h}   |   22 +-
 src/saga_core/saga_gui/wksp_map_buttons.cpp        |    0
 src/saga_core/saga_gui/wksp_map_buttons.h          |    0
 src/saga_core/saga_gui/wksp_map_control.cpp        |   24 +-
 src/saga_core/saga_gui/wksp_map_control.h          |    0
 src/saga_core/saga_gui/wksp_map_dc.cpp             |    0
 src/saga_core/saga_gui/wksp_map_dc.h               |    0
 src/saga_core/saga_gui/wksp_map_graticule.cpp      |   82 +-
 src/saga_core/saga_gui/wksp_map_graticule.h        |    0
 src/saga_core/saga_gui/wksp_map_layer.cpp          |    0
 src/saga_core/saga_gui/wksp_map_layer.h            |    0
 src/saga_core/saga_gui/wksp_map_manager.cpp        |   12 +-
 src/saga_core/saga_gui/wksp_map_manager.h          |    0
 src/saga_core/saga_gui/wksp_module.cpp             |    5 +-
 src/saga_core/saga_gui/wksp_module.h               |    0
 src/saga_core/saga_gui/wksp_module_control.cpp     |    0
 src/saga_core/saga_gui/wksp_module_control.h       |    0
 src/saga_core/saga_gui/wksp_module_library.cpp     |   46 +-
 src/saga_core/saga_gui/wksp_module_library.h       |    0
 src/saga_core/saga_gui/wksp_module_manager.cpp     |   44 +-
 src/saga_core/saga_gui/wksp_module_manager.h       |    0
 src/saga_core/saga_gui/wksp_module_menu.cpp        |    0
 src/saga_core/saga_gui/wksp_module_menu.h          |    0
 src/saga_core/saga_gui/wksp_pointcloud.cpp         |    6 +-
 src/saga_core/saga_gui/wksp_pointcloud.h           |    0
 src/saga_core/saga_gui/wksp_pointcloud_manager.cpp |    0
 src/saga_core/saga_gui/wksp_pointcloud_manager.h   |    0
 src/saga_core/saga_gui/wksp_shapes.cpp             |    6 +-
 src/saga_core/saga_gui/wksp_shapes.h               |    0
 src/saga_core/saga_gui/wksp_shapes_edit.cpp        |    3 +-
 src/saga_core/saga_gui/wksp_shapes_line.cpp        |    0
 src/saga_core/saga_gui/wksp_shapes_line.h          |    0
 src/saga_core/saga_gui/wksp_shapes_manager.cpp     |   15 +-
 src/saga_core/saga_gui/wksp_shapes_manager.h       |    0
 src/saga_core/saga_gui/wksp_shapes_point.cpp       |    0
 src/saga_core/saga_gui/wksp_shapes_point.h         |    0
 src/saga_core/saga_gui/wksp_shapes_points.cpp      |    0
 src/saga_core/saga_gui/wksp_shapes_points.h        |    0
 src/saga_core/saga_gui/wksp_shapes_polygon.cpp     |    0
 src/saga_core/saga_gui/wksp_shapes_polygon.h       |    0
 src/saga_core/saga_gui/wksp_shapes_type.cpp        |   13 +-
 src/saga_core/saga_gui/wksp_shapes_type.h          |    0
 src/saga_core/saga_gui/wksp_table.cpp              |    6 +-
 src/saga_core/saga_gui/wksp_table.h                |    0
 src/saga_core/saga_gui/wksp_table_manager.cpp      |    0
 src/saga_core/saga_gui/wksp_table_manager.h        |    0
 src/saga_core/saga_gui/wksp_tin.cpp                |    0
 src/saga_core/saga_gui/wksp_tin.h                  |    0
 src/saga_core/saga_gui/wksp_tin_manager.cpp        |    0
 src/saga_core/saga_gui/wksp_tin_manager.h          |    0
 src/scripting/helper/make_arcsaga_toolboxes.bat    |    0
 src/scripting/helper/make_saga_release.bat         |    2 +-
 src/scripting/helper/make_saga_snapshot.bat        |    0
 src/scripting/helper/make_tools_interface.bat      |    0
 src/scripting/helper/make_translation_files.bat    |    1 +
 .../python/examples/00_grid_create_dummy.py        |    0
 .../python/examples/01_grid_asc_to_saga.py         |    0
 .../python/examples/02_grid_morphometry.py         |    0
 .../python/examples/03_grid_difference.py          |    0
 src/scripting/python/examples/04_grid_contour.py   |    0
 src/scripting/python/examples/05_shp2xyz.py        |    0
 src/scripting/python/examples/06_xyz2shp.py        |    0
 .../saga_cmd_param_interface/environment.py        |    0
 .../saga_cmd_param_interface/param_interface.py    |    0
 .../helpers/saga_cmd_param_interface/tools.py      |   19 +-
 src/scripting/python/saga_python_api.txt           |    0
 src/scripting/python/test_data/test.mgrd           |    0
 src/scripting/python/test_data/test.sdat           |    0
 src/scripting/python/test_data/test.sgrd           |    0
 src/scripting/python/test_data/test_ascii.asc      |    0
 src/scripting/python/test_data/test_pts.dbf        |  Bin
 src/scripting/python/test_data/test_pts.mshp       |    0
 src/scripting/python/test_data/test_pts.shp        |  Bin
 src/scripting/python/test_data/test_pts.shx        |  Bin
 src/scripting/python/test_data/test_pts_xyz.xyz    |    0
 src/scripting/toolchains/climate.xml               |   10 +
 src/scripting/toolchains/cluster_terrain.xml       |    0
 src/scripting/toolchains/gridding.xml              |    0
 src/scripting/toolchains/imagery.xml               |   10 +
 src/scripting/toolchains/imagery_lczc.xml          |    2 +-
 src/scripting/toolchains/obia.xml                  |  262 +-
 src/scripting/toolchains/points_to_contour.xml     |    0
 src/scripting/toolchains/sieve_and_clump.xml       |    0
 .../toolchains/temperature_downscaling.xml         |   55 +-
 src/scripting/toolchains/terrain_analysis.xml      |    0
 src/scripting/toolchains/terrain_segmentation.xml  |    0
 src/scripting/toolchains/tta_LandCover.xml         |  135 +
 src/scripting/toolchains/tta_TravelTime.xml        |   87 +
 src/scripting/toolchains/tta_tools.xml             |   20 +
 src/scripting/toolchains/twi.xml                   |    0
 src/scripting/toolchains/upslope_height.xml        |    0
 1990 files changed, 18719 insertions(+), 5413 deletions(-)

diff --git a/AUTHORS b/AUTHORS
old mode 100644
new mode 100755
diff --git a/COPYING b/COPYING
old mode 100644
new mode 100755
diff --git a/ChangeLog b/ChangeLog
old mode 100644
new mode 100755
diff --git a/Makefile.am b/Makefile.am
old mode 100644
new mode 100755
index a2f7fec..8ced89a
--- a/Makefile.am
+++ b/Makefile.am
@@ -5,7 +5,10 @@ AM_CXXFLAGS = -g -DDEBUG $(GOMPFLAGS)
 endif
 ACLOCAL_AMFLAGS = -I m4
 
+
 # additional directories to package
 EXTRA_DIST = ./src/scripting
-dist-hook:
-		rm -rf `find $(distdir)/src/scripting -type d -name .svn`
+
+toolchainsdir = $(pkgdatadir)/toolchains
+
+dist_toolchains_DATA = src/scripting/toolchains/*.xml
diff --git a/Makefile.in b/Makefile.in
index 0d9f735..9d944ed 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -13,6 +13,7 @@
 # PARTICULAR PURPOSE.
 
 @SET_MAKE@
+
 VPATH = @srcdir@
 am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
 am__make_running_with_option = \
@@ -80,9 +81,9 @@ host_triplet = @host@
 subdir = .
 DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
 	$(top_srcdir)/configure $(am__configure_deps) \
-	$(srcdir)/config.h.in AUTHORS COPYING ChangeLog NEWS README \
-	compile config.guess config.sub depcomp install-sh missing \
-	py-compile ltmain.sh
+	$(srcdir)/config.h.in $(dist_toolchains_DATA) AUTHORS COPYING \
+	ChangeLog NEWS README compile config.guess config.sub \
+	install-sh missing ltmain.sh
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_lib_postgresql.m4 \
 	$(top_srcdir)/m4/ax_pkg_swig.m4 \
@@ -127,6 +128,35 @@ am__can_run_installinfo = \
     n|no|NO) false;; \
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(toolchainsdir)"
+DATA = $(dist_toolchains_DATA)
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
 am__recursive_targets = \
@@ -353,6 +383,8 @@ ACLOCAL_AMFLAGS = -I m4
 
 # additional directories to package
 EXTRA_DIST = ./src/scripting
+toolchainsdir = $(pkgdatadir)/toolchains
+dist_toolchains_DATA = src/scripting/toolchains/*.xml
 all: config.h
 	$(MAKE) $(AM_MAKEFLAGS) all-recursive
 
@@ -415,6 +447,27 @@ clean-libtool:
 
 distclean-libtool:
 	-rm -f libtool config.lt
+install-dist_toolchainsDATA: $(dist_toolchains_DATA)
+	@$(NORMAL_INSTALL)
+	@list='$(dist_toolchains_DATA)'; test -n "$(toolchainsdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(toolchainsdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(toolchainsdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(toolchainsdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(toolchainsdir)" || exit $$?; \
+	done
+
+uninstall-dist_toolchainsDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(dist_toolchains_DATA)'; test -n "$(toolchainsdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(toolchainsdir)'; $(am__uninstall_files_from_dir)
 
 # This directory's subdirectories are mostly independent; you can cd
 # into them and run 'make' without going through this Makefile.
@@ -579,9 +632,6 @@ distdir: $(DISTFILES)
 	      || exit 1; \
 	  fi; \
 	done
-	$(MAKE) $(AM_MAKEFLAGS) \
-	  top_distdir="$(top_distdir)" distdir="$(distdir)" \
-	  dist-hook
 	-test -n "$(am__skip_mode_fix)" \
 	|| find "$(distdir)" -type d ! -perm -755 \
 		-exec chmod u+rwx,go+rx {} \; -o \
@@ -715,9 +765,12 @@ distcleancheck: distclean
 	       exit 1; } >&2
 check-am: all-am
 check: check-recursive
-all-am: Makefile config.h
+all-am: Makefile $(DATA) config.h
 installdirs: installdirs-recursive
 installdirs-am:
+	for dir in "$(DESTDIR)$(toolchainsdir)"; do \
+	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+	done
 install: install-recursive
 install-exec: install-exec-recursive
 install-data: install-data-recursive
@@ -770,7 +823,7 @@ info: info-recursive
 
 info-am:
 
-install-data-am:
+install-data-am: install-dist_toolchainsDATA
 
 install-dvi: install-dvi-recursive
 
@@ -816,29 +869,28 @@ ps: ps-recursive
 
 ps-am:
 
-uninstall-am:
+uninstall-am: uninstall-dist_toolchainsDATA
 
 .MAKE: $(am__recursive_targets) all install-am install-strip
 
 .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
 	am--refresh check check-am clean clean-cscope clean-generic \
 	clean-libtool cscope cscopelist-am ctags ctags-am dist \
-	dist-all dist-bzip2 dist-gzip dist-hook dist-lzip dist-shar \
-	dist-tarZ dist-xz dist-zip distcheck distclean \
-	distclean-generic distclean-hdr distclean-libtool \
-	distclean-tags distcleancheck distdir distuninstallcheck dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-data install-data-am install-dvi install-dvi-am \
+	dist-all dist-bzip2 dist-gzip dist-lzip dist-shar dist-tarZ \
+	dist-xz dist-zip distcheck distclean distclean-generic \
+	distclean-hdr distclean-libtool distclean-tags distcleancheck \
+	distdir distuninstallcheck dvi dvi-am html html-am info \
+	info-am install install-am install-data install-data-am \
+	install-dist_toolchainsDATA install-dvi install-dvi-am \
 	install-exec install-exec-am install-html install-html-am \
 	install-info install-info-am install-man install-pdf \
 	install-pdf-am install-ps install-ps-am install-strip \
 	installcheck installcheck-am installdirs installdirs-am \
 	maintainer-clean maintainer-clean-generic mostlyclean \
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags tags-am uninstall uninstall-am
+	tags tags-am uninstall uninstall-am \
+	uninstall-dist_toolchainsDATA
 
-dist-hook:
-		rm -rf `find $(distdir)/src/scripting -type d -name .svn`
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/NEWS b/NEWS
old mode 100644
new mode 100755
diff --git a/README b/README
old mode 100644
new mode 100755
index 13b9488..5a01ea5
--- a/README
+++ b/README
@@ -1,6 +1,6 @@
 _______________________________________________________________________________
 
-         SAGA 2.2.3 - System for Automated Geoscientific Analyses
+         SAGA 2.2.4 - System for Automated Geoscientific Analyses
 _______________________________________________________________________________
 
 * Introduction
diff --git a/config.h.in b/config.h.in
index 2234daa..1a2aa1a 100644
--- a/config.h.in
+++ b/config.h.in
@@ -21,6 +21,9 @@
 /* Define to 1 if you have the `geotrans' library (-lgeotrans). */
 #undef HAVE_LIBGEOTRANS
 
+/* Define to 1 if you have the `qhull' library (-lqhull). */
+#undef HAVE_LIBQHULL
+
 /* Define to 1 if your system has a GNU libc compatible `malloc' function, and
    to 0 otherwise. */
 #undef HAVE_MALLOC
diff --git a/configure b/configure
index e447e1c..25af572 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for saga 2.2.3.
+# Generated by GNU Autoconf 2.69 for saga 2.2.4.
 #
 # Report bugs to <BUG-REPORT-ADDRESS>.
 #
@@ -590,8 +590,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='saga'
 PACKAGE_TARNAME='saga'
-PACKAGE_VERSION='2.2.3'
-PACKAGE_STRING='saga 2.2.3'
+PACKAGE_VERSION='2.2.4'
+PACKAGE_STRING='saga 2.2.4'
 PACKAGE_BUGREPORT='BUG-REPORT-ADDRESS'
 PACKAGE_URL=''
 
@@ -657,6 +657,8 @@ SAGA_PYTHON_FALSE
 SAGA_PYTHON_TRUE
 DISABLELIBHARU
 HARU_LIB
+SYSTEM_GRIB2C_FALSE
+SYSTEM_GRIB2C_TRUE
 HAVE_HARU_FALSE
 HAVE_HARU_TRUE
 HAVE_VIGRA_FALSE
@@ -665,6 +667,10 @@ HAVE_LLAS_FALSE
 HAVE_LLAS_TRUE
 HAVE_CV_FALSE
 HAVE_CV_TRUE
+LIBFIRE_FALSE
+LIBFIRE_TRUE
+TRIANGLE_FALSE
+TRIANGLE_TRUE
 GOMPFLAGS
 OPENMP_FALSE
 OPENMP_TRUE
@@ -823,6 +829,9 @@ enable_debug
 enable_gui
 enable_odbc
 enable_openmp
+enable_triangle
+enable_libfire
+with_system_grib2c
 enable_python
 '
       ac_precious_vars='build_alias
@@ -1380,7 +1389,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures saga 2.2.3 to adapt to many kinds of systems.
+\`configure' configures saga 2.2.4 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1450,7 +1459,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of saga 2.2.3:";;
+     short | recursive ) echo "Configuration of saga 2.2.4:";;
    esac
   cat <<\_ACEOF
 
@@ -1473,6 +1482,11 @@ Optional Features:
   --disable-gui		  Do not build GUI and interactive modules
   --disable-odbc		  Build without ODBC support
   --disable-openmp	  Build without OpenMP support
+  --disable-triangle      Compile without triangle.c (only free for
+                          non-commercial usage), and use qhull instead
+                          (requires qhull)
+  --disable-libfire       Compile without libfire (only free for
+                          non-commercial usage)
   --enable-python    Build python bindings for the saga api
 
 Optional Packages:
@@ -1486,6 +1500,9 @@ Optional Packages:
   --with-local=dir        search /usr/local or other directory for includes and libs
   --with-postgresql=[ARG] use PostgreSQL library [default=yes], optionally
                           specify path to pg_config
+  --with-system_grib2c    Use system version of grib2c instead of embedded
+                          copy, requires this library (and the header) to be
+                          found.
 
 Some influential environment variables:
   CXX         C++ compiler command
@@ -1571,7 +1588,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-saga configure 2.2.3
+saga configure 2.2.4
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2115,7 +2132,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by saga $as_me 2.2.3, which was
+It was created by saga $as_me 2.2.4, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -2982,7 +2999,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='saga'
- VERSION='2.2.3'
+ VERSION='2.2.4'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -15417,13 +15434,13 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 # Checks for libraries.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for cvGetRows in -lcv" >&5
-$as_echo_n "checking for cvGetRows in -lcv... " >&6; }
-if ${ac_cv_lib_cv_cvGetRows+:} false; then :
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for cvGetRows in -lopencv_core" >&5
+$as_echo_n "checking for cvGetRows in -lopencv_core... " >&6; }
+if ${ac_cv_lib_opencv_core_cvGetRows+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
-LIBS="-lcv  $LIBS"
+LIBS="-lopencv_core  $LIBS"
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -15443,17 +15460,17 @@ return cvGetRows ();
 }
 _ACEOF
 if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_cv_cvGetRows=yes
+  ac_cv_lib_opencv_core_cvGetRows=yes
 else
-  ac_cv_lib_cv_cvGetRows=no
+  ac_cv_lib_opencv_core_cvGetRows=no
 fi
 rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_cv_cvGetRows" >&5
-$as_echo "$ac_cv_lib_cv_cvGetRows" >&6; }
-if test "x$ac_cv_lib_cv_cvGetRows" = xyes; then :
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_opencv_core_cvGetRows" >&5
+$as_echo "$ac_cv_lib_opencv_core_cvGetRows" >&6; }
+if test "x$ac_cv_lib_opencv_core_cvGetRows" = xyes; then :
   CVFOUND=1
 fi
 
@@ -15824,6 +15841,45 @@ if test "x$ac_cv_lib_gomp_omp_get_num_threads" = xyes; then :
   GOMPFOUND=1
 fi
 
+ac_fn_c_check_header_mongrel "$LINENO" "grib2.h" "ac_cv_header_grib2_h" "$ac_includes_default"
+if test "x$ac_cv_header_grib2_h" = xyes; then :
+   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lgrib2c" >&5
+$as_echo_n "checking for main in -lgrib2c... " >&6; }
+if ${ac_cv_lib_grib2c_main+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lgrib2c  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+int
+main ()
+{
+return main ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_grib2c_main=yes
+else
+  ac_cv_lib_grib2c_main=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_grib2c_main" >&5
+$as_echo "$ac_cv_lib_grib2c_main" >&6; }
+if test "x$ac_cv_lib_grib2c_main" = xyes; then :
+  GRIB2FOUND=1
+fi
+
+fi
+
+
 
 # Checks for header files.
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
@@ -17253,6 +17309,100 @@ $as_echo "        libgomp not found, OpenMP support disabled" >&6; }
 
 
 
+# Check whether --enable-triangle was given.
+if test "${enable_triangle+set}" = set; then :
+  enableval=$enable_triangle;
+else
+  use_triangle=yes
+fi
+
+
+ if test x$use_triangle = xyes; then
+  TRIANGLE_TRUE=
+  TRIANGLE_FALSE='#'
+else
+  TRIANGLE_TRUE='#'
+  TRIANGLE_FALSE=
+fi
+
+
+if test "x$use_triangle" != xyes; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result:         Triangle disabled" >&5
+$as_echo "        Triangle disabled" >&6; }
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for qh_qhull in -lqhull" >&5
+$as_echo_n "checking for qh_qhull in -lqhull... " >&6; }
+if ${ac_cv_lib_qhull_qh_qhull+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lqhull  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char qh_qhull ();
+int
+main ()
+{
+return qh_qhull ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_qhull_qh_qhull=yes
+else
+  ac_cv_lib_qhull_qh_qhull=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_qhull_qh_qhull" >&5
+$as_echo "$ac_cv_lib_qhull_qh_qhull" >&6; }
+if test "x$ac_cv_lib_qhull_qh_qhull" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBQHULL 1
+_ACEOF
+
+  LIBS="-lqhull $LIBS"
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "--disable-triangle was given but test for qhull failed
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+ fi
+
+# Check whether --enable-libfire was given.
+if test "${enable_libfire+set}" = set; then :
+  enableval=$enable_libfire;
+else
+  use_libfire=yes
+fi
+
+
+ if test x$use_libfire = xyes; then
+  LIBFIRE_TRUE=
+  LIBFIRE_FALSE='#'
+else
+  LIBFIRE_TRUE='#'
+  LIBFIRE_FALSE=
+fi
+
+
+if test "x$use_libfire" != xyes; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result:         Libfire disabled" >&5
+$as_echo "        Libfire disabled" >&6; }
+fi
+
 #AM_CONDITIONAL(X86_64, test "`uname -m`" = "x86_64")
      if test -n "$CVFOUND"; then
   HAVE_CV_TRUE=
@@ -17300,6 +17450,24 @@ $as_echo "        libharu was not found, pdf creation will be disabled" >&6; }
   fi
 
 
+# Check whether --with-system_grib2c was given.
+if test "${with_system_grib2c+set}" = set; then :
+  withval=$with_system_grib2c; { $as_echo "$as_me:${as_lineno-$LINENO}: result:         using system grib2c" >&5
+$as_echo "        using system grib2c" >&6; };
+	system_grib2c=true
+
+fi
+
+ if test -n "$GRIB2FOUND" -a x$system_grib2c=xtrue; then
+  SYSTEM_GRIB2C_TRUE=
+  SYSTEM_GRIB2C_FALSE='#'
+else
+  SYSTEM_GRIB2C_TRUE='#'
+  SYSTEM_GRIB2C_FALSE=
+fi
+
+
+
 
 
 # Check whether --enable-python was given.
@@ -18173,6 +18341,14 @@ if test -z "${OPENMP_TRUE}" && test -z "${OPENMP_FALSE}"; then
   as_fn_error $? "conditional \"OPENMP\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
+if test -z "${TRIANGLE_TRUE}" && test -z "${TRIANGLE_FALSE}"; then
+  as_fn_error $? "conditional \"TRIANGLE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${LIBFIRE_TRUE}" && test -z "${LIBFIRE_FALSE}"; then
+  as_fn_error $? "conditional \"LIBFIRE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
 if test -z "${HAVE_CV_TRUE}" && test -z "${HAVE_CV_FALSE}"; then
   as_fn_error $? "conditional \"HAVE_CV\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -18189,6 +18365,10 @@ if test -z "${HAVE_HARU_TRUE}" && test -z "${HAVE_HARU_FALSE}"; then
   as_fn_error $? "conditional \"HAVE_HARU\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
+if test -z "${SYSTEM_GRIB2C_TRUE}" && test -z "${SYSTEM_GRIB2C_FALSE}"; then
+  as_fn_error $? "conditional \"SYSTEM_GRIB2C\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
 if test -z "${SAGA_PYTHON_TRUE}" && test -z "${SAGA_PYTHON_FALSE}"; then
   as_fn_error $? "conditional \"SAGA_PYTHON\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -18590,7 +18770,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by saga $as_me 2.2.3, which was
+This file was extended by saga $as_me 2.2.4, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -18656,7 +18836,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-saga config.status 2.2.3
+saga config.status 2.2.4
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff --git a/configure.ac b/configure.ac
index 04241af..0571691 100755
--- a/configure.ac
+++ b/configure.ac
@@ -1,9 +1,9 @@
-# $Id: configure.ac 2692 2015-11-17 16:13:05Z oconrad $
+# $Id: configure.ac 2819 2016-02-23 21:11:29Z johanvdw $
 #                                               -*- Autoconf -*-
 # Process this file with autoconf to produce a configure script.
 
 AC_PREREQ(2.59)
-AC_INIT(saga, 2.2.3, BUG-REPORT-ADDRESS)
+AC_INIT(saga, 2.2.4, BUG-REPORT-ADDRESS)
 AC_CONFIG_SRCDIR([src/saga_core/saga_gui/wksp_data_menu_files.cpp])
 AC_CONFIG_HEADER([config.h])
 AC_CONFIG_MACRO_DIR([m4])
@@ -17,7 +17,7 @@ AC_PROG_INSTALL
 AC_PROG_LIBTOOL
 
 # Checks for libraries.
-AC_CHECK_LIB([cv], [cvGetRows], CVFOUND=1,,)
+AC_CHECK_LIB([opencv_core], [cvGetRows], CVFOUND=1,,)
 AC_CHECK_LIB([geotrans], [Set_Mercator_Coordinates])
 AC_CHECK_LIB([fftw3],[fftw_execute],FFTWFOUND=1,)
 AC_CHECK_LIB([jasper], [jas_calloc],JASPERFOUND=1,,)
@@ -27,6 +27,7 @@ AC_CHECK_LIB([odbc], [SQLFetch], ODBCFOUND=1,[ODBC \(libodbc\) library not found
 AC_CHECK_LIB([proj], [pj_is_latlong], PROJFOUND=1,,)
 AC_CHECK_LIB([vigraimpex], [VIGRA_RGBE_ReadPixels_Raw],VIGRAFOUND=1,)
 AC_CHECK_LIB([gomp], [omp_get_num_threads], GOMPFOUND=1,,)
+AC_CHECK_HEADER(grib2.h,[ AC_CHECK_LIB(grib2c, main,GRIB2FOUND=1)])
 
 # Checks for header files.
 AC_HEADER_STDC
@@ -167,6 +168,30 @@ AC_ARG_ENABLE(openmp,
 
 AC_SUBST(GOMPFLAGS)
 
+AC_ARG_ENABLE(triangle,
+        AS_HELP_STRING([--disable-triangle],[ Compile without triangle.c (only free for non-commercial usage), and use qhull instead (requires qhull)]),
+	,
+	[use_triangle=yes])
+
+AM_CONDITIONAL(TRIANGLE, [test x$use_triangle = xyes])
+
+if test "x$use_triangle" != xyes; then
+    AC_MSG_RESULT([        Triangle disabled])
+    AC_CHECK_LIB(qhull, qh_qhull, , 
+      AC_MSG_FAILURE([--disable-triangle was given but test for qhull failed]))
+ fi
+
+AC_ARG_ENABLE(libfire,
+        AS_HELP_STRING([--disable-libfire],[ Compile without libfire (only free for non-commercial usage)]),
+	,
+	[use_libfire=yes])
+
+AM_CONDITIONAL(LIBFIRE, [test x$use_libfire = xyes])
+
+if test "x$use_libfire" != xyes; then
+    AC_MSG_RESULT([        Libfire disabled])
+fi
+
 #AM_CONDITIONAL(X86_64, test "`uname -m`" = "x86_64")
     AM_CONDITIONAL(HAVE_CV, test -n "$CVFOUND")
     AM_CONDITIONAL(HAVE_LLAS, test -n "$LASFOUND")
@@ -183,6 +208,14 @@ AC_SUBST(GOMPFLAGS)
     HARU_LIB=""
   fi
 
+AC_ARG_WITH(system_grib2c, 
+	AS_HELP_STRING([--with-system_grib2c],[Use system version of grib2c instead of embedded copy, requires this library (and the header) to be found.]),
+	AC_MSG_RESULT([        using system grib2c]);
+	system_grib2c=true
+	,
+	)
+AM_CONDITIONAL(SYSTEM_GRIB2C, test -n "$GRIB2FOUND" -a x$system_grib2c=xtrue)
+
 AC_SUBST(HARU_LIB)
 AC_SUBST(DISABLELIBHARU)
 
diff --git a/m4/ax_lib_postgresql.m4 b/m4/ax_lib_postgresql.m4
old mode 100644
new mode 100755
diff --git a/m4/ax_pkg_swig.m4 b/m4/ax_pkg_swig.m4
old mode 100644
new mode 100755
diff --git a/m4/ax_python_devel.m4 b/m4/ax_python_devel.m4
old mode 100644
new mode 100755
diff --git a/m4/ax_swig_enable_cxx.m4 b/m4/ax_swig_enable_cxx.m4
old mode 100644
new mode 100755
diff --git a/m4/ax_swig_python.m4 b/m4/ax_swig_python.m4
old mode 100644
new mode 100755
diff --git a/src/Makefile.am b/src/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/Makefile.am b/src/modules/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/climate/Makefile.am b/src/modules/climate/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/climate/climate_tools/MLB_Interface.cpp b/src/modules/climate/climate_tools/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/climate/climate_tools/MLB_Interface.h b/src/modules/climate/climate_tools/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/climate/climate_tools/Makefile.am b/src/modules/climate/climate_tools/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/climate/climate_tools/daily_sun.cpp b/src/modules/climate/climate_tools/daily_sun.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/climate/climate_tools/daily_sun.h b/src/modules/climate/climate_tools/daily_sun.h
old mode 100644
new mode 100755
diff --git a/src/modules/climate/climate_tools/etp_hargreave.cpp b/src/modules/climate/climate_tools/etp_hargreave.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/climate/climate_tools/etp_hargreave.h b/src/modules/climate/climate_tools/etp_hargreave.h
old mode 100644
new mode 100755
diff --git a/src/modules/climate/climate_tools/grid_levels_interpolation.cpp b/src/modules/climate/climate_tools/grid_levels_interpolation.cpp
old mode 100644
new mode 100755
index 740f29c..abd1539
--- a/src/modules/climate/climate_tools/grid_levels_interpolation.cpp
+++ b/src/modules/climate/climate_tools/grid_levels_interpolation.cpp
@@ -110,13 +110,12 @@ CGrid_Levels_Interpolation::CGrid_Levels_Interpolation(void)
 	Parameters.Add_Choice(
 		NULL	, "H_METHOD"		, _TL("Horizontal Interpolation Method"),
 		_TL(""),
-		CSG_String::Format(SG_T("%s|%s|%s|%s|%s|"),
-			_TL("Nearest Neighbor"),
-			_TL("Bilinear Interpolation"),
-			_TL("Inverse Distance Interpolation"),
-			_TL("Bicubic Spline Interpolation"),
-			_TL("B-Spline Interpolation")
-		), 4
+		CSG_String::Format("%s|%s|%s|%s|",
+			_TL("Nearest Neighbour"),
+			_TL("Bilinear Interpolation"),
+			_TL("Bicubic Spline Interpolation"),
+			_TL("B-Spline Interpolation")
+		), 3
 	);
 
 	Parameters.Add_Choice(
@@ -198,13 +197,20 @@ bool CGrid_Levels_Interpolation::Initialize(const CSG_Rect &Extent)
 	m_pXTable			= Parameters("X_TABLE"      )->asTable();
 
 	m_xSource			= Parameters("X_SOURCE"     )->asInt();
-	m_hMethod			= Parameters("H_METHOD"     )->asInt();
 	m_vMethod			= Parameters("V_METHOD"     )->asInt();
 
 	m_Linear_bSorted	= Parameters("LINEAR_SORTED")->asBool();
 	m_Spline_bAll		= Parameters("SPLINE_ALL"   )->asBool() == false;
 	m_Trend_Order		= Parameters("TREND_ORDER"  )->asInt();
 
+	switch( Parameters("H_METHOD")->asInt() )
+	{
+	default:	m_hMethod	= GRID_RESAMPLING_NearestNeighbour;	break;
+	case  1:	m_hMethod	= GRID_RESAMPLING_Bilinear;			break;
+	case  2:	m_hMethod	= GRID_RESAMPLING_BicubicSpline;	break;
+	case  3:	m_hMethod	= GRID_RESAMPLING_BSpline;			break;
+	}
+
 	//-----------------------------------------------------
 	if( m_pVariables->Get_Count() != (m_xSource == 0 ? m_pXTable->Get_Count() : m_pXGrids->Get_Count()) )
 	{
diff --git a/src/modules/climate/climate_tools/grid_levels_interpolation.h b/src/modules/climate/climate_tools/grid_levels_interpolation.h
old mode 100644
new mode 100755
index 88fed1b..d1dfef7
--- a/src/modules/climate/climate_tools/grid_levels_interpolation.h
+++ b/src/modules/climate/climate_tools/grid_levels_interpolation.h
@@ -96,7 +96,9 @@ private:
 
 	bool						m_Linear_bSorted, m_Spline_bAll;
 
-	int							m_xSource, m_hMethod, m_vMethod, m_Trend_Order;
+	int							m_xSource, m_vMethod, m_Trend_Order;
+
+	TSG_Grid_Resampling			m_hMethod;
 
 	CSG_Table					*m_pXTable;
 
diff --git a/src/modules/climate/climate_tools/milankovic.cpp b/src/modules/climate/climate_tools/milankovic.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/climate/climate_tools/milankovic.h b/src/modules/climate/climate_tools/milankovic.h
old mode 100644
new mode 100755
diff --git a/src/modules/contrib/Makefile.am b/src/modules/contrib/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/contrib/contrib_peregro/A1WiTh.cpp b/src/modules/contrib/contrib_peregro/A1WiTh.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/contrib/contrib_peregro/A1WiTh.h b/src/modules/contrib/contrib_peregro/A1WiTh.h
old mode 100644
new mode 100755
diff --git a/src/modules/contrib/contrib_peregro/A2WiTh.cpp b/src/modules/contrib/contrib_peregro/A2WiTh.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/contrib/contrib_peregro/A2WiTh.h b/src/modules/contrib/contrib_peregro/A2WiTh.h
old mode 100644
new mode 100755
diff --git a/src/modules/contrib/contrib_peregro/A3WiTh.cpp b/src/modules/contrib/contrib_peregro/A3WiTh.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/contrib/contrib_peregro/A3WiTh.h b/src/modules/contrib/contrib_peregro/A3WiTh.h
old mode 100644
new mode 100755
diff --git a/src/modules/contrib/contrib_peregro/AvWiMa1.cpp b/src/modules/contrib/contrib_peregro/AvWiMa1.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/contrib/contrib_peregro/AvWiMa1.h b/src/modules/contrib/contrib_peregro/AvWiMa1.h
old mode 100644
new mode 100755
diff --git a/src/modules/contrib/contrib_peregro/AvWiMa2.cpp b/src/modules/contrib/contrib_peregro/AvWiMa2.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/contrib/contrib_peregro/AvWiMa2.h b/src/modules/contrib/contrib_peregro/AvWiMa2.h
old mode 100644
new mode 100755
diff --git a/src/modules/contrib/contrib_peregro/MLB_Interface.cpp b/src/modules/contrib/contrib_peregro/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/contrib/contrib_peregro/MLB_Interface.h b/src/modules/contrib/contrib_peregro/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/contrib/contrib_peregro/Makefile.am b/src/modules/contrib/contrib_peregro/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/contrib/contrib_peregro/destriping1.cpp b/src/modules/contrib/contrib_peregro/destriping1.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/contrib/contrib_peregro/destriping1.h b/src/modules/contrib/contrib_peregro/destriping1.h
old mode 100644
new mode 100755
diff --git a/src/modules/contrib/contrib_peregro/destriping2.cpp b/src/modules/contrib/contrib_peregro/destriping2.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/contrib/contrib_peregro/destriping2.h b/src/modules/contrib/contrib_peregro/destriping2.h
old mode 100644
new mode 100755
diff --git a/src/modules/contrib/contrib_peregro/directional1.cpp b/src/modules/contrib/contrib_peregro/directional1.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/contrib/contrib_peregro/directional1.h b/src/modules/contrib/contrib_peregro/directional1.h
old mode 100644
new mode 100755
diff --git a/src/modules/db/Makefile.am b/src/modules/db/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/db/db_odbc/MLB_Interface.cpp b/src/modules/db/db_odbc/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/db/db_odbc/MLB_Interface.h b/src/modules/db/db_odbc/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/db/db_odbc/Makefile.am b/src/modules/db/db_odbc/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/db/db_odbc/get_connection.cpp b/src/modules/db/db_odbc/get_connection.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/db/db_odbc/get_connection.h b/src/modules/db/db_odbc/get_connection.h
old mode 100644
new mode 100755
diff --git a/src/modules/db/db_odbc/odbc.cpp b/src/modules/db/db_odbc/odbc.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/db/db_odbc/odbc.h b/src/modules/db/db_odbc/odbc.h
old mode 100644
new mode 100755
diff --git a/src/modules/db/db_odbc/otlv4.h b/src/modules/db/db_odbc/otlv4.h
old mode 100644
new mode 100755
diff --git a/src/modules/db/db_odbc/table.cpp b/src/modules/db/db_odbc/table.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/db/db_odbc/table.h b/src/modules/db/db_odbc/table.h
old mode 100644
new mode 100755
diff --git a/src/modules/db/db_pgsql/MLB_Interface.cpp b/src/modules/db/db_pgsql/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/db/db_pgsql/MLB_Interface.h b/src/modules/db/db_pgsql/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/db/db_pgsql/Makefile.am b/src/modules/db/db_pgsql/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/db/db_pgsql/db_pgsql.cpp b/src/modules/db/db_pgsql/db_pgsql.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/db/db_pgsql/db_pgsql.h b/src/modules/db/db_pgsql/db_pgsql.h
old mode 100644
new mode 100755
diff --git a/src/modules/db/db_pgsql/get_connection.cpp b/src/modules/db/db_pgsql/get_connection.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/db/db_pgsql/get_connection.h b/src/modules/db/db_pgsql/get_connection.h
old mode 100644
new mode 100755
diff --git a/src/modules/db/db_pgsql/pgis_raster.cpp b/src/modules/db/db_pgsql/pgis_raster.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/db/db_pgsql/pgis_raster.h b/src/modules/db/db_pgsql/pgis_raster.h
old mode 100644
new mode 100755
diff --git a/src/modules/db/db_pgsql/pgis_shapes.cpp b/src/modules/db/db_pgsql/pgis_shapes.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/db/db_pgsql/pgis_shapes.h b/src/modules/db/db_pgsql/pgis_shapes.h
old mode 100644
new mode 100755
diff --git a/src/modules/db/db_pgsql/table.cpp b/src/modules/db/db_pgsql/table.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/db/db_pgsql/table.h b/src/modules/db/db_pgsql/table.h
old mode 100644
new mode 100755
diff --git a/src/modules/docs/Makefile.am b/src/modules/docs/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/docs/docs_html/CreateWebContent.cpp b/src/modules/docs/docs_html/CreateWebContent.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/docs/docs_html/CreateWebContent.h b/src/modules/docs/docs_html/CreateWebContent.h
old mode 100644
new mode 100755
diff --git a/src/modules/docs/docs_html/MLB_Interface.cpp b/src/modules/docs/docs_html/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/docs/docs_html/MLB_Interface.h b/src/modules/docs/docs_html/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/docs/docs_html/Makefile.am b/src/modules/docs/docs_html/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/docs/docs_html/doc_html.cpp b/src/modules/docs/docs_html/doc_html.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/docs/docs_html/doc_html.h b/src/modules/docs/docs_html/doc_html.h
old mode 100644
new mode 100755
diff --git a/src/modules/docs/docs_html/doc_svg.cpp b/src/modules/docs/docs_html/doc_svg.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/docs/docs_html/doc_svg.h b/src/modules/docs/docs_html/doc_svg.h
old mode 100644
new mode 100755
diff --git a/src/modules/docs/docs_html/svg_interactive_map.cpp b/src/modules/docs/docs_html/svg_interactive_map.cpp
old mode 100644
new mode 100755
index 4204f27..e5807d8
--- a/src/modules/docs/docs_html/svg_interactive_map.cpp
+++ b/src/modules/docs/docs_html/svg_interactive_map.cpp
@@ -2070,7 +2070,7 @@ const char * CSVG_Interactive_Map::_Get_Code_Navigation_1(void)
 		"	this.showCoords = showCoords;\n"
 		"	//initialize array of timestamp/layertoLoad values\n"
 		"	this.nrLayerToLoad = new Array();\n"
-		"	this.timestamp = null; //holds the timestamp after a zoom or pan occured\n"
+		"	this.timestamp = null; //holds the timestamp after a zoom or pan occurred\n"
 		"	//initialize coordinate display if showCoords == true\n"
 		"	if (this.showCoords == true) {\n"
 		"		//add event listener for coordinate display\n"
diff --git a/src/modules/docs/docs_html/svg_interactive_map.h b/src/modules/docs/docs_html/svg_interactive_map.h
old mode 100644
new mode 100755
diff --git a/src/modules/docs/docs_pdf/MLB_Interface.cpp b/src/modules/docs/docs_pdf/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/docs/docs_pdf/MLB_Interface.h b/src/modules/docs/docs_pdf/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/docs/docs_pdf/Makefile.am b/src/modules/docs/docs_pdf/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/docs/docs_pdf/Profile_Cross_Sections.cpp b/src/modules/docs/docs_pdf/Profile_Cross_Sections.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/docs/docs_pdf/Profile_Cross_Sections.h b/src/modules/docs/docs_pdf/Profile_Cross_Sections.h
old mode 100644
new mode 100755
diff --git a/src/modules/docs/docs_pdf/Shapes_Report.cpp b/src/modules/docs/docs_pdf/Shapes_Report.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/docs/docs_pdf/Shapes_Report.h b/src/modules/docs/docs_pdf/Shapes_Report.h
old mode 100644
new mode 100755
diff --git a/src/modules/docs/docs_pdf/Shapes_Summary.cpp b/src/modules/docs/docs_pdf/Shapes_Summary.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/docs/docs_pdf/Shapes_Summary.h b/src/modules/docs/docs_pdf/Shapes_Summary.h
old mode 100644
new mode 100755
diff --git a/src/modules/docs/docs_pdf/doc_pdf.cpp b/src/modules/docs/docs_pdf/doc_pdf.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/docs/docs_pdf/doc_pdf.h b/src/modules/docs/docs_pdf/doc_pdf.h
old mode 100644
new mode 100755
diff --git a/src/modules/garden/Makefile.am b/src/modules/garden/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_3d_viewer/3d_viewer_globe_grid.cpp b/src/modules/garden/garden_3d_viewer/3d_viewer_globe_grid.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_3d_viewer/3d_viewer_globe_grid.h b/src/modules/garden/garden_3d_viewer/3d_viewer_globe_grid.h
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_3d_viewer/3d_viewer_multiple_grids.cpp b/src/modules/garden/garden_3d_viewer/3d_viewer_multiple_grids.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_3d_viewer/3d_viewer_multiple_grids.h b/src/modules/garden/garden_3d_viewer/3d_viewer_multiple_grids.h
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_3d_viewer/3d_viewer_pointcloud.cpp b/src/modules/garden/garden_3d_viewer/3d_viewer_pointcloud.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_3d_viewer/3d_viewer_pointcloud.h b/src/modules/garden/garden_3d_viewer/3d_viewer_pointcloud.h
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_3d_viewer/3d_viewer_shapes.cpp b/src/modules/garden/garden_3d_viewer/3d_viewer_shapes.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_3d_viewer/3d_viewer_shapes.h b/src/modules/garden/garden_3d_viewer/3d_viewer_shapes.h
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_3d_viewer/3d_viewer_tin.cpp b/src/modules/garden/garden_3d_viewer/3d_viewer_tin.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_3d_viewer/3d_viewer_tin.h b/src/modules/garden/garden_3d_viewer/3d_viewer_tin.h
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_3d_viewer/MLB_Interface.cpp b/src/modules/garden/garden_3d_viewer/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_3d_viewer/MLB_Interface.h b/src/modules/garden/garden_3d_viewer/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_3d_viewer/Makefile.am b/src/modules/garden/garden_3d_viewer/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_fractals/Bifurcation.cpp b/src/modules/garden/garden_fractals/Bifurcation.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_fractals/Bifurcation.h b/src/modules/garden/garden_fractals/Bifurcation.h
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_fractals/Gaussian_Landscapes.cpp b/src/modules/garden/garden_fractals/Gaussian_Landscapes.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_fractals/Gaussian_Landscapes.h b/src/modules/garden/garden_fractals/Gaussian_Landscapes.h
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_fractals/Grid_FractalDimension.cpp b/src/modules/garden/garden_fractals/Grid_FractalDimension.cpp
old mode 100644
new mode 100755
index b926846..3f53f2b
--- a/src/modules/garden/garden_fractals/Grid_FractalDimension.cpp
+++ b/src/modules/garden/garden_fractals/Grid_FractalDimension.cpp
@@ -129,7 +129,7 @@ bool CGrid_FractalDimension::On_Execute(void)
 			pGrid->Get_XMax(true), pGrid->Get_YMax(true)
 		));
 
-		g.Assign(pGrid, GRID_INTERPOLATION_BSpline);
+		g.Assign(pGrid, GRID_RESAMPLING_BSpline);
 
 		Get_Area(&g, pTable);
 
@@ -156,7 +156,7 @@ void CGrid_FractalDimension::Get_Area(CSG_Grid *pGrid, CSG_Table *pTable)
 	if( !Get_System()->is_Equal(pGrid->Get_System()) )
 	{
 		g.Create(*Get_System());
-		g.Assign(pGrid, GRID_INTERPOLATION_BSpline);
+		g.Assign(pGrid, GRID_RESAMPLING_BSpline);
 		pGrid	= &g;
 	}
 
diff --git a/src/modules/garden/garden_fractals/Grid_FractalDimension.h b/src/modules/garden/garden_fractals/Grid_FractalDimension.h
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_fractals/MLB_Interface.cpp b/src/modules/garden/garden_fractals/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_fractals/MLB_Interface.h b/src/modules/garden/garden_fractals/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_fractals/Makefile.am b/src/modules/garden/garden_fractals/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_fractals/Mandelbrot.cpp b/src/modules/garden/garden_fractals/Mandelbrot.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_fractals/Mandelbrot.h b/src/modules/garden/garden_fractals/Mandelbrot.h
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_fractals/Newton.cpp b/src/modules/garden/garden_fractals/Newton.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_fractals/Newton.h b/src/modules/garden/garden_fractals/Newton.h
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_fractals/Pythagoras_Tree.cpp b/src/modules/garden/garden_fractals/Pythagoras_Tree.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_fractals/Pythagoras_Tree.h b/src/modules/garden/garden_fractals/Pythagoras_Tree.h
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_games/MLB_Interface.cpp b/src/modules/garden/garden_games/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_games/MLB_Interface.h b/src/modules/garden/garden_games/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_games/Makefile.am b/src/modules/garden/garden_games/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_games/Mine_Sweeper.cpp b/src/modules/garden/garden_games/Mine_Sweeper.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_games/Mine_Sweeper.h b/src/modules/garden/garden_games/Mine_Sweeper.h
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_games/Mine_Sweeper_Res.cpp b/src/modules/garden/garden_games/Mine_Sweeper_Res.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_games/Sudoku.cpp b/src/modules/garden/garden_games/Sudoku.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_games/Sudoku.h b/src/modules/garden/garden_games/Sudoku.h
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_learn_to_program/Exercise_01.cpp b/src/modules/garden/garden_learn_to_program/Exercise_01.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_learn_to_program/Exercise_01.h b/src/modules/garden/garden_learn_to_program/Exercise_01.h
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_learn_to_program/Exercise_02.cpp b/src/modules/garden/garden_learn_to_program/Exercise_02.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_learn_to_program/Exercise_02.h b/src/modules/garden/garden_learn_to_program/Exercise_02.h
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_learn_to_program/Exercise_03.cpp b/src/modules/garden/garden_learn_to_program/Exercise_03.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_learn_to_program/Exercise_03.h b/src/modules/garden/garden_learn_to_program/Exercise_03.h
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_learn_to_program/Exercise_04.cpp b/src/modules/garden/garden_learn_to_program/Exercise_04.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_learn_to_program/Exercise_04.h b/src/modules/garden/garden_learn_to_program/Exercise_04.h
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_learn_to_program/Exercise_05.cpp b/src/modules/garden/garden_learn_to_program/Exercise_05.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_learn_to_program/Exercise_05.h b/src/modules/garden/garden_learn_to_program/Exercise_05.h
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_learn_to_program/Exercise_06.cpp b/src/modules/garden/garden_learn_to_program/Exercise_06.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_learn_to_program/Exercise_06.h b/src/modules/garden/garden_learn_to_program/Exercise_06.h
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_learn_to_program/Exercise_07.cpp b/src/modules/garden/garden_learn_to_program/Exercise_07.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_learn_to_program/Exercise_07.h b/src/modules/garden/garden_learn_to_program/Exercise_07.h
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_learn_to_program/Exercise_08.cpp b/src/modules/garden/garden_learn_to_program/Exercise_08.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_learn_to_program/Exercise_08.h b/src/modules/garden/garden_learn_to_program/Exercise_08.h
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_learn_to_program/Exercise_09.cpp b/src/modules/garden/garden_learn_to_program/Exercise_09.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_learn_to_program/Exercise_09.h b/src/modules/garden/garden_learn_to_program/Exercise_09.h
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_learn_to_program/Exercise_10.cpp b/src/modules/garden/garden_learn_to_program/Exercise_10.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_learn_to_program/Exercise_10.h b/src/modules/garden/garden_learn_to_program/Exercise_10.h
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_learn_to_program/Exercise_11.cpp b/src/modules/garden/garden_learn_to_program/Exercise_11.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_learn_to_program/Exercise_11.h b/src/modules/garden/garden_learn_to_program/Exercise_11.h
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_learn_to_program/Exercise_12.cpp b/src/modules/garden/garden_learn_to_program/Exercise_12.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_learn_to_program/Exercise_12.h b/src/modules/garden/garden_learn_to_program/Exercise_12.h
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_learn_to_program/Exercise_13.cpp b/src/modules/garden/garden_learn_to_program/Exercise_13.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_learn_to_program/Exercise_13.h b/src/modules/garden/garden_learn_to_program/Exercise_13.h
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_learn_to_program/Exercise_14.cpp b/src/modules/garden/garden_learn_to_program/Exercise_14.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_learn_to_program/Exercise_14.h b/src/modules/garden/garden_learn_to_program/Exercise_14.h
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_learn_to_program/MLB_Interface.cpp b/src/modules/garden/garden_learn_to_program/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_learn_to_program/MLB_Interface.h b/src/modules/garden/garden_learn_to_program/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_learn_to_program/Makefile.am b/src/modules/garden/garden_learn_to_program/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_webservices/MLB_Interface.cpp b/src/modules/garden/garden_webservices/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_webservices/MLB_Interface.h b/src/modules/garden/garden_webservices/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_webservices/Makefile.am b/src/modules/garden/garden_webservices/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_webservices/osm_import.cpp b/src/modules/garden/garden_webservices/osm_import.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_webservices/osm_import.h b/src/modules/garden/garden_webservices/osm_import.h
old mode 100644
new mode 100755
diff --git a/src/modules/garden/garden_webservices/wms_import.cpp b/src/modules/garden/garden_webservices/wms_import.cpp
old mode 100644
new mode 100755
index 2f3748f..04965e0
--- a/src/modules/garden/garden_webservices/wms_import.cpp
+++ b/src/modules/garden/garden_webservices/wms_import.cpp
@@ -60,9 +60,8 @@
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
-#include <wx/protocol/http.h>
-#include <wx/xml/xml.h>
 #include <wx/image.h>
+#include <wx/protocol/http.h>
 
 #include "wms_import.h"
 
@@ -74,449 +73,154 @@
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
-#define V_SRS(Version)	(Version.Contains(SG_T("1.3")) ? SG_T("CRS") : SG_T("SRS"))
-#define S_SRS(Version)	(Version.Cmp(SG_T("1.3.0")) ? SG_T("&SRS=") : SG_T("&CRS="))
-
-#define V_MAP(Version)	(Version.Cmp(SG_T("1.0.0")) ? SG_T("GetMap") : SG_T("Map"))
-
-
-///////////////////////////////////////////////////////////
-//														 //
-//														 //
-//														 //
-///////////////////////////////////////////////////////////
-
-//---------------------------------------------------------
 CWMS_Capabilities::CWMS_Capabilities(void)
-{
-	m_pLayers	= NULL;
-
-	_Reset();
-}
+{}
 
-CWMS_Capabilities::CWMS_Capabilities(wxHTTP *pServer, const CSG_String &Directory, CSG_String &Version)
+CWMS_Capabilities::CWMS_Capabilities(const CSG_String &Server, const CSG_String &Version)
 {
-	m_pLayers	= NULL;
-
-	_Reset();
-
-	Create(pServer, Directory, Version);
+	Create(Server, Version);
 }
 
 //---------------------------------------------------------
 CWMS_Capabilities::~CWMS_Capabilities(void)
-{}
-
-//---------------------------------------------------------
-void CWMS_Capabilities::_Reset(void)
 {
-	m_MaxLayers		= -1;
-	m_MaxWidth		= -1;
-	m_MaxHeight		= -1;
-
-	m_Name			.Clear();
-	m_Title			.Clear();
-	m_Abstract		.Clear();
-	m_Online		.Clear();
-	m_Contact		.Clear();
-	m_Fees			.Clear();
-	m_Access		.Clear();
-	m_Keywords		.Clear();
-
-	m_Formats		.Clear();
-	m_Projections	.Clear();
-
-	m_Layers_Title	.Clear();
-
-	if( m_pLayers )
-	{
-		for(int i=0; i<m_nLayers; i++)
-		{
-			delete(m_pLayers[i]);
-		}
-
-		SG_Free(m_pLayers);
-	}
-
-	m_nLayers		= 0;
-	m_pLayers		= NULL;
+	Destroy();
 }
 
 //---------------------------------------------------------
-bool CWMS_Capabilities::Create(wxHTTP *pServer, const CSG_String &Directory, CSG_String &Version)
+void CWMS_Capabilities::Destroy(void)
 {
-	bool	bResult	= false;
+	m_Name        .Clear();
+	m_Title       .Clear();
+	m_Abstract    .Clear();
+	m_Formats     .Clear();
 
-	_Reset();
+	m_Projections .Clear();
 
-	if( pServer )
-	{
-		CSG_String	sRequest(Directory);
-
-		sRequest	+= SG_T("?SERVICE=WMS");
-		sRequest	+= SG_T("&VERSION=1.3.0");
-		sRequest	+= SG_T("&REQUEST=GetCapabilities");
-
-		//-------------------------------------------------
-		wxInputStream	*pStream;
-
-		if( (pStream = pServer->GetInputStream(sRequest.c_str())) != NULL )
-		{
-			wxXmlDocument	Capabilities;
-
-			if( Capabilities.Load(*pStream) )
-			{
-				bResult	= _Get_Capabilities(Capabilities.GetRoot(), Version);
-
-				Capabilities.Save(CSG_String::Format(SG_T("e:\\%s.xml"), m_Title.c_str()).c_str());
-			}
-
-			delete(pStream);
-		}
-	}
-
-	return( bResult );
+	m_Layers_Name .Clear();
+	m_Layers_Title.Clear();
 }
 
 
 ///////////////////////////////////////////////////////////
 //														 //
-//														 //
-//														 //
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
-wxXmlNode * CWMS_Capabilities::_Get_Child(wxXmlNode *pNode, const CSG_String &Name)
-{
-	if( pNode && (pNode = pNode->GetChildren()) != NULL )
-	{
-		do
-		{
-			if( !pNode->GetName().CmpNoCase(Name.c_str()) )
-			{
-				return( pNode );
-			}
-		}
-		while( (pNode = pNode->GetNext()) != NULL );
-	}
-
-	return( NULL );
-}
-
-//---------------------------------------------------------
-bool CWMS_Capabilities::_Get_Child_Content(wxXmlNode *pNode, CSG_String &Value, const CSG_String &Name)
-{
-	if( (pNode = _Get_Child(pNode, Name)) != NULL )
-	{
-		Value	= pNode->GetNodeContent().wc_str();
-
-		return( true );
-	}
-
-	return( false );
-}
-
-//---------------------------------------------------------
-bool CWMS_Capabilities::_Get_Child_Content(wxXmlNode *pNode, int &Value, const CSG_String &Name)
-{
-	long	lValue;
-
-	if( (pNode = _Get_Child(pNode, Name)) != NULL && pNode->GetNodeContent().ToLong(&lValue) )
-	{
-		Value	= lValue;
-
-		return( true );
-	}
-
-	return( false );
-}
-
-//---------------------------------------------------------
-bool CWMS_Capabilities::_Get_Child_Content(wxXmlNode *pNode, double &Value, const CSG_String &Name)
-{
-	double	dValue;
-
-	if( (pNode = _Get_Child(pNode, Name)) != NULL && pNode->GetNodeContent().ToDouble(&dValue) )
-	{
-		Value	= dValue;
-
-		return( true );
-	}
-
-	return( false );
-}
+#define V_SRS(Version)	(Version.Find("1.3"  ) == 0 ?  "CRS"  :  "SRS"  )
+#define S_SRS(Version)	(Version.Cmp ("1.3.0") == 0 ? "&CRS=" : "&SRS=" )
+#define V_MAP(Version)	(Version.Cmp ("1.0.0") == 0 ? "Map"   : "GetMap")
 
 //---------------------------------------------------------
-bool CWMS_Capabilities::_Get_Node_PropVal(wxXmlNode *pNode, CSG_String &Value, const CSG_String &Property)
-{
-	wxString	PropVal;
-
-	if( pNode != NULL && pNode->GetAttribute(Property.c_str(), &PropVal) )
-	{
-		Value	= PropVal.wc_str();
-
-		return( true );
-	}
-
-	return( false );
-}
-
-bool CWMS_Capabilities::_Get_Child_PropVal(wxXmlNode *pNode, CSG_String &Value, const CSG_String &Name, const CSG_String &Property)
-{
-	return( (pNode = _Get_Child(pNode, Name)) != NULL && _Get_Node_PropVal(pNode, Value, Property) );
-}
-
-
-///////////////////////////////////////////////////////////
-//														 //
-//														 //
-//														 //
-///////////////////////////////////////////////////////////
+#define CAP_GET_STRING(GROUP, ID, VALUE, MUSTEXIST)	if( GROUP(ID) ) VALUE = GROUP[ID].Get_Content();            else if( !MUSTEXIST ) VALUE = SG_T(""); else return( false );
+#define CAP_GET_DOUBLE(GROUP, ID, VALUE, MUSTEXIST)	if( GROUP(ID) ) VALUE = GROUP[ID].Get_Content().asDouble(); else if( !MUSTEXIST ) VALUE = 0.0;      else return( false );
+#define CAP_GET____INT(GROUP, ID, VALUE, MUSTEXIST)	if( GROUP(ID) ) VALUE = GROUP[ID].Get_Content().asInt   (); else if( !MUSTEXIST ) VALUE = 0;        else return( false );
 
 //---------------------------------------------------------
-bool CWMS_Capabilities::_Get_Capabilities(wxXmlNode *pRoot, CSG_String &Version)
+bool CWMS_Capabilities::Create(const CSG_String &Server, const CSG_String &Version)
 {
-	wxXmlNode	*pNode, *pChild;
-
+	Destroy();
+
+	int	i;
+
+	CSG_String	s	= "http://" + Server;
+
+	s	+= "?SERVICE=WMS";
+	s	+= "&VERSION=" + Version;
+	s	+= "&REQUEST=GetCapabilities";
+
+	CSG_MetaData	Capabilities;
+
+	if( !Capabilities.Create(s) )
+	{
+		return( false );
+	}
+
 	//-----------------------------------------------------
-	// 1. Service
-
-	if( (pNode = _Get_Child(pRoot, SG_T("Service"))) == NULL )
+	if( !Capabilities.Get_Property("version", m_Version) || !Capabilities("Service") || !Capabilities("Capability") )
 	{
 		return( false );
 	}
 
-	_Get_Node_PropVal (pRoot, Version		, SG_T("version"));
-
-	_Get_Child_Content(pNode, m_Name		, SG_T("Name"));
-	_Get_Child_Content(pNode, m_Title		, SG_T("Title"));
-	_Get_Child_Content(pNode, m_Abstract	, SG_T("Abstract"));
-	_Get_Child_Content(pNode, m_Fees		, SG_T("Fees"));
-	_Get_Child_Content(pNode, m_Access		, SG_T("AccessConstraints"));
-	_Get_Child_Content(pNode, m_MaxLayers	, SG_T("LayerLimit"));
-	_Get_Child_Content(pNode, m_MaxWidth	, SG_T("MaxWidth"));
-	_Get_Child_Content(pNode, m_MaxHeight	, SG_T("MaxHeight"));
-	_Get_Child_PropVal(pNode, m_Online		, SG_T("OnlineResource"), SG_T("xlink:href"));
+	const CSG_MetaData	&Service	= Capabilities["Service"];
 
-	if( (pChild = _Get_Child(pNode, SG_T("KeywordList"))) != NULL )
-	{
-		wxXmlNode	*pKeyword	= pChild->GetChildren();
-
-		while( pKeyword )
-		{
-			if( !pKeyword->GetName().CmpNoCase(SG_T("Format")) )
-			{
-				m_Keywords.Add(pKeyword->GetNodeContent().wx_str());
-			}
-
-			pKeyword	= pKeyword->GetNext();
-		}
-	}
+	CAP_GET_STRING(Service, "Name"      , m_Name      ,  true);
+	CAP_GET_STRING(Service, "Title"     , m_Title     ,  true);
+	CAP_GET_STRING(Service, "Abstract"  , m_Abstract  ,  true);
 
-	if( (pChild = _Get_Child(pNode, SG_T("ContactInformation"))) != NULL )
-	{
-	}
+	CAP_GET____INT(Service, "LayerLimit", m_LayerLimit, false);
 
+	CAP_GET____INT(Service, "MaxWidth"  , m_MaxWidth  , false);
+	CAP_GET____INT(Service, "MaxHeight" , m_MaxHeight , false);
 
 	//-----------------------------------------------------
-	// 2. Capabilities
-
-	if( (pNode = _Get_Child(pRoot, SG_T("Capability"))) == NULL )
+	if( !Capabilities["Capability"]("Request") || !Capabilities["Capability"]["Request"](V_MAP(m_Version)) )
 	{
 		return( false );
 	}
 
-	//-----------------------------------------------------
-	// 2.a) Request
+	const CSG_MetaData	&GetMap	= Capabilities["Capability"]["Request"][V_MAP(m_Version)];
 
-	if( (pChild = _Get_Child(_Get_Child(_Get_Child(pNode, SG_T("Request")), V_MAP(Version)), SG_T("Format"))) != NULL )
+	for(i=0; i<GetMap.Get_Children_Count(); i++)
 	{
-		if( !Version.Cmp(SG_T("1.0.0")) )
-		{
-			pChild	= pChild->GetChildren();
-
-			while( pChild )
-			{
-				m_Formats	+= pChild->GetName().wc_str();
-				m_Formats	+= SG_T("|");
-
-				pChild	= pChild->GetNext();
-			}
-		}
-		else
+		if( GetMap[i].Cmp_Name   ("Format"    )
+		&& (GetMap[i].Cmp_Content("image/png" )
+		||  GetMap[i].Cmp_Content("image/jpeg")
+		||  GetMap[i].Cmp_Content("image/gif" )
+		||  GetMap[i].Cmp_Content("image/tiff")) )
 		{
-			do
-			{
-				if( !pChild->GetName().CmpNoCase(SG_T("Format")) )
-				{
-					m_Formats	+= pChild->GetNodeContent().wc_str();
-					m_Formats	+= SG_T("|");
-				}
-			}
-			while( (pChild = pChild->GetNext()) != NULL );
+			m_Formats	+= GetMap[i].Get_Content() + "|";
 		}
 	}
 
 	//-----------------------------------------------------
-	// 2.b) Exception, Vendor Specific Capabilities, User Defined Symbolization, ...
-
-
-	//-----------------------------------------------------
-	// 2.c) Layers
-
-	if( (pNode = _Get_Child(pNode, SG_T("Layer"))) == NULL )
+	if( !Capabilities["Capability"]("Layer") )
 	{
 		return( false );
 	}
 
-	CSG_String	s;
-
-	if(	!(_Get_Child_PropVal(pNode, s, SG_T("BoundingBox"), SG_T("minx")) && s.asDouble(m_GeoBBox.xMin))
-	||	!(_Get_Child_PropVal(pNode, s, SG_T("BoundingBox"), SG_T("miny")) && s.asDouble(m_GeoBBox.yMin))
-	||	!(_Get_Child_PropVal(pNode, s, SG_T("BoundingBox"), SG_T("maxx")) && s.asDouble(m_GeoBBox.xMax))
-	||	!(_Get_Child_PropVal(pNode, s, SG_T("BoundingBox"), SG_T("maxy")) && s.asDouble(m_GeoBBox.yMax)) )
-	{
-		m_GeoBBox.xMin	= m_GeoBBox.yMin	= m_GeoBBox.xMax	= m_GeoBBox.yMax	= 0.0;
-	}
-
-	_Get_Child_Content(pNode, m_Layers_Title	, SG_T("Title"));
+	const CSG_MetaData	&Layer	= Capabilities["Capability"]["Layer"];
 
-	if( (pChild	= _Get_Child(pNode, V_SRS(Version))) != NULL )
+	if( m_Version.Cmp("1.3.0") == 0 )
 	{
-		do
+		if( !Layer("EX_GeographicBoundingBox") )
 		{
-			if( !pChild->GetName().CmpNoCase(V_SRS(Version)) )
-			{
-				m_sProjections	.Add(pChild->GetNodeContent().wx_str());
-
-			//	m_Projections	+= Get_EPSG_Name(CSG_String(&pChild->GetNodeContent()));
-				m_Projections	+= SG_T("|");
-			}
+			return( false );
 		}
-		while( (pChild = pChild->GetNext()) != NULL );
-	}
 
-	if( (pChild	= pNode->GetChildren()) != NULL )
+		CAP_GET_DOUBLE(Layer["EX_GeographicBoundingBox"], "westBoundLongitude", m_Extent.xMin, true);
+		CAP_GET_DOUBLE(Layer["EX_GeographicBoundingBox"], "eastBoundLongitude", m_Extent.xMax, true);
+		CAP_GET_DOUBLE(Layer["EX_GeographicBoundingBox"], "southBoundLatitude", m_Extent.yMin, true);
+		CAP_GET_DOUBLE(Layer["EX_GeographicBoundingBox"], "northBoundLatitude", m_Extent.yMax, true);
+	}
+	else // version < 1.3.0
 	{
-		do
+		if( !Layer("LatLonBoundingBox")
+		||  !Layer["LatLonBoundingBox"].Get_Property("minx", m_Extent.xMin)
+		||  !Layer["LatLonBoundingBox"].Get_Property("maxx", m_Extent.xMax)
+		||  !Layer["LatLonBoundingBox"].Get_Property("miny", m_Extent.yMin)
+		||  !Layer["LatLonBoundingBox"].Get_Property("maxy", m_Extent.yMax) )
 		{
-			_Get_Layer(pChild);
+			return( false );
 		}
-		while( (pChild = pChild->GetNext()) != NULL );
 	}
 
-	//-----------------------------------------------------
-	return( true );
-}
-
-
-///////////////////////////////////////////////////////////
-//														 //
-//														 //
-//														 //
-///////////////////////////////////////////////////////////
-
-//---------------------------------------------------------
-bool CWMS_Capabilities::_Get_Layer(wxXmlNode *pNode)
-{
-	if( pNode && !pNode->GetName().CmpNoCase(SG_T("Layer")) )
+	for(i=0; i<Layer.Get_Children_Count(); i++)
 	{
-		CWMS_Layer	*pLayer	= new CWMS_Layer;
-
-		if( _Get_Child_Content(pNode, pLayer->m_Name, SG_T("Name")) )
+		if( Layer[i].Cmp_Name(V_SRS(m_Version)) )
 		{
-			_Get_Child_Content(pNode, pLayer->m_Title, SG_T("Title"));
-
-			//---------------------------------------------
-			m_pLayers	= (CWMS_Layer **)SG_Realloc(m_pLayers, (m_nLayers + 1) * sizeof(CWMS_Layer *));
-			m_pLayers[m_nLayers++]	= pLayer;
-
-			return( true );
+			m_Projections	+= Layer[i].Get_Content() + "|";
 		}
 
-		delete(pLayer);
-	}
-
-	return( false );
-}
-
-
-///////////////////////////////////////////////////////////
-//														 //
-//														 //
-//														 //
-///////////////////////////////////////////////////////////
-
-//---------------------------------------------------------
-CSG_String CWMS_Capabilities::Get_Summary(void)
-{
-	CSG_String	s;
-
-	if( m_Name.Length() > 0 )
-	{
-		s	+= SG_T("\n[Name] ")			+ m_Name		+ SG_T("\n");
-	}
-
-	if( m_Title.Length() > 0 )
-	{
-		s	+= SG_T("\n[Title] ")			+ m_Title		+ SG_T("\n");
-	}
-
-	if( m_Abstract.Length() > 0 )
-	{
-		s	+= SG_T("\n[Abstract] ")		+ m_Abstract	+ SG_T("\n");
-	}
-
-	if( m_Fees.Length() > 0 )
-	{
-		s	+= SG_T("\n[Fees] ")			+ m_Fees		+ SG_T("\n");
-	}
-
-	if( m_Online.Length() > 0 )
-	{
-		s	+= SG_T("\n[Online Resource] ")	+ m_Online		+ SG_T("\n");
-	}
-
-	if( m_Keywords.Get_Count() > 0 )
-	{
-		s	+= SG_T("\n[Keywords] ");
-
-		for(int i=0; i<m_Keywords.Get_Count(); i++)
+		else if( Layer[i].Cmp_Name("Layer") )
 		{
-			if( i > 0 )	s	+= SG_T(", ");
-
-			s	+= m_Keywords[i];
+			m_Layers_Name	+= Layer[i].Get_Content("Name" );
+			m_Layers_Title	+= Layer[i].Get_Content("Title");
 		}
-
-		s	+= SG_T("\n");
-	}
-
-	if( m_MaxLayers > 0 )
-	{
-		s	+= CSG_String::Format(SG_T("\n[Max. Layers] %d\n"), m_MaxLayers);
-	}
-
-	if( m_MaxWidth > 0 )
-	{
-		s	+= CSG_String::Format(SG_T("\n[Max. Width] %d\n"), m_MaxWidth);
-	}
-
-	if( m_MaxHeight > 0 )
-	{
-		s	+= CSG_String::Format(SG_T("\n[Max. Height] %d\n"), m_MaxHeight);
-	}
-
-	if( m_Contact.Length() > 0 )
-	{
-		s	+= SG_T("\n[Contact] ")			+ m_Contact		+ SG_T("\n");
 	}
 
-	if( m_Access.Length() > 0 )
-	{
-		s	+= SG_T("\n[Access] ")			+ m_Access		+ SG_T("\n");
-	}
-
-	return( s );
+	//-----------------------------------------------------
+	return( true );
 }
 
 
@@ -558,78 +262,102 @@ CWMS_Import::CWMS_Import(void)
 		SG_T("ogc.bgs.ac.uk/cgi-bin/BGS_Bedrock_and_Superficial_Geology/wms")	// WGS84: Center -3.5x 55.0y Cellsize 0.005
  	);
 
-	Parameters.Add_String(
-		NULL	, "USERNAME"		, _TL("User Name"),
-		_TL(""),
-		SG_T("")
-	);
+	Parameters.Add_String(NULL, "USERNAME", _TL("User Name"), _TL(""), "");
+	Parameters.Add_String(NULL, "PASSWORD", _TL("Password" ), _TL(""), "", false, true);
 
-	Parameters.Add_String(
-		NULL	, "PASSWORD"		, _TL("Password"),
-		_TL(""),
-		SG_T(""), false, true
-	);
+	//-----------------------------------------------------
+	Parameters.Add_Info_String(NULL, "ABSTRACT", _TL("Abstract"), _TL(""), "", true);
+	Parameters.Add_Value      (NULL, "GCS_XMIN", _TL("Left"    ), _TL(""), PARAMETER_TYPE_Double);
+	Parameters.Add_Value      (NULL, "GCS_XMAX", _TL("Right"   ), _TL(""), PARAMETER_TYPE_Double);
+	Parameters.Add_Value      (NULL, "GCS_YMIN", _TL("Bottom"  ), _TL(""), PARAMETER_TYPE_Double);
+	Parameters.Add_Value      (NULL, "GCS_YMAX", _TL("Top"     ), _TL(""), PARAMETER_TYPE_Double);
+	Parameters.Add_Choice     (NULL, "LAYER"   , _TL("Layer"   ), _TL(""), "");
 }
 
-//---------------------------------------------------------
-CWMS_Import::~CWMS_Import(void)
-{}
-
 
 ///////////////////////////////////////////////////////////
 //														 //
-//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+int CWMS_Import::On_Parameter_Changed(CSG_Parameters *pParameters, CSG_Parameter *pParameter)
+{
+	if( !SG_STR_CMP(pParameter->Get_Identifier(), "SERVER") )
+	{
+		CWMS_Capabilities	Capabilities;
+
+		if( Capabilities.Create(pParameter->asString(), "1.1.1") )
+		{
+			pParameters->Set_Parameter("ABSTRACT", Capabilities.m_Abstract   );
+			pParameters->Set_Parameter("GCS_XMIN", Capabilities.m_Extent.xMin);
+			pParameters->Set_Parameter("GCS_XMAX", Capabilities.m_Extent.xMax);
+			pParameters->Set_Parameter("GCS_YMIN", Capabilities.m_Extent.yMin);
+			pParameters->Set_Parameter("GCS_YMAX", Capabilities.m_Extent.yMax);
+
+			CSG_String	Items;
+
+			for(int i=0; i<Capabilities.m_Layers_Title.Get_Count(); i++)
+			{
+				Items	+= Capabilities.m_Layers_Title[i] + "|";
+			}
+
+			pParameters->Get_Parameter("LAYER")->asChoice()->Set_Items(Items);
+		}
+	}
+
+	return( CSG_Module::On_Parameter_Changed(pParameters, pParameter) );
+}
+
+//---------------------------------------------------------
+int CWMS_Import::On_Parameters_Enable(CSG_Parameters *pParameters, CSG_Parameter *pParameter)
+{
+	return( CSG_Module::On_Parameters_Enable(pParameters, pParameter) );
+}
+
+
+///////////////////////////////////////////////////////////
 //														 //
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
 bool CWMS_Import::On_Execute(void)
 {
-	wxHTTP				Server;
-	CSG_String			sServer, sDirectory, sVersion;
-	CWMS_Capabilities	Capabilities;
+	CSG_String	sServer	= Parameters("SERVER")->asString();
 
 	//-----------------------------------------------------
-	sServer		= Parameters("SERVER")->asString();
+	CWMS_Capabilities	Capabilities;
 
-	if( sServer.Contains(SG_T("http://")) )
+	if( Capabilities.Create(sServer, "1.1.1") == false )
 	{
-		sServer		= Parameters("SERVER")->asString() + 7;
-	}
+		Message_Add(_TL("Unable to get capabilities."));
 
-	sDirectory	= SG_T("/") + sServer.AfterFirst(SG_T('/'));
-	sServer		= sServer.BeforeFirst(SG_T('/'));
+		return( false );
+	}
 
 	//-----------------------------------------------------
-	Server.SetUser		(Parameters("USERNAME")->asString());
-	Server.SetPassword	(Parameters("PASSWORD")->asString());
-
-	if( Server.Connect(sServer.c_str()) == false )
+	if( sServer.Find("http://") == 0 )
 	{
-		Message_Add(_TL("Unable to connect to server."));
-
-		return( false );
+		sServer	= Parameters("SERVER")->asString() + 7;
 	}
 
-	//-----------------------------------------------------
-	if( Capabilities.Create(&Server, sDirectory, sVersion) == false )
+	CSG_String	sPath	= "/" + sServer.AfterFirst('/');
+
+	sServer	= sServer.BeforeFirst('/');
+
+	wxHTTP	Server;
+
+	Server.SetUser    (Parameters("USERNAME")->asString());
+	Server.SetPassword(Parameters("PASSWORD")->asString());
+
+	if( Server.Connect(sServer.c_str()) == false )
 	{
-		Message_Add(_TL("Unable to get capabilities."));
+		Message_Add(_TL("Unable to connect to server."));
 
 		return( false );
 	}
 
-	Message_Add(Capabilities.Get_Summary(), false);
-
-	Message_Add(CSG_String::Format(SG_T("\n%s\nmin: %fx - %fy\nmax: %fx - %fy\n"), _TL("Extent"),
-		Capabilities.m_GeoBBox.xMin,
-		Capabilities.m_GeoBBox.yMin,
-		Capabilities.m_GeoBBox.xMax,
-		Capabilities.m_GeoBBox.yMax), false
-	);
-
 	//-----------------------------------------------------
-	if( Get_Map(&Server, sDirectory, sVersion, Capabilities) == false )
+	if( Get_Map(&Server, sPath, Capabilities) == false )
 	{
 		Message_Add(_TL("Unable to get map."));
 
@@ -661,12 +389,12 @@ bool CWMS_Import::Do_Dialog(CWMS_Capabilities &Cap)
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
-bool CWMS_Import::Get_Map(wxHTTP *pServer, const CSG_String &Directory, const CSG_String &Version, CWMS_Capabilities &Cap)
+bool CWMS_Import::Get_Map(wxHTTP *pServer, const CSG_String &Directory, CWMS_Capabilities &Cap)
 {
 	bool	bResult	= false;
 
 	int				i, n;
-	CSG_Rect		r(Cap.m_GeoBBox);
+	CSG_Rect		r(Cap.m_Extent);
 	CSG_Parameters	p;
 
 	//-----------------------------------------------------
@@ -689,9 +417,9 @@ bool CWMS_Import::Get_Map(wxHTTP *pServer, const CSG_String &Directory, const CS
 			pNode->Set_Value(i);
 	}
 
-	for(i=0; i<Cap.m_nLayers; i++)
+	for(i=0; i<Cap.m_Layers_Name.Get_Count(); i++)
 	{
-		p.Add_Value(NULL	, Cap.m_pLayers[i]->m_Name, Cap.m_pLayers[i]->m_Title, SG_T(""), PARAMETER_TYPE_Bool, false);
+		p.Add_Value(NULL, Cap.m_Layers_Name[i], Cap.m_Layers_Title[i], "", PARAMETER_TYPE_Bool, false);
 	}
 
 	//-----------------------------------------------------
@@ -717,12 +445,13 @@ bool CWMS_Import::Get_Map(wxHTTP *pServer, const CSG_String &Directory, const CS
 		//-------------------------------------------------
 		Layers.Clear();
 
-		for(i=0, n=0; i<Cap.m_nLayers; i++)
+		for(i=0, n=0; i<Cap.m_Layers_Name.Get_Count(); i++)
 		{
-			if( p(Cap.m_pLayers[i]->m_Name)->asBool() )
+			if( p(Cap.m_Layers_Name[i])->asBool() )
 			{
-				if( n++ > 0 )	Layers	+= SG_T(",");
-				Layers	+= Cap.m_pLayers[i]->m_Name;
+				if( n++ > 0 )	Layers	+= ",";
+
+				Layers	+= Cap.m_Layers_Name[i];
 			}
 		}
 
@@ -754,13 +483,13 @@ bool CWMS_Import::Get_Map(wxHTTP *pServer, const CSG_String &Directory, const CS
 		CSG_String	sRequest(Directory);
 
 		sRequest	+= SG_T("?SERVICE=WMS");
-		sRequest	+= SG_T("&VERSION=")	+ Version;
+		sRequest	+= SG_T("&VERSION=")	+ Cap.m_Version;
 		sRequest	+= SG_T("&REQUEST=GetMap");
 
 		sRequest	+= SG_T("&LAYERS=")		+ Layers;
 
-		if( Cap.m_sProjections.Get_Count() > 0 )
-			sRequest	+= S_SRS(Version)		+ Cap.m_sProjections[p("PROJ")->asInt()];
+		if( Cap.m_Projections.Length() > 0 )
+			sRequest	+= CSG_String(S_SRS(Cap.m_Version)) + p("PROJ")->asString();
 
 		sRequest	+= SG_T("&FORMAT=")		+ Format;
 
diff --git a/src/modules/garden/garden_webservices/wms_import.h b/src/modules/garden/garden_webservices/wms_import.h
old mode 100644
new mode 100755
index 102b3b4..3a63213
--- a/src/modules/garden/garden_webservices/wms_import.h
+++ b/src/modules/garden/garden_webservices/wms_import.h
@@ -80,66 +80,32 @@
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
-class CWMS_Layer
-{
-public:
-	CWMS_Layer(void)			{}
-	virtual ~CWMS_Layer(void)	{}
-
-
-	TSG_Rect			m_GeoBBox;
-
-	CSG_String			m_Name, m_Title;
-
-};
-
-//---------------------------------------------------------
 class CWMS_Capabilities
 {
 public:
 	CWMS_Capabilities(void);
-	CWMS_Capabilities(class wxHTTP *pServer, const CSG_String &Directory, CSG_String &Version);
+	CWMS_Capabilities(const CSG_String &Server, const CSG_String &Version);
 
 	virtual ~CWMS_Capabilities(void);
 
+	bool				Create				(const CSG_String &Server, const CSG_String &Version);
+	void				Destroy				(void);
 
-	bool				Create				(class wxHTTP *pServer, const CSG_String &Directory, CSG_String &Version);
-
-	CSG_String			Get_Summary			(void);
 
+	TSG_Rect			m_Extent;
 
-	int					m_MaxLayers, m_MaxWidth, m_MaxHeight, m_nLayers;
+	int					m_MaxWidth, m_MaxHeight, m_LayerLimit;
 
-	TSG_Rect			m_GeoBBox;
+	CSG_String			m_Name, m_Version, m_Title, m_Abstract, m_Formats, m_Projections;
 
-	CSG_String			m_Name, m_Title, m_Abstract, m_Online, m_Contact, m_Fees, m_Access, m_Formats, m_Layers_Title, m_Projections;
+	CSG_Strings			m_Layers_Name, m_Layers_Title;
 
-	CSG_Strings			m_Keywords, m_sProjections;
-
-	CWMS_Layer			**m_pLayers;
-
-
-private:
-
-	void				_Reset				(void);
-
-	class wxXmlNode *	_Get_Child			(class wxXmlNode *pNode, const CSG_String &Name);
-	bool				_Get_Child_Content	(class wxXmlNode *pNode, CSG_String &Value, const CSG_String &Name);
-	bool				_Get_Child_Content	(class wxXmlNode *pNode, int        &Value, const CSG_String &Name);
-	bool				_Get_Child_Content	(class wxXmlNode *pNode, double     &Value, const CSG_String &Name);
-	bool				_Get_Node_PropVal	(class wxXmlNode *pNode, CSG_String &Value, const CSG_String &Property);
-	bool				_Get_Child_PropVal	(class wxXmlNode *pNode, CSG_String &Value, const CSG_String &Name, const CSG_String &Property);
-
-	bool				_Get_Capabilities	(class wxXmlNode *pRoot, CSG_String &Version);
-	bool				_Get_Layer			(class wxXmlNode *pNode);
 
 };
 
 
 ///////////////////////////////////////////////////////////
 //														 //
-//														 //
-//														 //
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
@@ -147,19 +113,21 @@ class CWMS_Import : public CSG_Module
 {
 public:
 	CWMS_Import(void);
-	virtual ~CWMS_Import(void);
 
 
 protected:
 
-	virtual bool		On_Execute			(void);
+	virtual int			On_Parameter_Changed	(CSG_Parameters *pParameters, CSG_Parameter *pParameter);
+	virtual int			On_Parameters_Enable	(CSG_Parameters *pParameters, CSG_Parameter *pParameter);
+
+	virtual bool		On_Execute				(void);
 
 
 private:
 
-	bool				Do_Dialog			(CWMS_Capabilities &Cap);
+	bool				Do_Dialog				(CWMS_Capabilities &Cap);
 
-	bool				Get_Map				(class wxHTTP *pServer, const CSG_String &Directory, const CSG_String &Version, CWMS_Capabilities &Cap);
+	bool				Get_Map					(class wxHTTP *pServer, const CSG_String &Version, CWMS_Capabilities &Cap);
 
 };
 
diff --git a/src/modules/grid/Makefile.am b/src/modules/grid/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_analysis/Cost_Anisotropic.cpp b/src/modules/grid/grid_analysis/Cost_Anisotropic.cpp
deleted file mode 100644
index 333bcb8..0000000
--- a/src/modules/grid/grid_analysis/Cost_Anisotropic.cpp
+++ /dev/null
@@ -1,191 +0,0 @@
-/**********************************************************
- * Version $Id: Cost_Anisotropic.cpp 2072 2014-03-31 08:50:43Z reklov_w $
- *********************************************************/
-/*******************************************************************************
-    Cost_Anisotropic.cpp
-    Copyright (C) Victor Olaya
-    
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 2 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301, USA
-*******************************************************************************/ 
-
-#include "Cost_Anisotropic.h"
-
-#define NO_DATA -1.
-
-CCost_Anisotropic::CCost_Anisotropic(void)
-{	 
-
-	Set_Name(_TL("Accumulated Cost (Anisotropic)"));
-	Set_Author(_TL("Copyrights (c) 2004 by Victor Olaya"));
-	Set_Description	(_TW(
-		"(c) 2004 by Victor Olaya. Calculate Accumulated Cost (Anisotropic)"
-	));
-
-	Parameters.Add_Grid(NULL, 
-						"COST", 
-						_TL("Cost Grid"), 
-						_TL(""), 
-						PARAMETER_INPUT);
-
-	Parameters.Add_Grid(NULL, 
-						"DIRECTION", 
-						_TL("Direction of max cost"), 
-						_TL("Direction of max cost for each cell. In degrees"), 
-						PARAMETER_INPUT);
-	
-	Parameters.Add_Grid(NULL, 
-						"POINTS",
-						_TL("Destination Points"), 
-						_TL(""),
-						PARAMETER_INPUT);
-	
-	Parameters.Add_Grid(NULL, 
-						"ACCCOST", 
-						_TL("Accumulated Cost"), 
-						_TL(""), 
-						PARAMETER_OUTPUT, 
-						true, 
-						SG_DATATYPE_Double);
-
-	Parameters.Add_Value(NULL, 
-						"K", 
-						_TL("k factor"), 
-						_TL("Efective friction = stated friction ^f , where f = cos(DifAngle)^k."), 
-						PARAMETER_TYPE_Double, 
-						2);
-
-	Parameters.Add_Value(NULL,
-						"THRESHOLD",
-						_TL("Threshold for different route"),
-						_TL(""),
-						PARAMETER_TYPE_Double,
-						0.);
-
-}
-
-CCost_Anisotropic::~CCost_Anisotropic(void)
-{}
-
-
-bool CCost_Anisotropic::On_Execute(void)
-{
-	
-	m_pAccCostGrid = Parameters("ACCCOST")->asGrid(); 
-	m_pCostGrid = Parameters("COST")->asGrid(); 
-	m_pPointsGrid = Parameters("POINTS")->asGrid(); 
-	m_pDirectionGrid = Parameters("DIRECTION")->asGrid();
-	m_dK = Parameters("K")->asDouble();
-	m_dThreshold = Parameters("THRESHOLD")->asDouble();
-	
-	m_pAccCostGrid->Assign(NO_DATA);
-
-	m_CentralPoints.Clear();
-	m_AdjPoints.Clear();				
-	
-	m_CentralPoints.Clear();
-
-	for(int y=0; y<Get_NY(); y++){		
-		for(int x=0; x<Get_NX(); x++){
-			if (!m_pPointsGrid->is_NoData(x,y)){
-				m_CentralPoints.Add(x,y);
-				m_pAccCostGrid->Set_Value(x,y,0.0);
-			}//if
-		}//for
-	}//for
-	
-	CalculateCost();
-
-	m_pAccCostGrid->Set_NoData_Value(NO_DATA);
-
-	return true;
-
-}//method
-
-void CCost_Anisotropic::CalculateCost(){
-    
-    double dCost=0;;
-	int iX,iY;
-	int iUsedCells=0;
-	int iTotalCells=Get_NX()*Get_NY();
-	
-	while (m_CentralPoints.Get_Count()!=0){
-        
-		for (int iPt=0; iPt<m_CentralPoints.Get_Count();iPt++){	        
-	    
-			iX=m_CentralPoints.Get_X(iPt);
-			iY=m_CentralPoints.Get_Y(iPt);
-			
-			for (int i = -1; i < 2; i++) {        
-				for (int j = -1; j < 2; j++) { 
-					if (m_pCostGrid->is_InGrid(iX+i,iY+j)){							     			            		
-						if (m_pCostGrid->is_NoData(iX,iY) || m_pCostGrid->is_NoData(iX+i,iY+j)){				            							            			
-						}//if
-						else{
-							double dPartialCost=CalculateCostInDirection(iX,iY,i,j);
-							dCost = m_pAccCostGrid->asDouble(iX,iY) + dPartialCost* M_GET_LENGTH(i, j);
-							if (m_pAccCostGrid->asDouble(iX+i,iY+j)==NO_DATA){
-								iUsedCells++;
-								m_pAccCostGrid->Set_Value(iX+i,iY+j,dCost);
-								m_AdjPoints.Add(iX+i,iY+j);									
-							}//if
-							else if (m_pAccCostGrid->asDouble(iX+i,iY+j)> dCost + m_dThreshold){
-								m_pAccCostGrid->Set_Value(iX+i,iY+j,dCost);
-								m_AdjPoints.Add(iX+i,iY+j);		            			
-							}//if
-						}//else			            	       		
-					}//if           	                
-				}// for
-			}// for
-		}//for
-
-
-		m_CentralPoints.Clear();
-		for (int i=0; i<m_AdjPoints.Get_Count(); i++){
-			iX = m_AdjPoints.Get_X(i);
-			iY = m_AdjPoints.Get_Y(i);
-			m_CentralPoints.Add(iX,iY);
-		}//for
-		m_AdjPoints.Clear();
-		DataObject_Update(m_pAccCostGrid, true);
-
-		Set_Progress((double)iUsedCells,(double)iTotalCells);
-
-	}//while
-
-}//method
-
-
-double CCost_Anisotropic::CalculateCostInDirection(int iX,
-											  int iY,
-											  int iH,
-											  int iV){
-
-	double dAngles[3][3] = {{315,0,45},{270,0,90},{225,180,135}};
-	double PI=3.14159;
-	
-	double dAngle = dAngles[iV+1][iH+1];
-
-	double dDifAngle1 = fabs(m_pDirectionGrid->asDouble(iX,iY)-dAngle);
-	double dDifAngle2 = fabs(m_pDirectionGrid->asDouble(iX+iH,iY+iV)-dAngle);
-
-	dDifAngle1 = dDifAngle1/360.0 * 2.0 * PI;
-	dDifAngle2 = dDifAngle2/360.0 * 2.0 * PI;
-	
-	double dCost1 = pow(cos(dDifAngle1),m_dK)/2;
-	double dCost2 = pow(cos(dDifAngle2),m_dK)/2;
-
-	return dCost1+dCost2;
-
-}//method
diff --git a/src/modules/grid/grid_analysis/Cost_Anisotropic.h b/src/modules/grid/grid_analysis/Cost_Anisotropic.h
deleted file mode 100644
index 5d90703..0000000
--- a/src/modules/grid/grid_analysis/Cost_Anisotropic.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/**********************************************************
- * Version $Id: Cost_Anisotropic.h 2072 2014-03-31 08:50:43Z reklov_w $
- *********************************************************/
-/*******************************************************************************
-    Cost_Anisotropic.h
-    Copyright (C) Victor Olaya
-    
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 2 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301, USA
-*******************************************************************************/ 
-#ifndef HEADER_INCLUDED__Cost_Anisotropic_H
-#define HEADER_INCLUDED__Cost_Anisotropic_H
-
-#include "MLB_Interface.h"
-
-class CCost_Anisotropic : public CSG_Module_Grid
-{
-public:
-
-	CCost_Anisotropic(void);
-	virtual ~CCost_Anisotropic(void);
-
-	virtual CSG_String		Get_MenuPath	(void)	{	return( _TL("R:Cost Analysis") );	}
-
-
-protected:	
-
-	bool					On_Execute		(void);
-
-
-private:
-
-	double					m_dK;
-	double					m_dThreshold;
-
-	CSG_Points_Int			m_CentralPoints;
-	CSG_Points_Int			m_AdjPoints;
-
-	CSG_Grid					*m_pCostGrid;
-	CSG_Grid					*m_pDirectionGrid;
-	CSG_Grid					*m_pPointsGrid;	
-	CSG_Grid					*m_pAccCostGrid;
-
-	void					CalculateCost				(void);
-	double					CalculateCostInDirection	(int,int,int,int);
-
-};
-
-#endif // #ifndef HEADER_INCLUDED__Cost_Anisotropic_H
diff --git a/src/modules/grid/grid_analysis/Cost_Isotropic.cpp b/src/modules/grid/grid_analysis/Cost_Isotropic.cpp
old mode 100644
new mode 100755
index 04ada00..f91e93c
--- a/src/modules/grid/grid_analysis/Cost_Isotropic.cpp
+++ b/src/modules/grid/grid_analysis/Cost_Isotropic.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: Cost_Isotropic.cpp 2072 2014-03-31 08:50:43Z reklov_w $
+ * Version $Id: Cost_Isotropic.cpp 2768 2016-02-01 16:48:14Z oconrad $
  *********************************************************/
 /*******************************************************************************
     Cost_Isotropic.cpp
@@ -20,152 +20,338 @@
     Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301, USA
 *******************************************************************************/ 
 
+///////////////////////////////////////////////////////////
+//														 //
+//														 //
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
 #include "Cost_Isotropic.h"
 
-#define NO_DATA -1.
 
-CCost_Isotropic::CCost_Isotropic(void)
-{	 
-	
-	Set_Name		(_TL("Accumulated Cost (Isotropic)"));
-	Set_Author		(_TL("Copyrights (c) 2004 by Victor Olaya"));
+///////////////////////////////////////////////////////////
+//														 //
+//														 //
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+CCost_Accumulated::CCost_Accumulated(void)
+{
+	CSG_Parameter	*pNode;
+
+	//-----------------------------------------------------
+	Set_Name		(_TL("Accumulated Cost"));
+
+	Set_Author		("Victor Olaya (c) 2004");
+
 	Set_Description	(_TW(
-		"(c) 2004 by Victor Olaya. Calculate Accumulated Cost (Isotropic)"));
-
-	Parameters.Add_Grid(NULL, 
-						"COST", 
-						_TL("Cost Grid"), 
-						_TL(""), 
-						PARAMETER_INPUT);
-	
-	Parameters.Add_Grid(NULL, 
-						"POINTS",
-						_TL("Destination Points"), 
-						_TL(""),
-						PARAMETER_INPUT);
-	
-	Parameters.Add_Grid(NULL, 
-						"ACCCOST", 
-						_TL("Accumulated Cost"), 
-						_TL(""), 
-						PARAMETER_OUTPUT, 
-						true, 
-						SG_DATATYPE_Double);
-
-	Parameters.Add_Grid(NULL, 
-						"CLOSESTPT", 
-						_TL("Closest Point"), 
-						_TL(""), 
-						PARAMETER_OUTPUT, 
-						true, 
-						SG_DATATYPE_Int);
-
-	Parameters.Add_Value(NULL,
-						"THRESHOLD",
-						_TL("Threshold for different route"),
-						_TL(""),
-						PARAMETER_TYPE_Double,
-						0.);
+		"Calculation of accumulated cost, either isotropic or anisotropic, if direction of maximum cost is specified. "
+	));
+
+	//-----------------------------------------------------
+	Parameters.Add_Choice(
+		NULL	, "DEST_TYPE"	, _TL("Input Type of Destinations"),
+		_TL(""),
+		CSG_String::Format("%s|%s|",
+			_TL("Point"),
+			_TL("Grid")
+		), 0
+	);
+
+	Parameters.Add_Shapes(
+		NULL	, "DEST_POINTS"	, _TL("Destinations"),
+		_TL(""),
+		PARAMETER_INPUT, SHAPE_TYPE_Point
+	);
+
+	Parameters.Add_Grid(
+		NULL	, "DEST_GRID"	, _TL("Destinations"),
+		_TL(""),
+		PARAMETER_INPUT
+	);
+
+	//-----------------------------------------------------
+	Parameters.Add_Grid(
+		NULL	, "COST"		, _TL("Local Cost"),
+		_TL(""),
+		PARAMETER_INPUT
+	);
+
+	pNode	= Parameters.Add_Grid(
+		NULL	, "DIR_MAXCOST"	, _TL("Direction of Maximum Cost"),
+		_TL(""),
+		PARAMETER_INPUT_OPTIONAL
+	);
+
+	Parameters.Add_Choice(
+		pNode	, "DIR_UNIT"	, _TL("Units of Direction"),
+		_TL(""),
+		CSG_String::Format("%s|%s|",
+			_TL("radians"),
+			_TL("degree")
+		), 0
+	);
+
+	Parameters.Add_Value(
+		pNode	, "DIR_K"		, _TL("K Factor"),
+		_TL("effective friction = stated friction ^f , where f = cos(DifAngle)^k."),
+		PARAMETER_TYPE_Double, 2
+	);
+
+	//-----------------------------------------------------
+	Parameters.Add_Grid(
+		NULL	, "ACCUMULATED"	, _TL("Accumulated Cost"), 
+		_TL(""),
+		PARAMETER_OUTPUT
+	);
+
+	Parameters.Add_Grid(
+		NULL	, "ALLOCATION"	, _TL("Allocation"), 
+		_TL(""),
+		PARAMETER_OUTPUT, true, SG_DATATYPE_Int
+	);
+
+	//-----------------------------------------------------
+	Parameters.Add_Value(
+		NULL	, "THRESHOLD"	, _TL("Threshold for different route"),
+		_TL(""),
+		PARAMETER_TYPE_Double, 0.0, 0.0, true
+	);
+}
+
+
+///////////////////////////////////////////////////////////
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+int CCost_Accumulated::On_Parameters_Enable(CSG_Parameters *pParameters, CSG_Parameter *pParameter)
+{
+	if( !SG_STR_CMP(pParameter->Get_Identifier(), "DIR_MAXCOST") )
+	{
+		pParameters->Set_Enabled("DIR_UNIT", pParameter->asGrid() != NULL);
+		pParameters->Set_Enabled("DIR_K"   , pParameter->asGrid() != NULL);
+	}
+
+	if( !SG_STR_CMP(pParameter->Get_Identifier(), "DEST_TYPE") )
+	{
+		pParameters->Set_Enabled("DEST_POINTS", pParameter->asInt() == 0);
+		pParameters->Set_Enabled("DEST_GRID"  , pParameter->asInt() == 1);
+	}
+
+	return( CSG_Module_Grid::On_Parameters_Enable(pParameters, pParameter) );
 }
 
-CCost_Isotropic::~CCost_Isotropic(void)
-{}
 
+///////////////////////////////////////////////////////////
+//														 //
+///////////////////////////////////////////////////////////
 
-bool CCost_Isotropic::On_Execute(void)
+//---------------------------------------------------------
+bool CCost_Accumulated::On_Execute(void)
 {
-	
-	int iPoint = 1;
+	//-----------------------------------------------------
+	m_pCost			= Parameters("COST"       )->asGrid();
+	m_pAccumulated	= Parameters("ACCUMULATED")->asGrid();
+	m_pAllocation	= Parameters("ALLOCATION" )->asGrid();
+	m_pDirection	= Parameters("DIR_MAXCOST")->asGrid();
+	m_bDegree		= Parameters("DIR_UNIT"   )->asInt() == 1;
+	m_dK			= Parameters("DIR_K"      )->asDouble();
 
-	m_dThreshold = Parameters("THRESHOLD")->asDouble();
+	//-----------------------------------------------------
+	CPoints	Points;
 
-	m_pAccCostGrid = Parameters("ACCCOST")->asGrid(); 
-	m_pCostGrid = Parameters("COST")->asGrid(); 
-	m_pClosestPtGrid = Parameters("CLOSESTPT")->asGrid(); 
-	m_pPointsGrid = Parameters("POINTS")->asGrid(); 
-	
-	m_pAccCostGrid->Assign(NO_DATA);
-	m_pClosestPtGrid->Assign(NO_DATA);
+	if( !Get_Destinations(Points) )
+	{
+		Error_Set(_TL("no destination points in grid area."));
 
-	m_pAccCostGrid->Set_NoData_Value(NO_DATA);
-	m_pClosestPtGrid->Set_NoData_Value(NO_DATA);
+		return( false );
+	}
 
-	m_CentralPoints.Clear();
-	m_AdjPoints.Clear();
+	//-----------------------------------------------------
+	Get_Cost(Points);
 
-	m_CentralPoints.Clear();				
+	Get_Allocation();
+
+	//-----------------------------------------------------
+	return( true );
+}
 
-	for(int y=0; y<Get_NY(); y++){		
-		for(int x=0; x<Get_NX(); x++){
-			if (!m_pPointsGrid->is_NoData(x,y)){				
-				m_CentralPoints.Add(x,y,iPoint);
-				m_pAccCostGrid->Set_Value(x,y,0.0);
-				m_pClosestPtGrid->Set_Value(x,y,iPoint);
-				iPoint++;
-			}//if
-		}//for
-	}//for
 
-	CalculateCost();
+///////////////////////////////////////////////////////////
+//														 //
+///////////////////////////////////////////////////////////
 
-	return true;
+//---------------------------------------------------------
+bool CCost_Accumulated::Get_Destinations(CPoints &Points)
+{
+	Points.Clear();
 
-}//method
+	m_pAccumulated->Set_NoData_Value(-1.0); m_pAccumulated->Assign(-1.0);
+	m_pAllocation ->Set_NoData_Value(-1.0); m_pAllocation ->Assign( 0.0);
+
+	if( Parameters("DEST_TYPE")->asInt() == 0 )	// Point
+	{
+		CSG_Shapes	*pDestinations	= Parameters("DEST_POINTS")->asShapes();
+
+		for(int i=0, x, y; i<pDestinations->Get_Count(); i++)
+		{
+			if( Get_System()->Get_World_to_Grid(x, y, pDestinations->Get_Shape(i)->Get_Point(0)) && !m_pCost->is_NoData(x, y) )
+			{
+				Points.Add(x, y); m_pAllocation->Set_Value(x, y, Points.Get_Count()); m_pAccumulated->Set_Value(x, y, 0.0);
+			}
+		}
+	}
+	else										// Grid
+	{
+		CSG_Grid	*pDestinations	= Parameters("DEST_GRID")->asGrid();
+
+		for(int y=0; y<Get_NY(); y++)	for(int x=0; x<Get_NX(); x++)
+		{
+			if( !pDestinations->is_NoData(x, y) && !m_pCost->is_NoData(x, y) )
+			{
+				Points.Add(x, y); m_pAllocation->Set_Value(x, y, Points.Get_Count()); m_pAccumulated->Set_Value(x, y, 0.0);
+			}
+		}
+	}
+
+	return( Points.Get_Count() > 0 );
+}
+
+
+///////////////////////////////////////////////////////////
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+bool CCost_Accumulated::Get_Cost(CPoints &Points)
+{
+	CPoints	Next;	CSG_Grid	Next_Index(*Get_System(), SG_DATATYPE_Int);
+
+	double	Threshold	= Parameters("THRESHOLD")->asDouble();
+
+	sLong	nProcessed	= Points.Get_Count();
+
+	while( Points.Get_Count() > 0 && Set_Progress_NCells(nProcessed) )
+	{
+		Process_Set_Text(CSG_String::Format("%s: %d", _TL("cells in process"), Points.Get_Count()));
+
+		int		iPoint;
+
+		//-------------------------------------------------
+		Next.Clear();
+
+		for(iPoint=0; iPoint<Points.Get_Count(); iPoint++)
+		{
+			TSG_Point_Int	p	= Points[iPoint];
+
+			double	Cost	= m_pCost       ->asDouble(p.x, p.y);
+			double	Accu	= m_pAccumulated->asDouble(p.x, p.y);
+
+			for(int i=0; i<8; i++)
+			{
+				int	ix	= Get_xTo(i, p.x);
+				int	iy	= Get_yTo(i, p.y);
+
+				if( m_pCost->is_InGrid(ix, iy) )
+				{
+					double	iCost	= Get_UnitLength(i);
+
+					if( m_pDirection && m_pDirection->is_InGrid(p.x, p.y) && m_pDirection->is_InGrid(ix, iy) )
+					{
+						static const double	dAngles[8]	= {	0.0, M_PI_045, M_PI_090, M_PI_135, M_PI_180, M_PI_225, M_PI_270, M_PI_315 };
+
+						double	d1	= m_pDirection->asDouble(p.x, p.y); d1 = pow(cos(fabs((m_bDegree ? M_DEG_TO_RAD * d1 : d1) - dAngles[i])), m_dK);
+						double	d2	= m_pDirection->asDouble( ix,  iy); d2 = pow(cos(fabs((m_bDegree ? M_DEG_TO_RAD * d2 : d2) - dAngles[i])), m_dK);
+
+						iCost	*= (d1 + d2) / 2.0;
+					}
+
+					iCost	= Accu + iCost * (Cost + m_pCost->asDouble(ix, iy)) / 2.0;
+
+					//-------------------------------------
+					bool	bProcessed	= !m_pAccumulated->is_NoData(ix, iy);
+
+					if( !bProcessed || m_pAccumulated->asDouble(ix, iy) > iCost + Threshold )
+					{
+						if( !bProcessed )
+						{
+							nProcessed++;
+						}
+
+						Next_Index     .Set_Value(ix, iy, Next.Get_Count());	// remember last point (least cost!) added at position ix/iy
+						Next           .Add      (ix, iy);
+						m_pAccumulated->Set_Value(ix, iy, iCost);
+					}
+				}
+			}
+		}
+
+		//-------------------------------------------------
+		Points.Clear();
+
+		for(iPoint=0; iPoint<Next.Get_Count(); iPoint++)
+		{
+			TSG_Point_Int	p	= Next[iPoint];
+
+			if( Next_Index.asInt(p.x, p.y) == iPoint )
+			{
+				Points.Add(p.x, p.y);
+			}
+		}
+	}
+
+	return( true );
+}
+
+
+///////////////////////////////////////////////////////////
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+bool CCost_Accumulated::Get_Allocation(void)
+{
+	for(int y=0; y<Get_NY() && Set_Progress(y); y++)
+	{
+		for(int x=0; x<Get_NX(); x++)
+		{
+			Get_Allocation(x, y);
+		}
+	}
+
+	return( true );
+}
+
+//---------------------------------------------------------
+int CCost_Accumulated::Get_Allocation(int x, int y)
+{
+	int	Allocation	= m_pAllocation->asInt(x, y);
+
+	if( Allocation != 0 )
+	{
+		return( Allocation );
+	}
+
+	Allocation	= m_pAccumulated->Get_Gradient_NeighborDir(x, y, true, false);
+
+	if( Allocation >= 0 )
+	{
+		Allocation	= Get_Allocation(Get_xTo(Allocation, x), Get_yTo(Allocation, y));
+	}
+
+	m_pAllocation->Set_Value(x, y, Allocation);
+
+	return( Allocation );
+}
 
-void CCost_Isotropic::CalculateCost(){
-    
-    double dCost=0;
-	int iPoint;
-	int iX,iY;
-	int iUsedCells=0;
-	int iTotalCells=Get_NX()*Get_NY();
-	
-	while (m_CentralPoints.Get_Count()!=0){
-        
-		for (int iPt=0; iPt<m_CentralPoints.Get_Count();iPt++){	        
-	    
-			iX=m_CentralPoints.Get_X(iPt);
-			iY=m_CentralPoints.Get_Y(iPt);
-			iPoint = m_CentralPoints.Get_ClosestPoint(iPt);
-
-			for (int i = -1; i < 2; i++) {        
-				for (int j = -1; j < 2; j++) { 
-					if (m_pCostGrid->is_InGrid(iX+i,iY+j)){							     			            		
-						if (m_pCostGrid->is_NoData(iX,iY) || m_pCostGrid->is_NoData(iX+i,iY+j)){				            							            			
-						}//if
-						else{
-							double dPartialCost=(m_pCostGrid->asDouble(iX,iY)+m_pCostGrid->asDouble(iX+i,iY+j))/2.0;
-							dCost = m_pAccCostGrid->asDouble(iX,iY) + dPartialCost * M_GET_LENGTH(i, j);					
-							if (m_pAccCostGrid->asDouble(iX+i,iY+j)==NO_DATA || 
-									m_pAccCostGrid->asDouble(iX+i,iY+j)>dCost + m_dThreshold){								
-								m_pAccCostGrid->Set_Value(iX+i,iY+j,dCost);
-								m_pClosestPtGrid->Set_Value(iX+i,iY+j,iPoint);
-								m_AdjPoints.Add(iX+i,iY+j,iPoint);	
-								iUsedCells++;								
-							}//if							
-						}//else			            	       		
-					}//if 
-				}// for
-			}// for
-		}//for
-
-		m_CentralPoints.Clear();
-		for (int i=0; i<m_AdjPoints.Get_Count(); i++){
-			iX = m_AdjPoints.Get_X(i);
-			iY = m_AdjPoints.Get_Y(i);
-			iPoint = m_AdjPoints.Get_ClosestPoint(i);
-			m_CentralPoints.Add(iX,iY, iPoint);
-		}//for
-		m_AdjPoints.Clear();
-		
-		//DataObject_Update(m_pAccCostGrid, true); 
-
-		Set_Progress((double)iUsedCells,(double)iTotalCells);
-
-	}//while
-
-
-	
-}//method
 
+///////////////////////////////////////////////////////////
+//														 //
+//														 //
+//														 //
+///////////////////////////////////////////////////////////
 
+//---------------------------------------------------------
diff --git a/src/modules/grid/grid_analysis/Cost_Isotropic.h b/src/modules/grid/grid_analysis/Cost_Isotropic.h
old mode 100644
new mode 100755
index 47ccdab..9a94fae
--- a/src/modules/grid/grid_analysis/Cost_Isotropic.h
+++ b/src/modules/grid/grid_analysis/Cost_Isotropic.h
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: Cost_Isotropic.h 2072 2014-03-31 08:50:43Z reklov_w $
+ * Version $Id: Cost_Isotropic.h 2768 2016-02-01 16:48:14Z oconrad $
  *********************************************************/
 /*******************************************************************************
     Cost_Isotropic.h
@@ -22,39 +22,104 @@
 #ifndef HEADER_INCLUDED__Cost_Isotropic_H
 #define HEADER_INCLUDED__Cost_Isotropic_H
 
+
+///////////////////////////////////////////////////////////
+//														 //
+//														 //
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
 #include "MLB_Interface.h"
-#include "PointsEx.h"
 
-class CCost_Isotropic : public CSG_Module_Grid
+
+///////////////////////////////////////////////////////////
+//														 //
+//														 //
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+class CCost_Accumulated : public CSG_Module_Grid
 {
+private:
+
+	class CPoints
+	{
+	public:
+		CPoints(void)
+		{
+			m_Points.Create(sizeof(TSG_Point_Int), 0, SG_ARRAY_GROWTH_1);
+		}
+
+		void					Clear			(void)	{	m_Points.Set_Array(0, false);	}
+
+		bool					Add				(int x, int y)
+		{
+			if( m_Points.Inc_Array() )
+			{
+				TSG_Point_Int	*p	= (TSG_Point_Int *)m_Points.Get_Entry(m_Points.Get_Size() - 1);
+
+				p->x	= x;
+				p->y	= y;
+
+				return( true );
+			}
+
+			return( false );
+		}
+
+		int						Get_Count		(void)	{	return( (int)m_Points.Get_Size() );	}
+		const TSG_Point_Int &	operator []		(int i)	{	return( *((TSG_Point_Int *)m_Points.Get_Entry(i)) );	}
+
+
+	private:
+
+		CSG_Array				m_Points;
+
+	};
+
+
+//---------------------------------------------------------
 public:
 
-	CCost_Isotropic(void);
-	virtual ~CCost_Isotropic(void);
+	CCost_Accumulated(void);
 
-	virtual CSG_String		Get_MenuPath	(void)	{	return( _TL("R:Cost Analysis") );	}
+	virtual CSG_String		Get_MenuPath			(void)	{	return( _TL("Cost Analysis") );	}
 
 
 protected:	
 
-	bool					On_Execute		(void);
+	int						On_Parameters_Enable	(CSG_Parameters *pParameters, CSG_Parameter *pParameter);
+
+	bool					On_Execute				(void);
 
 
 private:
 
-	double					m_dThreshold;
+	bool					m_bDegree;
 
-	CPointsEx				m_CentralPoints;
-	CPointsEx				m_AdjPoints;
+	double					m_dK;
 
-	CSG_Grid					*m_pCostGrid;
-	CSG_Grid					*m_pPointsGrid;	
-	CSG_Grid					*m_pAccCostGrid;
-	CSG_Grid					*m_pClosestPtGrid;
+	CSG_Grid				*m_pCost, *m_pDirection, *m_pAccumulated, *m_pAllocation;
+
+
+	bool					Get_Destinations		(CPoints &Points);
+
+	bool					Get_Cost				(CPoints &Points);
+
+	bool					Get_Allocation			(void);
+	int						Get_Allocation			(int x, int y);
 
 
-	void					CalculateCost	(void);
-	
 };
 
+
+///////////////////////////////////////////////////////////
+//														 //
+//														 //
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
 #endif // #ifndef HEADER_INCLUDED__Cost_Isotropic_H
diff --git a/src/modules/grid/grid_analysis/CoveredDistance.cpp b/src/modules/grid/grid_analysis/CoveredDistance.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_analysis/CoveredDistance.h b/src/modules/grid/grid_analysis/CoveredDistance.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_analysis/CrossClassification.cpp b/src/modules/grid/grid_analysis/CrossClassification.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_analysis/CrossClassification.h b/src/modules/grid/grid_analysis/CrossClassification.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_analysis/Grid_AHP.cpp b/src/modules/grid/grid_analysis/Grid_AHP.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_analysis/Grid_AHP.h b/src/modules/grid/grid_analysis/Grid_AHP.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_analysis/Grid_Accumulation_Functions.cpp b/src/modules/grid/grid_analysis/Grid_Accumulation_Functions.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_analysis/Grid_Accumulation_Functions.h b/src/modules/grid/grid_analysis/Grid_Accumulation_Functions.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_analysis/Grid_AggregationIndex.cpp b/src/modules/grid/grid_analysis/Grid_AggregationIndex.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_analysis/Grid_AggregationIndex.h b/src/modules/grid/grid_analysis/Grid_AggregationIndex.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_analysis/Grid_CVA.cpp b/src/modules/grid/grid_analysis/Grid_CVA.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_analysis/Grid_CVA.h b/src/modules/grid/grid_analysis/Grid_CVA.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_analysis/Grid_IMCORR.cpp b/src/modules/grid/grid_analysis/Grid_IMCORR.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_analysis/Grid_IMCORR.h b/src/modules/grid/grid_analysis/Grid_IMCORR.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_analysis/Grid_LayerOfMaximumValue.cpp b/src/modules/grid/grid_analysis/Grid_LayerOfMaximumValue.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_analysis/Grid_LayerOfMaximumValue.h b/src/modules/grid/grid_analysis/Grid_LayerOfMaximumValue.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_analysis/Grid_Pattern.cpp b/src/modules/grid/grid_analysis/Grid_Pattern.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_analysis/Grid_Pattern.h b/src/modules/grid/grid_analysis/Grid_Pattern.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_analysis/LeastCostPathProfile.cpp b/src/modules/grid/grid_analysis/LeastCostPathProfile.cpp
old mode 100644
new mode 100755
index 16115b0..efc225f
--- a/src/modules/grid/grid_analysis/LeastCostPathProfile.cpp
+++ b/src/modules/grid/grid_analysis/LeastCostPathProfile.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: LeastCostPathProfile.cpp 2208 2014-08-27 16:00:51Z oconrad $
+ * Version $Id: LeastCostPathProfile.cpp 2768 2016-02-01 16:48:14Z oconrad $
  *********************************************************/
 ///////////////////////////////////////////////////////////
 //                                                       //
@@ -75,72 +75,81 @@
 
 ///////////////////////////////////////////////////////////
 //														 //
-//														 //
-//														 //
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
 CLeastCostPathProfile::CLeastCostPathProfile(void)
 {
-	Parameters.Set_Name(_TL("Least Cost Path"));
-	Parameters.Set_Description(_TW(
+	Set_Name		(_TL("Least Cost Path"));
+
+	Set_Author		("Victor Olaya (c) 2004");
+
+	Set_Description	(_TW(
 		"Creates a least cost past profile using an accumulated cost surface."
-		"\n(c) 2004 Victor Olaya, Goettingen.\nemail: oconrad at gwdg.de\n")
-	);
+	));
 
 	Parameters.Add_Grid(
-		NULL, "DEM"		, 
-		_TL("Accumulated cost"),
-		_TL("Accumulated cost"),
+		NULL	, "DEM"		, _TL("Accumulated cost"),
+		_TL(""),
 		PARAMETER_INPUT
 	);
 
 	Parameters.Add_Grid_List(
-		NULL, 
-		"VALUES", 
-		_TL("Values"),
+		NULL	, "VALUES"	, _TL("Values"),
 		_TL(""),
 		PARAMETER_INPUT_OPTIONAL
 	);
 
 	Parameters.Add_Shapes(
-		NULL, 
-		"POINTS", 
-		_TL("Profile (points)"),
+		NULL	, "POINTS"	, _TL("Profile Points"),
 		_TL(""),
-		PARAMETER_OUTPUT, 
-		SHAPE_TYPE_Point
+		PARAMETER_OUTPUT, SHAPE_TYPE_Point
 	);
 
 	Parameters.Add_Shapes(
-		NULL, 
-		"LINE", 
-		_TL("Profile (lines)"),
+		NULL	, "LINE"	, _TL("Profile Line"),
 		_TL(""),
 		PARAMETER_OUTPUT, SHAPE_TYPE_Line
 	);
 }
 
-//---------------------------------------------------------
-CLeastCostPathProfile::~CLeastCostPathProfile(void)
-{}
-
 
 ///////////////////////////////////////////////////////////
 //														 //
-//														 //
-//														 //
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
 bool CLeastCostPathProfile::On_Execute(void)
 {
-	m_pDEM		= Parameters("DEM")		->asGrid();
-	m_pValues	= Parameters("VALUES")	->asGridList();
-	m_pPoints	= Parameters("POINTS")	->asShapes();
-	m_pLine		= Parameters("LINE")	->asShapes();
+	m_pDEM		= Parameters("DEM"   )->asGrid    ();
+	m_pValues	= Parameters("VALUES")->asGridList();
+	m_pPoints	= Parameters("POINTS")->asShapes  ();
+	m_pLines	= Parameters("LINE"  )->asShapes  ();
+
+	//-----------------------------------------------------
+	m_pPoints->Create(SHAPE_TYPE_Point, CSG_String::Format("%s [%s]", _TL("Profile"), m_pDEM->Get_Name()));
 
-	DataObject_Update(m_pDEM, true);
+	m_pPoints->Add_Field("ID", SG_DATATYPE_Int   );
+	m_pPoints->Add_Field("D" , SG_DATATYPE_Double);
+	m_pPoints->Add_Field("X" , SG_DATATYPE_Double);
+	m_pPoints->Add_Field("Y" , SG_DATATYPE_Double);
+	m_pPoints->Add_Field("Z" , SG_DATATYPE_Double);
+
+	for(int i=0; i<m_pValues->Get_Count(); i++)
+	{
+		m_pPoints->Add_Field(m_pValues->asGrid(i)->Get_Name(), SG_DATATYPE_Double);
+	}
+
+	//-----------------------------------------------------
+	m_pLines->Create(SHAPE_TYPE_Line, CSG_String::Format("%s [%s]", _TL("Profile"), m_pDEM->Get_Name()));
+	m_pLines->Add_Field("ID", SG_DATATYPE_Int);
+	m_pLine	= m_pLines->Add_Shape();
+	m_pLine->Set_Value(0, 1);
+
+	//-----------------------------------------------------
+//	DataObject_Update(m_pDEM, true);
+
+	Set_Drag_Mode(MODULE_INTERACTIVE_DRAG_NONE);
 
 	return( true );
 }
@@ -148,8 +157,6 @@ bool CLeastCostPathProfile::On_Execute(void)
 
 ///////////////////////////////////////////////////////////
 //														 //
-//														 //
-//														 //
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
@@ -158,155 +165,83 @@ bool CLeastCostPathProfile::On_Execute_Position(CSG_Point ptWorld, TSG_Module_In
 	switch( Mode )
 	{
 	case MODULE_INTERACTIVE_LDOWN:
-		Set_Profile(Get_System()->Fit_to_Grid_System(ptWorld));
-		break;
-	}
+	case MODULE_INTERACTIVE_MOVE_LDOWN:
+		return( Set_Profile(Get_System()->Fit_to_Grid_System(ptWorld)) );
 
-	return( true );
+	default:
+		return( false );
+	}
 }
 
 
 ///////////////////////////////////////////////////////////
 //														 //
-//														 //
-//														 //
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
 bool CLeastCostPathProfile::Set_Profile(TSG_Point ptWorld)
 {
-	int			x, y, i;
+	m_pPoints->Del_Shapes();
+	m_pLine  ->Del_Parts();
 
 	//-----------------------------------------------------
-	if( Get_System()->Get_World_to_Grid(x, y, ptWorld) && m_pDEM->is_InGrid(x, y) )
-	{
-		m_pPoints->Create(SHAPE_TYPE_Point, CSG_String::Format(_TL("Profile [%s]"), m_pDEM->Get_Name()));
-
-		m_pPoints->Add_Field("ID"	, SG_DATATYPE_Int);
-		m_pPoints->Add_Field("D"	, SG_DATATYPE_Double);
-		m_pPoints->Add_Field("X"	, SG_DATATYPE_Double);
-		m_pPoints->Add_Field("Y"	, SG_DATATYPE_Double);
-		m_pPoints->Add_Field("Z"	, SG_DATATYPE_Double);
+	int		x, y, Direction;
 
-		for(i=0; i<m_pValues->Get_Count(); i++)
+	if( Get_Grid_Pos(x, y) )
+	{
+		while( Add_Point(x, y) && (Direction = m_pDEM->Get_Gradient_NeighborDir(x, y, true, false)) >= 0 )
 		{
-			m_pPoints->Add_Field(m_pValues->asGrid(i)->Get_Name(), SG_DATATYPE_Double);
+			x	+= Get_xTo(Direction);
+			y	+= Get_yTo(Direction);
 		}
-
-		//-----------------------------------------------------
-		m_pLine->Create(SHAPE_TYPE_Line, CSG_String::Format(_TL("Profile [%s]"), m_pDEM->Get_Name()));
-		m_pLine->Add_Field("ID", SG_DATATYPE_Int);
-		m_pLine->Add_Shape()->Set_Value(0, 1);
-
-		//-----------------------------------------------------
-		Set_Profile(x, y);
-
-		//-----------------------------------------------------
-		DataObject_Update(m_pLine	, false);
-		DataObject_Update(m_pPoints	, false);
-
-		return( true );
 	}
 
-	return( false );
-}
+	//-----------------------------------------------------
+	DataObject_Update(m_pLines , false);
+	DataObject_Update(m_pPoints, false);
 
-//---------------------------------------------------------
-void CLeastCostPathProfile::Set_Profile(int iX, int iY)
-{
-	int iNextX, iNextY;
-
-	iNextX = iX;
-	iNextY = iY;
-	do {
-		iX = iNextX;
-		iY = iNextY;
-		getNextCell(m_pDEM, iX, iY, iNextX, iNextY);
-	
-	}while (Add_Point(iX, iY) 
-			&& (iX != iNextX || iY != iNextY));
-	
+	return( m_pPoints->Get_Count() > 0 );
 }
 
-
-void CLeastCostPathProfile::getNextCell(CSG_Grid *g,
-										int iX,
-										int iY,
-										int &iNextX,
-										int &iNextY) {
-
-    float fMaxSlope;
-    float fSlope;
-
-    fMaxSlope = 0;
-    fSlope = 0;
-
-    if (iX < 1 || iX >= g->Get_NX()-1 || iY < 1 || iY >= g->Get_NY()-1
-            || g->is_NoData(iX,iY)) {
-        iNextX = iX;
-		iNextY = iY;
-		return;
-    }// if
-
-    for (int i = -1; i < 2; i++) {
-        for (int j = -1; j < 2; j++) {                	
-            if (!g->is_NoData(iX+i,iY+j)){
-                fSlope = (g->asFloat(iX+i,iY+j)
-                         - g->asFloat(iX,iY));                                				
-                if (fSlope <= fMaxSlope) {
-                    iNextX = iX+i;
-					iNextY = iY+j;                        
-                    fMaxSlope = fSlope;
-                }// if
-            }//if                    
-        }// for
-    }// for
-
-}// method
-
 //---------------------------------------------------------
 bool CLeastCostPathProfile::Add_Point(int x, int y)
 {
-	int			i;
-	double		Distance;
-	TSG_Point	Point;
-	CSG_Shape		*pPoint, *pLast;
-
-	if( m_pDEM->is_InGrid(x, y) )
+	if( !m_pDEM->is_InGrid(x, y) )
 	{
-		Point	= Get_System()->Get_Grid_to_World(x, y);
+		return( false );
+	}
 
-		if( m_pPoints->Get_Count() == 0 )
-		{
-			Distance	= 0.0;
-		}
-		else
-		{
-			pLast		= m_pPoints->Get_Shape(m_pPoints->Get_Count() - 1);
-			Distance	= SG_Get_Distance(Point, pLast->Get_Point(0));
-			Distance	+= pLast->asDouble(1);
-		}
+	//-----------------------------------------------------
+	TSG_Point	Point	= Get_System()->Get_Grid_to_World(x, y);
 
-		pPoint	= m_pPoints->Add_Shape();
-		pPoint->Add_Point(Point);
+	double	Distance	= 0.0;
 
-		pPoint->Set_Value(0, m_pPoints->Get_Count());
-		pPoint->Set_Value(1, Distance);
-		pPoint->Set_Value(2, Point.x);
-		pPoint->Set_Value(3, Point.y);
-		pPoint->Set_Value(4, m_pDEM->asDouble(x, y));
+	if( m_pPoints->Get_Count() > 0 )
+	{
+		CSG_Shape	*pLast	= m_pPoints->Get_Shape(m_pPoints->Get_Count() - 1);
 
-		for(i=0; i<m_pValues->Get_Count(); i++)
-		{
-			pPoint->Set_Value(VALUE_OFFSET + i, m_pValues->asGrid(i)->asDouble(x, y));
-		}
+		Distance	= SG_Get_Distance(Point, pLast->Get_Point(0)) + pLast->asDouble(1);
+	}
+
+	//-----------------------------------------------------
+	CSG_Shape	*pPoint	= m_pPoints->Add_Shape();
+
+	pPoint->Add_Point(Point);
 
-		m_pLine->Get_Shape(0)->Add_Point(Point);
+	pPoint->Set_Value(0, m_pPoints->Get_Count());
+	pPoint->Set_Value(1, Distance);
+	pPoint->Set_Value(2, Point.x);
+	pPoint->Set_Value(3, Point.y);
+	pPoint->Set_Value(4, m_pDEM->asDouble(x, y));
 
-		return( true );
+	for(int i=0; i<m_pValues->Get_Count(); i++)
+	{
+		pPoint->Set_Value(VALUE_OFFSET + i, m_pValues->asGrid(i)->asDouble(x, y));
 	}
 
-	return( false );
+	m_pLine->Add_Point(Point);
+
+	return( true );
 }
 
 
diff --git a/src/modules/grid/grid_analysis/LeastCostPathProfile.h b/src/modules/grid/grid_analysis/LeastCostPathProfile.h
old mode 100644
new mode 100755
index 1245369..15bf346
--- a/src/modules/grid/grid_analysis/LeastCostPathProfile.h
+++ b/src/modules/grid/grid_analysis/LeastCostPathProfile.h
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: LeastCostPathProfile.h 1921 2014-01-09 10:24:11Z oconrad $
+ * Version $Id: LeastCostPathProfile.h 2768 2016-02-01 16:48:14Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -79,31 +79,31 @@ class CLeastCostPathProfile : public CSG_Module_Grid_Interactive
 {
 public:
 	CLeastCostPathProfile(void);
-	virtual ~CLeastCostPathProfile(void);
 
-	virtual CSG_String		Get_MenuPath	(void)	{	return( _TL("R:Cost Analysis") );	}
+	virtual CSG_String			Get_MenuPath		(void)	{	return( _TL("Cost Analysis") );	}
 
 protected:
 
-	virtual bool				On_Execute(void);
-	virtual bool				On_Execute_Position(CSG_Point ptWorld, TSG_Module_Interactive_Mode Mode);
+	virtual bool				On_Execute			(void);
+
+	virtual bool				On_Execute_Position	(CSG_Point ptWorld, TSG_Module_Interactive_Mode Mode);
 
 
 private:
 
-	CSG_Shapes						*m_pPoints, *m_pLine;
+	CSG_Shapes					*m_pPoints, *m_pLines;
+
+	CSG_Shape					*m_pLine;
 
-	CSG_Grid						*m_pDEM;
+	CSG_Grid					*m_pDEM;
 
 	CSG_Parameter_Grid_List		*m_pValues;
 
 
-	bool						Set_Profile(TSG_Point ptWorld);
-	void						Set_Profile(int x, int y);
+	bool						Set_Profile			(TSG_Point ptWorld);
 
-	bool						Add_Point(int x, int y);
+	bool						Add_Point			(int x, int y);
 
-	void						getNextCell(CSG_Grid *g, int iX, int iY, int &iNextX, int &iNextY);
 };
 
 
diff --git a/src/modules/grid/grid_analysis/LeastCostPathProfile_Points.cpp b/src/modules/grid/grid_analysis/LeastCostPathProfile_Points.cpp
old mode 100644
new mode 100755
index a6b6044..6fd47e3
--- a/src/modules/grid/grid_analysis/LeastCostPathProfile_Points.cpp
+++ b/src/modules/grid/grid_analysis/LeastCostPathProfile_Points.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: LeastCostPathProfile_Points.cpp 2321 2014-11-03 21:10:22Z johanvdw $
+ * Version $Id: LeastCostPathProfile_Points.cpp 2768 2016-02-01 16:48:14Z oconrad $
  *********************************************************/
 ///////////////////////////////////////////////////////////
 //                                                       //
@@ -74,18 +74,16 @@
 
 ///////////////////////////////////////////////////////////
 //														 //
-//														 //
-//														 //
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
 CLeastCostPathProfile_Points::CLeastCostPathProfile_Points(void)
 {
-	Set_Name(_TL("Least Cost Paths"));
+	Set_Name		(_TL("Least Cost Paths"));
 
-	Set_Author(SG_T("O. Conrad, V. Olaya, V. Wichmann (c) 2004-2010"));
+	Set_Author		("O. Conrad, V. Olaya, V. Wichmann (c) 2004-2010");
 
-	Parameters.Set_Description(_TW(
+	Set_Description(_TW(
 		"This module allows one to compute least cost path profile(s). It takes an "
 		"accumulated cost surface grid and a point shapefile as input. Each "
 		"point in the shapefile represents a source for which the least cost path "
@@ -94,225 +92,158 @@ CLeastCostPathProfile_Points::CLeastCostPathProfile_Points(void)
 		"defined, a separate least cost path is calculated for each point. "
 		"The module outputs a point and a line shapefile for each least cost path.\n "
 		"The module allows for optional input grids. The cell values of these grids "
-		"along the least cost path are written to the outputs as additional table fields.\n\n")
-	);
+		"along the least cost path are written to the outputs as additional table fields.\n"
+	));
 
 	Parameters.Add_Shapes(
-		NULL, "SOURCE"	,
-		_TL("Source Point(s)"),
+		NULL	, "SOURCE"	, _TL("Source Point(s)"),
 		_TL("Point shapefile with source point(s)"),
 		PARAMETER_INPUT, SHAPE_TYPE_Point
 	);
 
 	Parameters.Add_Grid(
-		NULL, "DEM"		, 
-		_TL("Accumulated cost"),
-		_TL("Accumulated cost surface"),
+		NULL	, "DEM"		, _TL("Accumulated Cost Surface"),
+		_TL(""),
 		PARAMETER_INPUT
 	);
 
 	Parameters.Add_Grid_List(
-		NULL, 
-		"VALUES", 
-		_TL("Values"),
+		NULL	, "VALUES"	, _TL("Values"),
 		_TL("Allows to write cell values from additional grids to the output"),
 		PARAMETER_INPUT_OPTIONAL
 	);
 
 	Parameters.Add_Shapes_List(
-		NULL, 
-		"POINTS", 
-		_TL("Profile (points)"),
+		NULL	, "POINTS"	, _TL("Profile Points"),
 		_TL("Least cost path profile points"),
 		PARAMETER_OUTPUT, SHAPE_TYPE_Point
 	);
 
 	Parameters.Add_Shapes_List(
-		NULL, 
-		"LINE", 
-		_TL("Profile (lines)"),
-		_TL("Least cost path profile line"),
+		NULL	, "LINE"	, _TL("Profile Lines"),
+		_TL("Least cost path profile lines"),
 		PARAMETER_OUTPUT, SHAPE_TYPE_Line
 	);
 }
 
-//---------------------------------------------------------
-CLeastCostPathProfile_Points::~CLeastCostPathProfile_Points(void)
-{}
-
 
 ///////////////////////////////////////////////////////////
 //														 //
-//														 //
-//														 //
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
 bool CLeastCostPathProfile_Points::On_Execute(void)
 {
-	int							x, y;
-	CSG_Shape					*pShape;
 	CSG_Shapes					*pSources;
-	CSG_Shapes					*pPoints, *pLine;
-	CSG_Parameter_Shapes_List	*pShapesPoints, *pShapesLine;
+	CSG_Parameter_Shapes_List	*pList_Points, *pList_Lines;
 
-	pSources		= Parameters("SOURCE")	->asShapes();
-	m_pDEM			= Parameters("DEM")		->asGrid();
-	m_pValues		= Parameters("VALUES")	->asGridList();
-	pShapesPoints	= Parameters("POINTS")	->asShapesList();
-	pShapesLine		= Parameters("LINE")	->asShapesList();
+	m_pDEM			= Parameters("DEM"   )->asGrid();
+	m_pValues		= Parameters("VALUES")->asGridList();
+	pSources		= Parameters("SOURCE")->asShapes();
+	pList_Points	= Parameters("POINTS")->asShapesList();
+	pList_Lines		= Parameters("LINE"  )->asShapesList();
 
 	//-----------------------------------------------------
-	pShapesPoints	->Del_Items();
-	pShapesLine		->Del_Items();
-
+	pList_Points->Del_Items();
+	pList_Lines ->Del_Items();
 
 	//-----------------------------------------------------
-	for( int i=0; i<pSources->Get_Count(); i++ )
+	for(int i=0, x, y; i<pSources->Get_Count(); i++)
 	{
-		pShape		= pSources->Get_Shape(i);
+		CSG_Shape	*pShape		= pSources->Get_Shape(i);
 
 		if( Get_System()->Get_World_to_Grid(x, y, pShape->Get_Point(0)) && m_pDEM->is_InGrid(x, y) )
 		{
-
 			//-----------------------------------------------------
-			pPoints			= SG_Create_Shapes(SHAPE_TYPE_Point, CSG_String::Format(_TL("Profile_Points_[%s]_%d"), m_pDEM->Get_Name(), i+1));
-			pPoints			->Add_Field("ID"	, SG_DATATYPE_Int);
-			pPoints			->Add_Field("D"		, SG_DATATYPE_Double);
-			pPoints			->Add_Field("X"		, SG_DATATYPE_Double);
-			pPoints			->Add_Field("Y"		, SG_DATATYPE_Double);
-			pPoints			->Add_Field("Z"		, SG_DATATYPE_Double);
-
-			for( int j=0; j<m_pValues->Get_Count(); j++)
+			m_pPoints	= SG_Create_Shapes(SHAPE_TYPE_Point, CSG_String::Format("%s [%s] %d", _TL("Profile Points"), m_pDEM->Get_Name(), i + 1));
+
+			m_pPoints->Add_Field("ID", SG_DATATYPE_Int);
+			m_pPoints->Add_Field("D" , SG_DATATYPE_Double);
+			m_pPoints->Add_Field("X" , SG_DATATYPE_Double);
+			m_pPoints->Add_Field("Y" , SG_DATATYPE_Double);
+			m_pPoints->Add_Field("Z" , SG_DATATYPE_Double);
+
+			for(int j=0; j<m_pValues->Get_Count(); j++)
 			{
-				pPoints->Add_Field(m_pValues->asGrid(j)->Get_Name(), SG_DATATYPE_Double);
+				m_pPoints->Add_Field(m_pValues->asGrid(j)->Get_Name(), SG_DATATYPE_Double);
 			}
 
 			//-----------------------------------------------------
-			pLine			= SG_Create_Shapes(SHAPE_TYPE_Line, CSG_String::Format(_TL("Profile_Line_[%s]_%d"), m_pDEM->Get_Name(), i+1));
-			pLine			->Add_Field("ID", SG_DATATYPE_Int);
-			pLine			->Add_Shape()->Set_Value(0, 1);
+			m_pLines	= SG_Create_Shapes(SHAPE_TYPE_Line, CSG_String::Format("%s [%s] %d", _TL("Profile Line"), m_pDEM->Get_Name(), i + 1));
 
+			m_pLines->Add_Field("ID", SG_DATATYPE_Int);
+			m_pLines->Add_Shape()->Set_Value(0, 1);
 
-			Set_Profile(x, y, pPoints, pLine);
+			//-----------------------------------------------------
+			int	Direction;
+
+			while( Add_Point(x, y) && (Direction = m_pDEM->Get_Gradient_NeighborDir(x, y, true, false)) >= 0 )
+			{
+				x	+= Get_xTo(Direction);
+				y	+= Get_yTo(Direction);
+			}
 
 			//-----------------------------------------------------
-			if( pPoints->Get_Count() > 0 )
+			if( m_pPoints->Get_Count() > 0 )
 			{
-				pShapesPoints->Add_Item(pPoints);
-				pShapesLine->Add_Item(pLine);
+				pList_Points->Add_Item(m_pPoints);
+				pList_Lines ->Add_Item(m_pLines );
 			}
 			else
 			{
-				delete(pPoints);
-				delete(pLine);
+				delete(m_pPoints);
+				delete(m_pLines );
 			}
 		}
 	}
 
-	return( pShapesPoints->Get_Count() > 0 );
+	return( pList_Points->Get_Count() > 0 );
 }
 
 
 ///////////////////////////////////////////////////////////
 //														 //
-//														 //
-//														 //
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
-void CLeastCostPathProfile_Points::Set_Profile(int iX, int iY, CSG_Shapes *pPoints, CSG_Shapes *pLine)
+bool CLeastCostPathProfile_Points::Add_Point(int x, int y)
 {
-	int		iNextX, iNextY;
-
-	iNextX	= iX;
-	iNextY	= iY;
-	do
+	if( !m_pDEM->is_InGrid(x, y) )
 	{
-		iX	= iNextX;
-		iY	= iNextY;
-		getNextCell(m_pDEM, iX, iY, iNextX, iNextY);
+		return( false );
 	}
-	while( Add_Point(iX, iY, pPoints, pLine) && (iX != iNextX || iY != iNextY) );
-}
-
-
-//---------------------------------------------------------
-void CLeastCostPathProfile_Points::getNextCell(CSG_Grid *g,	int iX,	int iY,	int &iNextX, int &iNextY)
-{
-    float	fMaxSlope	= 0;
-    float	fSlope		= 0;
-
-    if( iX<1 || iX>=g->Get_NX()-1 || iY<1 || iY>=g->Get_NY()-1 || g->is_NoData(iX,iY) )
-	{
-        iNextX = iX;
-		iNextY = iY;
-		return;
-    }
 
-    for( int i=-1; i<2; i++ )
-	{
-        for( int j=-1; j<2; j++)
-		{                	
-            if( !g->is_NoData(iX+i,iY+j) )
-			{
-				fSlope = g->asFloat(iX+i,iY+j) - g->asFloat(iX,iY);                                				
-				if( fSlope <= fMaxSlope )
-				{
-					iNextX		= iX + i;
-					iNextY		= iY + j;                        
-                    fMaxSlope	= fSlope;
-                }
-            }                    
-        }
-    }
-
-	return;
-}
+	//-----------------------------------------------------
+	TSG_Point	Point	= Get_System()->Get_Grid_to_World(x, y);
 
-//---------------------------------------------------------
-bool CLeastCostPathProfile_Points::Add_Point(int x, int y, CSG_Shapes *pPoints, CSG_Shapes *pLine)
-{
-	int			i;
-	double		Distance;
-	TSG_Point	Point;
-	CSG_Shape	*pPoint, *pLast;
+	double	Distance	= 0.0;
 
-	if( m_pDEM->is_InGrid(x, y) )
+	if( m_pPoints->Get_Count() > 0 )
 	{
-		Point	= Get_System()->Get_Grid_to_World(x, y);
+		CSG_Shape	*pLast	= m_pPoints->Get_Shape(m_pPoints->Get_Count() - 1);
 
-		if( pPoints->Get_Count() == 0 )
-		{
-			Distance	= 0.0;
-		}
-		else
-		{
-			pLast		= pPoints->Get_Shape(pPoints->Get_Count() - 1);
-			Distance	= SG_Get_Distance(Point, pLast->Get_Point(0));
-			Distance	+= pLast->asDouble(1);
-		}
-
-		pPoint	= pPoints->Add_Shape();
-		pPoint->Add_Point(Point);
+		Distance	= SG_Get_Distance(Point, pLast->Get_Point(0)) + pLast->asDouble(1);
+	}
 
-		pPoint->Set_Value(0, pPoints->Get_Count());
-		pPoint->Set_Value(1, Distance);
-		pPoint->Set_Value(2, Point.x);
-		pPoint->Set_Value(3, Point.y);
-		pPoint->Set_Value(4, m_pDEM->asDouble(x, y));
+	//-----------------------------------------------------
+	CSG_Shape	*pPoint	= m_pPoints->Add_Shape();
 
-		for( i=0; i<m_pValues->Get_Count(); i++ )
-		{
-			pPoint->Set_Value(VALUE_OFFSET + i, m_pValues->asGrid(i)->asDouble(x, y));
-		}
+	pPoint->Add_Point(Point);
 
-		pLine->Get_Shape(0)->Add_Point(Point);
+	pPoint->Set_Value(0, m_pPoints->Get_Count());
+	pPoint->Set_Value(1, Distance);
+	pPoint->Set_Value(2, Point.x);
+	pPoint->Set_Value(3, Point.y);
+	pPoint->Set_Value(4, m_pDEM->asDouble(x, y));
 
-		return( true );
+	for(int i=0; i<m_pValues->Get_Count(); i++)
+	{
+		pPoint->Set_Value(VALUE_OFFSET + i, m_pValues->asGrid(i)->asDouble(x, y));
 	}
 
-	return( false );
+	m_pLines->Get_Shape(0)->Add_Point(Point);
+
+	return( true );
 }
 
 
diff --git a/src/modules/grid/grid_analysis/LeastCostPathProfile_Points.h b/src/modules/grid/grid_analysis/LeastCostPathProfile_Points.h
old mode 100644
new mode 100755
index f809af1..bf17ebe
--- a/src/modules/grid/grid_analysis/LeastCostPathProfile_Points.h
+++ b/src/modules/grid/grid_analysis/LeastCostPathProfile_Points.h
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: LeastCostPathProfile_Points.h 1921 2014-01-09 10:24:11Z oconrad $
+ * Version $Id: LeastCostPathProfile_Points.h 2768 2016-02-01 16:48:14Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -78,27 +78,26 @@ class CLeastCostPathProfile_Points : public CSG_Module_Grid
 {
 public:
 	CLeastCostPathProfile_Points(void);
-	virtual ~CLeastCostPathProfile_Points(void);
 
-	virtual CSG_String		Get_MenuPath	(void)	{	return( _TL("R:Cost Analysis") );	}
+	virtual CSG_String			Get_MenuPath	(void)	{	return( _TL("Cost Analysis") );	}
+
 
 protected:
 
-	virtual bool				On_Execute(void);
+	virtual bool				On_Execute		(void);
 
 
 private:
 
 	CSG_Grid					*m_pDEM;
 
-	CSG_Parameter_Grid_List		*m_pValues;
+	CSG_Shapes					*m_pPoints, *m_pLines;
 
+	CSG_Parameter_Grid_List		*m_pValues;
 
-	void						Set_Profile(int x, int y, CSG_Shapes *pPoints, CSG_Shapes *pLine);
 
-	bool						Add_Point(int x, int y, CSG_Shapes *pPoints, CSG_Shapes *pLine);
+	bool						Add_Point		(int x, int y);
 
-	void						getNextCell(CSG_Grid *g, int iX, int iY, int &iNextX, int &iNextY);
 };
 
 
diff --git a/src/modules/grid/grid_analysis/MLB_Interface.cpp b/src/modules/grid/grid_analysis/MLB_Interface.cpp
old mode 100644
new mode 100755
index 6958623..2772154
--- a/src/modules/grid/grid_analysis/MLB_Interface.cpp
+++ b/src/modules/grid/grid_analysis/MLB_Interface.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: MLB_Interface.cpp 2584 2015-09-17 16:13:56Z oconrad $
+ * Version $Id: MLB_Interface.cpp 2761 2016-01-22 14:02:05Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -93,7 +93,6 @@ CSG_String Get_Info(int i)
 // 3. Include the headers of your modules here...
 
 #include "Cost_Isotropic.h"
-#include "Cost_Anisotropic.h"
 #include "LeastCostPathProfile.h"
 #include "LeastCostPathProfile_Points.h"
 
@@ -125,8 +124,7 @@ CSG_Module *		Create_Module(int i)
 {
 	switch( i )
 	{
-	case  0:	return( new CCost_Isotropic );
-	case  1:	return( new CCost_Anisotropic );
+	case  0:	return( new CCost_Accumulated );
 	case  4:	return( new CLeastCostPathProfile );
 	case  5:	return( new CLeastCostPathProfile_Points );
 
diff --git a/src/modules/grid/grid_analysis/MLB_Interface.h b/src/modules/grid/grid_analysis/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_analysis/Makefile.am b/src/modules/grid/grid_analysis/Makefile.am
old mode 100644
new mode 100755
index 1e12207..9ac2d69
--- a/src/modules/grid/grid_analysis/Makefile.am
+++ b/src/modules/grid/grid_analysis/Makefile.am
@@ -1,5 +1,5 @@
 #
-# $Id: Makefile.am 2584 2015-09-17 16:13:56Z oconrad $
+# $Id: Makefile.am 2758 2016-01-22 13:55:24Z oconrad $
 #
 if DEBUG
 DBGFLAGS = -g -DDEBUG
@@ -13,7 +13,6 @@ AM_CXXFLAGS        = -fPIC $(CXX_INCS) $(DEF_SAGA) $(UC_DEFS) $(DBGFLAGS) $(GOMP
 AM_LDFLAGS         = -fPIC -shared -avoid-version 
 pkglib_LTLIBRARIES = libgrid_analysis.la
 libgrid_analysis_la_SOURCES =\
-Cost_Anisotropic.cpp\
 Cost_Isotropic.cpp\
 CoveredDistance.cpp\
 CrossClassification.cpp\
@@ -33,9 +32,7 @@ LeastCostPathProfile.cpp\
 LeastCostPathProfile_Points.cpp\
 MLB_Interface.cpp\
 owa.cpp\
-PointsEx.cpp\
 Soil_Texture.cpp\
-Cost_Anisotropic.h\
 Cost_Isotropic.h\
 CoveredDistance.h\
 CrossClassification.h\
@@ -55,7 +52,6 @@ LeastCostPathProfile.h\
 LeastCostPathProfile_Points.h\
 MLB_Interface.h\
 owa.h\
-PointsEx.h\
 Soil_Texture.h
 
 libgrid_analysis_la_LIBADD = $(top_srcdir)/src/saga_core/saga_api/libsaga_api.la $(ADD_MLBS)
diff --git a/src/modules/grid/grid_analysis/Makefile.in b/src/modules/grid/grid_analysis/Makefile.in
index 4363487..35f2eaf 100644
--- a/src/modules/grid/grid_analysis/Makefile.in
+++ b/src/modules/grid/grid_analysis/Makefile.in
@@ -127,15 +127,15 @@ am__installdirs = "$(DESTDIR)$(pkglibdir)"
 LTLIBRARIES = $(pkglib_LTLIBRARIES)
 libgrid_analysis_la_DEPENDENCIES =  \
 	$(top_srcdir)/src/saga_core/saga_api/libsaga_api.la
-am_libgrid_analysis_la_OBJECTS = Cost_Anisotropic.lo Cost_Isotropic.lo \
-	CoveredDistance.lo CrossClassification.lo \
-	diversity_analysis.lo fragmentation_base.lo \
-	fragmentation_classify.lo fragmentation_resampling.lo \
-	fragmentation_standard.lo Grid_Accumulation_Functions.lo \
-	Grid_AggregationIndex.lo Grid_AHP.lo Grid_CVA.lo \
-	Grid_IMCORR.lo Grid_LayerOfMaximumValue.lo Grid_Pattern.lo \
+am_libgrid_analysis_la_OBJECTS = Cost_Isotropic.lo CoveredDistance.lo \
+	CrossClassification.lo diversity_analysis.lo \
+	fragmentation_base.lo fragmentation_classify.lo \
+	fragmentation_resampling.lo fragmentation_standard.lo \
+	Grid_Accumulation_Functions.lo Grid_AggregationIndex.lo \
+	Grid_AHP.lo Grid_CVA.lo Grid_IMCORR.lo \
+	Grid_LayerOfMaximumValue.lo Grid_Pattern.lo \
 	LeastCostPathProfile.lo LeastCostPathProfile_Points.lo \
-	MLB_Interface.lo owa.lo PointsEx.lo Soil_Texture.lo
+	MLB_Interface.lo owa.lo Soil_Texture.lo
 libgrid_analysis_la_OBJECTS = $(am_libgrid_analysis_la_OBJECTS)
 AM_V_lt = $(am__v_lt_ at AM_V@)
 am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
@@ -369,7 +369,7 @@ top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 
 #
-# $Id: Makefile.am 2584 2015-09-17 16:13:56Z oconrad $
+# $Id: Makefile.am 2758 2016-01-22 13:55:24Z oconrad $
 #
 @DEBUG_TRUE at DBGFLAGS = -g -DDEBUG
 @SAGA_UNICODE_TRUE at UC_DEFS = -D_SAGA_UNICODE
@@ -379,7 +379,6 @@ AM_CXXFLAGS = -fPIC $(CXX_INCS) $(DEF_SAGA) $(UC_DEFS) $(DBGFLAGS) $(GOMPFLAGS)
 AM_LDFLAGS = -fPIC -shared -avoid-version 
 pkglib_LTLIBRARIES = libgrid_analysis.la
 libgrid_analysis_la_SOURCES = \
-Cost_Anisotropic.cpp\
 Cost_Isotropic.cpp\
 CoveredDistance.cpp\
 CrossClassification.cpp\
@@ -399,9 +398,7 @@ LeastCostPathProfile.cpp\
 LeastCostPathProfile_Points.cpp\
 MLB_Interface.cpp\
 owa.cpp\
-PointsEx.cpp\
 Soil_Texture.cpp\
-Cost_Anisotropic.h\
 Cost_Isotropic.h\
 CoveredDistance.h\
 CrossClassification.h\
@@ -421,7 +418,6 @@ LeastCostPathProfile.h\
 LeastCostPathProfile_Points.h\
 MLB_Interface.h\
 owa.h\
-PointsEx.h\
 Soil_Texture.h
 
 libgrid_analysis_la_LIBADD = $(top_srcdir)/src/saga_core/saga_api/libsaga_api.la $(ADD_MLBS)
@@ -504,7 +500,6 @@ mostlyclean-compile:
 distclean-compile:
 	-rm -f *.tab.c
 
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Cost_Anisotropic.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Cost_Isotropic.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/CoveredDistance.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/CrossClassification.Plo at am__quote@
@@ -518,7 +513,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/LeastCostPathProfile.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/LeastCostPathProfile_Points.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/MLB_Interface.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PointsEx.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Soil_Texture.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/diversity_analysis.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/fragmentation_base.Plo at am__quote@
diff --git a/src/modules/grid/grid_analysis/PointsEx.cpp b/src/modules/grid/grid_analysis/PointsEx.cpp
deleted file mode 100644
index 22d1ee8..0000000
--- a/src/modules/grid/grid_analysis/PointsEx.cpp
+++ /dev/null
@@ -1,44 +0,0 @@
-/**********************************************************
- * Version $Id: PointsEx.cpp 911 2011-02-14 16:38:15Z reklov_w $
- *********************************************************/
-#include <memory.h>
-#include "PointsEx.h"
-
-CPointsEx::CPointsEx(void)
-{
-	m_nPoints	= 0;
-	m_Points	= NULL;
-	m_ClosestPts = NULL;
-}
-
-CPointsEx::~CPointsEx(void)
-{
-	Clear();
-}
-
-void CPointsEx::Clear(void)
-{
-	if( m_Points )
-	{
-		SG_Free(m_Points);
-		SG_Free(m_ClosestPts);
-	}
-
-	m_nPoints	= 0;
-	m_Points	= NULL;
-	m_ClosestPts = NULL;
-}
-
-bool CPointsEx::Add(int x, int y, int iClosestPt)
-{
-	m_Points	= (TSG_Point_Int *)SG_Realloc(m_Points, (m_nPoints + 1) * sizeof(TSG_Point_Int));
-	m_ClosestPts = (int*)SG_Realloc(m_ClosestPts, (m_nPoints + 1) * sizeof(int));
-	
-	m_Points[m_nPoints].x	= x;
-	m_Points[m_nPoints].y	= y;
-	m_ClosestPts[m_nPoints] = iClosestPt;
-	m_nPoints++;
-
-	return( true );
-}
-
diff --git a/src/modules/grid/grid_analysis/PointsEx.h b/src/modules/grid/grid_analysis/PointsEx.h
deleted file mode 100644
index ecf367a..0000000
--- a/src/modules/grid/grid_analysis/PointsEx.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/**********************************************************
- * Version $Id: PointsEx.h 911 2011-02-14 16:38:15Z reklov_w $
- *********************************************************/
-#include "MLB_Interface.h"
-
-class CPointsEx  
-{
-public:
-	CPointsEx();
-	virtual ~CPointsEx();
-
-	void							Clear				(void);
-
-	bool							Add					(int x, int y, int iClosestPt);
-
-	int								Get_Count			(void)		{	return( m_nPoints );	}
-
-	int								Get_X				(int Index)	{	return( m_Points[Index].x );	}
-	int								Get_Y				(int Index)	{	return( m_Points[Index].y );	}
-	int								Get_ClosestPoint		(int Index)	{	return( m_ClosestPts[Index] );	}
-
-private:
-
-	int								m_nPoints;
-
-	TSG_Point_Int					*m_Points;
-	int								*m_ClosestPts;
-
-};
\ No newline at end of file
diff --git a/src/modules/grid/grid_analysis/Soil_Texture.cpp b/src/modules/grid/grid_analysis/Soil_Texture.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_analysis/Soil_Texture.h b/src/modules/grid/grid_analysis/Soil_Texture.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_analysis/diversity_analysis.cpp b/src/modules/grid/grid_analysis/diversity_analysis.cpp
old mode 100644
new mode 100755
index 9b565ec..03313d1
--- a/src/modules/grid/grid_analysis/diversity_analysis.cpp
+++ b/src/modules/grid/grid_analysis/diversity_analysis.cpp
@@ -98,25 +98,19 @@ CDiversity_Analysis::CDiversity_Analysis(void)
 
 	Parameters.Add_Grid(
 		NULL	, "DIVERSITY"		, _TL("Diversity"),
-		_TL("number of different categories (unique values) per area"),
+		_TL("distance weighted average of the number of different categories for distance classes"),
 		PARAMETER_OUTPUT
 	);
 
 	Parameters.Add_Grid(
-		NULL	, "SIZE_MEAN"		, _TL("Average Size"),
-		_TL("average size of the area covered by each category that occurs within search area"),
-		PARAMETER_OUTPUT
-	);
-
-	Parameters.Add_Grid(
-		NULL	, "SIZE_SKEW"		, _TL("Skewness"),
-		_TL("skewness of the area size per category distribution"),
+		NULL	, "CONNECTIVITY"	, _TL("Connectivity"),
+		_TL(""),
 		PARAMETER_OUTPUT
 	);
 
 	Parameters.Add_Grid(
-		NULL	, "CONNECTIVITY"	, _TL("Connectivity"),
-		_TL(""),
+		NULL	, "CONNECTEDAVG"	, _TL("Averaged Connectivity"),
+		_TL("average size of the area covered by each category that occurs within search area"),
 		PARAMETER_OUTPUT
 	);
 
@@ -144,6 +138,16 @@ CDiversity_Analysis::CDiversity_Analysis(void)
 		), 1
 	);
 
+	Parameters.Add_Choice(
+		NULL	, "NORMALIZE"		, _TL("Normalize"),
+		_TL(""),
+		CSG_String::Format("%s|%s|%s|",
+			_TL("no"),
+			_TL("by number of cells"),
+			_TL("by area size")
+		), 0
+	);
+
 	m_Search.Get_Weighting().Set_Weighting(SG_DISTWGHT_GAUSS);
 	m_Search.Get_Weighting().Set_BandWidth(0.7);
 	m_Search.Get_Weighting().Create_Parameters(&Parameters, false);
@@ -174,30 +178,26 @@ bool CDiversity_Analysis::On_Execute(void)
 	m_pClasses		= Parameters("CATEGORIES"  )->asGrid();
 	m_pCount		= Parameters("COUNT"       )->asGrid();
 	m_pDiversity	= Parameters("DIVERSITY"   )->asGrid();
-	m_pSize_Mean	= Parameters("SIZE_MEAN"   )->asGrid();
-	m_pSize_Skew	= Parameters("SIZE_SKEW"   )->asGrid();
 	m_pConnectivity	= Parameters("CONNECTIVITY")->asGrid();
+	m_pConnectedAvg	= Parameters("CONNECTEDAVG")->asGrid();
 
-	m_pCount		->Set_Name(CSG_String::Format("%s [%s]", m_pClasses->Get_Name(), _TL("Count"       )));
-	m_pDiversity	->Set_Name(CSG_String::Format("%s [%s]", m_pClasses->Get_Name(), _TL("Diversity"   )));
-	m_pSize_Mean	->Set_Name(CSG_String::Format("%s [%s]", m_pClasses->Get_Name(), _TL("Average"     )));
-	m_pSize_Skew	->Set_Name(CSG_String::Format("%s [%s]", m_pClasses->Get_Name(), _TL("Skewness"    )));
-	m_pConnectivity	->Set_Name(CSG_String::Format("%s [%s]", m_pClasses->Get_Name(), _TL("Connectivity")));
+	m_pCount		->Set_Name(CSG_String::Format("%s [%s]", m_pClasses->Get_Name(), _TL("Count"                )));
+	m_pDiversity	->Set_Name(CSG_String::Format("%s [%s]", m_pClasses->Get_Name(), _TL("Diversity"            )));
+	m_pConnectivity	->Set_Name(CSG_String::Format("%s [%s]", m_pClasses->Get_Name(), _TL("Connectivity"         )));
+	m_pConnectedAvg	->Set_Name(CSG_String::Format("%s [%s]", m_pClasses->Get_Name(), _TL("Averaged Connectivity")));
 
-	DataObject_Set_Colors(m_pCount       , 11, SG_COLORS_DEFAULT, false);
-	DataObject_Set_Colors(m_pDiversity   , 11, SG_COLORS_DEFAULT, false);
-	DataObject_Set_Colors(m_pSize_Mean   , 11, SG_COLORS_DEFAULT,  true);
-	DataObject_Set_Colors(m_pSize_Skew   , 11, SG_COLORS_DEFAULT,  true);
-	DataObject_Set_Colors(m_pConnectivity, 11, SG_COLORS_DEFAULT,  true);
+	DataObject_Set_Colors(m_pCount       , 11, SG_COLORS_RAINBOW, false);
+	DataObject_Set_Colors(m_pDiversity   , 11, SG_COLORS_RAINBOW, false);
+	DataObject_Set_Colors(m_pConnectivity, 11, SG_COLORS_RAINBOW,  true);
+	DataObject_Set_Colors(m_pConnectedAvg, 11, SG_COLORS_RAINBOW,  true);
 
 	//-----------------------------------------------------
 	m_Search.Get_Weighting().Set_Parameters(&Parameters);
 	m_Search.Get_Weighting().Set_BandWidth(Parameters("SEARCH_RADIUS")->asDouble() * m_Search.Get_Weighting().Get_BandWidth());
-	m_Search.Set_Radius(Parameters("SEARCH_RADIUS")->asInt(), Parameters("SEARCH_MODE")->asInt() == 0);
+	m_Search.Set_Radius(m_Radius = Parameters("SEARCH_RADIUS")->asInt(), Parameters("SEARCH_MODE")->asInt() == 0);
 
-	m_bWeighted	= m_Search.Get_Weighting().Get_Weighting() != SG_DISTWGHT_None;
-
-	m_NB_Step	= Parameters("NB_CASE")->asInt() == 0 ? 2 : 1;
+	m_NB_Step	= Parameters("NB_CASE"  )->asInt() == 0 ? 2 : 1;
+	m_Normalize	= Parameters("NORMALIZE")->asInt();
 
 	//-----------------------------------------------------
 	for(int y=0; y<Get_NY() && Set_Progress(y); y++)
@@ -205,13 +205,12 @@ bool CDiversity_Analysis::On_Execute(void)
 		#pragma omp parallel for
 		for(int x=0; x<Get_NX(); x++)
 		{
-			if( m_pClasses->is_NoData(x, y) || !Get_Diversity(x, y) )
+			if( !Get_Diversity(x, y) )
 			{
 				m_pCount       ->Set_NoData(x, y);
 				m_pDiversity   ->Set_NoData(x, y);
-				m_pSize_Mean   ->Set_NoData(x, y);
-				m_pSize_Skew   ->Set_NoData(x, y);
 				m_pConnectivity->Set_NoData(x, y);
+				m_pConnectedAvg->Set_NoData(x, y);
 			}
 		}
 	}
@@ -228,6 +227,106 @@ bool CDiversity_Analysis::On_Execute(void)
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
+class CCounter
+{
+public:
+	CCounter(void) : m_nClasses(0), m_nCells(0), m_nConnections(0), m_nNeighbours(0) {}
+
+	int		m_nClasses, m_nCells, m_nConnections, m_nNeighbours;
+
+};
+
+//---------------------------------------------------------
+bool CDiversity_Analysis::Get_Diversity(int x, int y)
+{
+	if( m_pClasses->is_NoData(x, y) )
+	{
+		return( false );
+	}
+
+	//-----------------------------------------------------
+	CCounter	*Counters	= new CCounter[m_Radius + 1];
+	int			iRadius		= 0;
+
+	CSG_Class_Statistics	Classes;
+
+	for(int iCell=0; iCell<m_Search.Get_Count(); iCell++)
+	{
+		if( iRadius < m_Search.Get_Distance(iCell) )
+		{
+			Counters[iRadius++].m_nClasses	= Classes.Get_Count();
+		}
+
+		int	ix	= m_Search.Get_X(iCell, x);
+		int	iy	= m_Search.Get_Y(iCell, y);
+
+		if( m_pClasses->is_InGrid(ix, iy) )
+		{
+			double	iz	= m_pClasses->asDouble(ix, iy);
+
+			Classes.Add_Value(iz);
+
+			Counters[iRadius].m_nCells++;
+
+			for(int jCell=0; jCell<8; jCell+=m_NB_Step)
+			{
+				int	jx	= Get_xTo(jCell, ix);
+				int	jy	= Get_yTo(jCell, iy);
+
+				if( m_pClasses->is_InGrid(jx, jy) )
+				{
+					Counters[iRadius].m_nNeighbours++;
+
+					if( m_pClasses->asDouble(jx, jy) == iz )
+					{
+						Counters[iRadius].m_nConnections++;
+					}
+				}
+			}
+		}
+	}
+
+	//-----------------------------------------------------
+	int		nCells = 0, nNeighbours = 0, nConnections = 0;
+
+	CSG_Simple_Statistics	sClasses, sConnectivity;
+
+	for(iRadius=0; iRadius<=m_Radius; iRadius++)
+	{
+		if( Counters[iRadius].m_nClasses > 0 )
+		{
+			nCells			+= Counters[iRadius].m_nCells;
+			nConnections	+= Counters[iRadius].m_nConnections;
+			nNeighbours		+= Counters[iRadius].m_nNeighbours;
+
+			double	w	= m_Search.Get_Weighting().Get_Weight(iRadius);
+
+			if( nNeighbours > 0 )
+			{
+				sConnectivity.Add_Value(nConnections / (double)nNeighbours, w);
+			}
+
+			sClasses.Add_Value(Counters[iRadius].m_nClasses, w);
+		}
+	}
+
+	m_pCount       ->Set_Value(x, y, Classes.Get_Count());
+	m_pDiversity   ->Set_Value(x, y, sClasses.Get_Mean() / (m_Normalize == 0 ? 1.0 : m_Normalize == 1 ? nCells : nCells * Get_Cellarea()));
+	m_pConnectivity->Set_Value(x, y, nNeighbours > 0 ? nConnections / (double)nNeighbours : 0.0);
+	m_pConnectedAvg->Set_Value(x, y, sConnectivity.Get_Mean());
+
+	//-----------------------------------------------------
+	delete[](Counters);
+
+	return( true );
+}
+
+
+///////////////////////////////////////////////////////////
+//														 //
+///////////////////////////////////////////////////////////
+
+/*/---------------------------------------------------------
 bool CDiversity_Analysis::Get_Diversity(int x, int y)
 {
 	int		i, nCells = 0, nConnections = 0, nNeighbours = 0;
@@ -266,7 +365,7 @@ bool CDiversity_Analysis::Get_Diversity(int x, int y)
 	}
 
 	//-----------------------------------------------------
-	if( Classes.Get_Count() > 1 )
+	if( Classes.Get_Count() > 0 )
 	{
 		CSG_Simple_Statistics	c, s(true);
 
@@ -278,23 +377,16 @@ bool CDiversity_Analysis::Get_Diversity(int x, int y)
 			s.Add_Value(Classes.Get_Class_Count(i), w);
 		}
 
-		m_pCount    ->Set_Value(x, y, c.Get_Sum ());
-		m_pDiversity->Set_Value(x, y, s.Get_Mean());
-		m_pSize_Mean->Set_Value(x, y, s.Get_Mean() / (double)nCells);	// relative size !!!
-		m_pSize_Skew->Set_Value(x, y, s.Get_Skewness());	//	m_pSize_Skew->Set_Value(x, y, s.Get_SkewnessPearson());
-	}
-	else
-	{
-		m_pCount    ->Set_Value(x, y, 1.0);
-		m_pDiversity->Set_Value(x, y, 1.0);
-		m_pSize_Mean->Set_Value(x, y, 1.0);
-		m_pSize_Skew->Set_Value(x, y, 0.0);
-	}
+		m_pCount       ->Set_Value(x, y, c.Get_Sum ());
+		m_pDiversity   ->Set_Value(x, y, s.Get_Mean());
+		m_pConnectedAvg->Set_Value(x, y, s.Get_Mean() / (double)nCells);	// relative size !!!
+		m_pConnectivity->Set_Value(x, y, nNeighbours > 0 ? nConnections / (double)nNeighbours : 0.0);
 
-	m_pConnectivity->Set_Value(x, y, nNeighbours > 0 ? nConnections / (double)nNeighbours : 0.0);
+		return( true );
+	}
 
-	return( nCells > 0 );
-}
+	return( false );
+}/**/
 
 
 ///////////////////////////////////////////////////////////
diff --git a/src/modules/grid/grid_analysis/diversity_analysis.h b/src/modules/grid/grid_analysis/diversity_analysis.h
old mode 100644
new mode 100755
index 2564f8d..e402c1a
--- a/src/modules/grid/grid_analysis/diversity_analysis.h
+++ b/src/modules/grid/grid_analysis/diversity_analysis.h
@@ -95,11 +95,9 @@ protected:
 
 private:
 
-	bool						m_bWeighted;
+	int							m_Radius, m_NB_Step, m_Normalize;
 
-	int							m_NB_Step;
-
-	CSG_Grid					*m_pClasses, *m_pCount, *m_pDiversity, *m_pSize_Mean, *m_pSize_Skew, *m_pConnectivity;
+	CSG_Grid					*m_pClasses, *m_pCount, *m_pDiversity, *m_pConnectivity, *m_pConnectedAvg;
 
 	CSG_Grid_Cell_Addressor		m_Search;
 
diff --git a/src/modules/grid/grid_analysis/fragmentation_base.cpp b/src/modules/grid/grid_analysis/fragmentation_base.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_analysis/fragmentation_base.h b/src/modules/grid/grid_analysis/fragmentation_base.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_analysis/fragmentation_classify.cpp b/src/modules/grid/grid_analysis/fragmentation_classify.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_analysis/fragmentation_classify.h b/src/modules/grid/grid_analysis/fragmentation_classify.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_analysis/fragmentation_resampling.cpp b/src/modules/grid/grid_analysis/fragmentation_resampling.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_analysis/fragmentation_resampling.h b/src/modules/grid/grid_analysis/fragmentation_resampling.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_analysis/fragmentation_standard.cpp b/src/modules/grid/grid_analysis/fragmentation_standard.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_analysis/fragmentation_standard.h b/src/modules/grid/grid_analysis/fragmentation_standard.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_analysis/owa.cpp b/src/modules/grid/grid_analysis/owa.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_analysis/owa.h b/src/modules/grid/grid_analysis/owa.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus/Fuzzify.cpp b/src/modules/grid/grid_calculus/Fuzzify.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus/Fuzzify.h b/src/modules/grid/grid_calculus/Fuzzify.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus/FuzzyAND.cpp b/src/modules/grid/grid_calculus/FuzzyAND.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus/FuzzyAND.h b/src/modules/grid/grid_calculus/FuzzyAND.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus/FuzzyOR.cpp b/src/modules/grid/grid_calculus/FuzzyOR.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus/FuzzyOR.h b/src/modules/grid/grid_calculus/FuzzyOR.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus/Grid_Calculator.cpp b/src/modules/grid/grid_calculus/Grid_Calculator.cpp
old mode 100644
new mode 100755
index 9d9cd8a..6492e74
--- a/src/modules/grid/grid_calculus/Grid_Calculator.cpp
+++ b/src/modules/grid/grid_calculus/Grid_Calculator.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: Grid_Calculator.cpp 2509 2015-06-15 16:18:32Z oconrad $
+ * Version $Id: Grid_Calculator.cpp 2777 2016-02-10 15:04:57Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -93,7 +93,7 @@ CGrid_Calculator::CGrid_Calculator(void)
 	//-----------------------------------------------------
 	Set_Name	(_TL("Grid Calculator"));
 
-	Set_Author	(_TL("A.Ringeler (c) 2003"));
+	Set_Author	("A.Ringeler (c) 2003");
 
 	CSG_String	s(_TW(
 		"The Grid Calculator calculates a new grid based on existing grids and a mathematical formula. "
@@ -102,17 +102,20 @@ CGrid_Calculator::CGrid_Calculator(void)
 		"(i.e.: g1, g2, g3, ... correspond to the first, second, third, ... grid in list). "
 		"Grids from other systems than the default one can be addressed likewise using the letter 'h' "
 		"(h1, h2, h3, ...), which correspond to the \'Grids from different Systems\' list.\n"
-		"Example:\t sin(g1) * g2 + h1\n"
-		"the same using indices: sin(g1) * g2 + g3\n\n"
+		"\n"
+		"Example:\t sin(g1) * g2 + 2 * h1\n"
+		"\n"
 		"The following operators are available for the formula definition:\n"
 	));
 
-	s	+= CSG_Formula::Get_Help_Operators();
+	const CSG_String	Operators[3][2]	=
+	{
+		{	"xpos(), ypos()", _TL("Get the x/y coordinates for the current cell")	},
+		{	"row(), col()"  , _TL("Get the current cell's column/row index"     )	},
+		{	"", ""	}
+	};
 
-	s	+= _TW(
-		"xpos(), ypos() - get the x/y coordinates of the current cell\n"
-		"row(), col() - get the current cell's column/row index\n"
-	);
+	s	+= CSG_Formula::Get_Help_Operators(true, Operators);
 
 	Set_Description(s);
 
@@ -130,15 +133,14 @@ CGrid_Calculator::CGrid_Calculator(void)
 	);
 
 	Parameters.Add_Choice(
-		pNode	,"INTERPOLATION"	, _TL("Interpolation"),
+		NULL	, "RESAMPLING"		, _TL("Resampling"),
 		_TL(""),
-		CSG_String::Format(SG_T("%s|%s|%s|%s|%s|"),
-			_TL("Nearest Neighbor"),
+		CSG_String::Format("%s|%s|%s|%s|",
+			_TL("Nearest Neighbour"),
 			_TL("Bilinear Interpolation"),
-			_TL("Inverse Distance Interpolation"),
 			_TL("Bicubic Spline Interpolation"),
 			_TL("B-Spline Interpolation")
-		), 4
+		), 3
 	);
 
 	Parameters.Add_Grid(
@@ -174,7 +176,7 @@ CGrid_Calculator::CGrid_Calculator(void)
 	Parameters.Add_Choice(
 		NULL	, "TYPE"			, _TL("Data Type"),
 		_TL(""),
-		CSG_String::Format(SG_T("%s|%s|%s|%s|%s|%s|%s|%s|%s|"),
+		CSG_String::Format("%s|%s|%s|%s|%s|%s|%s|%s|%s|",
 			SG_Data_Type_Get_Name(SG_DATATYPE_Bit   ).c_str(),
 			SG_Data_Type_Get_Name(SG_DATATYPE_Byte  ).c_str(),
 			SG_Data_Type_Get_Name(SG_DATATYPE_Char  ).c_str(),
@@ -213,7 +215,7 @@ int CGrid_Calculator::On_Parameters_Enable(CSG_Parameters *pParameters, CSG_Para
 {
 	if( !SG_STR_CMP(pParameter->Get_Identifier(), "XGRIDS") )
 	{
-		pParameters->Set_Enabled("INTERPOLATION", pParameter->asGridList()->Get_Count() > 0);
+		pParameters->Set_Enabled("RESAMPLING", pParameter->asGridList()->Get_Count() > 0);
 	}
 
 	return( CSG_Module_Grid::On_Parameters_Enable(pParameters, pParameter) );
@@ -228,17 +230,15 @@ int CGrid_Calculator::On_Parameters_Enable(CSG_Parameters *pParameters, CSG_Para
 bool CGrid_Calculator::On_Execute(void)
 {
 	bool					bUseNoData, bPosition[4];
-	int						Interpol;
 	CSG_Formula				Formula;
 	CSG_Parameter_Grid_List	*pGrids, *pXGrids;
 	CSG_Grid				*pResult;
 
 	//-----------------------------------------------------
-	pResult		= Parameters("RESULT"       )->asGrid();
-	pGrids		= Parameters("GRIDS"        )->asGridList();
-	pXGrids		= Parameters("XGRIDS"       )->asGridList();
-	bUseNoData	= Parameters("USE_NODATA"   )->asBool();
-	Interpol	= Parameters("INTERPOLATION")->asInt();
+	pResult		= Parameters("RESULT"    )->asGrid();
+	pGrids		= Parameters("GRIDS"     )->asGridList();
+	pXGrids		= Parameters("XGRIDS"    )->asGridList();
+	bUseNoData	= Parameters("USE_NODATA")->asBool();
 
 	//-----------------------------------------------------
 	if( !Get_Formula(Formula, Parameters("FORMULA")->asString(), pGrids->Get_Count(), pXGrids->Get_Count(), bPosition) )
@@ -247,6 +247,17 @@ bool CGrid_Calculator::On_Execute(void)
 	}
 
 	//-----------------------------------------------------
+	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;
+	}
+
+	//-----------------------------------------------------
 	TSG_Data_Type	Type;
 
 	switch( Parameters("TYPE")->asInt() )
@@ -299,7 +310,7 @@ bool CGrid_Calculator::On_Execute(void)
 
 			for(i=0; bOkay && i<pXGrids->Get_Count(); i++, n++)
 			{
-				bOkay	= pXGrids->asGrid(i)->Get_Value(px, py, Values[n], Interpol);
+				bOkay	= pXGrids->asGrid(i)->Get_Value(px, py, Values[n], Resampling);
 			}
 
 			if( bOkay )
@@ -391,14 +402,14 @@ bool CGrid_Calculator::Get_Formula(CSG_Formula &Formula, CSG_String sFormula, in
 	//-----------------------------------------------------
 	CSG_String	sUsed(Formula.Get_Used_Variables());
 
-	if( nValues < sUsed.Length() )
+	if( nValues < (int)sUsed.Length() )
 	{
 		Error_Fmt("%s (%d < %d)", _TL("The number of supplied grids is less than the number of variables in formula."), nValues, sUsed.Length());
 
 		return( false );
 	}
 
-	if( nValues > sUsed.Length() )
+	if( nValues > (int)sUsed.Length() )
 	{
 		Message_Add(CSG_String::Format("%s: %s (%d > %d)", _TL("Warning"), _TL("The number of supplied grids exceeds the number of variables in formula."), nValues, sUsed.Length()));
 	}
diff --git a/src/modules/grid/grid_calculus/Grid_Calculator.h b/src/modules/grid/grid_calculus/Grid_Calculator.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus/Grid_Geometric_Figures.cpp b/src/modules/grid/grid_calculus/Grid_Geometric_Figures.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus/Grid_Geometric_Figures.h b/src/modules/grid/grid_calculus/Grid_Geometric_Figures.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus/Grid_Normalise.cpp b/src/modules/grid/grid_calculus/Grid_Normalise.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus/Grid_Normalise.h b/src/modules/grid/grid_calculus/Grid_Normalise.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus/Grid_Plotter.cpp b/src/modules/grid/grid_calculus/Grid_Plotter.cpp
old mode 100644
new mode 100755
index 387186c..1895069
--- a/src/modules/grid/grid_calculus/Grid_Plotter.cpp
+++ b/src/modules/grid/grid_calculus/Grid_Plotter.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: Grid_Plotter.cpp 1921 2014-01-09 10:24:11Z oconrad $
+ * Version $Id: Grid_Plotter.cpp 2827 2016-02-25 11:33:14Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -51,85 +51,142 @@
 //                                                       //
 ///////////////////////////////////////////////////////////
 
-//---------------------------------------------------------
+///////////////////////////////////////////////////////////
+//														 //
+//														 //
+//														 //
+///////////////////////////////////////////////////////////
 
+//---------------------------------------------------------
 #include "Grid_Plotter.h"
 
+
+///////////////////////////////////////////////////////////
+//														 //
+//														 //
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
 CGrid_Plotter::CGrid_Plotter(void)
 {
-	Set_Name(_TL("Function"));
-	Set_Author(_TL("Copyrights (c) 2003 by Andre Ringeler"));
-	Set_Description(_TW(
-		"Generate a grid based on a functional expression.\n"
-		"The function interpreter uses an expression parser "
-		"that offers the folowing operators:\n\n"
-		"+ Addition\n"
-		"- Subtraction\n"
-		"* Multiplication\n"
-		"/ Division\n"
-		"^ power\n"
-		"sin(a)\n"
-		"cos(a)\n"
-		"tan(a)\n"
-		"asin(a)\n"
-		"acos(a)\n"
-		"atan(a)\n"
-		"atan2(a,b)\n"
-		"abs(a)\n"
-		"int(a)\n"
-		"sqrt(a)\n"
-		"int(a)\n"
-		"mod(a,b)\n"
-		"gt(a,b) returns 1 if a greater b\n"
-		"lt(a,b) returns 1 if a lower b\n"
-		"eq(a,b) returns 1 if a equal b\n"
-		"The Variablen are x and y\n"
-		"Example: sin(x*x+y*y)/(x*x+y*y)\n")
+	Set_Name	(_TL("Function Plotter"));
+
+	Set_Author	("A.Ringeler (c) 2003");
+
+	CSG_String	s(_TW(
+		"Generate a grid based on a functional expression. "
+		"The function interpreter uses an formula expression "
+		"parser that offers the following operators:\n"
+	));
+
+	s	+= CSG_Formula::Get_Help_Operators(true);
+
+	Set_Description(s);
+
+	//-----------------------------------------------------
+	CSG_Parameter	*pNode	= Parameters.Add_String(
+		NULL	, "FORMULA"	, _TL("Formula"),
+		_TL(""),
+		"sin(x*x + y*y)"
+	);
+
+	Parameters.Add_Range(
+		pNode	, "X_RANGE"	, _TL("X Range"),
+		_TL(""),
+		0.0, 10.0
 	);
 
-	Parameters.Add_Grid(	NULL, "RESULT"	, _TL("Function"), _TL(""), PARAMETER_OUTPUT);
+	Parameters.Add_Range(
+		pNode	, "Y_RANGE"	, _TL("Y Range"),
+		_TL(""),
+		0.0, 10.0
+	);
+
+	//-----------------------------------------------------
+	m_Grid_Target.Create(&Parameters, false, NULL, "TARGET_");
 
-	Parameters.Add_Value(	NULL, "XMIN"	, _TL("xmin")	, _TL(""), PARAMETER_TYPE_Double,-5);
-	Parameters.Add_Value(	NULL, "XMAX"	, _TL("xmax")	, _TL(""), PARAMETER_TYPE_Double,5);
-	Parameters.Add_Value(	NULL, "YMIN"	, _TL("ymin")	, _TL(""), PARAMETER_TYPE_Double,-5);
-	Parameters.Add_Value(	NULL, "YMAX"	, _TL("ymax")	, _TL(""), PARAMETER_TYPE_Double,5);
-	Parameters.Add_String(	NULL, "FORMUL"	, _TL("Formula")	, _TL(""), _TL("sin(x*x + y*y)"));
+	m_Grid_Target.Add_Grid("FUNCTION", _TL("Function"), false);
 }
 
+
+///////////////////////////////////////////////////////////
+//														 //
+///////////////////////////////////////////////////////////
+
 //---------------------------------------------------------
-CGrid_Plotter::~CGrid_Plotter(void)
-{}
+int CGrid_Plotter::On_Parameters_Enable(CSG_Parameters *pParameters, CSG_Parameter *pParameter)
+{
+	m_Grid_Target.On_Parameters_Enable(pParameters, pParameter);
+
+	return( CSG_Module::On_Parameters_Enable(pParameters, pParameter) );
+}
+
+
+///////////////////////////////////////////////////////////
+//														 //
+///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
 bool CGrid_Plotter::On_Execute(void)
 {
-	pResult		= Parameters("RESULT")->asGrid();
+	//-----------------------------------------------------
+	CSG_Formula	Formula;
+	
+	if( !Formula.Set_Formula(Parameters("FORMULA")->asString()) )
+	{
+		CSG_String	Message;
 
-	double xmin	= Parameters("XMIN")->asDouble();
-	double ymin	= Parameters("YMIN")->asDouble();
-	double xmax	= Parameters("XMAX")->asDouble();
-	double ymax	= Parameters("YMAX")->asDouble();
+		if( !Formula.Get_Error(Message) )
+		{
+			Message	= _TL("unknown errror parsing formula");
+		}
 
-	const SG_Char *formel  = Parameters("FORMUL")->asString();
+		Error_Set(Message);
 
-	CSG_Formula Formel;
+		return( false );
+	}
 
-	Formel.Set_Formula(formel);
+	//-----------------------------------------------------
+	CSG_Grid	*pFunction	= m_Grid_Target.Get_Grid("FUNCTION");
 
-	CSG_String Msg;
-	if (Formel.Get_Error(Msg))
+	if( !pFunction )
 	{
-		Message_Add(Msg);
-		
-		return false;
+		Error_Set(_TL("could not create target grid"));
+
+		return( false );
 	}
 
-	for(int y=0; y<Get_NY() && Set_Progress(y); y++)
-	for(int x=0; x<Get_NX(); x++)
+	//-----------------------------------------------------
+	double xMin		= Parameters("X_RANGE")->asRange()->Get_LoVal();
+	double xRange	= Parameters("X_RANGE")->asRange()->Get_HiVal() - xMin;
+
+	double yMin		= Parameters("Y_RANGE")->asRange()->Get_LoVal();
+	double yRange	= Parameters("Y_RANGE")->asRange()->Get_HiVal() - yMin;
+
+	//-----------------------------------------------------
+	for(int y=0; y<pFunction->Get_NY() && Set_Progress(y); y++)
 	{
-		pResult->Set_Value(x,y,Formel.Get_Value(SG_T("xy"),(xmax-xmin)*((double)x/Get_NX())+xmin,(ymax-ymin)*((double)y/Get_NY())+ymin)); 
+		double	py	= yMin + yRange * (y / (double)pFunction->Get_NY());
+
+		#pragma omp parallel for
+		for(int x=0; x<pFunction->Get_NX(); x++)
+		{
+			double	px	= xMin + xRange * (x / (double)pFunction->Get_NX());
+
+			pFunction->Set_Value(x, y, Formula.Get_Value(SG_T("xy"), px, py));
+		}
 	}
+
+	//-----------------------------------------------------
 	return( true );
 }
 
 
+///////////////////////////////////////////////////////////
+//														 //
+//														 //
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
diff --git a/src/modules/grid/grid_calculus/Grid_Plotter.h b/src/modules/grid/grid_calculus/Grid_Plotter.h
old mode 100644
new mode 100755
index a851f8d..b922a17
--- a/src/modules/grid/grid_calculus/Grid_Plotter.h
+++ b/src/modules/grid/grid_calculus/Grid_Plotter.h
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: Grid_Plotter.h 1921 2014-01-09 10:24:11Z oconrad $
+ * Version $Id: Grid_Plotter.h 2827 2016-02-25 11:33:14Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -75,24 +75,33 @@
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
-class CGrid_Plotter : public CSG_Module_Grid
+class CGrid_Plotter : public CSG_Module
 {
 public:
 	CGrid_Plotter(void);
-	virtual ~CGrid_Plotter(void);
 
-	virtual CSG_String		Get_MenuPath	(void)	{	return( _TL("R:Grid Generation") );	}
+	virtual CSG_String			Get_MenuPath			(void)	{	return( _TL("Grid Generation") );	}
 
 
 protected:
 
-	virtual bool			On_Execute		(void);
+	virtual int					On_Parameters_Enable	(CSG_Parameters *pParameters, CSG_Parameter *pParameter);
+
+	virtual bool				On_Execute				(void);
 
 
 private:
 	
-	CSG_Grid					*pInput, *pResult;
-	
+	CSG_Parameters_Grid_Target	m_Grid_Target;
+
 };
 
+
+///////////////////////////////////////////////////////////
+//														 //
+//														 //
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
 #endif // #ifndef HEADER_INCLUDED__Grid_Plotter_H
diff --git a/src/modules/grid/grid_calculus/Grid_Random_Field.cpp b/src/modules/grid/grid_calculus/Grid_Random_Field.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus/Grid_Random_Field.h b/src/modules/grid/grid_calculus/Grid_Random_Field.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus/Grid_Random_Terrain.cpp b/src/modules/grid/grid_calculus/Grid_Random_Terrain.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus/Grid_Random_Terrain.h b/src/modules/grid/grid_calculus/Grid_Random_Terrain.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus/Grid_Volume.cpp b/src/modules/grid/grid_calculus/Grid_Volume.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus/Grid_Volume.h b/src/modules/grid/grid_calculus/Grid_Volume.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus/MLB_Interface.cpp b/src/modules/grid/grid_calculus/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus/MLB_Interface.h b/src/modules/grid/grid_calculus/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus/Makefile.am b/src/modules/grid/grid_calculus/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus/gradient_cartes_polar.cpp b/src/modules/grid/grid_calculus/gradient_cartes_polar.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus/gradient_cartes_polar.h b/src/modules/grid/grid_calculus/gradient_cartes_polar.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus/grid_difference.cpp b/src/modules/grid/grid_calculus/grid_difference.cpp
old mode 100644
new mode 100755
index 948c936..1c5f29d
--- a/src/modules/grid/grid_calculus/grid_difference.cpp
+++ b/src/modules/grid/grid_calculus/grid_difference.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: grid_difference.cpp 1921 2014-01-09 10:24:11Z oconrad $
+ * Version $Id: grid_difference.cpp 2785 2016-02-12 12:21:50Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -73,7 +73,7 @@ CGrid_Difference::CGrid_Difference(void)
 {
 	Set_Name		(_TL("Grid Difference"));
 
-	Set_Author		(SG_T("O. Conrad (c) 2009"));
+	Set_Author		("O.Conrad (c) 2009");
 
 	Set_Description	(_TW(
 		""
@@ -106,18 +106,17 @@ CGrid_Difference::CGrid_Difference(void)
 //---------------------------------------------------------
 bool CGrid_Difference::On_Execute(void)
 {
-	CSG_Grid	*pA, *pB, *pC;
-
 	//-----------------------------------------------------
-	pA	= Parameters("A")->asGrid();
-	pB	= Parameters("B")->asGrid();
-	pC	= Parameters("C")->asGrid();
+	CSG_Grid	*pA	= Parameters("A")->asGrid();
+	CSG_Grid	*pB	= Parameters("B")->asGrid();
+	CSG_Grid	*pC	= Parameters("C")->asGrid();
 
-	DataObject_Set_Colors(pC, 100, SG_COLORS_RED_GREY_BLUE);
+	DataObject_Set_Colors(pC, 11, SG_COLORS_RED_GREY_BLUE);
 
 	//-----------------------------------------------------
 	for(int y=0; y<Get_NY() && Set_Progress(y); y++)
 	{
+		#pragma omp parallel for
 		for(int x=0; x<Get_NX(); x++)
 		{
 			if( pA->is_NoData(x, y) || pB->is_NoData(x, y) )
@@ -147,7 +146,7 @@ CGrid_Division::CGrid_Division(void)
 {
 	Set_Name		(_TL("Grid Division"));
 
-	Set_Author		(SG_T("O. Conrad (c) 2011"));
+	Set_Author		("O.Conrad (c) 2011");
 
 	Set_Description	(_TW(
 		""
@@ -180,18 +179,17 @@ CGrid_Division::CGrid_Division(void)
 //---------------------------------------------------------
 bool CGrid_Division::On_Execute(void)
 {
-	CSG_Grid	*pA, *pB, *pC;
-
 	//-----------------------------------------------------
-	pA	= Parameters("A")->asGrid();
-	pB	= Parameters("B")->asGrid();
-	pC	= Parameters("C")->asGrid();
+	CSG_Grid	*pA	= Parameters("A")->asGrid();
+	CSG_Grid	*pB	= Parameters("B")->asGrid();
+	CSG_Grid	*pC	= Parameters("C")->asGrid();
 
-	DataObject_Set_Colors(pC, 100, SG_COLORS_RED_GREY_BLUE);
+	DataObject_Set_Colors(pC, 11, SG_COLORS_RED_GREY_BLUE);
 
 	//-----------------------------------------------------
 	for(int y=0; y<Get_NY() && Set_Progress(y); y++)
 	{
+		#pragma omp parallel for
 		for(int x=0; x<Get_NX(); x++)
 		{
 			if( pA->is_NoData(x, y) || pB->is_NoData(x, y) || pB->asDouble(x, y) == 0.0 )
@@ -221,7 +219,7 @@ CGrids_Sum::CGrids_Sum(void)
 {
 	Set_Name		(_TL("Grids Sum"));
 
-	Set_Author		(SG_T("O. Conrad (c) 2010"));
+	Set_Author		("O.Conrad (c) 2010");
 
 	Set_Description	(_TW(
 		"Cellwise addition of grid values."
@@ -238,6 +236,12 @@ CGrids_Sum::CGrids_Sum(void)
 		_TL(""),
 		PARAMETER_OUTPUT
 	);
+
+	Parameters.Add_Value(
+		NULL	, "NODATA"	, _TL("Count No Data as Zero"),
+		_TL(""),
+		PARAMETER_TYPE_Bool, false
+	);
 }
 
 
@@ -248,14 +252,9 @@ CGrids_Sum::CGrids_Sum(void)
 //---------------------------------------------------------
 bool CGrids_Sum::On_Execute(void)
 {
-	CSG_Grid				*pResult;
-	CSG_Parameter_Grid_List	*pGrids;
-
 	//-----------------------------------------------------
-	pGrids	= Parameters("GRIDS")	->asGridList();
-	pResult	= Parameters("RESULT")	->asGrid();
+	CSG_Parameter_Grid_List	*pGrids	= Parameters("GRIDS" )->asGridList();
 
-	//-----------------------------------------------------
 	if( pGrids->Get_Count() < 1 )
 	{
 		Error_Set(_TL("no grid in list"));
@@ -264,8 +263,14 @@ bool CGrids_Sum::On_Execute(void)
 	}
 
 	//-----------------------------------------------------
+	CSG_Grid	*pResult	= Parameters("RESULT")->asGrid();
+
+	bool	bNoData	= Parameters("NODATA")->asBool();
+
+	//-----------------------------------------------------
 	for(int y=0; y<Get_NY() && Set_Progress(y); y++)
 	{
+		#pragma omp parallel for
 		for(int x=0; x<Get_NX(); x++)
 		{
 			int		n	= 0;
@@ -280,7 +285,7 @@ bool CGrids_Sum::On_Execute(void)
 				}
 			}
 
-			if( n == pGrids->Get_Count() )
+			if( bNoData ? n > 0 : n == pGrids->Get_Count() )
 			{
 				pResult->Set_Value(x, y, d);
 			}
@@ -307,7 +312,7 @@ CGrids_Product::CGrids_Product(void)
 {
 	Set_Name		(_TL("Grids Product"));
 
-	Set_Author		(SG_T("O. Conrad (c) 2010"));
+	Set_Author		("O.Conrad (c) 2010");
 
 	Set_Description	(_TW(
 		"Cellwise multiplication of grid values."
@@ -324,6 +329,12 @@ CGrids_Product::CGrids_Product(void)
 		_TL(""),
 		PARAMETER_OUTPUT
 	);
+
+	Parameters.Add_Value(
+		NULL	, "NODATA"	, _TL("Count No Data as Zero"),
+		_TL(""),
+		PARAMETER_TYPE_Bool, false
+	);
 }
 
 
@@ -334,14 +345,9 @@ CGrids_Product::CGrids_Product(void)
 //---------------------------------------------------------
 bool CGrids_Product::On_Execute(void)
 {
-	CSG_Grid				*pResult;
-	CSG_Parameter_Grid_List	*pGrids;
-
 	//-----------------------------------------------------
-	pGrids	= Parameters("GRIDS")	->asGridList();
-	pResult	= Parameters("RESULT")	->asGrid();
+	CSG_Parameter_Grid_List	*pGrids	= Parameters("GRIDS" )->asGridList();
 
-	//-----------------------------------------------------
 	if( pGrids->Get_Count() < 1 )
 	{
 		Error_Set(_TL("no grid in list"));
@@ -350,8 +356,14 @@ bool CGrids_Product::On_Execute(void)
 	}
 
 	//-----------------------------------------------------
+	CSG_Grid	*pResult	= Parameters("RESULT")->asGrid();
+
+	bool	bNoData	= Parameters("NODATA")->asBool();
+
+	//-----------------------------------------------------
 	for(int y=0; y<Get_NY() && Set_Progress(y); y++)
 	{
+		#pragma omp parallel for
 		for(int x=0; x<Get_NX(); x++)
 		{
 			int		n	= 0;
@@ -372,7 +384,7 @@ bool CGrids_Product::On_Execute(void)
 				}
 			}
 
-			if( n == pGrids->Get_Count() )
+			if( bNoData ? n > 0 : n == pGrids->Get_Count() )
 			{
 				pResult->Set_Value(x, y, d);
 			}
diff --git a/src/modules/grid/grid_calculus/grid_difference.h b/src/modules/grid/grid_calculus/grid_difference.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus/grid_metric_conversion.cpp b/src/modules/grid/grid_calculus/grid_metric_conversion.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus/grid_metric_conversion.h b/src/modules/grid/grid_calculus/grid_metric_conversion.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus/kff_synth.cpp b/src/modules/grid/grid_calculus/kff_synth.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus/kff_synth.h b/src/modules/grid/grid_calculus/kff_synth.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus_bsl/MLB_Interface.cpp b/src/modules/grid/grid_calculus_bsl/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus_bsl/MLB_Interface.h b/src/modules/grid/grid_calculus_bsl/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus_bsl/Makefile.am b/src/modules/grid/grid_calculus_bsl/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus_bsl/ausdruck.cpp b/src/modules/grid/grid_calculus_bsl/ausdruck.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus_bsl/ausdruck.h b/src/modules/grid/grid_calculus_bsl/ausdruck.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus_bsl/auswert_anweisung.cpp b/src/modules/grid/grid_calculus_bsl/auswert_anweisung.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus_bsl/auswert_anweisung.h b/src/modules/grid/grid_calculus_bsl/auswert_anweisung.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus_bsl/auswert_foreach.cpp b/src/modules/grid/grid_calculus_bsl/auswert_foreach.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus_bsl/auswert_foreach.h b/src/modules/grid/grid_calculus_bsl/auswert_foreach.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus_bsl/auswert_if.cpp b/src/modules/grid/grid_calculus_bsl/auswert_if.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus_bsl/auswert_if.h b/src/modules/grid/grid_calculus_bsl/auswert_if.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus_bsl/auswert_zuweisung.cpp b/src/modules/grid/grid_calculus_bsl/auswert_zuweisung.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus_bsl/auswert_zuweisung.h b/src/modules/grid/grid_calculus_bsl/auswert_zuweisung.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus_bsl/basistypen.cpp b/src/modules/grid/grid_calculus_bsl/basistypen.cpp
old mode 100644
new mode 100755
index 98002e0..1929f76
--- a/src/modules/grid/grid_calculus_bsl/basistypen.cpp
+++ b/src/modules/grid/grid_calculus_bsl/basistypen.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: basistypen.cpp 2387 2015-02-01 22:26:22Z oconrad $
+ * Version $Id: basistypen.cpp 2807 2016-02-21 19:32:40Z johanvdw $
  *********************************************************/
 
 #include <iostream>
@@ -317,7 +317,7 @@ void ParseVars(int& zeile, int& pos)
 					}
 					else if (subz[l-1] == ')')
 					{
-						printf("loadig files not suported");
+						printf("loading files not supported");
 						return;
 						/*
 						int posk;
diff --git a/src/modules/grid/grid_calculus_bsl/basistypen.h b/src/modules/grid/grid_calculus_bsl/basistypen.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus_bsl/bedingung.cpp b/src/modules/grid/grid_calculus_bsl/bedingung.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus_bsl/bedingung.h b/src/modules/grid/grid_calculus_bsl/bedingung.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus_bsl/bsl_interpreter.cpp b/src/modules/grid/grid_calculus_bsl/bsl_interpreter.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus_bsl/bsl_interpreter.h b/src/modules/grid/grid_calculus_bsl/bsl_interpreter.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus_bsl/diverses.cpp b/src/modules/grid/grid_calculus_bsl/diverses.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus_bsl/diverses.h b/src/modules/grid/grid_calculus_bsl/diverses.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus_bsl/foreach.cpp b/src/modules/grid/grid_calculus_bsl/foreach.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus_bsl/foreach.h b/src/modules/grid/grid_calculus_bsl/foreach.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus_bsl/funktion.cpp b/src/modules/grid/grid_calculus_bsl/funktion.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus_bsl/funktion.h b/src/modules/grid/grid_calculus_bsl/funktion.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus_bsl/funktion_numerisch.h b/src/modules/grid/grid_calculus_bsl/funktion_numerisch.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus_bsl/funktion_statistisch.h b/src/modules/grid/grid_calculus_bsl/funktion_statistisch.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus_bsl/gr_def.h b/src/modules/grid/grid_calculus_bsl/gr_def.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus_bsl/gr_syst.h b/src/modules/grid/grid_calculus_bsl/gr_syst.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus_bsl/grid_bsl.cpp b/src/modules/grid/grid_calculus_bsl/grid_bsl.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus_bsl/grid_bsl.h b/src/modules/grid/grid_calculus_bsl/grid_bsl.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus_bsl/interpolation.cpp b/src/modules/grid/grid_calculus_bsl/interpolation.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus_bsl/interpolation.h b/src/modules/grid/grid_calculus_bsl/interpolation.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus_bsl/pars_all.cpp b/src/modules/grid/grid_calculus_bsl/pars_all.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus_bsl/pars_all.h b/src/modules/grid/grid_calculus_bsl/pars_all.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus_bsl/vector.cpp b/src/modules/grid/grid_calculus_bsl/vector.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus_bsl/vector.h b/src/modules/grid/grid_calculus_bsl/vector.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus_bsl/zuweisung.cpp b/src/modules/grid/grid_calculus_bsl/zuweisung.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_calculus_bsl/zuweisung.h b/src/modules/grid/grid_calculus_bsl/zuweisung.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_filter/Filter.cpp b/src/modules/grid/grid_filter/Filter.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_filter/Filter.h b/src/modules/grid/grid_filter/Filter.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_filter/FilterClumps.cpp b/src/modules/grid/grid_filter/FilterClumps.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_filter/FilterClumps.h b/src/modules/grid/grid_filter/FilterClumps.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_filter/Filter_3x3.cpp b/src/modules/grid/grid_filter/Filter_3x3.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_filter/Filter_3x3.h b/src/modules/grid/grid_filter/Filter_3x3.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_filter/Filter_Gauss.cpp b/src/modules/grid/grid_filter/Filter_Gauss.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_filter/Filter_Gauss.h b/src/modules/grid/grid_filter/Filter_Gauss.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_filter/Filter_LoG.cpp b/src/modules/grid/grid_filter/Filter_LoG.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_filter/Filter_LoG.h b/src/modules/grid/grid_filter/Filter_LoG.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_filter/Filter_Majority.cpp b/src/modules/grid/grid_filter/Filter_Majority.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_filter/Filter_Majority.h b/src/modules/grid/grid_filter/Filter_Majority.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_filter/Filter_Morphology.cpp b/src/modules/grid/grid_filter/Filter_Morphology.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_filter/Filter_Morphology.h b/src/modules/grid/grid_filter/Filter_Morphology.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_filter/Filter_Multi_Dir_Lee.cpp b/src/modules/grid/grid_filter/Filter_Multi_Dir_Lee.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_filter/Filter_Multi_Dir_Lee.h b/src/modules/grid/grid_filter/Filter_Multi_Dir_Lee.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_filter/Filter_Rank.cpp b/src/modules/grid/grid_filter/Filter_Rank.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_filter/Filter_Rank.h b/src/modules/grid/grid_filter/Filter_Rank.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_filter/Filter_Resample.cpp b/src/modules/grid/grid_filter/Filter_Resample.cpp
old mode 100644
new mode 100755
index af8fb7b..8d8b7bb
--- a/src/modules/grid/grid_filter/Filter_Resample.cpp
+++ b/src/modules/grid/grid_filter/Filter_Resample.cpp
@@ -148,7 +148,7 @@ bool CFilter_Resample::On_Execute(void)
 	//-----------------------------------------------------
 	CSG_Grid	Grid(CSG_Grid_System(Cellsize, Get_XMin(), Get_YMin(), Get_XMax(), Get_YMax()), SG_DATATYPE_Float);
 
-	Grid.Assign(pGrid, GRID_INTERPOLATION_Mean_Cells);
+	Grid.Assign(pGrid, GRID_RESAMPLING_Mean_Cells);
 
 	//-----------------------------------------------------
 	pLoPass->Set_Name(CSG_String::Format(SG_T("%s [%s]"), pGrid->Get_Name(), _TL("Low Pass")));
diff --git a/src/modules/grid/grid_filter/Filter_Resample.h b/src/modules/grid/grid_filter/Filter_Resample.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_filter/Filter_Sieve.cpp b/src/modules/grid/grid_filter/Filter_Sieve.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_filter/Filter_Sieve.h b/src/modules/grid/grid_filter/Filter_Sieve.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_filter/Filter_Terrain_SlopeBased.cpp b/src/modules/grid/grid_filter/Filter_Terrain_SlopeBased.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_filter/Filter_Terrain_SlopeBased.h b/src/modules/grid/grid_filter/Filter_Terrain_SlopeBased.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_filter/Filter_Morphology.cpp b/src/modules/grid/grid_filter/Filter_in_Polygon.cpp
old mode 100644
new mode 100755
similarity index 59%
copy from src/modules/grid/grid_filter/Filter_Morphology.cpp
copy to src/modules/grid/grid_filter/Filter_in_Polygon.cpp
index e9431a4..4c465be
--- a/src/modules/grid/grid_filter/Filter_Morphology.cpp
+++ b/src/modules/grid/grid_filter/Filter_in_Polygon.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: Filter_Morphology.cpp 1921 2014-01-09 10:24:11Z oconrad $
+ * Version $Id$
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -13,9 +13,9 @@
 //                                                       //
 //-------------------------------------------------------//
 //                                                       //
-//                 Filter_Morphology.cpp                 //
+//                      Filter.cpp                       //
 //                                                       //
-//                 Copyright (C) 2010 by                 //
+//                 Copyright (C) 2003 by                 //
 //                      Olaf Conrad                      //
 //                                                       //
 //-------------------------------------------------------//
@@ -44,7 +44,9 @@
 //                                                       //
 //    contact:    Olaf Conrad                            //
 //                Institute of Geography                 //
-//                University of Hamburg                  //
+//                University of Goettingen               //
+//                Goldschmidtstr. 5                      //
+//                37077 Goettingen                       //
 //                Germany                                //
 //                                                       //
 ///////////////////////////////////////////////////////////
@@ -59,7 +61,7 @@
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
-#include "Filter_Morphology.h"
+#include "Filter_in_Polygon.h"
 
 
 ///////////////////////////////////////////////////////////
@@ -69,17 +71,17 @@
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
-CFilter_Morphology::CFilter_Morphology(void)
+CFilter_in_Polygon::CFilter_in_Polygon(void)
 {
 	//-----------------------------------------------------
 	// 1. Info...
 
-	Set_Name		(_TL("Morphological Filter"));
+	Set_Name		(_TL("Simple Filter within shapes"));
 
-	Set_Author		(SG_T("O.Conrad (c) 2010"));
+	Set_Author		(SG_T("Johan Van de Wauw, 2015"));
 
 	Set_Description	(_TW(
-		"Morphological filter for grids."
+		"Simple standard filters for grids, evaluation within shapes."
 	));
 
 
@@ -98,6 +100,13 @@ CFilter_Morphology::CFilter_Morphology(void)
 		PARAMETER_OUTPUT_OPTIONAL
 	);
 
+	Parameters.Add_Shapes(
+		NULL, "SHAPES",_TL("Boundaries"),
+		_TL("Boundaries: the simple filter will only operate on grid cells which fall in the same shape"),
+		PARAMETER_INPUT,
+		SHAPE_TYPE_Polygon
+		);
+
 	Parameters.Add_Choice(
 		NULL, "MODE"		, _TL("Search Mode"),
 		_TL(""),
@@ -107,21 +116,20 @@ CFilter_Morphology::CFilter_Morphology(void)
 		), 1
 	);
 
-	Parameters.Add_Value(
-		NULL, "RADIUS"		, _TL("Radius"),
+	Parameters.Add_Choice(
+		NULL, "METHOD"		, _TL("Filter"),
 		_TL(""),
-		PARAMETER_TYPE_Int, 1, 1, true
+		CSG_String::Format(SG_T("%s|%s|%s|"),
+			_TL("Smooth"),
+			_TL("Sharpen"),
+			_TL("Edge")
+		), 0
 	);
 
-	Parameters.Add_Choice(
-		NULL, "METHOD"		, _TL("Method"),
+	Parameters.Add_Value(
+		NULL, "RADIUS"		, _TL("Radius"),
 		_TL(""),
-		CSG_String::Format(SG_T("%s|%s|%s|%s|"),
-			_TL("Dilation"),
-			_TL("Erosion"),
-			_TL("Opening"),
-			_TL("Closing")
-		), 0
+		PARAMETER_TYPE_Int, 1, 1, true
 	);
 }
 
@@ -133,36 +141,28 @@ CFilter_Morphology::CFilter_Morphology(void)
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
-bool CFilter_Morphology::On_Execute(void)
+bool CFilter_in_Polygon::On_Execute(void)
 {
-	int			x, y, ix, iy, Method;
-	double		Minimum, Maximum;
-	CSG_Grid	*pResult, Result;
+	int			Mode, Radius, Method;
+	double		Mean;
+	CSG_Grid	*pResult;
+	
 
 	//-----------------------------------------------------
 	m_pInput	= Parameters("INPUT")	->asGrid();
 	pResult		= Parameters("RESULT")	->asGrid();
-	m_Radius	= Parameters("RADIUS")	->asInt();
+	Radius		= Parameters("RADIUS")	->asInt();
+	Mode		= Parameters("MODE")	->asInt();
 	Method		= Parameters("METHOD")	->asInt();
+	Boundaries  = Parameters("SHAPES")  ->asShapes();
+
+
 
-	//-----------------------------------------------------
-	m_Kernel.Create(SG_DATATYPE_Byte, 1 + 2 * m_Radius, 1 + 2 * m_Radius);
-	m_Kernel.Set_NoData_Value(0.0);
-	m_Kernel.Assign(1.0);
-	m_Kernel.Set_Value(m_Radius, m_Radius, 0.0);
 
-	if( Parameters("MODE")->asInt() == 1 )
+	switch( Mode )
 	{
-		for(y=-m_Radius, iy=0; y<=m_Radius; y++, iy++)
-		{
-			for(x=-m_Radius, ix=0; x<=m_Radius; x++, ix++)
-			{
-				if( x*x + y*y > m_Radius*m_Radius )
-				{
-					m_Kernel.Set_Value(ix, iy, 0.0);
-				}
-			}
-		}
+	case 0:								break;
+	case 1:	m_Radius.Create(Radius);	break;
 	}
 
 	//-----------------------------------------------------
@@ -172,48 +172,69 @@ bool CFilter_Morphology::On_Execute(void)
 	}
 	else
 	{
-		pResult->Set_Name(CSG_String::Format(SG_T("%s [%s]"), m_pInput->Get_Name(), Parameters("METHOD")->asString()));
+		pResult->Set_Name(CSG_String::Format(SG_T("%s [%s]"), m_pInput->Get_Name(), _TL("Filter")));
 
 		pResult->Set_NoData_Value(m_pInput->Get_NoData_Value());
 	}
 
-	//-----------------------------------------------------
-	if( Method == 2 || Method == 3 )
-	{
-		Result.Create(*Get_System());
 
-		for(y=0; y<Get_NY() && Set_Progress(y); y++)
-		{
-			for(x=0; x<Get_NX(); x++)
-			{
-				if( Get_Range(x, y, Minimum, Maximum) )
-				{
-					switch( Method )
-					{
-					case 2:	Result.Set_Value(x, y, Minimum);	break;	// Opening = Erosion + Dilation
-					case 3:	Result.Set_Value(x, y, Maximum);	break;	// Closing = Dilation + Erosion
-					}
-				}
-				else
-				{
-					Result.Set_NoData(x, y);
-				}
-			}
-		}
 
-		m_pInput	= &Result;
+		Process_Set_Text(_TL("Initializing Fields"));
+
+	int m_nFields	= Boundaries->Get_Count();
+
+	m_Fields.Create(*Get_System(), m_nFields < pow(2.0, 16.0) - 1.0 ? SG_DATATYPE_Word : SG_DATATYPE_DWord);
+	m_Fields.Set_NoData_Value(m_nFields);
+	m_Fields.Assign_NoData();
+
+	//-----------------------------------------------------
+	for(int iField=0; iField<Boundaries->Get_Count() && Set_Progress(iField, Boundaries->Get_Count()); iField++)
+	{
+		CSG_Shape_Polygon	*pField	= (CSG_Shape_Polygon *)Boundaries->Get_Shape(iField);
+
+		int	xMin	= Get_System()->Get_xWorld_to_Grid(pField->Get_Extent().Get_XMin()) - 1; if( xMin <  0        ) xMin = 0;
+		int	xMax	= Get_System()->Get_xWorld_to_Grid(pField->Get_Extent().Get_XMax()) + 1; if( xMax >= Get_NX() ) xMax = Get_NX() - 1;
+		int	yMin	= Get_System()->Get_yWorld_to_Grid(pField->Get_Extent().Get_YMin()) - 1; if( yMin <  0        ) yMin = 0;
+		int	yMax	= Get_System()->Get_yWorld_to_Grid(pField->Get_Extent().Get_YMax()) + 1; if( yMax >= Get_NY() ) yMax = Get_NY() - 1;
+
+		for(int y=yMin; y<=yMax; y++)
+		{
+			for(int x=xMin; x<=xMax; x++)
+			{
+				if( m_pInput->is_InGrid(x, y) && pField->Contains(Get_System()->Get_Grid_to_World(x, y)) )
+				{
+					m_Fields.Set_Value(x, y, iField);
+				}
+			}
+		}
 	}
 
-	for(y=0; y<Get_NY() && Set_Progress(y); y++)
+	//-----------------------------------------------------
+	for(int y=0; y<Get_NY() && Set_Progress(y); y++)
 	{
-		for(x=0; x<Get_NX(); x++)
+		for(int x=0; x<Get_NX(); x++)
 		{
-			if( Get_Range(x, y, Minimum, Maximum) )
+			if( m_pInput->is_InGrid(x, y) )
 			{
+				switch( Mode )
+				{
+				case 0:		Mean	= Get_Mean_Square(x, y, Radius);	break;
+				case 1:		Mean	= Get_Mean_Circle(x, y);			break;
+				}
+
 				switch( Method )
 				{
-				case 0: case 2:	pResult->Set_Value(x, y, Maximum);	break;	// Dilation
-				case 1: case 3:	pResult->Set_Value(x, y, Minimum);	break;	// Erosion
+				case 0:	default:	// Smooth...
+					pResult->Set_Value(x, y, Mean);
+					break;
+
+				case 1:				// Sharpen...
+					pResult->Set_Value(x, y, m_pInput->asDouble(x, y) + (m_pInput->asDouble(x, y) - Mean));
+					break;
+
+				case 2:				// Edge...
+					pResult->Set_Value(x, y, m_pInput->asDouble(x, y) - Mean);
+					break;
 				}
 			}
 			else
@@ -233,7 +254,7 @@ bool CFilter_Morphology::On_Execute(void)
 		DataObject_Update(m_pInput);
 	}
 
-	m_Kernel.Destroy();
+	m_Radius.Destroy();
 
 	return( true );
 }
@@ -246,36 +267,46 @@ bool CFilter_Morphology::On_Execute(void)
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
-bool CFilter_Morphology::Get_Range(int x, int y, double &Minimum, double &Maximum)
+double CFilter_in_Polygon::Get_Mean_Square(int x, int y, int Radius)
 {
-	if( !m_pInput->is_InGrid(x, y) )
+	int		ix, iy, n;
+	double	s;
+
+	int shapeID = m_Fields.asInt(x,y);
+	for(n=0, s=0.0, iy=y-Radius; iy<=y+Radius; iy++)
 	{
-		return( false );
+		for(ix=x-Radius; ix<=x+Radius; ix++)
+		{
+			if( m_pInput->is_InGrid(ix, iy) && shapeID==m_Fields.asInt(ix,iy))
+			{
+				s	+= m_pInput->asDouble(ix, iy);
+				n	++;
+			}
+		}
 	}
 
-	Minimum	= Maximum	= m_pInput->asDouble(x, y);
+	return( n > 0 ? s / n : m_pInput->Get_NoData_Value() );
+}
+
+//---------------------------------------------------------
+double CFilter_in_Polygon::Get_Mean_Circle(int x, int y)
+{
+	int		i, ix, iy, n;
+	double	s;
 
-	for(int iy=0, jy=y-m_Radius; iy<m_Kernel.Get_NY(); iy++, jy++)
+	int shapeID = m_Fields.asInt(x,y);
+	for(n=0, s=0.0, i=0; i<m_Radius.Get_nPoints(); i++)
 	{
-		for(int ix=0, jx=x-m_Radius; ix<m_Kernel.Get_NX(); ix++, jx++)
-		{
-			if( m_Kernel.asByte(ix, iy) && m_pInput->is_InGrid(jx, jy) )
-			{
-				double	z	= m_pInput->asDouble(jx, jy);
+		m_Radius.Get_Point(i, x, y, ix, iy);
 
-				if( Minimum > z )
-				{
-					Minimum	= z;
-				}
-				else if( Maximum < z )
-				{
-					Maximum	= z;
-				}
-			}
+		if( m_pInput->is_InGrid(ix, iy)  && shapeID==m_Fields.asInt(ix,iy))
+		{
+			s	+= m_pInput->asDouble(ix, iy);
+			n	++;
 		}
 	}
 
-	return( true );
+	return( n > 0 ? s / n : m_pInput->Get_NoData_Value() );
 }
 
 
diff --git a/src/modules/grid/grid_tools/Grid_Value_Replace.h b/src/modules/grid/grid_filter/Filter_in_Polygon.h
old mode 100644
new mode 100755
similarity index 85%
copy from src/modules/grid/grid_tools/Grid_Value_Replace.h
copy to src/modules/grid/grid_filter/Filter_in_Polygon.h
index 9cd59f5..f657c61
--- a/src/modules/grid/grid_tools/Grid_Value_Replace.h
+++ b/src/modules/grid/grid_filter/Filter_in_Polygon.h
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: Grid_Value_Replace.h 1921 2014-01-09 10:24:11Z oconrad $
+ * Version $Id$
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -9,14 +9,14 @@
 //      System for Automated Geoscientific Analyses      //
 //                                                       //
 //                    Module Library:                    //
-//                      Grid_Tools                       //
+//                Grid_Filter_in_Polygon                 //
 //                                                       //
 //-------------------------------------------------------//
 //                                                       //
-//                 Grid_Value_Replace.h                  //
+//                 Filter_in_Polygon.h                   //
 //                                                       //
-//                 Copyright (C) 2003 by                 //
-//                      Olaf Conrad                      //
+//                 Copyright (C) 2015 by                 //
+//                  Johan Van de Wauw                    //
 //                                                       //
 //-------------------------------------------------------//
 //                                                       //
@@ -61,8 +61,8 @@
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
-#ifndef HEADER_INCLUDED__Grid_Value_Replace_H
-#define HEADER_INCLUDED__Grid_Value_Replace_H
+#ifndef HEADER_INCLUDED__Filter_in_Polygon_H
+#define HEADER_INCLUDED__Filter_in_Polygon_H
 
 
 ///////////////////////////////////////////////////////////
@@ -82,13 +82,10 @@
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
-class CGrid_Value_Replace : public CSG_Module_Grid  
+class CFilter_in_Polygon : public CSG_Module_Grid
 {
 public:
-	CGrid_Value_Replace(void);
-	virtual ~CGrid_Value_Replace(void);
-
-	virtual CSG_String		Get_MenuPath	(void)	{	return( _TL("A:Grid|Values") );	}
+	CFilter_in_Polygon(void);
 
 
 protected:
@@ -98,6 +95,16 @@ protected:
 
 private:
 
+	CSG_Grid_Radius			m_Radius;
+
+	CSG_Grid				*m_pInput, m_Fields;
+
+	CSG_Shapes				*Boundaries;
+
+
+	double					Get_Mean_Square	(int x, int y, int Radius);
+	double					Get_Mean_Circle	(int x, int y);
+
 };
 
 
@@ -108,4 +115,4 @@ private:
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
-#endif // #ifndef HEADER_INCLUDED__Grid_Value_Replace_H
+#endif // #ifndef HEADER_INCLUDED__Filter_in_Polygon_H
diff --git a/src/modules/grid/grid_filter/MLB_Interface.cpp b/src/modules/grid/grid_filter/MLB_Interface.cpp
old mode 100644
new mode 100755
index 1436651..1cb1d19
--- a/src/modules/grid/grid_filter/MLB_Interface.cpp
+++ b/src/modules/grid/grid_filter/MLB_Interface.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: MLB_Interface.cpp 2622 2015-09-30 13:17:47Z oconrad $
+ * Version $Id: MLB_Interface.cpp 2815 2016-02-22 22:47:52Z johanvdw $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -114,6 +114,7 @@ CSG_String Get_Info(int i)
 #include "connect_analysis.h"
 #include "Filter_Sieve.h"
 #include "wombling.h"
+#include "Filter_in_Polygon.h"
 
 
 //---------------------------------------------------------
@@ -141,8 +142,9 @@ CSG_Module *		Create_Module(int i)
 	case 15:	return( new CFilter_Sieve );
 	case 16:	return( new CWombling );
 	case 17:	return( new CWombling_MultiFeature );
+	case 18:	return( new CFilter_in_Polygon );
 
-	case 18:	return( NULL );
+	case 19:	return( NULL );
 	default:	return( MLB_INTERFACE_SKIP_MODULE );
 	}
 }
diff --git a/src/modules/grid/grid_filter/MLB_Interface.h b/src/modules/grid/grid_filter/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_filter/Makefile.am b/src/modules/grid/grid_filter/Makefile.am
old mode 100644
new mode 100755
index 594bc7a..3a1e508
--- a/src/modules/grid/grid_filter/Makefile.am
+++ b/src/modules/grid/grid_filter/Makefile.am
@@ -1,5 +1,5 @@
 #
-# $Id: Makefile.am 2579 2015-09-16 18:48:35Z oconrad $
+# $Id: Makefile.am 2815 2016-02-22 22:47:52Z johanvdw $
 #
 if DEBUG
 DBGFLAGS = -g -DDEBUG
@@ -49,6 +49,8 @@ Filter_Resample.h\
 Filter_Sieve.h\
 Filter_Terrain_SlopeBased.h\
 FilterClumps.h\
+Filter_in_Polygon.cpp\
+Filter_in_Polygon.h\
 wombling.h\
 geomrec.h\
 ./geodesic_morph_rec/bin_geovinc.h\
diff --git a/src/modules/grid/grid_filter/Makefile.in b/src/modules/grid/grid_filter/Makefile.in
index 2aec985..5d38026 100644
--- a/src/modules/grid/grid_filter/Makefile.in
+++ b/src/modules/grid/grid_filter/Makefile.in
@@ -137,7 +137,7 @@ am_libgrid_filter_la_OBJECTS = bin_erosion_reconst.lo \
 	./geodesic_morph_rec/combcontour.lo \
 	./geodesic_morph_rec/geovinc.lo \
 	./geodesic_morph_rec/storeorg.lo mesh_denoise.lo \
-	MLB_Interface.lo
+	MLB_Interface.lo Filter_in_Polygon.lo
 libgrid_filter_la_OBJECTS = $(am_libgrid_filter_la_OBJECTS)
 AM_V_lt = $(am__v_lt_ at AM_V@)
 am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
@@ -371,7 +371,7 @@ top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 
 #
-# $Id: Makefile.am 2579 2015-09-16 18:48:35Z oconrad $
+# $Id: Makefile.am 2815 2016-02-22 22:47:52Z johanvdw $
 #
 @DEBUG_TRUE at DBGFLAGS = -g -DDEBUG
 @SAGA_UNICODE_TRUE at UC_DEFS = -D_SAGA_UNICODE
@@ -417,6 +417,8 @@ Filter_Resample.h\
 Filter_Sieve.h\
 Filter_Terrain_SlopeBased.h\
 FilterClumps.h\
+Filter_in_Polygon.cpp\
+Filter_in_Polygon.h\
 wombling.h\
 geomrec.h\
 ./geodesic_morph_rec/bin_geovinc.h\
@@ -537,6 +539,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Filter_Resample.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Filter_Sieve.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Filter_Terrain_SlopeBased.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Filter_in_Polygon.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/MLB_Interface.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/bin_erosion_reconst.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/connect_analysis.Plo at am__quote@
diff --git a/src/modules/grid/grid_filter/bin_erosion_reconst.cpp b/src/modules/grid/grid_filter/bin_erosion_reconst.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_filter/bin_erosion_reconst.h b/src/modules/grid/grid_filter/bin_erosion_reconst.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_filter/connect_analysis.cpp b/src/modules/grid/grid_filter/connect_analysis.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_filter/connect_analysis.h b/src/modules/grid/grid_filter/connect_analysis.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_filter/geodesic_morph_rec/bin_geovinc.c b/src/modules/grid/grid_filter/geodesic_morph_rec/bin_geovinc.c
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_filter/geodesic_morph_rec/bin_geovinc.h b/src/modules/grid/grid_filter/geodesic_morph_rec/bin_geovinc.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_filter/geodesic_morph_rec/combcontour.c b/src/modules/grid/grid_filter/geodesic_morph_rec/combcontour.c
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_filter/geodesic_morph_rec/combcontour.h b/src/modules/grid/grid_filter/geodesic_morph_rec/combcontour.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_filter/geodesic_morph_rec/errfunc.c b/src/modules/grid/grid_filter/geodesic_morph_rec/errfunc.c
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_filter/geodesic_morph_rec/errfunc.h b/src/modules/grid/grid_filter/geodesic_morph_rec/errfunc.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_filter/geodesic_morph_rec/geovinc.c b/src/modules/grid/grid_filter/geodesic_morph_rec/geovinc.c
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_filter/geodesic_morph_rec/geovinc.h b/src/modules/grid/grid_filter/geodesic_morph_rec/geovinc.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_filter/geodesic_morph_rec/listfuncs.inc b/src/modules/grid/grid_filter/geodesic_morph_rec/listfuncs.inc
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_filter/geodesic_morph_rec/rho.h b/src/modules/grid/grid_filter/geodesic_morph_rec/rho.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_filter/geodesic_morph_rec/spezfunc.c b/src/modules/grid/grid_filter/geodesic_morph_rec/spezfunc.c
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_filter/geodesic_morph_rec/spezfunc.h b/src/modules/grid/grid_filter/geodesic_morph_rec/spezfunc.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_filter/geodesic_morph_rec/storeorg.c b/src/modules/grid/grid_filter/geodesic_morph_rec/storeorg.c
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_filter/geodesic_morph_rec/storeorg.h b/src/modules/grid/grid_filter/geodesic_morph_rec/storeorg.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_filter/geomrec.cpp b/src/modules/grid/grid_filter/geomrec.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_filter/geomrec.h b/src/modules/grid/grid_filter/geomrec.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_filter/mesh_denoise.cpp b/src/modules/grid/grid_filter/mesh_denoise.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_filter/mesh_denoise.h b/src/modules/grid/grid_filter/mesh_denoise.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_filter/wombling.cpp b/src/modules/grid/grid_filter/wombling.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_filter/wombling.h b/src/modules/grid/grid_filter/wombling.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_gridding/Interpolation.cpp b/src/modules/grid/grid_gridding/Interpolation.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_gridding/Interpolation.h b/src/modules/grid/grid_gridding/Interpolation.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_gridding/Interpolation_AngularDistance.cpp b/src/modules/grid/grid_gridding/Interpolation_AngularDistance.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_gridding/Interpolation_AngularDistance.h b/src/modules/grid/grid_gridding/Interpolation_AngularDistance.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_gridding/Interpolation_InverseDistance.cpp b/src/modules/grid/grid_gridding/Interpolation_InverseDistance.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_gridding/Interpolation_InverseDistance.h b/src/modules/grid/grid_gridding/Interpolation_InverseDistance.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_gridding/Interpolation_NaturalNeighbour.cpp b/src/modules/grid/grid_gridding/Interpolation_NaturalNeighbour.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_gridding/Interpolation_NaturalNeighbour.h b/src/modules/grid/grid_gridding/Interpolation_NaturalNeighbour.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_gridding/Interpolation_NearestNeighbour.cpp b/src/modules/grid/grid_gridding/Interpolation_NearestNeighbour.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_gridding/Interpolation_NearestNeighbour.h b/src/modules/grid/grid_gridding/Interpolation_NearestNeighbour.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_gridding/Interpolation_Shepard.cpp b/src/modules/grid/grid_gridding/Interpolation_Shepard.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_gridding/Interpolation_Shepard.h b/src/modules/grid/grid_gridding/Interpolation_Shepard.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_gridding/Interpolation_Triangulation.cpp b/src/modules/grid/grid_gridding/Interpolation_Triangulation.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_gridding/Interpolation_Triangulation.h b/src/modules/grid/grid_gridding/Interpolation_Triangulation.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_gridding/MLB_Interface.cpp b/src/modules/grid/grid_gridding/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_gridding/MLB_Interface.h b/src/modules/grid/grid_gridding/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_gridding/Makefile.am b/src/modules/grid/grid_gridding/Makefile.am
old mode 100644
new mode 100755
index 75c79c9..941c9d8
--- a/src/modules/grid/grid_gridding/Makefile.am
+++ b/src/modules/grid/grid_gridding/Makefile.am
@@ -1,5 +1,5 @@
 #
-# $Id: Makefile.am 1738 2013-06-20 11:15:45Z reklov_w $
+# $Id: Makefile.am 2812 2016-02-22 19:48:39Z johanvdw $
 #
 if DEBUG
 DBGFLAGS = -g -DDEBUG
@@ -34,7 +34,6 @@ Shepard.cpp\
 ./nn/nnai.c\
 ./nn/nncommon.c\
 ./nn/nnpi.c\
-./nn/triangle.c\
 Interpolation.h\
 Interpolation_AngularDistance.h\
 Interpolation_InverseDistance.h\
@@ -51,8 +50,15 @@ Shepard.h\
 ./nn/istack.h\
 ./nn/nan.h\
 ./nn/nn.h\
-./nn/triangle.h\
 ./nn/version.h
 
+if TRIANGLE
+libgrid_gridding_la_SOURCES +=\
+./nn/triangle.c\
+./nn/triangle.h
+else
+AM_CFLAGS          = -DUSE_QHULL
+endif
+
 libgrid_gridding_la_LIBADD = $(top_srcdir)/src/saga_core/saga_api/libsaga_api.la
 
diff --git a/src/modules/grid/grid_gridding/Makefile.in b/src/modules/grid/grid_gridding/Makefile.in
index 4f6544d..9689401 100644
--- a/src/modules/grid/grid_gridding/Makefile.in
+++ b/src/modules/grid/grid_gridding/Makefile.in
@@ -78,6 +78,10 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
+ at TRIANGLE_TRUE@am__append_1 = \
+ at TRIANGLE_TRUE@./nn/triangle.c\
+ at TRIANGLE_TRUE@./nn/triangle.h
+
 subdir = src/modules/grid/grid_gridding
 DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
 	$(top_srcdir)/depcomp
@@ -127,7 +131,25 @@ am__installdirs = "$(DESTDIR)$(pkglibdir)"
 LTLIBRARIES = $(pkglib_LTLIBRARIES)
 libgrid_gridding_la_DEPENDENCIES =  \
 	$(top_srcdir)/src/saga_core/saga_api/libsaga_api.la
+am__libgrid_gridding_la_SOURCES_DIST = Interpolation.cpp \
+	Interpolation_AngularDistance.cpp \
+	Interpolation_InverseDistance.cpp \
+	Interpolation_NaturalNeighbour.cpp \
+	Interpolation_NearestNeighbour.cpp Interpolation_Shepard.cpp \
+	Interpolation_Triangulation.cpp kernel_density.cpp \
+	MLB_Interface.cpp Shapes2Grid.cpp Shepard.cpp ./nn/delaunay.c \
+	./nn/hash.c ./nn/istack.c ./nn/lpi.c ./nn/nnai.c \
+	./nn/nncommon.c ./nn/nnpi.c Interpolation.h \
+	Interpolation_AngularDistance.h \
+	Interpolation_InverseDistance.h \
+	Interpolation_NaturalNeighbour.h \
+	Interpolation_NearestNeighbour.h Interpolation_Shepard.h \
+	Interpolation_Triangulation.h kernel_density.h MLB_Interface.h \
+	Shapes2Grid.h Shepard.h ./nn/delaunay.h ./nn/hash.h \
+	./nn/istack.h ./nn/nan.h ./nn/nn.h ./nn/version.h \
+	./nn/triangle.c ./nn/triangle.h
 am__dirstamp = $(am__leading_dot)dirstamp
+ at TRIANGLE_TRUE@am__objects_1 = ./nn/triangle.lo
 am_libgrid_gridding_la_OBJECTS = Interpolation.lo \
 	Interpolation_AngularDistance.lo \
 	Interpolation_InverseDistance.lo \
@@ -136,7 +158,7 @@ am_libgrid_gridding_la_OBJECTS = Interpolation.lo \
 	Interpolation_Triangulation.lo kernel_density.lo \
 	MLB_Interface.lo Shapes2Grid.lo Shepard.lo ./nn/delaunay.lo \
 	./nn/hash.lo ./nn/istack.lo ./nn/lpi.lo ./nn/nnai.lo \
-	./nn/nncommon.lo ./nn/nnpi.lo ./nn/triangle.lo
+	./nn/nncommon.lo ./nn/nnpi.lo $(am__objects_1)
 libgrid_gridding_la_OBJECTS = $(am_libgrid_gridding_la_OBJECTS)
 AM_V_lt = $(am__v_lt_ at AM_V@)
 am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
@@ -195,7 +217,7 @@ am__v_CXXLD_ = $(am__v_CXXLD_ at AM_DEFAULT_V@)
 am__v_CXXLD_0 = @echo "  CXXLD   " $@;
 am__v_CXXLD_1 = 
 SOURCES = $(libgrid_gridding_la_SOURCES)
-DIST_SOURCES = $(libgrid_gridding_la_SOURCES)
+DIST_SOURCES = $(am__libgrid_gridding_la_SOURCES_DIST)
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
@@ -370,7 +392,7 @@ top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 
 #
-# $Id: Makefile.am 1738 2013-06-20 11:15:45Z reklov_w $
+# $Id: Makefile.am 2812 2016-02-22 19:48:39Z johanvdw $
 #
 @DEBUG_TRUE at DBGFLAGS = -g -DDEBUG
 @SAGA_UNICODE_TRUE at DEP_DEFS = -D_SAGA_UNICODE
@@ -380,45 +402,24 @@ CXX_INCS = -I$(top_srcdir)/src/saga_core
 AM_CXXFLAGS = -fPIC $(CXX_INCS) $(DEP_DEFS) $(DEF_SAGA) $(UC_DEFS) $(DBGFLAGS) $(GOMPFLAGS)
 AM_LDFLAGS = -fPIC -shared -avoid-version
 pkglib_LTLIBRARIES = libgrid_gridding.la
-libgrid_gridding_la_SOURCES = \
-Interpolation.cpp\
-Interpolation_AngularDistance.cpp\
-Interpolation_InverseDistance.cpp\
-Interpolation_NaturalNeighbour.cpp\
-Interpolation_NearestNeighbour.cpp\
-Interpolation_Shepard.cpp\
-Interpolation_Triangulation.cpp\
-kernel_density.cpp\
-MLB_Interface.cpp\
-Shapes2Grid.cpp\
-Shepard.cpp\
-./nn/delaunay.c\
-./nn/hash.c\
-./nn/istack.c\
-./nn/lpi.c\
-./nn/nnai.c\
-./nn/nncommon.c\
-./nn/nnpi.c\
-./nn/triangle.c\
-Interpolation.h\
-Interpolation_AngularDistance.h\
-Interpolation_InverseDistance.h\
-Interpolation_NaturalNeighbour.h\
-Interpolation_NearestNeighbour.h\
-Interpolation_Shepard.h\
-Interpolation_Triangulation.h\
-kernel_density.h\
-MLB_Interface.h\
-Shapes2Grid.h\
-Shepard.h\
-./nn/delaunay.h\
-./nn/hash.h\
-./nn/istack.h\
-./nn/nan.h\
-./nn/nn.h\
-./nn/triangle.h\
-./nn/version.h
-
+libgrid_gridding_la_SOURCES = Interpolation.cpp \
+	Interpolation_AngularDistance.cpp \
+	Interpolation_InverseDistance.cpp \
+	Interpolation_NaturalNeighbour.cpp \
+	Interpolation_NearestNeighbour.cpp Interpolation_Shepard.cpp \
+	Interpolation_Triangulation.cpp kernel_density.cpp \
+	MLB_Interface.cpp Shapes2Grid.cpp Shepard.cpp ./nn/delaunay.c \
+	./nn/hash.c ./nn/istack.c ./nn/lpi.c ./nn/nnai.c \
+	./nn/nncommon.c ./nn/nnpi.c Interpolation.h \
+	Interpolation_AngularDistance.h \
+	Interpolation_InverseDistance.h \
+	Interpolation_NaturalNeighbour.h \
+	Interpolation_NearestNeighbour.h Interpolation_Shepard.h \
+	Interpolation_Triangulation.h kernel_density.h MLB_Interface.h \
+	Shapes2Grid.h Shepard.h ./nn/delaunay.h ./nn/hash.h \
+	./nn/istack.h ./nn/nan.h ./nn/nn.h ./nn/version.h \
+	$(am__append_1)
+ at TRIANGLE_FALSE@AM_CFLAGS = -DUSE_QHULL
 libgrid_gridding_la_LIBADD = $(top_srcdir)/src/saga_core/saga_api/libsaga_api.la
 all: all-am
 
diff --git a/src/modules/grid/grid_gridding/Shapes2Grid.cpp b/src/modules/grid/grid_gridding/Shapes2Grid.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_gridding/Shapes2Grid.h b/src/modules/grid/grid_gridding/Shapes2Grid.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_gridding/Shepard.cpp b/src/modules/grid/grid_gridding/Shepard.cpp
old mode 100644
new mode 100755
index 10ac610..0eba813
--- a/src/modules/grid/grid_gridding/Shepard.cpp
+++ b/src/modules/grid/grid_gridding/Shepard.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: Shepard.cpp 1922 2014-01-09 10:28:46Z oconrad $
+ * Version $Id: Shepard.cpp 2807 2016-02-21 19:32:40Z johanvdw $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -147,7 +147,7 @@ void CShepard2d::GetValue(double px, double py, double &q)
 }
 
 /*/////////////////////////////////////////////////////////////////////////////////////
-The folowing source ist an automatic translation 
+The following source ist an automatic translation 
 with f2c of Module 660 in TOMS
  
 QSHEP2D: Fortran routines implementing the quadratic Shepard method for
diff --git a/src/modules/grid/grid_gridding/Shepard.h b/src/modules/grid/grid_gridding/Shepard.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_gridding/kernel_density.cpp b/src/modules/grid/grid_gridding/kernel_density.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_gridding/kernel_density.h b/src/modules/grid/grid_gridding/kernel_density.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_gridding/nn/delaunay.c b/src/modules/grid/grid_gridding/nn/delaunay.c
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_gridding/nn/delaunay.h b/src/modules/grid/grid_gridding/nn/delaunay.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_gridding/nn/hash.c b/src/modules/grid/grid_gridding/nn/hash.c
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_gridding/nn/hash.h b/src/modules/grid/grid_gridding/nn/hash.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_gridding/nn/istack.c b/src/modules/grid/grid_gridding/nn/istack.c
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_gridding/nn/istack.h b/src/modules/grid/grid_gridding/nn/istack.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_gridding/nn/lpi.c b/src/modules/grid/grid_gridding/nn/lpi.c
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_gridding/nn/nan.h b/src/modules/grid/grid_gridding/nn/nan.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_gridding/nn/nn.h b/src/modules/grid/grid_gridding/nn/nn.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_gridding/nn/nnai.c b/src/modules/grid/grid_gridding/nn/nnai.c
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_gridding/nn/nncommon.c b/src/modules/grid/grid_gridding/nn/nncommon.c
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_gridding/nn/nnpi.c b/src/modules/grid/grid_gridding/nn/nnpi.c
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_gridding/nn/version.h b/src/modules/grid/grid_gridding/nn/version.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_spline/Gridding_Spline_BA.cpp b/src/modules/grid/grid_spline/Gridding_Spline_BA.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_spline/Gridding_Spline_BA.h b/src/modules/grid/grid_spline/Gridding_Spline_BA.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_spline/Gridding_Spline_Base.cpp b/src/modules/grid/grid_spline/Gridding_Spline_Base.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_spline/Gridding_Spline_Base.h b/src/modules/grid/grid_spline/Gridding_Spline_Base.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_spline/Gridding_Spline_CSA.cpp b/src/modules/grid/grid_spline/Gridding_Spline_CSA.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_spline/Gridding_Spline_CSA.h b/src/modules/grid/grid_spline/Gridding_Spline_CSA.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_spline/Gridding_Spline_MBA.cpp b/src/modules/grid/grid_spline/Gridding_Spline_MBA.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_spline/Gridding_Spline_MBA.h b/src/modules/grid/grid_spline/Gridding_Spline_MBA.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_spline/Gridding_Spline_MBA_Grid.cpp b/src/modules/grid/grid_spline/Gridding_Spline_MBA_Grid.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_spline/Gridding_Spline_MBA_Grid.h b/src/modules/grid/grid_spline/Gridding_Spline_MBA_Grid.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_spline/Gridding_Spline_TPS_Local.cpp b/src/modules/grid/grid_spline/Gridding_Spline_TPS_Local.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_spline/Gridding_Spline_TPS_Local.h b/src/modules/grid/grid_spline/Gridding_Spline_TPS_Local.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_spline/Gridding_Spline_TPS_TIN.cpp b/src/modules/grid/grid_spline/Gridding_Spline_TPS_TIN.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_spline/Gridding_Spline_TPS_TIN.h b/src/modules/grid/grid_spline/Gridding_Spline_TPS_TIN.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_spline/MBASpline_for_Categories.cpp b/src/modules/grid/grid_spline/MBASpline_for_Categories.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_spline/MBASpline_for_Categories.h b/src/modules/grid/grid_spline/MBASpline_for_Categories.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_spline/MLB_Interface.cpp b/src/modules/grid/grid_spline/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_spline/MLB_Interface.h b/src/modules/grid/grid_spline/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_spline/Makefile.am b/src/modules/grid/grid_spline/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_spline/csa.c b/src/modules/grid/grid_spline/csa.c
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_spline/csa.h b/src/modules/grid/grid_spline/csa.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_tools/CreateGridSystem.cpp b/src/modules/grid/grid_tools/CreateGridSystem.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_tools/CreateGridSystem.h b/src/modules/grid/grid_tools/CreateGridSystem.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_tools/Grid_Aggregate.cpp b/src/modules/grid/grid_tools/Grid_Aggregate.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_tools/Grid_Aggregate.h b/src/modules/grid/grid_tools/Grid_Aggregate.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_tools/Grid_Buffer.cpp b/src/modules/grid/grid_tools/Grid_Buffer.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_tools/Grid_Buffer.h b/src/modules/grid/grid_tools/Grid_Buffer.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_tools/Grid_Buffer_Proximity.cpp b/src/modules/grid/grid_tools/Grid_Buffer_Proximity.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_tools/Grid_Buffer_Proximity.h b/src/modules/grid/grid_tools/Grid_Buffer_Proximity.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_tools/Grid_CombineGrids.cpp b/src/modules/grid/grid_tools/Grid_CombineGrids.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_tools/Grid_CombineGrids.h b/src/modules/grid/grid_tools/Grid_CombineGrids.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_tools/Grid_Completion.cpp b/src/modules/grid/grid_tools/Grid_Completion.cpp
old mode 100644
new mode 100755
index 8f576bc..f1fb332
--- a/src/modules/grid/grid_tools/Grid_Completion.cpp
+++ b/src/modules/grid/grid_tools/Grid_Completion.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: Grid_Completion.cpp 1921 2014-01-09 10:24:11Z oconrad $
+ * Version $Id: Grid_Completion.cpp 2752 2016-01-15 15:26:55Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -78,7 +78,7 @@ CGrid_Completion::CGrid_Completion(void)
 
 	Set_Name		(_TL("Patching"));
 
-	Set_Author		(SG_T("(c) 2003 by O.Conrad"));
+	Set_Author		("O.Conrad (c) 2003");
 
 	Set_Description	(_TW(
 		"Fill gaps of a grid with data from another grid. "
@@ -107,15 +107,14 @@ CGrid_Completion::CGrid_Completion(void)
 	);
 
 	Parameters.Add_Choice(
-		NULL	, "INTERPOLATION"	, _TL("Interpolation Method"),
+		NULL	, "RESAMPLING"		, _TL("Resampling"),
 		_TL(""),
-		CSG_String::Format(SG_T("%s|%s|%s|%s|%s|"),
-			_TL("Nearest Neighbor"),
+		CSG_String::Format("%s|%s|%s|%s|",
+			_TL("Nearest Neighbour"),
 			_TL("Bilinear Interpolation"),
-			_TL("Inverse Distance Interpolation"),
 			_TL("Bicubic Spline Interpolation"),
 			_TL("B-Spline Interpolation")
-		), 4
+		), 3
 	);
 }
 
@@ -126,55 +125,68 @@ CGrid_Completion::~CGrid_Completion(void)
 
 ///////////////////////////////////////////////////////////
 //														 //
-//	Run													 //
-//														 //
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
 bool CGrid_Completion::On_Execute(void)
 {
-	int					x, y;
-	double				xPos, yPos, Value;
-	TSG_Grid_Interpolation	Interpolation;
-	CSG_Grid				*pGrid, *pAdditional;
+	CSG_Grid	*pPatch	= Parameters("ADDITIONAL")->asGrid();
+	CSG_Grid	*pGrid	= Parameters("COMPLETED" )->asGrid();
+
+	if( !pGrid->is_Intersecting(pPatch->Get_Extent()) )
+	{
+		Error_Set(_TL("Nothing to do: there is no intersection with additonal grid."));
 
-	pAdditional		= Parameters("ADDITIONAL")	->asGrid();
-	pGrid			= Parameters("COMPLETED")	->asGrid();
+		return( false );
+	}
 
-	if( pGrid->is_Intersecting(pAdditional->Get_Extent()) )
+	if( pGrid != Parameters("ORIGINAL")->asGrid() )
 	{
-		if( pGrid != Parameters("ORIGINAL")->asGrid() )
-		{
-			Process_Set_Text(_TL("Copying original data..."));
+		Process_Set_Text(_TL("Copying original data..."));
 
-			pGrid->Assign(Parameters("ORIGINAL")->asGrid());
-		}
+		pGrid->Assign(Parameters("ORIGINAL")->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;
+	}
 
-		Interpolation	= (TSG_Grid_Interpolation)Parameters("INTERPOLATION")->asInt();
+	Process_Set_Text(_TL("Data completion..."));
 
-		Process_Set_Text(_TL("Data completion..."));
+	int		x, y;
+	double	xWorld, yWorld, Value;
 
-		for(y=0, yPos=Get_YMin(); y<Get_NY() && Set_Progress(y, Get_NY()); y++, yPos+=Get_Cellsize())
+	for(y=0, yWorld=Get_YMin(); y<Get_NY() && yWorld<=pPatch->Get_YMax() && Set_Progress(y, Get_NY()); y++, yWorld+=Get_Cellsize())
+	{
+		if( yWorld >= pPatch->Get_YMin() )
 		{
-			if( yPos >= pAdditional->Get_YMin() )
+			for(x=0, xWorld=Get_XMin(); x<Get_NX() && xWorld<=pPatch->Get_XMax(); x++, xWorld+=Get_Cellsize())
 			{
-				for(x=0, xPos=Get_XMin(); x<Get_NX() && xPos<=pAdditional->Get_XMax(); x++, xPos+=Get_Cellsize())
+				if( pGrid->is_NoData(x, y) && xWorld >= pPatch->Get_XMin() )
 				{
-					if( pGrid->is_NoData(x, y) && xPos >= pAdditional->Get_XMin() )
+					if( pPatch->Get_Value(xWorld, yWorld, Value, Resampling) )
 					{
-						if( !pAdditional->is_NoData_Value(Value = pAdditional->Get_Value(xPos, yPos, Interpolation)) )
-						{
-							pGrid->Set_Value(x, y, Value);
-						}
+						pGrid->Set_Value(x, y, Value);
 					}
 				}
 			}
 		}
-
-		return( true );
 	}
 
-	Error_Set(_TL("Nothing to do: there is no intersection with additonal grid."));
-
-	return( false );
+	return( true );
 }
+
+
+///////////////////////////////////////////////////////////
+//														 //
+//														 //
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
diff --git a/src/modules/grid/grid_tools/Grid_Completion.h b/src/modules/grid/grid_tools/Grid_Completion.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_tools/Grid_ConstantGrid.cpp b/src/modules/grid/grid_tools/Grid_ConstantGrid.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_tools/Grid_ConstantGrid.h b/src/modules/grid/grid_tools/Grid_ConstantGrid.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_tools/Grid_CropToData.cpp b/src/modules/grid/grid_tools/Grid_CropToData.cpp
old mode 100644
new mode 100755
index c9ddac6..8c4504b
--- a/src/modules/grid/grid_tools/Grid_CropToData.cpp
+++ b/src/modules/grid/grid_tools/Grid_CropToData.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: Grid_CropToData.cpp 2072 2014-03-31 08:50:43Z reklov_w $
+ * Version $Id: Grid_CropToData.cpp 2752 2016-01-15 15:26:55Z oconrad $
  *********************************************************/
 /*******************************************************************************
     CropToData.cpp
@@ -160,7 +160,7 @@ bool CCropToData::On_Execute(void)
 				Get_YMin() + yMin * Get_Cellsize()
 			);
 
-			pGrid->Assign(pGrids->asGrid(i), GRID_INTERPOLATION_NearestNeighbour);
+			pGrid->Assign(pGrids->asGrid(i), GRID_RESAMPLING_NearestNeighbour);
 			pGrid->Set_Name(pGrids->asGrid(i)->Get_Name());
 
 			pCropped->Add_Item(pGrid);
diff --git a/src/modules/grid/grid_tools/Grid_CropToData.h b/src/modules/grid/grid_tools/Grid_CropToData.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_tools/Grid_Cut.cpp b/src/modules/grid/grid_tools/Grid_Cut.cpp
old mode 100644
new mode 100755
index 1aabd2b..0f2df4e
--- a/src/modules/grid/grid_tools/Grid_Cut.cpp
+++ b/src/modules/grid/grid_tools/Grid_Cut.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: Grid_Cut.cpp 2697 2015-11-24 13:43:39Z oconrad $
+ * Version $Id: Grid_Cut.cpp 2752 2016-01-15 15:26:55Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -273,7 +273,7 @@ bool CGrid_Clip_Interactive::On_Execute_Position(CSG_Point ptWorld, TSG_Module_I
 				pClip->Set_Unit              (pInput->asGrid(i)->Get_Unit());
 				pClip->Set_NoData_Value_Range(pInput->asGrid(i)->Get_NoData_Value(), pInput->asGrid(i)->Get_NoData_hiValue());
 				pClip->Set_Scaling           (pInput->asGrid(i)->Get_Scaling(), pInput->asGrid(i)->Get_Offset());
-				pClip->Assign                (pInput->asGrid(i), GRID_INTERPOLATION_NearestNeighbour);
+				pClip->Assign                (pInput->asGrid(i), GRID_RESAMPLING_NearestNeighbour);
 
 				pOutput->Add_Item(pClip);
 				DataObject_Add   (pClip);
@@ -484,7 +484,7 @@ bool CGrid_Clip::On_Execute(void)
 		pClip->Set_Unit              (pInput->asGrid(i)->Get_Unit());
 		pClip->Set_NoData_Value_Range(pInput->asGrid(i)->Get_NoData_Value(), pInput->asGrid(i)->Get_NoData_hiValue());
 		pClip->Set_Scaling           (pInput->asGrid(i)->Get_Scaling(), pInput->asGrid(i)->Get_Offset());
-		pClip->Assign                (pInput->asGrid(i), GRID_INTERPOLATION_NearestNeighbour);
+		pClip->Assign                (pInput->asGrid(i), GRID_RESAMPLING_NearestNeighbour);
 
 		if( Mask.is_Valid() ) // && Parameters("EXTENT")->asInt() == 3 )	// polygon clip
 		{
diff --git a/src/modules/grid/grid_tools/Grid_Cut.h b/src/modules/grid/grid_tools/Grid_Cut.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_tools/Grid_Fill.cpp b/src/modules/grid/grid_tools/Grid_Fill.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_tools/Grid_Fill.h b/src/modules/grid/grid_tools/Grid_Fill.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_tools/Grid_Gaps.cpp b/src/modules/grid/grid_tools/Grid_Gaps.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_tools/Grid_Gaps.h b/src/modules/grid/grid_tools/Grid_Gaps.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_tools/Grid_Gaps_OneCell.cpp b/src/modules/grid/grid_tools/Grid_Gaps_OneCell.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_tools/Grid_Gaps_OneCell.h b/src/modules/grid/grid_tools/Grid_Gaps_OneCell.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_tools/Grid_Gaps_Resampling.cpp b/src/modules/grid/grid_tools/Grid_Gaps_Resampling.cpp
old mode 100644
new mode 100755
index 0762b40..69439dc
--- a/src/modules/grid/grid_tools/Grid_Gaps_Resampling.cpp
+++ b/src/modules/grid/grid_tools/Grid_Gaps_Resampling.cpp
@@ -103,15 +103,14 @@ CGrid_Gaps_Resampling::CGrid_Gaps_Resampling(void)
 	);
 
 	Parameters.Add_Choice(
-		NULL	, "INTERPOLATION"	, _TL("Interpolation"),
+		NULL	, "RESAMPLING"		, _TL("Resampling"),
 		_TL(""),
-		CSG_String::Format(SG_T("%s|%s|%s|%s|%s|"),
-			_TL("Nearest Neighbor"),
+		CSG_String::Format("%s|%s|%s|%s|",
+			_TL("Nearest Neighbour"),
 			_TL("Bilinear Interpolation"),
-			_TL("Inverse Distance Interpolation"),
 			_TL("Bicubic Spline Interpolation"),
 			_TL("B-Spline Interpolation")
-		), 4
+		), 3
 	);
 
 	Parameters.Add_Value(
@@ -189,7 +188,15 @@ bool CGrid_Gaps_Resampling::On_Execute(void)
 		pGrid->Set_Name(CSG_String::Format(SG_T("%s [%s]"), Parameters("INPUT")->asGrid()->Get_Name(), _TL("no gaps")));
 	}
 
-	TSG_Grid_Interpolation	Interpolation	= (TSG_Grid_Interpolation)Parameters("INTERPOLATION")->asInt();
+	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;
+	}
 
 	double	Grow	= Parameters("GROW")->asDouble();
 
@@ -211,7 +218,7 @@ bool CGrid_Gaps_Resampling::On_Execute(void)
 			CSG_Grid	Patch(CSG_Grid_System(Size, Get_System()->Get_Extent()));
 
 			SG_UI_Progress_Lock(true);
-			Patch.Assign(pGrid, GRID_INTERPOLATION_BSpline);
+			Patch.Assign(pGrid, GRID_RESAMPLING_BSpline);
 			SG_UI_Progress_Lock(false);
 
 			nCells	= 0;
@@ -229,7 +236,7 @@ bool CGrid_Gaps_Resampling::On_Execute(void)
 
 						if( Patch.is_InGrid_byPos(px, py) )
 						{
-							pGrid->Set_Value(x, y, Patch.Get_Value(px, py, Interpolation));
+							pGrid->Set_Value(x, y, Patch.Get_Value(px, py, Resampling));
 						}
 						else
 						{
@@ -269,7 +276,7 @@ bool CGrid_Gaps_Resampling::On_Execute(void)
 
 						if( pPatch->is_InGrid_byPos(px, py) )
 						{
-							pGrid->Set_Value(x, y, pPatch->Get_Value(px, py, Interpolation));
+							pGrid->Set_Value(x, y, pPatch->Get_Value(px, py, Resampling));
 
 							break;
 						}
@@ -295,41 +302,4 @@ bool CGrid_Gaps_Resampling::On_Execute(void)
 //														 //
 ///////////////////////////////////////////////////////////
 
-/*/---------------------------------------------------------
-bool CGrid_Gaps_Resampling::On_Execute(void)
-{
-	//-----------------------------------------------------
-	CSG_Grid	*pGrid	= Parameters("RESULT")->asGrid();
-	CSG_Grid	*pMask	= Parameters("MASK"  )->asGrid();
-
-	if( pGrid == NULL )
-	{
-		pGrid	= Parameters("INPUT")->asGrid();
-	}
-	else
-	{
-		pGrid->Assign(Parameters("INPUT")->asGrid());
-		pGrid->Set_Name(CSG_String::Format(SG_T("%s [%s]"), Parameters("INPUT")->asGrid()->Get_Name(), _TL("no gaps")));
-	}
-
-	//-----------------------------------------------------
-	TSG_Grid_Interpolation	Interpolation	= (TSG_Grid_Interpolation)Parameters("INTERPOLATION")->asInt();
-
-
-	//-----------------------------------------------------
-	if( pGrid == Parameters("INPUT")->asGrid() )
-	{
-		DataObject_Update(pGrid);
-	}
-
-	return( true );
-}/**/
-
-
-///////////////////////////////////////////////////////////
-//														 //
-//														 //
-//														 //
-///////////////////////////////////////////////////////////
-
 //---------------------------------------------------------
diff --git a/src/modules/grid/grid_tools/Grid_Gaps_Resampling.h b/src/modules/grid/grid_tools/Grid_Gaps_Resampling.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_tools/Grid_Gaps_Spline_Fill.cpp b/src/modules/grid/grid_tools/Grid_Gaps_Spline_Fill.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_tools/Grid_Gaps_Spline_Fill.h b/src/modules/grid/grid_tools/Grid_Gaps_Spline_Fill.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_tools/Grid_InvertNoData.cpp b/src/modules/grid/grid_tools/Grid_InvertNoData.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_tools/Grid_InvertNoData.h b/src/modules/grid/grid_tools/Grid_InvertNoData.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_tools/Grid_Mask.cpp b/src/modules/grid/grid_tools/Grid_Mask.cpp
old mode 100644
new mode 100755
index 00fd34d..57adbca
--- a/src/modules/grid/grid_tools/Grid_Mask.cpp
+++ b/src/modules/grid/grid_tools/Grid_Mask.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: Grid_Mask.cpp 1921 2014-01-09 10:24:11Z oconrad $
+ * Version $Id: Grid_Mask.cpp 2752 2016-01-15 15:26:55Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -148,7 +148,7 @@ bool CGrid_Mask::On_Execute(void)
 	{
 		for(x=0, p.x=Get_XMin(); x<Get_NX(); x++, p.x+=Get_Cellsize())
 		{
-			if( !pMasked->is_NoData(x, y) && !pMask->Get_Value(p, z, GRID_INTERPOLATION_NearestNeighbour) )
+			if( !pMasked->is_NoData(x, y) && !pMask->Get_Value(p, z, GRID_RESAMPLING_NearestNeighbour) )
 			{
 				pMasked->Set_NoData(x, y);
 			}
diff --git a/src/modules/grid/grid_tools/Grid_Mask.h b/src/modules/grid/grid_tools/Grid_Mask.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_tools/Grid_Merge.cpp b/src/modules/grid/grid_tools/Grid_Merge.cpp
old mode 100644
new mode 100755
index bba7628..da73a41
--- a/src/modules/grid/grid_tools/Grid_Merge.cpp
+++ b/src/modules/grid/grid_tools/Grid_Merge.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: Grid_Merge.cpp 2708 2015-12-01 16:16:14Z oconrad $
+ * Version $Id: Grid_Merge.cpp 2752 2016-01-15 15:26:55Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -112,15 +112,14 @@ CGrid_Merge::CGrid_Merge(void)
 	);
 
 	Parameters.Add_Choice(
-		NULL	, "INTERPOL"	, _TL("Interpolation"),
+		NULL	, "RESAMPLING"		, _TL("Resampling"),
 		_TL(""),
-		CSG_String::Format("%s|%s|%s|%s|%s|",
-			_TL("Nearest Neighbor"),
+		CSG_String::Format("%s|%s|%s|%s|",
+			_TL("Nearest Neighbour"),
 			_TL("Bilinear Interpolation"),
-			_TL("Inverse Distance Interpolation"),
 			_TL("Bicubic Spline Interpolation"),
 			_TL("B-Spline Interpolation")
-		), 0
+		), 3
 	);
 
 	Parameters.Add_Choice(
@@ -307,14 +306,12 @@ bool CGrid_Merge::Initialize(void)
 	}
 
 	//-----------------------------------------------------
-	switch( Parameters("INTERPOL")->asInt() )
+	switch( Parameters("RESAMPLING")->asInt() )
 	{
-	default:
-	case 0:	m_Interpolation	= GRID_INTERPOLATION_NearestNeighbour;	break;	// Nearest Neighbor
-	case 1:	m_Interpolation	= GRID_INTERPOLATION_Bilinear;			break;	// Bilinear Interpolation
-	case 2:	m_Interpolation	= GRID_INTERPOLATION_InverseDistance;	break;	// Inverse Distance Interpolation
-	case 3:	m_Interpolation	= GRID_INTERPOLATION_BicubicSpline;		break;	// Bicubic Spline Interpolation
-	case 4:	m_Interpolation	= GRID_INTERPOLATION_BSpline;			break;	// B-Spline Interpolation
+	default:	m_Resampling	= GRID_RESAMPLING_NearestNeighbour;	break;
+	case  1:	m_Resampling	= GRID_RESAMPLING_Bilinear;			break;
+	case  2:	m_Resampling	= GRID_RESAMPLING_BicubicSpline;	break;
+	case  3:	m_Resampling	= GRID_RESAMPLING_BSpline;			break;
 	}
 
 	//-----------------------------------------------------
@@ -516,13 +513,13 @@ inline void CGrid_Merge::Set_Value(int x, int y, CSG_Grid *pGrid, double px, dou
 {
 	double	z;
 
-	if( pGrid->Get_Value(px, py, z, m_Interpolation) )
+	if( pGrid->Get_Value(px, py, z, m_Resampling) )
 	{
 		if( m_Weight.is_Valid() )
 		{
 			double	w;
 
-			if( m_Weight.Get_Value(px, py, w, GRID_INTERPOLATION_BSpline, true) )
+			if( m_Weight.Get_Value(px, py, w, GRID_RESAMPLING_BSpline, true) )
 			{
 				Set_Value(x, y, z, w);
 			}
@@ -676,7 +673,7 @@ void CGrid_Merge::Get_Match(CSG_Grid *pGrid)
 				{
 					double	z, px	= m_pMosaic->Get_XMin() + x * m_pMosaic->Get_Cellsize();
 
-					if( pGrid->Get_Value(px, py, z, GRID_INTERPOLATION_NearestNeighbour) )
+					if( pGrid->Get_Value(px, py, z, GRID_RESAMPLING_NearestNeighbour) )
 					{
 						Z[0].Add_Row(z);
 						Z[1].Add_Row(m_pMosaic->asDouble(x, y));
diff --git a/src/modules/grid/grid_tools/Grid_Merge.h b/src/modules/grid/grid_tools/Grid_Merge.h
old mode 100644
new mode 100755
index 6ef0868..f2d9560
--- a/src/modules/grid/grid_tools/Grid_Merge.h
+++ b/src/modules/grid/grid_tools/Grid_Merge.h
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: Grid_Merge.h 2221 2014-09-04 16:02:43Z oconrad $
+ * Version $Id: Grid_Merge.h 2752 2016-01-15 15:26:55Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -93,10 +93,12 @@ protected:
 
 private:
 
-	int							m_Overlap, m_Interpolation;
+	int							m_Overlap;
 
 	double						m_dBlend;
 
+	TSG_Grid_Resampling			m_Resampling;
+
 	CSG_Vector					m_Match;
 
 	CSG_Grid					*m_pMosaic, m_Weights, m_Weight;
diff --git a/src/modules/grid/grid_tools/Grid_Orientation.cpp b/src/modules/grid/grid_tools/Grid_Orientation.cpp
old mode 100644
new mode 100755
index c0c9b14..0cbe717
--- a/src/modules/grid/grid_tools/Grid_Orientation.cpp
+++ b/src/modules/grid/grid_tools/Grid_Orientation.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: Grid_Orientation.cpp 1921 2014-01-09 10:24:11Z oconrad $
+ * Version $Id: Grid_Orientation.cpp 2817 2016-02-23 15:16:48Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -13,10 +13,10 @@
 //                                                       //
 //-------------------------------------------------------//
 //                                                       //
-//                  Grid_Orientation.cpp                 //
+//                 Grid_Orientation.cpp                  //
 //                                                       //
-//                 Copyright (C) 2003 by                 //
-//                      Olaf Conrad                      //
+//                Copyright (C) 2016 by                  //
+//                     Olaf Conrad                       //
 //                                                       //
 //-------------------------------------------------------//
 //                                                       //
@@ -44,9 +44,7 @@
 //                                                       //
 //    contact:    Olaf Conrad                            //
 //                Institute of Geography                 //
-//                University of Goettingen               //
-//                Goldschmidtstr. 5                      //
-//                37077 Goettingen                       //
+//                University of Hamburg                  //
 //                Germany                                //
 //                                                       //
 ///////////////////////////////////////////////////////////
@@ -71,94 +69,277 @@
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
-CGrid_Orientation::CGrid_Orientation(void)
+CGrid_Copy::CGrid_Copy(void)
 {
 	//-----------------------------------------------------
-	// 1. Info...
+	Set_Name		(_TL("Copy Grid"));
 
-	Set_Name		(_TL("Grid Orientation"));
+	Set_Author		("O.Conrad (c) 2016");
 
-	Set_Author		(SG_T("(c) 2001 by O.Conrad"));
+	Set_Description	(_TW(
+		"Copy a grid. "
+	));
+
+	//-----------------------------------------------------
+	Parameters.Add_Grid(
+		NULL	, "GRID"	, _TL("Grid"),
+		_TL(""),
+		PARAMETER_INPUT
+	);
+
+	Parameters.Add_Grid(
+		NULL	, "COPY"	, _TL("Copy"),
+		_TL(""),
+		PARAMETER_OUTPUT
+	);
+}
+
+
+///////////////////////////////////////////////////////////
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+bool CGrid_Copy::On_Execute(void)
+{
+	CSG_Grid	*pGrid	= Parameters("GRID")->asGrid();
+	CSG_Grid	*pCopy	= Parameters("COPY")->asGrid();
+
+	return( pCopy->Create(*pGrid) );
+}
+
+
+///////////////////////////////////////////////////////////
+//														 //
+//														 //
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+CGrid_Invert::CGrid_Invert(void)
+{
+	//-----------------------------------------------------
+	Set_Name		(_TL("Invert Grid"));
+
+	Set_Author		("O.Conrad (c) 2016");
 
 	Set_Description	(_TW(
-		"Copy, mirror (horizontally or vertically) and invert grid values. "
-		"If the target is not set, the changes will be stored to the original grid. ")
+		"Invert a grid, i.e. the highest value becomes the lowest and vice versa. "
+		"If the target is not set, the changes will be stored to the original grid. "
+	));
+
+	//-----------------------------------------------------
+	Parameters.Add_Grid(
+		NULL	, "GRID"	, _TL("Grid"),
+		_TL(""),
+		PARAMETER_INPUT
 	);
 
+	Parameters.Add_Grid(
+		NULL	, "INVERSE"	, _TL("Inverse Grid"),
+		_TL(""),
+		PARAMETER_OUTPUT_OPTIONAL
+	);
+}
+
+
+///////////////////////////////////////////////////////////
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+bool CGrid_Invert::On_Execute(void)
+{
+	CSG_Grid	*pGrid	= Parameters("INVERSE")->asGrid();
+
+	if( pGrid == NULL )
+	{
+		pGrid	= Parameters("GRID")->asGrid();
+	}
+	else if( pGrid != Parameters("GRID")->asGrid() )
+	{
+		pGrid->Create(*Parameters("GRID")->asGrid());
+
+		pGrid->Set_Name(CSG_String::Format("%s [%s]", pGrid->Get_Name(), Parameters("METHOD")->asString()));
+	}
+
+	//-----------------------------------------------------
+	double	zMin	= pGrid->Get_ZMin();
+	double	zMax	= pGrid->Get_ZMax();
+
+	for(int y=0; y<Get_NY() && SG_UI_Process_Set_Progress(y, Get_NY()); y++)
+	{
+		#pragma omp parallel for
+		for(int x=0; x<Get_NX(); x++)
+		{
+			if( !pGrid->is_NoData(x, y) )
+			{
+				pGrid->Set_Value(x, y, zMax - (pGrid->asDouble(x, y) - zMin));
+			}
+		}
+	}
 
 	//-----------------------------------------------------
-	// 2. Parameters...
+	if( pGrid == Parameters("GRID")->asGrid() )
+	{
+		DataObject_Update(pGrid);
+	}
+
+	return( true );
+}
+
+
+///////////////////////////////////////////////////////////
+//														 //
+//														 //
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+CGrid_Mirror::CGrid_Mirror(void)
+{
+	//-----------------------------------------------------
+	Set_Name		(_TL("Mirror Grid"));
+
+	Set_Author		("O.Conrad (c) 2016");
+
+	Set_Description	(_TW(
+		"Mirror a grid at its center axes', either vertically, horizontally or both. "
+		"If the target is not set, the changes will be stored to the original grid. "
+	));
 
+	//-----------------------------------------------------
 	Parameters.Add_Grid(
-		NULL, "INPUT"	, _TL("Grid"),
+		NULL	, "GRID"	, _TL("Grid"),
 		_TL(""),
 		PARAMETER_INPUT
 	);
 
 	Parameters.Add_Grid(
-		NULL, "RESULT"	, _TL("Changed Grid"),
+		NULL	, "MIRROR"	, _TL("Mirror Grid"),
 		_TL(""),
 		PARAMETER_OUTPUT_OPTIONAL
 	);
 
 	Parameters.Add_Choice(
-		NULL, "METHOD"	, _TL("Method"),
+		NULL	, "METHOD"	, _TL("Method"),
 		_TL(""),
-		CSG_String::Format(SG_T("%s|%s|%s|%s|"),
-			_TL("Copy"),
-			_TL("Flip"),
-			_TL("Mirror"),
-			_TL("Invert")
+		CSG_String::Format("%s|%s|%s|",
+			_TL("horizontally"),
+			_TL("vertically"),
+			_TL("both")
 		)
 	);
 }
 
-//---------------------------------------------------------
-CGrid_Orientation::~CGrid_Orientation(void)
-{}
-
 
 ///////////////////////////////////////////////////////////
 //														 //
-//														 //
-//														 //
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
-bool CGrid_Orientation::On_Execute(void)
+bool CGrid_Mirror::On_Execute(void)
 {
-	CSG_Grid		*pInput, *pResult;
-
-	pInput		= Parameters("INPUT")->asGrid();
-	pResult		= Parameters("RESULT")->asGrid();
+	CSG_Grid	*pGrid	= Parameters("MIRROR")->asGrid();
 
-	if( !pResult )
+	if( pGrid == NULL )
 	{
-		pResult		= pInput;
-		Parameters("RESULT")->Set_Value(pInput);
+		pGrid	= Parameters("GRID")->asGrid();
 	}
-	else if( pResult != pInput )
+	else if( pGrid != Parameters("GRID")->asGrid() )
 	{
-		pResult->Assign(pInput);
+		pGrid->Create(*Parameters("GRID")->asGrid());
+
+		pGrid->Set_Name(CSG_String::Format("%s [%s]", pGrid->Get_Name(), Parameters("METHOD")->asString()));
 	}
 
+	//-----------------------------------------------------
 	switch( Parameters("METHOD")->asInt() )
 	{
-	case 0:	default:	// Copy...
+	//-----------------------------------------------------
+	case  0:	// vertically
+		{
+			for(int xa=0, xb=Get_NX()-1; xa<xb && SG_UI_Process_Set_Progress(xa, Get_NX()/2); xa++, xb--)
+			{
+				#pragma omp parallel for
+				for(int y=0; y<Get_NY(); y++)
+				{
+					double	d             = pGrid->asDouble(xa, y);
+					pGrid->Set_Value(xa, y, pGrid->asDouble(xb, y));
+					pGrid->Set_Value(xb, y, d);
+				}
+			}
+		}
 		break;
 
-	case 1:				// Flip...
-		pResult->Flip();
+	//-----------------------------------------------------
+	case  1:	// horizontally
+		{
+			for(int ya=0, yb=Get_NY()-1; ya<yb && SG_UI_Process_Set_Progress(ya, Get_NY()/2); ya++, yb--)
+			{
+				#pragma omp parallel for
+				for(int x=0; x<Get_NX(); x++)
+				{
+					double	d             = pGrid->asDouble(x, ya);
+					pGrid->Set_Value(x, ya, pGrid->asDouble(x, yb));
+					pGrid->Set_Value(x, yb, d);
+				}
+			}
+		}
 		break;
 
-	case 2:				// Mirror...
-		pResult->Mirror();
-		break;
+	//-----------------------------------------------------
+	default:	// both
+		{
+			for(int ya=0, yb=Get_NY()-1; ya<=yb && SG_UI_Process_Set_Progress(ya, Get_NY()/2); ya++, yb--)
+			{
+				#pragma omp parallel for
+				for(int xa=0; xa<=Get_NX()/2; xa++)
+				{
+					int	xb	= Get_NX() - xa - 1;
+
+					if( ya < yb && xa < xb )
+					{
+						double	d              = pGrid->asDouble(xa, ya);
+						pGrid->Set_Value(xa, ya, pGrid->asDouble(xb, yb));
+						pGrid->Set_Value(xb, yb, d);
 
-	case 3:				// Invert...
-		pResult->Invert();
+						d                      = pGrid->asDouble(xa, yb);
+						pGrid->Set_Value(xa, yb, pGrid->asDouble(xb, ya));
+						pGrid->Set_Value(xb, ya, d);
+					}
+					else if( xa < xb )
+					{
+						double	d              = pGrid->asDouble(xa, ya);
+						pGrid->Set_Value(xa, ya, pGrid->asDouble(xb, ya));
+						pGrid->Set_Value(xb, ya, d);
+					}
+					else if( ya < yb )
+					{
+						double	d              = pGrid->asDouble(xa, ya);
+						pGrid->Set_Value(xa, ya, pGrid->asDouble(xa, yb));
+						pGrid->Set_Value(xa, yb, d);
+					}
+				}
+			}
+		}
 		break;
 	}
 
+	//-----------------------------------------------------
+	if( pGrid == Parameters("GRID")->asGrid() )
+	{
+		DataObject_Update(pGrid);
+	}
+
 	return( true );
 }
+
+
+///////////////////////////////////////////////////////////
+//														 //
+//														 //
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
diff --git a/src/modules/grid/grid_tools/Grid_Orientation.h b/src/modules/grid/grid_tools/Grid_Orientation.h
old mode 100644
new mode 100755
index 315955a..7d5a0f0
--- a/src/modules/grid/grid_tools/Grid_Orientation.h
+++ b/src/modules/grid/grid_tools/Grid_Orientation.h
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: Grid_Orientation.h 1921 2014-01-09 10:24:11Z oconrad $
+ * Version $Id: Grid_Orientation.h 2817 2016-02-23 15:16:48Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -13,10 +13,10 @@
 //                                                       //
 //-------------------------------------------------------//
 //                                                       //
-//                  Grid_Orientation.h                   //
+//                 Grid_Orientation.h                    //
 //                                                       //
-//                 Copyright (C) 2003 by                 //
-//                      Olaf Conrad                      //
+//                Copyright (C) 2016 by                  //
+//                     Olaf Conrad                       //
 //                                                       //
 //-------------------------------------------------------//
 //                                                       //
@@ -44,9 +44,7 @@
 //                                                       //
 //    contact:    Olaf Conrad                            //
 //                Institute of Geography                 //
-//                University of Goettingen               //
-//                Goldschmidtstr. 5                      //
-//                37077 Goettingen                       //
+//                University of Hamburg                  //
 //                Germany                                //
 //                                                       //
 ///////////////////////////////////////////////////////////
@@ -65,28 +63,83 @@
 #define HEADER_INCLUDED__Grid_Orientation_H
 
 
+///////////////////////////////////////////////////////////
+//														 //
+//														 //
+//														 //
+///////////////////////////////////////////////////////////
+
 //---------------------------------------------------------
 #include "MLB_Interface.h"
 
+
+///////////////////////////////////////////////////////////
+//														 //
+//														 //
+//														 //
+///////////////////////////////////////////////////////////
+
 //---------------------------------------------------------
-class CGrid_Orientation : public CSG_Module_Grid  
+class CGrid_Copy : public CSG_Module_Grid
 {
 public:
-	CGrid_Orientation(void);
-	virtual ~CGrid_Orientation(void);
+	CGrid_Copy(void);
 
-	virtual CSG_String		Get_MenuPath	(void)	{	return( _TL("A:Grid|Values") );	}
+	virtual CSG_String		Get_MenuPath	(void)	{	return( _TL("A:Grid|Tools") );	}
 
 
 protected:
 
-	virtual bool		On_Execute(void);
+	virtual bool			On_Execute		(void);
 
+};
+
+
+///////////////////////////////////////////////////////////
+//														 //
+///////////////////////////////////////////////////////////
 
-private:
+//---------------------------------------------------------
+class CGrid_Invert : public CSG_Module_Grid
+{
+public:
+	CGrid_Invert(void);
 
+	virtual CSG_String		Get_MenuPath	(void)	{	return( _TL("A:Grid|Tools") );	}
+
+
+protected:
+
+	virtual bool			On_Execute		(void);
+
+};
+
+
+///////////////////////////////////////////////////////////
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+class CGrid_Mirror : public CSG_Module_Grid
+{
+public:
+	CGrid_Mirror(void);
+
+	virtual CSG_String		Get_MenuPath	(void)	{	return( _TL("A:Grid|Tools") );	}
+
+
+protected:
+
+	virtual bool			On_Execute		(void);
 
 };
 
+
+///////////////////////////////////////////////////////////
+//														 //
+//														 //
+//														 //
+///////////////////////////////////////////////////////////
+
 //---------------------------------------------------------
 #endif // #ifndef HEADER_INCLUDED__Grid_Orientation_H
diff --git a/src/modules/grid/grid_tools/Grid_Proximity.cpp b/src/modules/grid/grid_tools/Grid_Proximity.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_tools/Grid_Proximity.h b/src/modules/grid/grid_tools/Grid_Proximity.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_tools/Grid_Resample.cpp b/src/modules/grid/grid_tools/Grid_Resample.cpp
old mode 100644
new mode 100755
index a300b19..a5b2204
--- a/src/modules/grid/grid_tools/Grid_Resample.cpp
+++ b/src/modules/grid/grid_tools/Grid_Resample.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: Grid_Resample.cpp 2571 2015-09-03 14:31:44Z oconrad $
+ * Version $Id: Grid_Resample.cpp 2755 2016-01-19 15:57:08Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -105,10 +105,9 @@ CGrid_Resample::CGrid_Resample(void)
 	Parameters.Add_Choice(
 		NULL	, "SCALE_UP"	, _TL("Upscaling Method"),
 		_TL(""),
-		CSG_String::Format(SG_T("%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|"),
-			_TL("Nearest Neighbor"),
+		CSG_String::Format("%s|%s|%s|%s|%s|%s|%s|%s|%s|",
+			_TL("Nearest Neighbour"),
 			_TL("Bilinear Interpolation"),
-			_TL("Inverse Distance Interpolation"),
 			_TL("Bicubic Spline Interpolation"),
 			_TL("B-Spline Interpolation"),
 			_TL("Mean Value"),
@@ -116,20 +115,19 @@ CGrid_Resample::CGrid_Resample(void)
 			_TL("Minimum Value"),
 			_TL("Maximum Value"),
 			_TL("Majority")
-		), 6
+		), 5
 	);
 
 	//-----------------------------------------------------
 	Parameters.Add_Choice(
 		NULL	, "SCALE_DOWN"	, _TL("Downscaling Method"),
 		_TL(""),
-		CSG_String::Format(SG_T("%s|%s|%s|%s|%s|"),
-			_TL("Nearest Neighbor"),
+		CSG_String::Format("%s|%s|%s|%s|",
+			_TL("Nearest Neighbour"),
 			_TL("Bilinear Interpolation"),
-			_TL("Inverse Distance Interpolation"),
 			_TL("Bicubic Spline Interpolation"),
 			_TL("B-Spline Interpolation")
-		), 4
+		), 3
 	);
 
 	//-----------------------------------------------------
@@ -146,17 +144,23 @@ CGrid_Resample::CGrid_Resample(void)
 //---------------------------------------------------------
 int CGrid_Resample::On_Parameter_Changed(CSG_Parameters *pParameters, CSG_Parameter *pParameter)
 {
-	if( !SG_STR_CMP(pParameter->Get_Identifier(), "PARAMETERS_GRID_SYSTEM") )
+	if( !SG_STR_CMP(pParameter->Get_Identifier(), "PARAMETERS_GRID_SYSTEM") && pParameter->asGrid_System() )
 	{
-		if( pParameter->asGrid_System() )
-		{
-			CSG_Grid_System	Input	= *pParameter->asGrid_System();
+		CSG_Grid_System	Input	= *pParameter->asGrid_System();
 
-			m_Grid_Target.Set_User_Defined(pParameters, Input.Get_Extent(), Input.Get_NY(), false, 0);
-		}
+		m_Grid_Target.Set_User_Defined(pParameters, Input.Get_Extent(), Input.Get_NY(), false, 0);
+	}
+
+	if(0&& !SG_UI_Get_Window_Main() && !SG_STR_CMP(pParameter->Get_Identifier(), "INPUT") && pParameter->asGridList()->Get_Count() > 0 )
+	{
+		CSG_Grid_System	Input = pParameter->asGridList()->asGrid(0)->Get_System();
+
+		m_Grid_Target.Set_User_Defined(pParameters, Input.Get_Extent(), Input.Get_NY(), false, 0);
 	}
 
-	return( m_Grid_Target.On_Parameter_Changed(pParameters, pParameter) ? 1 : 0 );
+	m_Grid_Target.On_Parameter_Changed(pParameters, pParameter);
+
+	return( CSG_Module_Grid::On_Parameter_Changed(pParameters, pParameter) );
 }
 
 //---------------------------------------------------------
@@ -184,7 +188,9 @@ int CGrid_Resample::On_Parameters_Enable(CSG_Parameters *pParameters, CSG_Parame
 		pParameters->Set_Enabled("SCALE_DOWN", Scaling >= 0.0);
 	}
 
-	return( m_Grid_Target.On_Parameters_Enable(pParameters, pParameter) ? 1 : 0 );
+	m_Grid_Target.On_Parameters_Enable(pParameters, pParameter);
+
+	return( CSG_Module_Grid::On_Parameters_Enable(pParameters, pParameter) );
 }
 
 
@@ -221,33 +227,31 @@ bool CGrid_Resample::On_Execute(void)
 	}
 
 	//-------------------------------------------------
-	TSG_Grid_Interpolation	Interpolation;
+	TSG_Grid_Resampling	Resampling;
 
 	if( Input.Get_Cellsize() < Output.Get_Cellsize() )	// Up-Scaling...
 	{
 		switch( Parameters("SCALE_UP")->asInt() )
 		{
-		case  0:	Interpolation	= GRID_INTERPOLATION_NearestNeighbour;	break;
-		case  1:	Interpolation	= GRID_INTERPOLATION_Bilinear;			break;
-		case  2:	Interpolation	= GRID_INTERPOLATION_InverseDistance;	break;
-		case  3:	Interpolation	= GRID_INTERPOLATION_BicubicSpline;		break;
-		case  4:	Interpolation	= GRID_INTERPOLATION_BSpline;			break;
-		case  5:	Interpolation	= GRID_INTERPOLATION_Mean_Nodes;		break;
-		case  6:	Interpolation	= GRID_INTERPOLATION_Mean_Cells;		break;
-		case  7:	Interpolation	= GRID_INTERPOLATION_Minimum;			break;
-		case  8:	Interpolation	= GRID_INTERPOLATION_Maximum;			break;
-		case  9:	Interpolation	= GRID_INTERPOLATION_Majority;			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;
+		case  4:	Resampling	= GRID_RESAMPLING_Mean_Nodes;		break;
+		case  5:	Resampling	= GRID_RESAMPLING_Mean_Cells;		break;
+		case  6:	Resampling	= GRID_RESAMPLING_Minimum;			break;
+		case  7:	Resampling	= GRID_RESAMPLING_Maximum;			break;
+		case  8:	Resampling	= GRID_RESAMPLING_Majority;			break;
 		}
 	}
 	else	// Down-Scaling...
 	{
 		switch( Parameters("SCALE_DOWN")->asInt() )
 		{
-		case  0:	Interpolation	= GRID_INTERPOLATION_NearestNeighbour;	break;
-		case  1:	Interpolation	= GRID_INTERPOLATION_Bilinear;			break;
-		case  2:	Interpolation	= GRID_INTERPOLATION_InverseDistance;	break;
-		case  3:	Interpolation	= GRID_INTERPOLATION_BicubicSpline;		break;
-		case  4:	Interpolation	= GRID_INTERPOLATION_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;
 		}
 	}
 
@@ -262,7 +266,7 @@ bool CGrid_Resample::On_Execute(void)
 			Parameters("KEEP_TYPE")->asBool() ? pInput->Get_Type() : SG_DATATYPE_Undefined
 		);
 
-		pOutput->Assign(pInput, Interpolation);
+		pOutput->Assign(pInput, Resampling);
 		pOutput->Set_Name(pInput->Get_Name());
 
 		pOutputs->Add_Item(pOutput);
diff --git a/src/modules/grid/grid_tools/Grid_Resample.h b/src/modules/grid/grid_tools/Grid_Resample.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_tools/Grid_Shrink_Expand.cpp b/src/modules/grid/grid_tools/Grid_Shrink_Expand.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_tools/Grid_Shrink_Expand.h b/src/modules/grid/grid_tools/Grid_Shrink_Expand.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_tools/Grid_SortRaster.cpp b/src/modules/grid/grid_tools/Grid_SortRaster.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_tools/Grid_SortRaster.h b/src/modules/grid/grid_tools/Grid_SortRaster.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_tools/Grid_Support_Tool_Chains.cpp b/src/modules/grid/grid_tools/Grid_Support_Tool_Chains.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_tools/Grid_Support_Tool_Chains.h b/src/modules/grid/grid_tools/Grid_Support_Tool_Chains.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_tools/Grid_ThresholdBuffer.cpp b/src/modules/grid/grid_tools/Grid_ThresholdBuffer.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_tools/Grid_ThresholdBuffer.h b/src/modules/grid/grid_tools/Grid_ThresholdBuffer.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_tools/Grid_Tiling.cpp b/src/modules/grid/grid_tools/Grid_Tiling.cpp
old mode 100644
new mode 100755
index c9b05be..db44482
--- a/src/modules/grid/grid_tools/Grid_Tiling.cpp
+++ b/src/modules/grid/grid_tools/Grid_Tiling.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: Grid_Tiling.cpp 1921 2014-01-09 10:24:11Z oconrad $
+ * Version $Id: Grid_Tiling.cpp 2752 2016-01-15 15:26:55Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -236,7 +236,7 @@ bool CGrid_Tiling::On_Execute(void)
 	CSG_String				FilePath, BaseName;
 	TSG_Data_Type			Type;
 	TSG_Rect				Extent;
-	TSG_Grid_Interpolation	Interpolation;
+	TSG_Grid_Resampling	Interpolation;
 	CSG_Grid				*pGrid, *pTile;
 	CSG_Parameter_Grid_List	*pTiles;
 
@@ -263,7 +263,7 @@ bool CGrid_Tiling::On_Execute(void)
 		dx				= dCell * nx;
 		dy				= dCell * ny;
 		Type			= pGrid->Get_Type();
-		Interpolation	= GRID_INTERPOLATION_NearestNeighbour;
+		Interpolation	= GRID_RESAMPLING_NearestNeighbour;
 		break;
 
 	case 1:
@@ -277,7 +277,7 @@ bool CGrid_Tiling::On_Execute(void)
 		nx				= (int)(dx / dCell);
 		ny				= (int)(dy / dCell);
 		Type			= pGrid->Get_Type();
-		Interpolation	= GRID_INTERPOLATION_Undefined;
+		Interpolation	= GRID_RESAMPLING_Undefined;
 		break;
 	}
 
diff --git a/src/modules/grid/grid_tools/Grid_Tiling.h b/src/modules/grid/grid_tools/Grid_Tiling.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_tools/Grid_Transpose.cpp b/src/modules/grid/grid_tools/Grid_Transpose.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_tools/Grid_Transpose.h b/src/modules/grid/grid_tools/Grid_Transpose.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_tools/Grid_Value_Reclassify.cpp b/src/modules/grid/grid_tools/Grid_Value_Reclassify.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_tools/Grid_Value_Reclassify.h b/src/modules/grid/grid_tools/Grid_Value_Reclassify.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_tools/Grid_Value_Replace.cpp b/src/modules/grid/grid_tools/Grid_Value_Replace.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_tools/Grid_Value_Replace.h b/src/modules/grid/grid_tools/Grid_Value_Replace.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_tools/Grid_Value_Replace_Interactive.cpp b/src/modules/grid/grid_tools/Grid_Value_Replace_Interactive.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_tools/Grid_Value_Replace_Interactive.h b/src/modules/grid/grid_tools/Grid_Value_Replace_Interactive.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_tools/Grid_Value_Request.cpp b/src/modules/grid/grid_tools/Grid_Value_Request.cpp
old mode 100644
new mode 100755
index 9140478..44b2fef
--- a/src/modules/grid/grid_tools/Grid_Value_Request.cpp
+++ b/src/modules/grid/grid_tools/Grid_Value_Request.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: Grid_Value_Request.cpp 2318 2014-10-31 12:10:58Z oconrad $
+ * Version $Id: Grid_Value_Request.cpp 2752 2016-01-15 15:26:55Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -122,29 +122,22 @@ CGrid_Value_Request::CGrid_Value_Request(void)
 	);
 
 	Parameters.Add_Choice(
-		NULL	, "INTERPOLATION"	, _TL("Interpolation"),
+		NULL	, "RESAMPLING"		, _TL("Resampling"),
 		_TL(""),
-		CSG_String::Format(SG_T("%s|%s|%s|%s|%s|"),
-			_TL("Nearest Neighbor"),
+		CSG_String::Format("%s|%s|%s|%s|",
+			_TL("Nearest Neighbour"),
 			_TL("Bilinear Interpolation"),
-			_TL("Inverse Distance Interpolation"),
 			_TL("Bicubic Spline Interpolation"),
 			_TL("B-Spline Interpolation")
-		), 0
+		), 3
 	);
 
 	Set_Drag_Mode(MODULE_INTERACTIVE_DRAG_NONE);
 }
 
-//---------------------------------------------------------
-CGrid_Value_Request::~CGrid_Value_Request(void)
-{}
-
 
 ///////////////////////////////////////////////////////////
 //														 //
-//														 //
-//														 //
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
@@ -154,18 +147,25 @@ bool CGrid_Value_Request::On_Execute(void)
 
 	if( m_pGrids->Get_Count() > 0 )
 	{
-		m_Method		= Parameters("METHOD")			->asInt();
-		m_Interpolation	= Parameters("INTERPOLATION")	->asInt();
+		m_Method	= Parameters("METHOD")->asInt();
 
-		m_pTable		= Parameters("VALUES")			->asTable();
+		m_pTable	= Parameters("VALUES")->asTable();
 		m_pTable->Destroy();
 		m_pTable->Set_Name(_TL("Grid Values"));
 
+		switch( Parameters("RESAMPLING")->asInt() )
+		{
+		default:	m_Resampling	= GRID_RESAMPLING_NearestNeighbour;	break;
+		case  1:	m_Resampling	= GRID_RESAMPLING_Bilinear;			break;
+		case  2:	m_Resampling	= GRID_RESAMPLING_BicubicSpline;	break;
+		case  3:	m_Resampling	= GRID_RESAMPLING_BSpline;			break;
+		}
+
 		switch( m_Method )
 		{
 		case 0: default:
-			m_pTable->Add_Field(_TL("NAME")		, SG_DATATYPE_String);
-			m_pTable->Add_Field(_TL("VALUE")	, SG_DATATYPE_Double);
+			m_pTable->Add_Field(_TL("NAME" ), SG_DATATYPE_String);
+			m_pTable->Add_Field(_TL("VALUE"), SG_DATATYPE_Double);
 
 			m_pTable->Add_Record()->Set_Value(FIELD_NAME, _TL("X World"));
 			m_pTable->Add_Record()->Set_Value(FIELD_NAME, _TL("Y World"));
@@ -179,10 +179,10 @@ bool CGrid_Value_Request::On_Execute(void)
 			break;
 
 		case 1:
-			m_pTable->Add_Field(_TL("X World")		, SG_DATATYPE_Double);
-			m_pTable->Add_Field(_TL("Y World")		, SG_DATATYPE_Double);
-			m_pTable->Add_Field(_TL("X Grid 1")		, SG_DATATYPE_Int);
-			m_pTable->Add_Field(_TL("Y Grid 1")		, SG_DATATYPE_Int);
+			m_pTable->Add_Field(_TL("X World" ), SG_DATATYPE_Double);
+			m_pTable->Add_Field(_TL("Y World" ), SG_DATATYPE_Double);
+			m_pTable->Add_Field(_TL("X Grid 1"), SG_DATATYPE_Int);
+			m_pTable->Add_Field(_TL("Y Grid 1"), SG_DATATYPE_Int);
 
 			for(iGrid=0; iGrid<m_pGrids->Get_Count(); iGrid++)
 			{
@@ -224,7 +224,7 @@ bool CGrid_Value_Request::On_Execute_Position(CSG_Point ptWorld, TSG_Module_Inte
 
 				for(iGrid=0; iGrid<m_pGrids->Get_Count(); iGrid++)
 				{
-					if( m_pGrids->asGrid(iGrid)->Get_Value(ptWorld, Value, m_Interpolation, false, true) )
+					if( m_pGrids->asGrid(iGrid)->Get_Value(ptWorld, Value, m_Resampling, false, true) )
 					{
 						m_pTable->Get_Record(iGrid + FIELD_GRIDS)->Set_Value(FIELD_VALUE, Value);
 					}
@@ -254,7 +254,7 @@ bool CGrid_Value_Request::On_Execute_Position(CSG_Point ptWorld, TSG_Module_Inte
 
 				for(iGrid=0; iGrid<m_pGrids->Get_Count(); iGrid++)
 				{
-					if( m_pGrids->asGrid(iGrid)->Get_Value(ptWorld, Value, m_Interpolation, false, true) )
+					if( m_pGrids->asGrid(iGrid)->Get_Value(ptWorld, Value, m_Resampling, false, true) )
 					{
 						pRecord->Set_Value(FIELD_GRIDS + iGrid, Value);
 					}
diff --git a/src/modules/grid/grid_tools/Grid_Value_Request.h b/src/modules/grid/grid_tools/Grid_Value_Request.h
old mode 100644
new mode 100755
index a5625cb..1059843
--- a/src/modules/grid/grid_tools/Grid_Value_Request.h
+++ b/src/modules/grid/grid_tools/Grid_Value_Request.h
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: Grid_Value_Request.h 1921 2014-01-09 10:24:11Z oconrad $
+ * Version $Id: Grid_Value_Request.h 2752 2016-01-15 15:26:55Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -79,7 +79,6 @@ class CGrid_Value_Request : public CSG_Module_Interactive
 {
 public:
 	CGrid_Value_Request(void);
-	virtual ~CGrid_Value_Request(void);
 
 	virtual CSG_String		Get_MenuPath		(void)	{	return( _TL("A:Grid|Values") );	}
 
@@ -93,7 +92,9 @@ protected:
 
 private:
 
-	int						m_Method, m_Interpolation;
+	int						m_Method;
+	
+	TSG_Grid_Resampling		m_Resampling;
 
 	CSG_Table				*m_pTable;
 
@@ -101,4 +102,12 @@ private:
 
 };
 
+
+///////////////////////////////////////////////////////////
+//														 //
+//														 //
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
 #endif // #ifndef HEADER_INCLUDED__Grid_Value_Request_H
diff --git a/src/modules/grid/grid_tools/Grid_Value_Type.cpp b/src/modules/grid/grid_tools/Grid_Value_Type.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_tools/Grid_Value_Type.h b/src/modules/grid/grid_tools/Grid_Value_Type.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_tools/GridsFromTableAndGrid.cpp b/src/modules/grid/grid_tools/GridsFromTableAndGrid.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_tools/GridsFromTableAndGrid.h b/src/modules/grid/grid_tools/GridsFromTableAndGrid.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_tools/MLB_Interface.cpp b/src/modules/grid/grid_tools/MLB_Interface.cpp
old mode 100644
new mode 100755
index 166c4e3..f013761
--- a/src/modules/grid/grid_tools/MLB_Interface.cpp
+++ b/src/modules/grid/grid_tools/MLB_Interface.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: MLB_Interface.cpp 2528 2015-06-30 16:08:22Z oconrad $
+ * Version $Id: MLB_Interface.cpp 2817 2016-02-23 15:16:48Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -149,38 +149,50 @@ CSG_Module *		Create_Module(int i)
 	{
 	case  0:	return( new CGrid_Resample );
 	case  1:	return( new CGrid_Aggregate );
+
 	case  2:	return( new CGrid_Clip_Interactive );
+	case 31: 	return( new CGrid_Clip );
+
 	case  3:	return( new CGrid_Merge );
 	case  4: 	return( new CConstantGrid );
+
 	case  5:	return( new CGrid_Completion );
 	case  6:	return( new CGrid_Gaps_OneCell );
 	case  7:	return( new CGrid_Gaps );
+	case 25: 	return( new CGrid_Gaps_Spline_Fill );
+	case 29: 	return( new CGrid_Gaps_Resampling );
+
 	case  8:	return( new CGrid_Buffer );
 	case  9: 	return( new CThresholdBuffer );
 	case 10:	return( new CGrid_Proximity_Buffer );
+
 	case 11:	return( new CGrid_Value_Type );
 	case 12:	return( new CGrid_Value_Replace );
 	case 13:	return( new CGrid_Value_Replace_Interactive );
 	case 14:	return( new CGrid_Value_Request );
 	case 15:	return( new CGrid_Value_Reclassify );
 	case 16:	return( new CGrid_Fill );
+
 	case 17: 	return( new CCropToData );
+
 	case 18: 	return( new CInvertNoData );
-	case 19:	return( new CGrid_Orientation );
+
 	case 20: 	return( new CCombineGrids );
 	case 21: 	return( new CSortRaster );
 	case 22: 	return( new CGridsFromTableAndGrid );
 	case 23: 	return( new CCreateGridSystem );
 	case 24: 	return( new CGrid_Mask );
-	case 25: 	return( new CGrid_Gaps_Spline_Fill );
+
 	case 26: 	return( new CGrid_Proximity );
 	case 27: 	return( new CGrid_Tiling );
 	case 28: 	return( new CGrid_Shrink_Expand );
-	case 29: 	return( new CGrid_Gaps_Resampling );
 	case 30: 	return( new CGrid_Transpose );
-	case 31: 	return( new CGrid_Clip );
 	case 32: 	return( new CSelect_Grid_From_List );
 
+	case 33:	return( new CGrid_Copy );
+	case 34:	return( new CGrid_Invert );
+	case 35:	return( new CGrid_Mirror );
+
 	case 40:	return( NULL );
 	default:	return( MLB_INTERFACE_SKIP_MODULE );
 	}
diff --git a/src/modules/grid/grid_tools/MLB_Interface.h b/src/modules/grid/grid_tools/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_tools/Makefile.am b/src/modules/grid/grid_tools/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_visualisation/Grid_3D_Image.cpp b/src/modules/grid/grid_visualisation/Grid_3D_Image.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_visualisation/Grid_3D_Image.h b/src/modules/grid/grid_visualisation/Grid_3D_Image.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_visualisation/Grid_Aspect_Slope_Map.cpp b/src/modules/grid/grid_visualisation/Grid_Aspect_Slope_Map.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_visualisation/Grid_Aspect_Slope_Map.h b/src/modules/grid/grid_visualisation/Grid_Aspect_Slope_Map.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_visualisation/Grid_Color_Blend.cpp b/src/modules/grid/grid_visualisation/Grid_Color_Blend.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_visualisation/Grid_Color_Blend.h b/src/modules/grid/grid_visualisation/Grid_Color_Blend.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_visualisation/Grid_Color_Rotate.cpp b/src/modules/grid/grid_visualisation/Grid_Color_Rotate.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_visualisation/Grid_Color_Rotate.h b/src/modules/grid/grid_visualisation/Grid_Color_Rotate.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_visualisation/Grid_Color_Triangle.cpp b/src/modules/grid/grid_visualisation/Grid_Color_Triangle.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_visualisation/Grid_Color_Triangle.h b/src/modules/grid/grid_visualisation/Grid_Color_Triangle.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_visualisation/Grid_Colors_Fit.cpp b/src/modules/grid/grid_visualisation/Grid_Colors_Fit.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_visualisation/Grid_Colors_Fit.h b/src/modules/grid/grid_visualisation/Grid_Colors_Fit.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_visualisation/Grid_Histogram_Surface.cpp b/src/modules/grid/grid_visualisation/Grid_Histogram_Surface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_visualisation/Grid_Histogram_Surface.h b/src/modules/grid/grid_visualisation/Grid_Histogram_Surface.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_visualisation/Grid_LUT_Assign.cpp b/src/modules/grid/grid_visualisation/Grid_LUT_Assign.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_visualisation/Grid_LUT_Assign.h b/src/modules/grid/grid_visualisation/Grid_LUT_Assign.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_visualisation/Grid_RGB_Composite.cpp b/src/modules/grid/grid_visualisation/Grid_RGB_Composite.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_visualisation/Grid_RGB_Composite.h b/src/modules/grid/grid_visualisation/Grid_RGB_Composite.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_visualisation/Grid_Terrain_Map.cpp b/src/modules/grid/grid_visualisation/Grid_Terrain_Map.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_visualisation/Grid_Terrain_Map.h b/src/modules/grid/grid_visualisation/Grid_Terrain_Map.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_visualisation/MLB_Interface.cpp b/src/modules/grid/grid_visualisation/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_visualisation/MLB_Interface.h b/src/modules/grid/grid_visualisation/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/grid/grid_visualisation/Makefile.am b/src/modules/grid/grid_visualisation/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/Makefile.am b/src/modules/imagery/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_classification/MLB_Interface.cpp b/src/modules/imagery/imagery_classification/MLB_Interface.cpp
old mode 100644
new mode 100755
index 9d954ef..bb4067a
--- a/src/modules/imagery/imagery_classification/MLB_Interface.cpp
+++ b/src/modules/imagery/imagery_classification/MLB_Interface.cpp
@@ -103,6 +103,7 @@ CSG_String Get_Info(int i)
 #include "decision_tree.h"
 #include "classify_supervised_polygons.h"
 #include "classification_quality.h"
+#include "classify_isocluster.h"
 
 
 //---------------------------------------------------------
@@ -119,8 +120,9 @@ CSG_Module *		Create_Module(int i)
 	case  4:	return( new CPolygon_Classify_Supervised( true) );
 	case  5:	return( new CPolygon_Classify_Supervised(false) );
 	case  6:	return( new CClassification_Quality );
+	case  7:	return( new CGrid_Cluster_ISODATA );
 
-	case  7:	return( NULL );
+	case  8:	return( NULL );
 	default:	return( MLB_INTERFACE_SKIP_MODULE );
 	}
 }
diff --git a/src/modules/imagery/imagery_classification/MLB_Interface.h b/src/modules/imagery/imagery_classification/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_classification/Makefile.am b/src/modules/imagery/imagery_classification/Makefile.am
old mode 100644
new mode 100755
index 9bd0932..a3f4c33
--- a/src/modules/imagery/imagery_classification/Makefile.am
+++ b/src/modules/imagery/imagery_classification/Makefile.am
@@ -13,15 +13,19 @@ libimagery_classification_la_SOURCES =\
 change_detection.cpp\
 classification_quality.cpp\
 classify_cluster_analysis.cpp\
+classify_isocluster.cpp\
 classify_supervised.cpp\
 classify_supervised_polygons.cpp\
+cluster_isodata.cpp\
 decision_tree.cpp\
 MLB_Interface.cpp\
 change_detection.h\
 classification_quality.h\
 classify_cluster_analysis.h\
+classify_isocluster.h\
 classify_supervised.h\
 classify_supervised_polygons.h\
+cluster_isodata.h\
 decision_tree.h\
 MLB_Interface.h
 
diff --git a/src/modules/imagery/imagery_classification/Makefile.in b/src/modules/imagery/imagery_classification/Makefile.in
index 32d5db8..a265c69 100644
--- a/src/modules/imagery/imagery_classification/Makefile.in
+++ b/src/modules/imagery/imagery_classification/Makefile.in
@@ -129,7 +129,8 @@ libimagery_classification_la_DEPENDENCIES =  \
 	$(top_srcdir)/src/saga_core/saga_api/libsaga_api.la
 am_libimagery_classification_la_OBJECTS = change_detection.lo \
 	classification_quality.lo classify_cluster_analysis.lo \
-	classify_supervised.lo classify_supervised_polygons.lo \
+	classify_isocluster.lo classify_supervised.lo \
+	classify_supervised_polygons.lo cluster_isodata.lo \
 	decision_tree.lo MLB_Interface.lo
 libimagery_classification_la_OBJECTS =  \
 	$(am_libimagery_classification_la_OBJECTS)
@@ -374,15 +375,19 @@ libimagery_classification_la_SOURCES = \
 change_detection.cpp\
 classification_quality.cpp\
 classify_cluster_analysis.cpp\
+classify_isocluster.cpp\
 classify_supervised.cpp\
 classify_supervised_polygons.cpp\
+cluster_isodata.cpp\
 decision_tree.cpp\
 MLB_Interface.cpp\
 change_detection.h\
 classification_quality.h\
 classify_cluster_analysis.h\
+classify_isocluster.h\
 classify_supervised.h\
 classify_supervised_polygons.h\
+cluster_isodata.h\
 decision_tree.h\
 MLB_Interface.h
 
@@ -470,8 +475,10 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/change_detection.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/classification_quality.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/classify_cluster_analysis.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/classify_isocluster.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/classify_supervised.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/classify_supervised_polygons.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/cluster_isodata.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/decision_tree.Plo at am__quote@
 
 .cpp.o:
diff --git a/src/modules/imagery/imagery_classification/change_detection.cpp b/src/modules/imagery/imagery_classification/change_detection.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_classification/change_detection.h b/src/modules/imagery/imagery_classification/change_detection.h
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_classification/classification_quality.cpp b/src/modules/imagery/imagery_classification/classification_quality.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_classification/classification_quality.h b/src/modules/imagery/imagery_classification/classification_quality.h
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_classification/classify_cluster_analysis.cpp b/src/modules/imagery/imagery_classification/classify_cluster_analysis.cpp
old mode 100644
new mode 100755
index 0bbbf42..e4dcfef
--- a/src/modules/imagery/imagery_classification/classify_cluster_analysis.cpp
+++ b/src/modules/imagery/imagery_classification/classify_cluster_analysis.cpp
@@ -74,7 +74,7 @@
 CGrid_Cluster_Analysis::CGrid_Cluster_Analysis(void)
 {
 	//-----------------------------------------------------
-	Set_Name		(_TL("Cluster Analysis for Grids"));
+	Set_Name		(_TL("K-Means Clustering for Grids"));
 
 	Set_Author		(SG_T("O.Conrad (c) 2001"));
 
@@ -102,7 +102,7 @@ CGrid_Cluster_Analysis::CGrid_Cluster_Analysis(void)
 	Parameters.Add_Grid(
 		NULL	, "CLUSTER"		, _TL("Clusters"),
 		_TL(""),
-		PARAMETER_OUTPUT, true, SG_DATATYPE_Int
+		PARAMETER_OUTPUT, true, SG_DATATYPE_Byte
 	);
 
 	Parameters.Add_Table(
@@ -138,6 +138,12 @@ CGrid_Cluster_Analysis::CGrid_Cluster_Analysis(void)
 		_TL("Automatically normalise grids by standard deviation before clustering."),
 		PARAMETER_TYPE_Bool, false
 	);
+
+	Parameters.Add_Value(
+		NULL	, "RGB_COLORS"	, _TL("Update Colors from Features"),
+		_TL("Use the first three features in list to obtain blue, green, red components for class colour in look-up table."),
+		PARAMETER_TYPE_Bool, true
+	)->Set_UseInCMD(false);
 
 	//-----------------------------------------------------
 	CSG_Parameter	*pNode	=
@@ -148,8 +154,6 @@ CGrid_Cluster_Analysis::CGrid_Cluster_Analysis(void)
 
 ///////////////////////////////////////////////////////////
 //														 //
-//														 //
-//														 //
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
@@ -160,15 +164,18 @@ int CGrid_Cluster_Analysis::On_Parameters_Enable(CSG_Parameters *pParameters, CS
 		pParameters->Set_Enabled("MAXITER"   , pParameter->asBool() == false);
 		pParameters->Set_Enabled("UPDATEVIEW", pParameter->asBool() == true );
 	}
-
-	return( 1 );
+
+	if( !SG_STR_CMP(pParameter->Get_Identifier(), "GRIDS") )
+	{
+		pParameters->Set_Enabled("RGB_COLORS", pParameter->asGridList()->Get_Count() >= 3);
+	}
+
+	return( CSG_Module_Grid::On_Parameters_Enable(pParameters, pParameter) );
 }
 
 
 ///////////////////////////////////////////////////////////
 //														 //
-//														 //
-//														 //
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
@@ -195,7 +202,7 @@ bool CGrid_Cluster_Analysis::On_Execute(void)
 	}
 
 	//-----------------------------------------------------
-	pCluster->Set_NoData_Value(-1.0);
+	pCluster->Set_NoData_Value(0.0);
 
 	for(iElement=0, nElements=0; iElement<Get_NCells() && Set_Progress_NCells(iElement); iElement++)
 	{
@@ -211,11 +218,11 @@ bool CGrid_Cluster_Analysis::On_Execute(void)
 
 		if( bNoData || !Analysis.Add_Element() )
 		{
-			pCluster->Set_Value(iElement, -1);
+			pCluster->Set_Value(iElement, 0);
 		}
 		else
 		{
-			pCluster->Set_Value(iElement, 0);
+			pCluster->Set_Value(iElement, 1);
 
 			for(iFeature=0; iFeature<pGrids->Get_Count(); iFeature++)
 			{
@@ -251,13 +258,13 @@ bool CGrid_Cluster_Analysis::On_Execute(void)
 
 		if( !pCluster->is_NoData(iElement) )
 		{
-			pCluster->Set_Value(iElement, Analysis.Get_Cluster(nElements++));
+			pCluster->Set_Value(iElement, 1 + Analysis.Get_Cluster(nElements++));
 		}
 	}
 
 	Save_Statistics(pGrids, bNormalize, Analysis);
 
-	Save_LUT(pCluster, Analysis.Get_nClusters());
+	Save_LUT(pCluster);
 
 	return( bResult );
 }
@@ -328,37 +335,48 @@ void CGrid_Cluster_Analysis::Save_Statistics(CSG_Parameter_Grid_List *pGrids, bo
 }
 
 //---------------------------------------------------------
-void CGrid_Cluster_Analysis::Save_LUT(CSG_Grid *pCluster, int nClusters)
+void CGrid_Cluster_Analysis::Save_LUT(CSG_Grid *pCluster)
 {
-	CSG_Parameters	Parms;
+	CSG_Parameter	*pLUT	= DataObject_Get_Parameter(pCluster, "LUT");
+
+	if( pLUT && pLUT->asTable() )
+	{
+		CSG_Parameter_Grid_List	*pGrids	= Parameters("GRIDS")->asGridList();
 
-	if( DataObject_Get_Parameters(pCluster, Parms) && Parms("COLORS_TYPE") && Parms("LUT") )
-	{
-		CSG_Table_Record	*pClass;
-		CSG_Table			*pLUT	= Parms("LUT")->asTable();
-
-		for(int iCluster=0; iCluster<nClusters; iCluster++)
-		{
-			if( (pClass = pLUT->Get_Record(iCluster)) == NULL )
-			{
-				pClass	= pLUT->Add_Record();
-				pClass->Set_Value(0, SG_GET_RGB(rand() * 255.0 / RAND_MAX, rand() * 255.0 / RAND_MAX, rand() * 255.0 / RAND_MAX));
-			}
-
-			pClass->Set_Value(1, CSG_String::Format(SG_T("%s %d"), _TL("Class"), iCluster + 1));
-			pClass->Set_Value(2, CSG_String::Format(SG_T("%s %d"), _TL("Class"), iCluster + 1));
-			pClass->Set_Value(3, iCluster);
-			pClass->Set_Value(4, iCluster);
-		}
+		CSG_Table	&Statistics	= *Parameters("STATISTICS")->asTable();
 
-		while( pLUT->Get_Record_Count() > nClusters )
+		bool	bRGB	= pGrids->Get_Count() >= 3 && Parameters("RGB_COLORS")->asBool();
+
+		for(int iCluster=0; iCluster<Statistics.Get_Count(); iCluster++)
 		{
-			pLUT->Del_Record(pLUT->Get_Record_Count() - 1);
+			CSG_Table_Record	*pClass	= pLUT->asTable()->Get_Record(iCluster);
+
+			if( !pClass )
+			{
+				(pClass	= pLUT->asTable()->Add_Record())->Set_Value(0, SG_Color_Get_Random());
+			}
+
+			pClass->Set_Value(1, CSG_String::Format("%s %d", _TL("Cluster"), iCluster + 1));
+			pClass->Set_Value(2, "");
+			pClass->Set_Value(3, iCluster + 1);
+			pClass->Set_Value(4, iCluster + 1);
+
+			if( bRGB )
+			{
+				#define SET_COLOR_COMPONENT(c, i)	c = (int)(127 + (Statistics[iCluster].asDouble(3 + i) - pGrids->asGrid(i)->Get_Mean()) * 127 / pGrids->asGrid(i)->Get_StdDev()); if( c < 0 ) c = 0; else if( c > 255 ) c = 255;
+
+				int	r; SET_COLOR_COMPONENT(r, 2);
+				int	g; SET_COLOR_COMPONENT(g, 1);
+				int	b; SET_COLOR_COMPONENT(b, 0);
+
+				pClass->Set_Value(0, SG_GET_RGB(r, g, b));
+			}
 		}
 
-		Parms("COLORS_TYPE")->Set_Value(1);	// Color Classification Type: Lookup Table
-
-		DataObject_Set_Parameters(pCluster, Parms);
+		pLUT->asTable()->Set_Record_Count(Statistics.Get_Count());
+
+		DataObject_Set_Parameter(pCluster, pLUT);
+		DataObject_Set_Parameter(pCluster, "COLORS_TYPE", 1);	// Color Classification Type: Lookup Table
 	}
 }
 
@@ -376,7 +394,7 @@ void CGrid_Cluster_Analysis::Save_LUT(CSG_Grid *pCluster, int nClusters)
 //														 //
 ///////////////////////////////////////////////////////////
 //														 //
-//				slow, but safes memory !				 //
+//				slow, but saves memory !				 //
 //														 //
 //														 //
 //														 //
@@ -457,7 +475,7 @@ bool CGrid_Cluster_Analysis::_On_Execute(void)
 	}
 
 	//-------------------------------------------------
-	Save_LUT(pCluster, nCluster);
+	Save_LUT(pCluster);
 
 	//-------------------------------------------------
 	int					iCluster, iFeature;
diff --git a/src/modules/imagery/imagery_classification/classify_cluster_analysis.h b/src/modules/imagery/imagery_classification/classify_cluster_analysis.h
old mode 100644
new mode 100755
index 5628580..5547be4
--- a/src/modules/imagery/imagery_classification/classify_cluster_analysis.h
+++ b/src/modules/imagery/imagery_classification/classify_cluster_analysis.h
@@ -80,6 +80,8 @@ class CGrid_Cluster_Analysis : public CSG_Module_Grid
 public:
 	CGrid_Cluster_Analysis(void);
 
+	virtual CSG_String		Get_MenuPath			(void)	{	return( _TL("Unsupervised") );	}
+
 
 protected:
 
@@ -91,7 +93,7 @@ protected:
 private:
 
 	void					Save_Statistics			(CSG_Parameter_Grid_List *pGrids, bool bNormalize, const CSG_Cluster_Analysis &Analysis);
-	void					Save_LUT				(CSG_Grid *pCluster, int nClusters);
+	void					Save_LUT				(CSG_Grid *pCluster);
 
 
 	bool					_On_Execute				(void);
diff --git a/src/modules/imagery/imagery_classification/classify_isocluster.cpp b/src/modules/imagery/imagery_classification/classify_isocluster.cpp
new file mode 100755
index 0000000..3786c8c
--- /dev/null
+++ b/src/modules/imagery/imagery_classification/classify_isocluster.cpp
@@ -0,0 +1,380 @@
+
+///////////////////////////////////////////////////////////
+//                                                       //
+//                         SAGA                          //
+//                                                       //
+//      System for Automated Geoscientific Analyses      //
+//                                                       //
+//                    Module Library:                    //
+//                imagery_classification                 //
+//                                                       //
+//-------------------------------------------------------//
+//                                                       //
+//                classify_isocluster.cpp                //
+//                                                       //
+//                 Copyright (C) 2016 by                 //
+//                      Olaf Conrad                      //
+//                                                       //
+//-------------------------------------------------------//
+//                                                       //
+// This file is part of 'SAGA - System for Automated     //
+// Geoscientific Analyses'. SAGA is free software; you   //
+// can redistribute it and/or modify it under the terms  //
+// of the GNU General Public License as published by the //
+// Free Software Foundation; version 2 of the License.   //
+//                                                       //
+// SAGA is distributed in the hope that it will be       //
+// useful, but WITHOUT ANY WARRANTY; without even the    //
+// implied warranty of MERCHANTABILITY or FITNESS FOR A  //
+// PARTICULAR PURPOSE. See the GNU General Public        //
+// License for more details.                             //
+//                                                       //
+// You should have received a copy of the GNU General    //
+// Public License along with this program; if not,       //
+// write to the Free Software Foundation, Inc.,          //
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307,   //
+// USA.                                                  //
+//                                                       //
+//-------------------------------------------------------//
+//                                                       //
+//    e-mail:     oconrad at saga-gis.org                   //
+//                                                       //
+//    contact:    Olaf Conrad                            //
+//                Institute of Geography                 //
+//                University of Hamburg                  //
+//                Germany                                //
+//                                                       //
+///////////////////////////////////////////////////////////
+
+///////////////////////////////////////////////////////////
+//														 //
+//														 //
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+#include "classify_isocluster.h"
+
+//---------------------------------------------------------
+#include "cluster_isodata.h"
+
+
+///////////////////////////////////////////////////////////
+//														 //
+//														 //
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+CGrid_Cluster_ISODATA::CGrid_Cluster_ISODATA(void)
+{
+	//-----------------------------------------------------
+	Set_Name		(_TL("ISODATA Clustering for Grids"));
+
+	Set_Author		("O.Conrad (c) 2016");
+
+	Set_Description	(_TW(
+		"This tool executes the Isodata unsupervised "
+		"classification - clustering algorithm. Isodata "
+		"stands for Iterative Self-Organizing Data Analysis "
+		"Techniques. This is a more sophisticated algorithm "
+		"which allows the number of clusters to be "
+		"automatically adjusted during the iteration by "
+		"merging similar clusters and splitting clusters "
+		"with large standard deviations.\n"
+		"The tool is based on Christos Iosifidis' Isodata implementation:\n"
+		"<a target=\"_blank\" href=\"http://users.ntua.gr/chiossif/Free_As_Freedom_Software/isodata.c\">isodata.c</a>\n"
+		"\n"
+		"Further references:\n"
+		"Memarsadeghi, N., Mount, D. M., Netanyahu, N. S., Le Moigne, J. (2007): "
+		"A Fast Implementation of the ISODATA Clustering Algorithm. "
+		"International Journal of Computational Geometry and Applications, 17, 71-103. "
+		"<a target=\"_blank\" href=\"https://www.cs.umd.edu/~mount/Projects/ISODATA/ijcga07-isodata.pdf\">online</a>\n"
+		"\n"
+		"<a target=\"_blank\" href=\"https://www.cs.umd.edu/~mount/Projects/ISODATA/\">A Fast Implementation of the ISODATA Clustering Algorithm</a>"
+	));
+
+	//-----------------------------------------------------
+	Parameters.Add_Grid_List(
+		NULL	, "FEATURES"	, _TL("Features"),
+		_TL(""),
+		PARAMETER_INPUT
+	);
+
+	Parameters.Add_Grid(
+		NULL	, "CLUSTER"		, _TL("Clusters"),
+		_TL(""),
+		PARAMETER_OUTPUT, true, SG_DATATYPE_Byte
+	);
+
+	Parameters.Add_Table(
+		NULL	, "STATISTICS"	, _TL("Statistics"),
+		_TL(""),
+		PARAMETER_OUTPUT
+	);
+
+	//-----------------------------------------------------
+	Parameters.Add_Value(
+		NULL	, "NORMALIZE"	, _TL("Normalize"),
+		_TL(""),
+		PARAMETER_TYPE_Bool, false
+	);
+
+	Parameters.Add_Value(
+		NULL	, "ITERATIONS"	, _TL("Maximum Number of Iterations"),
+		_TL(""),
+		PARAMETER_TYPE_Int, 20, 3, true
+	);
+
+	Parameters.Add_Value(
+		NULL	, "CLUSTER_INI"	, _TL("Initial Number of Clusters"),
+		_TL(""),
+		PARAMETER_TYPE_Int, 5, 0, true
+	);
+
+	Parameters.Add_Value(
+		NULL	, "CLUSTER_MAX"	, _TL("Maximum Number of Clusters"),
+		_TL(""),
+		PARAMETER_TYPE_Int, 16, 3, true
+	);
+
+	Parameters.Add_Value(
+		NULL	, "SAMPLES_MIN"	, _TL("Minimum Number of Samples in a Cluster"),
+		_TL(""),
+		PARAMETER_TYPE_Int, 5, 2, true
+	);
+
+	//Parameters.Add_Value(
+	//	NULL	, "DIST_MAX"	, _TL("Distance Threshold"),
+	//	_TL("Clusters, which are closer than this distance to each other, are merged."),
+	//	PARAMETER_TYPE_Double, 0.001, 0.0, true
+	//);
+
+	//Parameters.Add_Value(
+	//	NULL	, "STDV_MAX"	, _TL("Maximum Standard Deviation within a Cluster"),
+	//	_TL(""),
+	//	PARAMETER_TYPE_Double, 10.0, 0.0, true
+	//);
+
+	Parameters.Add_Value(
+		NULL	, "RGB_COLORS"	, _TL("Update Colors from Features"),
+		_TL("Use the first three features in list to obtain blue, green, red components for class colour in look-up table."),
+		PARAMETER_TYPE_Bool, true
+	)->Set_UseInCMD(false);
+}
+
+
+///////////////////////////////////////////////////////////
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+int CGrid_Cluster_ISODATA::On_Parameter_Changed(CSG_Parameters *pParameters, CSG_Parameter *pParameter)
+{
+	return(CSG_Module_Grid::On_Parameter_Changed(pParameters, pParameter));
+}
+
+//---------------------------------------------------------
+int CGrid_Cluster_ISODATA::On_Parameters_Enable(CSG_Parameters *pParameters, CSG_Parameter *pParameter)
+{
+	if( !SG_STR_CMP(pParameter->Get_Identifier(), "FEATURES") )
+	{
+		pParameters->Set_Enabled("RGB_COLORS", pParameter->asGridList()->Get_Count() >= 3);
+	}
+
+	return( CSG_Module_Grid::On_Parameters_Enable(pParameters, pParameter) );
+}
+
+
+///////////////////////////////////////////////////////////
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+bool CGrid_Cluster_ISODATA::On_Execute(void)
+{
+	int		iFeature;
+	sLong	iCell;
+	size_t	iSample, iCluster;
+
+	//-----------------------------------------------------
+	CSG_Parameter_Grid_List	*pFeatures	= Parameters("FEATURES")->asGridList();
+
+	CSG_Grid	*pCluster	= Parameters("CLUSTER")->asGrid();
+
+	pCluster->Set_NoData_Value(0.0);
+
+	bool	bNormalize	= Parameters("NORMALIZE")->asBool();
+
+	//-----------------------------------------------------
+	TSG_Data_Type	Data_Type;
+
+	if( bNormalize )
+	{
+		Data_Type	= SG_DATATYPE_Float;
+	}
+	else
+	{
+		Data_Type	= SG_DATATYPE_Char;
+
+		for(iFeature=0; iFeature<pFeatures->Get_Count(); iFeature++)
+		{
+			if( Data_Type < pFeatures->asGrid(iFeature)->Get_Type() )
+			{
+				Data_Type	= pFeatures->asGrid(iFeature)->Get_Type();
+			}
+		}
+
+		Message_Add(CSG_String::Format("\n%s: %s", _TL("internal data type"), SG_Data_Type_Get_Name(Data_Type).c_str()), false);
+	}
+
+	//-----------------------------------------------------
+	CCluster_ISODATA	Cluster(pFeatures->Get_Count(), Data_Type);
+
+	Cluster.Set_Max_Iterations(Parameters("ITERATIONS" )->asInt   ());
+	Cluster.Set_Ini_Clusters  (Parameters("CLUSTER_INI")->asInt   ());
+	Cluster.Set_Max_Clusters  (Parameters("CLUSTER_MAX")->asInt   ());
+	Cluster.Set_Min_Samples   (Parameters("SAMPLES_MIN")->asInt   ());
+//	Cluster.Set_Max_Distance  (Parameters("DIST_MAX"   )->asDouble());
+//	Cluster.Set_Max_StdDev    (Parameters("STDV_MAX"   )->asDouble());
+
+	//-----------------------------------------------------
+	for(iCell=0; iCell<Get_NCells() && Set_Progress_NCells(iCell); iCell++)
+	{
+		CSG_Vector	Features(pFeatures->Get_Count());
+
+		for(iFeature=0; Features.Get_Size() && iFeature<pFeatures->Get_Count(); iFeature++)
+		{
+			if( pFeatures->asGrid(iFeature)->is_NoData(iCell) )
+			{
+				Features.Destroy();
+			}
+			else
+			{
+				Features[iFeature]	= pFeatures->asGrid(iFeature)->asDouble(iCell);
+
+				if( bNormalize )
+				{
+					Features[iFeature]	= (Features[iFeature] - pFeatures->asGrid(iFeature)->Get_Mean()) / pFeatures->asGrid(iFeature)->Get_StdDev();
+				}
+			}
+		}
+
+		if( Features.Get_Size() )
+		{
+			Cluster.Add_Sample(Features);
+
+			pCluster->Set_Value(iCell, 1.0);
+		}
+		else
+		{
+			pCluster->Set_Value(iCell, 0.0);
+		}
+	}
+
+	//-----------------------------------------------------
+	if( !Cluster.Run() )
+	{
+		return( false );
+	}
+
+	//-----------------------------------------------------
+	for(iCell=0, iSample=0; iCell<Get_NCells() && Set_Progress_NCells(iCell); iCell++)
+	{
+		if( pCluster->asInt(iCell) )
+		{
+			pCluster->Set_Value(iCell, 1 + Cluster.Get_Cluster(iSample++));
+		}
+	}
+
+	//-----------------------------------------------------
+	CSG_Table	&Statistics	= *Parameters("STATISTICS")->asTable();
+
+	Statistics.Destroy();
+	Statistics.Set_Name(_TL("ISODATA Cluster Statistics"));
+
+	Statistics.Add_Field("CLUSTER" , SG_DATATYPE_Int);
+	Statistics.Add_Field("ELEMENTS", SG_DATATYPE_Int);
+	Statistics.Add_Field("MEANDIST", SG_DATATYPE_Double);
+
+	for(iFeature=0; iFeature<pFeatures->Get_Count(); iFeature++)
+	{
+		Statistics.Add_Field(CSG_String::Format("MEAN.%s", pFeatures->asGrid(iFeature)->Get_Name()), SG_DATATYPE_Double);
+		Statistics.Add_Field(CSG_String::Format("STDV.%s", pFeatures->asGrid(iFeature)->Get_Name()), SG_DATATYPE_Double);
+	}
+
+	for(iCluster=0; iCluster<Cluster.Get_Cluster_Count(); iCluster++)
+	{
+		CSG_Table_Record	&Record	= *Statistics.Add_Record();
+
+		Record.Set_Value(0, iCluster + 1);
+		Record.Set_Value(1, Cluster.Get_Cluster_Count (iCluster));
+		Record.Set_Value(2, Cluster.Get_Cluster_StdDev(iCluster));
+
+		for(iFeature=0; iFeature<pFeatures->Get_Count(); iFeature++)
+		{
+			double	Mean	= Cluster.Get_Cluster_Mean  (iCluster, iFeature);
+			double	Stdv	= Cluster.Get_Cluster_StdDev(iCluster, iFeature);
+
+			if( bNormalize )
+			{
+				Mean	= Mean * pFeatures->asGrid(iFeature)->Get_StdDev() + pFeatures->asGrid(iFeature)->Get_Mean();
+				Stdv	= Stdv * pFeatures->asGrid(iFeature)->Get_StdDev();
+			}
+
+			Record.Set_Value(3 + 2 * iFeature + 0, Mean);
+			Record.Set_Value(3 + 2 * iFeature + 1, Stdv);
+		}
+	}
+
+	//-----------------------------------------------------
+	CSG_Parameter	*pLUT	= DataObject_Get_Parameter(pCluster, "LUT");
+
+	if( pLUT && pLUT->asTable() )
+	{
+		bool	bRGB	= pFeatures->Get_Count() >= 3 && Parameters("RGB_COLORS")->asBool();
+
+		for(iCluster=0; iCluster<Statistics.Get_Count(); iCluster++)
+		{
+			CSG_Table_Record	*pClass	= pLUT->asTable()->Get_Record(iCluster);
+
+			if( !pClass )
+			{
+				(pClass	= pLUT->asTable()->Add_Record())->Set_Value(0, SG_Color_Get_Random());
+			}
+
+			pClass->Set_Value(1, CSG_String::Format("%s %d", _TL("Cluster"), iCluster + 1));
+			pClass->Set_Value(2, "");
+			pClass->Set_Value(3, iCluster + 1);
+			pClass->Set_Value(4, iCluster + 1);
+
+			if( bRGB )
+			{
+				#define SET_COLOR_COMPONENT(c, i)	c = (int)(127 + (Statistics[iCluster].asDouble(3 + 2 * i) - pFeatures->asGrid(i)->Get_Mean()) * 127 / pFeatures->asGrid(i)->Get_StdDev()); if( c < 0 ) c = 0; else if( c > 255 ) c = 255;
+
+				int	r; SET_COLOR_COMPONENT(r, 2);
+				int	g; SET_COLOR_COMPONENT(g, 1);
+				int	b; SET_COLOR_COMPONENT(b, 0);
+
+				pClass->Set_Value(0, SG_GET_RGB(r, g, b));
+			}
+		}
+
+		pLUT->asTable()->Set_Record_Count(Statistics.Get_Count());
+
+		DataObject_Set_Parameter(pCluster, pLUT);
+		DataObject_Set_Parameter(pCluster, "COLORS_TYPE", 1);	// Color Classification Type: Lookup Table
+	}
+
+	//-----------------------------------------------------
+	return( true );
+}
+
+
+///////////////////////////////////////////////////////////
+//														 //
+//														 //
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
diff --git a/src/modules/table/table_tools/table_change_field_type.h b/src/modules/imagery/imagery_classification/classify_isocluster.h
old mode 100644
new mode 100755
similarity index 79%
copy from src/modules/table/table_tools/table_change_field_type.h
copy to src/modules/imagery/imagery_classification/classify_isocluster.h
index 8b5ae8e..8ce9f48
--- a/src/modules/table/table_tools/table_change_field_type.h
+++ b/src/modules/imagery/imagery_classification/classify_isocluster.h
@@ -1,106 +1,105 @@
-/**********************************************************
- * Version $Id: table_change_field_type.h 911 2011-02-14 16:38:15Z reklov_w $
- *********************************************************/
-
-///////////////////////////////////////////////////////////
-//                                                       //
-//                         SAGA                          //
-//                                                       //
-//      System for Automated Geoscientific Analyses      //
-//                                                       //
-//                    Module Library:                    //
-//                      table_tools                      //
-//                                                       //
-//-------------------------------------------------------//
-//                                                       //
-//                table_change_field_type.h              //
-//                                                       //
-//                 Copyright (C) 2012 by                 //
+
+////////////////////////////////////////////////////////////
+//                                                       //
+//                         SAGA                          //
+//                                                       //
+//      System for Automated Geoscientific Analyses      //
+//                                                       //
+//                    Module Library:                    //
+//                imagery_classification                 //
+//                                                       //
+//-------------------------------------------------------//
+//                                                       //
+//                 classify_isocluster.cpp               //
+//                                                       //
+//                 Copyright (C) 2016 by                 //
 //                      Olaf Conrad                      //
-//                                                       //
-//-------------------------------------------------------//
-//                                                       //
-// This file is part of 'SAGA - System for Automated     //
-// Geoscientific Analyses'. SAGA is free software; you   //
-// can redistribute it and/or modify it under the terms  //
-// of the GNU General Public License as published by the //
-// Free Software Foundation; version 2 of the License.   //
-//                                                       //
-// SAGA is distributed in the hope that it will be       //
-// useful, but WITHOUT ANY WARRANTY; without even the    //
-// implied warranty of MERCHANTABILITY or FITNESS FOR A  //
-// PARTICULAR PURPOSE. See the GNU General Public        //
-// License for more details.                             //
-//                                                       //
-// You should have received a copy of the GNU General    //
-// Public License along with this program; if not,       //
-// write to the Free Software Foundation, Inc.,          //
-// 51 Franklin Street, 5th Floor, Boston, MA 02110-1301, //
-// USA.                                                  //
-//                                                       //
-//-------------------------------------------------------//
-//                                                       //
-//    e-mail:     oconrad at saga-gis.de                    //
+//                                                       //
+//-------------------------------------------------------//
+//                                                       //
+// This file is part of 'SAGA - System for Automated     //
+// Geoscientific Analyses'. SAGA is free software; you   //
+// can redistribute it and/or modify it under the terms  //
+// of the GNU General Public License as published by the //
+// Free Software Foundation; version 2 of the License.   //
+//                                                       //
+// SAGA is distributed in the hope that it will be       //
+// useful, but WITHOUT ANY WARRANTY; without even the    //
+// implied warranty of MERCHANTABILITY or FITNESS FOR A  //
+// PARTICULAR PURPOSE. See the GNU General Public        //
+// License for more details.                             //
+//                                                       //
+// You should have received a copy of the GNU General    //
+// Public License along with this program; if not,       //
+// write to the Free Software Foundation, Inc.,          //
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307,   //
+// USA.                                                  //
+//                                                       //
+//-------------------------------------------------------//
+//                                                       //
+//    e-mail:     oconrad at saga-gis.org                   //
 //                                                       //
 //    contact:    Olaf Conrad                            //
-//                Institute of Geography                 //
-//                University of Hamburg                  //
-//                Germany                                //
-//                                                       //
-///////////////////////////////////////////////////////////
-
-//---------------------------------------------------------
-
-
-///////////////////////////////////////////////////////////
-//														 //
-//                                                       //
-//														 //
-///////////////////////////////////////////////////////////
-
-//---------------------------------------------------------
-#ifndef HEADER_INCLUDED__table_change_field_type_H
-#define HEADER_INCLUDED__table_change_field_type_H
-
-
-///////////////////////////////////////////////////////////
-//														 //
-//                                                       //
-//														 //
-///////////////////////////////////////////////////////////
-
-//---------------------------------------------------------
-#include "MLB_Interface.h"
-
-
-///////////////////////////////////////////////////////////
-//														 //
-//                                                       //
-//														 //
-///////////////////////////////////////////////////////////
-
-//---------------------------------------------------------
-class CTable_Change_Field_Type : public CSG_Module
-{
-public:
-	CTable_Change_Field_Type(void);
-
-
-protected:
-
-	virtual bool			On_Execute				(void);
-
-	virtual int				On_Parameter_Changed	(CSG_Parameters *pParameters, CSG_Parameter *pParameter);
-
-
-};
-
-
-///////////////////////////////////////////////////////////
-//														 //
-//                                                       //
-//														 //
-///////////////////////////////////////////////////////////
-
-//---------------------------------------------------------
-#endif // #ifndef HEADER_INCLUDED__table_change_field_type_H
+//                Institute of Geography                 //
+//                University of Hamburg                  //
+//                Germany                                //
+//                                                       //
+///////////////////////////////////////////////////////////
+
+///////////////////////////////////////////////////////////
+//														 //
+//														 //
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+#ifndef HEADER_INCLUDED__classify_isocluster_H
+#define HEADER_INCLUDED__classify_isocluster_H
+
+
+///////////////////////////////////////////////////////////
+//														 //
+//														 //
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+#include <saga_api/saga_api.h>
+
+
+///////////////////////////////////////////////////////////
+//														 //
+//														 //
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+class CGrid_Cluster_ISODATA : public CSG_Module_Grid
+{
+public:
+	CGrid_Cluster_ISODATA(void);
+
+	virtual CSG_String		Get_MenuPath			(void)	{	return( _TL("Unsupervised") );	}
+
+
+protected:
+
+	virtual int				On_Parameter_Changed	(CSG_Parameters *pParameters, CSG_Parameter *pParameter);
+	virtual int				On_Parameters_Enable	(CSG_Parameters *pParameters, CSG_Parameter *pParameter);
+
+	virtual bool			On_Execute				(void);
+
+
+private:
+
+};
+
+
+///////////////////////////////////////////////////////////
+//                                                       //
+//                                                       //
+//                                                       //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+#endif // #ifndef HEADER_INCLUDED__classify_isocluster_H
diff --git a/src/modules/imagery/imagery_classification/classify_supervised.cpp b/src/modules/imagery/imagery_classification/classify_supervised.cpp
old mode 100644
new mode 100755
index 29232ff..24fe8dd
--- a/src/modules/imagery/imagery_classification/classify_supervised.cpp
+++ b/src/modules/imagery/imagery_classification/classify_supervised.cpp
@@ -102,7 +102,7 @@ CGrid_Classify_Supervised::CGrid_Classify_Supervised(void)
 	Parameters.Add_Grid(
 		NULL	, "CLASSES"			, _TL("Classification"),
 		_TL(""),
-		PARAMETER_OUTPUT, true, SG_DATATYPE_Short
+		PARAMETER_OUTPUT, true, SG_DATATYPE_Byte
 	);
 
 	Parameters.Add_Grid(
@@ -186,6 +186,12 @@ CGrid_Classify_Supervised::CGrid_Classify_Supervised(void)
 			PARAMETER_TYPE_Bool, false
 		);
 	}
+
+	Parameters.Add_Value(
+		NULL	, "RGB_COLORS"	, _TL("Update Colors from Features"),
+		_TL("Use the first three features in list to obtain blue, green, red components for class colour in look-up table."),
+		PARAMETER_TYPE_Bool, true
+	)->Set_UseInCMD(false);
 }
 
 
@@ -212,6 +218,11 @@ int CGrid_Classify_Supervised::On_Parameters_Enable(CSG_Parameters *pParameters,
 		pParameters->Set_Enabled("WTA"            , pParameter->asInt() == SG_CLASSIFY_SUPERVISED_WTA              );
 	}
 
+	if( !SG_STR_CMP(pParameter->Get_Identifier(), "GRIDS") )
+	{
+		pParameters->Set_Enabled("RGB_COLORS", pParameter->asGridList()->Get_Count() >= 3);
+	}
+
 	return( CSG_Module_Grid::On_Parameters_Enable(pParameters, pParameter) );
 }
 
@@ -423,6 +434,10 @@ bool CGrid_Classify_Supervised::Set_Classification(CSG_Classifier_Supervised &Cl
 
 	if( pLUT && pLUT->asTable() )
 	{
+		CSG_Parameter_Grid_List	*pGrids	= Parameters("GRIDS")->asGridList();
+
+		bool	bRGB	= pGrids->Get_Count() >= 3 && Parameters("RGB_COLORS")->asBool();
+
 		for(int iClass=0; iClass<Classifier.Get_Class_Count(); iClass++)
 		{
 			CSG_Table_Record	*pClass	= pLUT->asTable()->Get_Record(iClass);
@@ -436,6 +451,17 @@ bool CGrid_Classify_Supervised::Set_Classification(CSG_Classifier_Supervised &Cl
 			pClass->Set_Value(2, "");
 			pClass->Set_Value(3, iClass + 1);
 			pClass->Set_Value(4, iClass + 1);
+
+			if( bRGB )
+			{
+				#define SET_COLOR_COMPONENT(c, i)	c = (int)(127 + (Classifier.Get_Class_Mean(iClass, i) - pGrids->asGrid(i)->Get_Mean()) * 127 / pGrids->asGrid(i)->Get_StdDev()); if( c < 0 ) c = 0; else if( c > 255 ) c = 255;
+
+				int	r; SET_COLOR_COMPONENT(r, 2);
+				int	g; SET_COLOR_COMPONENT(g, 1);
+				int	b; SET_COLOR_COMPONENT(b, 0);
+
+				pClass->Set_Value(0, SG_GET_RGB(r, g, b));
+			}
 		}
 
 		pLUT->asTable()->Set_Record_Count(Classifier.Get_Class_Count());
diff --git a/src/modules/imagery/imagery_classification/classify_supervised.h b/src/modules/imagery/imagery_classification/classify_supervised.h
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_classification/classify_supervised_polygons.cpp b/src/modules/imagery/imagery_classification/classify_supervised_polygons.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_classification/classify_supervised_polygons.h b/src/modules/imagery/imagery_classification/classify_supervised_polygons.h
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_classification/cluster_isodata.cpp b/src/modules/imagery/imagery_classification/cluster_isodata.cpp
new file mode 100755
index 0000000..dbbddb3
--- /dev/null
+++ b/src/modules/imagery/imagery_classification/cluster_isodata.cpp
@@ -0,0 +1,1435 @@
+
+///////////////////////////////////////////////////////////
+//                                                       //
+//                         SAGA                          //
+//                                                       //
+//      System for Automated Geoscientific Analyses      //
+//                                                       //
+//                    Module Library:                    //
+//                imagery_classification                 //
+//                                                       //
+//-------------------------------------------------------//
+//                                                       //
+//                  cluster_isodata.cpp                  //
+//                                                       //
+//                 Copyright (C) 2016 by                 //
+//                      Olaf Conrad                      //
+//                                                       //
+//-------------------------------------------------------//
+//                                                       //
+// This file is part of 'SAGA - System for Automated     //
+// Geoscientific Analyses'. SAGA is free software; you   //
+// can redistribute it and/or modify it under the terms  //
+// of the GNU General Public License as published by the //
+// Free Software Foundation; version 2 of the License.   //
+//                                                       //
+// SAGA is distributed in the hope that it will be       //
+// useful, but WITHOUT ANY WARRANTY; without even the    //
+// implied warranty of MERCHANTABILITY or FITNESS FOR A  //
+// PARTICULAR PURPOSE. See the GNU General Public        //
+// License for more details.                             //
+//                                                       //
+// You should have received a copy of the GNU General    //
+// Public License along with this program; if not,       //
+// write to the Free Software Foundation, Inc.,          //
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307,   //
+// USA.                                                  //
+//                                                       //
+//-------------------------------------------------------//
+//                                                       //
+//    e-mail:     oconrad at saga-gis.org                   //
+//                                                       //
+//    contact:    Olaf Conrad                            //
+//                Institute of Geography                 //
+//                University of Hamburg                  //
+//                Germany                                //
+//                                                       //
+///////////////////////////////////////////////////////////
+
+///////////////////////////////////////////////////////////
+//														 //
+//														 //
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+#include "cluster_isodata.h"
+
+
+///////////////////////////////////////////////////////////
+//														 //
+//														 //
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+#include "cluster_isodata.h"
+
+
+///////////////////////////////////////////////////////////
+//														 //
+//														 //
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+#define EPSILON	1.e-12
+
+
+///////////////////////////////////////////////////////////
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+CCluster_ISODATA::CCluster_ISODATA(void)
+{
+	_On_Construction();
+}
+
+//---------------------------------------------------------
+CCluster_ISODATA::CCluster_ISODATA(size_t nFeatures, TSG_Data_Type Data_Type)
+{
+	_On_Construction();
+
+	Create(nFeatures, Data_Type);
+}
+
+//---------------------------------------------------------
+bool CCluster_ISODATA::Create(size_t nFeatures, TSG_Data_Type Data_Type)
+{
+	Destroy();
+
+	switch( Data_Type )
+	{
+	case SG_DATATYPE_Bit   :
+		m_Data_Type	= SG_DATATYPE_Byte;
+		break;
+
+	case SG_DATATYPE_Byte  :
+	case SG_DATATYPE_Char  :
+	case SG_DATATYPE_Word  :
+	case SG_DATATYPE_Short :
+	case SG_DATATYPE_DWord :
+	case SG_DATATYPE_Int   :
+	case SG_DATATYPE_ULong :
+	case SG_DATATYPE_Long  :
+	case SG_DATATYPE_Float :
+	case SG_DATATYPE_Double:
+		m_Data_Type	= Data_Type;
+		break;
+
+	default:
+		return( false );
+	}
+
+	m_nFeatures	= nFeatures;
+
+	m_Data.Create(m_nFeatures * SG_Data_Type_Get_Size(m_Data_Type), 0, SG_ARRAY_GROWTH_2);
+
+	return( m_nFeatures > 0 );
+}
+
+//---------------------------------------------------------
+CCluster_ISODATA::~CCluster_ISODATA(void)
+{
+	Destroy();
+}
+
+//---------------------------------------------------------
+void CCluster_ISODATA::_On_Construction(void)
+{
+	m_nFeatures		= 0;
+	m_Data_Type		= SG_DATATYPE_Float;
+
+	m_maxIterations	= 999;	// maximum number of iterations
+
+	m_nCluster_Max	= 16;	// maximum number of clusters
+	m_nCluster_Ini	= 0;	// number of initial cluster centers
+
+	m_nSamples_Min	= 1;	// minimum number of samples in cluster
+	m_StdDev_Max	= 3.0;	// maximum standard deviation of one cluster
+	m_Distance_Max	= 2.0;	// maximum distance to merge clusters
+}
+
+
+///////////////////////////////////////////////////////////
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+bool CCluster_ISODATA::Destroy(void)
+{
+	cl_m	.Destroy();	// m_nCluster_Max cluster number of members
+	cl_d	.Destroy();	// m_nCluster_Max cluster average distance
+	cl_ms	.Destroy();	// m_nCluster_Max cluster maximum standard deviation
+	cl_msc	.Destroy();	// m_nCluster_Max cluster maximum standard deviation component
+
+	cl_s	.Destroy();	// m_nCluster_Max*m_nFeatures cluster centers
+	cl_c	.Destroy();	// m_nCluster_Max*m_nFeatures cluster standard deviations
+
+	data_cl	.Destroy();	// nSamples data cluster ids
+	data_d	.Destroy();	// nSamples data cluster distances
+
+	return( true );
+}
+
+
+///////////////////////////////////////////////////////////
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+bool CCluster_ISODATA::Add_Sample(const double *Sample)
+{
+	if( m_Data.Inc_Array() )
+	{
+		void	*Data	= m_Data.Get_Entry(m_Data.Get_Size() - 1);
+
+		for(size_t iFeature=0; iFeature<m_nFeatures; iFeature++)
+		{
+			switch( m_Data_Type )
+			{
+			case SG_DATATYPE_Byte  :	((BYTE   *)Data)[iFeature]	= (BYTE  )Sample[iFeature];	break;
+			case SG_DATATYPE_Char  :	((char   *)Data)[iFeature]	= (char  )Sample[iFeature];	break;
+			case SG_DATATYPE_Word  :	((WORD   *)Data)[iFeature]	= (WORD  )Sample[iFeature];	break;
+			case SG_DATATYPE_Short :	((short  *)Data)[iFeature]	= (short )Sample[iFeature];	break;
+			case SG_DATATYPE_DWord :	((DWORD  *)Data)[iFeature]	= (DWORD )Sample[iFeature];	break;
+			case SG_DATATYPE_Int   :	((int    *)Data)[iFeature]	= (int   )Sample[iFeature];	break;
+			case SG_DATATYPE_ULong :	((uLong  *)Data)[iFeature]	= (uLong )Sample[iFeature];	break;
+			case SG_DATATYPE_Long  :	((sLong  *)Data)[iFeature]	= (sLong )Sample[iFeature];	break;
+			case SG_DATATYPE_Float :	((float  *)Data)[iFeature]	= (float )Sample[iFeature];	break;
+			default                :	((double *)Data)[iFeature]	= (double)Sample[iFeature];	break;
+			}
+		}
+
+
+		return( true );
+	}
+
+	return( false );
+}
+
+//---------------------------------------------------------
+inline double CCluster_ISODATA::_Get_Sample(size_t iSample, size_t iFeature)
+{
+	void	*Sample	= m_Data.Get_Entry(iSample);
+
+	switch( m_Data_Type )
+	{
+	case SG_DATATYPE_Byte  :	return( ((BYTE   *)Sample)[iFeature] );
+	case SG_DATATYPE_Char  :	return( ((char   *)Sample)[iFeature] );
+	case SG_DATATYPE_Word  :	return( ((WORD   *)Sample)[iFeature] );
+	case SG_DATATYPE_Short :	return( ((short  *)Sample)[iFeature] );
+	case SG_DATATYPE_DWord :	return( ((DWORD  *)Sample)[iFeature] );
+	case SG_DATATYPE_Int   :	return( ((int    *)Sample)[iFeature] );
+	case SG_DATATYPE_ULong :	return( ((uLong  *)Sample)[iFeature] );
+	case SG_DATATYPE_Long  :	return( ((sLong  *)Sample)[iFeature] );
+	case SG_DATATYPE_Float :	return( ((float  *)Sample)[iFeature] );
+	default                :	return( ((double *)Sample)[iFeature] );
+	}
+}
+
+
+///////////////////////////////////////////////////////////
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+bool CCluster_ISODATA::Set_Max_Iterations(size_t Value)
+{
+	if( Value < 3 )	// maximum number of iterations must be more than 3
+	{
+		return( false );
+	}
+
+	m_maxIterations	= Value;
+
+	return( true );
+}
+
+//---------------------------------------------------------
+bool CCluster_ISODATA::Set_Ini_Clusters(size_t Value)
+{
+	m_nCluster_Ini	= Value;
+
+	return( true );
+}
+
+//---------------------------------------------------------
+bool CCluster_ISODATA::Set_Max_Clusters(size_t Value)
+{
+	if( Value < 2 )
+	{
+		return( false );
+	}
+
+	m_nCluster_Max	= Value;
+
+	return( true );
+}
+
+//---------------------------------------------------------
+bool CCluster_ISODATA::Set_Min_Samples(size_t Value)
+{
+	if( Value < 1 )	// minimum number of samples in cluster must be more than 1
+	{
+		return( false );
+	}
+
+	m_nSamples_Min	= Value;
+
+	return( true );
+}
+
+//---------------------------------------------------------
+bool CCluster_ISODATA::Set_Max_StdDev(double d)
+{
+	if( d < 0.0 )	// maximum standard deviation of one cluster must be a positive real
+	{
+		return( false );
+	}
+
+	m_StdDev_Max	= d;
+
+	return( true );
+}
+
+//---------------------------------------------------------
+bool CCluster_ISODATA::Set_Max_Distance(double d)
+{
+	if( d < 0.0 )	// maximum distance to merge clusters must be a positive real
+	{
+		return( false );
+	}
+
+	m_Distance_Max	= d;
+
+	return( true );
+}
+
+
+///////////////////////////////////////////////////////////
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+bool CCluster_ISODATA::_Initialize(void)
+{
+	//-----------------------------------------------------
+	if( Get_Feature_Count() < 1 )
+	{
+		SG_UI_Msg_Add_Error(_TL("attributes must be more than 1"));
+
+		return( false );
+	}
+
+	if( Get_Sample_Count() <= 1 )
+	{
+		SG_UI_Msg_Add_Error(_TL("samples must be more than 1"));
+
+		return( false );
+	}
+
+	if( m_nCluster_Max < 2 || m_nCluster_Max >= Get_Sample_Count() )
+	{
+		SG_UI_Msg_Add_Error(_TL("maximum number of clusters must be more than 2 and less than number of samples"));
+
+		return( false );
+	}
+
+	if( m_nCluster_Ini >= m_nCluster_Max )
+	{
+		SG_UI_Msg_Add_Error(_TL("maximum number of initial cluster centers must be more or equal to 0 and less than number of clusters"));
+
+		return( false );
+	}
+
+	//-----------------------------------------------------
+//	int	n	= m_nCluster_Max << 1;	// := m_nCluster_Max * 2;
+
+	if( !data_cl.Create(Get_Sample_Count()) )	{	return( false );	}
+	if( !data_d .Create(Get_Sample_Count()) )	{	return( false );	}
+
+	if( !cl_m  .Create(m_nCluster_Max << 1) )	{	return( false );	}
+	if( !cl_d  .Create(m_nCluster_Max << 1) )	{	return( false );	}
+	if( !cl_ms .Create(m_nCluster_Max << 1) )	{	return( false );	}
+	if( !cl_msc.Create(m_nCluster_Max << 1) )	{	return( false );	}
+
+	if( !cl_c.Create(m_nFeatures, m_nCluster_Max << 1) )	{	return( false );	}
+	if( !cl_s.Create(m_nFeatures, m_nCluster_Max << 1) )	{	return( false );	}
+
+	//-----------------------------------------------------
+	return( true );
+}
+
+
+///////////////////////////////////////////////////////////
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+bool CCluster_ISODATA::Run(void)
+{
+	//-----------------------------------------------------
+	if( !_Initialize() )
+	{
+		Destroy();
+
+		return( false );
+	}
+
+	//-----------------------------------------------------
+	size_t	iSample, iFeature, iCluster;
+	
+	//-----------------------------------------------------
+	// Step 1
+
+	m_nCluster	= m_nCluster_Ini;
+
+	if( m_nCluster > 0 )
+	{
+		cl_c.Assign(0.0);
+
+		for(iCluster=0; iCluster<m_nCluster; iCluster++)
+		{
+			cl_m[iCluster]	= 0;
+		}
+
+		for(iSample=0; iSample<Get_Sample_Count(); iSample++)
+		{
+			cl_m[iCluster = iSample % m_nCluster]	++;
+
+			for(iFeature=0; iFeature<m_nFeatures; iFeature++)
+			{
+				cl_c[iCluster][iFeature]	+= _Get_Sample(iSample, iFeature);
+			}
+		}
+
+		for(iCluster=0; iCluster<m_nCluster; iCluster++)
+		{
+			for(iFeature=0; iFeature<m_nFeatures; iFeature++)
+			{
+				cl_c[iCluster][iFeature]	/= cl_m[iCluster];
+			}
+		}
+	}
+	else // if( m_nCluster == 0 )
+	{
+		m_nCluster	= 1;
+
+		for(iFeature=0; iFeature<m_nFeatures; iFeature++)
+		{
+			cl_c[0][iFeature]	= _Get_Sample(0, iFeature);
+		}
+	}
+
+	//-----------------------------------------------------
+	SG_UI_Process_Set_Text(CSG_String::Format("%s: 1", _TL("pass")));
+
+	for(size_t Iteration=1; Iteration<=m_maxIterations && SG_UI_Process_Get_Okay(true); Iteration++)
+	{
+		//-------------------------------------------------
+		// Step 2
+		for(iCluster=0; iCluster<m_nCluster; iCluster++)
+		{
+			cl_m[iCluster]	= 0;
+		}
+
+		for(iSample=0; iSample<Get_Sample_Count(); iSample++)
+		{
+			data_d [iSample]	=  _Get_Sample_Distance(iSample, 0);
+			data_cl[iSample]	= 0;
+
+			for(iCluster=1; iCluster<m_nCluster; iCluster++)
+			{
+				double	Distance	= _Get_Sample_Distance(iSample, iCluster);
+
+				if( Distance < data_d[iSample] )
+				{
+					data_d [iSample]	= Distance;
+					data_cl[iSample]	= iCluster;
+				}
+			}
+
+			cl_m[data_cl[iSample]]++;
+		}
+
+		//-------------------------------------------------
+		// Step 3
+		for(iCluster=0; iCluster<m_nCluster; iCluster++)
+		{
+			if( cl_m[iCluster] < (int)m_nSamples_Min )
+			{
+				for(iSample=0; iSample<Get_Sample_Count(); iSample++)
+				{
+					if( data_cl[iSample] == iCluster )
+					{
+						data_cl[iSample]	= iCluster > 0 ? iCluster - 1 : iCluster + 1;
+						data_d [iSample]	= _Get_Sample_Distance(iSample, data_cl[iSample]);
+					}
+				}
+
+				for(size_t jCluster=iCluster; jCluster<m_nCluster-1; jCluster++)
+				{
+					cl_m[jCluster]	= cl_m[jCluster + 1];
+				}
+
+				m_nCluster--;
+			}
+		}
+
+		//-------------------------------------------------
+		// Step 4
+		cl_c.Assign(0.0);
+
+		for(iSample=0; iSample<Get_Sample_Count(); iSample++)
+		{
+			for(iFeature=0; iFeature<m_nFeatures; iFeature++)
+			{
+				cl_c[data_cl[iSample]][iFeature]	+= _Get_Sample(iSample, iFeature);
+			}
+		}
+
+		for(iCluster=0; iCluster<m_nCluster; iCluster++)
+		{
+			for(iFeature=0; iFeature<m_nFeatures; iFeature++)
+			{
+				cl_c[iCluster][iFeature]	/= cl_m[iCluster];
+			}
+		}
+
+		//-------------------------------------------------
+		// Step 5
+		cl_d.Assign(0.0);
+
+		for(iSample=0; iSample<Get_Sample_Count(); iSample++)
+		{
+			cl_d[data_cl[iSample]]	+= _Get_Sample_Distance(iSample, data_cl[iSample]);
+		}
+
+		for(iCluster=0; iCluster<m_nCluster; iCluster++)
+		{
+			cl_d[iCluster]	/= cl_m[iCluster];
+		}
+
+		//-------------------------------------------------
+		// Step 6
+		for(iSample=0, m_Distance=0.0; iSample<Get_Sample_Count(); iSample++)
+		{
+			m_Distance	+= _Get_Sample_Distance(iSample, data_cl[iSample]);
+		}
+
+		m_Distance	/= Get_Sample_Count();
+
+		//-------------------------------------------------
+		// Step 7
+		if( m_nCluster <= m_nCluster_Max / 2 )	// too few clusters
+		{
+			//---------------------------------------------
+			// Step 8
+			cl_s.Assign(0.0);
+
+			for(iSample=0; iSample<Get_Sample_Count(); iSample++)
+			{
+				for(iFeature=0; iFeature<m_nFeatures; iFeature++)
+				{
+					cl_s[data_cl[iSample]][iFeature]	+= SG_Get_Square(_Get_Sample(iSample, iFeature) - cl_c[data_cl[iSample]][iFeature]);
+				}
+			}
+
+			for(iCluster=0; iCluster<m_nCluster; iCluster++)
+			{
+				for(iFeature=0; iFeature<m_nFeatures; iFeature++)
+				{
+					cl_s[iCluster][iFeature]	= sqrt(cl_s[iCluster][iFeature] / cl_m[iCluster]);
+				}
+			}
+
+			//---------------------------------------------
+			// Step 9
+			for(iCluster=0; iCluster<m_nCluster; iCluster++)
+			{
+				for(iFeature=0; iFeature<m_nFeatures; iFeature++)
+				{
+					if( iFeature == 0 || cl_s[iCluster][iFeature] > cl_ms[iCluster] )
+					{
+						cl_ms [iCluster]	= cl_s[iCluster][iFeature];	// cluster maximum standard deviation
+						cl_msc[iCluster]	=                iFeature ;	// cluster maximum standard deviation component
+					}
+				}
+			}
+
+			//---------------------------------------------
+			// Step 10
+			for(iCluster=0; iCluster<m_nCluster; iCluster++)
+			{
+				//cl_c: cluster center
+				//cl_d: cluster average distance
+				//cl_m: cluster number of members
+				//m_StdDev_Max: maximum standard deviation of cluster
+				//m_Distance: overall average distance
+
+				if( /*cl_ms[iCluster] > m_StdDev_Max &&*/ cl_d[iCluster] > m_Distance - EPSILON && (size_t)cl_m[iCluster] > 2 * m_nSamples_Min )
+				{
+					for(iFeature=0; iFeature<m_nFeatures; iFeature++)
+					{
+						if( iFeature - cl_msc[iCluster] )
+						{
+							cl_c[m_nCluster][iFeature]	= cl_c[iCluster][iFeature];
+						}
+						else
+						{
+							cl_c[m_nCluster][iFeature]	= cl_c[iCluster][iFeature] + cl_ms[iCluster];
+							cl_c[iCluster][iFeature]	= cl_c[iCluster][iFeature] - cl_ms[iCluster];
+						}
+					}
+
+					m_nCluster	++;
+				//	Iteration	--;
+				}
+			}
+		}
+
+		//-------------------------------------------------
+		// Step 7
+		else if( m_nCluster > m_nCluster_Max )	// many clusters
+		{
+			//---------------------------------------------
+			// Step 11
+			int	nPairs	= m_nCluster * (m_nCluster - 1) / 2;	// number of pairwise distances
+
+			CSG_Vector		cl_pd(nPairs);
+			CSG_Array_Int	cl_pi(nPairs), cl_pj(nPairs);
+
+			for(iCluster=0, nPairs=0; iCluster<m_nCluster-1; iCluster++)
+			{
+				for(size_t jCluster=iCluster+1; jCluster<m_nCluster; jCluster++, nPairs++)
+				{
+					cl_pi[nPairs]	= iCluster;
+					cl_pj[nPairs]	= jCluster;
+					cl_pd[nPairs]	= _Get_Cluster_Distance(iCluster, jCluster);
+				}
+			}
+
+			//---------------------------------------------
+			// Step 12
+			for(int i=0; i<nPairs-1; i++)
+			{
+				for(int j=i+1; j<nPairs; j++)
+				{
+					if( cl_pd[i] > cl_pd[j] )
+					{
+						{	double t = cl_pd[i]; cl_pd[i] = cl_pd[j]; cl_pd[j] = t;	}
+						{	int    t = cl_pi[i]; cl_pi[i] = cl_pi[j]; cl_pi[j] = t;	}
+						{	int    t = cl_pj[i]; cl_pj[i] = cl_pj[j]; cl_pj[j] = t;	}
+					}
+				}
+			}
+
+			//---------------------------------------------
+			// Step 13: Notice: Smallest cluster pair below m_Distance_Max will be merged
+			CSG_Vector	t(m_nFeatures);
+
+			for(iFeature=0; iFeature<m_nFeatures; iFeature++)
+			{
+				t[iFeature]	= cl_c[cl_pi[0]][iFeature] * cl_m[cl_pi[0]] + cl_c[cl_pj[0]][iFeature] * cl_m[cl_pj[0]];
+			}
+
+			for(iFeature=0; iFeature<m_nFeatures; iFeature++)
+			{
+				cl_c[cl_pi[0]][iFeature]	= t[iFeature];
+			}
+
+			for(iCluster=cl_pj[0]; iCluster<m_nCluster-1; iCluster++)
+			{
+				for(iFeature=0; iFeature<m_nFeatures; iFeature++)
+				{
+					cl_c[iCluster][iFeature]	= cl_c[iCluster + 1][iFeature];
+				}
+			}
+		}
+
+		//-------------------------------------------------
+		// Step 14: Additional criterion by Ch Iossif
+
+		double	d	= 0.0;
+
+		for(iSample=0; iSample<Get_Sample_Count(); iSample++)
+		{
+			d	+= _Get_Sample_Distance(iSample, data_cl[iSample]);
+		}
+
+		d	= fabs(d - m_Distance * Get_Sample_Count());
+
+		if( d < EPSILON )
+		{
+			return( true );
+		}
+
+		SG_UI_Process_Set_Text(CSG_String::Format("%s: %d (%f)", _TL("pass"), Iteration + 1, d / Get_Sample_Count()));
+	}
+
+	//-----------------------------------------------------
+	return( true );
+}
+
+
+///////////////////////////////////////////////////////////
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+double CCluster_ISODATA::_Get_Sample_Distance(int iSample, int iCluster)
+{
+	double	s	= 0.0;
+
+	for(size_t iFeature=0; iFeature<m_nFeatures; iFeature++)
+	{
+		s	+= SG_Get_Square(_Get_Sample(iSample, iFeature) - cl_c[iCluster][iFeature]);
+	}
+
+	return( sqrt(s) );
+}
+
+//---------------------------------------------------------
+double CCluster_ISODATA::_Get_Cluster_Distance(int iCluster, int jCluster)
+{
+	double	s	= 0.0;
+
+	for(size_t iFeature=0; iFeature<m_nFeatures; iFeature++)
+	{
+		s	+= SG_Get_Square(cl_c[jCluster][iFeature] - cl_c[iCluster][iFeature]);
+	}
+
+	return( sqrt(s) );
+}
+
+
+///////////////////////////////////////////////////////////
+//														 //
+//														 //
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+///* isodata v0.0.0a1 Ver.: ?? GPLv3 (c) 02/10 Ch Iossif <chiossif at yahoo.com> */
+///*
+//   Isodata unsupervised classification - clustering.
+//
+//   Name:			isodata
+//   Version:		    0.0.0a1
+//   Copyright:	    Ch Iossif @ 2010
+//   Author:		    Christos Iosifidis
+//   Date:			27/02/10 12:20
+//   Modified:		27/02/10 12:20 - 16:35 - 586 lines of code !!! but bug before line 240
+//                    31/03/10 12:00 - 18:43
+//   Description:     This program executes the Isodata unsupervised
+//                    classification - clustering algorithm. Isodata
+//                    stands for Iterative Self-Organizing Data Analysis
+//                    Techniques. This is a more sophisticated algorithm
+//                    which allows the number of clusters to be
+//                    automatically adjusted during the iteration by
+//                    merging similar clusters and splitting clusters
+//                    with large standard deviations.
+//   [ http://fourier.eng.hmc.edu/e161/lectures/classification/node13.html ]
+//
+//   Usage:           >isodata parameter_file
+//   Input:           Parameter filename at command line:
+//
+//#This is the Parameter file for isodata
+//9 number of samples
+//2 number of attributes
+//1.0 1.0 initial attributes factors
+//isodata_in.txt input data file name
+//isodata_out.txt output data file name
+//2 maximum number of clusters
+//999 maximum number of iterations
+//1 minumum number of samples in cluster
+//3.0 maximum standard deviation of one cluster
+//2.0 maximum distance to merge clusters
+//0 number of initial cluster centers
+//#on number of initial cluster centers > 0
+//1 number of initial cluster centers
+//1.5 1.5 cluster center
+//
+//                     Input data in isodata_in.txt:
+// 1  1
+// 2  2
+// 3  3
+//-1 -1
+//-1  1
+// 1 -1
+// 2  3
+// 3  2
+// 0  2
+//
+//   Output:
+//                        Output data in isodata_out.txt:
+//1
+//2
+//2
+//1
+//1
+//1
+//2
+//2
+//1
+//
+//   License:
+//
+//   Copyright (C) Feb 2010 Ch Iossif <chiossif at yahoo.com>
+//
+//   This program is free software: you can redistribute it and/or modify
+//   it under the terms of the GNU General Public License as published by
+//   the Free Software Foundation, either version 3 of the License, or
+//   (at your option) any later version.
+//
+//   This program is distributed in the hope that it will be useful,
+//   but WITHOUT ANY WARRANTY; without even the implied warranty of
+//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//   GNU General Public License for more details.
+//
+//   You should have received a copy of the GNU General Public License
+//   along with this program.  If not, see <http://www.gnu.org/licenses/>.
+//*/
+//
+//#include <stdio.h>
+//#include <stdlib.h>
+//#include <math.h>
+//
+//int n;             /* number of samples */
+//int m;             /* number of attributes */
+//double *p;         /* m initial attributes factors */
+//char fname_in[BUFSIZ];    /* input data file name */
+//char fname_out[BUFSIZ];   /* output data file name */
+//double **data;     /* nxm input data */
+//int k;             /* maximum number of clusters */
+//int iter;          /* maximum number of iterations */
+///*int p;*/         /* maximum number of pairs of cluster which can be merged  */
+//int th_n;          /* minimum number of samples in cluster */
+//double th_s;       /* maximum standard deviation of one cluster */
+//double th_c;       /* maximum distance to merge clusters */
+//int l;             /* number of initial cluster centers */
+//double **cl_c;     /* kxm cluster centers */
+//int *cl_m;         /* m cluster number of members */
+//double *cl_d;      /* k cluster average distance */
+//double **cl_s;     /* kxm cluster standard deviations */
+//double *cl_ms;     /* k cluster maximum standard deviation */
+//int *cl_msc;       /* k cluster maximum standard deviation component */
+//double *cl_pd;     /* k*(k-1)/2 pairwise distances */
+//int *cl_pi;        /* k*(k-1)/2 pairwise distance cluster i */
+//int *cl_pj;        /* k*(k-1)/2 pairwise distance cluster j */
+//int pdn;           /* k*(k-1)/2 number of pairwise distances */
+//int *data_cl;      /* n data cluster ids */
+//double *data_d;    /* n data cluster distances */
+//double oad, poad;  /* overall average distance */
+//
+//#define abs(x) (((x)<0)?-(x):(x))
+//#define EPSILON 1.e-12
+//
+//void error(const char *);
+//double distance(double *, double *);
+//double sqr(double);
+//double sqrt(double);
+//void display_memory(const char *);
+//
+//int main(int argc, char **argv) {
+//    FILE *fp;
+//    char buff[BUFSIZ];
+//    int temp_int, *tmp_int_vector;
+//    double temp_double, *tmp_double_vector;
+//    register int i, j, o;
+//
+//    if (argc==2) {
+//        /* read parameter file */
+//        if ((fp=fopen(argv[1],"r"))==NULL)
+//            error("bad file name at command line");
+//        /* read number of samples */
+//        do
+//            if (fgets(buff,BUFSIZ,fp)!=buff)
+//                error("bad read");
+//        while (buff[0]=='#');
+//        if (sscanf(buff,"%d",&n)!=1)
+//            error("bad string read");
+//        if (n<1)
+//            error("samples must be more than 1");
+//        /* read number of attributes */
+//        do
+//            if (fgets(buff,BUFSIZ,fp)!=buff)
+//                error("bad read");
+//        while (buff[0]=='#');
+//        if (sscanf(buff,"%d",&m)!=1)
+//            error("bad string read");
+//        if (m<1)
+//            error("attributes must be more than 1");
+//        /* read m initial attributes factors */
+//        if ((p=malloc(m*sizeof(double)))==NULL)
+//            error("bad memory allocation");
+//        for (i=0; i<m; i++)
+//            if (fscanf(fp,"%lf",&p[i])!=1)
+//                error("bad factor read");
+//        do
+//            if (fgets(buff,BUFSIZ,fp)!=buff)
+//                error("bad read");
+//        while (buff[0]=='#');
+//        /* read input data file name */
+//        do
+//            if (fgets(buff,BUFSIZ,fp)!=buff)
+//                error("bad read");
+//        while (buff[0]=='#');
+//        if (sscanf(buff,"%s",fname_in)!=1)
+//            error("bad string read");
+//        /* read output data file name */
+//        do
+//            if (fgets(buff,BUFSIZ,fp)!=buff)
+//                error("bad read");
+//        while (buff[0]=='#');
+//        if (sscanf(buff,"%s",fname_out)!=1)
+//            error("bad string read");
+//        /* read maximum number of clusters */
+//        do
+//            if (fgets(buff,BUFSIZ,fp)!=buff)
+//                error("bad read");
+//        while (buff[0]=='#');
+//        if (sscanf(buff,"%d",&k)!=1)
+//            error("bad string read");
+//        if (k<2 && k<n)
+//            error("maximum number of clusters must be more than 2 and less than number of samples");
+//        /* read maximum number of iterations */
+//        do
+//            if (fgets(buff,BUFSIZ,fp)!=buff)
+//                error("bad read");
+//        while (buff[0]=='#');
+//        if (sscanf(buff,"%d",&iter)!=1)
+//            error("bad string read");
+//        if (iter<3)
+//            error("maximum number of iterations must be more than 3");
+//        /* read minimum number of samples in cluster */
+//        do
+//            if (fgets(buff,BUFSIZ,fp)!=buff)
+//                error("bad read");
+//        while (buff[0]=='#');
+//        if (sscanf(buff,"%d",&th_n)!=1)
+//            error("bad string read");
+//        if (th_n<1)
+//            error("minimum number of samples in cluster must be more than 1");
+//        /* maximum standard deviation of one cluster */
+//        do
+//            if (fgets(buff,BUFSIZ,fp)!=buff)
+//                error("bad read");
+//        while (buff[0]=='#');
+//        if (sscanf(buff,"%lf",&th_s)!=1)
+//            error("bad string read");
+//        if (th_s<0.0)
+//            error("maximum standard deviation of one cluster must be a positive real");
+//        /* maximum distance to merge clusters */
+//        do
+//            if (fgets(buff,BUFSIZ,fp)!=buff)
+//                error("bad read");
+//        while (buff[0]=='#');
+//        if (sscanf(buff,"%lf",&th_c)!=1)
+//            error("bad string read");
+//        if (th_c<0.0)
+//            error("maximum distance to merge clusters must be a positive real");
+//        /* number of initial cluster centers */
+//        do
+//            if (fgets(buff,BUFSIZ,fp)!=buff)
+//                error("bad read");
+//        while (buff[0]=='#');
+//        if (sscanf(buff,"%d",&l)!=1)
+//            error("bad string read");
+//        if (l<0 || l>k)
+//            error("maximum number of initial cluster centers must be more or equal to 0 and less than number of clusters");
+//        if ((cl_c=malloc(k*sizeof(double*)))==NULL)
+//            error("bad memory allocation");
+//        for (i=0; i<k; i++)
+//            if ((cl_c[i]=malloc(m*sizeof(double)))==NULL)
+//                error("bad memory allocation");
+//        if (l) {
+//            for (i=0; i<l; i++)
+//                for (j=0; j<m; j++)
+//                    if (fscanf(fp,"%lf",&cl_c[i][j])!=1)
+//                        error("bad cluster center read");
+//        }
+//        fclose(fp);
+//
+//        /* rest of memory allocations */
+//        k<<1;
+//        pdn=k*(k-1)/2;
+//        if ((cl_m=malloc(k*sizeof(int)))==NULL)
+//            error("bad memory allocation");
+//        if ((cl_d=malloc(k*sizeof(double)))==NULL)
+//            error("bad memory allocation");
+//        if ((cl_pd=malloc(pdn*sizeof(double)))==NULL)
+//            error("bad memory allocation");
+//        if ((cl_pi=malloc(pdn*sizeof(int)))==NULL)
+//            error("bad memory allocation");
+//        if ((cl_pj=malloc(pdn*sizeof(int)))==NULL)
+//            error("bad memory allocation");
+//        if ((cl_ms=malloc(k*sizeof(double)))==NULL)
+//            error("bad memory allocation");
+//        if ((cl_msc=malloc(k*sizeof(int)))==NULL)
+//            error("bad memory allocation");
+//        if ((cl_s=malloc(k*sizeof(double*)))==NULL)
+//            error("bad memory allocation");
+//        for (i=0; i<k; i++)
+//            if ((cl_s[i]=malloc(m*sizeof(double)))==NULL)
+//                error("bad memory allocation");
+//        if ((tmp_double_vector=malloc(k*sizeof(double)))==NULL)
+//            error("bad memory allocation");
+//        if ((tmp_int_vector=malloc(k*sizeof(int)))==NULL)
+//            error("bad memory allocation");
+//        k>>1;
+//        if ((data=malloc(n*sizeof(double*)))==NULL)
+//            error("bad memory allocation");
+//        for (i=0; i<n; i++)
+//            if ((data[i]=malloc(m*sizeof(double)))==NULL)
+//                error("bad memory allocation");
+//        if ((data_cl=malloc(n*sizeof(int)))==NULL)
+//            error("bad memory allocation");
+//        if ((data_d=malloc(n*sizeof(double)))==NULL)
+//            error("bad memory allocation");
+//    } else
+//        error("usage is >isodata parameter_file");
+//
+//    /* *** report input parameters *** */
+//    /* ***
+//    printf("number of samples is %d\n",n);
+//    printf("number of attributes is %d\n",m);
+//    printf("initial attributes factors are :");
+//    for (i=0;i<m;i++)
+//        printf(" %lf",p[i]);
+//    printf("\ninput data file name is %s\n",fname_in);
+//    printf("output data file name is %s\n",fname_out);
+//    printf("maximum number of clusters is %d\n",k);
+//    printf("maximum number of iterations is %d\n",iter);
+//    printf("minimum number of samples in cluster is %d\n",th_n);
+//    printf("maximum standard deviation of one cluster is %lf\n",th_s);
+//    printf("maximum distance to merge clusters is %lf\n",th_c);
+//    printf("number of initial cluster centers is %d\n",l);
+//    if (l) {
+//        printf("initial cluster centers are :\n");
+//        for (i=0;i<l;i++) {
+//            for (j=0;j<m;j++)
+//                printf("%lf ",cl_c[i][j]);
+//            printf("\n");
+//        }
+//    }
+//    *** */
+//    /* read data */
+//    if ((fp=fopen(fname_in,"r"))==NULL)
+//        error("bad input file name");
+//    for (i=0; i<n; i++)
+//        for (j=0; j<m; j++)
+//            fscanf(fp,"%lf ",&data[i][j]);
+//    fclose(fp);
+//    /* *** report input data *** */
+//    /* ***
+//    printf("input data are:\n");
+//    for (i=0; i<n; i++)
+//        for (j=0; j<m; j++)
+//            printf("i=%4d/%4d j=%4d/%4d - %lf\n",i+1,n,j+1,m,data[i][j]);
+//    *** */
+//
+//    /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+//     * ISODATA algorithm. Isodata stands for Iterative Self-Organizing Data Analysis Techniques. *
+//     * This is a more sophisticated algorithm which allows the number of clusters to be          *
+//     * automatically adjusted during the iteration by merging similar clusters and splitting     *
+//     * clusters with large standard deviations.                                                  *
+//     *                  [ http://fourier.eng.hmc.edu/e161/lectures/classification/node13.html ]  *
+//     * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+//
+//    /* Step 1 */
+//    if (!l) {
+//        l=1;
+//        for (j=0; j<m; j++) {
+//            cl_c[0][j]=data[0][j];
+//        }
+//    }
+//    display_memory("Step 1");
+//
+//    while (iter) {
+//        /* Step 2 */
+//        for (j=0; j<l; j++) {
+//            cl_m[j]=0;
+//        }
+//        for (i=0; i<n; i++) {
+//            data_d[i]=distance(data[i],cl_c[0]);
+//            data_cl[i]=0;
+//            for (j=1; j<l; j++) {
+//                if ((temp_double=distance(data[i],cl_c[j]))<data_d[i]) {
+//                    data_d[i]=temp_double;
+//                    data_cl[i]=j;
+//                }
+//            }
+//            cl_m[data_cl[i]]++;
+//        }
+//        display_memory("Step 2");
+//
+//        /* Step 3 */
+//        for (j=0; j<l; j++) {
+//            if (cl_m[j]<th_n) {
+//                if (j) {
+//                    for (i=0; i<n; i++) {
+//                        if (data_cl[i]==j) {
+//                            data_cl[i]=j-1;
+//                            data_d[i]=distance(data[i],cl_c[j-1]);
+////                        cl_m[j-1]++;
+//                        }
+//                    }
+//                } else {
+//                    for (i=0; i<n; i++) {
+//                        if (data_cl[i]==j) {
+//                            data_cl[i]=j+1;
+//                            data_d[i]=distance(data[i],cl_c[j+1]);
+////                        cl_m[j+1]++;
+//                        }
+//                    }
+//                }
+//                for (i=j+1; i<l; i++) {
+//                    cl_m[i-1]=cl_m[i];
+////                    for (o=0;o<m;o++) {
+////                        cl_c[i-1][o]=cl_c[i][o];
+////                    }
+//                }
+//                l--;
+//            }
+//        }
+//        display_memory("Step 3");
+//
+//        /* Step 4 */
+//        for (i=0; i<n; i++) {
+//            for (j=0; j<l; j++) {
+//                cl_c[j][i]=0.0;
+//            }
+//        }
+//        for (i=0; i<n; i++) {
+//            for (j=0; j<m; j++) {
+//                cl_c[data_cl[i]][j]+=data[i][j];
+//            }
+//        }
+//        for (i=0; i<l; i++) {
+//            for (j=0; j<m; j++) {
+//                cl_c[i][j]/=cl_m[i];
+//            }
+//        }
+//        display_memory("Step 4");
+//
+//        /* Step 5 */
+//        for (j=0; j<l; j++) {
+//            cl_d[j]=0.0;
+//        }
+//        for (i=0; i<n; i++) {
+//            cl_d[data_cl[i]]+=distance(data[i],cl_c[data_cl[i]]);
+//        }
+//        for (i=0; i<l; i++) {
+//            cl_d[i]/=cl_m[i];
+//        }
+//        display_memory("Step 5");
+//
+//        /* Step 6 */
+//        poad=0.0;
+//        for (i=0; i<n; i++) {
+//            poad+=distance(data[i],cl_c[data_cl[i]]);
+//        }
+//        oad=poad/n;
+//        display_memory("Step 6");
+//
+//        /* Step 7 */
+//        display_memory("Step 7");
+//        if (l<=k/2) { // too few clusters
+//
+//            /* Step 8 */
+//            for (i=0; i<n; i++) {
+//                for (j=0; j<l; j++) {
+//                    cl_s[j][i]=0.0;
+//                }
+//            }
+//            for (i=0; i<n; i++) {
+//                for (j=0; j<m; j++) {
+//                    cl_s[data_cl[i]][j]+=sqr(data[i][j]-cl_c[data_cl[i]][j]);
+//                }
+//            }
+//            for (i=0; i<l; i++) {
+//                for (j=0; j<m; j++) {
+//                    cl_s[i][j]/=cl_m[i];
+//                }
+//            }
+//            for (i=0; i<l; i++) {
+//                for (j=0; j<m; j++) {
+//                    cl_s[i][j]=sqrt(cl_s[i][j]);
+//                }
+//            }
+//            display_memory("Step 8");
+//
+//            /* Step 9 */
+//            for (i=0; i<l; i++) {
+//                for (j=0; j<m; j++) {
+//                    if (j==0||cl_s[i][j]>cl_ms[i]) {
+//                        cl_ms[i]=cl_s[i][j];
+//                        cl_msc[i]=j;
+//                    }
+//                }
+//            }
+//            display_memory("Step 9");
+//
+//            /* Step 10 */
+//            for (i=0; i<l; i++) {
+//                /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+//                /*
+//                i: cluster iteration
+//                l: cluster number
+//                j: attribute iteration
+//                m: number of attributes
+//                cl_msc: cluster maximum standard deviation component
+//                cl_c: cluster center
+//                cl_ms: cluster maximum standard deviation
+//                th_s: maximum standard deviation of cluster
+//                cl_d: cluster average distance
+//                cl_m: cluster number of members
+//                th_n: minimum number of samples in cluster
+//                oad: overall average distance
+//                iter: number of iterations
+//                */
+//
+//                if (/*cl_ms[i]>th_s ? &&*/  cl_d[i]>oad-EPSILON && cl_m[i]>2*th_n) {
+//                    for (j=0; j<m; j++) {
+//                        if (j-cl_msc[i]) {
+//                            cl_c[l][j]=cl_c[i][j];
+//                        } else {
+//                            cl_c[l][j]=cl_c[i][j]+cl_ms[i];
+//                            cl_c[i][j]=cl_c[i][j]-cl_ms[i];
+//                        }
+//                    }
+//                    l++;
+//                    iter++;
+//                }
+//                /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+//            }
+//            display_memory("Step 10");
+//        } else if (l>k) { // many clusters
+//
+//            /* Step 11 */
+//            for (o=i=0; i<l-1; i++) {
+//                for (j=i+1; j<l; j++) {
+//                    cl_pi[o]=i;
+//                    cl_pj[o]=j;
+//                    cl_pd[o]=distance(cl_c[i],cl_c[j]);
+//                    o++;
+//                }
+//            }
+//            pdn=o;
+//            display_memory("Step 11");
+//
+//            /* Step 12 */
+//            for (i=0; i<o-1; i++) {
+//                for (j=i+1; j<o; j++) {
+//                    if (cl_pd[i]>cl_pd[j]) {
+//                        temp_double=cl_pd[i];
+//                        cl_pd[i]=cl_pd[j];
+//                        cl_pd[j]=temp_double;
+//                        temp_int=cl_pi[i];
+//                        cl_pi[i]=cl_pi[j];
+//                        cl_pi[j]=temp_int;
+//                        temp_int=cl_pj[i];
+//                        cl_pj[i]=cl_pj[j];
+//                        cl_pj[j]=temp_int;
+//                    }
+//                }
+//            }
+//            display_memory("Step 12");
+//
+//            /* Step 13 */
+//            /* Notice: Smallest cluster pair below th_c will be merged */
+//            for (j=0; j<m; j++) {
+//                tmp_double_vector[j]=cl_c[cl_pi[0]][j]*cl_m[cl_pi[0]] +cl_c[cl_pj[0]][j]*cl_m[cl_pj[0]];
+//            }
+//            tmp_double_vector[j]/=(cl_m[cl_pi[0]]+cl_m[cl_pj[0]]);
+////            cl_m[cl_pi[0]]=cl_m[cl_pi[0]]+cl_m[cl_pj[0]];
+//            for (j=0; j<m; j++) {
+//                cl_c[cl_pi[0]][j]=tmp_double_vector[j];
+//            }
+//            for (i=cl_pj[0]+1; i<l; i++) {
+////                cl_m[i-1]=cl_m[i];
+//                for (j=0; j<m; j++) {
+//                    cl_c[i-1][j]=cl_c[i][j];
+//                }
+//            }
+//            display_memory("Step 13");
+//        }
+//
+//        /* Step 14 */
+//        iter--;
+//        display_memory("Step 14");
+//        /* Additional criterion by Ch Iossif */
+//        oad=poad;
+//        poad=0.0;
+//        for (i=0; i<n; i++) {
+//            poad+=distance(data[i],cl_c[data_cl[i]]);
+//        }
+//        if (abs(oad-poad)<EPSILON)
+//            break;
+//    }
+//    /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+//
+//    /* save results */
+//    if ((fp=fopen(fname_out,"w"))==NULL)
+//        error("bad output file name");
+//    for (i=0; i<n; i++)
+//        fprintf(fp,"%d\n",data_cl[i]+1);
+//    fclose(fp);
+//
+//    /* free allocated memory */
+//    /*
+//    k<<1;
+//    for (i=0; i<n; i++)
+//        free(data[i]);
+//    free(data);
+//    for (i=0; i<k; i++) {
+//        free(cl_c[i]);
+//        free(cl_s[i]);
+//    }
+//    free(cl_c);
+//    free(cl_s);
+//    free(cl_m);
+//    free(cl_ms);
+//    free(cl_msc);
+//    free(cl_pd);
+//    free(cl_pi);
+//    free(cl_pj);
+//    free(p);
+//    free(data_cl);
+//    free(data_d);
+//    free(tmp_double_vector);
+//    free(tmp_int_vector);
+//    */
+//
+//    printf("\nisodata v0.0.0a1 Ver.: ?? GPLv3 (c) 02/10 Ch Iossif <chiossif at yahoo.com>\n\n");
+//    return 0;
+//}
+//
+//void error(const char *s) {
+//    printf("\nisodata reports: error: %s.\n",s);
+//    exit(1);
+//}
+//
+//double distance(double *a, double *b) {
+//    register int i;
+//    double s;
+//    for (s=i=0; i<m; i++)
+//        s+=sqr(a[i]-b[i]);
+//    /*
+//        printf("\t\t\t\tDistance between:");
+//        for (i=0;i<m;i++)
+//            printf(" %lf",a[i]);
+//        printf(" and");
+//        for (i=0;i<m;i++)
+//            printf(" %lf",b[i]);
+//        printf(" is %lf\n",sqrt(s));
+//    */
+//    return sqrt(s);
+//}
+//
+//double sqr(double x) {
+//    return x*x;
+//}
+//
+//double sqrt(double x) {
+//    double px,a;
+//    a=px=x;
+//    x/=2.0;
+//    while (abs(x-px)>EPSILON) {
+//        px=x;
+//        x=(px+a/px)/2;
+//    }
+//    return x;
+//}
+//
+//void display_memory(const char *s) {
+//    register int i, j;
+//
+//    /*
+//        printf("Report at iteration %d %s:\n", iter, s);
+//        printf("\t\tnumber of samples is %d\n",n);
+//        printf("\t\tnumber of attributes is %d\n",m);
+//        printf("\t\tinitial attributes factors are :");
+//        for (i=0;i<m;i++)
+//            printf(" %lf",p[i]);
+//        printf("\n");
+//        printf("\t\tinput data file name is <%s>\n",fname_in);
+//        printf("\t\toutput data file name is %s\n",fname_out);
+//        printf("\t\tmaximum number of clusters is %d\n",k);
+//        printf("\t\tmaximum number of iterations is %d\n",iter);
+//        printf("\t\tminimum number of samples in cluster is %d\n",th_n);
+//        printf("\t\tmaximum standard deviation of one cluster is %lf\n",th_s);
+//        printf("\t\tmaximum distance to merge clusters is %lf\n",th_c);
+//        printf("\t\tnumber of initial cluster centers is %d\n",l);
+//        if (l) {
+//            printf("\t\tinitial cluster centers are :\n");
+//            for (i=0;i<l;i++) {
+//                printf("\t\t\t");
+//                for (j=0;j<m;j++)
+//                    printf("%lf ",cl_c[i][j]);
+//                printf("\n");
+//            }
+//        }
+//        printf("\t\tinput data are:\n");
+//        for (i=0; i<n; i++)
+//            for (j=0; j<m; j++)
+//                printf("\t\t\ti=%4d/%4d j=%4d/%4d - %lf\n",i+1,n,j+1,m,data[i][j]);
+//        printf("\n");
+//    */
+//    /*int p;*/         /* maximum number of pairs of cluster which can be merged  */
+//    /*
+//        printf("\t\tnumber of cluster centers is %d\n",l);
+//        printf("\t\tcluster centers are:\n");
+//        for (i=0; i<l; i++)
+//            for (j=0; j<m; j++)
+//                printf("\t\t\ti=%4d/%4d j=%4d/%4d - %lf\n",i+1,l,j+1,m,cl_c[i][j]);
+//        printf("\n");
+//        printf("\t\tcluster number of members are: ");
+//        for (i=0; i<m; i++)
+//            printf("%d ",cl_m[i]);
+//        printf("\n");
+//        printf("\t\tcluster average distances are: ");
+//        for (i=0; i<k; i++)
+//            printf("%lf ",cl_d[i]);
+//        printf("\n");
+//        printf("\t\tcluster standard deviations are:\n");
+//        for (i=0; i<k; i++)
+//            for (j=0; j<m; j++)
+//                printf("\t\t\ti=%4d/%4d j=%4d/%4d - %lf\n",i+1,k,j+1,m,cl_s[i][j]);
+//        printf("\n");
+//        printf("\t\tcluster maximum standard deviations are: ");
+//        for (i=0; i<k; i++)
+//            printf("%lf ",cl_ms[i]);
+//        printf("\n");
+//        printf("\t\tcluster maximum standard deviation components are: ");
+//        for (i=0; i<k; i++)
+//            printf("%d ",cl_msc[i]);
+//        printf("\n");
+//        printf("\t\tcluster pairwise distances are: ");
+//        for (i=0; i<k*(k-1)/2; i++)
+//            printf("%lf ",cl_pd[i]);
+//        printf("\n");
+//        printf("\t\tcluster pairwise distance cluster i are: ");
+//        for (i=0; i<k*(k-1)/2; i++)
+//            printf("%d ",cl_pi[i]);
+//        printf("\n");
+//        printf("\t\tcluster pairwise distance cluster j are: ");
+//        for (i=0; i<k*(k-1)/2; i++)
+//            printf("%d ",cl_pj[i]);
+//        printf("\n");
+//        printf("\t\tcluster number of pairwise distances is: %d\n", pdn);
+//        printf("\t\tdata cluster ids are: ");
+//        for (i=0; i<n; i++)
+//            printf("%d ",data_cl[i]);
+//        printf("\n");
+//        printf("\t\tdata cluster distances are: ");
+//        for (i=0; i<n; i++)
+//            printf("%lf ",data_d[i]);
+//        printf("\n");
+//        printf("\t\toverall average distance is: %lf\n\n",oad);
+//    */
+//    return;
+//}
diff --git a/src/modules/imagery/imagery_classification/classification_quality.h b/src/modules/imagery/imagery_classification/cluster_isodata.h
old mode 100644
new mode 100755
similarity index 59%
copy from src/modules/imagery/imagery_classification/classification_quality.h
copy to src/modules/imagery/imagery_classification/cluster_isodata.h
index 8b862d4..05215a8
--- a/src/modules/imagery/imagery_classification/classification_quality.h
+++ b/src/modules/imagery/imagery_classification/cluster_isodata.h
@@ -1,117 +1,147 @@
-/**********************************************************
- * Version $Id: classification_quality.h 1921 2014-01-09 10:24:11Z oconrad $
- *********************************************************/
-
-///////////////////////////////////////////////////////////
-//                                                       //
-//                         SAGA                          //
-//                                                       //
-//      System for Automated Geoscientific Analyses      //
-//                                                       //
-//                    Module Library:                    //
-//                imagery_classification                 //
-//                                                       //
-//-------------------------------------------------------//
-//                                                       //
-//                classification_quality.h               //
-//                                                       //
-//                 Copyright (C) 2015 by                 //
+
+////////////////////////////////////////////////////////////
+//                                                       //
+//                         SAGA                          //
+//                                                       //
+//      System for Automated Geoscientific Analyses      //
+//                                                       //
+//                    Module Library:                    //
+//                imagery_classification                 //
+//                                                       //
+//-------------------------------------------------------//
+//                                                       //
+//                  cluster_isodata.cpp                  //
+//                                                       //
+//                 Copyright (C) 2016 by                 //
 //                      Olaf Conrad                      //
-//                                                       //
-//-------------------------------------------------------//
-//                                                       //
-// This file is part of 'SAGA - System for Automated     //
-// Geoscientific Analyses'. SAGA is free software; you   //
-// can redistribute it and/or modify it under the terms  //
-// of the GNU General Public License as published by the //
-// Free Software Foundation; version 2 of the License.   //
-//                                                       //
-// SAGA is distributed in the hope that it will be       //
-// useful, but WITHOUT ANY WARRANTY; without even the    //
-// implied warranty of MERCHANTABILITY or FITNESS FOR A  //
-// PARTICULAR PURPOSE. See the GNU General Public        //
-// License for more details.                             //
-//                                                       //
-// You should have received a copy of the GNU General    //
-// Public License along with this program; if not,       //
-// write to the Free Software Foundation, Inc.,          //
-// 51 Franklin Street, 5th Floor, Boston, MA 02110-1301, //
-// USA.                                                  //
-//                                                       //
-//-------------------------------------------------------//
-//                                                       //
+//                                                       //
+//-------------------------------------------------------//
+//                                                       //
+// This file is part of 'SAGA - System for Automated     //
+// Geoscientific Analyses'. SAGA is free software; you   //
+// can redistribute it and/or modify it under the terms  //
+// of the GNU General Public License as published by the //
+// Free Software Foundation; version 2 of the License.   //
+//                                                       //
+// SAGA is distributed in the hope that it will be       //
+// useful, but WITHOUT ANY WARRANTY; without even the    //
+// implied warranty of MERCHANTABILITY or FITNESS FOR A  //
+// PARTICULAR PURPOSE. See the GNU General Public        //
+// License for more details.                             //
+//                                                       //
+// You should have received a copy of the GNU General    //
+// Public License along with this program; if not,       //
+// write to the Free Software Foundation, Inc.,          //
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307,   //
+// USA.                                                  //
+//                                                       //
+//-------------------------------------------------------//
+//                                                       //
 //    e-mail:     oconrad at saga-gis.org                   //
 //                                                       //
 //    contact:    Olaf Conrad                            //
-//                Institute of Geography                 //
-//                University of Hamburg                  //
-//                Germany                                //
-//                                                       //
-///////////////////////////////////////////////////////////
-
-//---------------------------------------------------------
-
-
-///////////////////////////////////////////////////////////
-//														 //
-//                                                       //
-//														 //
-///////////////////////////////////////////////////////////
-
-//---------------------------------------------------------
-#ifndef HEADER_INCLUDED__classification_quality_H
-#define HEADER_INCLUDED__classification_quality_H
-
-
-///////////////////////////////////////////////////////////
-//														 //
-//                                                       //
-//														 //
-///////////////////////////////////////////////////////////
-
-//---------------------------------------------------------
-#include "MLB_Interface.h"
-
-
-///////////////////////////////////////////////////////////
-//														 //
-//                                                       //
-//														 //
-///////////////////////////////////////////////////////////
-
-//---------------------------------------------------------
-class CClassification_Quality : public CSG_Module_Grid
-{
-public:
-	CClassification_Quality(void);
-
-
-protected:
-
-	virtual int				On_Parameters_Enable	(CSG_Parameters *pParameters, CSG_Parameter *pParameter);
-
-	virtual bool			On_Execute				(void);
-
-
-private:
-
-	CSG_Table				m_Classes;
-
-
-	bool					Get_Classes		(CSG_Shapes *pPolygons, int Field, CSG_Table &Confusion);
-	bool					Get_Classes		(CSG_Grid *pGrid);
-
-	int						Get_Class		(const CSG_String &Value);
-	int						Get_Class		(double            Value);
-
-};
-
-
-///////////////////////////////////////////////////////////
-//														 //
-//                                                       //
-//														 //
-///////////////////////////////////////////////////////////
-
-//---------------------------------------------------------
-#endif // #ifndef HEADER_INCLUDED__classification_quality_H
+//                Institute of Geography                 //
+//                University of Hamburg                  //
+//                Germany                                //
+//                                                       //
+///////////////////////////////////////////////////////////
+
+///////////////////////////////////////////////////////////
+//														 //
+//														 //
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+#ifndef HEADER_INCLUDED__cluster_isodata_H
+#define HEADER_INCLUDED__cluster_isodata_H
+
+
+///////////////////////////////////////////////////////////
+//														 //
+//														 //
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+#include <saga_api/saga_api.h>
+
+
+///////////////////////////////////////////////////////////
+//														 //
+//														 //
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+class CCluster_ISODATA
+{
+public:
+	CCluster_ISODATA(void);
+	CCluster_ISODATA(size_t nFeatures, TSG_Data_Type Data_Type);
+
+	virtual ~CCluster_ISODATA(void);
+
+	bool					Create					(size_t nFeatures, TSG_Data_Type Data_Type);
+	bool					Destroy					(void);
+
+	size_t					Get_Feature_Count		(void)	{	return( m_nFeatures );	}
+
+	size_t					Get_Sample_Count		(void)	{	return( m_Data.Get_Size() );	}
+	bool					Add_Sample				(const double *Sample);
+
+	size_t					Get_Cluster_Count		(void)	{	return( m_nCluster );	}
+	size_t					Get_Cluster_Count		(size_t iCluster)					{	return( cl_m[iCluster]           );	}
+	double					Get_Cluster_StdDev		(size_t iCluster)					{	return( cl_d[iCluster]           );	}
+	double					Get_Cluster_Mean		(size_t iCluster, size_t iFeature)	{	return( cl_c[iCluster][iFeature] );	}
+	double					Get_Cluster_StdDev		(size_t iCluster, size_t iFeature)	{	return( cl_s[iCluster][iFeature] );	}
+
+	size_t					Get_Cluster				(size_t iSample)	{	return( iSample < Get_Sample_Count() ? data_cl[iSample] : m_nCluster );	}
+
+	bool					Set_Max_Iterations		(size_t Value);
+	bool					Set_Max_Clusters		(size_t Value);
+	bool					Set_Ini_Clusters		(size_t Value);
+	bool					Set_Min_Samples			(size_t Value);
+	bool					Set_Max_Distance		(double Value);
+	bool					Set_Max_StdDev			(double Value);
+
+	bool					Run						(void);
+
+
+private:
+
+	size_t					m_maxIterations, m_nFeatures, m_nCluster, m_nCluster_Ini, m_nCluster_Max, m_nSamples_Min;
+
+	double					m_Distance, m_Distance_Max, m_StdDev_Max;
+
+	TSG_Data_Type			m_Data_Type;
+
+	CSG_Array				m_Data;
+
+	CSG_Array_Int			cl_m, cl_msc, data_cl;
+
+	CSG_Vector				cl_d, cl_ms, data_d;
+
+	CSG_Matrix				cl_c, cl_s;
+
+
+	void					_On_Construction		(void);
+
+	bool					_Initialize				(void);
+
+	double					_Get_Sample				(size_t iSample, size_t iFeature);
+
+	double					_Get_Sample_Distance	(int iSample , int iCluster);
+	double					_Get_Cluster_Distance	(int iCluster, int jCluster);
+
+};
+
+
+///////////////////////////////////////////////////////////
+//                                                       //
+//                                                       //
+//                                                       //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+#endif // #ifndef HEADER_INCLUDED__cluster_isodata_H
diff --git a/src/modules/imagery/imagery_classification/decision_tree.cpp b/src/modules/imagery/imagery_classification/decision_tree.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_classification/decision_tree.h b/src/modules/imagery/imagery_classification/decision_tree.h
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_maxent/MLB_Interface.cpp b/src/modules/imagery/imagery_maxent/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_maxent/MLB_Interface.h b/src/modules/imagery/imagery_maxent/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_maxent/Makefile.am b/src/modules/imagery/imagery_maxent/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_maxent/classify_grid.cpp b/src/modules/imagery/imagery_maxent/classify_grid.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_maxent/classify_grid.h b/src/modules/imagery/imagery_maxent/classify_grid.h
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_maxent/lbfgs.cpp b/src/modules/imagery/imagery_maxent/lbfgs.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_maxent/lbfgs.h b/src/modules/imagery/imagery_maxent/lbfgs.h
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_maxent/mathvec.h b/src/modules/imagery/imagery_maxent/mathvec.h
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_maxent/maxent.cpp b/src/modules/imagery/imagery_maxent/maxent.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_maxent/maxent.h b/src/modules/imagery/imagery_maxent/maxent.h
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_maxent/me.cpp b/src/modules/imagery/imagery_maxent/me.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_maxent/me.h b/src/modules/imagery/imagery_maxent/me.h
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_maxent/owlqn.cpp b/src/modules/imagery/imagery_maxent/owlqn.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_maxent/presence_prediction.cpp b/src/modules/imagery/imagery_maxent/presence_prediction.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_maxent/presence_prediction.h b/src/modules/imagery/imagery_maxent/presence_prediction.h
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_maxent/sgd.cpp b/src/modules/imagery/imagery_maxent/sgd.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_opencv/MLB_Interface.cpp b/src/modules/imagery/imagery_opencv/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_opencv/MLB_Interface.h b/src/modules/imagery/imagery_opencv/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_opencv/Makefile.am b/src/modules/imagery/imagery_opencv/Makefile.am
old mode 100644
new mode 100755
index e3210ee..1d476da
--- a/src/modules/imagery/imagery_opencv/Makefile.am
+++ b/src/modules/imagery/imagery_opencv/Makefile.am
@@ -11,7 +11,7 @@ if HAVE_CV
 DEF_SAGA           = -D_SAGA_LINUX -D_TYPEDEF_BYTE -D_TYPEDEF_WORD
 CXX_INCS           = -I$(top_srcdir)/src/saga_core -I/usr/include/opencv
 AM_CXXFLAGS        = -fPIC $(CXX_INCS) $(DEF_SAGA) $(UC_DEFS) $(DBGFLAGS) $(GOMPFLAGS)
-AM_LDFLAGS         = -fPIC -shared -avoid-version -lcv
+AM_LDFLAGS         = -fPIC -shared -avoid-version `pkg-config opencv --libs`
 pkglib_LTLIBRARIES = libimagery_opencv.la
 libimagery_opencv_la_SOURCES =\
 MLB_Interface.cpp\
diff --git a/src/modules/imagery/imagery_opencv/Makefile.in b/src/modules/imagery/imagery_opencv/Makefile.in
index 24e066a..0b17a9b 100644
--- a/src/modules/imagery/imagery_opencv/Makefile.in
+++ b/src/modules/imagery/imagery_opencv/Makefile.in
@@ -376,7 +376,7 @@ top_srcdir = @top_srcdir@
 @HAVE_CV_TRUE at DEF_SAGA = -D_SAGA_LINUX -D_TYPEDEF_BYTE -D_TYPEDEF_WORD
 @HAVE_CV_TRUE at CXX_INCS = -I$(top_srcdir)/src/saga_core -I/usr/include/opencv
 @HAVE_CV_TRUE at AM_CXXFLAGS = -fPIC $(CXX_INCS) $(DEF_SAGA) $(UC_DEFS) $(DBGFLAGS) $(GOMPFLAGS)
- at HAVE_CV_TRUE@AM_LDFLAGS = -fPIC -shared -avoid-version -lcv
+ at HAVE_CV_TRUE@AM_LDFLAGS = -fPIC -shared -avoid-version `pkg-config opencv --libs`
 @HAVE_CV_TRUE at pkglib_LTLIBRARIES = libimagery_opencv.la
 @HAVE_CV_TRUE at libimagery_opencv_la_SOURCES = \
 @HAVE_CV_TRUE at MLB_Interface.cpp\
diff --git a/src/modules/imagery/imagery_opencv/opencv.cpp b/src/modules/imagery/imagery_opencv/opencv.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_opencv/opencv.h b/src/modules/imagery/imagery_opencv/opencv.h
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_opencv/opencv_fourier.cpp b/src/modules/imagery/imagery_opencv/opencv_fourier.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_opencv/opencv_fourier.h b/src/modules/imagery/imagery_opencv/opencv_fourier.h
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_opencv/opencv_morphology.cpp b/src/modules/imagery/imagery_opencv/opencv_morphology.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_opencv/opencv_morphology.h b/src/modules/imagery/imagery_opencv/opencv_morphology.h
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_opencv/opencv_nnet.cpp b/src/modules/imagery/imagery_opencv/opencv_nnet.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_opencv/opencv_nnet.h b/src/modules/imagery/imagery_opencv/opencv_nnet.h
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_opencv/opencv_stereo_match.cpp b/src/modules/imagery/imagery_opencv/opencv_stereo_match.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_opencv/opencv_stereo_match.h b/src/modules/imagery/imagery_opencv/opencv_stereo_match.h
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_opencv/opencv_svd.cpp b/src/modules/imagery/imagery_opencv/opencv_svd.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_opencv/opencv_svd.h b/src/modules/imagery/imagery_opencv/opencv_svd.h
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_photogrammetry/Colorisation.cpp b/src/modules/imagery/imagery_photogrammetry/Colorisation.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_photogrammetry/Colorisation.h b/src/modules/imagery/imagery_photogrammetry/Colorisation.h
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_photogrammetry/MLB_Interface.cpp b/src/modules/imagery/imagery_photogrammetry/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_photogrammetry/MLB_Interface.h b/src/modules/imagery/imagery_photogrammetry/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_photogrammetry/Makefile.am b/src/modules/imagery/imagery_photogrammetry/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_photogrammetry/Resection.cpp b/src/modules/imagery/imagery_photogrammetry/Resection.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_photogrammetry/Resection.h b/src/modules/imagery/imagery_photogrammetry/Resection.h
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_photogrammetry/methods.cpp b/src/modules/imagery/imagery_photogrammetry/methods.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_photogrammetry/methods.h b/src/modules/imagery/imagery_photogrammetry/methods.h
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_segmentation/MLB_Interface.cpp b/src/modules/imagery/imagery_segmentation/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_segmentation/MLB_Interface.h b/src/modules/imagery/imagery_segmentation/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_segmentation/Makefile.am b/src/modules/imagery/imagery_segmentation/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_segmentation/grid_seeds.cpp b/src/modules/imagery/imagery_segmentation/grid_seeds.cpp
old mode 100644
new mode 100755
index 2c38fab..fbb5cc9
--- a/src/modules/imagery/imagery_segmentation/grid_seeds.cpp
+++ b/src/modules/imagery/imagery_segmentation/grid_seeds.cpp
@@ -197,10 +197,10 @@ bool CGrid_Seeds::On_Execute(void)
 
 			SG_UI_Progress_Lock(true);
 
-			Smoothed.Assign(pFeatures->asGrid(i), GRID_INTERPOLATION_Mean_Cells);
+			Smoothed.Assign(pFeatures->asGrid(i), GRID_RESAMPLING_Mean_Cells);
 
 			m_pFeatures[i]	= new CSG_Grid(*Get_System(), SG_DATATYPE_Float);
-			m_pFeatures[i]	->Assign(&Smoothed, GRID_INTERPOLATION_BSpline);
+			m_pFeatures[i]	->Assign(&Smoothed, GRID_RESAMPLING_BSpline);
 			m_pFeatures[i]	->Set_Name(pFeatures->asGrid(i)->Get_Name());
 
 			SG_UI_Progress_Lock(false);
diff --git a/src/modules/imagery/imagery_segmentation/grid_seeds.h b/src/modules/imagery/imagery_segmentation/grid_seeds.h
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_segmentation/rga_basic.cpp b/src/modules/imagery/imagery_segmentation/rga_basic.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_segmentation/rga_basic.h b/src/modules/imagery/imagery_segmentation/rga_basic.h
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_segmentation/skeletonization.cpp b/src/modules/imagery/imagery_segmentation/skeletonization.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_segmentation/skeletonization.h b/src/modules/imagery/imagery_segmentation/skeletonization.h
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_segmentation/watershed_segmentation.cpp b/src/modules/imagery/imagery_segmentation/watershed_segmentation.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_segmentation/watershed_segmentation.h b/src/modules/imagery/imagery_segmentation/watershed_segmentation.h
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_svm/MLB_Interface.cpp b/src/modules/imagery/imagery_svm/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_svm/MLB_Interface.h b/src/modules/imagery/imagery_svm/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_svm/Makefile.am b/src/modules/imagery/imagery_svm/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_svm/svm_grids.cpp b/src/modules/imagery/imagery_svm/svm_grids.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_svm/svm_grids.h b/src/modules/imagery/imagery_svm/svm_grids.h
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_tools/Image_VI_Distance.cpp b/src/modules/imagery/imagery_tools/Image_VI_Distance.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_tools/Image_VI_Distance.h b/src/modules/imagery/imagery_tools/Image_VI_Distance.h
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_tools/Image_VI_Slope.cpp b/src/modules/imagery/imagery_tools/Image_VI_Slope.cpp
old mode 100644
new mode 100755
index 56ccdcb..18f0d19
--- a/src/modules/imagery/imagery_tools/Image_VI_Slope.cpp
+++ b/src/modules/imagery/imagery_tools/Image_VI_Slope.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: Image_VI_Slope.cpp 2072 2014-03-31 08:50:43Z reklov_w $
+ * Version $Id: Image_VI_Slope.cpp 2786 2016-02-15 14:35:35Z reklov_w $
  *********************************************************/
 /*******************************************************************************
     Image_VI_Slope.cpp
@@ -47,12 +47,14 @@ CImage_VI_Slope::CImage_VI_Slope(void)
 	Set_Description	(_TW(
 		"Slope based vegetation indices.\n"
 		"\n<ul>"
+        "<li>Difference Vegetation Index\n"
+		"    DVI = NIR - R</li>\n"
+		"<li>Normalized Difference Vegetation Index (Rouse et al. 1974)\n"
+		"    NDVI = (NIR - R) / (NIR + R)</li>\n"
 		"<li>Ratio Vegetation Index (Richardson and Wiegand, 1977)\n"
 		"    RVI = R / NIR</li>\n"
 		"<li>Normalized Ratio Vegetation Index (Baret and Guyot, 1991)\n"
 		"    NRVI = (RVI - 1) / (RVI + 1)</li>\n"
-		"<li>Normalized Difference Vegetation Index (Rouse et al. 1974)\n"
-		"    NDVI = (NIR - R) / (NIR + R)</li>\n"
 		"<li>Transformed Vegetation Index (Deering et al., 1975)\n"
 		"    TVI = [(NIR - R) / (NIR + R)]^0.5 + 0.5 </li>\n"
 		"<li>Corrected Transformed Ratio Vegetation Index (Perry and Lautenschlager, 1984)\n"
diff --git a/src/modules/imagery/imagery_tools/Image_VI_Slope.h b/src/modules/imagery/imagery_tools/Image_VI_Slope.h
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_tools/MLB_Interface.cpp b/src/modules/imagery/imagery_tools/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_tools/MLB_Interface.h b/src/modules/imagery/imagery_tools/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_tools/Makefile.am b/src/modules/imagery/imagery_tools/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_tools/evi.cpp b/src/modules/imagery/imagery_tools/evi.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_tools/evi.h b/src/modules/imagery/imagery_tools/evi.h
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_tools/landsat_acca.cpp b/src/modules/imagery/imagery_tools/landsat_acca.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_tools/landsat_acca.h b/src/modules/imagery/imagery_tools/landsat_acca.h
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_tools/landsat_import.cpp b/src/modules/imagery/imagery_tools/landsat_import.cpp
old mode 100644
new mode 100755
index 5edcfd6..2e3df82
--- a/src/modules/imagery/imagery_tools/landsat_import.cpp
+++ b/src/modules/imagery/imagery_tools/landsat_import.cpp
@@ -113,13 +113,14 @@ CLandsat_Import::CLandsat_Import(void)
 	);
 
 	Parameters.Add_Choice(
-		pNode	, "INTERPOLATION"	, _TL("Interpolation"),
+		pNode	, "RESAMPLING"	, _TL("Resampling"),
 		_TL(""),
-		CSG_String::Format(SG_T("%s|%s|%s|"),
+		CSG_String::Format("%s|%s|%s|%s|",
 			_TL("Nearest Neighbour"),
 			_TL("Bilinear Interpolation"),
-			_TL("Cubic Convolution")
-		), 2
+			_TL("Bicubic Spline Interpolation"),
+			_TL("B-Spline Interpolation")
+		), 3
 	);
 
 	pNode	= Parameters.Add_Value(
@@ -172,7 +173,7 @@ int CLandsat_Import::On_Parameters_Enable(CSG_Parameters *pParameters, CSG_Param
 
 	if( !SG_STR_CMP(pParameter->Get_Identifier(), "PROJECTION") )
 	{
-		pParameters->Set_Enabled("INTERPOLATION", pParameter->asInt() == 2);
+		pParameters->Set_Enabled("RESAMPLING", pParameter->asInt() == 2);
 	}
 
 	if( !SG_STR_CMP(pParameter->Get_Identifier(), "SHOW_RGB") )
@@ -343,22 +344,13 @@ CSG_Grid * CLandsat_Import::Get_Projection(CSG_Grid *pGrid, const CSG_String &Pr
 		return( NULL );
 	}
 
-	int	Interpolation;
-
-	switch( Parameters("INTERPOLATION")->asInt() )
-	{
-	case  0:	Interpolation	= GRID_INTERPOLATION_NearestNeighbour;	break;
-	case  1:	Interpolation	= GRID_INTERPOLATION_Bilinear        ;	break;
-	default:	Interpolation	= GRID_INTERPOLATION_BSpline         ;	break;
-	}
-
 	Message_Add(CSG_String::Format(SG_T("\n%s (%s: %s)\n"), _TL("re-projection to geographic coordinates"), _TL("original"), pGrid->Get_Projection().Get_Name().c_str()), false);
 
 	pModule->Settings_Push(NULL);
 
-	if( pModule->Set_Parameter("CRS_PROJ4"    , Proj4        )
-	&&  pModule->Set_Parameter("INTERPOLATION", Interpolation)
-	&&  pModule->Set_Parameter("SOURCE"       , pGrid        )
+	if( pModule->Set_Parameter("CRS_PROJ4" , Proj4)
+	&&  pModule->Set_Parameter("SOURCE"    , pGrid)
+	&&  pModule->Set_Parameter("RESAMPLING", Parameters("RESAMPLING"))
 	&&  pModule->Execute() )
 	{
 		pGrid	= pModule->Get_Parameters("TARGET")->Get_Parameter("GRID")->asGrid();
diff --git a/src/modules/imagery/imagery_tools/landsat_import.h b/src/modules/imagery/imagery_tools/landsat_import.h
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_tools/landsat_toar.cpp b/src/modules/imagery/imagery_tools/landsat_toar.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_tools/landsat_toar.h b/src/modules/imagery/imagery_tools/landsat_toar.h
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_tools/landsat_toar_core.cpp b/src/modules/imagery/imagery_tools/landsat_toar_core.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_tools/landsat_toar_core.h b/src/modules/imagery/imagery_tools/landsat_toar_core.h
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_tools/pansharpening.cpp b/src/modules/imagery/imagery_tools/pansharpening.cpp
old mode 100644
new mode 100755
index 58feb66..572dbff
--- a/src/modules/imagery/imagery_tools/pansharpening.cpp
+++ b/src/modules/imagery/imagery_tools/pansharpening.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: pansharpening.cpp 2464 2015-04-02 10:14:04Z oconrad $
+ * Version $Id: pansharpening.cpp 2752 2016-01-15 15:26:55Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -69,13 +69,13 @@
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
-TSG_Grid_Interpolation	Get_Interpolation(int Interpolation)
+TSG_Grid_Resampling	Get_Interpolation(int Interpolation)
 {
 	switch( Interpolation )
 	{
-	case 0:				return( GRID_INTERPOLATION_NearestNeighbour );
-	case 1:				return( GRID_INTERPOLATION_Bilinear );
-	case 2: default:	return( GRID_INTERPOLATION_BSpline );
+	case 0:				return( GRID_RESAMPLING_NearestNeighbour );
+	case 1:				return( GRID_RESAMPLING_Bilinear );
+	case 2: default:	return( GRID_RESAMPLING_BSpline );
 	}
 }
 
@@ -160,7 +160,7 @@ CPanSharp_IHS::CPanSharp_IHS(void)
 bool CPanSharp_IHS::On_Execute(void)
 {
 	//-----------------------------------------------------
-	TSG_Grid_Interpolation	Interpolation	= Get_Interpolation(Parameters("RESAMPLING")->asInt());
+	TSG_Grid_Resampling	Interpolation	= Get_Interpolation(Parameters("RESAMPLING")->asInt());
 
 	//-----------------------------------------------------
 	int			y;
@@ -366,7 +366,7 @@ CPanSharp_Brovey::CPanSharp_Brovey(void)
 bool CPanSharp_Brovey::On_Execute(void)
 {
 	//-----------------------------------------------------
-	TSG_Grid_Interpolation	Interpolation	= Get_Interpolation(Parameters("RESAMPLING")->asInt());
+	TSG_Grid_Resampling	Interpolation	= Get_Interpolation(Parameters("RESAMPLING")->asInt());
 
 	//-----------------------------------------------------
 	CSG_Grid	*pPan, *pR, *pG, *pB;
@@ -496,7 +496,7 @@ CPanSharp_CN::CPanSharp_CN(void)
 bool CPanSharp_CN::On_Execute(void)
 {
 	//-----------------------------------------------------
-	TSG_Grid_Interpolation	Interpolation	= Get_Interpolation(Parameters("RESAMPLING")->asInt());
+	TSG_Grid_Resampling	Interpolation	= Get_Interpolation(Parameters("RESAMPLING")->asInt());
 
 	//-----------------------------------------------------
 	int						i;
@@ -770,7 +770,7 @@ bool CPanSharp_PCA::On_Execute(void)
 	//-----------------------------------------------------
 	// resample all other PCs to match the high resolution of the PAN band
 
-	TSG_Grid_Interpolation	Interpolation	= Get_Interpolation(Parameters("RESAMPLING")->asInt());
+	TSG_Grid_Resampling	Interpolation	= Get_Interpolation(Parameters("RESAMPLING")->asInt());
 
 	for(i=1; i<n; i++)
 	{
diff --git a/src/modules/imagery/imagery_tools/pansharpening.h b/src/modules/imagery/imagery_tools/pansharpening.h
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_tools/tasseled_cap.cpp b/src/modules/imagery/imagery_tools/tasseled_cap.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_tools/tasseled_cap.h b/src/modules/imagery/imagery_tools/tasseled_cap.h
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_vigra/MLB_Interface.cpp b/src/modules/imagery/imagery_vigra/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_vigra/MLB_Interface.h b/src/modules/imagery/imagery_vigra/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_vigra/Makefile.am b/src/modules/imagery/imagery_vigra/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_vigra/vigra.cpp b/src/modules/imagery/imagery_vigra/vigra.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_vigra/vigra.h b/src/modules/imagery/imagery_vigra/vigra.h
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_vigra/vigra_distance.cpp b/src/modules/imagery/imagery_vigra/vigra_distance.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_vigra/vigra_distance.h b/src/modules/imagery/imagery_vigra/vigra_distance.h
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_vigra/vigra_edges.cpp b/src/modules/imagery/imagery_vigra/vigra_edges.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_vigra/vigra_edges.h b/src/modules/imagery/imagery_vigra/vigra_edges.h
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_vigra/vigra_fft.cpp b/src/modules/imagery/imagery_vigra/vigra_fft.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_vigra/vigra_fft.h b/src/modules/imagery/imagery_vigra/vigra_fft.h
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_vigra/vigra_morphology.cpp b/src/modules/imagery/imagery_vigra/vigra_morphology.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_vigra/vigra_morphology.h b/src/modules/imagery/imagery_vigra/vigra_morphology.h
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_vigra/vigra_random_forest.cpp b/src/modules/imagery/imagery_vigra/vigra_random_forest.cpp
old mode 100644
new mode 100755
index 56c97da..97ffe2d
--- a/src/modules/imagery/imagery_vigra/vigra_random_forest.cpp
+++ b/src/modules/imagery/imagery_vigra/vigra_random_forest.cpp
@@ -117,17 +117,28 @@ public:
 	bool						Train_Model				(const CSG_Matrix &Data);
 
 	int							Get_Feature_Count		(void)	{	return( m_Forest.feature_count() );	}
+	int							Get_Class_Count			(void)	{	return( m_Forest.  class_count() );	}
 
 	int							Get_Prediction			(vigra::Matrix<double> features);
 	vigra::Matrix<double>		Get_Probabilities		(vigra::Matrix<double> features);
 
+	double						Get_OOB					(void)	{	return( m_OOB.oob_breiman );	}
+
+	double						Get_Importance			(int iFeature, int iClass)	{	return( m_VI.variable_importance_(iFeature, iClass) );	}
+	double						Get_Importance			(int iFeature)	{	return( m_VI.variable_importance_(iFeature, Get_Class_Count() + 0) );	}
+	double						Get_Gini				(int iFeature)	{	return( m_VI.variable_importance_(iFeature, Get_Class_Count() + 1) );	}
+
 
 private:
 
 	CSG_Parameters				*m_pParameters;
 
 	vigra::RandomForest<int>	m_Forest;
-	
+
+	vigra::rf::visitors::OOB_Error					m_OOB;	// visitor to calculate out-of-bag error
+
+	vigra::rf::visitors::VariableImportanceVisitor	m_VI;	// visitor to calculate variable importance
+
 };
 
 
@@ -290,12 +301,11 @@ bool CRandom_Forest::Train_Model(const CSG_Matrix &Data)
 	//-----------------------------------------------------
 	SG_UI_Process_Set_Text(_TL("learning"));
 
-	vigra::rf::visitors::OOB_Error	oob_v;	// construct visitor to calculate out-of-bag error
-
-	m_Forest.learn(train_features, train_response, vigra::rf::visitors::create_visitor(oob_v));
+	m_Forest.learn(train_features, train_response, vigra::rf::visitors::create_visitor(m_OOB, m_VI));
 
-	SG_UI_Msg_Add_Execution(CSG_String::Format(SG_T("\n%s: %f"), _TL("out-of-bag error"), oob_v.oob_breiman), false);
+	SG_UI_Msg_Add_Execution(CSG_String::Format("\n%s: %f\n", _TL("out-of-bag error"), Get_OOB()), false);
 
+	//-----------------------------------------------------
 #if defined(WITH_HDF5)
 	if( (*m_pParameters)("RF_EXPORT")->asString() && *(*m_pParameters)("RF_EXPORT")->asString() )
 	{
@@ -402,6 +412,12 @@ CViGrA_Random_Forest::CViGrA_Random_Forest(void)
 		PARAMETER_OUTPUT
 	);
 
+	Parameters.Add_Table(
+		NULL	, "IMPORTANCES"			, _TL("Feature Importances"),
+		_TL(""),
+		PARAMETER_OUTPUT
+	);
+
 	//-----------------------------------------------------
 	pNode	= Parameters.Add_Shapes(
 		NULL	, "TRAINING"			, _TL("Training Areas"),
@@ -442,8 +458,9 @@ int CViGrA_Random_Forest::On_Parameters_Enable(CSG_Parameters *pParameters, CSG_
 	{
 		bool	bTraining	= !SG_File_Exists(pParameter->asString());
 
-		pParameters->Set_Enabled("RF_OPTIONS", bTraining);
-		pParameters->Set_Enabled("TRAINING"  , bTraining);
+		pParameters->Set_Enabled("RF_OPTIONS" , bTraining);
+		pParameters->Set_Enabled("TRAINING"   , bTraining);
+		pParameters->Set_Enabled("IMPORTANCES", bTraining);
 	}
 
 	if( !SG_STR_CMP(pParameter->Get_Identifier(), "DO_MRMR") )
@@ -456,7 +473,7 @@ int CViGrA_Random_Forest::On_Parameters_Enable(CSG_Parameters *pParameters, CSG_
 		CSG_mRMR::Parameters_Enable(pParameters, pParameter);
 	}
 
-	return( 1 );
+	return( CSG_Module_Grid::On_Parameters_Enable(pParameters, pParameter) );
 }
 
 
@@ -532,6 +549,39 @@ bool CViGrA_Random_Forest::On_Execute(void)
 		}
 
 		Model.Train_Model(Data);
+
+		//-------------------------------------------------
+		int	iFeature, iClass;
+
+		CSG_Table	*pImportances	= Parameters("IMPORTANCES")->asTable();
+
+		pImportances->Destroy();
+		pImportances->Set_Name(_TL("Feature Importances"));
+
+		pImportances->Add_Field(_TL("Feature"), SG_DATATYPE_String);
+
+		for(iClass=0; iClass<Classes.Get_Count(); iClass++)
+		{
+			pImportances->Add_Field(Classes[iClass].asString(CLASS_NAME), SG_DATATYPE_Double);
+		}
+
+		pImportances->Add_Field(_TL("Permutation Importance"), SG_DATATYPE_Double);
+		pImportances->Add_Field(_TL("Gini Decrease"         ), SG_DATATYPE_Double);
+
+		for(iFeature=0; iFeature<m_nFeatures; iFeature++)
+		{
+			CSG_Table_Record	*pImportance	= pImportances->Add_Record();
+
+			pImportance->Set_Value(0, m_pFeatures[iFeature]->Get_Name());
+
+			for(iClass=0; iClass<Classes.Get_Count(); iClass++)
+			{
+				pImportance->Set_Value(1 + iClass, Model.Get_Importance(iFeature, iClass));
+			}
+
+			pImportance->Set_Value(1 + Classes.Get_Count(), Model.Get_Importance(iFeature));
+			pImportance->Set_Value(2 + Classes.Get_Count(), Model.Get_Gini      (iFeature));
+		}
 	}
 
 
diff --git a/src/modules/imagery/imagery_vigra/vigra_random_forest.h b/src/modules/imagery/imagery_vigra/vigra_random_forest.h
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_vigra/vigra_smoothing.cpp b/src/modules/imagery/imagery_vigra/vigra_smoothing.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_vigra/vigra_smoothing.h b/src/modules/imagery/imagery_vigra/vigra_smoothing.h
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_vigra/vigra_watershed.cpp b/src/modules/imagery/imagery_vigra/vigra_watershed.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/imagery/imagery_vigra/vigra_watershed.h b/src/modules/imagery/imagery_vigra/vigra_watershed.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/Makefile.am b/src/modules/io/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_esri_e00/ESRI_E00_Import.cpp b/src/modules/io/io_esri_e00/ESRI_E00_Import.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_esri_e00/ESRI_E00_Import.h b/src/modules/io/io_esri_e00/ESRI_E00_Import.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_esri_e00/MLB_Interface.cpp b/src/modules/io/io_esri_e00/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_esri_e00/MLB_Interface.h b/src/modules/io/io_esri_e00/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_esri_e00/Makefile.am b/src/modules/io/io_esri_e00/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_esri_e00/e00compr/cpl_conv.c b/src/modules/io/io_esri_e00/e00compr/cpl_conv.c
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_esri_e00/e00compr/cpl_conv.h b/src/modules/io/io_esri_e00/e00compr/cpl_conv.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_esri_e00/e00compr/cpl_error.c b/src/modules/io/io_esri_e00/e00compr/cpl_error.c
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_esri_e00/e00compr/cpl_error.h b/src/modules/io/io_esri_e00/e00compr/cpl_error.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_esri_e00/e00compr/cpl_port.h b/src/modules/io/io_esri_e00/e00compr/cpl_port.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_esri_e00/e00compr/cpl_vsi.h b/src/modules/io/io_esri_e00/e00compr/cpl_vsi.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_esri_e00/e00compr/cpl_vsisimple.c b/src/modules/io/io_esri_e00/e00compr/cpl_vsisimple.c
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_esri_e00/e00compr/e00compr.h b/src/modules/io/io_esri_e00/e00compr/e00compr.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_esri_e00/e00compr/e00read.c b/src/modules/io/io_esri_e00/e00compr/e00read.c
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_esri_e00/e00compr/e00write.c b/src/modules/io/io_esri_e00/e00compr/e00write.c
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_gdal/MLB_Interface.cpp b/src/modules/io/io_gdal/MLB_Interface.cpp
old mode 100644
new mode 100755
index fa38d56..20d3784
--- a/src/modules/io/io_gdal/MLB_Interface.cpp
+++ b/src/modules/io/io_gdal/MLB_Interface.cpp
@@ -101,6 +101,7 @@ CSG_String Get_Info(int i)
 #include "gdal_export.h"
 #include "gdal_export_geotiff.h"
 #include "gdal_import_netcdf.h"
+#include "gdal_import_wms.h"
 #include "gdal_catalogue.h"
 
 #include "ogr_import.h"
@@ -127,10 +128,12 @@ CSG_Module *		Create_Module(int i)
 
 	case  5:	return( new COGR_Export_KML );
 
-	case  6:	return( SG_Get_GDAL_Drivers().Get_Driver("netCDF") ? new CGDAL_Import_NetCDF : NULL );
+	case  6:	return( SG_Get_GDAL_Drivers().Get_Driver("netCDF") ? new CGDAL_Import_NetCDF : MLB_INTERFACE_SKIP_MODULE );
+
+	case  9:	return( new CGDAL_Import_WMS );
 
 	//-----------------------------------------------------
-	case  9:	return( NULL );
+	case 10:	return( NULL );
 	default:	return( MLB_INTERFACE_SKIP_MODULE );
 	}
 
diff --git a/src/modules/io/io_gdal/MLB_Interface.h b/src/modules/io/io_gdal/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_gdal/Makefile.am b/src/modules/io/io_gdal/Makefile.am
old mode 100644
new mode 100755
index b3be151..491a1ad
--- a/src/modules/io/io_gdal/Makefile.am
+++ b/src/modules/io/io_gdal/Makefile.am
@@ -20,6 +20,7 @@ gdal_export.cpp\
 gdal_export_geotiff.cpp\
 gdal_import.cpp\
 gdal_import_netcdf.cpp\
+gdal_import_wms.cpp\
 MLB_Interface.cpp\
 ogr_driver.cpp\
 ogr_export.cpp\
@@ -31,6 +32,7 @@ gdal_export.h\
 gdal_export_geotiff.h\
 gdal_import.h\
 gdal_import_netcdf.h\
+gdal_import_wms.h\
 MLB_Interface.h\
 ogr_driver.h\
 ogr_export.h\
diff --git a/src/modules/io/io_gdal/Makefile.in b/src/modules/io/io_gdal/Makefile.in
index 7d1b89d..620f9dc 100644
--- a/src/modules/io/io_gdal/Makefile.in
+++ b/src/modules/io/io_gdal/Makefile.in
@@ -129,8 +129,8 @@ libio_gdal_la_DEPENDENCIES =  \
 	$(top_srcdir)/src/saga_core/saga_api/libsaga_api.la
 am_libio_gdal_la_OBJECTS = gdal_catalogue.lo gdal_driver.lo \
 	gdal_export.lo gdal_export_geotiff.lo gdal_import.lo \
-	gdal_import_netcdf.lo MLB_Interface.lo ogr_driver.lo \
-	ogr_export.lo ogr_export_kml.lo ogr_import.lo
+	gdal_import_netcdf.lo gdal_import_wms.lo MLB_Interface.lo \
+	ogr_driver.lo ogr_export.lo ogr_export_kml.lo ogr_import.lo
 libio_gdal_la_OBJECTS = $(am_libio_gdal_la_OBJECTS)
 AM_V_lt = $(am__v_lt_ at AM_V@)
 am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
@@ -381,6 +381,7 @@ gdal_export.cpp\
 gdal_export_geotiff.cpp\
 gdal_import.cpp\
 gdal_import_netcdf.cpp\
+gdal_import_wms.cpp\
 MLB_Interface.cpp\
 ogr_driver.cpp\
 ogr_export.cpp\
@@ -392,6 +393,7 @@ gdal_export.h\
 gdal_export_geotiff.h\
 gdal_import.h\
 gdal_import_netcdf.h\
+gdal_import_wms.h\
 MLB_Interface.h\
 ogr_driver.h\
 ogr_export.h\
@@ -485,6 +487,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gdal_export_geotiff.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gdal_import.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gdal_import_netcdf.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gdal_import_wms.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ogr_driver.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ogr_export.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ogr_export_kml.Plo at am__quote@
diff --git a/src/modules/io/io_gdal/gdal_catalogue.cpp b/src/modules/io/io_gdal/gdal_catalogue.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_gdal/gdal_catalogue.h b/src/modules/io/io_gdal/gdal_catalogue.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_gdal/gdal_driver.cpp b/src/modules/io/io_gdal/gdal_driver.cpp
old mode 100644
new mode 100755
index 0d7a132..1b9325c
--- a/src/modules/io/io_gdal/gdal_driver.cpp
+++ b/src/modules/io/io_gdal/gdal_driver.cpp
@@ -60,9 +60,12 @@
 #include "gdal_driver.h"
 
 #include <gdal_priv.h>
+
 #include <cpl_string.h>
 #include <cpl_error.h>
 
+#include <vrtdataset.h>
+
 
 ///////////////////////////////////////////////////////////
 //														 //
@@ -219,7 +222,7 @@ TSG_Data_Type CSG_GDAL_Drivers::Get_SAGA_Type(int Type)
 //---------------------------------------------------------
 CSG_GDAL_DataSet::CSG_GDAL_DataSet(void)
 {
-	m_pDataSet	= NULL;
+	m_pDataSet	= m_pVrtSource	= NULL;
 
 	m_TF_A.Create(2);
 	m_TF_B.Create(2, 2);
@@ -228,7 +231,7 @@ CSG_GDAL_DataSet::CSG_GDAL_DataSet(void)
 //---------------------------------------------------------
 CSG_GDAL_DataSet::CSG_GDAL_DataSet(const CSG_String &File_Name)
 {
-	m_pDataSet	= NULL;
+	m_pDataSet	= m_pVrtSource	= NULL;
 
 	m_TF_A.Create(2);
 	m_TF_B.Create(2, 2);
@@ -258,14 +261,100 @@ bool CSG_GDAL_DataSet::Open_Read(const CSG_String &File_Name)
 	}
 
 	//-----------------------------------------------------
-	double	Transform[6];
+	m_File_Name	= File_Name;
+
+	m_Access	= SG_GDAL_IO_READ;
+
+	return( _Set_Transformation() );
+}
+
+//---------------------------------------------------------
+bool CSG_GDAL_DataSet::Open_Read(const CSG_String &File_Name, const CSG_Grid_System &System)
+{
+	Close();
+
+	if( (m_pVrtSource = (GDALDataset *)GDALOpen(File_Name, GA_ReadOnly)) == NULL )
+	{
+		return( false );
+	}
+
+	//-----------------------------------------------------
+	if( (m_pDataSet = (VRTDataset *)VRTCreate(System.Get_NX(), System.Get_NY())) == NULL )
+	{
+		Close();
+
+		return( false );
+	}
+
+	m_pDataSet->SetProjection(m_pVrtSource->GetProjectionRef());
+
+	double	Transform[6]	=
+	{
+		System.Get_XMin(true), System.Get_Cellsize(), 0.0,
+		System.Get_YMax(true), 0.0, -System.Get_Cellsize()
+	};
+
+	m_pDataSet->SetGeoTransform(Transform);
+
+	//-----------------------------------------------------
+	m_pVrtSource->GetGeoTransform(Transform);
 
+	if( Transform[2] != 0.0 || Transform[4] != 0.0 )
+	{
+		return( false );	// geotransform is rotated, this configuration is not supported...
+	}
+
+	int	xOff	= (int)floor((System.Get_XMin  (true) - Transform[0]) /      Transform[1]  + 0.001);
+	int	yOff	= (int)floor((System.Get_YMax  (true) - Transform[3]) /      Transform[5]  + 0.001);
+	int	xSize	= (int)     ( System.Get_XRange(true)                 /      Transform[1]  + 0.5  );
+	int	ySize	= (int)     ( System.Get_YRange(true)                 / fabs(Transform[5]) + 0.5  );
+
+	//-----------------------------------------------------
+	for(int i=0; i<m_pVrtSource->GetRasterCount(); i++)
+	{
+		GDALRasterBand	*pSrcBand	= m_pVrtSource->GetRasterBand(i + 1);
+
+		m_pDataSet->AddBand(pSrcBand->GetRasterDataType(), NULL);
+
+		VRTSourcedRasterBand	*pVrtBand	= (VRTSourcedRasterBand *)m_pDataSet->GetRasterBand(i + 1);
+
+		pVrtBand->AddSimpleSource(pSrcBand,
+			xOff, yOff, xSize, ySize, 0, 0, System.Get_NX(), System.Get_NY()
+		);
+
+//#if GDAL_VERSION_MAJOR >= 2	// instead of pVrtBand->AddSimpleSource(...)
+//		VRTSimpleSource	*pSrcSimple = new VRTSimpleSource();
+//
+//	//	pSrcSimple->SetResampling(pszResampling);
+//
+//		pVrtBand->ConfigureSource(pSrcSimple, pSrcBand, 0,
+//			xOff, yOff, xSize, ySize, 0, 0, System.Get_NX(), System.Get_NY()
+//		);
+//
+//		pVrtBand->AddSource(pSrcSimple);
+//#endif
+	}
+
+	//-----------------------------------------------------
 	m_File_Name	= File_Name;
 
 	m_Access	= SG_GDAL_IO_READ;
 
-	m_NX		= m_pDataSet->GetRasterXSize();
-	m_NY		= m_pDataSet->GetRasterYSize();
+	return( _Set_Transformation() );
+}
+
+//---------------------------------------------------------
+bool CSG_GDAL_DataSet::_Set_Transformation(void)
+{
+	if( !m_pDataSet )
+	{
+		return( false );
+	}
+
+	double	Transform[6];
+
+	m_NX	= m_pDataSet->GetRasterXSize();
+	m_NY	= m_pDataSet->GetRasterYSize();
 
 	if( m_pDataSet->GetGeoTransform(Transform) != CE_None )
 	{
@@ -300,6 +389,11 @@ bool CSG_GDAL_DataSet::Open_Read(const CSG_String &File_Name)
 	return( true );
 }
 
+
+///////////////////////////////////////////////////////////
+//														 //
+///////////////////////////////////////////////////////////
+
 //---------------------------------------------------------
 bool CSG_GDAL_DataSet::Open_Write(const CSG_String &File_Name, const CSG_String &Driver, const CSG_String &Options, TSG_Data_Type Type, int NBands, const CSG_Grid_System &System, const CSG_Projection &Projection)
 {
@@ -381,11 +475,20 @@ bool CSG_GDAL_DataSet::Open_Write(const CSG_String &File_Name, const CSG_String
 //---------------------------------------------------------
 bool CSG_GDAL_DataSet::Close(void)
 {
-	if( m_pDataSet )
+	if( m_pVrtSource )
 	{
-		GDALClose(m_pDataSet);
+		GDALClose(m_pVrtSource); m_pVrtSource = NULL;
 
-		m_pDataSet	= NULL;
+		if( m_pDataSet )
+		{
+		//	GDALClose(m_pDataSet);	// this crashes in debug mode, gdal2.0dev!!!(???)
+			m_pDataSet = NULL;
+		}
+	}
+
+	if( m_pDataSet )
+	{
+		GDALClose(m_pDataSet); m_pDataSet = NULL;
 	}
 
 	m_File_Name.Clear();
@@ -871,7 +974,7 @@ bool CSG_GDAL_DataSet::Get_Transformation(CSG_Grid_System &System, bool bVerbose
 }
 
 //---------------------------------------------------------
-bool CSG_GDAL_DataSet::Get_Transformation(CSG_Grid **ppGrid, TSG_Grid_Interpolation	Interpolation, bool bVerbose)	const
+bool CSG_GDAL_DataSet::Get_Transformation(CSG_Grid **ppGrid, TSG_Grid_Resampling	Interpolation, bool bVerbose)	const
 {
 	CSG_Grid_System	System;
 
@@ -884,7 +987,7 @@ bool CSG_GDAL_DataSet::Get_Transformation(CSG_Grid **ppGrid, TSG_Grid_Interpolat
 }
 
 //---------------------------------------------------------
-bool CSG_GDAL_DataSet::Get_Transformation(CSG_Grid **ppGrid, TSG_Grid_Interpolation	Interpolation, const CSG_Grid_System &System, bool bVerbose)	const
+bool CSG_GDAL_DataSet::Get_Transformation(CSG_Grid **ppGrid, TSG_Grid_Resampling	Interpolation, const CSG_Grid_System &System, bool bVerbose)	const
 {
 	if( !System.is_Valid() )
 	{
diff --git a/src/modules/io/io_gdal/gdal_driver.h b/src/modules/io/io_gdal/gdal_driver.h
old mode 100644
new mode 100755
index b7eeefb..530a84b
--- a/src/modules/io/io_gdal/gdal_driver.h
+++ b/src/modules/io/io_gdal/gdal_driver.h
@@ -124,6 +124,7 @@ public:
 	virtual ~CSG_GDAL_DataSet(void);
 
 	bool						Open_Read			(const CSG_String &File_Name);
+	bool						Open_Read			(const CSG_String &File_Name, const CSG_Grid_System &System);
 	bool						Open_Write			(const CSG_String &File_Name, const CSG_String &Driver, const CSG_String &Options, TSG_Data_Type Type, int NBands, const CSG_Grid_System &System, const CSG_Projection &Projection);
 	bool						Close				(void);
 
@@ -145,8 +146,8 @@ public:
 	bool						Needs_Transformation(void)	const	{	return( m_bTransform );	}
 	void						Get_Transformation	(CSG_Vector &A, CSG_Matrix &B)				const	{	A	= m_TF_A;	B	= m_TF_B;	}
 	bool						Get_Transformation	(CSG_Grid_System &System, bool bVerbose)	const;
-	bool						Get_Transformation	(CSG_Grid **ppGrid, TSG_Grid_Interpolation Interpolation, bool bVerbose)	const;
-	bool						Get_Transformation	(CSG_Grid **ppGrid, TSG_Grid_Interpolation Interpolation, const CSG_Grid_System &System, bool bVerbose)	const;
+	bool						Get_Transformation	(CSG_Grid **ppGrid, TSG_Grid_Resampling Interpolation, bool bVerbose)	const;
+	bool						Get_Transformation	(CSG_Grid **ppGrid, TSG_Grid_Resampling Interpolation, const CSG_Grid_System &System, bool bVerbose)	const;
 
 	class GDALDriver *			Get_Driver			(void)	const;
 	CSG_String					Get_DriverID		(void)	const;
@@ -185,7 +186,10 @@ private:
 
 	CSG_Matrix					m_TF_B, m_TF_BInv;
 
-	class GDALDataset			*m_pDataSet;
+	class GDALDataset			*m_pDataSet, *m_pVrtSource;
+
+
+	bool						_Set_Transformation	(void);
 
 
 public:
diff --git a/src/modules/io/io_gdal/gdal_export.cpp b/src/modules/io/io_gdal/gdal_export.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_gdal/gdal_export.h b/src/modules/io/io_gdal/gdal_export.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_gdal/gdal_export_geotiff.cpp b/src/modules/io/io_gdal/gdal_export_geotiff.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_gdal/gdal_export_geotiff.h b/src/modules/io/io_gdal/gdal_export_geotiff.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_gdal/gdal_import.cpp b/src/modules/io/io_gdal/gdal_import.cpp
old mode 100644
new mode 100755
index 687ddfa..8edb21a
--- a/src/modules/io/io_gdal/gdal_import.cpp
+++ b/src/modules/io/io_gdal/gdal_import.cpp
@@ -133,15 +133,14 @@ CGDAL_Import::CGDAL_Import(void)
 	);
 
 	Parameters.Add_Choice(
-		pNode	, "INTERPOL"	, _TL("Interpolation"),
+		NULL	, "RESAMPLING"	, _TL("Resampling"),
 		_TL("interpolation method to use if grid needs to be aligned to coordinate system"),
-		CSG_String::Format("%s|%s|%s|%s|%s|",
-			_TL("Nearest Neighbor"),
+		CSG_String::Format("%s|%s|%s|%s|",
+			_TL("Nearest Neighbour"),
 			_TL("Bilinear Interpolation"),
-			_TL("Inverse Distance Interpolation"),
 			_TL("Bicubic Spline Interpolation"),
 			_TL("B-Spline Interpolation")
-		), 4
+		), 3
 	);
 
 	//-----------------------------------------------------
@@ -151,8 +150,6 @@ CGDAL_Import::CGDAL_Import(void)
 
 ///////////////////////////////////////////////////////////
 //														 //
-//														 //
-//														 //
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
@@ -160,7 +157,7 @@ int CGDAL_Import::On_Parameters_Enable(CSG_Parameters *pParameters, CSG_Paramete
 {
 	if(	!SG_STR_CMP(pParameter->Get_Identifier(), "TRANSFORM") )
 	{
-		pParameters->Get_Parameter("INTERPOL")->Set_Enabled(pParameter->asBool());
+		pParameters->Get_Parameter("RESAMPLING")->Set_Enabled(pParameter->asBool());
 	}
 
 	if( !SG_STR_CMP(pParameters->Get_Identifier(), "SELECTION")
@@ -175,8 +172,6 @@ int CGDAL_Import::On_Parameters_Enable(CSG_Parameters *pParameters, CSG_Paramete
 
 ///////////////////////////////////////////////////////////
 //														 //
-//														 //
-//														 //
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
@@ -347,16 +342,14 @@ bool CGDAL_Import::Load(CSG_GDAL_DataSet &DataSet, const CSG_String &Name)
 	}
 
 	//-----------------------------------------------------
-	TSG_Grid_Interpolation	Interpolation;
+	TSG_Grid_Resampling	Resampling;
 
-	switch( Parameters("INTERPOL")->asInt() )
+	switch( Parameters("RESAMPLING")->asInt() )
 	{
-	default:
-	case 0:	Interpolation	= GRID_INTERPOLATION_NearestNeighbour;	break;
-	case 1:	Interpolation	= GRID_INTERPOLATION_Bilinear;			break;
-	case 2:	Interpolation	= GRID_INTERPOLATION_InverseDistance;	break;
-	case 3:	Interpolation	= GRID_INTERPOLATION_BicubicSpline;		break;
-	case 4:	Interpolation	= GRID_INTERPOLATION_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;
 	}
 
 	bool	bTransform	= Parameters("TRANSFORM")->asBool() && DataSet.Needs_Transformation();
@@ -380,7 +373,7 @@ bool CGDAL_Import::Load(CSG_GDAL_DataSet &DataSet, const CSG_String &Name)
 				{
 					Process_Set_Text(CSG_String::Format("%s [%d/%d]", _TL("band transformation"), i + 1, DataSet.Get_Count()));
 
-					DataSet.Get_Transformation(&pGrid, Interpolation, true);
+					DataSet.Get_Transformation(&pGrid, Resampling, true);
 				}
 
 				pGrid->Set_Name(DataSet.Get_Count() > 1
@@ -392,8 +385,8 @@ bool CGDAL_Import::Load(CSG_GDAL_DataSet &DataSet, const CSG_String &Name)
 
 				m_pGrids->Add_Item(pGrid);
 
-				DataObject_Add			(pGrid);
-				DataObject_Set_Colors	(pGrid, CSG_Colors(11, SG_COLORS_BLACK_WHITE, false));
+				DataObject_Add       (pGrid);
+				DataObject_Set_Colors(pGrid, CSG_Colors(11, SG_COLORS_RAINBOW, false));
 
 				if( DataSet.Get_Count() == 1 )
 				{
diff --git a/src/modules/io/io_gdal/gdal_import.h b/src/modules/io/io_gdal/gdal_import.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_gdal/gdal_import_netcdf.cpp b/src/modules/io/io_gdal/gdal_import_netcdf.cpp
old mode 100644
new mode 100755
index 3f8f06f..0f1bea6
--- a/src/modules/io/io_gdal/gdal_import_netcdf.cpp
+++ b/src/modules/io/io_gdal/gdal_import_netcdf.cpp
@@ -121,51 +121,48 @@ CGDAL_Import_NetCDF::CGDAL_Import_NetCDF(void)
 	);
 
 	Parameters.Add_Choice(
-		pNode	, "INTERPOL"	, _TL("Interpolation"),
+		NULL	, "RESAMPLING"	, _TL("Resampling"),
 		_TL("interpolation method to use if grid needs to be aligned to coordinate system"),
-		CSG_String::Format(SG_T("%s|%s|%s|%s|%s|"),
-			_TL("Nearest Neighbor"),
+		CSG_String::Format("%s|%s|%s|%s|",
+			_TL("Nearest Neighbour"),
 			_TL("Bilinear Interpolation"),
-			_TL("Inverse Distance Interpolation"),
 			_TL("Bicubic Spline Interpolation"),
 			_TL("B-Spline Interpolation")
-		), 4
+		), 3
 	);
 }
 
 
 ///////////////////////////////////////////////////////////
 //														 //
-//														 //
-//														 //
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
 int CGDAL_Import_NetCDF::On_Parameters_Enable(CSG_Parameters *pParameters, CSG_Parameter *pParameter)
 {
-	if(	!SG_STR_CMP(pParameter->Get_Identifier(), SG_T("SAVE_FILE")) )
+	if(	!SG_STR_CMP(pParameter->Get_Identifier(), "SAVE_FILE") )
 	{
-		pParameters->Get_Parameter("SAVE_PATH")->Set_Enabled(pParameter->asBool());
+		pParameters->Get_Parameter("SAVE_PATH" )->Set_Enabled(pParameter->asBool());
 	}
 
-	if(	!SG_STR_CMP(pParameter->Get_Identifier(), SG_T("VARS_ALL" )) && pParameters->Get_Parameter("VARS") )
+	if(	!SG_STR_CMP(pParameter->Get_Identifier(), "VARS_ALL" ) && pParameters->Get_Parameter("VARS") )
 	{
-		pParameters->Get_Parameter("VARS" )->Set_Enabled(!pParameter->asBool());
+		pParameters->Get_Parameter("VARS"      )->Set_Enabled(!pParameter->asBool());
 	}
 
-	if(	!SG_STR_CMP(pParameter->Get_Identifier(), SG_T("TIME_ALL" )) && pParameters->Get_Parameter("TIME") )
+	if(	!SG_STR_CMP(pParameter->Get_Identifier(), "TIME_ALL" ) && pParameters->Get_Parameter("TIME") )
 	{
-		pParameters->Get_Parameter("TIME" )->Set_Enabled(!pParameter->asBool());
+		pParameters->Get_Parameter("TIME"      )->Set_Enabled(!pParameter->asBool());
 	}
 
-	if(	!SG_STR_CMP(pParameter->Get_Identifier(), SG_T("LEVEL_ALL")) && pParameters->Get_Parameter("LEVEL") )
+	if(	!SG_STR_CMP(pParameter->Get_Identifier(), "LEVEL_ALL") && pParameters->Get_Parameter("LEVEL") )
 	{
-		pParameters->Get_Parameter("LEVEL")->Set_Enabled(!pParameter->asBool());
+		pParameters->Get_Parameter("LEVEL"     )->Set_Enabled(!pParameter->asBool());
 	}
 
-	if(	!SG_STR_CMP(pParameter->Get_Identifier(), SG_T("TRANSFORM")) )
+	if(	!SG_STR_CMP(pParameter->Get_Identifier(), "TRANSFORM") )
 	{
-		pParameters->Get_Parameter("INTERPOL")->Set_Enabled(pParameter->asBool());
+		pParameters->Get_Parameter("RESAMPLING")->Set_Enabled(pParameter->asBool());
 	}
 
 	return( 1 );
@@ -174,8 +171,6 @@ int CGDAL_Import_NetCDF::On_Parameters_Enable(CSG_Parameters *pParameters, CSG_P
 
 ///////////////////////////////////////////////////////////
 //														 //
-//														 //
-//														 //
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
@@ -208,8 +203,6 @@ const char * CGDAL_Import_NetCDF::Get_Level(CSG_GDAL_DataSet &DataSet, int iBand
 
 ///////////////////////////////////////////////////////////
 //														 //
-//														 //
-//														 //
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
@@ -226,8 +219,6 @@ CSG_String CGDAL_Import_NetCDF::Get_Time_String(const CSG_String &Time, int Form
 
 ///////////////////////////////////////////////////////////
 //														 //
-//														 //
-//														 //
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
@@ -300,8 +291,6 @@ bool CGDAL_Import_NetCDF::On_Execute(void)
 
 ///////////////////////////////////////////////////////////
 //														 //
-//														 //
-//														 //
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
@@ -377,16 +366,14 @@ bool CGDAL_Import_NetCDF::Load(CSG_GDAL_DataSet &DataSet, const CSG_String &Desc
 	}
 
 	//-----------------------------------------------------
-	TSG_Grid_Interpolation	Interpolation;
+	TSG_Grid_Resampling	Resampling;
 
-	switch( Parameters("INTERPOL")->asInt() )
+	switch( Parameters("RESAMPLING")->asInt() )
 	{
-	default:
-	case 0:	Interpolation	= GRID_INTERPOLATION_NearestNeighbour;	break;
-	case 1:	Interpolation	= GRID_INTERPOLATION_Bilinear;			break;
-	case 2:	Interpolation	= GRID_INTERPOLATION_InverseDistance;	break;
-	case 3:	Interpolation	= GRID_INTERPOLATION_BicubicSpline;		break;
-	case 4:	Interpolation	= GRID_INTERPOLATION_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;
 	}
 
 	bool	bTransform	= Parameters("TRANSFORM")->asBool() && DataSet.Needs_Transformation();
@@ -409,7 +396,7 @@ bool CGDAL_Import_NetCDF::Load(CSG_GDAL_DataSet &DataSet, const CSG_String &Desc
 				{
 					Process_Set_Text(CSG_String::Format(SG_T("%s [%d/%d]"), _TL("band transformation"), i + 1, DataSet.Get_Count()));
 
-					DataSet.Get_Transformation(&pGrid, Interpolation, true);
+					DataSet.Get_Transformation(&pGrid, Resampling, true);
 				}
 
 				CSG_String	Name(_TL("unknown"));
diff --git a/src/modules/io/io_gdal/gdal_import_netcdf.h b/src/modules/io/io_gdal/gdal_import_netcdf.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_gdal/gdal_import_wms.cpp b/src/modules/io/io_gdal/gdal_import_wms.cpp
new file mode 100755
index 0000000..d064c1d
--- /dev/null
+++ b/src/modules/io/io_gdal/gdal_import_wms.cpp
@@ -0,0 +1,572 @@
+/**********************************************************
+ * Version $Id: gdal_import_wms.cpp 1921 2014-01-09 10:24:11Z oconrad $
+ *********************************************************/
+
+///////////////////////////////////////////////////////////
+//                                                       //
+//                         SAGA                          //
+//                                                       //
+//      System for Automated Geoscientific Analyses      //
+//                                                       //
+//                    Module Library                     //
+//                                                       //
+//                       io_gdal                         //
+//                                                       //
+//-------------------------------------------------------//
+//                                                       //
+//                  gdal_import_wms.cpp                  //
+//                                                       //
+//            Copyright (C) 2016 O. Conrad               //
+//                                                       //
+//-------------------------------------------------------//
+//                                                       //
+// This file is part of 'SAGA - System for Automated     //
+// Geoscientific Analyses'. SAGA is free software; you   //
+// can redistribute it and/or modify it under the terms  //
+// of the GNU General Public License as published by the //
+// Free Software Foundation; version 2 of the License.   //
+//                                                       //
+// SAGA is distributed in the hope that it will be       //
+// useful, but WITHOUT ANY WARRANTY; without even the    //
+// implied warranty of MERCHANTABILITY or FITNESS FOR A  //
+// PARTICULAR PURPOSE. See the GNU General Public        //
+// License for more details.                             //
+//                                                       //
+// You should have received a copy of the GNU General    //
+// Public License along with this program; if not,       //
+// write to the Free Software Foundation, Inc.,          //
+// 51 Franklin Street, 5th Floor, Boston, MA 02110-1301, //
+// USA.                                                  //
+//                                                       //
+//-------------------------------------------------------//
+//                                                       //
+//    e-mail:     oconrad at saga-gis.de                    //
+//                                                       //
+//    contact:    Olaf Conrad                            //
+//                Institute of Geography                 //
+//                University of Hamburg                  //
+//                Germany                                //
+//                                                       //
+///////////////////////////////////////////////////////////
+
+
+///////////////////////////////////////////////////////////
+//														 //
+//														 //
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+#include "gdal_import_wms.h"
+
+
+///////////////////////////////////////////////////////////
+//														 //
+//														 //
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+CGDAL_Import_WMS::CGDAL_Import_WMS(void)
+{
+	CSG_Parameter	*pNode;
+
+	//-----------------------------------------------------
+	Set_Name	(_TL("Import Open Street Map Image"));
+
+	Set_Author	("O.Conrad (c) 2016");
+
+	CSG_String	Description;
+
+	Description	= _TW(
+		"The \"Import OSM Image\" tool imports a map image from a Tile Mapping Service (TMS) using the "
+		"\"Geospatial Data Abstraction Library\" (GDAL) by Frank Warmerdam. "
+		"For more information have a look at the GDAL homepage:\n"
+		"  <a target=\"_blank\" href=\"http://www.gdal.org/\">"
+		"  http://www.gdal.org</a>\n"
+	);
+
+	Description	+= CSG_String::Format("\nGDAL %s:%s\n\n", _TL("Version"), SG_Get_GDAL_Drivers().Get_Version().c_str());
+
+	Set_Description(Description);
+
+	//-----------------------------------------------------
+	pNode	= Parameters.Add_Grid(
+		NULL	, "TARGET"		, _TL("Target System"),
+		_TL(""),
+		PARAMETER_INPUT_OPTIONAL
+	)->Get_Parent();
+
+	Parameters.Add_Grid(
+		pNode	, "TARGET_MAP"	, _TL("Target Map"),
+		_TL(""),
+		PARAMETER_OUTPUT
+	);
+
+	Parameters.Add_Grid_Output(
+		NULL	, "MAP"			, _TL("Map"),
+		_TL("")
+	);
+
+	//-----------------------------------------------------
+	pNode	= Parameters.Add_Choice(
+		NULL	, "SERVER"		, _TL("Server"),
+		_TL(""),
+		CSG_String::Format("%s|%s|%s|",
+			_TL("Open Street Map"),
+			_TL("MapQuest"),
+			_TL("user defined")
+		), 0
+	);
+
+	Parameters.Add_Value(
+		pNode	, "BLOCKSIZE"	, _TL("Block Size"),
+		_TL(""),
+		PARAMETER_TYPE_Int, 256, 32, true
+	);
+
+	Parameters.Add_String(
+		pNode	, "SERVER_USER"	, _TL("Server"),
+		_TL(""),
+		"tile.openstreetmap.org"
+	);
+
+	pNode	= Parameters.Add_Value(
+		NULL	, "CACHE"		, _TL("Cache"),
+		_TL("Enable local disk cache. Allows for offline operation."),
+		PARAMETER_TYPE_Bool, false
+	);
+
+	Parameters.Add_FilePath(
+		pNode	, "CACHE_DIR"	, _TL("Cache Directory"),
+		_TL("If not specified the cache will be created in the current user's temporary directory."),
+		NULL, NULL, false, true
+	);
+
+	Parameters.Add_Value(
+		NULL	, "GRAYSCALE"	, _TL("Gray Scale Image"),
+		_TL(""),
+		PARAMETER_TYPE_Bool, false
+	);
+
+	//-----------------------------------------------------
+	pNode	= Parameters.Add_Node(NULL, "TARGET_NODE", _TL("Target Grid"), _TL(""));
+
+	Parameters.Add_Value(pNode, "XMIN", _TL("West"   ), _TL(""), PARAMETER_TYPE_Double, -20037508.34, -20037508.34, true, 20037508.34, true);
+	Parameters.Add_Value(pNode, "YMIN", _TL("South"  ), _TL(""), PARAMETER_TYPE_Double, -20037508.34, -20037508.34, true, 20037508.34, true);
+	Parameters.Add_Value(pNode, "XMAX", _TL("East"   ), _TL(""), PARAMETER_TYPE_Double,  20037508.34, -20037508.34, true, 20037508.34, true);
+	Parameters.Add_Value(pNode, "YMAX", _TL("North"  ), _TL(""), PARAMETER_TYPE_Double,  20037508.34, -20037508.34, true, 20037508.34, true);
+	Parameters.Add_Value(pNode, "NX"  , _TL("Columns"), _TL(""), PARAMETER_TYPE_Int, 600, 1, true);
+	Parameters.Add_Value(pNode, "NY"  , _TL("Rows"   ), _TL(""), PARAMETER_TYPE_Int, 600, 1, true);
+}
+
+
+///////////////////////////////////////////////////////////
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+int CGDAL_Import_WMS::On_Parameter_Changed(CSG_Parameters *pParameters, CSG_Parameter *pParameter)
+{
+	CSG_Parameter	*pXMin	= pParameters->Get_Parameter("XMIN");
+	CSG_Parameter	*pYMin	= pParameters->Get_Parameter("YMIN");
+	CSG_Parameter	*pXMax	= pParameters->Get_Parameter("XMAX");
+	CSG_Parameter	*pYMax	= pParameters->Get_Parameter("YMAX");
+	CSG_Parameter	*pNX	= pParameters->Get_Parameter("NX"  );
+	CSG_Parameter	*pNY	= pParameters->Get_Parameter("NY"  );
+
+	if( !SG_STR_CMP(pParameter->Get_Identifier(), "NX") )
+	{
+		double	d	= fabs(pXMax->asDouble() - pXMin->asDouble()) / pNX->asDouble();
+		pNY  ->Set_Value(fabs(pYMax->asDouble() - pYMin->asDouble()) / d);
+		pYMax->Set_Value(pYMin->asDouble() + d * pNY->asDouble());
+	}
+
+	if( !SG_STR_CMP(pParameter->Get_Identifier(), "NY") )
+	{
+		double	d	= fabs(pYMax->asDouble() - pYMin->asDouble()) / pNY->asDouble();
+		pNX  ->Set_Value(fabs(pXMax->asDouble() - pXMin->asDouble()) / d);
+		pXMax->Set_Value(pXMin->asDouble() + d * pNX->asDouble());
+	}
+
+	if( !SG_STR_CMP(pParameter->Get_Identifier(), "XMIN") )
+	{
+		double	d	= fabs(pYMax->asDouble() - pYMin->asDouble()) / pNY->asDouble();
+		pNX  ->Set_Value(fabs(pXMax->asDouble() - pXMin->asDouble()) / d);
+		pXMax->Set_Value(pXMin->asDouble() + d * pNX->asDouble());
+	}
+
+	if( !SG_STR_CMP(pParameter->Get_Identifier(), "YMIN") )
+	{
+		double	d	= fabs(pXMax->asDouble() - pXMin->asDouble()) / pNX->asDouble();
+		pNY  ->Set_Value(fabs(pYMax->asDouble() - pYMin->asDouble()) / d);
+		pYMax->Set_Value(pYMin->asDouble() + d * pNY->asDouble());
+	}
+
+	if( !SG_STR_CMP(pParameter->Get_Identifier(), "XMAX") )
+	{
+		double	d	= fabs(pYMax->asDouble() - pYMin->asDouble()) / pNY->asDouble();
+		pNX  ->Set_Value(fabs(pXMax->asDouble() - pXMin->asDouble()) / d);
+		pYMax->Set_Value(pYMax->asDouble() - d * pNY->asDouble());
+	}
+
+	if( !SG_STR_CMP(pParameter->Get_Identifier(), "YMAX") )
+	{
+		double	d	= fabs(pXMax->asDouble() - pXMin->asDouble()) / pNX->asDouble();
+		pNY  ->Set_Value(fabs(pYMax->asDouble() - pYMin->asDouble()) / d);
+		pXMax->Set_Value(pXMax->asDouble() - d * pNX->asDouble());
+	}
+
+	return( CSG_Module::On_Parameter_Changed(pParameters, pParameter) );
+}
+
+//---------------------------------------------------------
+int CGDAL_Import_WMS::On_Parameters_Enable(CSG_Parameters *pParameters, CSG_Parameter *pParameter)
+{
+	if( !SG_STR_CMP(pParameter->Get_Identifier(), "TARGET") )
+	{
+		pParameters->Set_Enabled("TARGET_MAP" , pParameter->asGrid() != NULL);
+		pParameters->Set_Enabled("TARGET_NODE", pParameter->asGrid() == NULL);
+	}
+
+	if( !SG_STR_CMP(pParameter->Get_Identifier(), "SERVER") )
+	{
+		pParameters->Set_Enabled("SERVER_USER", pParameter->asInt() == 2);
+	}
+
+	if( !SG_STR_CMP(pParameter->Get_Identifier(), "CACHE") )
+	{
+		pParameters->Set_Enabled("CACHE_DIR", pParameter->asBool());
+	}
+
+	return( CSG_Module::On_Parameters_Enable(pParameters, pParameter) );
+}
+
+
+///////////////////////////////////////////////////////////
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+bool CGDAL_Import_WMS::On_Execute(void)
+{
+	//-----------------------------------------------------
+	CSG_Grid_System	System;
+
+	if( !Get_System(System, Parameters("TARGET")->asGrid()) )
+	{
+		return( false );
+	}
+
+	//-----------------------------------------------------
+	CSG_Grid	*pBands[3];
+
+	if( !Get_Bands(pBands, System) )
+	{
+		Error_Set(_TL("failed to retrieve map image data"));
+
+		return( false );
+	}
+
+	//-----------------------------------------------------
+	if( Parameters("TARGET")->asGrid() )
+	{
+		Get_Projected(pBands, Parameters("TARGET")->asGrid());
+	}
+
+	//-----------------------------------------------------
+	return( Set_Image(pBands) );
+}
+
+
+///////////////////////////////////////////////////////////
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+bool CGDAL_Import_WMS::Get_System(CSG_Grid_System &System, CSG_Grid *pTarget)
+{
+	//-----------------------------------------------------
+	if( !pTarget )
+	{
+		CSG_Rect	Extent(
+			Parameters("XMIN")->asDouble(), Parameters("YMIN")->asDouble(),
+			Parameters("XMAX")->asDouble(), Parameters("YMAX")->asDouble()
+		);
+
+		double	Cellsize	= Extent.Get_XRange() / Parameters("NX")->asDouble();
+
+		return( System.Assign(Cellsize, Extent) );
+	}
+
+	//-----------------------------------------------------
+	if( !pTarget->Get_Projection().is_Okay() )
+	{
+		return( false );
+	}
+
+	CSG_Shapes	rTarget(SHAPE_TYPE_Point), rSource;
+
+	rTarget.Get_Projection()	= pTarget->Get_Projection();
+
+	CSG_Rect	Extent	= pTarget->Get_Extent(true);
+
+	rTarget.Add_Shape()->Add_Point(Extent.Get_XMin   (), Extent.Get_YMin   ());
+	rTarget.Add_Shape()->Add_Point(Extent.Get_XMin   (), Extent.Get_YCenter());
+	rTarget.Add_Shape()->Add_Point(Extent.Get_XMin   (), Extent.Get_YMax   ());
+	rTarget.Add_Shape()->Add_Point(Extent.Get_XCenter(), Extent.Get_YMax   ());
+	rTarget.Add_Shape()->Add_Point(Extent.Get_XMax   (), Extent.Get_YMax   ());
+	rTarget.Add_Shape()->Add_Point(Extent.Get_XMax   (), Extent.Get_YCenter());
+	rTarget.Add_Shape()->Add_Point(Extent.Get_XMax   (), Extent.Get_YMin   ());
+	rTarget.Add_Shape()->Add_Point(Extent.Get_XCenter(), Extent.Get_YMin   ());
+
+	//-----------------------------------------------------
+	CSG_Module	*pModule	= SG_Get_Module_Library_Manager().Get_Module("pj_proj4", 2);	// Coordinate Transformation (Shapes);
+
+	if(	!pModule )
+	{
+		return( false );
+	}
+
+	pModule->Settings_Push();
+
+	if( SG_MODULE_PARAMETER_SET("CRS_PROJ4" , SG_T("+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +k=1.0"))
+	&&  SG_MODULE_PARAMETER_SET("SOURCE"    , &rTarget)
+	&&  SG_MODULE_PARAMETER_SET("TARGET"    , &rSource)
+	&&  SG_MODULE_PARAMETER_SET("PRECISE"   , true)
+	&&  pModule->Execute() )
+	{
+		Extent	= rSource.Get_Extent();
+
+		double	Cellsize	= Extent.Get_XRange() / pTarget->Get_NX() < Extent.Get_YRange() / pTarget->Get_NY()
+							? Extent.Get_XRange() / pTarget->Get_NX() : Extent.Get_YRange() / pTarget->Get_NY();
+
+		System.Assign(Cellsize, Extent);
+
+		pModule->Settings_Pop();
+
+		return( true );
+	}
+
+	pModule->Settings_Pop();
+
+	return( false );
+}
+
+
+///////////////////////////////////////////////////////////
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+bool CGDAL_Import_WMS::Get_Projected(CSG_Grid *pBands[3], CSG_Grid *pTarget)
+{
+	CSG_Module	*pModule	= SG_Get_Module_Library_Manager().Get_Module("pj_proj4", 3);	// Coordinate Transformation (Grid List);
+
+	if(	!pModule )
+	{
+		return( false );
+	}
+
+	//-----------------------------------------------------
+	pModule->Settings_Push();
+
+	if( SG_MODULE_PARAMETER_SET("CRS_PROJ4" , pTarget->Get_Projection().Get_Proj4())
+	&&  SG_MODULE_PARAMETER_SET("RESAMPLING", 3)
+	&&  SG_MODULE_PARAMLIST_ADD("SOURCE"    , pBands[2])
+	&&  SG_MODULE_PARAMLIST_ADD("SOURCE"    , pBands[1])
+	&&  SG_MODULE_PARAMLIST_ADD("SOURCE"    , pBands[0])
+	&&  pModule->Get_Parameters("TARGET")->Get_Parameter("DEFINITION")->Set_Value(1)
+	&&  pModule->Get_Parameters("TARGET")->Get_Parameter("SYSTEM")->asGrid_System()->Assign(pTarget->Get_System())
+	&&  pModule->Execute() )
+	{
+		CSG_Parameter_Grid_List	*pGrids	= pModule->Get_Parameters()->Get_Parameter("GRIDS")->asGridList();
+
+		delete(pBands[0]);	pBands[0]	= pGrids->asGrid(0);
+		delete(pBands[1]);	pBands[1]	= pGrids->asGrid(1);
+		delete(pBands[2]);	pBands[2]	= pGrids->asGrid(2);
+
+		pModule->Settings_Pop();
+
+		return( true );
+	}
+
+	pModule->Settings_Pop();
+
+	return( false );
+}
+
+
+///////////////////////////////////////////////////////////
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+bool CGDAL_Import_WMS::Set_Image(CSG_Grid *pBands[3])
+{
+	//-----------------------------------------------------
+	CSG_Grid	*pMap	= Parameters("TARGET_MAP")->asGrid();
+
+	if( !pMap )
+	{
+		pMap	= SG_Create_Grid();
+	}
+
+	if( !pMap->Get_System().is_Equal(pBands[0]->Get_System()) )
+	{
+		pMap->Create(pBands[0]->Get_System(), SG_DATATYPE_Int);
+	}
+
+	pMap->Set_Name(_TL("Open Street Map"));
+
+	pMap->Get_Projection()	= pBands[0]->Get_Projection();
+
+	//-----------------------------------------------------
+	bool	bGrayscale	= Parameters("GRAYSCALE")->asBool();
+
+	#pragma omp parallel for
+	for(int y=0; y<pMap->Get_NY(); y++)	for(int x=0; x<pMap->Get_NX(); x++)
+	{
+		if( bGrayscale )
+		{
+			double	z	= (pBands[0]->asInt(x, y) + pBands[1]->asInt(x, y) + pBands[2]->asInt(x, y)) / 3.0;
+
+			pMap->Set_Value(x, y, SG_GET_RGB(z, z, z));
+		}
+		else
+		{
+			pMap->Set_Value(x, y, SG_GET_RGB(pBands[0]->asInt(x, y), pBands[1]->asInt(x, y), pBands[2]->asInt(x, y)));
+		}
+	}
+
+	delete(pBands[0]);
+	delete(pBands[1]);
+	delete(pBands[2]);
+
+	Parameters("MAP")->Set_Value(pMap);
+
+	DataObject_Add(pMap);
+	DataObject_Set_Parameter(pMap, "COLORS_TYPE", 6);	// RGB Coded Values
+
+	return( true );
+}
+
+
+///////////////////////////////////////////////////////////
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+bool CGDAL_Import_WMS::Get_Bands(CSG_Grid *pBands[3], const CSG_Grid_System &System)
+{
+	//-----------------------------------------------------
+	CSG_String	Server;
+
+	switch( Parameters("SERVER")->asInt() )
+	{
+	default:	Server	= "tile.openstreetmap.org"             ;	break;	// Open Street Map
+	case  1:	Server	= "otile1.mqcdn.com/tiles/1.0.0/osm"   ;	break;	// MapQuest
+	case  2:	Server	= Parameters("SERVER_USER")->asString();	break;	// user defined
+	}
+
+	//-----------------------------------------------------
+	CSG_GDAL_DataSet	DataSet;
+
+	if( DataSet.Open_Read(Get_Request(Server), System) == false || DataSet.Get_Count() != 3 )
+	{
+		return( false );
+	}
+
+	Message_Add("\n", false);
+	Message_Add(CSG_String::Format("\n%s: %s", _TL("Driver" ), DataSet.Get_DriverID().c_str()), false);
+	Message_Add(CSG_String::Format("\n%s: %d", _TL("Bands"  ), DataSet.Get_Count()           ), false);
+	Message_Add(CSG_String::Format("\n%s: %d", _TL("Rows"   ), DataSet.Get_NX()              ), false);
+	Message_Add(CSG_String::Format("\n%s: %d", _TL("Columns"), DataSet.Get_NY()              ), false);
+	Message_Add("\n", false);
+
+	//-----------------------------------------------------
+	SG_UI_Progress_Lock(true);
+
+	pBands[0]	= DataSet.Read(0);
+	pBands[1]	= DataSet.Read(1);
+	pBands[2]	= DataSet.Read(2);
+
+	SG_UI_Progress_Lock(false);
+
+	//-----------------------------------------------------
+	if( !pBands[0] || !pBands[1] || !pBands[2] )
+	{
+		if( pBands[0] )	delete(pBands[0]);
+		if( pBands[1] )	delete(pBands[1]);
+		if( pBands[2] )	delete(pBands[2]);
+
+		return( false );
+	}
+
+	return( true );
+}
+
+
+///////////////////////////////////////////////////////////
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+CSG_String CGDAL_Import_WMS::Get_Request(const CSG_String &Server)
+{
+	CSG_MetaData	XML, *pEntry;
+
+	XML.Set_Name("GDAL_WMS");
+
+	//-----------------------------------------------------
+	pEntry	= XML.Add_Child("Service");	pEntry->Add_Property("name", "TMS");
+
+	pEntry->Add_Child("ServerUrl"  , "http://" + Server + "/${z}/${x}/${y}.png");
+
+	//-----------------------------------------------------
+	pEntry	= XML.Add_Child("DataWindow");		// Define size and extents of the data. (required, except for TiledWMS and VirtualEarth)
+
+	pEntry->Add_Child("UpperLeftX" , -20037508.34);		// X (longitude) coordinate of upper-left corner. (optional, defaults to -180.0, except for VirtualEarth)
+	pEntry->Add_Child("UpperLeftY" ,  20037508.34);		// Y (latitude) coordinate of upper-left corner. (optional, defaults to 90.0, except for VirtualEarth)
+	pEntry->Add_Child("LowerRightX",  20037508.34);		// X (longitude) coordinate of lower-right corner. (optional, defaults to 180.0, except for VirtualEarth)
+	pEntry->Add_Child("LowerRightY", -20037508.34);		// Y (latitude) coordinate of lower-right corner. (optional, defaults to -90.0, except for VirtualEarth)
+	pEntry->Add_Child("TileLevel"  ,           18);		// Tile level at highest resolution. (tiled image sources only, optional, defaults to 0)
+	pEntry->Add_Child("TileCountX" ,            1);		// Can be used to define image size, SizeX = TileCountX * BlockSizeX * 2TileLevel. (tiled image sources only, optional, defaults to 0)
+	pEntry->Add_Child("TileCountY" ,            1);		// Can be used to define image size, SizeY = TileCountY * BlockSizeY * 2TileLevel. (tiled image sources only, optional, defaults to 0)
+	pEntry->Add_Child("YOrigin"    ,        "top");		// Can be used to define the position of the Y origin with respect to the tile grid. Possible values are 'top', 'bottom', and 'default', where the default behavior is mini-driver-specific. (TMS mini-driver only, optional, defaults to 'bottom' for TMS)
+
+	//-----------------------------------------------------
+	pEntry	= XML.Add_Child("Projection", "EPSG:3857");	// Image projection (optional, defaults to value reported by mini-driver or EPSG:4326)
+	pEntry	= XML.Add_Child("BandsCount",           3);	// Number of bands/channels, 1 for grayscale data, 3 for RGB, 4 for RGBA. (optional, defaults to 3)
+
+	int	Blocksize	= Parameters("BLOCKSIZE")->asInt();
+	pEntry	= XML.Add_Child("BlockSizeX", Blocksize);	// Block size in pixels. (optional, defaults to 1024, except for VirtualEarth)
+	pEntry	= XML.Add_Child("BlockSizeY", Blocksize);
+
+	//-----------------------------------------------------
+	if( Parameters("CACHE")->asBool() )
+	{
+		pEntry	= XML.Add_Child("Cache");
+
+		CSG_String	Path	= Parameters("CACHE_DIR")->asString();
+
+		if( !SG_Dir_Exists(Path) )
+		{
+			Path	= SG_Dir_Get_Temp();
+		}
+
+		pEntry->Add_Child("Path", SG_File_Make_Path(Path, SG_T("gdalwmscache")));
+	}
+
+	//-----------------------------------------------------
+	return( XML.asText(2) );
+}
+
+
+///////////////////////////////////////////////////////////
+//														 //
+//														 //
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
diff --git a/src/modules/io/io_gdal/gdal_import.h b/src/modules/io/io_gdal/gdal_import_wms.h
old mode 100644
new mode 100755
similarity index 79%
copy from src/modules/io/io_gdal/gdal_import.h
copy to src/modules/io/io_gdal/gdal_import_wms.h
index 6647140..dcd6c73
--- a/src/modules/io/io_gdal/gdal_import.h
+++ b/src/modules/io/io_gdal/gdal_import_wms.h
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: gdal_import.h 1921 2014-01-09 10:24:11Z oconrad $
+ * Version $Id: gdal_import_wms.h 1921 2014-01-09 10:24:11Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -14,9 +14,9 @@
 //                                                       //
 //-------------------------------------------------------//
 //                                                       //
-//                    gdal_import.h                      //
+//                   gdal_import_wms.h                   //
 //                                                       //
-//            Copyright (C) 2007 O. Conrad               //
+//            Copyright (C) 2016 O. Conrad               //
 //                                                       //
 //-------------------------------------------------------//
 //                                                       //
@@ -43,8 +43,8 @@
 //    e-mail:     oconrad at saga-gis.de                    //
 //                                                       //
 //    contact:    Olaf Conrad                            //
-//                Bundesstr. 55                          //
-//                D-20146 Hamburg                        //
+//                Institute of Geography                 //
+//                University of Hamburg                  //
 //                Germany                                //
 //                                                       //
 ///////////////////////////////////////////////////////////
@@ -57,8 +57,8 @@
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
-#ifndef HEADER_INCLUDED__gdal_import_H
-#define HEADER_INCLUDED__gdal_import_H
+#ifndef HEADER_INCLUDED__gdal_import_wms_H
+#define HEADER_INCLUDED__gdal_import_wms_H
 
 //---------------------------------------------------------
 #include "gdal_driver.h"
@@ -71,38 +71,35 @@
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
-class io_gdal_EXPORT CGDAL_Import : public CSG_Module
+class CGDAL_Import_WMS : public CSG_Module
 {
 public:
-	CGDAL_Import(void);
+	CGDAL_Import_WMS(void);
 
 	virtual CSG_String			Get_MenuPath			(void)	{	return( _TL("Grid|Import") );	}
 
 
 protected:
 
-	virtual bool				On_Execute				(void);
-
+	virtual int					On_Parameter_Changed	(CSG_Parameters *pParameters, CSG_Parameter *pParameter);
 	virtual int					On_Parameters_Enable	(CSG_Parameters *pParameters, CSG_Parameter *pParameter);
 
+	virtual bool				On_Execute				(void);
+
 
 private:
 
-	CSG_Parameter_Grid_List		*m_pGrids;
+	bool						Set_Image				(CSG_Grid *pBands[3]);
 
+	bool						Get_Projected			(CSG_Grid *pBands[3], CSG_Grid *pTarget);
 
-	bool						Load_Sub				(CSG_GDAL_DataSet &DataSet);
-	bool						Load					(CSG_GDAL_DataSet &DataSet, const CSG_String &Name);
+	bool						Get_Bands				(CSG_Grid *pBands[3], const CSG_Grid_System &System);
 
-};
+	CSG_String					Get_Request				(const CSG_String &Server);
 
+	bool						Get_System				(CSG_Grid_System &System, CSG_Grid *pTarget);
 
-///////////////////////////////////////////////////////////
-//														 //
-///////////////////////////////////////////////////////////
-
-//---------------------------------------------------------
-io_gdal_EXPORT	bool	SG_GDAL_Import	(const CSG_String &File_Name);
+};
 
 
 ///////////////////////////////////////////////////////////
@@ -112,4 +109,4 @@ io_gdal_EXPORT	bool	SG_GDAL_Import	(const CSG_String &File_Name);
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
-#endif // #ifndef HEADER_INCLUDED__gdal_import_H
+#endif // #ifndef HEADER_INCLUDED__gdal_import_wms_H
diff --git a/src/modules/io/io_gdal/ogr_driver.cpp b/src/modules/io/io_gdal/ogr_driver.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_gdal/ogr_driver.h b/src/modules/io/io_gdal/ogr_driver.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_gdal/ogr_export.cpp b/src/modules/io/io_gdal/ogr_export.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_gdal/ogr_export.h b/src/modules/io/io_gdal/ogr_export.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_gdal/ogr_export_kml.cpp b/src/modules/io/io_gdal/ogr_export_kml.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_gdal/ogr_export_kml.h b/src/modules/io/io_gdal/ogr_export_kml.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_gdal/ogr_import.cpp b/src/modules/io/io_gdal/ogr_import.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_gdal/ogr_import.h b/src/modules/io/io_gdal/ogr_import.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_gps/GPSBabel.cpp b/src/modules/io/io_gps/GPSBabel.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_gps/GPSBabel.h b/src/modules/io/io_gps/GPSBabel.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_gps/MLB_Interface.cpp b/src/modules/io/io_gps/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_gps/MLB_Interface.h b/src/modules/io/io_gps/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_gps/Makefile.am b/src/modules/io/io_gps/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_gps/gpx2shp.cpp b/src/modules/io/io_gps/gpx2shp.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_gps/gpx2shp.h b/src/modules/io/io_gps/gpx2shp.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_grid/MLB_Interface.cpp b/src/modules/io/io_grid/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_grid/MLB_Interface.h b/src/modules/io/io_grid/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_grid/Makefile.am b/src/modules/io/io_grid/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_grid/bmp_export.cpp b/src/modules/io/io_grid/bmp_export.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_grid/bmp_export.h b/src/modules/io/io_grid/bmp_export.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_grid/citygml_import.cpp b/src/modules/io/io_grid/citygml_import.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_grid/citygml_import.h b/src/modules/io/io_grid/citygml_import.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_grid/erdas_lan.cpp b/src/modules/io/io_grid/erdas_lan.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_grid/erdas_lan.h b/src/modules/io/io_grid/erdas_lan.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_grid/esri_arcinfo.cpp b/src/modules/io/io_grid/esri_arcinfo.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_grid/esri_arcinfo.h b/src/modules/io/io_grid/esri_arcinfo.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_grid/grid_table.cpp b/src/modules/io/io_grid/grid_table.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_grid/grid_table.h b/src/modules/io/io_grid/grid_table.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_grid/import_clip_resample.cpp b/src/modules/io/io_grid/import_clip_resample.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_grid/import_clip_resample.h b/src/modules/io/io_grid/import_clip_resample.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_grid/mola.cpp b/src/modules/io/io_grid/mola.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_grid/mola.h b/src/modules/io/io_grid/mola.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_grid/raw.cpp b/src/modules/io/io_grid/raw.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_grid/raw.h b/src/modules/io/io_grid/raw.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_grid/srtm30.cpp b/src/modules/io/io_grid/srtm30.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_grid/srtm30.h b/src/modules/io/io_grid/srtm30.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_grid/surfer.cpp b/src/modules/io/io_grid/surfer.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_grid/surfer.h b/src/modules/io/io_grid/surfer.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_grid/usgs_srtm.cpp b/src/modules/io/io_grid/usgs_srtm.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_grid/usgs_srtm.h b/src/modules/io/io_grid/usgs_srtm.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_grid/wrf.cpp b/src/modules/io/io_grid/wrf.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_grid/wrf.h b/src/modules/io/io_grid/wrf.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_grid/xyz.cpp b/src/modules/io/io_grid/xyz.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_grid/xyz.h b/src/modules/io/io_grid/xyz.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_grid_grib2/MLB_Interface.cpp b/src/modules/io/io_grid_grib2/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_grid_grib2/MLB_Interface.h b/src/modules/io/io_grid_grib2/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_grid_grib2/Makefile.am b/src/modules/io/io_grid_grib2/Makefile.am
old mode 100644
new mode 100755
index 2d6ff24..62cfa52
--- a/src/modules/io/io_grid_grib2/Makefile.am
+++ b/src/modules/io/io_grid_grib2/Makefile.am
@@ -14,6 +14,15 @@ AM_CXXFLAGS        = -fPIC $(CXX_INCS) $(DEF_SAGA) $(UC_DEFS) $(DBGFLAGS) $(GOMP
 AM_LDFLAGS         = -fPIC -shared -avoid-version $(LOCAL_LIBS) -ljasper
 pkglib_LTLIBRARIES = libio_grid_grib2.la
 libio_grid_grib2_la_SOURCES =\
+grib2_import.cpp\
+MLB_Interface.cpp\
+grib2_import.h\
+MLB_Interface.h
+
+if SYSTEM_GRIB2C 
+AM_LDFLAGS        +=-lgrib2c
+else
+libio_grid_grib2_la_SOURCES +=\
 ./g2clib-1.0.4/cmplxpack.c\
 ./g2clib-1.0.4/compack.c\
 ./g2clib-1.0.4/comunpack.c\
@@ -61,10 +70,7 @@ libio_grid_grib2_la_SOURCES =\
 ./g2clib-1.0.4/drstemplates.h\
 ./g2clib-1.0.4/grib2.h\
 ./g2clib-1.0.4/gridtemplates.h\
-./g2clib-1.0.4/pdstemplates.h\
-grib2_import.cpp\
-MLB_Interface.cpp\
-grib2_import.h\
-MLB_Interface.h
+./g2clib-1.0.4/pdstemplates.h
+endif
 
 libio_grid_grib2_la_LIBADD = $(top_srcdir)/src/saga_core/saga_api/libsaga_api.la
diff --git a/src/modules/io/io_grid_grib2/Makefile.in b/src/modules/io/io_grid_grib2/Makefile.in
index d191797..7000814 100644
--- a/src/modules/io/io_grid_grib2/Makefile.in
+++ b/src/modules/io/io_grid_grib2/Makefile.in
@@ -78,6 +78,57 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
+ at SYSTEM_GRIB2C_TRUE@am__append_1 = -lgrib2c
+ at SYSTEM_GRIB2C_FALSE@am__append_2 = \
+ at SYSTEM_GRIB2C_FALSE@./g2clib-1.0.4/cmplxpack.c\
+ at SYSTEM_GRIB2C_FALSE@./g2clib-1.0.4/compack.c\
+ at SYSTEM_GRIB2C_FALSE@./g2clib-1.0.4/comunpack.c\
+ at SYSTEM_GRIB2C_FALSE@./g2clib-1.0.4/dec_jpeg2000.c\
+ at SYSTEM_GRIB2C_FALSE@./g2clib-1.0.4/dec_png.c\
+ at SYSTEM_GRIB2C_FALSE@./g2clib-1.0.4/drstemplates.c\
+ at SYSTEM_GRIB2C_FALSE@./g2clib-1.0.4/enc_jpeg2000.c\
+ at SYSTEM_GRIB2C_FALSE@./g2clib-1.0.4/enc_png.c\
+ at SYSTEM_GRIB2C_FALSE@./g2clib-1.0.4/g2_addfield.c\
+ at SYSTEM_GRIB2C_FALSE@./g2clib-1.0.4/g2_addgrid.c\
+ at SYSTEM_GRIB2C_FALSE@./g2clib-1.0.4/g2_addlocal.c\
+ at SYSTEM_GRIB2C_FALSE@./g2clib-1.0.4/g2_create.c\
+ at SYSTEM_GRIB2C_FALSE@./g2clib-1.0.4/g2_free.c\
+ at SYSTEM_GRIB2C_FALSE@./g2clib-1.0.4/g2_getfld.c\
+ at SYSTEM_GRIB2C_FALSE@./g2clib-1.0.4/g2_gribend.c\
+ at SYSTEM_GRIB2C_FALSE@./g2clib-1.0.4/g2_info.c\
+ at SYSTEM_GRIB2C_FALSE@./g2clib-1.0.4/g2_miss.c\
+ at SYSTEM_GRIB2C_FALSE@./g2clib-1.0.4/g2_unpack1.c\
+ at SYSTEM_GRIB2C_FALSE@./g2clib-1.0.4/g2_unpack2.c\
+ at SYSTEM_GRIB2C_FALSE@./g2clib-1.0.4/g2_unpack3.c\
+ at SYSTEM_GRIB2C_FALSE@./g2clib-1.0.4/g2_unpack4.c\
+ at SYSTEM_GRIB2C_FALSE@./g2clib-1.0.4/g2_unpack5.c\
+ at SYSTEM_GRIB2C_FALSE@./g2clib-1.0.4/g2_unpack6.c\
+ at SYSTEM_GRIB2C_FALSE@./g2clib-1.0.4/g2_unpack7.c\
+ at SYSTEM_GRIB2C_FALSE@./g2clib-1.0.4/gbits.c\
+ at SYSTEM_GRIB2C_FALSE@./g2clib-1.0.4/getdim.c\
+ at SYSTEM_GRIB2C_FALSE@./g2clib-1.0.4/getpoly.c\
+ at SYSTEM_GRIB2C_FALSE@./g2clib-1.0.4/gridtemplates.c\
+ at SYSTEM_GRIB2C_FALSE@./g2clib-1.0.4/int_power.c\
+ at SYSTEM_GRIB2C_FALSE@./g2clib-1.0.4/jpcpack.c\
+ at SYSTEM_GRIB2C_FALSE@./g2clib-1.0.4/jpcunpack.c\
+ at SYSTEM_GRIB2C_FALSE@./g2clib-1.0.4/misspack.c\
+ at SYSTEM_GRIB2C_FALSE@./g2clib-1.0.4/mkieee.c\
+ at SYSTEM_GRIB2C_FALSE@./g2clib-1.0.4/pack_gp.c\
+ at SYSTEM_GRIB2C_FALSE@./g2clib-1.0.4/pdstemplates.c\
+ at SYSTEM_GRIB2C_FALSE@./g2clib-1.0.4/pngpack.c\
+ at SYSTEM_GRIB2C_FALSE@./g2clib-1.0.4/pngunpack.c\
+ at SYSTEM_GRIB2C_FALSE@./g2clib-1.0.4/rdieee.c\
+ at SYSTEM_GRIB2C_FALSE@./g2clib-1.0.4/reduce.c\
+ at SYSTEM_GRIB2C_FALSE@./g2clib-1.0.4/seekgb.c\
+ at SYSTEM_GRIB2C_FALSE@./g2clib-1.0.4/simpack.c\
+ at SYSTEM_GRIB2C_FALSE@./g2clib-1.0.4/simunpack.c\
+ at SYSTEM_GRIB2C_FALSE@./g2clib-1.0.4/specpack.c\
+ at SYSTEM_GRIB2C_FALSE@./g2clib-1.0.4/specunpack.c\
+ at SYSTEM_GRIB2C_FALSE@./g2clib-1.0.4/drstemplates.h\
+ at SYSTEM_GRIB2C_FALSE@./g2clib-1.0.4/grib2.h\
+ at SYSTEM_GRIB2C_FALSE@./g2clib-1.0.4/gridtemplates.h\
+ at SYSTEM_GRIB2C_FALSE@./g2clib-1.0.4/pdstemplates.h
+
 subdir = src/modules/io/io_grid_grib2
 DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
 	$(top_srcdir)/depcomp
@@ -127,30 +178,79 @@ am__installdirs = "$(DESTDIR)$(pkglibdir)"
 LTLIBRARIES = $(pkglib_LTLIBRARIES)
 libio_grid_grib2_la_DEPENDENCIES =  \
 	$(top_srcdir)/src/saga_core/saga_api/libsaga_api.la
+am__libio_grid_grib2_la_SOURCES_DIST = grib2_import.cpp \
+	MLB_Interface.cpp grib2_import.h MLB_Interface.h \
+	./g2clib-1.0.4/cmplxpack.c ./g2clib-1.0.4/compack.c \
+	./g2clib-1.0.4/comunpack.c ./g2clib-1.0.4/dec_jpeg2000.c \
+	./g2clib-1.0.4/dec_png.c ./g2clib-1.0.4/drstemplates.c \
+	./g2clib-1.0.4/enc_jpeg2000.c ./g2clib-1.0.4/enc_png.c \
+	./g2clib-1.0.4/g2_addfield.c ./g2clib-1.0.4/g2_addgrid.c \
+	./g2clib-1.0.4/g2_addlocal.c ./g2clib-1.0.4/g2_create.c \
+	./g2clib-1.0.4/g2_free.c ./g2clib-1.0.4/g2_getfld.c \
+	./g2clib-1.0.4/g2_gribend.c ./g2clib-1.0.4/g2_info.c \
+	./g2clib-1.0.4/g2_miss.c ./g2clib-1.0.4/g2_unpack1.c \
+	./g2clib-1.0.4/g2_unpack2.c ./g2clib-1.0.4/g2_unpack3.c \
+	./g2clib-1.0.4/g2_unpack4.c ./g2clib-1.0.4/g2_unpack5.c \
+	./g2clib-1.0.4/g2_unpack6.c ./g2clib-1.0.4/g2_unpack7.c \
+	./g2clib-1.0.4/gbits.c ./g2clib-1.0.4/getdim.c \
+	./g2clib-1.0.4/getpoly.c ./g2clib-1.0.4/gridtemplates.c \
+	./g2clib-1.0.4/int_power.c ./g2clib-1.0.4/jpcpack.c \
+	./g2clib-1.0.4/jpcunpack.c ./g2clib-1.0.4/misspack.c \
+	./g2clib-1.0.4/mkieee.c ./g2clib-1.0.4/pack_gp.c \
+	./g2clib-1.0.4/pdstemplates.c ./g2clib-1.0.4/pngpack.c \
+	./g2clib-1.0.4/pngunpack.c ./g2clib-1.0.4/rdieee.c \
+	./g2clib-1.0.4/reduce.c ./g2clib-1.0.4/seekgb.c \
+	./g2clib-1.0.4/simpack.c ./g2clib-1.0.4/simunpack.c \
+	./g2clib-1.0.4/specpack.c ./g2clib-1.0.4/specunpack.c \
+	./g2clib-1.0.4/drstemplates.h ./g2clib-1.0.4/grib2.h \
+	./g2clib-1.0.4/gridtemplates.h ./g2clib-1.0.4/pdstemplates.h
 am__dirstamp = $(am__leading_dot)dirstamp
-am_libio_grid_grib2_la_OBJECTS = ./g2clib-1.0.4/cmplxpack.lo \
-	./g2clib-1.0.4/compack.lo ./g2clib-1.0.4/comunpack.lo \
-	./g2clib-1.0.4/dec_jpeg2000.lo ./g2clib-1.0.4/dec_png.lo \
-	./g2clib-1.0.4/drstemplates.lo ./g2clib-1.0.4/enc_jpeg2000.lo \
-	./g2clib-1.0.4/enc_png.lo ./g2clib-1.0.4/g2_addfield.lo \
-	./g2clib-1.0.4/g2_addgrid.lo ./g2clib-1.0.4/g2_addlocal.lo \
-	./g2clib-1.0.4/g2_create.lo ./g2clib-1.0.4/g2_free.lo \
-	./g2clib-1.0.4/g2_getfld.lo ./g2clib-1.0.4/g2_gribend.lo \
-	./g2clib-1.0.4/g2_info.lo ./g2clib-1.0.4/g2_miss.lo \
-	./g2clib-1.0.4/g2_unpack1.lo ./g2clib-1.0.4/g2_unpack2.lo \
-	./g2clib-1.0.4/g2_unpack3.lo ./g2clib-1.0.4/g2_unpack4.lo \
-	./g2clib-1.0.4/g2_unpack5.lo ./g2clib-1.0.4/g2_unpack6.lo \
-	./g2clib-1.0.4/g2_unpack7.lo ./g2clib-1.0.4/gbits.lo \
-	./g2clib-1.0.4/getdim.lo ./g2clib-1.0.4/getpoly.lo \
-	./g2clib-1.0.4/gridtemplates.lo ./g2clib-1.0.4/int_power.lo \
-	./g2clib-1.0.4/jpcpack.lo ./g2clib-1.0.4/jpcunpack.lo \
-	./g2clib-1.0.4/misspack.lo ./g2clib-1.0.4/mkieee.lo \
-	./g2clib-1.0.4/pack_gp.lo ./g2clib-1.0.4/pdstemplates.lo \
-	./g2clib-1.0.4/pngpack.lo ./g2clib-1.0.4/pngunpack.lo \
-	./g2clib-1.0.4/rdieee.lo ./g2clib-1.0.4/reduce.lo \
-	./g2clib-1.0.4/seekgb.lo ./g2clib-1.0.4/simpack.lo \
-	./g2clib-1.0.4/simunpack.lo ./g2clib-1.0.4/specpack.lo \
-	./g2clib-1.0.4/specunpack.lo grib2_import.lo MLB_Interface.lo
+ at SYSTEM_GRIB2C_FALSE@am__objects_1 = ./g2clib-1.0.4/cmplxpack.lo \
+ at SYSTEM_GRIB2C_FALSE@	./g2clib-1.0.4/compack.lo \
+ at SYSTEM_GRIB2C_FALSE@	./g2clib-1.0.4/comunpack.lo \
+ at SYSTEM_GRIB2C_FALSE@	./g2clib-1.0.4/dec_jpeg2000.lo \
+ at SYSTEM_GRIB2C_FALSE@	./g2clib-1.0.4/dec_png.lo \
+ at SYSTEM_GRIB2C_FALSE@	./g2clib-1.0.4/drstemplates.lo \
+ at SYSTEM_GRIB2C_FALSE@	./g2clib-1.0.4/enc_jpeg2000.lo \
+ at SYSTEM_GRIB2C_FALSE@	./g2clib-1.0.4/enc_png.lo \
+ at SYSTEM_GRIB2C_FALSE@	./g2clib-1.0.4/g2_addfield.lo \
+ at SYSTEM_GRIB2C_FALSE@	./g2clib-1.0.4/g2_addgrid.lo \
+ at SYSTEM_GRIB2C_FALSE@	./g2clib-1.0.4/g2_addlocal.lo \
+ at SYSTEM_GRIB2C_FALSE@	./g2clib-1.0.4/g2_create.lo \
+ at SYSTEM_GRIB2C_FALSE@	./g2clib-1.0.4/g2_free.lo \
+ at SYSTEM_GRIB2C_FALSE@	./g2clib-1.0.4/g2_getfld.lo \
+ at SYSTEM_GRIB2C_FALSE@	./g2clib-1.0.4/g2_gribend.lo \
+ at SYSTEM_GRIB2C_FALSE@	./g2clib-1.0.4/g2_info.lo \
+ at SYSTEM_GRIB2C_FALSE@	./g2clib-1.0.4/g2_miss.lo \
+ at SYSTEM_GRIB2C_FALSE@	./g2clib-1.0.4/g2_unpack1.lo \
+ at SYSTEM_GRIB2C_FALSE@	./g2clib-1.0.4/g2_unpack2.lo \
+ at SYSTEM_GRIB2C_FALSE@	./g2clib-1.0.4/g2_unpack3.lo \
+ at SYSTEM_GRIB2C_FALSE@	./g2clib-1.0.4/g2_unpack4.lo \
+ at SYSTEM_GRIB2C_FALSE@	./g2clib-1.0.4/g2_unpack5.lo \
+ at SYSTEM_GRIB2C_FALSE@	./g2clib-1.0.4/g2_unpack6.lo \
+ at SYSTEM_GRIB2C_FALSE@	./g2clib-1.0.4/g2_unpack7.lo \
+ at SYSTEM_GRIB2C_FALSE@	./g2clib-1.0.4/gbits.lo \
+ at SYSTEM_GRIB2C_FALSE@	./g2clib-1.0.4/getdim.lo \
+ at SYSTEM_GRIB2C_FALSE@	./g2clib-1.0.4/getpoly.lo \
+ at SYSTEM_GRIB2C_FALSE@	./g2clib-1.0.4/gridtemplates.lo \
+ at SYSTEM_GRIB2C_FALSE@	./g2clib-1.0.4/int_power.lo \
+ at SYSTEM_GRIB2C_FALSE@	./g2clib-1.0.4/jpcpack.lo \
+ at SYSTEM_GRIB2C_FALSE@	./g2clib-1.0.4/jpcunpack.lo \
+ at SYSTEM_GRIB2C_FALSE@	./g2clib-1.0.4/misspack.lo \
+ at SYSTEM_GRIB2C_FALSE@	./g2clib-1.0.4/mkieee.lo \
+ at SYSTEM_GRIB2C_FALSE@	./g2clib-1.0.4/pack_gp.lo \
+ at SYSTEM_GRIB2C_FALSE@	./g2clib-1.0.4/pdstemplates.lo \
+ at SYSTEM_GRIB2C_FALSE@	./g2clib-1.0.4/pngpack.lo \
+ at SYSTEM_GRIB2C_FALSE@	./g2clib-1.0.4/pngunpack.lo \
+ at SYSTEM_GRIB2C_FALSE@	./g2clib-1.0.4/rdieee.lo \
+ at SYSTEM_GRIB2C_FALSE@	./g2clib-1.0.4/reduce.lo \
+ at SYSTEM_GRIB2C_FALSE@	./g2clib-1.0.4/seekgb.lo \
+ at SYSTEM_GRIB2C_FALSE@	./g2clib-1.0.4/simpack.lo \
+ at SYSTEM_GRIB2C_FALSE@	./g2clib-1.0.4/simunpack.lo \
+ at SYSTEM_GRIB2C_FALSE@	./g2clib-1.0.4/specpack.lo \
+ at SYSTEM_GRIB2C_FALSE@	./g2clib-1.0.4/specunpack.lo
+am_libio_grid_grib2_la_OBJECTS = grib2_import.lo MLB_Interface.lo \
+	$(am__objects_1)
 libio_grid_grib2_la_OBJECTS = $(am_libio_grid_grib2_la_OBJECTS)
 AM_V_lt = $(am__v_lt_ at AM_V@)
 am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
@@ -209,7 +309,7 @@ am__v_CXXLD_ = $(am__v_CXXLD_ at AM_DEFAULT_V@)
 am__v_CXXLD_0 = @echo "  CXXLD   " $@;
 am__v_CXXLD_1 = 
 SOURCES = $(libio_grid_grib2_la_SOURCES)
-DIST_SOURCES = $(libio_grid_grib2_la_SOURCES)
+DIST_SOURCES = $(am__libio_grid_grib2_la_SOURCES_DIST)
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
@@ -392,62 +492,11 @@ DEF_SAGA = -D_SAGA_LINUX -D_TYPEDEF_BYTE -D_TYPEDEF_WORD -DUSE_JPEG2000 -DUSE_PN
 CXX_INCS = -I$(top_srcdir)/src/saga_core $(LOCAL_INCS)
 AM_CXXFLAGS = -fPIC $(CXX_INCS) $(DEF_SAGA) $(UC_DEFS) $(DBGFLAGS) $(GOMPFLAGS)
 #AM_LDFLAGS         = -fPIC -shared -avoid-version -lpq -ljasper
-AM_LDFLAGS = -fPIC -shared -avoid-version $(LOCAL_LIBS) -ljasper
+AM_LDFLAGS = -fPIC -shared -avoid-version $(LOCAL_LIBS) -ljasper \
+	$(am__append_1)
 pkglib_LTLIBRARIES = libio_grid_grib2.la
-libio_grid_grib2_la_SOURCES = \
-./g2clib-1.0.4/cmplxpack.c\
-./g2clib-1.0.4/compack.c\
-./g2clib-1.0.4/comunpack.c\
-./g2clib-1.0.4/dec_jpeg2000.c\
-./g2clib-1.0.4/dec_png.c\
-./g2clib-1.0.4/drstemplates.c\
-./g2clib-1.0.4/enc_jpeg2000.c\
-./g2clib-1.0.4/enc_png.c\
-./g2clib-1.0.4/g2_addfield.c\
-./g2clib-1.0.4/g2_addgrid.c\
-./g2clib-1.0.4/g2_addlocal.c\
-./g2clib-1.0.4/g2_create.c\
-./g2clib-1.0.4/g2_free.c\
-./g2clib-1.0.4/g2_getfld.c\
-./g2clib-1.0.4/g2_gribend.c\
-./g2clib-1.0.4/g2_info.c\
-./g2clib-1.0.4/g2_miss.c\
-./g2clib-1.0.4/g2_unpack1.c\
-./g2clib-1.0.4/g2_unpack2.c\
-./g2clib-1.0.4/g2_unpack3.c\
-./g2clib-1.0.4/g2_unpack4.c\
-./g2clib-1.0.4/g2_unpack5.c\
-./g2clib-1.0.4/g2_unpack6.c\
-./g2clib-1.0.4/g2_unpack7.c\
-./g2clib-1.0.4/gbits.c\
-./g2clib-1.0.4/getdim.c\
-./g2clib-1.0.4/getpoly.c\
-./g2clib-1.0.4/gridtemplates.c\
-./g2clib-1.0.4/int_power.c\
-./g2clib-1.0.4/jpcpack.c\
-./g2clib-1.0.4/jpcunpack.c\
-./g2clib-1.0.4/misspack.c\
-./g2clib-1.0.4/mkieee.c\
-./g2clib-1.0.4/pack_gp.c\
-./g2clib-1.0.4/pdstemplates.c\
-./g2clib-1.0.4/pngpack.c\
-./g2clib-1.0.4/pngunpack.c\
-./g2clib-1.0.4/rdieee.c\
-./g2clib-1.0.4/reduce.c\
-./g2clib-1.0.4/seekgb.c\
-./g2clib-1.0.4/simpack.c\
-./g2clib-1.0.4/simunpack.c\
-./g2clib-1.0.4/specpack.c\
-./g2clib-1.0.4/specunpack.c\
-./g2clib-1.0.4/drstemplates.h\
-./g2clib-1.0.4/grib2.h\
-./g2clib-1.0.4/gridtemplates.h\
-./g2clib-1.0.4/pdstemplates.h\
-grib2_import.cpp\
-MLB_Interface.cpp\
-grib2_import.h\
-MLB_Interface.h
-
+libio_grid_grib2_la_SOURCES = grib2_import.cpp MLB_Interface.cpp \
+	grib2_import.h MLB_Interface.h $(am__append_2)
 libio_grid_grib2_la_LIBADD = $(top_srcdir)/src/saga_core/saga_api/libsaga_api.la
 all: all-am
 
diff --git a/src/modules/io/io_grid_grib2/grib2_import.cpp b/src/modules/io/io_grid_grib2/grib2_import.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_grid_grib2/grib2_import.h b/src/modules/io/io_grid_grib2/grib2_import.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_grid_image/MLB_Interface.cpp b/src/modules/io/io_grid_image/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_grid_image/MLB_Interface.h b/src/modules/io/io_grid_image/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_grid_image/Makefile.am b/src/modules/io/io_grid_image/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_grid_image/grid_export.cpp b/src/modules/io/io_grid_image/grid_export.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_grid_image/grid_export.h b/src/modules/io/io_grid_image/grid_export.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_grid_image/grid_import.cpp b/src/modules/io/io_grid_image/grid_import.cpp
old mode 100644
new mode 100755
index 796b233..9fea2c3
--- a/src/modules/io/io_grid_image/grid_import.cpp
+++ b/src/modules/io/io_grid_image/grid_import.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: grid_import.cpp 2089 2014-04-04 12:37:27Z reklov_w $
+ * Version $Id: grid_import.cpp 2752 2016-01-15 15:26:55Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -409,7 +409,7 @@ void CGrid_Import::Set_Transformation(CSG_Grid **ppImage, double ax, double ay,
 		{
 			XSrc	= DInv * (XTgt - A);
 
-			if( pSource->Get_Value(XSrc[0], XSrc[1], z, GRID_INTERPOLATION_NearestNeighbour, false, true) )
+			if( pSource->Get_Value(XSrc[0], XSrc[1], z, GRID_RESAMPLING_NearestNeighbour, false, true) )
 			{
 				pTarget->Set_Value(x, y, z);
 			}
diff --git a/src/modules/io/io_grid_image/grid_import.h b/src/modules/io/io_grid_image/grid_import.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_grid_image/grid_to_kml.cpp b/src/modules/io/io_grid_image/grid_to_kml.cpp
old mode 100644
new mode 100755
index e237d80..46544f6
--- a/src/modules/io/io_grid_image/grid_to_kml.cpp
+++ b/src/modules/io/io_grid_image/grid_to_kml.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: grid_to_kml.cpp 2543 2015-07-27 13:48:24Z reklov_w $
+ * Version $Id: grid_to_kml.cpp 2754 2016-01-18 14:06:25Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -199,8 +199,8 @@ CGrid_to_KML::CGrid_to_KML(void)
 	);
 
 	Parameters.Add_Value(
-        NULL	, "INTERPOL"	, _TL("Interpolation"),
-        _TL("interpolate values if projection is needed"),
+        NULL	, "RESAMPLING"	, _TL("Interpolation"),
+        _TL("resampling method used when projection is needed"),
         PARAMETER_TYPE_Bool, true
     );
 
@@ -239,7 +239,7 @@ int CGrid_to_KML::On_Parameters_Enable(CSG_Parameters *pParameters, CSG_Paramete
 	{
 		CSG_Grid	*pGrid	= pParameters->Get_Parameter("GRID")->asGrid();
 
-		pParameters->Get_Parameter("INTERPOL")->Set_Enabled(
+		pParameters->Get_Parameter("RESAMPLING")->Set_Enabled(
 			pGrid && pGrid->Get_Projection().Get_Type() == SG_PROJ_TYPE_CS_Projected && pParameters->Get_Parameter("COLOURING")->asInt() < 4
 		);
 	}
@@ -298,9 +298,9 @@ bool CGrid_to_KML::On_Execute(void)
 
 		pModule->Settings_Push();
 
-		if( pModule->Set_Parameter("CRS_PROJ4"    , SG_T("+proj=longlat +ellps=WGS84 +datum=WGS84"))
-		&&  pModule->Set_Parameter("INTERPOLATION", Method < 4 && Parameters("INTERPOL")->asBool() ? 4 : 0)
-		&&  pModule->Set_Parameter("SOURCE"       , pGrid)
+		if( pModule->Set_Parameter("CRS_PROJ4" , SG_T("+proj=longlat +ellps=WGS84 +datum=WGS84"))
+		&&  pModule->Set_Parameter("RESAMPLING", Method < 4 && Parameters("RESAMPLING")->asBool() ? 4 : 0)
+		&&  pModule->Set_Parameter("SOURCE"    , pGrid)
 		&&  pModule->Execute() )
 		{
 			bDelete	= true;
diff --git a/src/modules/io/io_grid_image/grid_to_kml.h b/src/modules/io/io_grid_image/grid_to_kml.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_shapes/MLB_Interface.cpp b/src/modules/io/io_shapes/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_shapes/MLB_Interface.h b/src/modules/io/io_shapes/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_shapes/Makefile.am b/src/modules/io/io_shapes/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_shapes/atlas_bna.cpp b/src/modules/io/io_shapes/atlas_bna.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_shapes/atlas_bna.h b/src/modules/io/io_shapes/atlas_bna.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_shapes/generate.cpp b/src/modules/io/io_shapes/generate.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_shapes/generate.h b/src/modules/io/io_shapes/generate.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_shapes/gpx.cpp b/src/modules/io/io_shapes/gpx.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_shapes/gpx.h b/src/modules/io/io_shapes/gpx.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_shapes/gstat.cpp b/src/modules/io/io_shapes/gstat.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_shapes/gstat.h b/src/modules/io/io_shapes/gstat.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_shapes/pointcloud_from_file.cpp b/src/modules/io/io_shapes/pointcloud_from_file.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_shapes/pointcloud_from_file.h b/src/modules/io/io_shapes/pointcloud_from_file.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_shapes/pointcloud_from_text_file.cpp b/src/modules/io/io_shapes/pointcloud_from_text_file.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_shapes/pointcloud_from_text_file.h b/src/modules/io/io_shapes/pointcloud_from_text_file.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_shapes/pointcloud_to_text_file.cpp b/src/modules/io/io_shapes/pointcloud_to_text_file.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_shapes/pointcloud_to_text_file.h b/src/modules/io/io_shapes/pointcloud_to_text_file.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_shapes/stl.cpp b/src/modules/io/io_shapes/stl.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_shapes/stl.h b/src/modules/io/io_shapes/stl.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_shapes/surfer_bln.cpp b/src/modules/io/io_shapes/surfer_bln.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_shapes/surfer_bln.h b/src/modules/io/io_shapes/surfer_bln.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_shapes/svg.cpp b/src/modules/io/io_shapes/svg.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_shapes/svg.h b/src/modules/io/io_shapes/svg.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_shapes/wasp_map.cpp b/src/modules/io/io_shapes/wasp_map.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_shapes/wasp_map.h b/src/modules/io/io_shapes/wasp_map.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_shapes/wktb.cpp b/src/modules/io/io_shapes/wktb.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_shapes/wktb.h b/src/modules/io/io_shapes/wktb.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_shapes/xyz.cpp b/src/modules/io/io_shapes/xyz.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_shapes/xyz.h b/src/modules/io/io_shapes/xyz.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_shapes_dxf/MLB_Interface.cpp b/src/modules/io/io_shapes_dxf/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_shapes_dxf/MLB_Interface.h b/src/modules/io/io_shapes_dxf/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_shapes_dxf/Makefile.am b/src/modules/io/io_shapes_dxf/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_shapes_dxf/dxf_import.cpp b/src/modules/io/io_shapes_dxf/dxf_import.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_shapes_dxf/dxf_import.h b/src/modules/io/io_shapes_dxf/dxf_import.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_shapes_dxf/dxflib/dl_attributes.h b/src/modules/io/io_shapes_dxf/dxflib/dl_attributes.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_shapes_dxf/dxflib/dl_codes.h b/src/modules/io/io_shapes_dxf/dxflib/dl_codes.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_shapes_dxf/dxflib/dl_creationadapter.h b/src/modules/io/io_shapes_dxf/dxflib/dl_creationadapter.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_shapes_dxf/dxflib/dl_creationinterface.h b/src/modules/io/io_shapes_dxf/dxflib/dl_creationinterface.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_shapes_dxf/dxflib/dl_dxf.cpp b/src/modules/io/io_shapes_dxf/dxflib/dl_dxf.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_shapes_dxf/dxflib/dl_dxf.h b/src/modules/io/io_shapes_dxf/dxflib/dl_dxf.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_shapes_dxf/dxflib/dl_entities.h b/src/modules/io/io_shapes_dxf/dxflib/dl_entities.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_shapes_dxf/dxflib/dl_exception.h b/src/modules/io/io_shapes_dxf/dxflib/dl_exception.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_shapes_dxf/dxflib/dl_extrusion.h b/src/modules/io/io_shapes_dxf/dxflib/dl_extrusion.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_shapes_dxf/dxflib/dl_writer.h b/src/modules/io/io_shapes_dxf/dxflib/dl_writer.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_shapes_dxf/dxflib/dl_writer_ascii.cpp b/src/modules/io/io_shapes_dxf/dxflib/dl_writer_ascii.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_shapes_dxf/dxflib/dl_writer_ascii.h b/src/modules/io/io_shapes_dxf/dxflib/dl_writer_ascii.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_shapes_las/MLB_Interface.cpp b/src/modules/io/io_shapes_las/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_shapes_las/MLB_Interface.h b/src/modules/io/io_shapes_las/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_shapes_las/Makefile.am b/src/modules/io/io_shapes_las/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_shapes_las/las_export.cpp b/src/modules/io/io_shapes_las/las_export.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_shapes_las/las_export.h b/src/modules/io/io_shapes_las/las_export.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_shapes_las/las_import.cpp b/src/modules/io/io_shapes_las/las_import.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_shapes_las/las_import.h b/src/modules/io/io_shapes_las/las_import.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_shapes_las/las_info.cpp b/src/modules/io/io_shapes_las/las_info.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_shapes_las/las_info.h b/src/modules/io/io_shapes_las/las_info.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_table/MLB_Interface.cpp b/src/modules/io/io_table/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_table/MLB_Interface.h b/src/modules/io/io_table/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_table/Makefile.am b/src/modules/io/io_table/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_table/io_table_txt.cpp b/src/modules/io/io_table/io_table_txt.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_table/io_table_txt.h b/src/modules/io/io_table/io_table_txt.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_virtual/MLB_Interface.cpp b/src/modules/io/io_virtual/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_virtual/MLB_Interface.h b/src/modules/io/io_virtual/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_virtual/Makefile.am b/src/modules/io/io_virtual/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_virtual/pc_create_spcvf.cpp b/src/modules/io/io_virtual/pc_create_spcvf.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_virtual/pc_create_spcvf.h b/src/modules/io/io_virtual/pc_create_spcvf.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_virtual/pc_get_grid_spcvf.cpp b/src/modules/io/io_virtual/pc_get_grid_spcvf.cpp
old mode 100644
new mode 100755
index baeb808..5fdec45
--- a/src/modules/io/io_virtual/pc_get_grid_spcvf.cpp
+++ b/src/modules/io/io_virtual/pc_get_grid_spcvf.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: pc_get_grid_spcvf.cpp 2439 2015-03-16 13:35:26Z reklov_w $
+ * Version $Id: pc_get_grid_spcvf.cpp 2739 2015-12-17 13:24:37Z reklov_w $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -849,6 +849,9 @@ bool CPointCloud_Get_Grid_SPCVF_Interactive::On_Execute_Position(CSG_Point ptWor
 {
 	switch( Mode )
 	{
+  default:
+    break;
+
 	//-----------------------------------------------------
 	case MODULE_INTERACTIVE_LDOWN:
 
diff --git a/src/modules/io/io_virtual/pc_get_grid_spcvf.h b/src/modules/io/io_virtual/pc_get_grid_spcvf.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_virtual/pc_get_subset_spcvf.cpp b/src/modules/io/io_virtual/pc_get_subset_spcvf.cpp
old mode 100644
new mode 100755
index 6d12fd7..ec7849f
--- a/src/modules/io/io_virtual/pc_get_subset_spcvf.cpp
+++ b/src/modules/io/io_virtual/pc_get_subset_spcvf.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: pc_get_subset_spcvf.cpp 2439 2015-03-16 13:35:26Z reklov_w $
+ * Version $Id: pc_get_subset_spcvf.cpp 2739 2015-12-17 13:24:37Z reklov_w $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -204,7 +204,7 @@ bool CPointCloud_Get_Subset_SPCVF_Base::Get_Subset(bool bCopyAttr)
 
 			pHeader->Get_Child(SG_T("Attributes"))->Get_Property(SG_T("Count"), iFieldCount);
 
-			if( !bCopyAttr )
+			if( !bCopyAttr && m_vAttrMapper.size() > 0 )
 			{
 				if( m_vAttrMapper.at(m_vAttrMapper.size()-1) >= iFieldCount-3 )
 				{
@@ -387,7 +387,7 @@ bool CPointCloud_Get_Subset_SPCVF_Base::Get_Subset(bool bCopyAttr)
 				{
 					pPC_out = SG_Create_PointCloud();
 
-					for(size_t iField=0; iField<m_vAttrMapper.size(); iField++)
+					for(int iField=0; iField<(int)m_vAttrMapper.size(); iField++)
 					{
 						if( iField >= pPC->Get_Attribute_Count() )
 							continue;
@@ -967,6 +967,9 @@ bool CPointCloud_Get_Subset_SPCVF_Interactive::On_Execute_Position(CSG_Point ptW
 {
 	switch( Mode )
 	{
+  default:
+    break;
+
 	//-----------------------------------------------------
 	case MODULE_INTERACTIVE_LDOWN:
 
diff --git a/src/modules/io/io_virtual/pc_get_subset_spcvf.h b/src/modules/io/io_virtual/pc_get_subset_spcvf.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_virtual/pc_remove_overlap_from_spcvf.cpp b/src/modules/io/io_virtual/pc_remove_overlap_from_spcvf.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_virtual/pc_remove_overlap_from_spcvf.h b/src/modules/io/io_virtual/pc_remove_overlap_from_spcvf.h
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_virtual/pc_tileshape_from_spcvf.cpp b/src/modules/io/io_virtual/pc_tileshape_from_spcvf.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/io/io_virtual/pc_tileshape_from_spcvf.h b/src/modules/io/io_virtual/pc_tileshape_from_spcvf.h
old mode 100644
new mode 100755
diff --git a/src/modules/pointcloud/Makefile.am b/src/modules/pointcloud/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/pointcloud/pointcloud_tools/MLB_Interface.cpp b/src/modules/pointcloud/pointcloud_tools/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/pointcloud/pointcloud_tools/MLB_Interface.h b/src/modules/pointcloud/pointcloud_tools/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/pointcloud/pointcloud_tools/Makefile.am b/src/modules/pointcloud/pointcloud_tools/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/pointcloud/pointcloud_tools/pc_attribute_calculator.cpp b/src/modules/pointcloud/pointcloud_tools/pc_attribute_calculator.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/pointcloud/pointcloud_tools/pc_attribute_calculator.h b/src/modules/pointcloud/pointcloud_tools/pc_attribute_calculator.h
old mode 100644
new mode 100755
diff --git a/src/modules/pointcloud/pointcloud_tools/pc_cluster_analysis.cpp b/src/modules/pointcloud/pointcloud_tools/pc_cluster_analysis.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/pointcloud/pointcloud_tools/pc_cluster_analysis.h b/src/modules/pointcloud/pointcloud_tools/pc_cluster_analysis.h
old mode 100644
new mode 100755
diff --git a/src/modules/pointcloud/pointcloud_tools/pc_cut.cpp b/src/modules/pointcloud/pointcloud_tools/pc_cut.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/pointcloud/pointcloud_tools/pc_cut.h b/src/modules/pointcloud/pointcloud_tools/pc_cut.h
old mode 100644
new mode 100755
diff --git a/src/modules/pointcloud/pointcloud_tools/pc_drop_attribute.cpp b/src/modules/pointcloud/pointcloud_tools/pc_drop_attribute.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/pointcloud/pointcloud_tools/pc_drop_attribute.h b/src/modules/pointcloud/pointcloud_tools/pc_drop_attribute.h
old mode 100644
new mode 100755
diff --git a/src/modules/pointcloud/pointcloud_tools/pc_from_grid.cpp b/src/modules/pointcloud/pointcloud_tools/pc_from_grid.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/pointcloud/pointcloud_tools/pc_from_grid.h b/src/modules/pointcloud/pointcloud_tools/pc_from_grid.h
old mode 100644
new mode 100755
diff --git a/src/modules/pointcloud/pointcloud_tools/pc_from_shapes.cpp b/src/modules/pointcloud/pointcloud_tools/pc_from_shapes.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/pointcloud/pointcloud_tools/pc_from_shapes.h b/src/modules/pointcloud/pointcloud_tools/pc_from_shapes.h
old mode 100644
new mode 100755
diff --git a/src/modules/pointcloud/pointcloud_tools/pc_from_table.cpp b/src/modules/pointcloud/pointcloud_tools/pc_from_table.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/pointcloud/pointcloud_tools/pc_from_table.h b/src/modules/pointcloud/pointcloud_tools/pc_from_table.h
old mode 100644
new mode 100755
diff --git a/src/modules/pointcloud/pointcloud_tools/pc_merge.cpp b/src/modules/pointcloud/pointcloud_tools/pc_merge.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/pointcloud/pointcloud_tools/pc_merge.h b/src/modules/pointcloud/pointcloud_tools/pc_merge.h
old mode 100644
new mode 100755
diff --git a/src/modules/pointcloud/pointcloud_tools/pc_reclass_extract.cpp b/src/modules/pointcloud/pointcloud_tools/pc_reclass_extract.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/pointcloud/pointcloud_tools/pc_reclass_extract.h b/src/modules/pointcloud/pointcloud_tools/pc_reclass_extract.h
old mode 100644
new mode 100755
diff --git a/src/modules/pointcloud/pointcloud_tools/pc_thinning_simple.cpp b/src/modules/pointcloud/pointcloud_tools/pc_thinning_simple.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/pointcloud/pointcloud_tools/pc_thinning_simple.h b/src/modules/pointcloud/pointcloud_tools/pc_thinning_simple.h
old mode 100644
new mode 100755
diff --git a/src/modules/pointcloud/pointcloud_tools/pc_to_grid.cpp b/src/modules/pointcloud/pointcloud_tools/pc_to_grid.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/pointcloud/pointcloud_tools/pc_to_grid.h b/src/modules/pointcloud/pointcloud_tools/pc_to_grid.h
old mode 100644
new mode 100755
diff --git a/src/modules/pointcloud/pointcloud_tools/pc_to_shapes.cpp b/src/modules/pointcloud/pointcloud_tools/pc_to_shapes.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/pointcloud/pointcloud_tools/pc_to_shapes.h b/src/modules/pointcloud/pointcloud_tools/pc_to_shapes.h
old mode 100644
new mode 100755
diff --git a/src/modules/pointcloud/pointcloud_tools/pc_transform.cpp b/src/modules/pointcloud/pointcloud_tools/pc_transform.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/pointcloud/pointcloud_tools/pc_transform.h b/src/modules/pointcloud/pointcloud_tools/pc_transform.h
old mode 100644
new mode 100755
diff --git a/src/modules/pointcloud/pointcloud_viewer/MLB_Interface.cpp b/src/modules/pointcloud/pointcloud_viewer/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/pointcloud/pointcloud_viewer/MLB_Interface.h b/src/modules/pointcloud/pointcloud_viewer/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/pointcloud/pointcloud_viewer/Makefile.am b/src/modules/pointcloud/pointcloud_viewer/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/pointcloud/pointcloud_viewer/points_view_control.cpp b/src/modules/pointcloud/pointcloud_viewer/points_view_control.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/pointcloud/pointcloud_viewer/points_view_control.h b/src/modules/pointcloud/pointcloud_viewer/points_view_control.h
old mode 100644
new mode 100755
diff --git a/src/modules/pointcloud/pointcloud_viewer/points_view_dialog.cpp b/src/modules/pointcloud/pointcloud_viewer/points_view_dialog.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/pointcloud/pointcloud_viewer/points_view_dialog.h b/src/modules/pointcloud/pointcloud_viewer/points_view_dialog.h
old mode 100644
new mode 100755
diff --git a/src/modules/pointcloud/pointcloud_viewer/points_view_extent.cpp b/src/modules/pointcloud/pointcloud_viewer/points_view_extent.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/pointcloud/pointcloud_viewer/points_view_extent.h b/src/modules/pointcloud/pointcloud_viewer/points_view_extent.h
old mode 100644
new mode 100755
diff --git a/src/modules/pointcloud/pointcloud_viewer/points_view_module.cpp b/src/modules/pointcloud/pointcloud_viewer/points_view_module.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/pointcloud/pointcloud_viewer/points_view_module.h b/src/modules/pointcloud/pointcloud_viewer/points_view_module.h
old mode 100644
new mode 100755
diff --git a/src/modules/projection/Makefile.am b/src/modules/projection/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/projection/pj_georeference/Collect_Points.cpp b/src/modules/projection/pj_georeference/Collect_Points.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/projection/pj_georeference/Collect_Points.h b/src/modules/projection/pj_georeference/Collect_Points.h
old mode 100644
new mode 100755
diff --git a/src/modules/projection/pj_georeference/Georef_Engine.cpp b/src/modules/projection/pj_georeference/Georef_Engine.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/projection/pj_georeference/Georef_Engine.h b/src/modules/projection/pj_georeference/Georef_Engine.h
old mode 100644
new mode 100755
diff --git a/src/modules/projection/pj_georeference/Georef_Grid.cpp b/src/modules/projection/pj_georeference/Georef_Grid.cpp
old mode 100644
new mode 100755
index 9ffe348..5c41d73
--- a/src/modules/projection/pj_georeference/Georef_Grid.cpp
+++ b/src/modules/projection/pj_georeference/Georef_Grid.cpp
@@ -127,15 +127,14 @@ CGeoref_Grid::CGeoref_Grid(void)
 	);
 
 	Parameters.Add_Choice(
-		NULL	, "INTERPOLATION"	, _TL("Interpolation"),
+		NULL	, "RESAMPLING"	, _TL("Resampling"),
 		_TL(""),
-		CSG_String::Format(SG_T("%s|%s|%s|%s|%s|"),
-			_TL("nearest neigbhour"),
-			_TL("bilinear"),
-			_TL("inverse distance"),
-			_TL("bicubic spline"),
-			_TL("B-spline")
-		), 4
+		CSG_String::Format("%s|%s|%s|%s|",
+			_TL("Nearest Neighbour"),
+			_TL("Bilinear Interpolation"),
+			_TL("Bicubic Spline Interpolation"),
+			_TL("B-Spline Interpolation")
+		), 3
 	);
 
 	Parameters.Add_Value(
@@ -181,7 +180,7 @@ int CGeoref_Grid::On_Parameters_Enable(CSG_Parameters *pParameters, CSG_Paramete
 		pParameters->Set_Enabled("ORDER", pParameter->asInt() == GEOREF_Polynomial);	// only show for polynomial, user defined order
 	}
 
-	if( !SG_STR_CMP(pParameter->Get_Identifier(), "INTERPOLATION") )
+	if( !SG_STR_CMP(pParameter->Get_Identifier(), "RESAMPLING") )
 	{
 		pParameters->Set_Enabled("BYTEWISE", pParameter->asInt() > 0);
 	}
@@ -261,9 +260,17 @@ bool CGeoref_Grid::Get_Conversion(void)
 	}
 
 	//-----------------------------------------------------
-	int	Interpolation	= Parameters("INTERPOLATION")->asInt();
+	TSG_Grid_Resampling	Resampling;
 
-	CSG_Grid	*pReferenced	= m_Grid_Target.Get_Grid(Interpolation == 0 ? pSource->Get_Type() : SG_DATATYPE_Float);
+	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;
+	}
+
+	CSG_Grid	*pReferenced	= m_Grid_Target.Get_Grid(Resampling == GRID_RESAMPLING_NearestNeighbour ? pSource->Get_Type() : SG_DATATYPE_Float);
 
 	if( !pReferenced )
 	{
@@ -273,7 +280,7 @@ bool CGeoref_Grid::Get_Conversion(void)
 	}
 
 	//-----------------------------------------------------
-	if( !Set_Grid(pSource, pReferenced, Interpolation) )
+	if( !Set_Grid(pSource, pReferenced, Resampling) )
 	{
 		Error_Set(_TL("failed to project target grid"));
 
@@ -375,7 +382,7 @@ inline void CGeoref_Grid::Add_Target_Extent(CSG_Rect &Extent, double x, double y
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
-bool CGeoref_Grid::Set_Grid(CSG_Grid *pGrid, CSG_Grid *pReferenced, int Interpolation)
+bool CGeoref_Grid::Set_Grid(CSG_Grid *pGrid, CSG_Grid *pReferenced, TSG_Grid_Resampling Resampling)
 {
 	if( !pGrid || !pReferenced || !m_Engine.is_Okay() )
 	{
@@ -402,7 +409,7 @@ bool CGeoref_Grid::Set_Grid(CSG_Grid *pGrid, CSG_Grid *pReferenced, int Interpol
 			double		z;
 			TSG_Point	p	= pReferenced->Get_System().Get_Grid_to_World(x, y);
 
-			if( m_Engine.Get_Converted(p, true) && pGrid->Get_Value(p, z, Interpolation, bBytewise) )
+			if( m_Engine.Get_Converted(p, true) && pGrid->Get_Value(p, z, Resampling, bBytewise) )
 			{
 				pReferenced->Set_Value(x, y, z);
 			}
diff --git a/src/modules/projection/pj_georeference/Georef_Grid.h b/src/modules/projection/pj_georeference/Georef_Grid.h
old mode 100644
new mode 100755
index cdd20c5..b6613a8
--- a/src/modules/projection/pj_georeference/Georef_Grid.h
+++ b/src/modules/projection/pj_georeference/Georef_Grid.h
@@ -106,7 +106,7 @@ private:
 	bool						Get_Target_Extent		(CSG_Rect &Extent, bool bEdge);
 	void						Add_Target_Extent		(CSG_Rect &Extent, double x, double y);
 
-	bool						Set_Grid				(CSG_Grid *pGrid, CSG_Grid   *pReferenced, int Interpolation);
+	bool						Set_Grid				(CSG_Grid *pGrid, CSG_Grid   *pReferenced, TSG_Grid_Resampling Resampling);
 	bool						Set_Points				(CSG_Grid *pGrid, CSG_Shapes *pReferenced);
 
 };
diff --git a/src/modules/projection/pj_georeference/Georef_Shapes.cpp b/src/modules/projection/pj_georeference/Georef_Shapes.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/projection/pj_georeference/Georef_Shapes.h b/src/modules/projection/pj_georeference/Georef_Shapes.h
old mode 100644
new mode 100755
diff --git a/src/modules/projection/pj_georeference/MLB_Interface.cpp b/src/modules/projection/pj_georeference/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/projection/pj_georeference/MLB_Interface.h b/src/modules/projection/pj_georeference/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/projection/pj_georeference/Makefile.am b/src/modules/projection/pj_georeference/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/projection/pj_georeference/direct_georeferencing.cpp b/src/modules/projection/pj_georeference/direct_georeferencing.cpp
old mode 100644
new mode 100755
index d900608..9c1ebba
--- a/src/modules/projection/pj_georeference/direct_georeferencing.cpp
+++ b/src/modules/projection/pj_georeference/direct_georeferencing.cpp
@@ -331,15 +331,14 @@ CDirect_Georeferencing::CDirect_Georeferencing(void)
 
 	//-----------------------------------------------------
 	Parameters.Add_Choice(
-		NULL	, "INTERPOLATION"	, _TL("Interpolation"),
+		NULL	, "RESAMPLING"		, _TL("Resampling"),
 		_TL(""),
-		CSG_String::Format(SG_T("%s|%s|%s|%s|%s|"),
-			_TL("Nearest Neigbhor"),
+		CSG_String::Format("%s|%s|%s|%s|",
+			_TL("Nearest Neighbour"),
 			_TL("Bilinear Interpolation"),
-			_TL("Inverse Distance Interpolation"),
 			_TL("Bicubic Spline Interpolation"),
 			_TL("B-Spline Interpolation")
-		), 4
+		), 3
 	);
 
 	Parameters.Add_Choice(
@@ -403,10 +402,20 @@ bool CDirect_Georeferencing::On_Execute(void)
 	}
 
 	//-----------------------------------------------------
-	CSG_Grid	*pDEM			= Parameters("DEM"          )->asGrid();
-	double		zRef			= Parameters("ZREF"         )->asDouble();
-	int			Interpolation	= Parameters("INTERPOLATION")->asInt();
-	bool		bFlip			= Parameters("ROW_ORDER"    )->asInt() == 1;
+	CSG_Grid	*pDEM	= Parameters("DEM"      )->asGrid();
+	double		zRef	= Parameters("ZREF"     )->asDouble();
+	bool		bFlip	= Parameters("ROW_ORDER")->asInt() == 1;
+
+	//-----------------------------------------------------
+	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;
+	}
 
 	//-----------------------------------------------------
 	TSG_Point	p[4];
@@ -524,7 +533,7 @@ bool CDirect_Georeferencing::On_Execute(void)
 
 			for(int i=0; i<pInput->Get_Count(); i++)
 			{
-				if( pInput->asGrid(i)->Get_Value(p.x, p.y, pz, Interpolation) )
+				if( pInput->asGrid(i)->Get_Value(p.x, p.y, pz, Resampling) )
 				{
 					pOutput->asGrid(i)->Set_Value(x, y, pz);
 				}
diff --git a/src/modules/projection/pj_georeference/direct_georeferencing.h b/src/modules/projection/pj_georeference/direct_georeferencing.h
old mode 100644
new mode 100755
diff --git a/src/modules/projection/pj_georeference/georef_grid_move.cpp b/src/modules/projection/pj_georeference/georef_grid_move.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/projection/pj_georeference/georef_grid_move.h b/src/modules/projection/pj_georeference/georef_grid_move.h
old mode 100644
new mode 100755
diff --git a/src/modules/projection/pj_georeference/set_grid_georeference.cpp b/src/modules/projection/pj_georeference/set_grid_georeference.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/projection/pj_georeference/set_grid_georeference.h b/src/modules/projection/pj_georeference/set_grid_georeference.h
old mode 100644
new mode 100755
diff --git a/src/modules/projection/pj_proj4/MLB_Interface.cpp b/src/modules/projection/pj_proj4/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/projection/pj_proj4/MLB_Interface.h b/src/modules/projection/pj_proj4/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/projection/pj_proj4/Makefile.am b/src/modules/projection/pj_proj4/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/projection/pj_proj4/PROJ4_Base.cpp b/src/modules/projection/pj_proj4/PROJ4_Base.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/projection/pj_proj4/PROJ4_Base.h b/src/modules/projection/pj_proj4/PROJ4_Base.h
old mode 100644
new mode 100755
diff --git a/src/modules/projection/pj_proj4/PROJ4_Grid.cpp b/src/modules/projection/pj_proj4/PROJ4_Grid.cpp
old mode 100644
new mode 100755
index 3cdaf32..f47cc1c
--- a/src/modules/projection/pj_proj4/PROJ4_Grid.cpp
+++ b/src/modules/projection/pj_proj4/PROJ4_Grid.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: PROJ4_Grid.cpp 2447 2015-03-19 14:43:42Z oconrad $
+ * Version $Id: PROJ4_Grid.cpp 2752 2016-01-15 15:26:55Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -128,15 +128,14 @@ CPROJ4_Grid::CPROJ4_Grid(int Interface, bool bInputList)
 
 	//-----------------------------------------------------
 	Parameters.Add_Choice(
-		Parameters("TARGET_NODE")	, "INTERPOLATION"	, _TL("Interpolation"),
+		Parameters("TARGET_NODE"), "RESAMPLING", _TL("Resampling"),
 		_TL(""),
-		CSG_String::Format(SG_T("%s|%s|%s|%s|%s|"),
-			_TL("Nearest Neigbhor"),
+		CSG_String::Format("%s|%s|%s|%s|",
+			_TL("Nearest Neighbour"),
 			_TL("Bilinear Interpolation"),
-			_TL("Inverse Distance Interpolation"),
 			_TL("Bicubic Spline Interpolation"),
 			_TL("B-Spline Interpolation")
-		), 4
+		), 3
 	);
 }
 
@@ -175,7 +174,13 @@ bool CPROJ4_Grid::On_Execute_Conversion(void)
 {
 	TSG_Rect	Extent;
 
-	m_Interpolation	= Parameters("INTERPOLATION")->asInt();
+	switch( Parameters("RESAMPLING")->asInt() )
+	{
+	default:	m_Resampling	= GRID_RESAMPLING_NearestNeighbour;	break;
+	case  1:	m_Resampling	= GRID_RESAMPLING_Bilinear;			break;
+	case  2:	m_Resampling	= GRID_RESAMPLING_BicubicSpline;	break;
+	case  3:	m_Resampling	= GRID_RESAMPLING_BSpline;			break;
+	}
 
 	//-----------------------------------------------------
 	if( m_bInputList )
@@ -207,7 +212,7 @@ bool CPROJ4_Grid::On_Execute_Conversion(void)
 
 			for(int i=0; i<pSources->Get_Count(); i++)
 			{
-				pTargets->Add_Item(SG_Create_Grid(System, m_Interpolation == 0 ? pSources->asGrid(i)->Get_Type() : SG_DATATYPE_Float));
+				pTargets->Add_Item(SG_Create_Grid(System, m_Resampling == 0 ? pSources->asGrid(i)->Get_Type() : SG_DATATYPE_Float));
 
 				Init_Target(pSources->asGrid(i), pTargets->asGrid(i));
 			}
@@ -231,7 +236,7 @@ bool CPROJ4_Grid::On_Execute_Conversion(void)
 			return( false );
 		}
 
-		CSG_Grid	*pTarget	= m_Grid_Target.Get_Grid(m_Interpolation == 0 ? pSource->Get_Type() : SG_DATATYPE_Float);
+		CSG_Grid	*pTarget	= m_Grid_Target.Get_Grid(m_Resampling == 0 ? pSource->Get_Type() : SG_DATATYPE_Float);
 
 		//-------------------------------------------------
 		if( pTarget )
@@ -284,7 +289,7 @@ bool CPROJ4_Grid::Set_Grids(CSG_Parameter_Grid_List *pSources, CSG_Parameter_Gri
 
 				for(i=0; i<pSources->Get_Count(); i++)
 				{
-					if( pSources->asGrid(i)->Get_Value(Pt_Source, z, m_Interpolation) )
+					if( pSources->asGrid(i)->Get_Value(Pt_Source, z, m_Resampling) )
 					{
 						pTargets->asGrid(i)->Set_Value(x, y, z);
 					}
@@ -331,7 +336,7 @@ bool CPROJ4_Grid::Set_Shapes(CSG_Parameter_Grid_List *pSources, CSG_Shapes *pTar
 
 						for(i=0; i<pSources->Get_Count(); i++)
 						{
-							if( pSources->asGrid(i)->Get_Value(Pt_Source, z, m_Interpolation) )
+							if( pSources->asGrid(i)->Get_Value(Pt_Source, z, m_Resampling) )
 							{
 								pShape->Set_Value(i, z);
 							}
@@ -382,7 +387,7 @@ bool CPROJ4_Grid::Set_Grid(CSG_Grid *pSource, CSG_Grid *pTarget)
 					if( pX )	pX->Set_Value(x, y, Pt_Source.x);
 					if( pY )	pY->Set_Value(x, y, Pt_Source.y);
 
-					if( pSource->Get_Value(Pt_Source, z, m_Interpolation) )
+					if( pSource->Get_Value(Pt_Source, z, m_Resampling) )
 					{
 						pTarget->Set_Value(x, y, z);
 					}
diff --git a/src/modules/projection/pj_proj4/PROJ4_Grid.h b/src/modules/projection/pj_proj4/PROJ4_Grid.h
old mode 100644
new mode 100755
index 0200b21..6bc2a31
--- a/src/modules/projection/pj_proj4/PROJ4_Grid.h
+++ b/src/modules/projection/pj_proj4/PROJ4_Grid.h
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: PROJ4_Grid.h 2212 2014-09-01 13:29:48Z oconrad $
+ * Version $Id: PROJ4_Grid.h 2752 2016-01-15 15:26:55Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -93,7 +93,7 @@ protected:
 
 private:
 
-	int							m_Interpolation;
+	TSG_Grid_Resampling			m_Resampling;
 
 	CSG_Parameters_Grid_Target	m_Grid_Target;
 
diff --git a/src/modules/projection/pj_proj4/PROJ4_Shapes.cpp b/src/modules/projection/pj_proj4/PROJ4_Shapes.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/projection/pj_proj4/PROJ4_Shapes.h b/src/modules/projection/pj_proj4/PROJ4_Shapes.h
old mode 100644
new mode 100755
diff --git a/src/modules/projection/pj_proj4/crs_assign.cpp b/src/modules/projection/pj_proj4/crs_assign.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/projection/pj_proj4/crs_assign.h b/src/modules/projection/pj_proj4/crs_assign.h
old mode 100644
new mode 100755
diff --git a/src/modules/projection/pj_proj4/crs_base.cpp b/src/modules/projection/pj_proj4/crs_base.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/projection/pj_proj4/crs_base.h b/src/modules/projection/pj_proj4/crs_base.h
old mode 100644
new mode 100755
diff --git a/src/modules/projection/pj_proj4/crs_distance.cpp b/src/modules/projection/pj_proj4/crs_distance.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/projection/pj_proj4/crs_distance.h b/src/modules/projection/pj_proj4/crs_distance.h
old mode 100644
new mode 100755
diff --git a/src/modules/projection/pj_proj4/crs_grid_geogcoords.cpp b/src/modules/projection/pj_proj4/crs_grid_geogcoords.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/projection/pj_proj4/crs_grid_geogcoords.h b/src/modules/projection/pj_proj4/crs_grid_geogcoords.h
old mode 100644
new mode 100755
diff --git a/src/modules/projection/pj_proj4/crs_indicatrix.cpp b/src/modules/projection/pj_proj4/crs_indicatrix.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/projection/pj_proj4/crs_indicatrix.h b/src/modules/projection/pj_proj4/crs_indicatrix.h
old mode 100644
new mode 100755
diff --git a/src/modules/projection/pj_proj4/crs_transform.cpp b/src/modules/projection/pj_proj4/crs_transform.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/projection/pj_proj4/crs_transform.h b/src/modules/projection/pj_proj4/crs_transform.h
old mode 100644
new mode 100755
diff --git a/src/modules/projection/pj_proj4/crs_transform_grid.cpp b/src/modules/projection/pj_proj4/crs_transform_grid.cpp
old mode 100644
new mode 100755
index 3b73f26..08c7ba9
--- a/src/modules/projection/pj_proj4/crs_transform_grid.cpp
+++ b/src/modules/projection/pj_proj4/crs_transform_grid.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: crs_transform_grid.cpp 2334 2014-11-11 15:29:33Z oconrad $
+ * Version $Id: crs_transform_grid.cpp 2752 2016-01-15 15:26:55Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -124,15 +124,14 @@ CCRS_Transform_Grid::CCRS_Transform_Grid(bool bList)
 
 	//-----------------------------------------------------
 	Parameters.Add_Choice(
-		pNode	, "INTERPOLATION"	, _TL("Interpolation"),
+		NULL	, "RESAMPLING"	, _TL("Resampling"),
 		_TL(""),
-		CSG_String::Format(SG_T("%s|%s|%s|%s|%s|"),
-			_TL("Nearest Neigbhor"),
+		CSG_String::Format("%s|%s|%s|%s|",
+			_TL("Nearest Neighbour"),
 			_TL("Bilinear Interpolation"),
-			_TL("Inverse Distance Interpolation"),
 			_TL("Bicubic Spline Interpolation"),
 			_TL("B-Spline Interpolation")
-		), 4
+		), 3
 	);
 
 	Parameters.Add_Value(
@@ -178,7 +177,13 @@ int CCRS_Transform_Grid::On_Parameters_Enable(CSG_Parameters *pParameters, CSG_P
 //---------------------------------------------------------
 bool CCRS_Transform_Grid::On_Execute_Transformation(void)
 {
-	m_Interpolation	= Parameters("INTERPOLATION")->asInt();
+	switch( Parameters("RESAMPLING")->asInt() )
+	{
+	default:	m_Resampling	= GRID_RESAMPLING_NearestNeighbour;	break;
+	case  1:	m_Resampling	= GRID_RESAMPLING_Bilinear;			break;
+	case  2:	m_Resampling	= GRID_RESAMPLING_BicubicSpline;	break;
+	case  3:	m_Resampling	= GRID_RESAMPLING_BSpline;			break;
+	}
 
 	//-----------------------------------------------------
 	if( m_bList )
@@ -250,7 +255,7 @@ bool CCRS_Transform_Grid::Transform(CSG_Grid *pGrid)
 	if( pGrid->Get_Projection().is_Okay() && m_Projector.Set_Source(pGrid->Get_Projection())
 	&&  Get_Target_System(pGrid->Get_System(), true) )
 	{
-		TSG_Data_Type	Type	= m_Interpolation == 0 || Parameters("KEEP_TYPE")->asBool() ? pGrid->Get_Type() : SG_DATATYPE_Float;
+		TSG_Data_Type	Type	= m_Resampling == GRID_RESAMPLING_NearestNeighbour || Parameters("KEEP_TYPE")->asBool() ? pGrid->Get_Type() : SG_DATATYPE_Float;
 
 		return( Transform(pGrid, m_Grid_Target.Get_Grid("GRID", Type)) );
 	}
@@ -335,7 +340,7 @@ bool CCRS_Transform_Grid::Transform(CSG_Grid *pGrid, CSG_Grid *pTarget)
 					xSource	+= 360.0;
 				}
 
-				if( pGrid->Get_Value(xSource, ySource, z, m_Interpolation) )
+				if( pGrid->Get_Value(xSource, ySource, z, m_Resampling) )
 				{
 					pTarget->Set_Value(x, y, z);
 				}
@@ -385,7 +390,7 @@ bool CCRS_Transform_Grid::Transform(CSG_Parameter_Grid_List *pSources, CSG_Param
 	for(i=0; i<pSources->Get_Count(); i++)
 	{
 		CSG_Grid	*pSource	= pSources->asGrid(i);
-		CSG_Grid	*pTarget	= SG_Create_Grid(Target_System, m_Interpolation == 0 ? pSource->Get_Type() : SG_DATATYPE_Float);
+		CSG_Grid	*pTarget	= SG_Create_Grid(Target_System, m_Resampling == GRID_RESAMPLING_NearestNeighbour ? pSource->Get_Type() : SG_DATATYPE_Float);
 
 		if( pTarget )
 		{
@@ -422,7 +427,7 @@ bool CCRS_Transform_Grid::Transform(CSG_Parameter_Grid_List *pSources, CSG_Param
 
 				for(i=0; i<pTargets->Get_Count(); i++)
 				{
-					if( pSources->asGrid(i)->Get_Value(xSource, ySource, z, m_Interpolation) )
+					if( pSources->asGrid(i)->Get_Value(xSource, ySource, z, m_Resampling) )
 					{
 						pTargets->asGrid(n + i)->Set_Value(x, y, z);
 					}
diff --git a/src/modules/projection/pj_proj4/crs_transform_grid.h b/src/modules/projection/pj_proj4/crs_transform_grid.h
old mode 100644
new mode 100755
index 0950fba..862885c
--- a/src/modules/projection/pj_proj4/crs_transform_grid.h
+++ b/src/modules/projection/pj_proj4/crs_transform_grid.h
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: crs_transform_grid.h 2212 2014-09-01 13:29:48Z oconrad $
+ * Version $Id: crs_transform_grid.h 2752 2016-01-15 15:26:55Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -91,7 +91,7 @@ private:
 
 	bool						m_bList;
 
-	int							m_Interpolation;
+	TSG_Grid_Resampling			m_Resampling;
 
 	CSG_Parameters_Grid_Target	m_Grid_Target;
 
diff --git a/src/modules/projection/pj_proj4/crs_transform_pointcloud.cpp b/src/modules/projection/pj_proj4/crs_transform_pointcloud.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/projection/pj_proj4/crs_transform_pointcloud.h b/src/modules/projection/pj_proj4/crs_transform_pointcloud.h
old mode 100644
new mode 100755
diff --git a/src/modules/projection/pj_proj4/crs_transform_shapes.cpp b/src/modules/projection/pj_proj4/crs_transform_shapes.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/projection/pj_proj4/crs_transform_shapes.h b/src/modules/projection/pj_proj4/crs_transform_shapes.h
old mode 100644
new mode 100755
diff --git a/src/modules/projection/pj_proj4/gcs_graticule.cpp b/src/modules/projection/pj_proj4/gcs_graticule.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/projection/pj_proj4/gcs_graticule.h b/src/modules/projection/pj_proj4/gcs_graticule.h
old mode 100644
new mode 100755
diff --git a/src/modules/projection/pj_proj4/gcs_lon_range.cpp b/src/modules/projection/pj_proj4/gcs_lon_range.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/projection/pj_proj4/gcs_lon_range.h b/src/modules/projection/pj_proj4/gcs_lon_range.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/Makefile.am b/src/modules/shapes/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_grid/Grid_Classes_To_Shapes.cpp b/src/modules/shapes/shapes_grid/Grid_Classes_To_Shapes.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_grid/Grid_Classes_To_Shapes.h b/src/modules/shapes/shapes_grid/Grid_Classes_To_Shapes.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_grid/Grid_Polygon_Clip.cpp b/src/modules/shapes/shapes_grid/Grid_Polygon_Clip.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_grid/Grid_Polygon_Clip.h b/src/modules/shapes/shapes_grid/Grid_Polygon_Clip.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_grid/Grid_Statistics_AddTo_Polygon.cpp b/src/modules/shapes/shapes_grid/Grid_Statistics_AddTo_Polygon.cpp
old mode 100644
new mode 100755
index 475e82b..3398f2e
--- a/src/modules/shapes/shapes_grid/Grid_Statistics_AddTo_Polygon.cpp
+++ b/src/modules/shapes/shapes_grid/Grid_Statistics_AddTo_Polygon.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: Grid_Statistics_AddTo_Polygon.cpp 2443 2015-03-18 19:52:26Z oconrad $
+ * Version $Id: Grid_Statistics_AddTo_Polygon.cpp 2803 2016-02-19 16:34:27Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -100,15 +100,6 @@ CGrid_Statistics_AddTo_Polygon::CGrid_Statistics_AddTo_Polygon(void)
 	);
 
 	Parameters.Add_Choice(
-		NULL	, "METHOD"		, _TL("Method"),
-		_TL(""),
-		CSG_String::Format("%s|%s|",
-			_TL("standard"),
-			_TL("shape wise, supports overlapping polygons")
-		), 0
-	);
-
-	Parameters.Add_Choice(
 		NULL	, "NAMING"		, _TL("Field Naming"),
 		_TL(""),
 		CSG_String::Format("%s|%s|",
@@ -117,6 +108,23 @@ CGrid_Statistics_AddTo_Polygon::CGrid_Statistics_AddTo_Polygon(void)
 		), 1
 	);
 
+	Parameters.Add_Choice(
+		NULL	, "METHOD"		, _TL("Method"),
+		_TL(""),
+		CSG_String::Format("%s|%s|%s|%s|",
+			_TL("simple and fast"),
+			_TL("polygon wise (cell centers)"),
+			_TL("polygon wise (cell area)"),
+			_TL("polygon wise (cell area weighted)")
+		), 0
+	);
+
+	Parameters.Add_Bool(
+		NULL	, "PARALLELIZED"	, _TL("Use Multiple Cores"),
+		_TL(""),
+		false
+	);
+
 	//-----------------------------------------------------
 	CSG_Parameter	*pNode	= Parameters.Add_Shapes(
 		NULL	, "RESULT"		, _TL("Statistics"),
@@ -141,7 +149,21 @@ CGrid_Statistics_AddTo_Polygon::CGrid_Statistics_AddTo_Polygon(void)
 
 ///////////////////////////////////////////////////////////
 //														 //
-//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+int CGrid_Statistics_AddTo_Polygon::On_Parameters_Enable(CSG_Parameters *pParameters, CSG_Parameter *pParameter)
+{
+	if( !SG_STR_CMP(pParameter->Get_Identifier(), "METHOD") )
+	{
+		pParameters->Set_Enabled("PARALLELIZED", pParameter->asInt() != 0 && SG_OMP_Get_Max_Num_Threads() > 1);
+	}
+
+	return( CSG_Module_Grid::On_Parameters_Enable(pParameters, pParameter) );
+}
+
+
+///////////////////////////////////////////////////////////
 //														 //
 ///////////////////////////////////////////////////////////
 
@@ -200,10 +222,16 @@ bool CGrid_Statistics_AddTo_Polygon::On_Execute(void)
 	}
 
 	//-----------------------------------------------------
-	int	Naming	= Parameters("NAMING")->asInt();
-	int	Method	= Parameters("METHOD")->asInt();
+	bool	bParallelized	= Parameters("PARALLELIZED")->is_Enabled() && Parameters("PARALLELIZED")->asBool();
+
+	int		Naming			= Parameters("NAMING")->asInt();
 
-	if( Method == 0 && !Get_Index(pPolygons) )
+	int		Method			= Parameters("METHOD")->asInt();
+
+	//-----------------------------------------------------
+	CSG_Grid	Index;
+
+	if( Method == 0 && !Get_Simple_Index(pPolygons, Index) )
 	{
 		Error_Set(_TL("no grids in selection"));
 
@@ -225,8 +253,8 @@ bool CGrid_Statistics_AddTo_Polygon::On_Execute(void)
 	{
 		Process_Set_Text(CSG_String::Format("[%d/%d] %s", 1 + iGrid, pGrids->Get_Count(), pGrids->asGrid(iGrid)->Get_Name()));
 
-		if( (Method == 0 && Get_Statistics    (pGrids->asGrid(iGrid), pPolygons, Statistics, Quantile > 0))
-		||  (Method == 1 && Get_Statistics_Alt(pGrids->asGrid(iGrid), pPolygons, Statistics, Quantile > 0)) )
+		if( (Method == 0 && Get_Simple (pGrids->asGrid(iGrid), pPolygons, Statistics, Quantile > 0, Index))
+		||  (Method != 0 && Get_Precise(pGrids->asGrid(iGrid), pPolygons, Statistics, Quantile > 0, bParallelized)) )
 		{
 			nFields	= pPolygons->Get_Field_Count();
 
@@ -302,28 +330,26 @@ bool CGrid_Statistics_AddTo_Polygon::On_Execute(void)
 
 ///////////////////////////////////////////////////////////
 //														 //
-//														 //
-//														 //
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
-bool CGrid_Statistics_AddTo_Polygon::Get_Statistics(CSG_Grid *pGrid, CSG_Shapes *pPolygons, CSG_Simple_Statistics *Statistics, bool bQuantiles)
+bool CGrid_Statistics_AddTo_Polygon::Get_Precise(CSG_Grid *pGrid, CSG_Shapes *pPolygons, CSG_Simple_Statistics *Statistics, bool bQuantiles, bool bParallelized)
 {
-	int		i;
+	int	Method	= Parameters("METHOD")->asInt();
 
-	for(i=0; i<pPolygons->Get_Count(); i++)
+	if( bParallelized )
 	{
-		Statistics[i].Create(bQuantiles);
+		#pragma omp parallel for
+		for(int i=0; i<pPolygons->Get_Count(); i++)
+		{
+			Get_Precise(pGrid, (CSG_Shape_Polygon *)pPolygons->Get_Shape(i), Statistics[i], bQuantiles, Method);
+		}
 	}
-
-	for(int y=0; y<Get_NY() && Set_Progress(y); y++)
+	else
 	{
-		for(int x=0; x<Get_NX(); x++)
+		for(int i=0; i<pPolygons->Get_Count() && Set_Progress(i, pPolygons->Get_Count()); i++)
 		{
-			if( (i = m_Index.asInt(x, y)) >= 0 && i < pPolygons->Get_Count() )
-			{
-				Statistics[i]	+= pGrid->asDouble(x, y);
-			}
+			Get_Precise(pGrid, (CSG_Shape_Polygon *)pPolygons->Get_Shape(i), Statistics[i], bQuantiles, Method);
 		}
 	}
 
@@ -331,30 +357,84 @@ bool CGrid_Statistics_AddTo_Polygon::Get_Statistics(CSG_Grid *pGrid, CSG_Shapes
 }
 
 //---------------------------------------------------------
-bool CGrid_Statistics_AddTo_Polygon::Get_Statistics_Alt(CSG_Grid *pGrid, CSG_Shapes *pPolygons, CSG_Simple_Statistics *Statistics, bool bQuantiles)
+bool CGrid_Statistics_AddTo_Polygon::Get_Precise(CSG_Grid *pGrid, CSG_Shape_Polygon *pPolygon, CSG_Simple_Statistics &Statistics, bool bQuantiles, int Method)
 {
-	for(int i=0; i<pPolygons->Get_Count() && Set_Progress(i, pPolygons->Get_Count()); i++)
+	//-----------------------------------------------------
+	CSG_Shapes	Intersect(SHAPE_TYPE_Polygon);
+
+	CSG_Shape_Polygon	*pCell, *pArea;
+
+	if( Method == 3 )	// polygon wise (cell area weighted)
 	{
-		Statistics[i].Create(bQuantiles);
+		pCell	= (CSG_Shape_Polygon *)Intersect.Add_Shape();
+		pArea	= (CSG_Shape_Polygon *)Intersect.Add_Shape();
+	}
 
-		CSG_Shape_Polygon	*pPolygon	= (CSG_Shape_Polygon *)pPolygons->Get_Shape(i);
+	//-----------------------------------------------------
+	Statistics.Create(bQuantiles);
 
-		int	ax	= Get_System()->Get_xWorld_to_Grid(pPolygons->Get_Extent().Get_XMin()) - 1;	if( ax < 0         )	ax	= 0;
-		int	bx	= Get_System()->Get_xWorld_to_Grid(pPolygons->Get_Extent().Get_XMax()) + 1;	if( bx >= Get_NX() )	bx	= Get_NX() - 1;
-		int	ay	= Get_System()->Get_yWorld_to_Grid(pPolygons->Get_Extent().Get_YMin()) - 1;	if( ay < 0         )	ay	= 0;
-		int	by	= Get_System()->Get_yWorld_to_Grid(pPolygons->Get_Extent().Get_YMax()) + 1;	if( by >= Get_NY() )	by	= Get_NY() - 1;
+	int	ax	= Get_System()->Get_xWorld_to_Grid(pPolygon->Get_Extent().Get_XMin()) - 1;	if( ax < 0         )	ax	= 0;
+	int	bx	= Get_System()->Get_xWorld_to_Grid(pPolygon->Get_Extent().Get_XMax()) + 1;	if( bx >= Get_NX() )	bx	= Get_NX() - 1;
+	int	ay	= Get_System()->Get_yWorld_to_Grid(pPolygon->Get_Extent().Get_YMin()) - 1;	if( ay < 0         )	ay	= 0;
+	int	by	= Get_System()->Get_yWorld_to_Grid(pPolygon->Get_Extent().Get_YMax()) + 1;	if( by >= Get_NY() )	by	= Get_NY() - 1;
 
-		double	py	= Get_System()->Get_yGrid_to_World(ay);
+	TSG_Point	Center;
+	TSG_Rect	Cell;
 
-		for(int y=ay; y<=by; y++, py+=Get_Cellsize())
-		{
-			double	px	= Get_System()->Get_xGrid_to_World(ax);
+	//-----------------------------------------------------
+	Center.y	= Get_System()->Get_yGrid_to_World(ay);
+	Cell.yMin	= Center.y - 0.5 * Get_Cellsize();
+	Cell.yMax	= Cell.yMin + Get_Cellsize();
+		
+	for(int y=ay; y<=by; y++, Center.y+=Get_Cellsize(), Cell.yMin+=Get_Cellsize(), Cell.yMax+=Get_Cellsize())
+	{
+		Center.x	= Get_System()->Get_xGrid_to_World(ax);
+		Cell.xMin	= Center.x - 0.5 * Get_Cellsize();
+		Cell.xMax	= Cell.xMin + Get_Cellsize();
 
-			for(int x=ax; x<=bx; x++, px+=Get_Cellsize())
+		for(int x=ax; x<=bx; x++, Center.x+=Get_Cellsize(), Cell.xMin+=Get_Cellsize(), Cell.xMax+=Get_Cellsize())
+		{
+			if( !pGrid->is_NoData(x, y) )
 			{
-				if( !pGrid->is_NoData(x, y) && pPolygon->Contains(px, py) )
+				switch( Method )
 				{
-					Statistics[i]	+= pGrid->asDouble(x, y);
+				//-----------------------------------------
+				default:	// polygon wise (cell centers)
+					if( pPolygon->Contains(Center) )
+					{
+						Statistics	+= pGrid->asDouble(x, y);
+					}
+					break;
+
+				//-----------------------------------------
+				case  2:	// polygon wise (cell area)
+					if( pPolygon->Intersects(Cell) )
+					{
+						Statistics	+= pGrid->asDouble(x, y);
+					}
+					break;
+
+				//-----------------------------------------
+				case  3:	// polygon wise (cell area weighted)
+					switch( pPolygon->Intersects(Cell) )
+					{
+					case INTERSECTION_None     :	break;
+					case INTERSECTION_Identical:
+					case INTERSECTION_Contains :	Statistics.Add_Value(pGrid->asDouble(x, y),       Get_Cellarea());	break;
+					case INTERSECTION_Contained:	Statistics.Add_Value(pGrid->asDouble(x, y), pPolygon->Get_Area());	break;
+					case INTERSECTION_Overlaps :
+						pCell->Del_Parts();
+
+						pCell->Add_Point(Cell.xMin, Cell.yMin);	pCell->Add_Point(Cell.xMin, Cell.yMax);
+						pCell->Add_Point(Cell.xMax, Cell.yMax);	pCell->Add_Point(Cell.xMax, Cell.yMin);
+
+						if( SG_Polygon_Intersection(pPolygon, pCell, pArea) )
+						{
+							Statistics.Add_Value(pGrid->asDouble(x, y), pArea->Get_Area());
+						}
+						break;
+					}
+					break;
 				}
 			}
 		}
@@ -366,12 +446,34 @@ bool CGrid_Statistics_AddTo_Polygon::Get_Statistics_Alt(CSG_Grid *pGrid, CSG_Sha
 
 ///////////////////////////////////////////////////////////
 //														 //
-//														 //
-//														 //
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
-bool CGrid_Statistics_AddTo_Polygon::Get_Index(CSG_Shapes *pPolygons)
+bool CGrid_Statistics_AddTo_Polygon::Get_Simple(CSG_Grid *pGrid, CSG_Shapes *pPolygons, CSG_Simple_Statistics *Statistics, bool bQuantiles, CSG_Grid &Index)
+{
+	int		i;
+
+	for(i=0; i<pPolygons->Get_Count(); i++)
+	{
+		Statistics[i].Create(bQuantiles);
+	}
+
+	for(int y=0; y<Get_NY() && Set_Progress(y); y++)
+	{
+		for(int x=0; x<Get_NX(); x++)
+		{
+			if( !pGrid->is_NoData(x, y) && (i = Index.asInt(x, y)) >= 0 && i < pPolygons->Get_Count() )
+			{
+				Statistics[i]	+= pGrid->asDouble(x, y);
+			}
+		}
+	}
+
+	return( true );
+}
+
+//---------------------------------------------------------
+bool CGrid_Statistics_AddTo_Polygon::Get_Simple_Index(CSG_Shapes *pPolygons, CSG_Grid &Index)
 {
 	bool		bFill, *bCrossing;
 	int			x, y, ix, xStart, xStop, iShape, iPart, iPoint;
@@ -381,15 +483,15 @@ bool CGrid_Statistics_AddTo_Polygon::Get_Index(CSG_Shapes *pPolygons)
 	CSG_Shape	*pPolygon;
 
 	//-----------------------------------------------------
-	m_Index.Create(*Get_System(), pPolygons->Get_Count() < 32767 ? SG_DATATYPE_Short : SG_DATATYPE_Int);
-	m_Index.Assign(-1.0);
+	Index.Create(*Get_System(), pPolygons->Get_Count() < 32767 ? SG_DATATYPE_Short : SG_DATATYPE_Int);
+	Index.Assign(-1.0);
 
 	bCrossing	= (bool *)SG_Malloc(Get_NX() * sizeof(bool));
 
 	//-----------------------------------------------------
 	for(iShape=0; iShape<pPolygons->Get_Count() && Set_Progress(iShape, pPolygons->Get_Count()); iShape++)
 	{
-		pPolygon		= pPolygons->Get_Shape(iShape);
+		pPolygon	= pPolygons->Get_Shape(iShape);
 		Extent		= pPolygon->Get_Extent().m_rect;
 
 		xStart		= Get_System()->Get_xWorld_to_Grid(Extent.xMin) - 1;	if( xStart < 0 )		xStart	= 0;
@@ -448,7 +550,7 @@ bool CGrid_Statistics_AddTo_Polygon::Get_Index(CSG_Shapes *pPolygons)
 
 					if( bFill )
 					{
-						m_Index.Set_Value(x, y, iShape);
+						Index.Set_Value(x, y, iShape);
 					}
 				}
 			}
diff --git a/src/modules/shapes/shapes_grid/Grid_Statistics_AddTo_Polygon.h b/src/modules/shapes/shapes_grid/Grid_Statistics_AddTo_Polygon.h
old mode 100644
new mode 100755
index 6fe3ae9..19370e4
--- a/src/modules/shapes/shapes_grid/Grid_Statistics_AddTo_Polygon.h
+++ b/src/modules/shapes/shapes_grid/Grid_Statistics_AddTo_Polygon.h
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: Grid_Statistics_AddTo_Polygon.h 2443 2015-03-18 19:52:26Z oconrad $
+ * Version $Id: Grid_Statistics_AddTo_Polygon.h 2803 2016-02-19 16:34:27Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -87,23 +87,23 @@ class CGrid_Statistics_AddTo_Polygon : public CSG_Module_Grid
 public:
 	CGrid_Statistics_AddTo_Polygon(void);
 
-	virtual CSG_String		Get_MenuPath		(void)	{	return( _TL("R:Grid Values") );	}
+	virtual CSG_String		Get_MenuPath			(void)	{	return( _TL("R:Grid Values") );	}
 
 
 protected:
 
-	virtual bool			On_Execute			(void);
+	virtual int				On_Parameters_Enable	(CSG_Parameters *pParameters, CSG_Parameter *pParameter);
 
+	virtual bool			On_Execute				(void);
 
-private:
-
-	CSG_Grid				m_Index;
 
+private:
 
-	bool					Get_Statistics		(CSG_Grid *pGrid, CSG_Shapes *pPolygons, CSG_Simple_Statistics *Statistics, bool bQuantiles);
-	bool					Get_Statistics_Alt	(CSG_Grid *pGrid, CSG_Shapes *pPolygons, CSG_Simple_Statistics *Statistics, bool bQuantiles);
+	bool					Get_Simple				(CSG_Grid *pGrid, CSG_Shapes *pPolygons, CSG_Simple_Statistics *Statistics, bool bQuantiles, CSG_Grid &Index);
+	bool					Get_Simple_Index		(CSG_Shapes *pPolygons, CSG_Grid &Index);
 
-	bool					Get_Index			(CSG_Shapes *pPolygons);
+	bool					Get_Precise				(CSG_Grid *pGrid, CSG_Shapes *pPolygons, CSG_Simple_Statistics *Statistics, bool bQuantiles, bool bParallelized);
+	bool					Get_Precise				(CSG_Grid *pGrid, CSG_Shape_Polygon *pPolygon, CSG_Simple_Statistics &Statistics, bool bQuantiles, int Method);
 
 };
 
diff --git a/src/modules/shapes/shapes_grid/Grid_Statistics_For_Points.cpp b/src/modules/shapes/shapes_grid/Grid_Statistics_For_Points.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_grid/Grid_Statistics_For_Points.h b/src/modules/shapes/shapes_grid/Grid_Statistics_For_Points.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_grid/Grid_To_Contour.cpp b/src/modules/shapes/shapes_grid/Grid_To_Contour.cpp
old mode 100644
new mode 100755
index 9cc84f7..e5a51b0
--- a/src/modules/shapes/shapes_grid/Grid_To_Contour.cpp
+++ b/src/modules/shapes/shapes_grid/Grid_To_Contour.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: Grid_To_Contour.cpp 2487 2015-05-06 12:06:58Z reklov_w $
+ * Version $Id: Grid_To_Contour.cpp 2752 2016-01-15 15:26:55Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -272,7 +272,7 @@ bool CGrid_To_Contour::On_Execute(void)
 			return( false );
 		}
 
-		Grid.Assign(m_pGrid, GRID_INTERPOLATION_BSpline);
+		Grid.Assign(m_pGrid, GRID_RESAMPLING_BSpline);
 
 		m_pGrid	= &Grid;
 	}
diff --git a/src/modules/shapes/shapes_grid/Grid_To_Contour.h b/src/modules/shapes/shapes_grid/Grid_To_Contour.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_grid/Grid_To_Gradient.cpp b/src/modules/shapes/shapes_grid/Grid_To_Gradient.cpp
old mode 100644
new mode 100755
index 98e6130..cb77867
--- a/src/modules/shapes/shapes_grid/Grid_To_Gradient.cpp
+++ b/src/modules/shapes/shapes_grid/Grid_To_Gradient.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: Grid_To_Gradient.cpp 1921 2014-01-09 10:24:11Z oconrad $
+ * Version $Id: Grid_To_Gradient.cpp 2752 2016-01-15 15:26:55Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -189,7 +189,7 @@ bool CGrid_To_Gradient::On_Execute(void)
 	int						x, y, Step;
 	double					sMin, sRange, ex, ey, d;
 	TSG_Point				p;
-	TSG_Grid_Interpolation	Interpolation;
+	TSG_Grid_Resampling	Interpolation;
 	CSG_Grid_System			System;
 	CSG_Grid				EX, EY, D;
 	CSG_Shapes				*pVectors;
@@ -200,7 +200,7 @@ bool CGrid_To_Gradient::On_Execute(void)
 	m_Style			= Parameters("STYLE")	->asInt();
 	sMin			= Parameters("SIZE")	->asRange()->Get_LoVal() * Step * Get_Cellsize() / 100.0;
 	sRange			= Parameters("SIZE")	->asRange()->Get_HiVal() * Step * Get_Cellsize() / 100.0 - sMin;
-	Interpolation	= Parameters("AGGR")	->asInt() == 0 ? GRID_INTERPOLATION_NearestNeighbour : GRID_INTERPOLATION_Mean_Cells;
+	Interpolation	= Parameters("AGGR")	->asInt() == 0 ? GRID_RESAMPLING_NearestNeighbour : GRID_RESAMPLING_Mean_Cells;
 
 	//-----------------------------------------------------
 	if( Step > Get_NX() || Step > Get_NY() )
diff --git a/src/modules/shapes/shapes_grid/Grid_To_Gradient.h b/src/modules/shapes/shapes_grid/Grid_To_Gradient.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_grid/Grid_To_Points.cpp b/src/modules/shapes/shapes_grid/Grid_To_Points.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_grid/Grid_To_Points.h b/src/modules/shapes/shapes_grid/Grid_To_Points.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_grid/Grid_To_Points_Random.cpp b/src/modules/shapes/shapes_grid/Grid_To_Points_Random.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_grid/Grid_To_Points_Random.h b/src/modules/shapes/shapes_grid/Grid_To_Points_Random.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_grid/Grid_Values_AddTo_Points.cpp b/src/modules/shapes/shapes_grid/Grid_Values_AddTo_Points.cpp
old mode 100644
new mode 100755
index 4d17c08..fc20613
--- a/src/modules/shapes/shapes_grid/Grid_Values_AddTo_Points.cpp
+++ b/src/modules/shapes/shapes_grid/Grid_Values_AddTo_Points.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: Grid_Values_AddTo_Points.cpp 1921 2014-01-09 10:24:11Z oconrad $
+ * Version $Id: Grid_Values_AddTo_Points.cpp 2752 2016-01-15 15:26:55Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -104,15 +104,14 @@ CGrid_Values_AddTo_Points::CGrid_Values_AddTo_Points(void)
 	);
 
 	Parameters.Add_Choice(
-		NULL	, "INTERPOL"	, _TL("Interpolation"),
+		NULL	, "RESAMPLING"	, _TL("Resampling"),
 		_TL(""),
-		CSG_String::Format(SG_T("%s|%s|%s|%s|%s|"),
-			_TL("Nearest Neighbor"),
+		CSG_String::Format("%s|%s|%s|%s|",
+			_TL("Nearest Neighbour"),
 			_TL("Bilinear Interpolation"),
-			_TL("Inverse Distance Interpolation"),
 			_TL("Bicubic Spline Interpolation"),
 			_TL("B-Spline Interpolation")
-		), 4
+		), 3
 	);
 }
 
@@ -126,15 +125,14 @@ CGrid_Values_AddTo_Points::CGrid_Values_AddTo_Points(void)
 //---------------------------------------------------------
 bool CGrid_Values_AddTo_Points::On_Execute(void)
 {
-	int						iShape, iGrid, iField, Offset, Interpolation;
+	int						iShape, iGrid, iField, Offset;
 	double					Value;
 	CSG_Shapes				*pShapes;
 	CSG_Parameter_Grid_List	*pGrids;
 
 	//-----------------------------------------------------
-	pShapes			= Parameters("RESULT")		->asShapes();
-	pGrids			= Parameters("GRIDS" )		->asGridList();
-	Interpolation	= Parameters("INTERPOL")	->asInt();
+	pShapes			= Parameters("RESULT")->asShapes();
+	pGrids			= Parameters("GRIDS" )->asGridList();
 
 	//-----------------------------------------------------
 	if( pGrids->Get_Count() <= 0 )
@@ -161,6 +159,17 @@ bool CGrid_Values_AddTo_Points::On_Execute(void)
 	}
 
 	//-----------------------------------------------------
+	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;
+	}
+
+	//-----------------------------------------------------
 	for(iShape=0; iShape<pShapes->Get_Count() && Set_Progress(iShape, pShapes->Get_Count()); iShape++)
 	{
 		CSG_Shape	*pShape	= pShapes->Get_Shape(iShape);
@@ -169,7 +178,7 @@ bool CGrid_Values_AddTo_Points::On_Execute(void)
 		{
 			CSG_Grid	*pGrid	= pGrids->asGrid(iGrid);
 
-			if( pGrid->Get_Value(pShape->Get_Point(0), Value, Interpolation) )
+			if( pGrid->Get_Value(pShape->Get_Point(0), Value, Resampling) )
 			{
 				pShape->Set_Value(iField, Value);
 			}
diff --git a/src/modules/shapes/shapes_grid/Grid_Values_AddTo_Points.h b/src/modules/shapes/shapes_grid/Grid_Values_AddTo_Points.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_grid/Grid_Values_AddTo_Shapes.cpp b/src/modules/shapes/shapes_grid/Grid_Values_AddTo_Shapes.cpp
old mode 100644
new mode 100755
index 4f9f069..af51272
--- a/src/modules/shapes/shapes_grid/Grid_Values_AddTo_Shapes.cpp
+++ b/src/modules/shapes/shapes_grid/Grid_Values_AddTo_Shapes.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: Grid_Values_AddTo_Shapes.cpp 1921 2014-01-09 10:24:11Z oconrad $
+ * Version $Id: Grid_Values_AddTo_Shapes.cpp 2752 2016-01-15 15:26:55Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -107,45 +107,40 @@ CGrid_Values_AddTo_Shapes::CGrid_Values_AddTo_Shapes(void)
 	);
 
 	Parameters.Add_Choice(
-		NULL	, "INTERPOL"	, _TL("Interpolation"),
+		NULL	, "RESAMPLING"		, _TL("Resampling"),
 		_TL(""),
-		CSG_String::Format(SG_T("%s|%s|%s|%s|%s|"),
-			_TL("Nearest Neighbor"),
+		CSG_String::Format("%s|%s|%s|%s|",
+			_TL("Nearest Neighbour"),
 			_TL("Bilinear Interpolation"),
-			_TL("Inverse Distance Interpolation"),
 			_TL("Bicubic Spline Interpolation"),
 			_TL("B-Spline Interpolation")
-		), 4
+		), 3
 	);
 }
 
 
 ///////////////////////////////////////////////////////////
 //														 //
-//														 //
-//														 //
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
 int CGrid_Values_AddTo_Shapes::On_Parameters_Enable(CSG_Parameters *pParameters, CSG_Parameter *pParameter)
 {
-	if(	!SG_STR_CMP(pParameter->Get_Identifier(), SG_T("SHAPES")) )
+	if(	!SG_STR_CMP(pParameter->Get_Identifier(), "SHAPES") )
 	{
-		pParameters->Get_Parameter("INTERPOL")->Set_Enabled(pParameter->asShapes() && 
+		pParameters->Set_Enabled("RESAMPLING", pParameter->asShapes() && 
 			(  pParameter->asShapes()->Get_Type() == SHAPE_TYPE_Point
 			|| pParameter->asShapes()->Get_Type() == SHAPE_TYPE_Points
 			|| pParameter->asShapes()->Get_Type() == SHAPE_TYPE_Line
 		));
 	}
 
-	return( 1 );
+	return( CSG_Module::On_Parameters_Enable(pParameters, pParameter) );
 }
 
 
 ///////////////////////////////////////////////////////////
 //														 //
-//														 //
-//														 //
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
@@ -155,9 +150,8 @@ bool CGrid_Values_AddTo_Shapes::On_Execute(void)
 	CSG_Shapes				*pShapes;
 
 	//-----------------------------------------------------
-	pShapes			= Parameters("RESULT"  )->asShapes();
-	pGrids			= Parameters("GRIDS"   )->asGridList();
-	m_Interpolation	= Parameters("INTERPOL")->asInt();
+	pShapes	= Parameters("RESULT")->asShapes();
+	pGrids	= Parameters("GRIDS" )->asGridList();
 
 	//-----------------------------------------------------
 	if( pGrids->Get_Count() <= 0 )
@@ -176,6 +170,15 @@ bool CGrid_Values_AddTo_Shapes::On_Execute(void)
 	}
 
 	//-----------------------------------------------------
+	switch( Parameters("RESAMPLING")->asInt() )
+	{
+	default:	m_Resampling	= GRID_RESAMPLING_NearestNeighbour;	break;
+	case  1:	m_Resampling	= GRID_RESAMPLING_Bilinear;			break;
+	case  2:	m_Resampling	= GRID_RESAMPLING_BicubicSpline;	break;
+	case  3:	m_Resampling	= GRID_RESAMPLING_BSpline;			break;
+	}
+
+	//-----------------------------------------------------
 	for(int iGrid=0; iGrid<pGrids->Get_Count(); iGrid++)
 	{
 		CSG_Grid	*pGrid	= pGrids->asGrid(iGrid);
@@ -224,8 +227,6 @@ bool CGrid_Values_AddTo_Shapes::On_Execute(void)
 
 ///////////////////////////////////////////////////////////
 //														 //
-//														 //
-//														 //
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
@@ -237,7 +238,7 @@ void CGrid_Values_AddTo_Shapes::Get_Data_Point(CSG_Simple_Statistics &Statistics
 		{
 			double	Value;
 
-			if( pGrid->Get_Value(pShape->Get_Point(iPoint, iPart), Value, m_Interpolation) )
+			if( pGrid->Get_Value(pShape->Get_Point(iPoint, iPart), Value, m_Resampling) )
 			{
 				Statistics	+= Value;
 			}
@@ -248,8 +249,6 @@ void CGrid_Values_AddTo_Shapes::Get_Data_Point(CSG_Simple_Statistics &Statistics
 
 ///////////////////////////////////////////////////////////
 //														 //
-//														 //
-//														 //
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
@@ -265,7 +264,7 @@ void CGrid_Values_AddTo_Shapes::Get_Data_Line(CSG_Simple_Statistics &Statistics,
 
 			TSG_Point	B, A	= pShape->Get_Point(0, iPart);
 
-			if( pGrid->Get_Value(A, Value, m_Interpolation) )
+			if( pGrid->Get_Value(A, Value, m_Resampling) )
 			{
 				Statistics	+= Value;
 			}
@@ -286,7 +285,7 @@ void CGrid_Values_AddTo_Shapes::Get_Data_Line(CSG_Simple_Statistics &Statistics,
 
 					for(double d=0.0; d<Distance; d+=dStep, C.x+=dx, C.y+=dy)
 					{
-						if( pGrid->Get_Value(C, Value, m_Interpolation) )
+						if( pGrid->Get_Value(C, Value, m_Resampling) )
 						{
 							Statistics	+= Value;
 						}
@@ -300,8 +299,6 @@ void CGrid_Values_AddTo_Shapes::Get_Data_Line(CSG_Simple_Statistics &Statistics,
 
 ///////////////////////////////////////////////////////////
 //														 //
-//														 //
-//														 //
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
diff --git a/src/modules/shapes/shapes_grid/Grid_Values_AddTo_Shapes.h b/src/modules/shapes/shapes_grid/Grid_Values_AddTo_Shapes.h
old mode 100644
new mode 100755
index a0b36b8..986119a
--- a/src/modules/shapes/shapes_grid/Grid_Values_AddTo_Shapes.h
+++ b/src/modules/shapes/shapes_grid/Grid_Values_AddTo_Shapes.h
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: Grid_Values_AddTo_Shapes.h 1921 2014-01-09 10:24:11Z oconrad $
+ * Version $Id: Grid_Values_AddTo_Shapes.h 2752 2016-01-15 15:26:55Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -93,7 +93,7 @@ protected:
 
 private:
 
-	int							m_Interpolation;
+	TSG_Grid_Resampling			m_Resampling;
 
 
 	void						Get_Data_Point			(CSG_Simple_Statistics &Statistics, CSG_Shape *pShape, CSG_Grid *pGrid);
diff --git a/src/modules/shapes/shapes_grid/MLB_Interface.cpp b/src/modules/shapes/shapes_grid/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_grid/MLB_Interface.h b/src/modules/shapes/shapes_grid/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_grid/Makefile.am b/src/modules/shapes/shapes_grid/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_grid/grid_extent.cpp b/src/modules/shapes/shapes_grid/grid_extent.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_grid/grid_extent.h b/src/modules/shapes/shapes_grid/grid_extent.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_grid/grid_local_extremes_to_points.cpp b/src/modules/shapes/shapes_grid/grid_local_extremes_to_points.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_grid/grid_local_extremes_to_points.h b/src/modules/shapes/shapes_grid/grid_local_extremes_to_points.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_grid/grid_rectangle_clip.cpp b/src/modules/shapes/shapes_grid/grid_rectangle_clip.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_grid/grid_rectangle_clip.h b/src/modules/shapes/shapes_grid/grid_rectangle_clip.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_lines/Lines_From_Points.cpp b/src/modules/shapes/shapes_lines/Lines_From_Points.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_lines/Lines_From_Points.h b/src/modules/shapes/shapes_lines/Lines_From_Points.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_lines/Lines_From_Polygons.cpp b/src/modules/shapes/shapes_lines/Lines_From_Polygons.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_lines/Lines_From_Polygons.h b/src/modules/shapes/shapes_lines/Lines_From_Polygons.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_lines/MLB_Interface.cpp b/src/modules/shapes/shapes_lines/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_lines/MLB_Interface.h b/src/modules/shapes/shapes_lines/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_lines/Makefile.am b/src/modules/shapes/shapes_lines/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_lines/line_dissolve.cpp b/src/modules/shapes/shapes_lines/line_dissolve.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_lines/line_dissolve.h b/src/modules/shapes/shapes_lines/line_dissolve.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_lines/line_polygon_intersection.cpp b/src/modules/shapes/shapes_lines/line_polygon_intersection.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_lines/line_polygon_intersection.h b/src/modules/shapes/shapes_lines/line_polygon_intersection.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_lines/line_properties.cpp b/src/modules/shapes/shapes_lines/line_properties.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_lines/line_properties.h b/src/modules/shapes/shapes_lines/line_properties.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_lines/line_simplification.cpp b/src/modules/shapes/shapes_lines/line_simplification.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_lines/line_simplification.h b/src/modules/shapes/shapes_lines/line_simplification.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_lines/line_smoothing.cpp b/src/modules/shapes/shapes_lines/line_smoothing.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_lines/line_smoothing.h b/src/modules/shapes/shapes_lines/line_smoothing.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_lines/line_split_with_lines.cpp b/src/modules/shapes/shapes_lines/line_split_with_lines.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_lines/line_split_with_lines.h b/src/modules/shapes/shapes_lines/line_split_with_lines.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_points/AddCoordinates.cpp b/src/modules/shapes/shapes_points/AddCoordinates.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_points/AddCoordinates.h b/src/modules/shapes/shapes_points/AddCoordinates.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_points/Clip_Points.cpp b/src/modules/shapes/shapes_points/Clip_Points.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_points/Clip_Points.h b/src/modules/shapes/shapes_points/Clip_Points.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_points/CountPoints.cpp b/src/modules/shapes/shapes_points/CountPoints.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_points/CountPoints.h b/src/modules/shapes/shapes_points/CountPoints.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_points/CreatePointGrid.cpp b/src/modules/shapes/shapes_points/CreatePointGrid.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_points/CreatePointGrid.h b/src/modules/shapes/shapes_points/CreatePointGrid.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_points/DistanceMatrix.cpp b/src/modules/shapes/shapes_points/DistanceMatrix.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_points/DistanceMatrix.h b/src/modules/shapes/shapes_points/DistanceMatrix.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_points/FitNPointsToShape.cpp b/src/modules/shapes/shapes_points/FitNPointsToShape.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_points/FitNPointsToShape.h b/src/modules/shapes/shapes_points/FitNPointsToShape.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_points/MLB_Interface.cpp b/src/modules/shapes/shapes_points/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_points/MLB_Interface.h b/src/modules/shapes/shapes_points/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_points/Makefile.am b/src/modules/shapes/shapes_points/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_points/Points_From_Lines.cpp b/src/modules/shapes/shapes_points/Points_From_Lines.cpp
old mode 100644
new mode 100755
index e4d2abd..a37277e
--- a/src/modules/shapes/shapes_points/Points_From_Lines.cpp
+++ b/src/modules/shapes/shapes_points/Points_From_Lines.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: Points_From_Lines.cpp 2545 2015-07-28 07:46:45Z reklov_w $
+ * Version $Id: Points_From_Lines.cpp 2756 2016-01-21 14:07:36Z reklov_w $
  *********************************************************/
 
 /*******************************************************************************
@@ -149,7 +149,7 @@ bool CPoints_From_Lines::On_Execute(void)
 	{
 		Convert(pLines, pPoints, bAddPtOrder);
 	}
-	
+
 
 	return( true );
 }
@@ -302,6 +302,7 @@ void CPoints_From_Lines::Convert_Add_Points_Line(CSG_Shapes *pLines, CSG_Shapes
 				}
 			}
 
+
 			for(int iPoint=1; iPoint<pLine->Get_Point_Count(iPart); iPoint++)
 			{
 				Pt_A	= Pt_B;
@@ -322,6 +323,13 @@ void CPoints_From_Lines::Convert_Add_Points_Line(CSG_Shapes *pLines, CSG_Shapes
 				dx		= Pt_B.x - Pt_A.x;
 				dy		= Pt_B.y - Pt_A.y;
 				dLine	= sqrt(dx*dx + dy*dy);
+
+				if ( dOffset > dLine )
+				{
+					dOffset = dOffset - dLine;
+					continue;
+				}
+
 				dx		/= dLine;
 				dy		/= dLine;
 
@@ -512,7 +520,7 @@ void CPoints_From_Lines::Convert_Add_Points_Center(CSG_Shapes *pLines, CSG_Shape
 		// create line part from center to end of line
 		CSG_Shapes	SplitLines;
 		CSG_Shape	*pSplitLine;
-		
+
 		SplitLines.Create(pLines->Get_Type(), pLines->Get_Name(), pLines, pLines->Get_Vertex_Type());
 
 		int iPartOffset = 0;
@@ -577,7 +585,7 @@ void CPoints_From_Lines::Convert_Add_Points_Center(CSG_Shapes *pLines, CSG_Shape
 
 		//---------------------------------------------------------
 		// create line part from center to start of line
-		
+
 		SplitLines.Create(pLines->Get_Type(), pLines->Get_Name(), pLines, pLines->Get_Vertex_Type());
 
 		iPartOffset = 0;
@@ -639,8 +647,8 @@ void CPoints_From_Lines::Convert_Add_Points_Center(CSG_Shapes *pLines, CSG_Shape
 		Convert_Add_Points_Line(&SplitLines, pPoints, dDist, bAddPtOrder);
 
 	} // for iLine
-			
-	
+
+
 	return;
 }
 
diff --git a/src/modules/shapes/shapes_points/Points_From_Lines.h b/src/modules/shapes/shapes_points/Points_From_Lines.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_points/Points_From_Table.cpp b/src/modules/shapes/shapes_points/Points_From_Table.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_points/Points_From_Table.h b/src/modules/shapes/shapes_points/Points_From_Table.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_points/add_polygon_attributes.cpp b/src/modules/shapes/shapes_points/add_polygon_attributes.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_points/add_polygon_attributes.h b/src/modules/shapes/shapes_points/add_polygon_attributes.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_points/convex_hull.cpp b/src/modules/shapes/shapes_points/convex_hull.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_points/convex_hull.h b/src/modules/shapes/shapes_points/convex_hull.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_points/gps_track_aggregation.cpp b/src/modules/shapes/shapes_points/gps_track_aggregation.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_points/gps_track_aggregation.h b/src/modules/shapes/shapes_points/gps_track_aggregation.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_points/points_filter.cpp b/src/modules/shapes/shapes_points/points_filter.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_points/points_filter.h b/src/modules/shapes/shapes_points/points_filter.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_points/points_thinning.cpp b/src/modules/shapes/shapes_points/points_thinning.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_points/points_thinning.h b/src/modules/shapes/shapes_points/points_thinning.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_points/remove_duplicates.cpp b/src/modules/shapes/shapes_points/remove_duplicates.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_points/remove_duplicates.h b/src/modules/shapes/shapes_points/remove_duplicates.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_points/select_points.cpp b/src/modules/shapes/shapes_points/select_points.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_points/select_points.h b/src/modules/shapes/shapes_points/select_points.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_points/separate_by_direction.cpp b/src/modules/shapes/shapes_points/separate_by_direction.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_points/separate_by_direction.h b/src/modules/shapes/shapes_points/separate_by_direction.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_points/snap_points_to_features.cpp b/src/modules/shapes/shapes_points/snap_points_to_features.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_points/snap_points_to_features.h b/src/modules/shapes/shapes_points/snap_points_to_features.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_points/snap_points_to_grid.cpp b/src/modules/shapes/shapes_points/snap_points_to_grid.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_points/snap_points_to_grid.h b/src/modules/shapes/shapes_points/snap_points_to_grid.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_points/thiessen_polygons.cpp b/src/modules/shapes/shapes_points/thiessen_polygons.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_points/thiessen_polygons.h b/src/modules/shapes/shapes_points/thiessen_polygons.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_polygons/MLB_Interface.cpp b/src/modules/shapes/shapes_polygons/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_polygons/MLB_Interface.h b/src/modules/shapes/shapes_polygons/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_polygons/Makefile.am b/src/modules/shapes/shapes_polygons/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_polygons/Polygon_Centroids.cpp b/src/modules/shapes/shapes_polygons/Polygon_Centroids.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_polygons/Polygon_Centroids.h b/src/modules/shapes/shapes_polygons/Polygon_Centroids.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_polygons/Polygon_Clip.cpp b/src/modules/shapes/shapes_polygons/Polygon_Clip.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_polygons/Polygon_Clip.h b/src/modules/shapes/shapes_polygons/Polygon_Clip.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_polygons/Polygon_Geometrics.cpp b/src/modules/shapes/shapes_polygons/Polygon_Geometrics.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_polygons/Polygon_Geometrics.h b/src/modules/shapes/shapes_polygons/Polygon_Geometrics.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_polygons/Polygon_Intersection.cpp b/src/modules/shapes/shapes_polygons/Polygon_Intersection.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_polygons/Polygon_Intersection.h b/src/modules/shapes/shapes_polygons/Polygon_Intersection.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_polygons/Polygon_SelfIntersection.cpp b/src/modules/shapes/shapes_polygons/Polygon_SelfIntersection.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_polygons/Polygon_SelfIntersection.h b/src/modules/shapes/shapes_polygons/Polygon_SelfIntersection.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_polygons/Polygon_StatisticsFromPoints.cpp b/src/modules/shapes/shapes_polygons/Polygon_StatisticsFromPoints.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_polygons/Polygon_StatisticsFromPoints.h b/src/modules/shapes/shapes_polygons/Polygon_StatisticsFromPoints.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_polygons/Polygon_Union.cpp b/src/modules/shapes/shapes_polygons/Polygon_Union.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_polygons/Polygon_Union.h b/src/modules/shapes/shapes_polygons/Polygon_Union.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_polygons/Polygons_From_Lines.cpp b/src/modules/shapes/shapes_polygons/Polygons_From_Lines.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_polygons/Polygons_From_Lines.h b/src/modules/shapes/shapes_polygons/Polygons_From_Lines.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_polygons/add_point_attributes.cpp b/src/modules/shapes/shapes_polygons/add_point_attributes.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_polygons/add_point_attributes.h b/src/modules/shapes/shapes_polygons/add_point_attributes.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_polygons/polygon_flatten.cpp b/src/modules/shapes/shapes_polygons/polygon_flatten.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_polygons/polygon_flatten.h b/src/modules/shapes/shapes_polygons/polygon_flatten.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_polygons/polygon_line_intersection.cpp b/src/modules/shapes/shapes_polygons/polygon_line_intersection.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_polygons/polygon_line_intersection.h b/src/modules/shapes/shapes_polygons/polygon_line_intersection.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_polygons/polygon_shared_edges.cpp b/src/modules/shapes/shapes_polygons/polygon_shared_edges.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_polygons/polygon_shared_edges.h b/src/modules/shapes/shapes_polygons/polygon_shared_edges.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_polygons/polygon_split_parts.cpp b/src/modules/shapes/shapes_polygons/polygon_split_parts.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_polygons/polygon_split_parts.h b/src/modules/shapes/shapes_polygons/polygon_split_parts.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_polygons/polygon_to_edges_nodes.cpp b/src/modules/shapes/shapes_polygons/polygon_to_edges_nodes.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_polygons/polygon_to_edges_nodes.h b/src/modules/shapes/shapes_polygons/polygon_to_edges_nodes.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_polygons/polygon_to_points.cpp b/src/modules/shapes/shapes_polygons/polygon_to_points.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_polygons/polygon_to_points.h b/src/modules/shapes/shapes_polygons/polygon_to_points.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_polygons/shape_index.cpp b/src/modules/shapes/shapes_polygons/shape_index.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_polygons/shape_index.h b/src/modules/shapes/shapes_polygons/shape_index.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_tools/CreateChartLayer.cpp b/src/modules/shapes/shapes_tools/CreateChartLayer.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_tools/CreateChartLayer.h b/src/modules/shapes/shapes_tools/CreateChartLayer.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_tools/GraticuleBuilder.cpp b/src/modules/shapes/shapes_tools/GraticuleBuilder.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_tools/GraticuleBuilder.h b/src/modules/shapes/shapes_tools/GraticuleBuilder.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_tools/LandUse_Scenario.cpp b/src/modules/shapes/shapes_tools/LandUse_Scenario.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_tools/LandUse_Scenario.h b/src/modules/shapes/shapes_tools/LandUse_Scenario.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_tools/MLB_Interface.cpp b/src/modules/shapes/shapes_tools/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_tools/MLB_Interface.h b/src/modules/shapes/shapes_tools/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_tools/Makefile.am b/src/modules/shapes/shapes_tools/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_tools/NewLayerFromSelectedShapes.cpp b/src/modules/shapes/shapes_tools/NewLayerFromSelectedShapes.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_tools/NewLayerFromSelectedShapes.h b/src/modules/shapes/shapes_tools/NewLayerFromSelectedShapes.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_tools/QueryBuilder.cpp b/src/modules/shapes/shapes_tools/QueryBuilder.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_tools/QueryBuilder.h b/src/modules/shapes/shapes_tools/QueryBuilder.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_tools/SearchInTable.cpp b/src/modules/shapes/shapes_tools/SearchInTable.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_tools/SearchInTable.h b/src/modules/shapes/shapes_tools/SearchInTable.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_tools/SelectByTheme.cpp b/src/modules/shapes/shapes_tools/SelectByTheme.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_tools/SelectByTheme.h b/src/modules/shapes/shapes_tools/SelectByTheme.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_tools/SeparateShapes.cpp b/src/modules/shapes/shapes_tools/SeparateShapes.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_tools/SeparateShapes.h b/src/modules/shapes/shapes_tools/SeparateShapes.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_tools/Shapes_Create_Empty.cpp b/src/modules/shapes/shapes_tools/Shapes_Create_Empty.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_tools/Shapes_Create_Empty.h b/src/modules/shapes/shapes_tools/Shapes_Create_Empty.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_tools/Shapes_Merge.cpp b/src/modules/shapes/shapes_tools/Shapes_Merge.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_tools/Shapes_Merge.h b/src/modules/shapes/shapes_tools/Shapes_Merge.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_tools/TransformShapes.cpp b/src/modules/shapes/shapes_tools/TransformShapes.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_tools/TransformShapes.h b/src/modules/shapes/shapes_tools/TransformShapes.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_tools/quadtree_structure.cpp b/src/modules/shapes/shapes_tools/quadtree_structure.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_tools/quadtree_structure.h b/src/modules/shapes/shapes_tools/quadtree_structure.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_tools/shapes_buffer.cpp b/src/modules/shapes/shapes_tools/shapes_buffer.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_tools/shapes_buffer.h b/src/modules/shapes/shapes_tools/shapes_buffer.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_tools/shapes_convert_vertex_type.cpp b/src/modules/shapes/shapes_tools/shapes_convert_vertex_type.cpp
old mode 100644
new mode 100755
index df73bf8..6006633
--- a/src/modules/shapes/shapes_tools/shapes_convert_vertex_type.cpp
+++ b/src/modules/shapes/shapes_tools/shapes_convert_vertex_type.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: shapes_convert_vertex_type.cpp 1921 2014-01-09 10:24:11Z oconrad $
+ * Version $Id: shapes_convert_vertex_type.cpp 2813 2016-02-22 21:30:40Z johanvdw $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -78,7 +78,7 @@ CShapes_Convert_Vertex_Type::CShapes_Convert_Vertex_Type(void)
 	Set_Author(_TL("Volker Wichmann (c) 2013, LASERDATA GmbH"));
 
 	Set_Description	(_TW(
-		"The module allows to convert the vertex type of shapes from "
+		"The module allows one to convert the vertex type of shapes from "
 		"'XY' (2D) to 'XYZ/M' (3D) and vice versa. The conversion from "
 		"3D to 2D is not lossless for lines and polygons, as only the "
 		"Z/M value of one vertex can be retained (currently that of the "
diff --git a/src/modules/shapes/shapes_tools/shapes_convert_vertex_type.h b/src/modules/shapes/shapes_tools/shapes_convert_vertex_type.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_tools/shapes_cut.cpp b/src/modules/shapes/shapes_tools/shapes_cut.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_tools/shapes_cut.h b/src/modules/shapes/shapes_tools/shapes_cut.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_tools/shapes_cut_interactive.cpp b/src/modules/shapes/shapes_tools/shapes_cut_interactive.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_tools/shapes_cut_interactive.h b/src/modules/shapes/shapes_tools/shapes_cut_interactive.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_tools/shapes_extents.cpp b/src/modules/shapes/shapes_tools/shapes_extents.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_tools/shapes_extents.h b/src/modules/shapes/shapes_tools/shapes_extents.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_tools/shapes_generate.cpp b/src/modules/shapes/shapes_tools/shapes_generate.cpp
old mode 100644
new mode 100755
index a15aabe..0dc9272
--- a/src/modules/shapes/shapes_tools/shapes_generate.cpp
+++ b/src/modules/shapes/shapes_tools/shapes_generate.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: shapes_generate.cpp 1921 2014-01-09 10:24:11Z oconrad $
+ * Version $Id: shapes_generate.cpp 2813 2016-02-22 21:30:40Z johanvdw $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -78,9 +78,9 @@ CShapes_Generate::CShapes_Generate(void)
 	Set_Author(_TL("Volker Wichmann (c) 2012, LASERDATA GmbH"));
 
 	Set_Description	(_TW(
-		"The module allows to generate point, line or polygon shapes from "
-		"a table with x and y coordinates and an identifier. The table must "
-		"be sorted in vertex order.\n\n"
+		"The module allows one to generate point, line or polygon shapes "
+		"from a table with x and y coordinates and an identifier. The table "
+		"must be sorted in vertex order.\n\n"
 		"The identifier has different meanings:\n\n"
 		"* Point Shapes: The identifier is arbitrary\n\n"
 		"* Line Shapes: The identifier is unique for each line\n\n"
diff --git a/src/modules/shapes/shapes_tools/shapes_generate.h b/src/modules/shapes/shapes_tools/shapes_generate.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_tools/shapes_polar_to_cartes.cpp b/src/modules/shapes/shapes_tools/shapes_polar_to_cartes.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_tools/shapes_polar_to_cartes.h b/src/modules/shapes/shapes_tools/shapes_polar_to_cartes.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_tools/shapes_split.cpp b/src/modules/shapes/shapes_tools/shapes_split.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_tools/shapes_split.h b/src/modules/shapes/shapes_tools/shapes_split.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_tools/shapes_split_by_attribute.cpp b/src/modules/shapes/shapes_tools/shapes_split_by_attribute.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_tools/shapes_split_by_attribute.h b/src/modules/shapes/shapes_tools/shapes_split_by_attribute.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_tools/shapes_split_randomly.cpp b/src/modules/shapes/shapes_tools/shapes_split_randomly.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_tools/shapes_split_randomly.h b/src/modules/shapes/shapes_tools/shapes_split_randomly.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_transect/MLB_Interface.cpp b/src/modules/shapes/shapes_transect/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_transect/MLB_Interface.h b/src/modules/shapes/shapes_transect/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_transect/Makefile.am b/src/modules/shapes/shapes_transect/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_transect/Polygon_Transect.cpp b/src/modules/shapes/shapes_transect/Polygon_Transect.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/shapes/shapes_transect/Polygon_Transect.h b/src/modules/shapes/shapes_transect/Polygon_Transect.h
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/Makefile.am b/src/modules/simulation/Makefile.am
old mode 100644
new mode 100755
index ac1e638..54f5620
--- a/src/modules/simulation/Makefile.am
+++ b/src/modules/simulation/Makefile.am
@@ -1 +1,5 @@
-SUBDIRS = sim_cellular_automata sim_ecosystems_hugget sim_erosion sim_fire_spreading sim_hydrology sim_ihacres sim_qm_of_esp sim_rivflow
+SUBDIRS = sim_cellular_automata sim_ecosystems_hugget sim_erosion sim_hydrology sim_ihacres sim_qm_of_esp sim_rivflow
+
+if LIBFIRE
+SUBDIRS +=sim_fire_spreading
+endif
diff --git a/src/modules/simulation/Makefile.in b/src/modules/simulation/Makefile.in
index b5eb7b9..11d18c9 100644
--- a/src/modules/simulation/Makefile.in
+++ b/src/modules/simulation/Makefile.in
@@ -77,6 +77,7 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
+ at LIBFIRE_TRUE@am__append_1 = sim_fire_spreading
 subdir = src/modules/simulation
 DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
@@ -148,7 +149,9 @@ am__define_uniq_tagged_files = \
   done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
-DIST_SUBDIRS = $(SUBDIRS)
+DIST_SUBDIRS = sim_cellular_automata sim_ecosystems_hugget sim_erosion \
+	sim_hydrology sim_ihacres sim_qm_of_esp sim_rivflow \
+	sim_fire_spreading
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 am__relativize = \
   dir0=`pwd`; \
@@ -322,7 +325,9 @@ target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-SUBDIRS = sim_cellular_automata sim_ecosystems_hugget sim_erosion sim_fire_spreading sim_hydrology sim_ihacres sim_qm_of_esp sim_rivflow
+SUBDIRS = sim_cellular_automata sim_ecosystems_hugget sim_erosion \
+	sim_hydrology sim_ihacres sim_qm_of_esp sim_rivflow \
+	$(am__append_1)
 all: all-recursive
 
 .SUFFIXES:
diff --git a/src/modules/simulation/sim_cellular_automata/Life.cpp b/src/modules/simulation/sim_cellular_automata/Life.cpp
old mode 100644
new mode 100755
index 92f8258..3a59696
--- a/src/modules/simulation/sim_cellular_automata/Life.cpp
+++ b/src/modules/simulation/sim_cellular_automata/Life.cpp
@@ -62,7 +62,6 @@
 
 //---------------------------------------------------------
 #include "Life.h"
-#include <time.h>
 
 
 ///////////////////////////////////////////////////////////
@@ -75,108 +74,100 @@
 CLife::CLife(void)
 {
 	//-----------------------------------------------------
-	// 1. Info...
+	Set_Name		(_TL("Conway's Game of Life"));
 
-	Set_Name(_TL("Conway's Life"));
-
-	Set_Author		(SG_T("(c) 2003 by O.Conrad"));
+	Set_Author		("O.Conrad (c) 2003");
 
 	Set_Description	(_TW(
-		"Conway's Life - a cellular automat.\n\n"
-
+		"Conway's Game of Life - a classical cellular automat.\n"
+		"\n"
 		"Reference:\n"
 		"- Eigen, M., Winkler, R. (1985): "
 		"'Das Spiel - Naturgesetze steuern den Zufall', "
-		"Muenchen, 404p.\n")
-	);
-
+		"Muenchen, 404p.\n"
+	));
 
 	//-----------------------------------------------------
-	// 2. Grids...
+	m_Grid_Target.Create(&Parameters, false, NULL, "TARGET_");
 
-	Parameters.Add_Grid_Output(
-		NULL	, "GRID"	, _TL("Grid"),
-		_TL("")
-	);
+	m_Grid_Target.Add_Grid("LIFE", _TL("Life"), false);
 
+	//-----------------------------------------------------
 	Parameters.Add_Value(
-		NULL	, "NX"		, _TL("Width (Cells)"),
+		NULL	, "FADECOLOR"	, _TL("Fade Color Count"),
 		_TL(""),
-		PARAMETER_TYPE_Int, 100, 1, true
+		PARAMETER_TYPE_Int, 64, 1, true, 255, true
 	);
+}
 
-	Parameters.Add_Value(
-		NULL	, "NY"		, _TL("Height (Cells)"),
-		_TL(""),
-		PARAMETER_TYPE_Int, 100, 1, true
-	);
 
-	Parameters.Add_Value(
-		NULL, "FADECOLOR"	, _TL("Fade Color Count"),
-		_TL(""),
-		PARAMETER_TYPE_Int, 63, 1, true, 255, true
-	);
-}
+///////////////////////////////////////////////////////////
+//														 //
+///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
-CLife::~CLife(void)
-{}
+int CLife::On_Parameters_Enable(CSG_Parameters *pParameters, CSG_Parameter *pParameter)
+{
+	m_Grid_Target.On_Parameters_Enable(pParameters, pParameter);
+
+	return( CSG_Module::On_Parameters_Enable(pParameters, pParameter) );
+}
 
 
 ///////////////////////////////////////////////////////////
 //														 //
-//														 //
-//														 //
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
 bool CLife::On_Execute(void)
 {
-	int		x, y, i;
-
 	//-----------------------------------------------------
-	pLife	= SG_Create_Grid(SG_DATATYPE_Byte, Parameters("NX")->asInt(), Parameters("NY")->asInt());
-	pLife->Set_Name(_TL("Conway's Life"));
-	Parameters("GRID")->Set_Value(pLife);
+	m_pLife	= m_Grid_Target.Get_Grid("LIFE", SG_DATATYPE_Byte);
 
-	nColors	= Parameters("FADECOLOR")->asInt();
-	DataObject_Set_Colors(pLife, nColors, SG_COLORS_YELLOW_BLUE);
+	if( !m_pLife )
+	{
+		Error_Set(_TL("could not create target grid"));
 
-	pCount	= SG_Create_Grid(pLife);
+		return( false );
+	}
 
 	//-----------------------------------------------------
-	srand((unsigned)time(NULL));
-
-	pLife->Assign(0.0);
+	m_nColors	= Parameters("FADECOLOR")->asInt();
 
-	for(y=0; y<pLife->Get_NY(); y++)
+	for(int y=0; y<m_pLife->Get_NY(); y++)
 	{
-		for(x=0; x<pLife->Get_NX(); x++)
+		for(int x=0; x<m_pLife->Get_NX(); x++)
 		{
-			if( rand() > RAND_MAX / 2 )
-			{
-				pLife->Set_Value(x, y, 1);
-			}
+			m_pLife->Set_Value(x, y, CSG_Random::Get_Uniform(0, 100) < 50 ? 0 : m_nColors);
 		}
 	}
 
-	Next_Cycle();
-	DataObject_Update(pLife, 0, nColors, true);
+	//-----------------------------------------------------
+	m_pLife->Set_Name(_TL("Conway's Game of Life"));
+	m_pLife->Set_NoData_Value(-1);
+
+	DataObject_Add       (m_pLife);
+	DataObject_Set_Colors(m_pLife, 11, SG_COLORS_WHITE_BLUE);
+	DataObject_Update    (m_pLife, 0, m_nColors, SG_UI_DATAOBJECT_SHOW);
 
 	//-----------------------------------------------------
-	for(i=1; Process_Get_Okay(true) && Next_Cycle(); i++)
+	int		i;
+
+	m_Count.Create(m_pLife->Get_System(), SG_DATATYPE_Byte);
+
+	for(i=1; Process_Get_Okay(true) && Next_Cycle(i > m_nColors); i++)
 	{
-		DataObject_Update(pLife);
+		Process_Set_Text(CSG_String::Format("%s: %d", _TL("Life Cycle"), i));
 
-		Process_Set_Text(CSG_String::Format(SG_T("%s: %d"), _TL("Life Cycle"), i));
+		DataObject_Update(m_pLife, 0, m_nColors);
 	}
 
-	//-----------------------------------------------------
-	delete(pCount);
+	m_Count.Destroy();
 
+	//-----------------------------------------------------
 	if( is_Progress() )
 	{
-		Message_Add(CSG_String::Format(SG_T("%s %d %s"), _TL("Dead after"), i, _TL("Life Cycles")));
+		Message_Add(CSG_String::Format("\n%s %d %s\n", _TL("Dead after"), i, _TL("Life Cycles")), false);
 	}
 
 	return( true );
@@ -185,54 +176,41 @@ bool CLife::On_Execute(void)
 
 ///////////////////////////////////////////////////////////
 //														 //
-//														 //
-//														 //
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
-bool CLife::Next_Cycle(void)
+bool CLife::Next_Cycle(bool bCheck4Change)
 {
-	bool	bContinue;
-	int		x, y, i, ix, iy;
-
 	//-----------------------------------------------------
-	bContinue	= false;
+	bool	bContinue	= bCheck4Change ? false : true;
 
-	pCount->Assign();
+	int		y;
 
 	//-----------------------------------------------------
-	for(y=0; y<pLife->Get_NY(); y++)
+	#pragma omp parallel for private(y)
+	for(y=0; y<m_pLife->Get_NY(); y++)
 	{
-		for(x=0; x<pLife->Get_NX(); x++)
+		for(int x=0; x<m_pLife->Get_NX(); x++)
 		{
-			if( (i = pLife->asByte(x, y)) == 0 )
+			int		n	= 0;
+
+			for(int i=0; i<8; i++)
 			{
-				for(i=0; i<8; i++)
+				int	ix	= CSG_Grid_System::Get_xTo(i, x);;
+				int iy	= CSG_Grid_System::Get_yTo(i, y);;
+
+				if( ix < 0 ) ix = m_pLife->Get_NX() - 1; else if( ix >= m_pLife->Get_NX() ) ix = 0;
+				if( iy < 0 ) iy = m_pLife->Get_NY() - 1; else if( iy >= m_pLife->Get_NY() ) iy = 0;
+
+				if( m_pLife->asByte(ix, iy) == m_nColors )
 				{
-					ix	= pLife->Get_System().Get_xTo(i, x);
-					if( ix < 0 )
-					{
-						ix	= pLife->Get_NX() - 1;
-					}
-					else if( ix >= pLife->Get_NX() )
-					{
-						ix	= 0;
-					}
-
-					iy	= pLife->Get_System().Get_yTo(i, y);
-					if( iy < 0 )
-					{
-						iy	= pLife->Get_NY() - 1;
-					}
-					else if( iy >= pLife->Get_NY() )
-					{
-						iy	= 0;
-					}
-
-					pCount->Add_Value(ix, iy, 1);
+					n++;
 				}
 			}
-			else if( i > 1 && i < nColors )
+
+			m_Count.Set_Value(x, y, n);
+
+			if( bCheck4Change && m_pLife->asByte(x, y) > 0 && m_pLife->asByte(x, y) < m_nColors - 1 )
 			{
 				bContinue	= true;
 			}
@@ -240,37 +218,32 @@ bool CLife::Next_Cycle(void)
 	}
 
 	//-----------------------------------------------------
-	for(y=0; y<pLife->Get_NY(); y++)
+	#pragma omp parallel for private(y)
+	for(y=0; y<m_pLife->Get_NY(); y++)
 	{
-		for(x=0; x<pLife->Get_NX(); x++)
+		for(int x=0; x<m_pLife->Get_NX(); x++)
 		{
-			i	= pCount->asByte(x, y);
+			int		n	= m_Count.asByte(x, y);
 
-			switch( i )
+			switch( n )
 			{
-			case 2:
-				i	= pLife->asByte(x, y);
-
-				if( i > 0 && i < nColors )
+			case  2:	// keep status
+				if( m_pLife->asByte(x, y) > 0 && m_pLife->asByte(x, y) < m_nColors )
 				{
-					pLife->Add_Value(x, y, 1);
+					m_pLife->Add_Value(x, y, -1);
 				}
 				break;
 
-			case 3:
-				pLife->Set_Value(x, y, 0);
-				break;
-
-			default:
-				i	= pLife->asByte(x, y);
-
-				if( i < 1 )
+			case  3:	// birth
 				{
-					pLife->Set_Value(x, y, 1);
+					m_pLife->Set_Value(x, y, m_nColors);
 				}
-				else if( i < nColors )
+				break;
+
+			default:	// death
+				if( m_pLife->asByte(x, y) > 0 )
 				{
-					pLife->Add_Value(x, y, 1);
+					m_pLife->Add_Value(x, y, -1);
 				}
 			}
 		}
diff --git a/src/modules/simulation/sim_cellular_automata/Life.h b/src/modules/simulation/sim_cellular_automata/Life.h
old mode 100644
new mode 100755
index edd6de0..1d33fb7
--- a/src/modules/simulation/sim_cellular_automata/Life.h
+++ b/src/modules/simulation/sim_cellular_automata/Life.h
@@ -86,24 +86,27 @@ class CLife : public CSG_Module
 {
 public:
 	CLife(void);
-	virtual ~CLife(void);
 
-	virtual bool			needs_GUI		(void)	{	return( true );	}
+	virtual bool				needs_GUI				(void)	{	return( true );	}
 
 
 protected:
 
-	virtual bool			On_Execute(void);
+	virtual int					On_Parameters_Enable	(CSG_Parameters *pParameters, CSG_Parameter *pParameter);
+
+	virtual bool				On_Execute				(void);
 
 
 private:
 
-	int						nColors;
+	int							m_nColors;
+
+	CSG_Parameters_Grid_Target	m_Grid_Target;
 
-	CSG_Grid					*pLife, *pCount;
+	CSG_Grid					*m_pLife, m_Count;
 
 
-	bool					Next_Cycle(void);
+	bool						Next_Cycle				(bool bCheck4Change);
 
 };
 
diff --git a/src/modules/simulation/sim_cellular_automata/MLB_Interface.cpp b/src/modules/simulation/sim_cellular_automata/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_cellular_automata/MLB_Interface.h b/src/modules/simulation/sim_cellular_automata/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_cellular_automata/Makefile.am b/src/modules/simulation/sim_cellular_automata/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_cellular_automata/Wator.cpp b/src/modules/simulation/sim_cellular_automata/Wator.cpp
old mode 100644
new mode 100755
index bd822db..bad798b
--- a/src/modules/simulation/sim_cellular_automata/Wator.cpp
+++ b/src/modules/simulation/sim_cellular_automata/Wator.cpp
@@ -62,7 +62,6 @@
 
 //---------------------------------------------------------
 #include "Wator.h"
-#include <time.h>
 
 //---------------------------------------------------------
 #define FISH	1
@@ -78,12 +77,12 @@
 //---------------------------------------------------------
 CWator::CWator(void)
 {
-	CSG_Parameter	*pNode_0, *pNode_1;
+	CSG_Parameter	*pNode;
 
 	//-----------------------------------------------------
 	Set_Name		(_TL("Wa-Tor"));
 
-	Set_Author		(SG_T("(c) 2003 by O.Conrad"));
+	Set_Author		("O.Conrad (c) 2003");
 
 	Set_Description	(_TW(
 		"Wa-Tor - an ecological simulation of predator-prey populations - "
@@ -92,71 +91,48 @@ CWator::CWator(void)
 	));
 
 	//-----------------------------------------------------
-	Parameters.Add_Grid_Output(
-		NULL	, "GRID"			, _TL("Grid"),
-		_TL("")
-	);
-
-	pNode_0	= Parameters.Add_Node(
-		NULL	, "NODE_GRID"		, _TL("New Grid Dimensions"),
-		_TL("If grid is not set, a new one will be created using chosen width and height.")
-	);
+	m_Grid_Target.Create(&Parameters, false, NULL, "TARGET_");
 
-	Parameters.Add_Value(
-		pNode_0	, "NX"				, _TL("Width (Cells)"),
-		_TL(""),
-		PARAMETER_TYPE_Int, 100, 1, true
-	);
+	m_Grid_Target.Add_Grid("GRID", _TL("Wa-Tor"), false);
 
-	Parameters.Add_Value(
-		pNode_0	, "NY"				, _TL("Height (Cells)"),
-		_TL(""),
-		PARAMETER_TYPE_Int, 100, 1, true
-	);
-
-	pNode_0	= Parameters.Add_Grid(
-		NULL	, "RESULT"			, _TL("Wa-Tor"),
-		_TL(""),
-		PARAMETER_OUTPUT_OPTIONAL	, true, SG_DATATYPE_Byte
-	);
-
-	pNode_1	= Parameters.Add_Value(
-		pNode_0	, "REFRESH"			, _TL("Refresh"),
+	//-----------------------------------------------------
+	pNode	= Parameters.Add_Value(
+		NULL	, "REFRESH"			, _TL("Refresh"),
 		_TL(""),
 		PARAMETER_TYPE_Bool			, true
 	);
 
-	pNode_1	= Parameters.Add_Value(
-		pNode_0	, "INIT_FISH"		, _TL("Initial Number of Fishes [%]"),
+	Parameters.Add_Value(
+		pNode	, "INIT_FISH"		, _TL("Initial Number of Fishes [%]"),
 		_TL(""),
 		PARAMETER_TYPE_Double		, 30.0, 0.0, true, 100.0, true
 	);
 
-	pNode_1	= Parameters.Add_Value(
-		pNode_0	, "INIT_SHARK"		, _TL("Initial Number of Sharks [%]"),
+	Parameters.Add_Value(
+		pNode	, "INIT_SHARK"		, _TL("Initial Number of Sharks [%]"),
 		_TL(""),
 		PARAMETER_TYPE_Double		, 7.5, 0.0, true, 100.0, true
 	);
 
-	pNode_0	= Parameters.Add_Table(
+	Parameters.Add_Table(
 		NULL	, "TABLE"			, _TL("Cycles"),
 		_TL(""),
 		PARAMETER_OUTPUT
 	);
 
-	pNode_0	= Parameters.Add_Value(
+	Parameters.Add_Value(
 		NULL	, "FISH_BIRTH"		, _TL("Birth Rate of Fishes"),
 		_TL(""),
 		PARAMETER_TYPE_Int			,  3.0, 0.0, true
 	);
 
-	pNode_0	= Parameters.Add_Value(
+	Parameters.Add_Value(
 		NULL	, "SHARK_BIRTH"		, _TL("Birth Rate of Sharks"),
 		_TL(""),
 		PARAMETER_TYPE_Int			, 12.0, 0.0, true
 	);
 
-	pNode_0	= Parameters.Add_Value(
+	Parameters.Add_Value(
 		NULL	, "SHARK_STARVE"	, _TL("Max. Starvation Time for Sharks"),
 		_TL(""),
 		PARAMETER_TYPE_Int			,  4.0, 0.0, true
@@ -166,133 +142,144 @@ CWator::CWator(void)
 
 ///////////////////////////////////////////////////////////
 //														 //
-//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+int CWator::On_Parameters_Enable(CSG_Parameters *pParameters, CSG_Parameter *pParameter)
+{
+	m_Grid_Target.On_Parameters_Enable(pParameters, pParameter);
+
+	return( CSG_Module::On_Parameters_Enable(pParameters, pParameter) );
+}
+
+
+///////////////////////////////////////////////////////////
 //														 //
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
 bool CWator::On_Execute(void)
 {
-	bool			bRefresh;
-	int				x, y, i;
-	double			perc, Fish_perc, Shark_perc;
-	CSG_Colors			Colors;
-	CSG_Table			*pTable;
-	CSG_Table_Record	*pRecord;
-
 	//-----------------------------------------------------
-	if( (pWator = Parameters("RESULT")->asGrid()) == NULL )
-	{
-		bRefresh	= true;
-		pWator		= SG_Create_Grid(SG_DATATYPE_Byte, Parameters("NX")->asInt(), Parameters("NY")->asInt());
-		Parameters("GRID")->Set_Value(pWator);
-	}
-	else
-	{
-		bRefresh	= Parameters("REFRESH")->asBool();
-	}
+	m_pWator	= m_Grid_Target.Get_Grid("GRID", SG_DATATYPE_Byte);
 
-	pWator->Set_Name(_TL("Wa-Tor"));
+	if( !m_pWator )
+	{
+		Error_Set(_TL("could not create target grid"));
 
-	Colors.Set_Count(3);
-	Colors.Set_Color(0, SG_GET_RGB(  0,   0,   0));
-	Colors.Set_Color(1, SG_GET_RGB(  0, 255,   0));
-	Colors.Set_Color(2, SG_GET_RGB(255,   0,   0));
-	DataObject_Set_Colors(pWator, Colors);
-	DataObject_Update(pWator, 0, 3, SG_UI_DATAOBJECT_SHOW);
+		return( false );
+	}
 
 	//-----------------------------------------------------
-	Fish_Birth		= Parameters("FISH_BIRTH")	->asInt();
-	Shark_Birth		= Parameters("SHARK_BIRTH")	->asInt();
-	Shark_Starve	= Parameters("SHARK_STARVE")->asInt();
+	m_pWator->Set_Name(_TL("Wa-Tor"));
+	m_pWator->Set_NoData_Value(-1);
 
-	pTable			= Parameters("TABLE")		->asTable();
-	pTable->Destroy();
-	pTable->Set_Name(_TL("Wa-Tor"));
-	pTable->Add_Field("Cycle"	, SG_DATATYPE_Int);
-	pTable->Add_Field("Fishes"	, SG_DATATYPE_Int);
-	pTable->Add_Field("Sharks"	, SG_DATATYPE_Int);
+	CSG_Colors	Colors(3);
 
-	pNext			= SG_Create_Grid(pWator, SG_DATATYPE_Byte);
-	pAge			= SG_Create_Grid(pWator, SG_DATATYPE_Byte);
-	pStarve			= SG_Create_Grid(pWator, SG_DATATYPE_Byte);
+	Colors.Set_Color(0, SG_COLOR_BLACK);
+	Colors.Set_Color(1, SG_COLOR_GREEN);
+	Colors.Set_Color(2, SG_COLOR_RED  );
 
-	srand((unsigned)time(NULL));
+	DataObject_Add       (m_pWator);
+	DataObject_Set_Colors(m_pWator, Colors);
+	DataObject_Update    (m_pWator, 0, 2, SG_UI_DATAOBJECT_SHOW);
 
 	//-----------------------------------------------------
-	if( bRefresh )
+	if( Parameters("REFRESH")->asBool() )
 	{
-		pWator->Assign(0.0);
+		double	Fish_perc	= Parameters("INIT_FISH" )->asDouble();
+		double	Shark_perc	= Parameters("INIT_SHARK")->asDouble() + Fish_perc;
 
-		Fish_perc		= Parameters("INIT_FISH" )->asDouble();
-		Shark_perc		= Parameters("INIT_SHARK")->asDouble() + Fish_perc;
-
-		for(y=0; y<pWator->Get_NY(); y++)
+		#pragma omp parallel for
+		for(int y=0; y<m_pWator->Get_NY(); y++)
 		{
-			for(x=0; x<pWator->Get_NX(); x++)
+			for(int x=0; x<m_pWator->Get_NX(); x++)
 			{
-				perc	= 100.0 * (double)rand() / (double)RAND_MAX;
+				double	perc	= CSG_Random::Get_Uniform(0, 100);
 
 				if( perc <= Fish_perc )
 				{
-					pWator	->Set_Value(x, y, FISH);
+					m_pWator->Set_Value(x, y, FISH);
 				}
 				else if( perc <= Shark_perc )
 				{
-					pWator	->Set_Value(x, y, SHARK);
+					m_pWator->Set_Value(x, y, SHARK);
+				}
+				else
+				{
+					m_pWator->Set_Value(x, y, 0);
 				}
 			}
 		}
 	}
 
 	//-----------------------------------------------------
-	pAge	->Assign();
-	pStarve	->Assign();
+	CSG_Table	*pTable	= Parameters("TABLE")->asTable();
+
+	pTable->Destroy();
+	pTable->Set_Name(_TL("Wa-Tor"));
 
-	for(y=0; y<pWator->Get_NY(); y++)
+	pTable->Add_Field("Cycle" , SG_DATATYPE_Int);
+	pTable->Add_Field("Fishes", SG_DATATYPE_Int);
+	pTable->Add_Field("Sharks", SG_DATATYPE_Int);
+
+	//-----------------------------------------------------
+	m_Fish_Birth	= Parameters("FISH_BIRTH"  )->asInt();
+	m_Shark_Birth	= Parameters("SHARK_BIRTH" )->asInt();
+	m_Shark_Starve	= Parameters("SHARK_STARVE")->asInt();
+
+	m_Next  .Create(m_pWator, SG_DATATYPE_Byte);
+	m_Age   .Create(m_pWator, SG_DATATYPE_Byte);
+	m_Starve.Create(m_pWator, SG_DATATYPE_Byte);
+
+	#pragma omp parallel for
+	for(int y=0; y<m_pWator->Get_NY(); y++)
 	{
-		for(x=0; x<pWator->Get_NX(); x++)
+		for(int x=0; x<m_pWator->Get_NX(); x++)
 		{
-			switch( pWator->asByte(x, y) )
+			switch( m_pWator->asByte(x, y) )
 			{
 			case FISH:
-				pAge	->Set_Value(x, y, Fish_Birth	* (double)rand() / (double)RAND_MAX);
+				m_Age   .Set_Value(x, y, CSG_Random::Get_Uniform(0.0, m_Fish_Birth  ));
 				break;
 
 			case SHARK:
-				pAge	->Set_Value(x, y, Shark_Birth	* (double)rand() / (double)RAND_MAX);
-				pStarve	->Set_Value(x, y, Shark_Starve	* (double)rand() / (double)RAND_MAX);
+				m_Age   .Set_Value(x, y, CSG_Random::Get_Uniform(0.0, m_Shark_Birth ));
+				m_Starve.Set_Value(x, y, CSG_Random::Get_Uniform(0.0, m_Shark_Starve));
 				break;
 			}
 		}
 	}
 
 	//-----------------------------------------------------
+	int		i;
+
 	SG_UI_Progress_Lock(true);
 
 	for(i=1; Process_Get_Okay(true) && Next_Cycle(); i++)
 	{
-		Process_Set_Text(CSG_String::Format(SG_T("%s: %d"), _TL("Life Cycle"), i));
+		Process_Set_Text(CSG_String::Format("%s: %d", _TL("Life Cycle"), i));
+
+		CSG_Table_Record	*pRecord	= pTable->Add_Record();
 
-		pRecord	= pTable->Add_Record();
 		pRecord->Set_Value(0, i);
-		pRecord->Set_Value(1, nFishes);
-		pRecord->Set_Value(2, nSharks);
+		pRecord->Set_Value(1, m_nFishes);
+		pRecord->Set_Value(2, m_nSharks);
 
-		DataObject_Update(pWator, 0, 3);
+		DataObject_Update(m_pWator, 0, 2);
 		DataObject_Update(pTable);
 	}
 
 	SG_UI_Progress_Lock(false);
 
 	//-----------------------------------------------------
-	delete(pNext);
-	delete(pAge);
-	delete(pStarve);
+	m_Next  .Destroy();
+	m_Age   .Destroy();
+	m_Starve.Destroy();
 
 	if( is_Progress() )
 	{
-		Message_Add(CSG_String::Format(SG_T("%s %d %s"), _TL("Dead after"), i, _TL("Life Cycles")));
+		Message_Add(CSG_String::Format("%s %d %s", _TL("Dead after"), i, _TL("Life Cycles")));
 	}
 
 	return( true );
@@ -306,12 +293,12 @@ bool CWator::On_Execute(void)
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
-#define GET_NEIGHBOR			{	ix = pWator->Get_System().Get_xTo(i, x); if( ix < 0 ) ix = pWator->Get_NX() - 1; else if( ix >= pWator->Get_NX() ) ix = 0;\
-									iy = pWator->Get_System().Get_yTo(i, y); if( iy < 0 ) iy = pWator->Get_NY() - 1; else if( iy >= pWator->Get_NY() ) iy = 0;	}
+#define GET_NEIGHBOR			{	ix = m_pWator->Get_System().Get_xTo(i, x); if( ix < 0 ) ix = m_pWator->Get_NX() - 1; else if( ix >= m_pWator->Get_NX() ) ix = 0;\
+									iy = m_pWator->Get_System().Get_yTo(i, y); if( iy < 0 ) iy = m_pWator->Get_NY() - 1; else if( iy >= m_pWator->Get_NY() ) iy = 0;	}
 
 #define GET_NEIGHBOR_RANDOMLY	{	i = iNeighbor[(int)((double)rand() * nNeighbors / (double)RAND_MAX)];\
-									ix = pWator->Get_System().Get_xTo(i, x); if( ix < 0 ) ix = pWator->Get_NX() - 1; else if( ix >= pWator->Get_NX() ) ix = 0;\
-									iy = pWator->Get_System().Get_yTo(i, y); if( iy < 0 ) iy = pWator->Get_NY() - 1; else if( iy >= pWator->Get_NY() ) iy = 0;	}
+									ix = m_pWator->Get_System().Get_xTo(i, x); if( ix < 0 ) ix = m_pWator->Get_NX() - 1; else if( ix >= m_pWator->Get_NX() ) ix = 0;\
+									iy = m_pWator->Get_System().Get_yTo(i, y); if( iy < 0 ) iy = m_pWator->Get_NY() - 1; else if( iy >= m_pWator->Get_NY() ) iy = 0;	}
 
 //---------------------------------------------------------
 bool CWator::Next_Cycle(void)
@@ -323,37 +310,37 @@ bool CWator::Next_Cycle(void)
 			Age, Starve;
 
 	//-----------------------------------------------------
-	nFishes	= 0;
-	nSharks	= 0;
+	m_nFishes	= 0;
+	m_nSharks	= 0;
 
-	pNext->Assign(0.0);
+	m_Next.Assign(0.0);
 
 	switch( iDir )
 	{
-	default:
-	case 3:	ay	= pWator->Get_NY() - 1;	dy	= -1;	ax	= pWator->Get_NX() - 1;	dx	= -1;	iDir=0;	break;
-	case 2:	ay	= 0;					dy	=  1;	ax	= pWator->Get_NX() - 1;	dx	= -1;	iDir++;	break;
-	case 1:	ay	= pWator->Get_NY() - 1;	dy	= -1;	ax	= 0;					dx	=  1;	iDir++;	break;
-	case 0:	ay	= 0;					dy	=  1;	ax	= 0;					dx	=  1;	iDir++;	break;
+	default: ay	= m_pWator->Get_NY() - 1; dy = -1; ax = m_pWator->Get_NX() - 1; dx = -1; iDir=0; break;
+	case  2: ay	= 0;                      dy =  1; ax = m_pWator->Get_NX() - 1; dx = -1; iDir++; break;
+	case  1: ay	= m_pWator->Get_NY() - 1; dy = -1; ax = 0;                      dx =  1; iDir++; break;
+	case  0: ay	= 0;                      dy =  1; ax = 0;                      dx =  1; iDir++; break;
 	}
 
 	//-----------------------------------------------------
-	for(yy=0, y=ay; yy<pWator->Get_NY(); yy++, y+=dy)
+	for(yy=0, y=ay; yy<m_pWator->Get_NY(); yy++, y+=dy)
 	{
-		for(xx=0, x=ax; xx<pWator->Get_NX(); xx++, x+=dx)
+		for(xx=0, x=ax; xx<m_pWator->Get_NX(); xx++, x+=dx)
 		{
-			if( pWator->asByte(x, y) == FISH )
+			if( m_pWator->asByte(x, y) == FISH )
 			{
-				nFishes++;
+				m_nFishes++;
+
+				Age		= m_Age.asInt(x, y) + 1;
 
-				Age		= pAge->asInt(x, y) + 1;
-				pAge->Set_Value(x, y, 0);
+				m_Age.Set_Value(x, y, 0);
 
 				for(i=0, nNeighbors=0; i<8; i++)
 				{
 					GET_NEIGHBOR;
 
-					if( pWator->asByte(ix, iy) == 0 && pNext->asByte(ix, iy) == 0 )
+					if( m_pWator->asByte(ix, iy) == 0 && m_Next.asByte(ix, iy) == 0 )
 					{
 						iNeighbor[nNeighbors++]	= i;
 					}
@@ -363,48 +350,49 @@ bool CWator::Next_Cycle(void)
 				{
 					GET_NEIGHBOR_RANDOMLY;
 
-					pNext	->Set_Value(ix, iy, FISH);
-					pAge	->Set_Value(ix, iy, Age >= Fish_Birth ? 0 : Age);
+					m_Next.Set_Value(ix, iy, FISH);
+					m_Age .Set_Value(ix, iy, Age >= m_Fish_Birth ? 0 : Age);
 
-					if( Age >= Fish_Birth )
+					if( Age >= m_Fish_Birth )
 					{
-						pNext	->Set_Value( x,  y, FISH);
-						pAge	->Set_Value( x,  y, Fish_Birth * (double)rand() / (double)RAND_MAX);
+						m_Next.Set_Value(x, y, FISH);
+						m_Age .Set_Value(x, y, CSG_Random::Get_Uniform(0, m_Fish_Birth));
 					}
 					else
 					{
-						pWator	->Set_Value( x,  y, 0);
+						m_pWator->Set_Value(x, y, 0);
 					}
 				}
 				else
 				{
-					pNext	->Set_Value( x,  y, FISH);
-					pAge	->Set_Value( x,  y, Age >= Fish_Birth ? 0 : Fish_Birth);
+					m_Next.Set_Value(x, y, FISH);
+					m_Age .Set_Value(x, y, Age >= m_Fish_Birth ? 0 : m_Fish_Birth);
 				}
 			}
 		}
 	}
 
 	//-----------------------------------------------------
-	for(yy=0, y=ay; yy<pWator->Get_NY(); yy++, y+=dy)
+	for(yy=0, y=ay; yy<m_pWator->Get_NY(); yy++, y+=dy)
 	{
-		for(xx=0, x=ax; xx<pWator->Get_NX(); xx++, x+=dx)
+		for(xx=0, x=ax; xx<m_pWator->Get_NX(); xx++, x+=dx)
 		{
-			if( pWator->asByte(x, y) == SHARK )
+			if( m_pWator->asByte(x, y) == SHARK )
 			{
-				nSharks++;
+				m_nSharks++;
 
-				Age		= pAge->asInt(x, y) + 1;
-				pAge->Set_Value(x, y, 0);
+				Age		= m_Age.asInt(x, y) + 1;
 
-				Starve	= pStarve->asInt(x, y) + 1;
-				pStarve->Set_Value(x, y, 0);
+				m_Age.Set_Value(x, y, 0);
+
+				Starve	= m_Starve.asInt(x, y) + 1;
+				m_Starve.Set_Value(x, y, 0);
 
 				for(i=0, nNeighbors=0; i<8; i++)
 				{
 					GET_NEIGHBOR;
 
-					if( pNext->asByte(ix, iy) == FISH )
+					if( m_Next.asByte(ix, iy) == FISH )
 					{
 						iNeighbor[nNeighbors++]	= i;
 					}
@@ -414,31 +402,30 @@ bool CWator::Next_Cycle(void)
 				{
 					GET_NEIGHBOR_RANDOMLY;
 
-					nFishes--;
-					pWator	->Set_Value(ix, iy, 0);
-
-					pNext	->Set_Value(ix, iy, SHARK);
-					pAge	->Set_Value(ix, iy, Age >= Shark_Birth ? 0 : Age);
-					pStarve	->Set_Value(ix, iy, 0);
+					m_nFishes--;
+					m_pWator->Set_Value(ix, iy, 0);
+					m_Next   .Set_Value(ix, iy, SHARK);
+					m_Age    .Set_Value(ix, iy, Age >= m_Shark_Birth ? 0 : Age);
+					m_Starve .Set_Value(ix, iy, 0);
 
-					if( Age >= Shark_Birth )
+					if( Age >= m_Shark_Birth )
 					{
-						pNext	->Set_Value( x,  y, SHARK);
-						pAge	->Set_Value( x,  y, Shark_Birth * (double)rand() / (double)RAND_MAX);
-						pStarve	->Set_Value( x,  y, 0);
+						m_Next   .Set_Value(x, y, SHARK);
+						m_Age    .Set_Value(x, y, CSG_Random::Get_Uniform(0, m_Shark_Birth));
+						m_Starve .Set_Value(x, y, 0);
 					}
 					else
 					{
-						pWator	->Set_Value( x,  y, 0);
+						m_pWator->Set_Value(x, y, 0);
 					}
 				}
-				else if( Starve <= Shark_Starve )
+				else if( Starve <= m_Shark_Starve )
 				{
 					for(i=0, nNeighbors=0; i<8; i++)
 					{
 						GET_NEIGHBOR;
 
-						if( pWator->asByte(ix, iy) == 0 && pNext->asByte(ix, iy) == 0 )
+						if( m_pWator->asByte(ix, iy) == 0 && m_Next.asByte(ix, iy) == 0 )
 						{
 							iNeighbor[nNeighbors++]	= i;
 						}
@@ -448,39 +435,47 @@ bool CWator::Next_Cycle(void)
 					{
 						GET_NEIGHBOR_RANDOMLY;
 
-						pNext	->Set_Value(ix, iy, SHARK);
-						pAge	->Set_Value(ix, iy, Age >= Shark_Birth ? 0 : Age);
-						pStarve	->Set_Value(ix, iy, Starve);
+						m_Next  .Set_Value(ix, iy, SHARK);
+						m_Age   .Set_Value(ix, iy, Age >= m_Shark_Birth ? 0 : Age);
+						m_Starve.Set_Value(ix, iy, Starve);
 
-						if( Age >= Shark_Birth )
+						if( Age >= m_Shark_Birth )
 						{
-							pNext	->Set_Value( x,  y, SHARK);
-							pAge	->Set_Value( x,  y, Shark_Birth * (double)rand() / (double)RAND_MAX);
-							pStarve	->Set_Value( x,  y, Starve);
+							m_Next   .Set_Value(x, y, SHARK);
+							m_Age    .Set_Value(x, y, CSG_Random::Get_Uniform(0, m_Shark_Birth));
+							m_Starve .Set_Value(x, y, Starve);
 						}
 						else
 						{
-							pWator	->Set_Value( x,  y, 0);
+							m_pWator	->Set_Value( x,  y, 0);
 						}
 					}
 					else
 					{
-						pNext	->Set_Value( x,  y, SHARK);
-						pAge	->Set_Value( x,  y, Age >= Shark_Birth ? 0 : Shark_Birth);
-						pStarve	->Set_Value( x,  y, Starve);
+						m_Next  .Set_Value(x, y, SHARK);
+						m_Age   .Set_Value(x, y, Age >= m_Shark_Birth ? 0 : m_Shark_Birth);
+						m_Starve.Set_Value(x, y, Starve);
 					}
 				}
 				else
 				{
-					nSharks--;
+					m_nSharks--;
 				}
 			}
 		}
 	}
 
-	pWator->Assign(pNext);
+	//-----------------------------------------------------
+	#pragma omp parallel for private(x, y)
+	for(y=0; y<m_pWator->Get_NY(); y++)
+	{
+		for(x=0; x<m_pWator->Get_NX(); x++)
+		{
+			m_pWator->Set_Value(x, y, m_Next.asByte(x, y));
+		}
+	}
 
-	return( (nFishes > 0 && nFishes < pWator->Get_NCells()) || nSharks > 0 );
+	return( (m_nFishes > 0 && m_nFishes < m_pWator->Get_NCells()) || m_nSharks > 0 );
 }
 
 
diff --git a/src/modules/simulation/sim_cellular_automata/Wator.h b/src/modules/simulation/sim_cellular_automata/Wator.h
old mode 100644
new mode 100755
index 50b5efa..eba6d16
--- a/src/modules/simulation/sim_cellular_automata/Wator.h
+++ b/src/modules/simulation/sim_cellular_automata/Wator.h
@@ -87,24 +87,28 @@ class CWator : public CSG_Module
 public:
 	CWator(void);
 
-	virtual bool			needs_GUI		(void)	{	return( true );	}
+	virtual bool				needs_GUI				(void)	{	return( true );	}
 
 
 protected:
 
-	virtual bool			On_Execute(void);
+	virtual int					On_Parameters_Enable	(CSG_Parameters *pParameters, CSG_Parameter *pParameter);
+
+	virtual bool				On_Execute				(void);
 
 
 private:
 
-	int						Fish_Birth, Shark_Birth, Shark_Starve;
+	int							m_Fish_Birth, m_Shark_Birth, m_Shark_Starve;
+
+	sLong						m_nFishes, m_nSharks;
 
-	sLong					nFishes, nSharks;
+	CSG_Parameters_Grid_Target	m_Grid_Target;
 
-	CSG_Grid				*pWator, *pNext, *pAge, *pStarve;
+	CSG_Grid					*m_pWator, m_Next, m_Age, m_Starve;
 
 
-	bool					Next_Cycle(void);
+	bool						Next_Cycle				(void);
 
 };
 
diff --git a/src/modules/simulation/sim_ecosystems_hugget/Hugget_01.cpp b/src/modules/simulation/sim_ecosystems_hugget/Hugget_01.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_ecosystems_hugget/Hugget_01.h b/src/modules/simulation/sim_ecosystems_hugget/Hugget_01.h
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_ecosystems_hugget/Hugget_02.cpp b/src/modules/simulation/sim_ecosystems_hugget/Hugget_02.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_ecosystems_hugget/Hugget_02.h b/src/modules/simulation/sim_ecosystems_hugget/Hugget_02.h
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_ecosystems_hugget/Hugget_03.cpp b/src/modules/simulation/sim_ecosystems_hugget/Hugget_03.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_ecosystems_hugget/Hugget_03.h b/src/modules/simulation/sim_ecosystems_hugget/Hugget_03.h
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_ecosystems_hugget/MLB_Interface.cpp b/src/modules/simulation/sim_ecosystems_hugget/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_ecosystems_hugget/MLB_Interface.h b/src/modules/simulation/sim_ecosystems_hugget/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_ecosystems_hugget/Makefile.am b/src/modules/simulation/sim_ecosystems_hugget/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_erosion/MLB_Interface.cpp b/src/modules/simulation/sim_erosion/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_erosion/MLB_Interface.h b/src/modules/simulation/sim_erosion/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_erosion/MMF_SAGA.cpp b/src/modules/simulation/sim_erosion/MMF_SAGA.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_erosion/MMF_SAGA.h b/src/modules/simulation/sim_erosion/MMF_SAGA.h
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_erosion/Makefile.am b/src/modules/simulation/sim_erosion/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_fire_spreading/Forecasting.cpp b/src/modules/simulation/sim_fire_spreading/Forecasting.cpp
new file mode 100755
index 0000000..82ed1f9
--- /dev/null
+++ b/src/modules/simulation/sim_fire_spreading/Forecasting.cpp
@@ -0,0 +1,666 @@
+/**********************************************************
+ * Version $Id: Forecasting.cpp 911 2011-02-14 16:38:15Z reklov_w $
+ *********************************************************/
+/*******************************************************************************
+    Forecasting.cpp
+    Copyright (C) Victor Olaya
+    
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301, USA
+*******************************************************************************/ 
+
+//#include "../../../modules/grid/grid_tools/Grid_Gaps.h"
+
+#include "Forecasting.h"
+
+#include <time.h>
+
+#define MS2FTMIN (60.0 / 0.3048)
+#define FTMIN2MMIN 0.3048
+#define MIN_RATIO_BURNT_AREA 2.
+
+CForecasting::CForecasting(void){
+
+	Set_Name		(_TL("Fire Risk Analysis"));
+	Set_Author		(SG_T("(c) 2004 Victor Olaya"));
+	Set_Description	(_TW(
+		"Fire risk analysis based on the BEHAVE fire modeling system "
+		"supported by the U.S. Forest Service, Fire and Aviation Management. "
+		"Find more information on BEHAVE at the <i>Public Domain Software for the Wildland Fire Community</i> at "
+		"<a target=\"_blank\" href=\"http://fire.org\">http://fire.org</a>\n"
+		"\n"
+		"Reference:\n"
+		"Andrews, P.L. (1986): BEHAVE: Fire Behavior Prediction and Fuel Modeling System - "
+		"Burn Subsystem, Part 1. U.S. Department of Agriculture, Forest Service General, Technical Report INT-194. "
+	));
+
+	Parameters.Add_Grid(NULL, 
+						"DEM", 
+						_TL("DEM"), 
+						_TL(""), 
+						PARAMETER_INPUT);
+
+	Parameters.Add_Grid(NULL, 
+						"FUEL", 
+						_TL("Fuel Model"), 
+						_TL(""), 
+						PARAMETER_INPUT);
+
+	Parameters.Add_Grid(NULL, 
+						"WINDSPD", 
+						_TL("Wind Speed"),
+						_TL("Wind Speed (m/s)"), 
+						PARAMETER_INPUT);
+	
+	Parameters.Add_Grid(NULL, 
+						"WINDDIR", 
+						_TL("Wind Direction"), 
+						_TL("Wind Direction (degrees clockwise from north)"),
+						PARAMETER_INPUT);
+
+	Parameters.Add_Grid(NULL, 
+						"M1H", 
+						_TL("Dead Fuel Moisture 1H"), 
+						_TL(""), 
+						PARAMETER_INPUT);
+
+	Parameters.Add_Grid(NULL, 
+						"M10H", 
+						_TL("Dead Fuel Moisture 10H"),
+						_TL(""), 
+						PARAMETER_INPUT);
+
+	Parameters.Add_Grid(NULL, 
+						"M100H", 
+						_TL("Dead Fuel Moisture 100H"),
+						_TL(""), 
+						PARAMETER_INPUT);
+
+	Parameters.Add_Grid(NULL, 
+						"MHERB", 
+						_TL("Herbaceous Fuel Moisture"),
+						_TL(""), 
+						PARAMETER_INPUT);
+
+	Parameters.Add_Grid(NULL, 
+						"MWOOD", 
+						_TL("Wood Fuel Moisture"), 
+						_TL(""), 
+						PARAMETER_INPUT);
+
+	Parameters.Add_Grid(NULL, 
+						"VALUE", 
+						_TL("Value"), 
+						_TL(""), 
+						PARAMETER_INPUT_OPTIONAL);
+	
+	Parameters.Add_Grid(NULL, 
+						"BASEPROB", 
+						_TL("Base Probability"), 
+						_TL(""), 
+						PARAMETER_INPUT_OPTIONAL);	
+	
+	Parameters.Add_Grid(NULL, 
+						"DANGER", 
+						_TL("Danger"), 
+						_TL(""), 
+						PARAMETER_OUTPUT);
+	
+	Parameters.Add_Grid(NULL, 
+						"COMPPROB", 
+						_TL("Compound Probability"), 
+						_TL(""), 
+						PARAMETER_OUTPUT);
+
+	Parameters.Add_Grid(NULL, 
+						"PRIORITY", 
+						_TL("Priority Index"), 
+						_TL(""), 
+						PARAMETER_OUTPUT);
+
+	Parameters.Add_Value(NULL,
+						"MONTECARLO",
+						_TL("Number of Events"),
+						_TL("N\xc3\xbamero of Monte-Carlo events"),
+						PARAMETER_TYPE_Int,
+						1000,
+						1.,
+						true);
+
+	Parameters.Add_Value(NULL,
+						"INTERVAL",
+						_TL("Fire Length"),
+						_TL("Fire Length (min)"),
+						PARAMETER_TYPE_Double,
+						100,
+						1.,
+						true);
+
+
+}//constructor
+
+CForecasting::~CForecasting(void)
+{
+}//destructor
+
+bool CForecasting::On_Execute(void){
+
+	AssignParameters();
+	CalculateGrids();
+
+	delete m_pSlopeGrid;
+	delete m_pAspectGrid;
+
+	return true;
+
+}//method
+
+bool CForecasting::AssignParameters(){
+
+	int x,y;
+
+	m_pDEM = Parameters("DEM")->asGrid();
+	m_pFuelGrid = Parameters("FUEL")->asGrid();
+	m_pWindDirGrid = Parameters("WINDDIR")->asGrid();
+	m_pWindSpdGrid = Parameters("WINDSPD")->asGrid();
+	m_pM1Grid = Parameters("M1H")->asGrid();
+	m_pM10Grid = Parameters("M10H")->asGrid();
+	m_pM100Grid = Parameters("M100H")->asGrid();
+	m_pMHerbGrid = Parameters("MHERB")->asGrid();
+	m_pMWoodGrid = Parameters("MWOOD")->asGrid();
+	m_pDangerGrid = Parameters("DANGER")->asGrid();
+	m_pValueGrid = Parameters("VALUE")->asGrid();
+	m_pBaseProbabilityGrid = Parameters("BASEPROB")->asGrid();
+	m_pCompoundProbabilityGrid = Parameters("COMPPROB")->asGrid();
+	m_pPriorityIndexGrid = Parameters("PRIORITY")->asGrid();
+	m_iInterval = Parameters("INTERVAL")->asInt();
+	m_iNumEvents = Parameters("MONTECARLO")->asInt();
+
+	/* create a standard fuel model catalog and a flame length table. */
+    m_Catalog = Fire_FuelCatalogCreateStandard("Standard", 13);
+    Fire_FlameLengthTable(m_Catalog, 500, 0.1);
+
+	if (!m_pBaseProbabilityGrid){
+		m_pBaseProbabilityGrid = SG_Create_Grid(m_pDEM, SG_DATATYPE_Double);
+		m_pBaseProbabilityGrid->Assign(1);
+	}//if
+	if (!m_pValueGrid){
+		m_pValueGrid = SG_Create_Grid(m_pDEM, SG_DATATYPE_Double);
+		m_pValueGrid->Assign(1);
+	}//if
+
+	//substitute no-data values
+	for(y=0; y<Get_NY() && Set_Progress(y); y++){		
+		for(x=0; x<Get_NX(); x++){
+
+			if (m_pWindSpdGrid->is_NoData(x, y)){
+				m_pWindSpdGrid->Set_Value(x, y, 0.);
+			}//if
+			if (m_pWindDirGrid->is_NoData(x, y)){
+				m_pWindDirGrid->Set_Value(x, y, 0.);
+			}//if
+			if (m_pM1Grid->is_NoData(x, y)){
+				m_pM1Grid->Set_Value(x, y, 0.);
+			}//if
+			if (m_pM10Grid->is_NoData(x, y)){
+				m_pM10Grid->Set_Value(x, y, 0.);
+			}//if
+			if (m_pM100Grid->is_NoData(x, y)){
+				m_pM100Grid->Set_Value(x, y, 0.);
+			}//if
+			if (m_pMHerbGrid->is_NoData(x, y)){
+				m_pMHerbGrid->Set_Value(x, y, 0.);
+			}//if
+			if (m_pMWoodGrid->is_NoData(x, y)){
+				m_pMWoodGrid->Set_Value(x, y, 0.);
+			}//if
+			if (m_pBaseProbabilityGrid->is_NoData(x, y)){
+				m_pBaseProbabilityGrid->Set_Value(x, y, 0.);
+			}//if
+
+		}//for
+	}//for
+
+
+	//-----------------------------------------------------
+	// calculate slope and aspect using CSG_Grid class'
+	// built-in function (after Zevenbergen & Thorne)...
+
+	m_pSlopeGrid	= SG_Create_Grid(m_pDEM, SG_DATATYPE_Double);
+	m_pAspectGrid	= SG_Create_Grid(m_pDEM, SG_DATATYPE_Double);
+
+	for(y=0; y<Get_NY() && Set_Progress(y); y++)
+	{		
+		for(x=0; x<Get_NX(); x++)
+		{
+			double	slope, aspect;
+
+			if( m_pDEM->Get_Gradient(x, y, slope, aspect) )
+			{
+				m_pSlopeGrid	->Set_Value(x, y, slope);
+				m_pAspectGrid	->Set_Value(x, y, aspect);
+			}
+			else
+			{
+				m_pSlopeGrid	->Set_NoData(x, y);
+				m_pAspectGrid	->Set_NoData(x, y);
+			}
+		}
+	}
+
+
+	//-----------------------------------------------------
+	m_pTimeGrid = SG_Create_Grid(m_pDEM, SG_DATATYPE_Double);
+
+	m_pTimeGrid->Assign((double)0);
+	m_pDangerGrid->Assign((double)0);
+	m_pCompoundProbabilityGrid->Assign((double)0);	
+	
+	//m_pPriorityIndexGrid = Get_SafeNew_Grid(m_pDEM, SG_DATATYPE_Double);
+
+	return true;
+
+}//method
+
+
+void CForecasting::CalculateGrids(){
+	
+	int x,y;
+	int i;
+	int iRecommendedNumFires;
+	double dDanger;
+	double dTotalBurntArea = 0;
+	CSG_String sMessage;
+
+	m_CentralPoints	.Clear();
+	m_AdjPoints		.Clear();
+
+	srand((unsigned int)time(NULL));
+
+	Process_Set_Text(_TL("Calculating danger..."));
+	for(i=0; i<m_iNumEvents && Set_Progress(i, m_iNumEvents); i++){
+		x = rand() % (m_pDEM->Get_NX()-1);
+		y = rand() % (m_pDEM->Get_NY()-1);
+		m_CentralPoints.Clear();
+		m_CentralPoints.Add(x,y);
+		m_pTimeGrid->Set_Value(x,y,0.0);	
+		dDanger = CalculateFireSpreading();
+		dTotalBurntArea += dDanger;
+		m_pDangerGrid->Set_Value(x, y, dDanger);		
+	}//for
+
+	m_CentralPoints	.Clear();
+	m_AdjPoints		.Clear();
+
+	m_pDangerGrid->Set_NoData_Value(0.0);
+	m_pDangerGrid->Set_Unit(_TL("m2/h"));
+	
+	Process_Set_Text(_TL("Closing Gaps..."));
+
+	if(	!Gaps_Close(m_pDangerGrid) )
+	{
+		return;
+	}//if
+
+	for (y=0; y<Get_NY(); y++){
+		for (x=0; x<Get_NX(); x++){
+			m_pCompoundProbabilityGrid->Set_Value(x,y, 
+				m_pCompoundProbabilityGrid->asFloat(x,y) / (float)m_iNumEvents);
+			m_pPriorityIndexGrid->Set_Value(x, y, m_pCompoundProbabilityGrid->asFloat(x,y)*
+				m_pDangerGrid->asFloat(x,y));
+		}//for
+	}//for
+
+	float dRatio = (float)(dTotalBurntArea / (m_pDEM->Get_Cellsize() * m_pDEM->Get_Cellsize()));
+	if (dRatio < MIN_RATIO_BURNT_AREA){
+		iRecommendedNumFires =(int)((float) m_iNumEvents / dRatio * (float) MIN_RATIO_BURNT_AREA);
+		sMessage.Printf(
+			_TL("** Warning : Number of events might not be representative.\nMinimum number recommended: ")
+		);
+		sMessage	+= SG_Get_String(iRecommendedNumFires, 0);
+		sMessage	+= SG_T("\n");
+		Message_Add(sMessage.c_str());
+	}//if
+
+}//method
+
+double CForecasting::CalculateFireSpreading(){
+
+	int x,y;
+	int x2,y2;
+	int n;
+	bool bReturn = false;
+	/* neighbor's address*/   /* N  NE   E  SE   S  SW   W  NW */
+	static int nX[8] =        {  0,  1,  1,  1,  0, -1, -1, -1};
+    static int nY[8] =        {  1,  1,  0, -1, -1, -1,  0,  1};
+	double nDist[8];          /* distance to each neighbor */
+    double nAzm[8];           /* compass azimuth to each neighbor (0=N) */	
+	size_t modelNumber;       /* fuel model number at current cell */
+    double moisture[6];       /* fuel moisture content at current cell */
+    double dSpreadRate;       /* spread rate in direction of neighbor */
+    double dSpreadTime;       /* time to spread from cell to neighbor */
+    double dIgnTime;          /* time neighbor is ignited by current cell */
+	double dWindSpd;
+	double dBurntValue = 0;
+	double dProbability;
+
+	m_pTimeGrid->Assign(0.0);
+	
+    for (n=0; n<8; n++){
+        nDist[n] = sqrt ( nX[n] * m_pDEM->Get_Cellsize() * nX[n] * m_pDEM->Get_Cellsize()
+                        + nY[n] * m_pDEM->Get_Cellsize() * nY[n] * m_pDEM->Get_Cellsize() );
+        nAzm[n] = n * 45.;
+    }//for
+
+	x = m_CentralPoints.Get_X(0);
+	y = m_CentralPoints.Get_Y(0);
+	dProbability = (float)(rand()) / (float)(RAND_MAX); 
+
+	if (m_pBaseProbabilityGrid->asFloat(x,y) < dProbability){
+		return 0;
+	}//if
+
+	while (m_CentralPoints.Get_Count()!=0){
+
+		for (int iPt=0; iPt<m_CentralPoints.Get_Count();iPt++){
+
+			x = m_CentralPoints.Get_X(iPt);
+			y = m_CentralPoints.Get_Y(iPt);
+
+			if (!m_pDEM->is_NoData(x,y) && !m_pFuelGrid->is_NoData(x,y)){
+
+				modelNumber = (size_t) m_pFuelGrid->asInt(x, y);
+				moisture[0] = m_pM1Grid->asFloat(x, y);
+				moisture[1] = m_pM10Grid->asFloat(x, y);
+				moisture[2] = m_pM100Grid->asFloat(x, y);
+				moisture[3] = m_pM100Grid->asFloat(x, y);
+				moisture[4] = m_pMHerbGrid->asFloat(x, y);;
+				moisture[5] = m_pMWoodGrid->asFloat(x, y);
+				dWindSpd = m_pWindSpdGrid->asFloat(x,y)  * MS2FTMIN; 
+				Fire_SpreadNoWindNoSlope(m_Catalog, modelNumber, moisture);
+				Fire_SpreadWindSlopeMax(m_Catalog, modelNumber, dWindSpd,
+										 m_pWindDirGrid->asFloat(x,y), tan(m_pSlopeGrid->asFloat(x,y)),
+										 m_pAspectGrid->asFloat(x,y));
+
+				for (n=0; n<8; n++){
+					x2 = x + nX[n];
+					y2 = y + nY[n];
+					if (m_pTimeGrid->is_InGrid(x2,y2,false)){
+						Fire_SpreadAtAzimuth(m_Catalog, modelNumber, nAzm[n], FIRE_NONE);
+						dSpreadRate = Fuel_SpreadAny(m_Catalog, modelNumber); // in ft/min (awkward...)					
+						dSpreadRate *= FTMIN2MMIN; //a bit better...
+						if (dSpreadRate > Smidgen){
+							dSpreadTime = nDist[n] / dSpreadRate;
+							dIgnTime = 	m_pTimeGrid->asDouble(x,y) + dSpreadTime;												
+							if (dIgnTime < m_iInterval){
+								if (m_pTimeGrid->asDouble(x2,y2) == 0.0 
+										|| m_pTimeGrid->asDouble(x2, y2)>dIgnTime){
+									if (m_pTimeGrid->asDouble(x2, y2)==0.0){
+										dBurntValue += m_pValueGrid->asDouble(x2, y2);
+										m_pCompoundProbabilityGrid->Set_Value(x2,y2,
+											m_pCompoundProbabilityGrid->asFloat(x2,y2) + 1);
+									}//if
+									m_pTimeGrid->Set_Value(x2, y2, dIgnTime);
+									m_AdjPoints.Add(x2,y2);									
+								}//if							
+							}//if
+						}//if					
+					}//if
+				}//for
+			}//if
+		}//for
+
+		m_CentralPoints.Clear();
+		for (int i=0; i<m_AdjPoints.Get_Count(); i++){
+			x= m_AdjPoints.Get_X(i);
+			y = m_AdjPoints.Get_Y(i);
+			m_CentralPoints.Add(x, y);
+		}//for
+		m_AdjPoints.Clear();
+
+	}//while
+
+	return dBurntValue;
+
+}//method
+
+
+///////////////////////////////////////////////////////////
+//														 //
+//														 //
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+bool CForecasting::Gaps_Close(CSG_Grid *pInput)
+{
+	int			iStep, iStart, n;
+	double		max, Threshold;
+	CSG_Grid	*pResult, *pTension_Keep, *pTension_Temp;
+
+	//-----------------------------------------------------
+	pResult		= pInput;
+	pInput		= SG_Create_Grid(pInput);
+	pInput->Assign(pResult);
+
+	//-----------------------------------------------------
+	Threshold	= 0.1;
+
+	n			= Get_NX() > Get_NY() ? Get_NX() : Get_NY();
+	iStep		= 0;
+	do	{	iStep++;	}	while( pow(2.0, iStep + 1) < n );
+	iStart		= (int)pow(2.0, iStep);
+
+	pTension_Keep		= new CSG_Grid(pResult, SG_DATATYPE_Byte);
+	pTension_Temp		= new CSG_Grid(pResult);
+
+	pResult->Assign_NoData();
+
+	for(iStep=iStart; iStep>=1; iStep/=2)
+	{
+		Gaps_Tension_Init(iStep, pTension_Temp, pTension_Keep, pResult, pInput);
+
+		do
+		{
+			max		= Gaps_Tension_Step(iStep, pTension_Temp, pTension_Keep, pResult);
+		}
+		while( max > Threshold && Process_Get_Okay(true) );
+	}
+
+	//-----------------------------------------------------
+	delete(pTension_Keep);
+	delete(pTension_Temp);
+	delete(pInput);
+
+	return( true );
+}
+
+//---------------------------------------------------------
+void CForecasting::Gaps_Tension_Init(int iStep, CSG_Grid *pTension_Temp, CSG_Grid *pTension_Keep, CSG_Grid *pResult, CSG_Grid *pInput)
+{
+	int		x, y, i, ix, iy, nx, ny, nz;
+	double	z;
+
+	//-----------------------------------------------------
+	// 1. Channels...
+
+	pTension_Temp->Assign_NoData();
+	pTension_Keep->Assign();
+
+	for(y=0; y<Get_NY(); y+=iStep)
+	{
+		ny	= y + iStep < Get_NY() ? y + iStep : Get_NY();
+
+		for(x=0; x<Get_NX(); x+=iStep)
+		{
+			if( !pInput->is_NoData(x, y) )
+			{
+				pTension_Temp->Set_Value(x, y, pInput->asDouble(x, y) );
+				pTension_Keep->Set_Value(x, y, 1.0);
+			}
+			else
+			{
+				nx	= x + iStep < Get_NX() ? x + iStep : Get_NX();
+				nz	= 0;
+				z	= 0.0;
+
+				for(iy=y; iy<ny; iy++)
+				{
+					for(ix=x; ix<nx; ix++)
+					{
+						if( pInput->is_InGrid(ix, iy) )
+						{
+							z	+= pInput->asDouble(ix, iy);
+							nz++;
+						}
+					}
+				}
+
+				if( nz > 0 )
+				{
+					pTension_Temp->Set_Value(x, y, z / (double)nz );
+					pTension_Keep->Set_Value(x, y, 1.0);
+				}
+			}
+		}
+	}
+
+	//-----------------------------------------------------
+	// 2. Previous Iteration...
+
+	for(y=0; y<Get_NY(); y+=iStep)
+	{
+		for(x=0; x<Get_NX(); x+=iStep)
+		{
+			if( pTension_Keep->asByte(x, y) == false )
+			{
+				if( !pResult->is_NoData(x, y) )
+				{
+					pTension_Temp->Set_Value(x, y, pResult->asDouble(x, y));
+				}
+				else
+				{
+					nz	= 0;
+					z	= 0.0;
+
+					for(i=0; i<8; i++)
+					{
+						ix	= x + iStep * Get_System()->Get_xTo(i);
+						iy	= y + iStep * Get_System()->Get_yTo(i);
+
+						if( pResult->is_InGrid(ix, iy) )
+						{
+							z	+= pResult->asDouble(ix, iy);
+							nz++;
+						}
+					}
+
+					if( nz > 0.0 )
+					{
+						pTension_Temp->Set_Value(x, y, z / (double)nz);
+					}
+					else
+					{
+						pTension_Temp->Set_Value(x, y, pInput->asDouble(x, y));
+					}
+				}
+			}
+		}
+	}
+
+	//-----------------------------------------------------
+	// 3. ...
+
+	pResult->Assign(pTension_Temp);
+}
+
+//---------------------------------------------------------
+double CForecasting::Gaps_Tension_Step(int iStep, CSG_Grid *pTension_Temp, CSG_Grid *pTension_Keep, CSG_Grid *pResult)
+{
+	int		x, y;
+	double	d, dMax;
+
+	dMax	= 0.0;
+
+	for(y=0; y<Get_NY(); y+=iStep)
+	{
+		for(x=0; x<Get_NX(); x+=iStep)
+		{
+			if( pTension_Keep->asByte(x, y) == false )
+			{
+				d	= Gaps_Tension_Change(x, y, iStep, pResult);
+
+				pTension_Temp->Set_Value(x, y, d);
+
+				d	= fabs(d - pResult->asDouble(x, y));
+
+				if( d > dMax )
+				{
+					dMax	= d;
+				}
+			}
+		}
+	}
+
+	for(y=0; y<Get_NY(); y+=iStep)
+	{
+		for(x=0; x<Get_NX(); x+=iStep)
+		{
+			if( pTension_Keep->asByte(x, y) == false )
+			{
+				pResult->Set_Value(x, y, pTension_Temp->asDouble(x, y));
+			}
+		}
+	}
+
+	return( dMax );
+}
+
+//---------------------------------------------------------
+double CForecasting::Gaps_Tension_Change(int x, int y, int iStep, CSG_Grid *pResult)
+{
+	int		i, ix, iy;
+	double	n, d, dz;
+
+	for(i=0, d=0.0, n=0.0; i<8; i++)
+	{
+		ix	= x + iStep * Get_System()->Get_xTo(i);
+		iy	= y + iStep * Get_System()->Get_yTo(i);
+
+		if( pResult->is_InGrid(ix, iy) )
+		{
+			dz	= 1.0 / Get_System()->Get_UnitLength(i);
+			d	+= dz * pResult->asDouble(ix, iy);
+			n	+= dz;
+		}
+	}
+
+	if( n > 0.0 )
+	{
+		d	/= n;
+
+		return( d );
+	}
+
+	return( pResult->asDouble(x, y) );
+}
+
+
+///////////////////////////////////////////////////////////
+//														 //
+//														 //
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
diff --git a/src/modules/simulation/sim_fire_spreading/Forecasting.h b/src/modules/simulation/sim_fire_spreading/Forecasting.h
new file mode 100755
index 0000000..728d56a
--- /dev/null
+++ b/src/modules/simulation/sim_fire_spreading/Forecasting.h
@@ -0,0 +1,84 @@
+/**********************************************************
+ * Version $Id: Forecasting.h 911 2011-02-14 16:38:15Z reklov_w $
+ *********************************************************/
+/*******************************************************************************
+    Forecasting.h
+    Copyright (C) Victor Olaya
+    
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301, USA
+*******************************************************************************/ 
+
+#if _MSC_VER > 1000
+#pragma once
+#endif // _MSC_VER > 1000
+
+#include "MLB_Interface.h"
+#include "fireLib.h"
+
+class CForecasting : public CSG_Module_Grid {
+
+private:
+
+	CSG_Grid *m_pDEM;    
+    CSG_Grid *m_pWindSpdGrid;       /* ptr to wind speed map (m/s) */
+    CSG_Grid *m_pWindDirGrid;       /* ptr to wind direction map (deg from north) */
+    CSG_Grid *m_pM1Grid;            /* ptr to 1-hr dead fuel moisture map */
+    CSG_Grid *m_pM10Grid;           /* ptr to 10-hr dead fuel moisture map */
+    CSG_Grid *m_pM100Grid;          /* ptr to 100-hr dead fuel moisture map */
+    CSG_Grid *m_pMHerbGrid;         /* ptr to live herbaceous fuel moisture map */
+    CSG_Grid *m_pMWoodGrid;         /* ptr to live stem fuel moisture map */
+	CSG_Grid *m_pFuelGrid;          /* ptr to fuel model map */
+	CSG_Grid *m_pValueGrid;		 /* ptr to cell value map */
+
+	CSG_Grid *m_pDangerGrid;       /* ptr to danger map (in burnt m2 / h) */
+	CSG_Grid *m_pBaseProbabilityGrid; 
+	CSG_Grid *m_pCompoundProbabilityGrid;
+
+	CSG_Grid *m_pPriorityIndexGrid;
+
+    CSG_Grid *m_pSlopeGrid;         /* ptr to slope map (rise/reach) */
+    CSG_Grid *m_pAspectGrid;        /* ptr to aspect map (degrees from north) */
+
+	CSG_Grid *m_pTimeGrid;
+	
+	FuelCatalogPtr m_Catalog;    /* fuel catalog handle */
+
+	CSG_Points_Int	m_CentralPoints;
+	CSG_Points_Int	m_AdjPoints;
+
+	int m_iInterval;
+	int m_iNumEvents;
+
+	bool AssignParameters();
+	void CalculateGrids();	
+	double CalculateFireSpreading();
+
+	bool	Gaps_Close			(CSG_Grid *pInput);
+	void	Gaps_Tension_Init	(int iStep, CSG_Grid *pTension_Temp, CSG_Grid *pTension_Keep, CSG_Grid *pResult, CSG_Grid *pInput);
+	double	Gaps_Tension_Step	(int iStep, CSG_Grid *pTension_Temp, CSG_Grid *pTension_Keep, CSG_Grid *pResult);
+	double	Gaps_Tension_Change	(int x, int y, int iStep, CSG_Grid *pResult);
+
+
+public:
+
+	CForecasting(void);
+	virtual ~CForecasting(void);
+
+protected:
+
+	virtual bool On_Execute(void);
+
+};
+
diff --git a/src/modules/io/io_gps/MLB_Interface.cpp b/src/modules/simulation/sim_fire_spreading/MLB_Interface.cpp
old mode 100644
new mode 100755
similarity index 71%
copy from src/modules/io/io_gps/MLB_Interface.cpp
copy to src/modules/simulation/sim_fire_spreading/MLB_Interface.cpp
index 60f9625..142dba6
--- a/src/modules/io/io_gps/MLB_Interface.cpp
+++ b/src/modules/simulation/sim_fire_spreading/MLB_Interface.cpp
@@ -9,7 +9,7 @@
 //    System for an Automated Geo-Scientific Analysis    //
 //                                                       //
 //                    Module Library:                    //
-//                      Models                           //
+//                      Fire_Spreading                   //
 //                                                       //
 //-------------------------------------------------------//
 //                                                       //
@@ -40,14 +40,10 @@
 //                                                       //
 //-------------------------------------------------------//
 //                                                       //
-//    contact:    Olaf Conrad                            //
-//                Institute of Geography                 //
-//                University of Goettingen               //
-//                Goldschmidtstr. 5                      //
-//                37077 Goettingen                       //
-//                Germany                                //
+//    e-mail:     volaya at saga-gis.org                    //
 //                                                       //
-//    e-mail:     oconrad at saga-gis.org                   //
+//    contact:    Victor Olaya                           //
+//                Spain                                  //
 //                                                       //
 ///////////////////////////////////////////////////////////
 
@@ -58,67 +54,58 @@
 //														 //
 ///////////////////////////////////////////////////////////
 
-//---------------------------------------------------------
-// 1. Include the appropriate SAGA-API header...
-
 #include "MLB_Interface.h"
 
-
-//---------------------------------------------------------
-// 2. Place general module library informations here...
-
 CSG_String Get_Info(int i)
 {
 	switch( i )
 	{
 	case MLB_INFO_Name:	default:
-		return( _TL("GPS Tools") );
+		return( _TL("Fire Spreading Analysis") );
 
 	case MLB_INFO_Category:
-		return( _TL("Import/Export") );
-
+		return( _TL("Simulation") );
+
 	case MLB_INFO_Author:
 		return( SG_T("Victor Olaya (c) 2004") );
 
 	case MLB_INFO_Description:
-		return( _TL("Tools for GPS data handling.") );
+		return( _TW(
+			"Fire spreading analyses based on the BEHAVE fire modeling system "
+			"supported by the U.S. Forest Service, Fire and Aviation Management. "
+			"Find more information on BEHAVE at the <i>Public Domain Software for the Wildland Fire Community</i> at "
+			"<a target=\"_blank\" href=\"http://fire.org\">http://fire.org</a>\n"
+			"\n"
+			"Reference:\n"
+			"Andrews, P.L. (1986): BEHAVE: Fire Behavior Prediction and Fuel Modeling System - "
+			"Burn Subsystem, Part 1. U.S. Department of Agriculture, Forest Service General, Technical Report INT-194. "
+		));
 
 	case MLB_INFO_Version:
 		return( SG_T("1.0") );
 
 	case MLB_INFO_Menu_Path:
-		return( _TL("File|GPS Import") );
+		return( _TL("Simulation|Fire Spreading") );
 	}
 }
 
-
-//---------------------------------------------------------
-// 3. Include the headers of your modules here...
-
-#include "gpx2shp.h"
-#include "GPSBabel.h"
-
-//---------------------------------------------------------
-// 4. Allow your modules to be created here...
+#include "Simulate.h"
+#include "Forecasting.h"
 
 CSG_Module *		Create_Module(int i)
 {
-	// Don't forget to continuously enumerate the case switches
-	// when adding new modules! Also bear in mind that the
-	// enumeration always has to start with [case 0:] and
-	// that [default:] must return NULL!...
 
 	CSG_Module	*pModule;
 
 	switch( i )
 	{
 	case 0:
-		pModule	= new CGPX2SHP;
-		break;	
-		
+		pModule	= new CForecasting;
+		break;
+
 	case 1:
-		pModule	= new CGPSBabel;
-		break;	
+		pModule	= new CSimulate;
+		break;
 
 	default:
 		pModule	= NULL;
@@ -139,5 +126,5 @@ CSG_Module *		Create_Module(int i)
 //{{AFX_SAGA
 
 	MLB_INTERFACE
-		
+
 //}}AFX_SAGA
diff --git a/src/modules/terrain_analysis/ta_profiles/MLB_Interface.h b/src/modules/simulation/sim_fire_spreading/MLB_Interface.h
old mode 100644
new mode 100755
similarity index 94%
copy from src/modules/terrain_analysis/ta_profiles/MLB_Interface.h
copy to src/modules/simulation/sim_fire_spreading/MLB_Interface.h
index 20dc76c..f8c09f4
--- a/src/modules/terrain_analysis/ta_profiles/MLB_Interface.h
+++ b/src/modules/simulation/sim_fire_spreading/MLB_Interface.h
@@ -9,7 +9,7 @@
 //      System for Automated Geoscientific Analyses      //
 //                                                       //
 //                    Module Library:                    //
-//                     ta_profiles                       //
+//                   Terrain_Analysis                    //
 //                                                       //
 //-------------------------------------------------------//
 //                                                       //
@@ -40,8 +40,6 @@
 //                                                       //
 //-------------------------------------------------------//
 //                                                       //
-//    e-mail:     oconrad at saga-gis.org                   //
-//                                                       //
 //    contact:    Olaf Conrad                            //
 //                Institute of Geography                 //
 //                University of Goettingen               //
@@ -49,6 +47,8 @@
 //                37077 Goettingen                       //
 //                Germany                                //
 //                                                       //
+//    e-mail:     oconrad at saga-gis.org                   //
+//                                                       //
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
@@ -61,12 +61,12 @@
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
-#ifndef HEADER_INCLUDED__ta_profiles_H
-#define HEADER_INCLUDED__ta_profiles_H
+#ifndef HEADER_INCLUDED__MLB_INTERFACE_H
+#define HEADER_INCLUDED__MLB_INTERFACE_H
 
 //---------------------------------------------------------
 #include <saga_api/saga_api.h>
 
 
 //---------------------------------------------------------
-#endif // #ifndef HEADER_INCLUDED__ta_profiles_H
+#endif // #ifndef HEADER_INCLUDED__MLB_INTERFACE_H
diff --git a/src/modules/simulation/sim_cellular_automata/Makefile.am b/src/modules/simulation/sim_fire_spreading/Makefile.am
old mode 100644
new mode 100755
similarity index 53%
copy from src/modules/simulation/sim_cellular_automata/Makefile.am
copy to src/modules/simulation/sim_fire_spreading/Makefile.am
index 3c5cb25..08acfe5
--- a/src/modules/simulation/sim_cellular_automata/Makefile.am
+++ b/src/modules/simulation/sim_fire_spreading/Makefile.am
@@ -8,17 +8,19 @@ if SAGA_UNICODE
 UC_DEFS = -D_SAGA_UNICODE
 endif
 DEF_SAGA           = -D_SAGA_LINUX -D_TYPEDEF_BYTE -D_TYPEDEF_WORD
-CXX_INCS           = -I$(top_srcdir)/src/saga_core
+CXX_INCS           = -I$(top_srcdir)/src/saga_core -I$(top_srcdir)/src/modules/grid/grid_tools
 AM_CXXFLAGS        = -fPIC $(CXX_INCS) $(DEF_SAGA) $(UC_DEFS) $(DBGFLAGS) $(GOMPFLAGS)
 AM_LDFLAGS         = -fPIC -shared -avoid-version
-pkglib_LTLIBRARIES = libsim_cellular_automata.la
-libsim_cellular_automata_la_SOURCES =\
-Life.cpp\
+pkglib_LTLIBRARIES = libsim_fire_spreading.la
+libsim_fire_spreading_la_SOURCES =\
+fireLib.c\
+Forecasting.cpp\
 MLB_Interface.cpp\
-Wator.cpp\
-Life.h\
+Simulate.cpp\
+fireLib.h\
+Forecasting.h\
 MLB_Interface.h\
-Wator.h
+Simulate.h
 
-libsim_cellular_automata_la_LIBADD = $(top_srcdir)/src/saga_core/saga_api/libsaga_api.la
+libsim_fire_spreading_la_LIBADD = $(top_srcdir)/src/saga_core/saga_api/libsaga_api.la
 
diff --git a/src/modules/simulation/sim_hydrology/Makefile.in b/src/modules/simulation/sim_fire_spreading/Makefile.in
similarity index 88%
copy from src/modules/simulation/sim_hydrology/Makefile.in
copy to src/modules/simulation/sim_fire_spreading/Makefile.in
index 2dc5e76..5512c8d 100644
--- a/src/modules/simulation/sim_hydrology/Makefile.in
+++ b/src/modules/simulation/sim_fire_spreading/Makefile.in
@@ -78,7 +78,7 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-subdir = src/modules/simulation/sim_hydrology
+subdir = src/modules/simulation/sim_fire_spreading
 DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
 	$(top_srcdir)/depcomp
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
@@ -125,12 +125,12 @@ am__uninstall_files_from_dir = { \
   }
 am__installdirs = "$(DESTDIR)$(pkglibdir)"
 LTLIBRARIES = $(pkglib_LTLIBRARIES)
-libsim_hydrology_la_DEPENDENCIES =  \
+libsim_fire_spreading_la_DEPENDENCIES =  \
 	$(top_srcdir)/src/saga_core/saga_api/libsaga_api.la
-am_libsim_hydrology_la_OBJECTS = DVWK_SoilMoisture.lo \
-	diffuse_pollution_risk.lo idw.lo KinWav_D8.lo MLB_Interface.lo \
-	topmodel.lo topmodel_values.lo WaterRetentionCapacity.lo
-libsim_hydrology_la_OBJECTS = $(am_libsim_hydrology_la_OBJECTS)
+am_libsim_fire_spreading_la_OBJECTS = fireLib.lo Forecasting.lo \
+	MLB_Interface.lo Simulate.lo
+libsim_fire_spreading_la_OBJECTS =  \
+	$(am_libsim_fire_spreading_la_OBJECTS)
 AM_V_lt = $(am__v_lt_ at AM_V@)
 am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
 am__v_lt_0 = --silent
@@ -151,24 +151,6 @@ DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/depcomp
 am__depfiles_maybe = depfiles
 am__mv = mv -f
-CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
-LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CXXFLAGS) $(CXXFLAGS)
-AM_V_CXX = $(am__v_CXX_ at AM_V@)
-am__v_CXX_ = $(am__v_CXX_ at AM_DEFAULT_V@)
-am__v_CXX_0 = @echo "  CXX     " $@;
-am__v_CXX_1 = 
-CXXLD = $(CXX)
-CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
-	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CXXLD = $(am__v_CXXLD_ at AM_V@)
-am__v_CXXLD_ = $(am__v_CXXLD_ at AM_DEFAULT_V@)
-am__v_CXXLD_0 = @echo "  CXXLD   " $@;
-am__v_CXXLD_1 = 
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
 LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
@@ -187,8 +169,26 @@ AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
 am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
 am__v_CCLD_0 = @echo "  CCLD    " $@;
 am__v_CCLD_1 = 
-SOURCES = $(libsim_hydrology_la_SOURCES)
-DIST_SOURCES = $(libsim_hydrology_la_SOURCES)
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CXXFLAGS) $(CXXFLAGS)
+AM_V_CXX = $(am__v_CXX_ at AM_V@)
+am__v_CXX_ = $(am__v_CXX_ at AM_DEFAULT_V@)
+am__v_CXX_0 = @echo "  CXX     " $@;
+am__v_CXX_1 = 
+CXXLD = $(CXX)
+CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CXXLD = $(am__v_CXXLD_ at AM_V@)
+am__v_CXXLD_ = $(am__v_CXXLD_ at AM_DEFAULT_V@)
+am__v_CXXLD_0 = @echo "  CXXLD   " $@;
+am__v_CXXLD_1 = 
+SOURCES = $(libsim_fire_spreading_la_SOURCES)
+DIST_SOURCES = $(libsim_fire_spreading_la_SOURCES)
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
@@ -368,33 +368,25 @@ top_srcdir = @top_srcdir@
 @DEBUG_TRUE at DBGFLAGS = -g -DDEBUG
 @SAGA_UNICODE_TRUE at UC_DEFS = -D_SAGA_UNICODE
 DEF_SAGA = -D_SAGA_LINUX -D_TYPEDEF_BYTE -D_TYPEDEF_WORD
-CXX_INCS = -I$(top_srcdir)/src/saga_core
+CXX_INCS = -I$(top_srcdir)/src/saga_core -I$(top_srcdir)/src/modules/grid/grid_tools
 AM_CXXFLAGS = -fPIC $(CXX_INCS) $(DEF_SAGA) $(UC_DEFS) $(DBGFLAGS) $(GOMPFLAGS)
 AM_LDFLAGS = -fPIC -shared -avoid-version
-pkglib_LTLIBRARIES = libsim_hydrology.la
-libsim_hydrology_la_SOURCES = \
-DVWK_SoilMoisture.cpp\
-diffuse_pollution_risk.cpp\
-idw.cpp\
-KinWav_D8.cpp\
+pkglib_LTLIBRARIES = libsim_fire_spreading.la
+libsim_fire_spreading_la_SOURCES = \
+fireLib.c\
+Forecasting.cpp\
 MLB_Interface.cpp\
-topmodel.cpp\
-topmodel_values.cpp\
-WaterRetentionCapacity.cpp\
-diffuse_pollution_risk.h\
-DVWK_SoilMoisture.h\
-idw.h\
-KinWav_D8.h\
+Simulate.cpp\
+fireLib.h\
+Forecasting.h\
 MLB_Interface.h\
-topmodel.h\
-topmodel_values.h\
-WaterRetentionCapacity.h
+Simulate.h
 
-libsim_hydrology_la_LIBADD = $(top_srcdir)/src/saga_core/saga_api/libsaga_api.la
+libsim_fire_spreading_la_LIBADD = $(top_srcdir)/src/saga_core/saga_api/libsaga_api.la
 all: all-am
 
 .SUFFIXES:
-.SUFFIXES: .cpp .lo .o .obj
+.SUFFIXES: .c .cpp .lo .o .obj
 $(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
@@ -404,9 +396,9 @@ $(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/modules/simulation/sim_hydrology/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/modules/simulation/sim_fire_spreading/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign src/modules/simulation/sim_hydrology/Makefile
+	  $(AUTOMAKE) --foreign src/modules/simulation/sim_fire_spreading/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -461,8 +453,8 @@ clean-pkglibLTLIBRARIES:
 	  rm -f $${locs}; \
 	}
 
-libsim_hydrology.la: $(libsim_hydrology_la_OBJECTS) $(libsim_hydrology_la_DEPENDENCIES) $(EXTRA_libsim_hydrology_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(CXXLINK) -rpath $(pkglibdir) $(libsim_hydrology_la_OBJECTS) $(libsim_hydrology_la_LIBADD) $(LIBS)
+libsim_fire_spreading.la: $(libsim_fire_spreading_la_OBJECTS) $(libsim_fire_spreading_la_DEPENDENCIES) $(EXTRA_libsim_fire_spreading_la_DEPENDENCIES) 
+	$(AM_V_CXXLD)$(CXXLINK) -rpath $(pkglibdir) $(libsim_fire_spreading_la_OBJECTS) $(libsim_fire_spreading_la_LIBADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -470,14 +462,34 @@ mostlyclean-compile:
 distclean-compile:
 	-rm -f *.tab.c
 
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/DVWK_SoilMoisture.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/KinWav_D8.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Forecasting.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/MLB_Interface.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/WaterRetentionCapacity.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/diffuse_pollution_risk.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/idw.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/topmodel.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/topmodel_values.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Simulate.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/fireLib.Plo at am__quote@
+
+.c.o:
+ at am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ at am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+ at am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ at am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ at am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.c.lo:
+ at am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+ at am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
 
 .cpp.o:
 @am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
diff --git a/src/modules/simulation/sim_fire_spreading/Simulate.cpp b/src/modules/simulation/sim_fire_spreading/Simulate.cpp
new file mode 100755
index 0000000..9a305d5
--- /dev/null
+++ b/src/modules/simulation/sim_fire_spreading/Simulate.cpp
@@ -0,0 +1,363 @@
+/**********************************************************
+ * Version $Id: Simulate.cpp 911 2011-02-14 16:38:15Z reklov_w $
+ *********************************************************/
+/*******************************************************************************
+    Simulate.cpp
+    Copyright (C) Victor Olaya
+    
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301, USA
+*******************************************************************************/ 
+
+#include "Simulate.h"
+
+#define MS2FTMIN (60.0 / 0.3048)
+#define FTMIN2MMIN 0.3048
+#define BTU2KCAL 0.252164401
+#define FT2M 0.3048
+#define NO_TIME_LIMIT -1
+#define THRESHOLD_FOR_DIFFERENCE 0.1
+
+CSimulate::CSimulate(void){
+	
+	Set_Name		(_TL("Simulation"));
+	Set_Author		(SG_T("(c) 2004 Victor Olaya"));
+	Set_Description	(_TW(
+		"Fire simulation based on the BEHAVE fire modeling system "
+		"supported by the U.S. Forest Service, Fire and Aviation Management. "
+		"Find more information on BEHAVE at the <i>Public Domain Software for the Wildland Fire Community</i> at "
+		"<a target=\"_blank\" href=\"http://fire.org\">http://fire.org</a>\n"
+		"\n"
+		"Reference:\n"
+		"Andrews, P.L. (1986): BEHAVE: Fire Behavior Prediction and Fuel Modeling System - "
+		"Burn Subsystem, Part 1. U.S. Department of Agriculture, Forest Service General, Technical Report INT-194. "
+	));
+
+	Parameters.Add_Grid(NULL, 
+						"DEM", 
+						_TL("DEM"), 
+						_TL(""), 
+						PARAMETER_INPUT);
+	
+	Parameters.Add_Grid(NULL, 
+						"FUEL", 
+						_TL("Fuel Model"), 
+						_TL(""), 
+						PARAMETER_INPUT);
+
+	Parameters.Add_Grid(NULL, 
+						"WINDSPD", 
+						_TL("Wind Speed"),
+						_TL("Wind speed (m/s)"), 
+						PARAMETER_INPUT);
+	
+	Parameters.Add_Grid(NULL, 
+						"WINDDIR", 
+						_TL("Wind Direction"), 
+						_TL("Wind direction (degrees clockwise from north)"),
+						PARAMETER_INPUT);
+
+	Parameters.Add_Grid(NULL, 
+						"M1H", 
+						_TL("Dead Fuel Moisture 1H"), 
+						_TL(""), 
+						PARAMETER_INPUT);
+
+	Parameters.Add_Grid(NULL, 
+						"M10H", 
+						_TL("Dead Fuel Moisture 10H"), 
+						_TL(""), 
+						PARAMETER_INPUT);
+
+	Parameters.Add_Grid(NULL, 
+						"M100H", 
+						_TL("Dead Fuel Moisture 100H"), 
+						_TL(""), 
+						PARAMETER_INPUT);
+
+	Parameters.Add_Grid(NULL, 
+						"MHERB", 
+						_TL("Herbaceous Fuel Moisture"), 
+						_TL(""), 
+						PARAMETER_INPUT);
+
+	Parameters.Add_Grid(NULL, 
+						"MWOOD", 
+						_TL("Wood Fuel Moisture"), 
+						_TL(""), 
+						PARAMETER_INPUT);
+
+	Parameters.Add_Grid(NULL, 
+						"IGNITION", 
+						_TL("Ignition Points"), 
+						_TL(""), 
+						PARAMETER_INPUT);
+	
+	Parameters.Add_Grid(NULL, 
+						"TIME", 
+						_TL("Time"), 
+						_TL(""), 
+						PARAMETER_OUTPUT);
+
+	Parameters.Add_Grid(NULL, 
+						"FLAME", 
+						_TL("Flame Length"), 
+						_TL("Flame Length (m)"), 
+						PARAMETER_OUTPUT);
+
+	Parameters.Add_Grid(NULL, 
+						"INTENSITY", 
+						_TL("Intensity"), 
+						_TL("Intensity (Kcal/m)"), 
+						PARAMETER_OUTPUT);
+
+	Parameters.Add_Value(NULL, 
+						"UPDATEVIEW", 
+						_TL("Update View"),
+						_TL("Update view during simulation."),
+						PARAMETER_TYPE_Bool, 
+						true);
+
+}//constructor
+
+CSimulate::~CSimulate(void){}
+
+bool CSimulate::On_Execute(void){
+
+	AssignParameters();
+	CalculateFire();
+	
+	DeleteObjects();
+	return true;
+
+}//method
+
+void CSimulate::DeleteObjects(){
+
+	delete m_pAspectGrid;
+	delete m_pSlopeGrid;
+
+	m_CentralPoints	.Clear();
+	m_AdjPoints		.Clear();
+
+}//method
+
+bool CSimulate::AssignParameters(){
+
+	int x,y;
+
+	m_pDEM = Parameters("DEM")->asGrid();
+	m_pFuelGrid = Parameters("FUEL")->asGrid();
+	m_pIgnGrid = Parameters("IGNITION")->asGrid();
+	m_pWindDirGrid = Parameters("WINDDIR")->asGrid();
+	m_pWindSpdGrid = Parameters("WINDSPD")->asGrid();
+	m_pM1Grid = Parameters("M1H")->asGrid();
+	m_pM10Grid = Parameters("M10H")->asGrid();
+	m_pM100Grid = Parameters("M100H")->asGrid();
+	m_pMHerbGrid = Parameters("MHERB")->asGrid();
+	m_pMWoodGrid = Parameters("MWOOD")->asGrid();
+	m_pTimeGrid = Parameters("TIME")->asGrid();
+	m_pFlameGrid = Parameters("FLAME")->asGrid();
+	m_pIntensityGrid = Parameters("INTENSITY")->asGrid();
+
+    m_Catalog = Fire_FuelCatalogCreateStandard("Standard", 13);
+    Fire_FlameLengthTable(m_Catalog, 500, 0.1);
+
+	//substitute no-data values
+	for(y=0; y<Get_NY() && Set_Progress(y); y++){		
+		for(x=0; x<Get_NX(); x++){
+
+			if (m_pWindSpdGrid->is_NoData(x, y)){
+				m_pWindSpdGrid->Set_Value(x, y, 0.);
+			}//if
+			if (m_pWindDirGrid->is_NoData(x, y)){
+				m_pWindDirGrid->Set_Value(x, y, 0.);
+			}//if
+			if (m_pM1Grid->is_NoData(x, y)){
+				m_pM1Grid->Set_Value(x, y, 0.);
+			}//if
+			if (m_pM10Grid->is_NoData(x, y)){
+				m_pM10Grid->Set_Value(x, y, 0.);
+			}//if
+			if (m_pM100Grid->is_NoData(x, y)){
+				m_pM100Grid->Set_Value(x, y, 0.);
+			}//if
+			if (m_pMHerbGrid->is_NoData(x, y)){
+				m_pMHerbGrid->Set_Value(x, y, 0.);
+			}//if
+			if (m_pMWoodGrid->is_NoData(x, y)){
+				m_pMWoodGrid->Set_Value(x, y, 0.);
+			}//if
+
+		}//for
+	}//for
+
+
+	//-----------------------------------------------------
+	// calculate slope and aspect using CSG_Grid class'
+	// built-in function (after Zevenbergen & Thorne)...
+
+	m_pSlopeGrid	= SG_Create_Grid(m_pDEM, SG_DATATYPE_Double);
+	m_pAspectGrid	= SG_Create_Grid(m_pDEM, SG_DATATYPE_Double);
+
+	for(y=0; y<Get_NY() && Set_Progress(y); y++)
+	{		
+		for(x=0; x<Get_NX(); x++)
+		{
+			double	slope, aspect;
+
+			if( m_pDEM->Get_Gradient(x, y, slope, aspect) )
+			{
+				m_pSlopeGrid	->Set_Value(x, y, slope);
+				m_pAspectGrid	->Set_Value(x, y, aspect);
+			}
+			else
+			{
+				m_pSlopeGrid	->Set_NoData(x, y);
+				m_pAspectGrid	->Set_NoData(x, y);
+			}
+		}
+	}
+
+
+	//-----------------------------------------------------
+	m_pTimeGrid->Assign((double)0);
+
+	return true;
+
+}//method
+
+void CSimulate::CalculateFire(){
+	
+	int x,y;
+
+	Process_Set_Text(_TL("Simulating..."));
+	m_CentralPoints	.Clear();
+	m_AdjPoints		.Clear();
+
+	m_CentralPoints.Clear();
+	for(y=0; y<Get_NY(); y++){
+		for(x=0; x<Get_NX(); x++){
+			if (!m_pIgnGrid->is_NoData(x,y)){
+				m_CentralPoints.Add(x,y);
+				m_pTimeGrid->Set_Value(x,y,0.0);				
+			}//if
+		}//for
+	}//for
+	CalculateFireSpreading(NO_TIME_LIMIT);
+
+	m_pTimeGrid->Set_NoData_Value(0.);
+
+
+}//method
+
+
+int CSimulate::CalculateFireSpreading(float fTimeLimit){
+
+	int x,y;
+	int x2,y2;
+	int n;
+	bool bReturn = false;
+	/* neighbor's address*/   /* N  NE   E  SE   S  SW   W  NW */
+	static int nX[8] =        {  0,  1,  1,  1,  0, -1, -1, -1};
+    static int nY[8] =        {  1,  1,  0, -1, -1, -1,  0,  1};
+	double nDist[8];          /* distance to each neighbor */
+    double nAzm[8];           /* compass azimuth to each neighbor (0=N) */	
+	size_t modelNumber;       /* fuel model number at current cell */
+    double moisture[6];       /* fuel moisture content at current cell */
+    double dSpreadRate;       /* spread rate in direction of neighbor */
+    double dSpreadTime;       /* time to spread from cell to neighbor */
+    double dIgnTime;          /* time neighbor is ignited by current cell */
+	double dWindSpd;
+	int iBurntCells = 0;
+
+	bool bUpdate = Parameters("UPDATEVIEW")->asBool();
+
+    for (n=0; n<8; n++){
+        nDist[n] = sqrt ( nX[n] * m_pDEM->Get_Cellsize() * nX[n] * m_pDEM->Get_Cellsize()
+                        + nY[n] * m_pDEM->Get_Cellsize() * nY[n] * m_pDEM->Get_Cellsize() );
+        nAzm[n] = n * 45.;
+    }//for
+
+	while (m_CentralPoints.Get_Count()!=0){
+
+		for (int iPt=0; iPt<m_CentralPoints.Get_Count();iPt++){
+
+			x = m_CentralPoints.Get_X(iPt);
+			y = m_CentralPoints.Get_Y(iPt);
+
+			if (!m_pDEM->is_NoData(x,y) && !m_pFuelGrid->is_NoData(x,y)){
+
+				modelNumber = (size_t) m_pFuelGrid->asInt(x, y);
+				moisture[0] = m_pM1Grid->asFloat(x, y);
+				moisture[1] = m_pM10Grid->asFloat(x, y);
+				moisture[2] = m_pM100Grid->asFloat(x, y);
+				moisture[3] = m_pM100Grid->asFloat(x, y);
+				moisture[4] = m_pMHerbGrid->asFloat(x, y);;
+				moisture[5] = m_pMWoodGrid->asFloat(x, y);
+				dWindSpd = m_pWindSpdGrid->asFloat(x,y)  * MS2FTMIN; 
+				Fire_SpreadNoWindNoSlope(m_Catalog, modelNumber, moisture);
+				Fire_SpreadWindSlopeMax(m_Catalog, modelNumber, dWindSpd,
+										 m_pWindDirGrid->asFloat(x,y), tan(m_pSlopeGrid->asFloat(x,y)),
+										 m_pAspectGrid->asFloat(x,y));
+
+				for (n=0; n<8; n++){
+					x2 = x + nX[n];
+					y2 = y + nY[n];
+					if (m_pTimeGrid->is_InGrid(x2,y2,false)){
+						Fire_SpreadAtAzimuth(m_Catalog, modelNumber, nAzm[n], FIRE_BYRAMS);
+						dSpreadRate = Fuel_SpreadAny(m_Catalog, modelNumber); // in ft/min (awkward...)					
+						dSpreadRate *= FTMIN2MMIN; //a bit better...
+						if (dSpreadRate > Smidgen){
+							dSpreadTime = nDist[n] / dSpreadRate;							
+							if (fTimeLimit == NO_TIME_LIMIT){
+								dIgnTime = 	m_pTimeGrid->asDouble(x,y) + dSpreadTime;
+								if (m_pTimeGrid->asDouble(x2,y2) == 0.0 
+										|| m_pTimeGrid->asDouble(x2, y2) > dIgnTime + THRESHOLD_FOR_DIFFERENCE ){
+									m_pTimeGrid->Set_Value(x2, y2, dIgnTime);
+									m_AdjPoints.Add(x2,y2);
+									Fire_FlameScorch(m_Catalog, modelNumber, FIRE_FLAME);
+									m_pFlameGrid->Set_Value(x2, y2, Fuel_FlameLength(m_Catalog, modelNumber) * FT2M);									
+									m_pIntensityGrid->Set_Value(x2, y2, Fuel_ByramsIntensity(m_Catalog, modelNumber)
+																* BTU2KCAL / FT2M );									
+								}//if
+							}//if
+						}//if					
+					}//if
+				}//for
+			}//if
+		}//for
+
+		m_CentralPoints.Clear();
+		for (int i=0; i<m_AdjPoints.Get_Count(); i++){
+			x= m_AdjPoints.Get_X(i);
+			y = m_AdjPoints.Get_Y(i);
+			m_CentralPoints.Add(x, y);
+		}//for
+		m_AdjPoints.Clear();
+
+		if (fTimeLimit == NO_TIME_LIMIT){
+			Process_Get_Okay(true);
+		}//if	
+		
+		if (bUpdate){
+			DataObject_Update(m_pTimeGrid, true);
+		}
+
+	}//while
+
+	return iBurntCells;
+
+}//method
+
diff --git a/src/modules/simulation/sim_fire_spreading/Simulate.h b/src/modules/simulation/sim_fire_spreading/Simulate.h
new file mode 100755
index 0000000..ed2ff06
--- /dev/null
+++ b/src/modules/simulation/sim_fire_spreading/Simulate.h
@@ -0,0 +1,81 @@
+/**********************************************************
+ * Version $Id: Simulate.h 911 2011-02-14 16:38:15Z reklov_w $
+ *********************************************************/
+/*******************************************************************************
+    Simulate.h
+    Copyright (C) Victor Olaya
+    
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301, USA
+*******************************************************************************/ 
+
+#if _MSC_VER > 1000
+#pragma once
+#endif // _MSC_VER > 1000
+
+#include "MLB_Interface.h"
+#include "fireLib.h"
+
+class CSimulate : public CSG_Module_Grid {
+
+private:
+
+	CSG_Grid *m_pDEM;    
+    CSG_Grid *m_pIgnGrid;           /* ptr to ignition time map (minutes) */
+    CSG_Grid *m_pWindSpdGrid;       /* ptr to wind speed map (m/s) */
+    CSG_Grid *m_pWindDirGrid;       /* ptr to wind direction map (deg from north) */
+    CSG_Grid *m_pM1Grid;            /* ptr to 1-hr dead fuel moisture map */
+    CSG_Grid *m_pM10Grid;           /* ptr to 10-hr dead fuel moisture map */
+    CSG_Grid *m_pM100Grid;          /* ptr to 100-hr dead fuel moisture map */
+    CSG_Grid *m_pMHerbGrid;         /* ptr to live herbaceous fuel moisture map */
+    CSG_Grid *m_pMWoodGrid;         /* ptr to live stem fuel moisture map */
+	CSG_Grid *m_pFuelGrid;          /* ptr to fuel model map */
+	CSG_Grid *m_pValueGrid;
+
+	CSG_Grid *m_pFlameGrid;         /* ptr to flame length map (m) */
+	CSG_Grid *m_pIntensityGrid;     
+
+    CSG_Grid *m_pSlopeGrid;         /* ptr to slope map (rise/reach) */
+    CSG_Grid *m_pAspectGrid;        /* ptr to aspect map (degrees from north) */
+
+	CSG_Grid *m_pTimeGrid;
+	//CSG_Grid *m_pVolatileTimeGrid;
+	
+	FuelCatalogPtr m_Catalog;    /* fuel catalog handle */
+
+	int m_iLength;
+
+	CSG_Points_Int	m_CentralPoints;
+	CSG_Points_Int	m_AdjPoints;
+
+	int *m_pLength; 
+	int m_iMaxTime; //in s
+	int m_iTimeInterval; //in s
+
+	bool AssignParameters();
+	void CalculateFire();
+	int CalculateFireSpreading(float);
+	void DeleteObjects();
+
+public:
+
+	CSimulate(void);
+	virtual ~CSimulate(void);
+
+protected:
+
+	virtual bool On_Execute(void);
+
+};
+
diff --git a/src/modules/simulation/sim_hydrology/DVWK_SoilMoisture.cpp b/src/modules/simulation/sim_hydrology/DVWK_SoilMoisture.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_hydrology/DVWK_SoilMoisture.h b/src/modules/simulation/sim_hydrology/DVWK_SoilMoisture.h
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_hydrology/KinWav_D8.cpp b/src/modules/simulation/sim_hydrology/KinWav_D8.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_hydrology/KinWav_D8.h b/src/modules/simulation/sim_hydrology/KinWav_D8.h
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_hydrology/MLB_Interface.cpp b/src/modules/simulation/sim_hydrology/MLB_Interface.cpp
old mode 100644
new mode 100755
index 74f514a..490dcb4
--- a/src/modules/simulation/sim_hydrology/MLB_Interface.cpp
+++ b/src/modules/simulation/sim_hydrology/MLB_Interface.cpp
@@ -102,6 +102,7 @@ CSG_String Get_Info(int i)
 #include "topmodel.h"
 #include "WaterRetentionCapacity.h"
 #include "diffuse_pollution_risk.h"
+#include "diffusion_gradient_concentration.h"
 
 
 //---------------------------------------------------------
@@ -116,8 +117,11 @@ CSG_Module *		Create_Module(int i)
 	case  2:	return( new CTOPMODEL );
 	case  3:	return( new CWaterRetentionCapacity );
 	case  4:	return( new CDiffuse_Pollution_Risk );
+	case  5:	return( new CSim_Diffusion_Gradient );
+	case  6:	return( new CSim_Diffusion_Concentration );
+	case  7:	return( new CSim_Diffusion_Gradient_And_Concentration );
 
-	case  5:	return( NULL );
+	case  9:	return( NULL );
 	default:	return( MLB_INTERFACE_SKIP_MODULE );
 	}
 }
diff --git a/src/modules/simulation/sim_hydrology/MLB_Interface.h b/src/modules/simulation/sim_hydrology/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_hydrology/Makefile.am b/src/modules/simulation/sim_hydrology/Makefile.am
old mode 100644
new mode 100755
index 91fbed5..faffdb1
--- a/src/modules/simulation/sim_hydrology/Makefile.am
+++ b/src/modules/simulation/sim_hydrology/Makefile.am
@@ -15,6 +15,7 @@ pkglib_LTLIBRARIES = libsim_hydrology.la
 libsim_hydrology_la_SOURCES =\
 DVWK_SoilMoisture.cpp\
 diffuse_pollution_risk.cpp\
+diffusion_gradient_concentration.cpp\
 idw.cpp\
 KinWav_D8.cpp\
 MLB_Interface.cpp\
@@ -22,6 +23,7 @@ topmodel.cpp\
 topmodel_values.cpp\
 WaterRetentionCapacity.cpp\
 diffuse_pollution_risk.h\
+diffusion_gradient_concentration.h\
 DVWK_SoilMoisture.h\
 idw.h\
 KinWav_D8.h\
diff --git a/src/modules/simulation/sim_hydrology/Makefile.in b/src/modules/simulation/sim_hydrology/Makefile.in
index 2dc5e76..0164b21 100644
--- a/src/modules/simulation/sim_hydrology/Makefile.in
+++ b/src/modules/simulation/sim_hydrology/Makefile.in
@@ -128,8 +128,9 @@ LTLIBRARIES = $(pkglib_LTLIBRARIES)
 libsim_hydrology_la_DEPENDENCIES =  \
 	$(top_srcdir)/src/saga_core/saga_api/libsaga_api.la
 am_libsim_hydrology_la_OBJECTS = DVWK_SoilMoisture.lo \
-	diffuse_pollution_risk.lo idw.lo KinWav_D8.lo MLB_Interface.lo \
-	topmodel.lo topmodel_values.lo WaterRetentionCapacity.lo
+	diffuse_pollution_risk.lo diffusion_gradient_concentration.lo \
+	idw.lo KinWav_D8.lo MLB_Interface.lo topmodel.lo \
+	topmodel_values.lo WaterRetentionCapacity.lo
 libsim_hydrology_la_OBJECTS = $(am_libsim_hydrology_la_OBJECTS)
 AM_V_lt = $(am__v_lt_ at AM_V@)
 am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
@@ -375,6 +376,7 @@ pkglib_LTLIBRARIES = libsim_hydrology.la
 libsim_hydrology_la_SOURCES = \
 DVWK_SoilMoisture.cpp\
 diffuse_pollution_risk.cpp\
+diffusion_gradient_concentration.cpp\
 idw.cpp\
 KinWav_D8.cpp\
 MLB_Interface.cpp\
@@ -382,6 +384,7 @@ topmodel.cpp\
 topmodel_values.cpp\
 WaterRetentionCapacity.cpp\
 diffuse_pollution_risk.h\
+diffusion_gradient_concentration.h\
 DVWK_SoilMoisture.h\
 idw.h\
 KinWav_D8.h\
@@ -475,6 +478,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/MLB_Interface.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/WaterRetentionCapacity.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/diffuse_pollution_risk.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/diffusion_gradient_concentration.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/idw.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/topmodel.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/topmodel_values.Plo at am__quote@
diff --git a/src/modules/simulation/sim_hydrology/WaterRetentionCapacity.cpp b/src/modules/simulation/sim_hydrology/WaterRetentionCapacity.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_hydrology/WaterRetentionCapacity.h b/src/modules/simulation/sim_hydrology/WaterRetentionCapacity.h
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_hydrology/diffuse_pollution_risk.cpp b/src/modules/simulation/sim_hydrology/diffuse_pollution_risk.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_hydrology/diffuse_pollution_risk.h b/src/modules/simulation/sim_hydrology/diffuse_pollution_risk.h
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_hydrology/diffusion_gradient_concentration.cpp b/src/modules/simulation/sim_hydrology/diffusion_gradient_concentration.cpp
new file mode 100755
index 0000000..998ac1e
--- /dev/null
+++ b/src/modules/simulation/sim_hydrology/diffusion_gradient_concentration.cpp
@@ -0,0 +1,800 @@
+
+///////////////////////////////////////////////////////////
+//                                                       //
+//                         SAGA                          //
+//                                                       //
+//      System for Automated Geoscientific Analyses      //
+//                                                       //
+//-------------------------------------------------------//
+//                                                       //
+//          diffusion_gradient_concentration.cpp         //
+//                                                       //
+//                Copyright (C) 2007 by                  //
+//                O.Conrad, R.Heinrich                   //
+//                                                       //
+//-------------------------------------------------------//
+//                                                       //
+// This file is part of 'SAGA - System for Automated     //
+// Geoscientific Analyses'. SAGA is free software; you   //
+// can redistribute it and/or modify it under the terms  //
+// of the GNU General Public License as published by the //
+// Free Software Foundation; version 2 of the License.   //
+//                                                       //
+// SAGA is distributed in the hope that it will be       //
+// useful, but WITHOUT ANY WARRANTY; without even the    //
+// implied warranty of MERCHANTABILITY or FITNESS FOR A  //
+// PARTICULAR PURPOSE. See the GNU General Public        //
+// License for more details.                             //
+//                                                       //
+// You should have received a copy of the GNU General    //
+// Public License along with this program; if not,       //
+// write to the Free Software Foundation, Inc.,          //
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307,   //
+// USA.                                                  //
+//                                                       //
+//-------------------------------------------------------//
+//                                                       //
+//    contact:    Ralph Heinrich                         //
+//                                                       //
+//    e-mail:     heinrich-ralph at web.de                  //
+//                                                       //
+//    phone:      +49-35603-152006                       //
+//                                                       //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+
+
+///////////////////////////////////////////////////////////
+//														 //
+//														 //
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+#include "diffusion_gradient_concentration.h"
+
+
+///////////////////////////////////////////////////////////
+//														 //
+//														 //
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+#define MASK_LAND	0
+#define MASK_LAKE	1
+#define MASK_INLET	2
+#define MASK_OUTLET	3
+
+//---------------------------------------------------------
+CSG_String	Description	= _TW(
+	"Cellular automata are simple computational operators, but despite their simplicity, "
+	"they allow the simulation of highly complex processes. This tool has been created to "
+	"apply the concept of cellular automata to simulate diffusion and flow processes in "
+	"shallow water bodies with in- and outflow, where monitoring data show concentration "
+	"growth or decrease between the inflow and the outflow points. Parameters are for "
+	"example nutrients like nitrate, which is reduced by denitrification process inside "
+	"the water body.\n"
+	"Values of mask grid are expected to be 1 for water area, 2 for inlet, 3 for outlet and "
+	"0 for non water.\n"
+	"\n"
+	"\nReferences:\n"
+	"<ul><li>"
+	"Heinrich, R. / Conrad, O. (2008): "
+	"Diffusion, Flow and Concentration Gradient Simulation with SAGA GIS using Cellular Automata Methods. "
+	"In: B�hner, J. / Blaschke / T., Montanarella, L. [Eds.]: SAGA � Seconds Out. "
+	"Hamburger Beitr�ge zur Physischen Geographie und Landschafts�kologie, Vol.19, p59-70. "
+	"<a href=\"http://downloads.sourceforge.net/saga-gis/hbpl19_07.pdf\">online</a> "
+	"</li></ul>"
+);
+
+
+///////////////////////////////////////////////////////////
+//														 //
+//														 //
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+CSim_Diffusion_Gradient::CSim_Diffusion_Gradient(void)
+{
+	//-----------------------------------------------------
+	Set_Name		(_TL("Surface and Gradient"));
+
+	Set_Author		("R.Heinrich, O.Conrad (c) 2007");
+
+	Set_Description	(Description);
+
+	//-----------------------------------------------------
+	Parameters.Add_Grid(
+		NULL	, "MASK"		, _TL("Mask"),
+		_TL(""),
+		PARAMETER_INPUT
+	);
+
+	Parameters.Add_Grid(
+		NULL	, "SURF"		, _TL("Surface"),
+		_TL(""),
+		PARAMETER_OUTPUT
+	);
+
+	Parameters.Add_Grid(
+		NULL	, "GRAD"		, _TL("Gradient"),
+		_TL(""),
+		PARAMETER_OUTPUT
+	);
+
+	//-----------------------------------------------------
+	Parameters.Add_Value(
+		NULL	, "SURF_E"		, _TL("Surface Approximation Threshold"),
+		_TL(""),
+		PARAMETER_TYPE_Double, 0.001, 0.0, true
+	);
+}
+
+
+///////////////////////////////////////////////////////////
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+bool CSim_Diffusion_Gradient::On_Execute(void)
+{
+	m_pMask	= Parameters("MASK")->asGrid();
+
+	CSG_Grid	*pSurface	= Parameters("SURF")->asGrid();
+	CSG_Grid	*pGradient	= Parameters("GRAD")->asGrid();
+
+	m_Tmp.Create(*Get_System());
+
+	//-----------------------------------------------------
+	bool	bResult	= Surface_Initialise(pSurface);
+
+	if( bResult )
+	{
+		Surface_Interpolate (pSurface);
+		Surface_Get_Gradient(pSurface, pGradient);
+	}
+
+	//-----------------------------------------------------
+	m_Tmp.Destroy();
+
+	return( bResult );
+}
+
+
+///////////////////////////////////////////////////////////
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+inline bool CSim_Diffusion_Gradient::is_Lake(int x, int y)
+{
+	return( m_pMask->Get_System().is_InGrid(x, y) && m_pMask->asInt(x, y) != MASK_LAND );
+}
+
+
+///////////////////////////////////////////////////////////
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+bool CSim_Diffusion_Gradient::Surface_Initialise(CSG_Grid *pSurface)
+{
+	int		nIn = 0, nOut = 0;
+
+	for(int y=0; y<Get_NY() && Set_Progress(y); y++)
+	{
+		for(int x=0; x<Get_NX(); x++)
+		{
+			switch( m_pMask->asInt(x, y) )
+			{
+			case MASK_INLET : nIn++;  pSurface->Set_Value (x, y, 100.0); break;
+			case MASK_LAKE  :         pSurface->Set_Value (x, y,  50.0); break;
+			case MASK_OUTLET: nOut++; pSurface->Set_Value (x, y,   0.0); break;
+			default         :         pSurface->Set_NoData(x, y       ); break;
+			}
+		}
+	}
+
+	return( nIn > 0 && nOut > 0 );
+}
+
+//---------------------------------------------------------
+bool CSim_Diffusion_Gradient::Surface_Interpolate(CSG_Grid *pSurface)
+{
+	int		n, nMax;
+	double	d, dEpsilon;
+
+	nMax		= 100000;
+	dEpsilon	= Parameters("SURF_E")->asDouble();
+
+	DataObject_Update(pSurface, true);
+
+	for(n=0, d=Surface_Set_Means(pSurface); n<nMax && d>dEpsilon && Process_Get_Okay(false); n++)
+	{
+		d	= Surface_Set_Means(pSurface);
+
+		Process_Set_Text(CSG_String::Format(SG_T("%d, %f"), n + 1, d));
+
+		if( n % 25 == 0 )	DataObject_Update(pSurface, 0.0, 100.0);
+	}
+
+	Message_Add(CSG_String::Format("%d iterations", n));
+
+	return( true );
+}
+
+//---------------------------------------------------------
+double CSim_Diffusion_Gradient::Surface_Set_Means(CSG_Grid *pSurface)
+{
+	int		y, in	= 1;
+
+	//-----------------------------------------------------
+	#pragma omp parallel for private(y)
+	for(y=0; y<Get_NY(); y++)
+	{
+		for(int x=0; x<Get_NX(); x++)
+		{
+			if( is_Lake(x, y) )
+			{
+				CSG_Simple_Statistics	s;
+
+				for(int iy=y-in; iy<=y+in; iy++)
+				{
+					for(int ix=x-in; ix<=x+in; ix++)
+					{
+						if( is_Lake(ix, iy) )
+						{
+							s	+= pSurface->asDouble(ix, iy);
+						}
+					}
+				}
+
+				m_Tmp.Set_Value(x, y, s.Get_Mean());
+			}
+		}
+	}
+
+	//-----------------------------------------------------
+	double	dMax	= 0.0;
+
+	for(y=0; y<Get_NY(); y++)
+	{
+		for(int x=0; x<Get_NX(); x++)
+		{
+			switch( m_pMask->asInt(x, y) )
+			{
+			case MASK_INLET :	pSurface->Set_Value(x, y, 100.0);	break;
+			case MASK_OUTLET:	pSurface->Set_Value(x, y,   0.0);	break;
+			case MASK_LAKE  :
+				{
+					double	s	= m_Tmp.asDouble(x, y);
+					double	d	= fabs(pSurface->asDouble(x, y) - s);
+
+					if( d > 0.0 )
+					{
+						if( dMax <= 0.0 || d > dMax )
+						{
+							dMax	= d;
+						}
+
+						pSurface->Set_Value(x, y, s);
+					}
+				}
+				break;
+			}
+		}
+	}
+
+	return( dMax );
+}
+
+
+///////////////////////////////////////////////////////////
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+bool CSim_Diffusion_Gradient::Surface_Get_Gradient(CSG_Grid *pSurface, CSG_Grid *pGradient)
+{
+	#pragma omp parallel for
+	for(int y=0; y<Get_NY(); y++)
+	{
+		for(int x=0; x<Get_NX(); x++)
+		{
+			if( is_Lake(x, y) )
+			{
+				double	z, zMin, zMax	= pSurface->asDouble(x, y);	zMin = zMax;
+
+				for(int i=0; i<8; i++)
+				{
+					int	ix	= Get_xTo(i, x);
+					int	iy	= Get_yTo(i, y);
+
+					if( is_Lake(ix, iy) )
+					{
+						if( zMin > (z = pSurface->asDouble(ix, iy)) )
+						{
+							zMin	= z;
+						}
+						else if( zMax < z )
+						{
+							zMax	= z;
+						}
+					}
+				}
+
+				switch( m_pMask->asInt(x, y) )
+				{
+				case MASK_INLET :
+				case MASK_LAKE  :	pGradient->Set_Value(x, y,  zMax - zMin       );	break;
+				case MASK_OUTLET:	pGradient->Set_Value(x, y, (zMax - zMin) * 2.0);	break;
+				}
+			}
+			else
+			{
+				pGradient->Set_NoData(x, y);
+			}
+		}
+	}
+
+	return( true );
+}
+
+
+///////////////////////////////////////////////////////////
+//														 //
+//														 //
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+CSim_Diffusion_Concentration::CSim_Diffusion_Concentration(void)
+{
+	Parameters.Create(NULL, SG_T(""), SG_T(""), SG_T(""), true);
+
+	//-----------------------------------------------------
+	Set_Name		(_TL("Concentration"));
+
+	Set_Author		("R.Heinrich, O.Conrad (c) 2007");
+
+	Set_Description	(Description);
+
+	//-----------------------------------------------------
+	Parameters.Add_Grid(
+		NULL	, "MASK"		, _TL("Mask"),
+		_TL(""),
+		PARAMETER_INPUT
+	);
+
+	Parameters.Add_Grid(
+		NULL	, "GRAD"		, _TL("Gradient"),
+		_TL(""),
+		PARAMETER_INPUT
+	);
+
+	Parameters.Add_Grid(
+		NULL	, "CONC"		, _TL("Concentration"),
+		_TL(""),
+		PARAMETER_OUTPUT
+	);
+
+	//-----------------------------------------------------
+	Parameters.Add_Value(
+		NULL	, "CONC_IN"		, _TL("Inlet Concentration"),
+		_TL(""),
+		PARAMETER_TYPE_Double, 5.0, 0.0, true
+	);
+
+	Parameters.Add_Value(
+		NULL	, "CONC_OUT"	, _TL("Outlet Concentration"),
+		_TL(""),
+		PARAMETER_TYPE_Double, 3.0, 0.0, true
+	);
+
+	Parameters.Add_Value(
+		NULL	, "CONC_E"		, _TL("Concentration Approximation Threshold"),
+		_TL(""),
+		PARAMETER_TYPE_Double, 0.001, 0.0, true
+	);
+
+	Parameters.Add_Value(
+		NULL	, "GRAD_MIN"	, _TL("Minimum Gradient"),
+		_TL(""),
+		PARAMETER_TYPE_Double, 0.0, 0.0, true
+	);
+
+	Parameters.Add_Choice(
+		NULL	, "NEIGHBOURS"	, _TL("Neighbourhood"),
+		_TL(""),
+		CSG_String::Format("%s|%s|%s|",
+			_TL("Moore (8)"),
+			_TL("Neumann (4)"),
+			_TL("Optimised")
+		), 0
+	);
+}
+
+
+///////////////////////////////////////////////////////////
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+bool CSim_Diffusion_Concentration::On_Execute(void)
+{
+	m_pMask	= Parameters("MASK")->asGrid();
+
+	CSG_Grid	*pGradient		= Parameters("GRAD")->asGrid();
+	CSG_Grid	*pConcentration	= Parameters("CONC")->asGrid();
+
+	m_Conc_In		= Parameters("CONC_IN" )->asDouble();
+	m_Conc_Out		= Parameters("CONC_OUT")->asDouble();
+	m_MinGradient	= Parameters("GRAD_MIN")->asDouble();
+
+	//-----------------------------------------------------
+	m_Tmp.Create(*Get_System());
+
+	Concentration_Interpolate(pConcentration, pGradient);
+
+	m_Tmp.Destroy();
+
+	return( true );
+}
+
+
+///////////////////////////////////////////////////////////
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+bool CSim_Diffusion_Concentration::Concentration_Interpolate(CSG_Grid *pConcentration, CSG_Grid *pGradient)
+{
+	switch( Parameters("NEIGHBOURS") ? Parameters("NEIGHBOURS")->asInt() : 2 )
+	{
+	case 0:	// Moore
+		{
+			_Concentration_Interpolate	(pConcentration, pGradient, false);
+		}
+		break;
+
+	case 1:	// Neumann
+		{
+			_Concentration_Interpolate	(pConcentration, pGradient, true);
+		}
+		break;
+
+	case 2:	// Optimised
+		{
+			_Concentration_Interpolate	(pConcentration, pGradient, false);
+
+			CSG_Grid	Concentration(*pConcentration);
+
+			_Concentration_Interpolate	(pConcentration, pGradient, true);
+
+			for(int y=0; y<Get_NY() && Set_Progress(y); y++)
+			{
+				for(int x=0; x<Get_NX(); x++)
+				{
+					if( pConcentration->is_NoData(x, y) || Concentration.is_NoData(x, y) )
+					{
+						pConcentration->Set_NoData(x, y);
+					}
+					else
+					{
+						pConcentration->Set_Value(x, y, (pConcentration->asDouble(x, y) + Concentration.asDouble(x, y)) / 2.0);
+					}
+				}
+			}
+		}
+		break;
+	}
+
+	return( true );
+}
+
+//---------------------------------------------------------
+bool CSim_Diffusion_Concentration::_Concentration_Interpolate(CSG_Grid *pConcentration, CSG_Grid *pGradient, bool bNeumann)
+{
+	double	d, d_lo, d_hi, f, f_lo, f_hi, d_Max;
+
+	DataObject_Update(pConcentration, true);
+
+	d_Max	= Parameters("CONC_E")->asDouble();
+
+	d_lo	= _Concentration_Interpolate(pConcentration, pGradient, bNeumann, f_lo = 0.0);
+	d_hi	= _Concentration_Interpolate(pConcentration, pGradient, bNeumann, f_hi = 0.01);
+
+	while( d_hi > m_Conc_Out && Process_Get_Okay(false) )
+	{
+		f_hi	*= 10.0;
+		d_hi	= _Concentration_Interpolate(pConcentration, pGradient, bNeumann, f_hi);
+	}
+
+	do
+	{
+		d	= _Concentration_Interpolate(pConcentration, pGradient, bNeumann, f = f_lo + 0.5 * (f_hi - f_lo));
+
+		Process_Set_Text(CSG_String::Format(SG_T("f: %f, AK: %f, dif: %f"), f, d, m_Conc_Out - d));
+		Message_Add		(CSG_String::Format(SG_T("f: %f, AK: %f, dif: %f"), f, d, m_Conc_Out - d));
+
+		DataObject_Update(pConcentration, m_Conc_Out, m_Conc_In);
+
+		if( fabs(d - m_Conc_Out) > d_Max )
+		{
+			if(      SG_IS_BETWEEN(d_lo, m_Conc_Out, d) )
+			{
+				f_hi	= f;
+				d_hi	= d;
+			}
+			else if( SG_IS_BETWEEN(d_hi, m_Conc_Out, d) )
+			{
+				f_lo	= f;
+				d_lo	= d;
+			}
+			else
+			{
+				return( false );
+			}
+		}
+	}
+	while( fabs(d - m_Conc_Out) > d_Max && f_hi > f_lo && Process_Get_Okay(false) );
+
+	Message_Add(CSG_String::Format(SG_T("f: %f"), f));
+
+	//-----------------------------------------------------
+	_Concentration_Initialise(pConcentration);
+
+	for(int nChanges=1; nChanges>0 && Process_Get_Okay(false); )
+	{
+		nChanges	= _Concentration_Set_Means(pConcentration, pGradient, bNeumann, f, d);
+	}
+
+	return( true );
+}
+
+//---------------------------------------------------------
+double CSim_Diffusion_Concentration::_Concentration_Interpolate(CSG_Grid *pConcentration, CSG_Grid *pGradient, bool bNeumann, double f)
+{
+	double	Conc_Out	= 0.0;
+
+	_Concentration_Initialise(pConcentration);
+
+	for(int nChanges=1; Conc_Out<=0.0 && nChanges>0 && Process_Get_Okay(false); )
+	{
+		nChanges	= _Concentration_Set_Means(pConcentration, pGradient, bNeumann, f, Conc_Out);
+	}
+
+	return( Conc_Out );
+}
+
+//---------------------------------------------------------
+int CSim_Diffusion_Concentration::_Concentration_Set_Means(CSG_Grid *pConcentration, CSG_Grid *pGradient, bool bNeumann, double f, double &Conc_Out)
+{
+	int		y, n, iStep = bNeumann ? 2 : 1;
+
+	//-----------------------------------------------------
+	#pragma omp parallel for private(y)
+	for(y=0; y<Get_NY(); y++)
+	{
+		for(int x=0; x<Get_NX(); x++)
+		{
+			if( is_Lake(x, y) && pConcentration->asDouble(x, y) == 0.0 )
+			{
+				double	d, dMax	= 0.0;
+
+				for(int i=0; i<8; i+=iStep)
+				{
+					int	ix	= Get_xTo(i, x);
+					int	iy	= Get_yTo(i, y);
+
+					if( is_Lake(ix, iy) && dMax < (d = pConcentration->asDouble(ix, iy)) )
+					{
+						dMax	= d;
+					}
+				}
+
+				if( dMax > 0.0 )
+				{
+					if( (d = pGradient->asDouble(x, y)) < m_MinGradient )
+					{
+						d	= m_MinGradient;
+					}
+
+					m_Tmp.Set_Value(x, y, dMax / (1.0 + (f / d)));
+				}
+			}
+		}
+	}
+
+	//-----------------------------------------------------
+	for(y=0, n=0, Conc_Out=0.0; y<Get_NY(); y++)
+	{
+		for(int x=0; x<Get_NX(); x++)
+		{
+			double	d;
+
+			switch( m_pMask->asInt(x, y) )
+			{
+			case MASK_INLET:
+				pConcentration->Set_Value(x, y, m_Conc_In);
+				break;
+
+			case MASK_OUTLET:
+				if( pConcentration->asDouble(x, y) == 0.0 && (d = m_Tmp.asDouble(x, y)) > 0.0 )
+				{
+					pConcentration->Set_Value(x, y, Conc_Out = d);
+					n++;
+				}
+				break;
+
+			case MASK_LAKE:
+				if( pConcentration->asDouble(x, y) == 0.0 && (d = m_Tmp.asDouble(x, y)) > 0.0 )
+				{
+					pConcentration->Set_Value(x, y, d);
+					n++;
+				}
+				break;
+			}
+		}
+	}
+
+	return( n );
+}
+
+//---------------------------------------------------------
+bool CSim_Diffusion_Concentration::_Concentration_Initialise(CSG_Grid *pConcentration)
+{
+	m_Tmp.Assign(0.0);
+
+	#pragma omp parallel for
+	for(int y=0; y<Get_NY(); y++)
+	{
+		for(int x=0; x<Get_NX(); x++)
+		{
+			switch( m_pMask->asInt(x, y) )
+			{
+			case MASK_LAKE  :	pConcentration->Set_Value (x, y, 0.0      );	break;
+			case MASK_OUTLET:	pConcentration->Set_Value (x, y, 0.0      );	break;
+			case MASK_INLET :	pConcentration->Set_Value (x, y, m_Conc_In);	break;
+			default         :	pConcentration->Set_NoData(x, y           );	break;
+			}
+		}
+	}
+
+	return( true );
+}
+
+
+///////////////////////////////////////////////////////////
+//														 //
+//														 //
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+CSim_Diffusion_Gradient_And_Concentration::CSim_Diffusion_Gradient_And_Concentration(void)
+{
+	Parameters.Create(NULL, SG_T(""), SG_T(""), SG_T(""), true);
+
+	//-----------------------------------------------------
+	Set_Name		(_TL("Surface, Gradient and Concentration"));
+
+	Set_Author		("R.Heinrich, O.Conrad (c) 2007");
+
+	Set_Description	(Description);
+
+	//-----------------------------------------------------
+	Parameters.Add_Grid(
+		NULL	, "MASK"		, _TL("Mask"),
+		_TL(""),
+		PARAMETER_INPUT
+	);
+
+	Parameters.Add_Grid(
+		NULL	, "SURF"		, _TL("Surface"),
+		_TL(""),
+		PARAMETER_OUTPUT
+	);
+
+	Parameters.Add_Grid(
+		NULL	, "GRAD"		, _TL("Gradient"),
+		_TL(""),
+		PARAMETER_OUTPUT
+	);
+
+	Parameters.Add_Grid(
+		NULL	, "CONC"		, _TL("Concentration"),
+		_TL(""),
+		PARAMETER_OUTPUT
+	);
+
+	//-----------------------------------------------------
+	Parameters.Add_Value(
+		NULL	, "SURF_E"		, _TL("Surface Approximation Threshold"),
+		_TL(""),
+		PARAMETER_TYPE_Double, 0.001, 0.0, true
+	);
+
+	Parameters.Add_Value(
+		NULL	, "CONC_IN"		, _TL("Inlet Concentration"),
+		_TL(""),
+		PARAMETER_TYPE_Double, 5.0, 0.0, true
+	);
+
+	Parameters.Add_Value(
+		NULL	, "CONC_OUT"	, _TL("Outlet Concentration"),
+		_TL(""),
+		PARAMETER_TYPE_Double, 3.0, 0.0, true
+	);
+
+	Parameters.Add_Value(
+		NULL	, "CONC_E"		, _TL("Concentration Approximation Threshold"),
+		_TL(""),
+		PARAMETER_TYPE_Double, 0.001, 0.0, true
+	);
+
+	Parameters.Add_Value(
+		NULL	, "GRAD_MIN"	, _TL("Minimum Gradient"),
+		_TL(""),
+		PARAMETER_TYPE_Double, 0.0, 0.0, true
+	);
+
+	Parameters.Add_Choice(
+		NULL	, "NEIGHBOURS"	, _TL("Neighbourhood"),
+		_TL(""),
+		CSG_String::Format("%s|%s|%s|",
+			_TL("Moore (8)"),
+			_TL("Neumann (4)"),
+			_TL("Optimised")
+		), 0
+	);
+}
+
+
+///////////////////////////////////////////////////////////
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+bool CSim_Diffusion_Gradient_And_Concentration::On_Execute(void)
+{
+	m_pMask	= Parameters("MASK")->asGrid();
+
+	CSG_Grid	*pSurface		= Parameters("SURF")->asGrid();
+	CSG_Grid	*pGradient		= Parameters("GRAD")->asGrid();
+	CSG_Grid	*pConcentration	= Parameters("CONC")->asGrid();
+
+	m_Conc_In		= Parameters("CONC_IN" )->asDouble();
+	m_Conc_Out		= Parameters("CONC_OUT")->asDouble();
+	m_MinGradient	= Parameters("GRAD_MIN")->asDouble();
+
+	m_Tmp.Create(*Get_System());
+
+	//-----------------------------------------------------
+	bool	bResult	= Surface_Initialise(pSurface);
+
+	if( bResult )
+	{
+		Surface_Interpolate (pSurface);
+		Surface_Get_Gradient(pSurface, pGradient);
+
+		Concentration_Interpolate(pConcentration, pGradient);
+	}
+
+	//-----------------------------------------------------
+	m_Tmp.Destroy();
+
+	return( bResult );
+}
+
+
+///////////////////////////////////////////////////////////
+//														 //
+//														 //
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
diff --git a/src/saga_core/saga_gui/info.cpp b/src/modules/simulation/sim_hydrology/diffusion_gradient_concentration.h
old mode 100644
new mode 100755
similarity index 61%
copy from src/saga_core/saga_gui/info.cpp
copy to src/modules/simulation/sim_hydrology/diffusion_gradient_concentration.h
index 63677dd..6fe20f2
--- a/src/saga_core/saga_gui/info.cpp
+++ b/src/modules/simulation/sim_hydrology/diffusion_gradient_concentration.h
@@ -1,159 +1,163 @@
-/**********************************************************
- * Version $Id: info.cpp 1921 2014-01-09 10:24:11Z oconrad $
- *********************************************************/
-
-///////////////////////////////////////////////////////////
-//                                                       //
-//                         SAGA                          //
-//                                                       //
-//      System for Automated Geoscientific Analyses      //
-//                                                       //
-//                    User Interface                     //
-//                                                       //
-//                    Program: SAGA                      //
-//                                                       //
-//-------------------------------------------------------//
-//                                                       //
-//                       INFO.cpp                        //
-//                                                       //
-//          Copyright (C) 2005 by Olaf Conrad            //
-//                                                       //
-//-------------------------------------------------------//
-//                                                       //
-// This file is part of 'SAGA - System for Automated     //
-// Geoscientific Analyses'. SAGA is free software; you   //
-// can redistribute it and/or modify it under the terms  //
-// of the GNU General Public License as published by the //
-// Free Software Foundation; version 2 of the License.   //
-//                                                       //
-// SAGA is distributed in the hope that it will be       //
-// useful, but WITHOUT ANY WARRANTY; without even the    //
-// implied warranty of MERCHANTABILITY or FITNESS FOR A  //
-// PARTICULAR PURPOSE. See the GNU General Public        //
-// License for more details.                             //
-//                                                       //
-// You should have received a copy of the GNU General    //
-// Public License along with this program; if not,       //
-// write to the Free Software Foundation, Inc.,          //
-// 51 Franklin Street, 5th Floor, Boston, MA 02110-1301, //
-// USA.                                                  //
-//                                                       //
-//-------------------------------------------------------//
-//                                                       //
-//    contact:    Olaf Conrad                            //
-//                Institute of Geography                 //
-//                University of Goettingen               //
-//                Goldschmidtstr. 5                      //
-//                37077 Goettingen                       //
-//                Germany                                //
-//                                                       //
-//    e-mail:     oconrad at saga-gis.org                   //
-//                                                       //
-///////////////////////////////////////////////////////////
-
-//---------------------------------------------------------
-
-
-///////////////////////////////////////////////////////////
-//														 //
-//														 //
-//														 //
-///////////////////////////////////////////////////////////
-
-//---------------------------------------------------------
-#include <wx/wx.h>
-#include <wx/treectrl.h>
-#include <wx/imaglist.h>
-
-#include <saga_api/saga_api.h>
-
-#include "res_controls.h"
-#include "res_images.h"
-
-#include "info.h"
-#include "info_messages.h"
-
-
-///////////////////////////////////////////////////////////
-//														 //
-//														 //
-//														 //
-///////////////////////////////////////////////////////////
-
-//---------------------------------------------------------
-enum
-{
-	IMG_MESSAGES	= 0,
-	IMG_EXECUTION,
-	IMG_ERROR
-};
-
-
-///////////////////////////////////////////////////////////
-//														 //
-//														 //
-//														 //
-///////////////////////////////////////////////////////////
-
-//---------------------------------------------------------
-CINFO	*g_pINFO	= NULL;
-
-
-///////////////////////////////////////////////////////////
-//														 //
-//														 //
-//														 //
-///////////////////////////////////////////////////////////
-
-//---------------------------------------------------------
-BEGIN_EVENT_TABLE(CINFO, wxNotebook)
-END_EVENT_TABLE()
-
-
-///////////////////////////////////////////////////////////
-//														 //
-//														 //
-//														 //
-///////////////////////////////////////////////////////////
-
-//---------------------------------------------------------
-CINFO::CINFO(wxWindow *pParent)
-	: wxNotebook(pParent, ID_WND_INFO, wxDefaultPosition, wxDefaultSize, wxNB_TOP|wxNB_MULTILINE, _TL("Messages"))
-{
-	g_pINFO		= this;
-
-	//-----------------------------------------------------
-	AssignImageList(new wxImageList(IMG_SIZE_NOTEBOOK, IMG_SIZE_NOTEBOOK, true, 0));
-
-	IMG_ADD_TO_NOTEBOOK(ID_IMG_NB_INFO_MESSAGES);
-	IMG_ADD_TO_NOTEBOOK(ID_IMG_NB_INFO_EXECUTION);
-	IMG_ADD_TO_NOTEBOOK(ID_IMG_NB_INFO_ERROR);
-	
-	//-----------------------------------------------------
-	m_pGeneral		= new CINFO_Messages(this);
-	m_pExecution	= new CINFO_Messages(this);
-	m_pErrors		= new CINFO_Messages(this);
-}
-
-//---------------------------------------------------------
-void CINFO::Add_Pages(void)
-{
-	AddPage(m_pGeneral	, _TL("General")	, false, IMG_MESSAGES);
-	AddPage(m_pExecution, _TL("Execution"), false, IMG_EXECUTION);
-	AddPage(m_pErrors	, _TL("Errors")	, false, IMG_ERROR);
-}
-
-//---------------------------------------------------------
-CINFO::~CINFO(void)
-{
-	g_pINFO		= NULL;
-}
-
-
-///////////////////////////////////////////////////////////
-//														 //
-//														 //
-//														 //
-///////////////////////////////////////////////////////////
-
-//---------------------------------------------------------
+
+///////////////////////////////////////////////////////////
+//                                                       //
+//                         SAGA                          //
+//                                                       //
+//      System for Automated Geoscientific Analyses      //
+//                                                       //
+//-------------------------------------------------------//
+//                                                       //
+//           diffusion_gradient_concentration.h          //
+//                                                       //
+//                Copyright (C) 2007 by                  //
+//                O.Conrad, R.Heinrich                   //
+//                                                       //
+//-------------------------------------------------------//
+//                                                       //
+// This file is part of 'SAGA - System for Automated     //
+// Geoscientific Analyses'. SAGA is free software; you   //
+// can redistribute it and/or modify it under the terms  //
+// of the GNU General Public License as published by the //
+// Free Software Foundation; version 2 of the License.   //
+//                                                       //
+// SAGA is distributed in the hope that it will be       //
+// useful, but WITHOUT ANY WARRANTY; without even the    //
+// implied warranty of MERCHANTABILITY or FITNESS FOR A  //
+// PARTICULAR PURPOSE. See the GNU General Public        //
+// License for more details.                             //
+//                                                       //
+// You should have received a copy of the GNU General    //
+// Public License along with this program; if not,       //
+// write to the Free Software Foundation, Inc.,          //
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307,   //
+// USA.                                                  //
+//                                                       //
+//-------------------------------------------------------//
+//                                                       //
+//    contact:    Ralph Heinrich                         //
+//                                                       //
+//    e-mail:     heinrich-ralph at web.de                  //
+//                                                       //
+//    phone:      +49-35603-152006                       //
+//                                                       //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+
+
+///////////////////////////////////////////////////////////
+//														 //
+//                                                       //
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+#ifndef HEADER_INCLUDED__diffusion_gradient_concentration_H
+#define HEADER_INCLUDED__diffusion_gradient_concentration_H
+
+
+///////////////////////////////////////////////////////////
+//														 //
+//														 //
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+#include <saga_api/saga_api.h>
+
+
+///////////////////////////////////////////////////////////
+//														 //
+//														 //
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+class CSim_Diffusion_Gradient : public CSG_Module_Grid
+{
+public:
+	CSim_Diffusion_Gradient(void);
+
+	virtual CSG_String		Get_MenuPath			(void)	{	return( "Diffusion, Flow and Concentration Gradient Simulation" );	}
+
+
+protected:
+
+	virtual bool			On_Execute				(void);
+
+
+	//-----------------------------------------------------
+	CSG_Grid				*m_pMask, m_Tmp;
+
+
+	//-----------------------------------------------------
+	bool					Surface_Initialise		(CSG_Grid *pSurface);
+	bool					Surface_Interpolate		(CSG_Grid *pSurface);
+	double					Surface_Set_Means		(CSG_Grid *pSurface);
+	bool					Surface_Get_Gradient	(CSG_Grid *pSurface, CSG_Grid *pGradient);
+
+
+	//-----------------------------------------------------
+	bool					is_Lake					(int x, int y);
+
+};
+
+
+///////////////////////////////////////////////////////////
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+class CSim_Diffusion_Concentration : public CSim_Diffusion_Gradient
+{
+public:
+	CSim_Diffusion_Concentration(void);
+
+
+protected:
+
+	virtual bool			On_Execute					(void);
+
+
+	double					m_Conc_In, m_Conc_Out, m_MinGradient;
+
+
+	bool					Concentration_Interpolate	(CSG_Grid *pConcentration, CSG_Grid *pGradient);
+
+
+private:
+
+	bool					_Concentration_Interpolate	(CSG_Grid *pConcentration, CSG_Grid *pGradient, bool bNeumann);
+	double					_Concentration_Interpolate	(CSG_Grid *pConcentration, CSG_Grid *pGradient, bool bNeumann, double f);
+	int						_Concentration_Set_Means	(CSG_Grid *pConcentration, CSG_Grid *pGradient, bool bNeumann, double f, double &Conc_Out);
+	bool					_Concentration_Initialise	(CSG_Grid *pConcentration);
+
+};
+
+
+///////////////////////////////////////////////////////////
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+class CSim_Diffusion_Gradient_And_Concentration : public CSim_Diffusion_Concentration
+{
+public:
+	CSim_Diffusion_Gradient_And_Concentration(void);
+
+
+protected:
+
+	virtual bool			On_Execute				(void);
+
+};
+
+
+///////////////////////////////////////////////////////////
+//														 //
+//														 //
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+#endif // #ifndef HEADER_INCLUDED__diffusion_gradient_concentration_H
diff --git a/src/modules/simulation/sim_hydrology/idw.cpp b/src/modules/simulation/sim_hydrology/idw.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_hydrology/idw.h b/src/modules/simulation/sim_hydrology/idw.h
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_hydrology/topmodel.cpp b/src/modules/simulation/sim_hydrology/topmodel.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_hydrology/topmodel.h b/src/modules/simulation/sim_hydrology/topmodel.h
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_hydrology/topmodel_values.cpp b/src/modules/simulation/sim_hydrology/topmodel_values.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_hydrology/topmodel_values.h b/src/modules/simulation/sim_hydrology/topmodel_values.h
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_ihacres/MLB_Interface.cpp b/src/modules/simulation/sim_ihacres/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_ihacres/MLB_Interface.h b/src/modules/simulation/sim_ihacres/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_ihacres/Makefile.am b/src/modules/simulation/sim_ihacres/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_ihacres/convert_sl.cpp b/src/modules/simulation/sim_ihacres/convert_sl.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_ihacres/convert_sl.h b/src/modules/simulation/sim_ihacres/convert_sl.h
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_ihacres/ihacres_basin.cpp b/src/modules/simulation/sim_ihacres/ihacres_basin.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_ihacres/ihacres_basin.h b/src/modules/simulation/sim_ihacres/ihacres_basin.h
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_ihacres/ihacres_cal2.cpp b/src/modules/simulation/sim_ihacres/ihacres_cal2.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_ihacres/ihacres_cal2.h b/src/modules/simulation/sim_ihacres/ihacres_cal2.h
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_ihacres/ihacres_elev.cpp b/src/modules/simulation/sim_ihacres/ihacres_elev.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_ihacres/ihacres_elev.h b/src/modules/simulation/sim_ihacres/ihacres_elev.h
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_ihacres/ihacres_elev_bands.cpp b/src/modules/simulation/sim_ihacres/ihacres_elev_bands.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_ihacres/ihacres_elev_bands.h b/src/modules/simulation/sim_ihacres/ihacres_elev_bands.h
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_ihacres/ihacres_elev_cal.cpp b/src/modules/simulation/sim_ihacres/ihacres_elev_cal.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_ihacres/ihacres_elev_cal.h b/src/modules/simulation/sim_ihacres/ihacres_elev_cal.h
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_ihacres/ihacres_eq.cpp b/src/modules/simulation/sim_ihacres/ihacres_eq.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_ihacres/ihacres_eq.h b/src/modules/simulation/sim_ihacres/ihacres_eq.h
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_ihacres/ihacres_v1.cpp b/src/modules/simulation/sim_ihacres/ihacres_v1.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_ihacres/ihacres_v1.h b/src/modules/simulation/sim_ihacres/ihacres_v1.h
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_ihacres/model_tools.cpp b/src/modules/simulation/sim_ihacres/model_tools.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_ihacres/model_tools.h b/src/modules/simulation/sim_ihacres/model_tools.h
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_ihacres/snow_module.cpp b/src/modules/simulation/sim_ihacres/snow_module.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_ihacres/snow_module.h b/src/modules/simulation/sim_ihacres/snow_module.h
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_qm_of_esp/MLB_Interface.cpp b/src/modules/simulation/sim_qm_of_esp/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_qm_of_esp/MLB_Interface.h b/src/modules/simulation/sim_qm_of_esp/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_qm_of_esp/Makefile.am b/src/modules/simulation/sim_qm_of_esp/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_qm_of_esp/fill_sinks.cpp b/src/modules/simulation/sim_qm_of_esp/fill_sinks.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_qm_of_esp/fill_sinks.h b/src/modules/simulation/sim_qm_of_esp/fill_sinks.h
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_qm_of_esp/flow_routing.cpp b/src/modules/simulation/sim_qm_of_esp/flow_routing.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_qm_of_esp/flow_routing.h b/src/modules/simulation/sim_qm_of_esp/flow_routing.h
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_qm_of_esp/hillslope_evolution_adi.cpp b/src/modules/simulation/sim_qm_of_esp/hillslope_evolution_adi.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_qm_of_esp/hillslope_evolution_adi.h b/src/modules/simulation/sim_qm_of_esp/hillslope_evolution_adi.h
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_qm_of_esp/hillslope_evolution_ftcs.cpp b/src/modules/simulation/sim_qm_of_esp/hillslope_evolution_ftcs.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_qm_of_esp/hillslope_evolution_ftcs.h b/src/modules/simulation/sim_qm_of_esp/hillslope_evolution_ftcs.h
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_qm_of_esp/successive_flow_routing.cpp b/src/modules/simulation/sim_qm_of_esp/successive_flow_routing.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_qm_of_esp/successive_flow_routing.h b/src/modules/simulation/sim_qm_of_esp/successive_flow_routing.h
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_rivflow/DataTrans.cpp b/src/modules/simulation/sim_rivflow/DataTrans.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_rivflow/DataTrans.h b/src/modules/simulation/sim_rivflow/DataTrans.h
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_rivflow/GridComb.cpp b/src/modules/simulation/sim_rivflow/GridComb.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_rivflow/GridComb.h b/src/modules/simulation/sim_rivflow/GridComb.h
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_rivflow/LandFlow.cpp b/src/modules/simulation/sim_rivflow/LandFlow.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_rivflow/LandFlow.h b/src/modules/simulation/sim_rivflow/LandFlow.h
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_rivflow/MLB_Interface.cpp b/src/modules/simulation/sim_rivflow/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_rivflow/MLB_Interface.h b/src/modules/simulation/sim_rivflow/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_rivflow/Makefile.am b/src/modules/simulation/sim_rivflow/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_rivflow/RivBasin.cpp b/src/modules/simulation/sim_rivflow/RivBasin.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_rivflow/RivBasin.h b/src/modules/simulation/sim_rivflow/RivBasin.h
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_rivflow/RivCourseImpr.cpp b/src/modules/simulation/sim_rivflow/RivCourseImpr.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_rivflow/RivCourseImpr.h b/src/modules/simulation/sim_rivflow/RivCourseImpr.h
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_rivflow/RivGridPrep.cpp b/src/modules/simulation/sim_rivflow/RivGridPrep.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/simulation/sim_rivflow/RivGridPrep.h b/src/modules/simulation/sim_rivflow/RivGridPrep.h
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/Makefile.am b/src/modules/statistics/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_grid/GSGrid_Directional_Statistics.cpp b/src/modules/statistics/statistics_grid/GSGrid_Directional_Statistics.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_grid/GSGrid_Directional_Statistics.h b/src/modules/statistics/statistics_grid/GSGrid_Directional_Statistics.h
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_grid/GSGrid_Residuals.cpp b/src/modules/statistics/statistics_grid/GSGrid_Residuals.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_grid/GSGrid_Residuals.h b/src/modules/statistics/statistics_grid/GSGrid_Residuals.h
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_grid/GSGrid_Statistics.cpp b/src/modules/statistics/statistics_grid/GSGrid_Statistics.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_grid/GSGrid_Statistics.h b/src/modules/statistics/statistics_grid/GSGrid_Statistics.h
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_grid/GSGrid_Variance.cpp b/src/modules/statistics/statistics_grid/GSGrid_Variance.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_grid/GSGrid_Variance.h b/src/modules/statistics/statistics_grid/GSGrid_Variance.h
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_grid/GSGrid_Variance_Radius.cpp b/src/modules/statistics/statistics_grid/GSGrid_Variance_Radius.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_grid/GSGrid_Variance_Radius.h b/src/modules/statistics/statistics_grid/GSGrid_Variance_Radius.h
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_grid/GSGrid_Zonal_Statistics.cpp b/src/modules/statistics/statistics_grid/GSGrid_Zonal_Statistics.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_grid/GSGrid_Zonal_Statistics.h b/src/modules/statistics/statistics_grid/GSGrid_Zonal_Statistics.h
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_grid/MLB_Interface.cpp b/src/modules/statistics/statistics_grid/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_grid/MLB_Interface.h b/src/modules/statistics/statistics_grid/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_grid/Makefile.am b/src/modules/statistics/statistics_grid/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_grid/fast_representativeness.cpp b/src/modules/statistics/statistics_grid/fast_representativeness.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_grid/fast_representativeness.h b/src/modules/statistics/statistics_grid/fast_representativeness.h
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_grid/grid_autocorrelation.cpp b/src/modules/statistics/statistics_grid/grid_autocorrelation.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_grid/grid_autocorrelation.h b/src/modules/statistics/statistics_grid/grid_autocorrelation.h
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_grid/grid_latlon_statistics.cpp b/src/modules/statistics/statistics_grid/grid_latlon_statistics.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_grid/grid_latlon_statistics.h b/src/modules/statistics/statistics_grid/grid_latlon_statistics.h
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_grid/grid_pca.cpp b/src/modules/statistics/statistics_grid/grid_pca.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_grid/grid_pca.h b/src/modules/statistics/statistics_grid/grid_pca.h
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_grid/multiband_variation.cpp b/src/modules/statistics/statistics_grid/multiband_variation.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_grid/multiband_variation.h b/src/modules/statistics/statistics_grid/multiband_variation.h
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_kriging/MLB_Interface.cpp b/src/modules/statistics/statistics_kriging/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_kriging/MLB_Interface.h b/src/modules/statistics/statistics_kriging/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_kriging/Makefile.am b/src/modules/statistics/statistics_kriging/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_kriging/kriging_base.cpp b/src/modules/statistics/statistics_kriging/kriging_base.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_kriging/kriging_base.h b/src/modules/statistics/statistics_kriging/kriging_base.h
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_kriging/kriging_ordinary.cpp b/src/modules/statistics/statistics_kriging/kriging_ordinary.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_kriging/kriging_ordinary.h b/src/modules/statistics/statistics_kriging/kriging_ordinary.h
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_kriging/kriging_regression.cpp b/src/modules/statistics/statistics_kriging/kriging_regression.cpp
old mode 100644
new mode 100755
index f2706bb..a83bbb8
--- a/src/modules/statistics/statistics_kriging/kriging_regression.cpp
+++ b/src/modules/statistics/statistics_kriging/kriging_regression.cpp
@@ -214,15 +214,14 @@ CKriging_Regression::CKriging_Regression(void)
 	);
 
 	Parameters.Add_Choice(
-		pNode	,"INTERPOL"		, _TL("Grid Interpolation"),
+		NULL	, "RESAMPLING"	, _TL("Resampling"),
 		_TL(""),
-		CSG_String::Format(SG_T("%s|%s|%s|%s|%s|"),
-			_TL("Nearest Neighbor"),
+		CSG_String::Format("%s|%s|%s|%s|",
+			_TL("Nearest Neighbour"),
 			_TL("Bilinear Interpolation"),
-			_TL("Inverse Distance Interpolation"),
 			_TL("Bicubic Spline Interpolation"),
 			_TL("B-Spline Interpolation")
-		), 4
+		), 3
 	);
 
 	///////////////////////////////////////////////////////
@@ -286,7 +285,7 @@ bool CKriging_Regression::On_Execute(void)
 		&&	SG_MODULE_PARAMETER_SET("INFO_COEFF", Parameters("INFO_COEFF"))
 		&&	SG_MODULE_PARAMETER_SET("INFO_MODEL", Parameters("INFO_MODEL"))
 		&&	SG_MODULE_PARAMETER_SET("INFO_STEPS", Parameters("INFO_STEPS"))
-		&&	SG_MODULE_PARAMETER_SET("INTERPOL"  , Parameters("INTERPOL"  ))
+		&&	SG_MODULE_PARAMETER_SET("RESAMPLING", Parameters("RESAMPLING"))
 		&&	SG_MODULE_PARAMETER_SET("COORD_X"   , Parameters("COORD_X"   ))
 		&&	SG_MODULE_PARAMETER_SET("COORD_Y"   , Parameters("COORD_Y"   ))
 		&&	SG_MODULE_PARAMETER_SET("INTERCEPT" , Parameters("INTERCEPT" ))
diff --git a/src/modules/statistics/statistics_kriging/kriging_regression.h b/src/modules/statistics/statistics_kriging/kriging_regression.h
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_kriging/kriging_simple.cpp b/src/modules/statistics/statistics_kriging/kriging_simple.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_kriging/kriging_simple.h b/src/modules/statistics/statistics_kriging/kriging_simple.h
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_kriging/kriging_universal.cpp b/src/modules/statistics/statistics_kriging/kriging_universal.cpp
old mode 100644
new mode 100755
index 2b95a76..5045eb9
--- a/src/modules/statistics/statistics_kriging/kriging_universal.cpp
+++ b/src/modules/statistics/statistics_kriging/kriging_universal.cpp
@@ -95,15 +95,14 @@ CKriging_Universal::CKriging_Universal(void)
 	);
 
 	Parameters.Add_Choice(
-		pNode	,"INTERPOL"		, _TL("Grid Interpolation"),
+		pNode	, "RESAMPLING"		, _TL("Resampling"),
 		_TL(""),
-		CSG_String::Format(SG_T("%s|%s|%s|%s|%s|"),
-			_TL("Nearest Neighbor"),
+		CSG_String::Format("%s|%s|%s|%s|",
+			_TL("Nearest Neighbour"),
 			_TL("Bilinear Interpolation"),
-			_TL("Inverse Distance Interpolation"),
 			_TL("Bicubic Spline Interpolation"),
 			_TL("B-Spline Interpolation")
-		), 4
+		), 3
 	);
 
 	Parameters.Add_Value(
@@ -122,9 +121,16 @@ CKriging_Universal::CKriging_Universal(void)
 bool CKriging_Universal::On_Initialize(void)
 {
 	m_pGrids		= Parameters("PREDICTORS")->asGridList();
-	m_Interpolation	= Parameters("INTERPOL"  )->asInt();
 	m_bCoords		= Parameters("COORDS"    )->asBool();
 
+	switch( Parameters("RESAMPLING")->asInt() )
+	{
+	default:	m_Resampling	= GRID_RESAMPLING_NearestNeighbour;	break;
+	case  1:	m_Resampling	= GRID_RESAMPLING_Bilinear;			break;
+	case  2:	m_Resampling	= GRID_RESAMPLING_BicubicSpline;	break;
+	case  3:	m_Resampling	= GRID_RESAMPLING_BSpline;			break;
+	}
+
 	//-----------------------------------------------------
 	if( m_Search.Do_Use_All(true) )	// global
 	{
@@ -217,7 +223,7 @@ bool CKriging_Universal::Get_Weights(const CSG_Points_Z &Points, CSG_Matrix &W)
 
 			for(k=0, j=n+1; k<nGrids; k++, j++)
 			{
-				W[i][j]	= W[j][i]	= m_pGrids->asGrid(k)->Get_Value(Points.Get_X(i), Points.Get_Y(i), m_Interpolation);
+				W[i][j]	= W[j][i]	= m_pGrids->asGrid(k)->Get_Value(Points.Get_X(i), Points.Get_Y(i), m_Resampling);
 			}
 
 			for(k=0, j=n+nGrids+1; k<nCoords; k++, j++)
@@ -286,7 +292,7 @@ bool CKriging_Universal::Get_Value(const TSG_Point &p, double &z, double &v)
 
 		for(i=0, j=n+1; i<nGrids; i++, j++)
 		{
-			if( !m_pGrids->asGrid(i)->Get_Value(p, G[j], m_Interpolation) )
+			if( !m_pGrids->asGrid(i)->Get_Value(p, G[j], m_Resampling) )
 			{
 				return( false );
 			}
diff --git a/src/modules/statistics/statistics_kriging/kriging_universal.h b/src/modules/statistics/statistics_kriging/kriging_universal.h
old mode 100644
new mode 100755
index e036d71..50f9894
--- a/src/modules/statistics/statistics_kriging/kriging_universal.h
+++ b/src/modules/statistics/statistics_kriging/kriging_universal.h
@@ -101,7 +101,7 @@ private:
 
 	bool					m_bCoords;
 
-	int						m_Interpolation;
+	TSG_Grid_Resampling		m_Resampling;
 
 	CSG_Parameter_Grid_List	*m_pGrids;
 
diff --git a/src/modules/statistics/statistics_kriging/semivariogram.cpp b/src/modules/statistics/statistics_kriging/semivariogram.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_kriging/semivariogram.h b/src/modules/statistics/statistics_kriging/semivariogram.h
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_kriging/variogram_dialog.cpp b/src/modules/statistics/statistics_kriging/variogram_dialog.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_kriging/variogram_dialog.h b/src/modules/statistics/statistics_kriging/variogram_dialog.h
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_points/GSPoints_Distances.cpp b/src/modules/statistics/statistics_points/GSPoints_Distances.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_points/GSPoints_Distances.h b/src/modules/statistics/statistics_points/GSPoints_Distances.h
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_points/GSPoints_Pattern_Analysis.cpp b/src/modules/statistics/statistics_points/GSPoints_Pattern_Analysis.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_points/GSPoints_Pattern_Analysis.h b/src/modules/statistics/statistics_points/GSPoints_Pattern_Analysis.h
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_points/GSPoints_Semi_Variances.cpp b/src/modules/statistics/statistics_points/GSPoints_Semi_Variances.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_points/GSPoints_Semi_Variances.h b/src/modules/statistics/statistics_points/GSPoints_Semi_Variances.h
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_points/GSPoints_Variogram_Cloud.cpp b/src/modules/statistics/statistics_points/GSPoints_Variogram_Cloud.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_points/GSPoints_Variogram_Cloud.h b/src/modules/statistics/statistics_points/GSPoints_Variogram_Cloud.h
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_points/GSPoints_Variogram_Surface.cpp b/src/modules/statistics/statistics_points/GSPoints_Variogram_Surface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_points/GSPoints_Variogram_Surface.h b/src/modules/statistics/statistics_points/GSPoints_Variogram_Surface.h
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_points/MLB_Interface.cpp b/src/modules/statistics/statistics_points/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_points/MLB_Interface.h b/src/modules/statistics/statistics_points/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_points/Makefile.am b/src/modules/statistics/statistics_points/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_regression/MLB_Interface.cpp b/src/modules/statistics/statistics_regression/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_regression/MLB_Interface.h b/src/modules/statistics/statistics_regression/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_regression/Makefile.am b/src/modules/statistics/statistics_regression/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_regression/grid_multi_grid_regression.cpp b/src/modules/statistics/statistics_regression/grid_multi_grid_regression.cpp
old mode 100644
new mode 100755
index 08e7efe..545e879
--- a/src/modules/statistics/statistics_regression/grid_multi_grid_regression.cpp
+++ b/src/modules/statistics/statistics_regression/grid_multi_grid_regression.cpp
@@ -134,15 +134,14 @@ CGrid_Multi_Grid_Regression::CGrid_Multi_Grid_Regression(void)
 	);
 
 	Parameters.Add_Choice(
-		NULL	,"INTERPOL"		, _TL("Grid Interpolation"),
+		NULL	, "RESAMPLING"	, _TL("Resampling"),
 		_TL(""),
-		CSG_String::Format(SG_T("%s|%s|%s|%s|%s|"),
-			_TL("Nearest Neighbor"),
+		CSG_String::Format("%s|%s|%s|%s|",
+			_TL("Nearest Neighbour"),
 			_TL("Bilinear Interpolation"),
-			_TL("Inverse Distance Interpolation"),
 			_TL("Bicubic Spline Interpolation"),
 			_TL("B-Spline Interpolation")
-		), 4
+		), 3
 	);
 
 	Parameters.Add_Value(
@@ -327,9 +326,18 @@ bool CGrid_Multi_Grid_Regression::Get_Samples(CSG_Parameter_Grid_List *pGrids, C
 	CSG_Vector	Sample;
 
 	//-----------------------------------------------------
-	int		Interpolation	= Parameters("INTERPOL")	->asInt();
-	bool	bCoord_X		= Parameters("COORD_X")		->asBool();
-	bool	bCoord_Y		= Parameters("COORD_Y")		->asBool();
+	bool	bCoord_X	= Parameters("COORD_X")->asBool();
+	bool	bCoord_Y	= Parameters("COORD_Y")->asBool();
+
+	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;
+	}
 
 	Names	+= pDependent->Get_Name();					// Dependent Variable
 
@@ -354,7 +362,7 @@ bool CGrid_Multi_Grid_Regression::Get_Samples(CSG_Parameter_Grid_List *pGrids, C
 
 				for(iGrid=0; iGrid<pGrids->Get_Count() && bAdd; iGrid++)
 				{
-					if( pGrids->asGrid(iGrid)->Get_Value(p, zGrid, Interpolation) )
+					if( pGrids->asGrid(iGrid)->Get_Value(p, zGrid, Resampling) )
 					{
 						Sample[1 + iGrid]	= zGrid;
 					}
@@ -395,7 +403,15 @@ bool CGrid_Multi_Grid_Regression::Set_Regression(CSG_Parameter_Grid_List *pGrids
 	int			iGrid, nGrids, x, y;
 	TSG_Point	p;
 
-	int		Interpolation	= Parameters("INTERPOL")->asInt();
+	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;
+	}
 
 	CSG_Grid	**ppGrids	= (CSG_Grid **)SG_Malloc(m_Regression.Get_nPredictors() * sizeof(CSG_Grid *));
 
@@ -441,7 +457,7 @@ bool CGrid_Multi_Grid_Regression::Set_Regression(CSG_Parameter_Grid_List *pGrids
 			{
 				double	zGrid;
 
-				if( ppGrids[iGrid]->Get_Value(p, zGrid, Interpolation) )
+				if( ppGrids[iGrid]->Get_Value(p, zGrid, Resampling) )
 				{
 					z	+= m_Regression.Get_RCoeff(iGrid) * zGrid;
 				}
diff --git a/src/modules/statistics/statistics_regression/grid_multi_grid_regression.h b/src/modules/statistics/statistics_regression/grid_multi_grid_regression.h
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_regression/grids_trend_polynom.cpp b/src/modules/statistics/statistics_regression/grids_trend_polynom.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_regression/grids_trend_polynom.h b/src/modules/statistics/statistics_regression/grids_trend_polynom.h
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_regression/gw_multi_regression.cpp b/src/modules/statistics/statistics_regression/gw_multi_regression.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_regression/gw_multi_regression.h b/src/modules/statistics/statistics_regression/gw_multi_regression.h
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_regression/gw_multi_regression_grid.cpp b/src/modules/statistics/statistics_regression/gw_multi_regression_grid.cpp
old mode 100644
new mode 100755
index 7754f94..7c0cfea
--- a/src/modules/statistics/statistics_regression/gw_multi_regression_grid.cpp
+++ b/src/modules/statistics/statistics_regression/gw_multi_regression_grid.cpp
@@ -242,7 +242,7 @@ bool CGW_Multi_Regression_Grid::On_Execute(void)
 		if( m_dimModel.Get_Cellsize() > Get_Cellsize() )	// scaling
 		{
 			m_pPredictors[i]	= SG_Create_Grid(m_dimModel);
-			m_pPredictors[i]	->Assign(pPredictors->asGrid(i), GRID_INTERPOLATION_NearestNeighbour);	// GRID_INTERPOLATION_Mean_Cells
+			m_pPredictors[i]	->Assign(pPredictors->asGrid(i), GRID_RESAMPLING_NearestNeighbour);	// GRID_RESAMPLING_Mean_Cells
 		}
 		else
 		{
@@ -329,7 +329,9 @@ bool CGW_Multi_Regression_Grid::Initialize(CSG_Shapes *pPoints, int iDependent,
 	}
 
 	//-----------------------------------------------------
-	int	iPredictor, Interpolation	= GRID_INTERPOLATION_BSpline;
+	int	iPredictor;
+	
+	TSG_Grid_Resampling	Resampling	= GRID_RESAMPLING_BSpline;
 
 	m_Points.Create   (SHAPE_TYPE_Point);
 	m_Points.Set_Name (Parameters("DEPENDENT")->asString());
@@ -353,7 +355,7 @@ bool CGW_Multi_Regression_Grid::Initialize(CSG_Shapes *pPoints, int iDependent,
 
 			for(iPredictor=0; bAdd && iPredictor<m_nPredictors; iPredictor++)
 			{
-				if( !pPredictors->asGrid(iPredictor)->Get_Value(Point, z[iPredictor + 1], Interpolation) )
+				if( !pPredictors->asGrid(iPredictor)->Get_Value(Point, z[iPredictor + 1], Resampling) )
 				{
 					bAdd	= false;
 				}
@@ -512,7 +514,7 @@ bool CGW_Multi_Regression_Grid::Set_Model(void)
 //---------------------------------------------------------
 bool CGW_Multi_Regression_Grid::Set_Model(double x, double y, double &Value)
 {
-	if( !m_pModel[m_nPredictors]->Get_Value(x, y, Value, GRID_INTERPOLATION_BSpline) )
+	if( !m_pModel[m_nPredictors]->Get_Value(x, y, Value, GRID_RESAMPLING_BSpline) )
 	{
 		return( false );
 	}
@@ -521,8 +523,8 @@ bool CGW_Multi_Regression_Grid::Set_Model(double x, double y, double &Value)
 
 	for(int i=0; i<m_nPredictors; i++)
 	{
-		if( !m_pModel     [i]->Get_Value(x, y, Model    , GRID_INTERPOLATION_BSpline)
-		||  !m_pPredictors[i]->Get_Value(x, y, Predictor, GRID_INTERPOLATION_NearestNeighbour) )
+		if( !m_pModel     [i]->Get_Value(x, y, Model    , GRID_RESAMPLING_BSpline)
+		||  !m_pPredictors[i]->Get_Value(x, y, Predictor, GRID_RESAMPLING_NearestNeighbour) )
 		{
 			return( false );
 		}
diff --git a/src/modules/statistics/statistics_regression/gw_multi_regression_grid.h b/src/modules/statistics/statistics_regression/gw_multi_regression_grid.h
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_regression/gw_multi_regression_points.cpp b/src/modules/statistics/statistics_regression/gw_multi_regression_points.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_regression/gw_multi_regression_points.h b/src/modules/statistics/statistics_regression/gw_multi_regression_points.h
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_regression/gw_regression.cpp b/src/modules/statistics/statistics_regression/gw_regression.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_regression/gw_regression.h b/src/modules/statistics/statistics_regression/gw_regression.h
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_regression/gw_regression_grid.cpp b/src/modules/statistics/statistics_regression/gw_regression_grid.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_regression/gw_regression_grid.h b/src/modules/statistics/statistics_regression/gw_regression_grid.h
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_regression/gwr_grid_downscaling.cpp b/src/modules/statistics/statistics_regression/gwr_grid_downscaling.cpp
old mode 100644
new mode 100755
index 76143d5..1fa6b35
--- a/src/modules/statistics/statistics_regression/gwr_grid_downscaling.cpp
+++ b/src/modules/statistics/statistics_regression/gwr_grid_downscaling.cpp
@@ -224,7 +224,7 @@ bool CGWR_Grid_Downscaling::On_Execute(void)
 	for(i=0; i<m_nPredictors; i++)
 	{
 		m_pPredictors[i]	= SG_Create_Grid(m_pDependent->Get_System());
-		m_pPredictors[i]	->Assign(pPredictors->asGrid(i), GRID_INTERPOLATION_NearestNeighbour);	// GRID_INTERPOLATION_Mean_Cells
+		m_pPredictors[i]	->Assign(pPredictors->asGrid(i), GRID_RESAMPLING_NearestNeighbour);	// GRID_RESAMPLING_Mean_Cells
 
 		m_pModel     [i]	= SG_Create_Grid(m_pDependent->Get_System());
 		m_pModel     [i]	->Set_Name(CSG_String::Format(SG_T("%s [%s]"), pPredictors->asGrid(i)->Get_Name(), _TL("Factor")));
@@ -291,7 +291,7 @@ bool CGWR_Grid_Downscaling::On_Execute(void)
 //---------------------------------------------------------
 bool CGWR_Grid_Downscaling::Set_Model(double x, double y, double &Value, double &Residual)
 {
-	if( !m_pModel[m_nPredictors]->Get_Value(x, y, Value, GRID_INTERPOLATION_BSpline) )
+	if( !m_pModel[m_nPredictors]->Get_Value(x, y, Value, GRID_RESAMPLING_BSpline) )
 	{
 		return( false );
 	}
@@ -300,8 +300,8 @@ bool CGWR_Grid_Downscaling::Set_Model(double x, double y, double &Value, double
 
 	for(int i=0; i<m_nPredictors; i++)
 	{
-		if( !m_pModel     [i]->Get_Value(x, y, Model    , GRID_INTERPOLATION_BSpline, false, true)
-		||  !m_pPredictors[i]->Get_Value(x, y, Predictor, GRID_INTERPOLATION_BSpline, false, true) )
+		if( !m_pModel     [i]->Get_Value(x, y, Model    , GRID_RESAMPLING_BSpline, false, true)
+		||  !m_pPredictors[i]->Get_Value(x, y, Predictor, GRID_RESAMPLING_BSpline, false, true) )
 		{
 			return( false );
 		}
@@ -309,7 +309,7 @@ bool CGWR_Grid_Downscaling::Set_Model(double x, double y, double &Value, double
 		Value	+= Model * Predictor;
 	}
 
-	if( !m_pResiduals->Get_Value(x, y, Residual, GRID_INTERPOLATION_BSpline) )
+	if( !m_pResiduals->Get_Value(x, y, Residual, GRID_RESAMPLING_BSpline) )
 	{
 		Residual	= 0.0;
 	}
diff --git a/src/modules/statistics/statistics_regression/gwr_grid_downscaling.h b/src/modules/statistics/statistics_regression/gwr_grid_downscaling.h
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_regression/point_grid_regression.cpp b/src/modules/statistics/statistics_regression/point_grid_regression.cpp
old mode 100644
new mode 100755
index 41b753a..e8f1b7f
--- a/src/modules/statistics/statistics_regression/point_grid_regression.cpp
+++ b/src/modules/statistics/statistics_regression/point_grid_regression.cpp
@@ -121,23 +121,20 @@ CPoint_Grid_Regression::CPoint_Grid_Regression(void)
 	);
 
 	Parameters.Add_Choice(
-		NULL	,"INTERPOL"		, _TL("Grid Interpolation"),
+		NULL	, "RESAMPLING"		, _TL("Resampling"),
 		_TL(""),
-
-		CSG_String::Format(SG_T("%s|%s|%s|%s|%s|"),
-			_TL("Nearest Neighbor"),
+		CSG_String::Format("%s|%s|%s|%s|",
+			_TL("Nearest Neighbour"),
 			_TL("Bilinear Interpolation"),
-			_TL("Inverse Distance Interpolation"),
 			_TL("Bicubic Spline Interpolation"),
 			_TL("B-Spline Interpolation")
-		), 4
+		), 3
 	);
 
 	Parameters.Add_Choice(
 		NULL	, "METHOD"		, _TL("Regression Function"),
 		_TL(""),
-
-		CSG_String::Format(SG_T("%s|%s|%s|%s|%s|%s|"),
+		CSG_String::Format("%s|%s|%s|%s|%s|%s|",
 			_TL("Y = a + b * X (linear)"),
 			_TL("Y = a + b / X"),
 			_TL("Y = a / (b - X)"),
@@ -169,7 +166,14 @@ bool CPoint_Grid_Regression::On_Execute(void)
 	pShapes			= Parameters("POINTS"    )->asShapes();
 	iAttribute		= Parameters("ATTRIBUTE" )->asInt();
 	pResiduals		= Parameters("RESIDUAL"  )->asShapes();
-	m_Interpolation	= Parameters("INTERPOL"  )->asInt();
+
+	switch( Parameters("RESAMPLING")->asInt() )
+	{
+	default:	m_Resampling	= GRID_RESAMPLING_NearestNeighbour;	break;
+	case  1:	m_Resampling	= GRID_RESAMPLING_Bilinear;			break;
+	case  2:	m_Resampling	= GRID_RESAMPLING_BicubicSpline;	break;
+	case  3:	m_Resampling	= GRID_RESAMPLING_BSpline;			break;
+	}
 
 	switch( Parameters("METHOD")->asInt() )
 	{
@@ -246,7 +250,7 @@ bool CPoint_Grid_Regression::Get_Regression(CSG_Grid *pGrid, CSG_Shapes *pShapes
 			{
 				for(iPoint=0; iPoint<pShape->Get_Point_Count(iPart); iPoint++)
 				{
-					if( pGrid->Get_Value(Point = pShape->Get_Point(iPoint, iPart), zGrid, m_Interpolation) )
+					if( pGrid->Get_Value(Point = pShape->Get_Point(iPoint, iPart), zGrid, m_Resampling) )
 					{
 						m_Regression.Add_Values(zGrid, zShape);
 
diff --git a/src/modules/statistics/statistics_regression/point_grid_regression.h b/src/modules/statistics/statistics_regression/point_grid_regression.h
old mode 100644
new mode 100755
index c5776ff..e2ad9c2
--- a/src/modules/statistics/statistics_regression/point_grid_regression.h
+++ b/src/modules/statistics/statistics_regression/point_grid_regression.h
@@ -88,7 +88,7 @@ protected:
 
 private:
 
-	int						m_Interpolation;
+	TSG_Grid_Resampling		m_Resampling;
 
 	CSG_Regression			m_Regression;
 
diff --git a/src/modules/statistics/statistics_regression/point_multi_grid_regression.cpp b/src/modules/statistics/statistics_regression/point_multi_grid_regression.cpp
old mode 100644
new mode 100755
index 7dd7084..4561e53
--- a/src/modules/statistics/statistics_regression/point_multi_grid_regression.cpp
+++ b/src/modules/statistics/statistics_regression/point_multi_grid_regression.cpp
@@ -147,15 +147,14 @@ CPoint_Multi_Grid_Regression::CPoint_Multi_Grid_Regression(void)
 	);
 
 	Parameters.Add_Choice(
-		NULL	,"INTERPOL"		, _TL("Grid Interpolation"),
+		NULL	, "RESAMPLING"	, _TL("Resampling"),
 		_TL(""),
-		CSG_String::Format(SG_T("%s|%s|%s|%s|%s|"),
-			_TL("Nearest Neighbor"),
+		CSG_String::Format("%s|%s|%s|%s|",
+			_TL("Nearest Neighbour"),
 			_TL("Bilinear Interpolation"),
-			_TL("Inverse Distance Interpolation"),
 			_TL("Bicubic Spline Interpolation"),
 			_TL("B-Spline Interpolation")
-		), 4
+		), 3
 	);
 
 	Parameters.Add_Value(
@@ -370,9 +369,18 @@ bool CPoint_Multi_Grid_Regression::Get_Samples(CSG_Parameter_Grid_List *pGrids,
 	CSG_Vector	Sample;
 
 	//-----------------------------------------------------
-	int		Interpolation	= Parameters("INTERPOL")->asInt ();
-	bool	bCoord_X		= Parameters("COORD_X" )->asBool();
-	bool	bCoord_Y		= Parameters("COORD_Y" )->asBool();
+	bool	bCoord_X	= Parameters("COORD_X")->asBool();
+	bool	bCoord_Y	= Parameters("COORD_Y")->asBool();
+
+	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;
+	}
 
 	Names	+= pPoints->Get_Field_Name(iAttribute);		// Dependent Variable
 
@@ -404,7 +412,7 @@ bool CPoint_Multi_Grid_Regression::Get_Samples(CSG_Parameter_Grid_List *pGrids,
 
 					for(iGrid=0; iGrid<pGrids->Get_Count() && bAdd; iGrid++)
 					{
-						if( pGrids->asGrid(iGrid)->Get_Value(Point, zGrid, Interpolation) )
+						if( pGrids->asGrid(iGrid)->Get_Value(Point, zGrid, Resampling) )
 						{
 							Sample[1 + iGrid]	= zGrid;
 						}
@@ -449,7 +457,15 @@ bool CPoint_Multi_Grid_Regression::Set_Regression(CSG_Parameter_Grid_List *pGrid
 	int			iGrid, nGrids, x, y;
 	TSG_Point	p;
 
-	int		Interpolation	= Parameters("INTERPOL")->asInt();
+	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;
+	}
 
 	CSG_Grid	**ppGrids	= (CSG_Grid **)SG_Malloc(m_Regression.Get_nPredictors() * sizeof(CSG_Grid *));
 
@@ -486,7 +502,7 @@ bool CPoint_Multi_Grid_Regression::Set_Regression(CSG_Parameter_Grid_List *pGrid
 			{
 				double	zGrid;
 
-				if( ppGrids[iGrid]->Get_Value(p, zGrid, Interpolation) )
+				if( ppGrids[iGrid]->Get_Value(p, zGrid, Resampling) )
 				{
 					z	+= m_Regression.Get_RCoeff(iGrid) * zGrid;
 				}
@@ -543,7 +559,16 @@ 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();
-	int			Interpolation	= Parameters("INTERPOL"  )->asInt();
+
+	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;
+	}
 
 	//-----------------------------------------------------
 	pResiduals->Create(SHAPE_TYPE_Point, CSG_String::Format("%s.%s [%s]", pPoints->Get_Name(), Parameters("ATTRIBUTE")->asString(), _TL("Residuals")));
@@ -567,7 +592,7 @@ bool CPoint_Multi_Grid_Regression::Set_Residuals(CSG_Shapes *pResiduals)
 					double		zGrid;
 					TSG_Point	Point	= pShape->Get_Point(iPoint, iPart);
 
-					if( pRegression->Get_Value(Point, zGrid, Interpolation) )
+					if( pRegression->Get_Value(Point, zGrid, Resampling) )
 					{
 						CSG_Shape	*pResidual	= pResiduals->Add_Shape();
 
diff --git a/src/modules/statistics/statistics_regression/point_multi_grid_regression.h b/src/modules/statistics/statistics_regression/point_multi_grid_regression.h
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_regression/point_trend_surface.cpp b/src/modules/statistics/statistics_regression/point_trend_surface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_regression/point_trend_surface.h b/src/modules/statistics/statistics_regression/point_trend_surface.h
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_regression/point_zonal_multi_grid_regression.cpp b/src/modules/statistics/statistics_regression/point_zonal_multi_grid_regression.cpp
old mode 100644
new mode 100755
index 0f56381..571ae84
--- a/src/modules/statistics/statistics_regression/point_zonal_multi_grid_regression.cpp
+++ b/src/modules/statistics/statistics_regression/point_zonal_multi_grid_regression.cpp
@@ -128,15 +128,14 @@ CPoint_Zonal_Multi_Grid_Regression::CPoint_Zonal_Multi_Grid_Regression(void)
 	);
 
 	Parameters.Add_Choice(
-		NULL	,"INTERPOL"		, _TL("Grid Interpolation"),
+		NULL	, "RESAMPLING"	, _TL("Resampling"),
 		_TL(""),
-		CSG_String::Format(SG_T("%s|%s|%s|%s|%s|"),
-			_TL("Nearest Neighbor"),
+		CSG_String::Format("%s|%s|%s|%s|",
+			_TL("Nearest Neighbour"),
 			_TL("Bilinear Interpolation"),
-			_TL("Inverse Distance Interpolation"),
 			_TL("Bicubic Spline Interpolation"),
 			_TL("B-Spline Interpolation")
-		), 4
+		), 3
 	);
 
 	Parameters.Add_Value(
@@ -256,7 +255,7 @@ bool CPoint_Zonal_Multi_Grid_Regression::On_Execute(void)
 				&& SG_MODULE_PARAMETER_SET("REGRESSION", &Regression             )
 				&& SG_MODULE_PARAMETER_SET("POINTS"    , &Selection              )
 				&& SG_MODULE_PARAMETER_SET("ATTRIBUTE" , Parameters("ATTRIBUTE" ))
-				&& SG_MODULE_PARAMETER_SET("INTERPOL"  , Parameters("INTERPOL"  ))
+				&& SG_MODULE_PARAMETER_SET("RESAMPLING", Parameters("RESAMPLING"))
 				&& SG_MODULE_PARAMETER_SET("COORD_X"   , Parameters("COORD_X"   ))
 				&& SG_MODULE_PARAMETER_SET("COORD_Y"   , Parameters("COORD_Y"   ))
 				&& SG_MODULE_PARAMETER_SET("INTERCEPT" , Parameters("INTERCEPT" ))
@@ -322,7 +321,15 @@ bool CPoint_Zonal_Multi_Grid_Regression::Set_Residuals(CSG_Shapes *pPoints, CSG_
 	pResiduals->Add_Field("TREND"	, SG_DATATYPE_Double);
 	pResiduals->Add_Field("RESIDUAL", SG_DATATYPE_Double);
 
-	int	Interpolation	= Parameters("INTERPOL")->asInt();
+	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;
+	}
 
 	//-----------------------------------------------------
 	for(int iShape=0; iShape<pPoints->Get_Count() && Set_Progress(iShape, pPoints->Get_Count()); iShape++)
@@ -340,7 +347,7 @@ bool CPoint_Zonal_Multi_Grid_Regression::Set_Residuals(CSG_Shapes *pPoints, CSG_
 					double		zGrid;
 					TSG_Point	Point	= pShape->Get_Point(iPoint, iPart);
 
-					if( pRegression->Get_Value(Point, zGrid, Interpolation) )
+					if( pRegression->Get_Value(Point, zGrid, Resampling) )
 					{
 						CSG_Shape	*pResidual	= pResiduals->Add_Shape();
 
diff --git a/src/modules/statistics/statistics_regression/point_zonal_multi_grid_regression.h b/src/modules/statistics/statistics_regression/point_zonal_multi_grid_regression.h
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_regression/table_regression_multiple.cpp b/src/modules/statistics/statistics_regression/table_regression_multiple.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_regression/table_regression_multiple.h b/src/modules/statistics/statistics_regression/table_regression_multiple.h
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_regression/table_trend.cpp b/src/modules/statistics/statistics_regression/table_trend.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/statistics/statistics_regression/table_trend.h b/src/modules/statistics/statistics_regression/table_trend.h
old mode 100644
new mode 100755
diff --git a/src/modules/table/Makefile.am b/src/modules/table/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/table/table_calculus/Fit.cpp b/src/modules/table/table_calculus/Fit.cpp
old mode 100644
new mode 100755
index a35f464..588fa6c
--- a/src/modules/table/table_calculus/Fit.cpp
+++ b/src/modules/table/table_calculus/Fit.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: Fit.cpp 2447 2015-03-19 14:43:42Z oconrad $
+ * Version $Id: Fit.cpp 2813 2016-02-22 21:30:40Z johanvdw $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -136,7 +136,7 @@ CFit::CFit(void)
 		"abs(x)\n"
 		"sqrt(x)\n\n"
 
-		"For Variogram - Fitting you can use the folowing Variogram - Models:\n"
+		"For Variogram - Fitting you can use the following Variogram - Models:\n"
 		"NUG(x)\n"
 		"SPH(x,a)\n"
 		"EXP(x,a)\n"
@@ -151,6 +151,11 @@ CFit::CFit(void)
 	Parameters.Add_Value(NULL, "ITER", _TL("Iterationen"), _TL(""), PARAMETER_TYPE_Int, 1000, 1, true);
 	
 	Parameters.Add_Value(NULL, "LAMDA", _TL("Max Lamda"), _TL(""), PARAMETER_TYPE_Double, 10000, 1, true);
+
+	Formel.Add_Function(SG_T("NUG"), (TSG_PFNC_Formula_1) NUG, 1, 0);
+	Formel.Add_Function(SG_T("SPH"), (TSG_PFNC_Formula_1) SPH, 2, 0);
+	Formel.Add_Function(SG_T("EXP"), (TSG_PFNC_Formula_1) EXP, 2, 0);
+	Formel.Add_Function(SG_T("LIN"), (TSG_PFNC_Formula_1) LIN, 2, 0);
 }
 
 int CFit::On_Parameter_Changed(CSG_Parameters *pParameters, CSG_Parameter *pParameter)
@@ -212,12 +217,6 @@ bool CFit::On_Execute(void)
 
 	const SG_Char *formel	=	Parameters("FORMEL")->asString();
 
-	Formel.Add_Function(SG_T("NUG"), (TSG_PFNC_Formula_1) NUG, 1, 0);
-	Formel.Add_Function(SG_T("SPH"), (TSG_PFNC_Formula_1) SPH, 2, 0);
-	Formel.Add_Function(SG_T("EXP"), (TSG_PFNC_Formula_1) EXP, 2, 0);
-    Formel.Add_Function(SG_T("LIN"), (TSG_PFNC_Formula_1) LIN, 2, 0);
-	
-	
 	Formel.Set_Formula(formel);
 	
 	
diff --git a/src/modules/table/table_calculus/Fit.h b/src/modules/table/table_calculus/Fit.h
old mode 100644
new mode 100755
diff --git a/src/modules/table/table_calculus/LMFit.cpp b/src/modules/table/table_calculus/LMFit.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/table/table_calculus/LMFit.h b/src/modules/table/table_calculus/LMFit.h
old mode 100644
new mode 100755
diff --git a/src/modules/table/table_calculus/MLB_Interface.cpp b/src/modules/table/table_calculus/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/table/table_calculus/MLB_Interface.h b/src/modules/table/table_calculus/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/table/table_calculus/Makefile.am b/src/modules/table/table_calculus/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/table/table_calculus/Table_Calculator.cpp b/src/modules/table/table_calculus/Table_Calculator.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/table/table_calculus/Table_Calculator.h b/src/modules/table/table_calculus/Table_Calculator.h
old mode 100644
new mode 100755
diff --git a/src/modules/table/table_calculus/table_cluster_analysis.cpp b/src/modules/table/table_calculus/table_cluster_analysis.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/table/table_calculus/table_cluster_analysis.h b/src/modules/table/table_calculus/table_cluster_analysis.h
old mode 100644
new mode 100755
diff --git a/src/modules/table/table_calculus/table_field_analyzer.cpp b/src/modules/table/table_calculus/table_field_analyzer.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/table/table_calculus/table_field_analyzer.h b/src/modules/table/table_calculus/table_field_analyzer.h
old mode 100644
new mode 100755
diff --git a/src/modules/table/table_calculus/table_field_statistics.cpp b/src/modules/table/table_calculus/table_field_statistics.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/table/table_calculus/table_field_statistics.h b/src/modules/table/table_calculus/table_field_statistics.h
old mode 100644
new mode 100755
diff --git a/src/modules/table/table_calculus/table_fill_record_gaps.cpp b/src/modules/table/table_calculus/table_fill_record_gaps.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/table/table_calculus/table_fill_record_gaps.h b/src/modules/table/table_calculus/table_fill_record_gaps.h
old mode 100644
new mode 100755
diff --git a/src/modules/table/table_calculus/table_mRMR.cpp b/src/modules/table/table_calculus/table_mRMR.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/table/table_calculus/table_mRMR.h b/src/modules/table/table_calculus/table_mRMR.h
old mode 100644
new mode 100755
diff --git a/src/modules/table/table_calculus/table_pca.cpp b/src/modules/table/table_calculus/table_pca.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/table/table_calculus/table_pca.h b/src/modules/table/table_calculus/table_pca.h
old mode 100644
new mode 100755
diff --git a/src/modules/table/table_calculus/table_running_average.cpp b/src/modules/table/table_calculus/table_running_average.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/table/table_calculus/table_running_average.h b/src/modules/table/table_calculus/table_running_average.h
old mode 100644
new mode 100755
diff --git a/src/modules/table/table_tools/Join_Tables.cpp b/src/modules/table/table_tools/Join_Tables.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/table/table_tools/Join_Tables.h b/src/modules/table/table_tools/Join_Tables.h
old mode 100644
new mode 100755
diff --git a/src/modules/table/table_tools/MLB_Interface.cpp b/src/modules/table/table_tools/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/table/table_tools/MLB_Interface.h b/src/modules/table/table_tools/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/table/table_tools/Makefile.am b/src/modules/table/table_tools/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/table/table_tools/Table_Create_Empty.cpp b/src/modules/table/table_tools/Table_Create_Empty.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/table/table_tools/Table_Create_Empty.h b/src/modules/table/table_tools/Table_Create_Empty.h
old mode 100644
new mode 100755
diff --git a/src/modules/table/table_tools/Table_Enumerate.cpp b/src/modules/table/table_tools/Table_Enumerate.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/table/table_tools/Table_Enumerate.h b/src/modules/table/table_tools/Table_Enumerate.h
old mode 100644
new mode 100755
diff --git a/src/modules/table/table_tools/Table_Rotate.cpp b/src/modules/table/table_tools/Table_Rotate.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/table/table_tools/Table_Rotate.h b/src/modules/table/table_tools/Table_Rotate.h
old mode 100644
new mode 100755
diff --git a/src/modules/table/table_tools/table_categories_to_indicators.cpp b/src/modules/table/table_tools/table_categories_to_indicators.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/table/table_tools/table_categories_to_indicators.h b/src/modules/table/table_tools/table_categories_to_indicators.h
old mode 100644
new mode 100755
diff --git a/src/modules/table/table_tools/table_change_color_format.cpp b/src/modules/table/table_tools/table_change_color_format.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/table/table_tools/table_change_color_format.h b/src/modules/table/table_tools/table_change_color_format.h
old mode 100644
new mode 100755
diff --git a/src/modules/table/table_tools/table_change_date_format.cpp b/src/modules/table/table_tools/table_change_date_format.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/table/table_tools/table_change_date_format.h b/src/modules/table/table_tools/table_change_date_format.h
old mode 100644
new mode 100755
diff --git a/src/modules/table/table_tools/table_change_field_type.cpp b/src/modules/table/table_tools/table_change_field_type.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/table/table_tools/table_change_field_type.h b/src/modules/table/table_tools/table_change_field_type.h
old mode 100644
new mode 100755
diff --git a/src/modules/table/table_tools/table_field_deletion.cpp b/src/modules/table/table_tools/table_field_deletion.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/table/table_tools/table_field_deletion.h b/src/modules/table/table_tools/table_field_deletion.h
old mode 100644
new mode 100755
diff --git a/src/modules/table/table_tools/table_selection.cpp b/src/modules/table/table_tools/table_selection.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/table/table_tools/table_selection.h b/src/modules/table/table_tools/table_selection.h
old mode 100644
new mode 100755
diff --git a/src/modules/table/table_tools/table_text_replacer.cpp b/src/modules/table/table_tools/table_text_replacer.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/table/table_tools/table_text_replacer.h b/src/modules/table/table_tools/table_text_replacer.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/Makefile.am b/src/modules/terrain_analysis/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_channels/ChannelNetwork.cpp b/src/modules/terrain_analysis/ta_channels/ChannelNetwork.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_channels/ChannelNetwork.h b/src/modules/terrain_analysis/ta_channels/ChannelNetwork.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_channels/ChannelNetwork_Altitude.cpp b/src/modules/terrain_analysis/ta_channels/ChannelNetwork_Altitude.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_channels/ChannelNetwork_Altitude.h b/src/modules/terrain_analysis/ta_channels/ChannelNetwork_Altitude.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_channels/ChannelNetwork_Distance.cpp b/src/modules/terrain_analysis/ta_channels/ChannelNetwork_Distance.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_channels/ChannelNetwork_Distance.h b/src/modules/terrain_analysis/ta_channels/ChannelNetwork_Distance.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_channels/D8_Flow_Analysis.cpp b/src/modules/terrain_analysis/ta_channels/D8_Flow_Analysis.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_channels/D8_Flow_Analysis.h b/src/modules/terrain_analysis/ta_channels/D8_Flow_Analysis.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_channels/MLB_Interface.cpp b/src/modules/terrain_analysis/ta_channels/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_channels/MLB_Interface.h b/src/modules/terrain_analysis/ta_channels/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_channels/Makefile.am b/src/modules/terrain_analysis/ta_channels/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_channels/Strahler.cpp b/src/modules/terrain_analysis/ta_channels/Strahler.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_channels/Strahler.h b/src/modules/terrain_analysis/ta_channels/Strahler.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_channels/Watersheds.cpp b/src/modules/terrain_analysis/ta_channels/Watersheds.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_channels/Watersheds.h b/src/modules/terrain_analysis/ta_channels/Watersheds.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_channels/Watersheds_ext.cpp b/src/modules/terrain_analysis/ta_channels/Watersheds_ext.cpp
old mode 100644
new mode 100755
index edae0f9..49b72ef
--- a/src/modules/terrain_analysis/ta_channels/Watersheds_ext.cpp
+++ b/src/modules/terrain_analysis/ta_channels/Watersheds_ext.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: Watersheds_ext.cpp 2342 2014-11-26 13:41:35Z reklov_w $
+ * Version $Id: Watersheds_ext.cpp 2806 2016-02-21 18:23:12Z johanvdw $
  *********************************************************/
 /*******************************************************************************
     Watersheds.cpp
@@ -617,7 +617,7 @@ CSG_Shape * CWatersheds_ext::Get_Basin(CSG_Grid *pBasins, CSG_Shapes *pPolygons)
 							}
 							else
 							{
-								return( false );
+								return( NULL );
 							}
 						}
 					}
diff --git a/src/modules/terrain_analysis/ta_channels/Watersheds_ext.h b/src/modules/terrain_analysis/ta_channels/Watersheds_ext.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_compound/MLB_Interface.cpp b/src/modules/terrain_analysis/ta_compound/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_compound/MLB_Interface.h b/src/modules/terrain_analysis/ta_compound/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_compound/Makefile.am b/src/modules/terrain_analysis/ta_compound/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_compound/TA_Standard.cpp b/src/modules/terrain_analysis/ta_compound/TA_Standard.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_compound/TA_Standard.h b/src/modules/terrain_analysis/ta_compound/TA_Standard.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_hydrology/CellBalance.cpp b/src/modules/terrain_analysis/ta_hydrology/CellBalance.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_hydrology/CellBalance.h b/src/modules/terrain_analysis/ta_hydrology/CellBalance.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_hydrology/EdgeContamination.cpp b/src/modules/terrain_analysis/ta_hydrology/EdgeContamination.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_hydrology/EdgeContamination.h b/src/modules/terrain_analysis/ta_hydrology/EdgeContamination.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_hydrology/Erosion_LS_Fields.cpp b/src/modules/terrain_analysis/ta_hydrology/Erosion_LS_Fields.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_hydrology/Erosion_LS_Fields.h b/src/modules/terrain_analysis/ta_hydrology/Erosion_LS_Fields.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_hydrology/Flow.cpp b/src/modules/terrain_analysis/ta_hydrology/Flow.cpp
old mode 100644
new mode 100755
index 95162fe..d75969c
--- a/src/modules/terrain_analysis/ta_hydrology/Flow.cpp
+++ b/src/modules/terrain_analysis/ta_hydrology/Flow.cpp
@@ -89,20 +89,20 @@ CFlow::CFlow(void)
 	m_bPoint	= false;
 
 	//-----------------------------------------------------
-	Parameters.Add_Grid(NULL, "ELEVATION" , _TL("Elevation"                                ), _TL(""), PARAMETER_INPUT);
-	Parameters.Add_Grid(NULL, "SINKROUTE" , _TL("Sink Routes"                              ), _TL(""), PARAMETER_INPUT_OPTIONAL);
-	Parameters.Add_Grid(NULL, "WEIGHT"    , _TL("Weight"                                   ), _TL(""), PARAMETER_INPUT_OPTIONAL);
+	Parameters.Add_Grid(NULL, "ELEVATION"    , _TL("Elevation"                        ), _TL(""), PARAMETER_INPUT);
+	Parameters.Add_Grid(NULL, "SINKROUTE"    , _TL("Sink Routes"                      ), _TL(""), PARAMETER_INPUT_OPTIONAL);
+	Parameters.Add_Grid(NULL, "WEIGHTS"      , _TL("Weights"                          ), _TL(""), PARAMETER_INPUT_OPTIONAL);
 
-	Parameters.Add_Grid(NULL, "CAREA"     , _TL("Flow Accumulation"                        ), _TL(""), PARAMETER_OUTPUT);
+	Parameters.Add_Grid(NULL, "FLOW"         , _TL("Flow Accumulation"                ), _TL(""), PARAMETER_OUTPUT);
 
-	Parameters.Add_Grid(NULL, "VAL_INPUT" , _TL("Input for Mean over Catchment Calculation"), _TL(""), PARAMETER_INPUT_OPTIONAL);
-	Parameters.Add_Grid(NULL, "VAL_MEAN"  , _TL("Mean over Catchment"                      ), _TL(""), PARAMETER_OUTPUT);
+	Parameters.Add_Grid(NULL, "VAL_INPUT"    , _TL("Input for Mean over Catchment"    ), _TL(""), PARAMETER_INPUT_OPTIONAL);
+	Parameters.Add_Grid(NULL, "VAL_MEAN"     , _TL("Mean over Catchment"              ), _TL(""), PARAMETER_OUTPUT);
 
-	Parameters.Add_Grid(NULL, "MATERIAL"  , _TL("Material"                                 ), _TL(""), PARAMETER_INPUT_OPTIONAL);
-	Parameters.Add_Grid(NULL, "TARGET"    , _TL("Accumulation Target"                      ), _TL(""), PARAMETER_INPUT_OPTIONAL);
-	Parameters.Add_Grid(NULL, "ACCU_TOT"  , _TL("Total accumulated Material"               ), _TL(""), PARAMETER_OUTPUT_OPTIONAL);	
-	Parameters.Add_Grid(NULL, "ACCU_LEFT" , _TL("Accumulated Material from Left Side"      ), _TL(""), PARAMETER_OUTPUT_OPTIONAL);		
-	Parameters.Add_Grid(NULL, "ACCU_RIGHT", _TL("Accumulated Material from Right Side"     ), _TL(""), PARAMETER_OUTPUT_OPTIONAL);		
+	Parameters.Add_Grid(NULL, "ACCU_MATERIAL", _TL("Material for Accumulation"        ), _TL(""), PARAMETER_INPUT_OPTIONAL);
+	Parameters.Add_Grid(NULL, "ACCU_TARGET"  , _TL("Accumulation Target"              ), _TL(""), PARAMETER_INPUT);
+	Parameters.Add_Grid(NULL, "ACCU_TOTAL"   , _TL("Accumulated Material"             ), _TL(""), PARAMETER_OUTPUT_OPTIONAL);	
+	Parameters.Add_Grid(NULL, "ACCU_LEFT"    , _TL("Accumulated Material (Left Side)" ), _TL(""), PARAMETER_OUTPUT_OPTIONAL);		
+	Parameters.Add_Grid(NULL, "ACCU_RIGHT"   , _TL("Accumulated Material (Right Side)"), _TL(""), PARAMETER_OUTPUT_OPTIONAL);		
 	
 	//-----------------------------------------------------
 	Parameters.Add_Value(
@@ -112,7 +112,7 @@ CFlow::CFlow(void)
 	);
 
 	Parameters.Add_Choice(
-		NULL	, "CAREA_UNIT"	, _TL("Flow Accumulation Unit"),
+		NULL	, "FLOW_UNIT"	, _TL("Flow Accumulation Unit"),
 		_TL(""),
 		CSG_String::Format("%s|%s|",
 			_TL("number of cells"),
@@ -124,8 +124,6 @@ CFlow::CFlow(void)
 
 ///////////////////////////////////////////////////////////
 //														 //
-//														 //
-//														 //
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
@@ -140,8 +138,6 @@ void CFlow::Set_Point(int x, int y)
 
 ///////////////////////////////////////////////////////////
 //														 //
-//														 //
-//														 //
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
@@ -149,12 +145,15 @@ int CFlow::On_Parameters_Enable(CSG_Parameters *pParameters, CSG_Parameter *pPar
 {
 	if( !SG_STR_CMP(pParameter->Get_Identifier(), "VAL_INPUT") )
 	{
-		pParameters->Set_Enabled("VAL_MEAN", pParameter->asGrid() != NULL);
+		pParameters->Set_Enabled("VAL_MEAN"   , pParameter->asGrid() != NULL);
 	}
 
-	if( !SG_STR_CMP(pParameter->Get_Identifier(), "WEIGHT") )
+	if( !SG_STR_CMP(pParameter->Get_Identifier(), "ACCU_MATERIAL") )
 	{
-		pParameters->Set_Enabled("WEIGHT_GT_0", pParameter->asGrid() != NULL);
+		pParameters->Set_Enabled("ACCU_TARGET", pParameter->asGrid() != NULL);
+		pParameters->Set_Enabled("ACCU_TOTAL" , pParameter->asGrid() != NULL);
+		pParameters->Set_Enabled("ACCU_LEFT"  , pParameter->asGrid() != NULL);
+		pParameters->Set_Enabled("ACCU_RIGHT" , pParameter->asGrid() != NULL);
 	}
 
 	return( CSG_Module_Grid::On_Parameters_Enable(pParameters, pParameter) );
@@ -163,52 +162,51 @@ int CFlow::On_Parameters_Enable(CSG_Parameters *pParameters, CSG_Parameter *pPar
 
 ///////////////////////////////////////////////////////////
 //														 //
-//														 //
-//														 //
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
 bool CFlow::On_Execute(void)
 {
 	//-------------------------------------------------
-	m_pDTM			= Parameters("ELEVATION")->asGrid();
-	m_pRoute		= Parameters("SINKROUTE")->asGrid();
-	m_pWeight		= Parameters("WEIGHT"   )->asGrid();
-	m_pMaterial		= Parameters("MATERIAL" )->asGrid();
-	m_pTarget		= Parameters("TARGET"   )->asGrid();
-	m_pCatch		= Parameters("CAREA"    )->asGrid();
+	m_pDTM				= Parameters("ELEVATION"    )->asGrid();
+	m_pRoute			= Parameters("SINKROUTE"    )->asGrid();
+	m_pWeights			= Parameters("WEIGHTS"      )->asGrid();
+
+	m_pAccu_Material	= Parameters("ACCU_MATERIAL")->asGrid();
+	m_pAccu_Target		= Parameters("ACCU_TARGET"  )->asGrid();
 
-	m_pFlowPath		= NULL;
+	m_pFlow				= Parameters("FLOW"         )->asGrid();
 
-	if( (m_pVal_Input = Parameters("VAL_INPUT")->asGrid()) != NULL
-	&&  (m_pVal_Mean  = Parameters("VAL_MEAN" )->asGrid()) != NULL )
+	m_pFlow_Length		= NULL;
+
+	if( (m_pVal_Input	= Parameters("VAL_INPUT"    )->asGrid()) != NULL
+	&&  (m_pVal_Mean	= Parameters("VAL_MEAN"     )->asGrid()) != NULL )
 	{
 		m_pVal_Mean->Set_Name(CSG_String::Format("%s [%s]", m_pVal_Input->Get_Name(), _TL("Mean over Catchment")));
 		m_pVal_Mean->Set_Unit(m_pVal_Input->Get_Unit());
 	}
 	else
 	{
-		m_pVal_Mean	= NULL;
+		m_pVal_Mean		= NULL;
 	}
 
-	m_pAccu_Tot		= NULL;
-	m_pAccu_Left	= NULL;
-	m_pAccu_Right	= NULL;
+	m_pAccu_Total		= NULL;
+	m_pAccu_Left		= NULL;
+	m_pAccu_Right		= NULL;
 
-	m_Step			= Parameters("STEP")->asInt();
-	m_bGT_Zero		= false;
+	m_Step				= Parameters("STEP")->asInt();
 
 	//-----------------------------------------------------
 	On_Initialize();
 
-	SET_GRID_TO(m_pCatch     , 0.0);
-	SET_GRID_TO(m_pFlowPath  , 0.0);
-	SET_GRID_TO(m_pVal_Mean  , 0.0);
-	SET_GRID_TO(m_pAccu_Tot  , 1.0);
-	SET_GRID_TO(m_pAccu_Left , 1.0);
-	SET_GRID_TO(m_pAccu_Right, 1.0);
+	SET_GRID_TO(m_pFlow       , 0.0);
+	SET_GRID_TO(m_pFlow_Length, 0.0);
+	SET_GRID_TO(m_pVal_Mean   , 0.0);
+	SET_GRID_TO(m_pAccu_Total , 1.0);
+	SET_GRID_TO(m_pAccu_Left  , 1.0);
+	SET_GRID_TO(m_pAccu_Right , 1.0);
 
-	DataObject_Set_Colors(m_pCatch, 11, SG_COLORS_WHITE_BLUE);
+	DataObject_Set_Colors(m_pFlow, 11, SG_COLORS_WHITE_BLUE);
 	
 	//-----------------------------------------------------
 	if( m_bPoint )
@@ -221,7 +219,7 @@ bool CFlow::On_Execute(void)
 
 			On_Finalize();
 
-			m_pCatch->Multiply(100.0);	// output as percentage
+			m_pFlow->Multiply(100.0);	// output as percentage
 
 			return( true );
 		}
@@ -230,11 +228,11 @@ bool CFlow::On_Execute(void)
 	//-----------------------------------------------------
 	else
 	{
-		m_pAccu_Tot		= Parameters("ACCU_TOT"  )->asGrid();
+		m_pAccu_Total	= Parameters("ACCU_TOTAL")->asGrid();
 		m_pAccu_Left	= Parameters("ACCU_LEFT" )->asGrid();
 		m_pAccu_Right	= Parameters("ACCU_RIGHT")->asGrid();
 		
-		DataObject_Set_Colors(m_pFlowPath, 11, SG_COLORS_RED_GREY_BLUE);
+		DataObject_Set_Colors(m_pFlow_Length, 11, SG_COLORS_RED_GREY_BLUE);
 
 		Calculate();
 
@@ -252,25 +250,23 @@ bool CFlow::On_Execute(void)
 
 ///////////////////////////////////////////////////////////
 //														 //
-//														 //
-//														 //
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
 void CFlow::Init_Cell(int x, int y)
 {
-	double	Weight	= m_pWeight ? m_pWeight->asDouble(x, y) : 1.0;
+	double	Weight	= !m_pWeights ? 1.0 : m_pWeights->is_NoData(x, y) ? 0.0 : m_pWeights->asDouble(x, y);
 
-	ADD_GRID_CELL_VAL(x, y, m_pCatch, Weight);
+	ADD_GRID_CELL_VAL(x, y, m_pFlow, Weight);
 
 	if( m_pVal_Mean && !m_pVal_Input->is_NoData(x, y) )
 	{
 		ADD_GRID_CELL_VAL(x, y, m_pVal_Mean, Weight * m_pVal_Input->asDouble(x, y));
 	}
 
-	Weight	*= m_pMaterial ? m_pMaterial->asDouble(x, y) : 1.0;
+	Weight	*= m_pAccu_Material ? m_pAccu_Material->asDouble(x, y) : 1.0;
 
-	SET_GRID_CELL_VAL(x, y, m_pAccu_Tot  , Weight);
+	SET_GRID_CELL_VAL(x, y, m_pAccu_Total, Weight);
 	SET_GRID_CELL_VAL(x, y, m_pAccu_Left , Weight);
 	SET_GRID_CELL_VAL(x, y, m_pAccu_Right, Weight);
 }
@@ -285,53 +281,53 @@ void CFlow::Init_Cell(int x, int y)
 //---------------------------------------------------------
 void CFlow::_Finalize(void)
 {
-	bool	bCellsToArea	= Parameters("CAREA_UNIT")->asInt() == 1;
+	bool	bCellsToArea	= Parameters("FLOW_UNIT")->asInt() == 1;
 
 	#pragma omp parallel for
 	for(sLong n=0; n<Get_NCells(); n++)
 	{
 		if( m_pDTM->is_NoData(n) )
 		{
-			if( m_pCatch      )	{	m_pCatch     ->Set_NoData(n);	}
-			if( m_pFlowPath   )	{	m_pFlowPath  ->Set_NoData(n);	}
-			if( m_pVal_Mean   )	{	m_pVal_Mean  ->Set_NoData(n);	}
-			if( m_pAccu_Tot   )	{	m_pAccu_Tot  ->Set_NoData(n);	}
-			if( m_pAccu_Left  )	{	m_pAccu_Left ->Set_NoData(n);	}
-			if( m_pAccu_Right )	{	m_pAccu_Right->Set_NoData(n);	}
+			if( m_pFlow        )	{	m_pFlow       ->Set_NoData(n);	}
+			if( m_pFlow_Length )	{	m_pFlow_Length->Set_NoData(n);	}
+			if( m_pVal_Mean    )	{	m_pVal_Mean   ->Set_NoData(n);	}
+			if( m_pAccu_Total  )	{	m_pAccu_Total ->Set_NoData(n);	}
+			if( m_pAccu_Left   )	{	m_pAccu_Left  ->Set_NoData(n);	}
+			if( m_pAccu_Right  )	{	m_pAccu_Right ->Set_NoData(n);	}
 		}
 		else
 		{
 			//---------------------------------------------
-			double	Catch	= m_pCatch->asDouble(n);
+			double	Flow	= m_pFlow->asDouble(n);
 
-			if( m_pCatch && bCellsToArea )
+			if( m_pFlow && bCellsToArea )
 			{
-				m_pCatch->Set_Value(n, Catch * Get_System()->Get_Cellarea());
+				m_pFlow->Set_Value(n, Flow * Get_System()->Get_Cellarea());
 			}
 
-			if( Catch > 0.0 )
+			if( Flow > 0.0 )
 			{
-				if( m_pFlowPath )	{	m_pFlowPath->Mul_Value(n, 1.0 / Catch);	}
-				if( m_pVal_Mean )	{	m_pVal_Mean->Mul_Value(n, 1.0 / Catch);	}
+				if( m_pFlow_Length )	{	m_pFlow_Length->Mul_Value(n, 1.0 / Flow);	}
+				if( m_pVal_Mean    )	{	m_pVal_Mean   ->Mul_Value(n, 1.0 / Flow);	}
 			}
 			else
 			{
-				if( m_pFlowPath )	{	m_pFlowPath->Set_Value(n, 0.0);	}
-				if( m_pVal_Mean )	{	m_pVal_Mean->Set_Value(n, 0.0);	}
+				if( m_pFlow_Length )	{	m_pFlow_Length->Set_Value(n, 0.0);	}
+				if( m_pVal_Mean    )	{	m_pVal_Mean   ->Set_Value(n, 0.0);	}
 			}
 
 			//---------------------------------------------
-			if( m_pTarget )
+			if( m_pAccu_Target )
 			{
-				if( m_pTarget->is_NoData(n) )
+				if( m_pAccu_Target->is_NoData(n) )
 				{
 					if( m_pAccu_Left  )	{	m_pAccu_Left ->Set_NoData(n);	}
 					if( m_pAccu_Right )	{	m_pAccu_Right->Set_NoData(n);	}
 				}
 				else
 				{
-					double	Material	= m_pMaterial ? m_pMaterial->asDouble(n) : 1.0;
-					double	Weight		= m_pWeight   ? m_pWeight  ->asDouble(n) : 1.0;
+					double	Material	= m_pAccu_Material ? m_pAccu_Material->asDouble(n) : 1.0;
+					double	Weight		= !m_pWeights ? 1.0 : m_pWeights->is_NoData(n) ? 0.0 : m_pWeights->asDouble(n);
 
 					if( m_pAccu_Left  )	{	m_pAccu_Left ->Add_Value(n, - 0.5 * Weight * Material);	}
 					if( m_pAccu_Right )	{	m_pAccu_Right->Add_Value(n, - 0.5 * Weight * Material);	}
@@ -344,8 +340,6 @@ void CFlow::_Finalize(void)
 
 ///////////////////////////////////////////////////////////
 //														 //
-//														 //
-//														 //
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
@@ -357,8 +351,6 @@ void CFlow::Get_Gradient(int x, int y, double &Slope, double &Aspect)
 
 ///////////////////////////////////////////////////////////
 //														 //
-//														 //
-//														 //
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
@@ -377,29 +369,29 @@ void CFlow::Add_Fraction(int x, int y, int Direction, double Fraction)
 		return;
 	}
 
-	ADD_GRID_CELL_VAL(ix, iy, m_pCatch   , Fraction *  m_pCatch   ->asDouble(x, y));
-	ADD_GRID_CELL_VAL(ix, iy, m_pFlowPath, Fraction * (m_pFlowPath->asDouble(x, y) + Get_Length(Direction)));
-	ADD_GRID_CELL_VAL(ix, iy, m_pVal_Mean, Fraction *  m_pVal_Mean->asDouble(x, y));
+	ADD_GRID_CELL_VAL(ix, iy, m_pFlow       , Fraction *  m_pFlow       ->asDouble(x, y));
+	ADD_GRID_CELL_VAL(ix, iy, m_pFlow_Length, Fraction * (m_pFlow_Length->asDouble(x, y) + Get_Length(Direction)));
+	ADD_GRID_CELL_VAL(ix, iy, m_pVal_Mean   , Fraction *  m_pVal_Mean   ->asDouble(x, y));
 
-	if( !m_pTarget )
+	if( !m_pAccu_Target )
 	{
-		ADD_GRID_CELL_VAL(ix, iy, m_pAccu_Tot  , Fraction * m_pAccu_Tot      ->asDouble(x, y));
-		ADD_GRID_CELL_VAL(ix, iy, m_pAccu_Left , Fraction * m_pAccu_Left     ->asDouble(x, y));
-		ADD_GRID_CELL_VAL(ix, iy, m_pAccu_Right, Fraction * m_pAccu_Right    ->asDouble(x, y));
+		ADD_GRID_CELL_VAL(ix, iy, m_pAccu_Total, Fraction * m_pAccu_Total->asDouble(x, y));
+		ADD_GRID_CELL_VAL(ix, iy, m_pAccu_Left , Fraction * m_pAccu_Left ->asDouble(x, y));
+		ADD_GRID_CELL_VAL(ix, iy, m_pAccu_Right, Fraction * m_pAccu_Right->asDouble(x, y));
 	}
-	else if(  m_pTarget->is_NoData(ix, iy) && m_pTarget->is_NoData(x, y) )
+	else if(  m_pAccu_Target->is_NoData(ix, iy) && m_pAccu_Target->is_NoData(x, y) )
 	{
-		ADD_GRID_CELL_VAL(ix, iy, m_pAccu_Tot  , Fraction * m_pAccu_Tot      ->asDouble(x, y));
-		ADD_GRID_CELL_VAL(ix, iy, m_pAccu_Left , Fraction * m_pAccu_Left     ->asDouble(x, y));
-		ADD_GRID_CELL_VAL(ix, iy, m_pAccu_Right, Fraction * m_pAccu_Right    ->asDouble(x, y));
+		ADD_GRID_CELL_VAL(ix, iy, m_pAccu_Total, Fraction * m_pAccu_Total->asDouble(x, y));
+		ADD_GRID_CELL_VAL(ix, iy, m_pAccu_Left , Fraction * m_pAccu_Left ->asDouble(x, y));
+		ADD_GRID_CELL_VAL(ix, iy, m_pAccu_Right, Fraction * m_pAccu_Right->asDouble(x, y));
 	}
-	else if( !m_pTarget->is_NoData(ix, iy) && m_pTarget->is_NoData(x, y) )
+	else if( !m_pAccu_Target->is_NoData(ix, iy) && m_pAccu_Target->is_NoData(x, y) )
 	{
 		bool	left, right;
 
 		Find_Sides(x, y, Direction, left, right);
 
-		ADD_GRID_CELL_VAL(ix, iy, m_pAccu_Tot  , Fraction * m_pAccu_Tot      ->asDouble(x, y));
+		ADD_GRID_CELL_VAL(ix, iy, m_pAccu_Total, Fraction * m_pAccu_Total->asDouble(x, y));
 
 		if( left && right )
 		{
@@ -425,25 +417,25 @@ void CFlow::Add_Portion(int x, int y, int ix, int iy, int Direction)
 		return;
 	}
 
-	ADD_GRID_CELL_VAL(ix, iy, m_pCatch   , m_pCatch   ->asDouble(x, y));
-	ADD_GRID_CELL_VAL(ix, iy, m_pFlowPath, m_pFlowPath->asDouble(x, y));
-	ADD_GRID_CELL_VAL(ix, iy, m_pVal_Mean, m_pVal_Mean->asDouble(x, y));
+	ADD_GRID_CELL_VAL(ix, iy, m_pFlow       , m_pFlow       ->asDouble(x, y));
+	ADD_GRID_CELL_VAL(ix, iy, m_pFlow_Length, m_pFlow_Length->asDouble(x, y));
+	ADD_GRID_CELL_VAL(ix, iy, m_pVal_Mean   , m_pVal_Mean   ->asDouble(x, y));
 
-	if( m_pTarget )
+	if( m_pAccu_Target )
 	{
-		if( m_pTarget->is_NoData(ix, iy) && m_pTarget->is_NoData(x, y) )
+		if( m_pAccu_Target->is_NoData(ix, iy) && m_pAccu_Target->is_NoData(x, y) )
 		{
-			ADD_GRID_CELL_VAL(ix, iy, m_pAccu_Tot  , m_pAccu_Tot  ->asDouble(x, y));
+			ADD_GRID_CELL_VAL(ix, iy, m_pAccu_Total, m_pAccu_Total->asDouble(x, y));
 			ADD_GRID_CELL_VAL(ix, iy, m_pAccu_Left , m_pAccu_Left ->asDouble(x, y));
 			ADD_GRID_CELL_VAL(ix, iy, m_pAccu_Right, m_pAccu_Right->asDouble(x, y));				
 		}
-		else if( !m_pTarget->is_NoData(ix, iy) && m_pTarget->is_NoData(x, y))
+		else if( !m_pAccu_Target->is_NoData(ix, iy) && m_pAccu_Target->is_NoData(x, y))
 		{
 			bool	left, right;
 
 			Find_Sides(x, y, Direction, left, right);
 
-			ADD_GRID_CELL_VAL(ix, iy, m_pAccu_Tot, m_pAccu_Tot->asDouble(x, y));
+			ADD_GRID_CELL_VAL(ix, iy, m_pAccu_Total, m_pAccu_Total->asDouble(x, y));
 				
 			if( left && right )
 			{
@@ -583,7 +575,7 @@ void CFlow::Find_Sides(int x, int y, int Direction, bool &left, bool &right)
 	FL_Dir		        = Direction;
 	stream1_X			= Get_xTo( FL_Dir, x );
 	stream1_Y			= Get_yTo( FL_Dir, y );
-	stream1_Dir			= m_pTarget->asInt(stream1_X, stream1_Y);
+	stream1_Dir			= m_pAccu_Target->asInt(stream1_X, stream1_Y);
 
 	/*--Note: At this point it is already assumed that FL_Dir points to 
 	    a grid cell that belongs to the stream network. Thus, stream1_X,
@@ -658,10 +650,10 @@ void CFlow::Find_Sides(int x, int y, int Direction, bool &left, bool &right)
 			if( is_InGrid(stream2_X, stream2_Y)	)
 			{
 				// Make sure it is not a missing-value
-				if ( ! m_pTarget->is_NoData( stream2_X, stream2_Y ) )
+				if ( ! m_pAccu_Target->is_NoData( stream2_X, stream2_Y ) )
 				{
 					// Is the stream cell an upstream tributary?
-					stream2_Dir = m_pTarget->asInt(stream2_X, stream2_Y);
+					stream2_Dir = m_pAccu_Target->asInt(stream2_X, stream2_Y);
 					is_upstream = stream1_X == Get_xTo(stream2_Dir, stream2_X) && 
 									stream1_Y == Get_yTo(stream2_Dir, stream2_Y);
 								
diff --git a/src/modules/terrain_analysis/ta_hydrology/Flow.h b/src/modules/terrain_analysis/ta_hydrology/Flow.h
old mode 100644
new mode 100755
index 3ff91fd..35d2143
--- a/src/modules/terrain_analysis/ta_hydrology/Flow.h
+++ b/src/modules/terrain_analysis/ta_hydrology/Flow.h
@@ -101,7 +101,7 @@ enum
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
-class ta_hydrology_EXPORT CFlow : public CSG_Module_Grid  
+class CFlow : public CSG_Module_Grid  
 {
 public:
 	CFlow(void);
@@ -113,14 +113,13 @@ public:
 
 protected:
 
-	bool					m_bGT_Zero;
-
 	int						m_Step;
 
 	double					m_Converge;
 
-	CSG_Grid				*m_pDTM, *m_pRoute, *m_pWeight, *m_pCatch, *m_pFlowPath, *m_pVal_Input, *m_pVal_Mean,
-							*m_pMaterial, *m_pTarget, *m_pAccu_Tot, *m_pAccu_Left, *m_pAccu_Right;
+	CSG_Grid				*m_pDTM, *m_pRoute, *m_pWeights, *m_pFlow, *m_pFlow_Length,
+							*m_pVal_Input, *m_pVal_Mean,
+							*m_pAccu_Material, *m_pAccu_Target, *m_pAccu_Total, *m_pAccu_Left, *m_pAccu_Right;
 
 
 	virtual	int				On_Parameters_Enable	(CSG_Parameters *pParameters, CSG_Parameter *pParameter);
diff --git a/src/modules/terrain_analysis/ta_hydrology/FlowDepth.cpp b/src/modules/terrain_analysis/ta_hydrology/FlowDepth.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_hydrology/FlowDepth.h b/src/modules/terrain_analysis/ta_hydrology/FlowDepth.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_hydrology/Flow_AreaDownslope.cpp b/src/modules/terrain_analysis/ta_hydrology/Flow_AreaDownslope.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_hydrology/Flow_AreaDownslope.h b/src/modules/terrain_analysis/ta_hydrology/Flow_AreaDownslope.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_hydrology/Flow_AreaUpslope.cpp b/src/modules/terrain_analysis/ta_hydrology/Flow_AreaUpslope.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_hydrology/Flow_AreaUpslope.h b/src/modules/terrain_analysis/ta_hydrology/Flow_AreaUpslope.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_hydrology/Flow_BRM.h b/src/modules/terrain_analysis/ta_hydrology/Flow_BRM.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_hydrology/Flow_Distance.cpp b/src/modules/terrain_analysis/ta_hydrology/Flow_Distance.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_hydrology/Flow_Distance.h b/src/modules/terrain_analysis/ta_hydrology/Flow_Distance.h
old mode 100644
new mode 100755
index 24bab22..c61b012
--- a/src/modules/terrain_analysis/ta_hydrology/Flow_Distance.h
+++ b/src/modules/terrain_analysis/ta_hydrology/Flow_Distance.h
@@ -82,7 +82,7 @@
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
-class ta_hydrology_EXPORT CFlow_Distance : public CSG_Module_Grid  
+class CFlow_Distance : public CSG_Module_Grid  
 {
 public:
 	CFlow_Distance(void);
diff --git a/src/modules/terrain_analysis/ta_hydrology/Flow_Parallel.cpp b/src/modules/terrain_analysis/ta_hydrology/Flow_Parallel.cpp
old mode 100644
new mode 100755
index 54e74f8..88ff5f3
--- a/src/modules/terrain_analysis/ta_hydrology/Flow_Parallel.cpp
+++ b/src/modules/terrain_analysis/ta_hydrology/Flow_Parallel.cpp
@@ -75,7 +75,7 @@ CFlow_Parallel::CFlow_Parallel(void)
 {
 	Set_Name		(_TL("Flow Accumulation (Top-Down)"));
 
-	Set_Author		("O.Conrad (c) 2001-2014, T.Grabs portions (c) 2010");
+	Set_Author		("O.Conrad (c) 2001-2016, T.Grabs portions (c) 2010");
 
 	Set_Description	(_TW(
 		"Top-down processing of cells for calculation of flow accumulation and related parameters. "
@@ -129,8 +129,8 @@ CFlow_Parallel::CFlow_Parallel(void)
 
 	//-----------------------------------------------------
 	Parameters.Add_Grid(
-		NULL	, "FLOWLEN"		, _TL("Flow Path Length"),
-		_TL(""),
+		NULL	, "FLOW_LENGTH"	, _TL("Flow Path Length"),
+		_TL("average distance that a cell's accumulated flow travelled"),
 		PARAMETER_OUTPUT_OPTIONAL
 	);
 
@@ -151,7 +151,7 @@ CFlow_Parallel::CFlow_Parallel(void)
 	Parameters.Add_Choice(
 		NULL	, "METHOD"		, _TL("Method"),
 		_TL(""),
-		CSG_String::Format(SG_T("%s|%s|%s|%s|%s|%s|%s|"),
+		CSG_String::Format("%s|%s|%s|%s|%s|%s|%s|",
 			_TL("Deterministic 8"),
 			_TL("Rho 8"),
 			_TL("Braunschweiger Reliefmodell"),
@@ -185,17 +185,21 @@ CFlow_Parallel::CFlow_Parallel(void)
 	);
 
 	Parameters.Add_Value(
-		NULL	, "WEIGHT_GT_0"	, _TL("Suppress Negative Flow Accumulation Values"),
-		_TL("keep accumulated weights above zero; useful e.g. when accumulating measures of water balance."),
+		NULL	, "NO_NEGATIVES", _TL("Prevent Negative Flow Accumulation"),
+		_TL("when using weights: do not transport negative flow, set it to zero instead; useful e.g. when accumulating measures of water balance."),
 		PARAMETER_TYPE_Bool, true
 	);
+
+	Parameters.Add_Grid(
+		NULL	, "WEIGHT_LOSS"	, _TL("Loss through Negative Weights"),
+		_TL("when using weights without support for negative flow: output of the absolute amount of negative flow that occured"),
+		PARAMETER_OUTPUT_OPTIONAL
+	);
 }
 
 
 ///////////////////////////////////////////////////////////
 //														 //
-//														 //
-//														 //
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
@@ -212,29 +216,35 @@ int CFlow_Parallel::On_Parameters_Enable(CSG_Parameters *pParameters, CSG_Parame
 		pParameters->Set_Enabled("LINEAR_VAL", pParameter->asBool());
 	}
 
+	if( !SG_STR_CMP(pParameter->Get_Identifier(), "WEIGHTS") )
+	{
+		pParameters->Set_Enabled("NO_NEGATIVES", pParameter->asGrid() != NULL);
+		pParameters->Set_Enabled("WEIGHT_LOSS" , pParameter->asGrid() != NULL && Parameters("NO_NEGATIVES")->asBool());
+	}
+
+	if( !SG_STR_CMP(pParameter->Get_Identifier(), "NO_NEGATIVES") )
+	{
+		pParameters->Set_Enabled("WEIGHT_LOSS" , pParameter->asBool());
+	}
+
 	return( CFlow::On_Parameters_Enable(pParameters, pParameter) );
 }
 
 
 ///////////////////////////////////////////////////////////
 //														 //
-//														 //
-//														 //
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
 void CFlow_Parallel::On_Initialize(void)
 {
-	m_pFlowPath	= Parameters("FLOWLEN")->asGrid();
-	m_Converge	= Parameters("CONVERGENCE")->asDouble();
-	m_bGT_Zero	= m_pWeight ? Parameters("WEIGHT_GT_0")->asBool() : false;
+	m_pFlow_Length	= Parameters("FLOW_LENGTH")->asGrid();
+	m_Converge		= Parameters("CONVERGENCE")->asDouble();
 }
 
 
 ///////////////////////////////////////////////////////////
 //														 //
-//														 //
-//														 //
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
@@ -263,8 +273,6 @@ bool CFlow_Parallel::Calculate(int x, int y)
 
 ///////////////////////////////////////////////////////////
 //														 //
-//														 //
-//														 //
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
@@ -291,22 +299,37 @@ bool CFlow_Parallel::Set_Flow(void)
 	CSG_Grid	*pLinear_Dir	= Parameters("LINEAR_DIR")->asGrid();
 
 	//-----------------------------------------------------
+	bool	bNoNegatives	= m_pWeights ? Parameters("NO_NEGATIVES")->asBool() : false;
+
+	CSG_Grid	*pLoss	= Parameters("WEIGHT_LOSS")->asGrid();
+
+	if( bNoNegatives && pLoss )
+	{
+		pLoss->Assign_NoData();
+	}
+
+	//-----------------------------------------------------
 	for(sLong n=0; n<Get_NCells() && Set_Progress_NCells(n); n++)
 	{
 		int		x, y;
 
 		if( m_pDTM->Get_Sorted(n, x, y) )
 		{
-			if( m_bGT_Zero && m_pCatch->asDouble(x, y) < 0.0 )
+			if( bNoNegatives && m_pFlow->asDouble(x, y) < 0.0 )
 			{
-				m_pCatch->Set_Value(x, y, 0.0);
+				if( pLoss )
+				{
+					pLoss->Set_Value(x, y, fabs(m_pFlow->asDouble(x, y)));
+				}
+
+				m_pFlow->Set_Value(x, y, 0.0);
 			}
 
 			if( pLinear_Dir && !pLinear_Dir->is_NoData(x, y) )
 			{
 				Set_D8(x, y, pLinear_Dir->asInt(x, y));
 			}
-			else if( dLinear > 0.0 && dLinear <= (pLinear_Val && !pLinear_Val->is_NoData(x, y) ? pLinear_Val->asDouble(x, y) : m_pCatch->asDouble(x, y)) )
+			else if( dLinear > 0.0 && dLinear <= (pLinear_Val && !pLinear_Val->is_NoData(x, y) ? pLinear_Val->asDouble(x, y) : m_pFlow->asDouble(x, y)) )
 			{
 				Set_D8(x, y, pLinear_Dir && !pLinear_Dir->is_NoData(x, y) ? pLinear_Dir->asInt(x, y) : -1);
 			}
diff --git a/src/modules/terrain_analysis/ta_hydrology/Flow_Parallel.h b/src/modules/terrain_analysis/ta_hydrology/Flow_Parallel.h
old mode 100644
new mode 100755
index 4e2ff7a..7ee6832
--- a/src/modules/terrain_analysis/ta_hydrology/Flow_Parallel.h
+++ b/src/modules/terrain_analysis/ta_hydrology/Flow_Parallel.h
@@ -82,7 +82,7 @@
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
-class ta_hydrology_EXPORT CFlow_Parallel : public CFlow  
+class CFlow_Parallel : public CFlow  
 {
 public:
 	CFlow_Parallel(void);
@@ -105,12 +105,12 @@ private:
 	void					Check_Route		(int x, int y);
 
 	void					Set_D8			(int x, int y, int Direction = -1);
-	void					Set_Rho8		(int x, int y );
-	void					Set_DInf		(int x, int y );
-	void					Set_MFD			(int x, int y );
-	void					Set_MMDGFD		(int x, int y );	
-	void					Set_MDInf		(int x, int y );	
-	void					Set_BRM			(int x, int y );
+	void					Set_Rho8		(int x, int y);
+	void					Set_DInf		(int x, int y);
+	void					Set_MFD			(int x, int y);
+	void					Set_MMDGFD		(int x, int y);	
+	void					Set_MDInf		(int x, int y);	
+	void					Set_BRM			(int x, int y);
 
 	//-----------------------------------------------------
 	int						BRM_kgexp[8], BRM_idreh[8];
diff --git a/src/modules/terrain_analysis/ta_hydrology/Flow_RecursiveDown.cpp b/src/modules/terrain_analysis/ta_hydrology/Flow_RecursiveDown.cpp
old mode 100644
new mode 100755
index a55e57f..bbdecd5
--- a/src/modules/terrain_analysis/ta_hydrology/Flow_RecursiveDown.cpp
+++ b/src/modules/terrain_analysis/ta_hydrology/Flow_RecursiveDown.cpp
@@ -84,7 +84,7 @@ CFlow_RecursiveDown::CFlow_RecursiveDown(void)
 {
 	Set_Name		(_TL("Flow Accumulation (Flow Tracing)"));
 
-	Set_Author		(SG_T("O.Conrad (c) 2001"));
+	Set_Author		("O.Conrad (c) 2001");
 
 	Set_Description	(_TW(
 		"Flow tracing algorithms for calculations of flow accumulation and related parameters. "
@@ -115,7 +115,7 @@ CFlow_RecursiveDown::CFlow_RecursiveDown(void)
 	Parameters.Add_Choice(
 		NULL	, "METHOD"		, _TL("Method"),
 		_TL(""),
-		CSG_String::Format(SG_T("%s|%s|%s|"),
+		CSG_String::Format("%s|%s|%s|",
 			_TL("Rho 8"),
 			_TL("Kinematic Routing Algorithm"),
 			_TL("DEMON")
@@ -142,8 +142,6 @@ CFlow_RecursiveDown::CFlow_RecursiveDown(void)
 
 ///////////////////////////////////////////////////////////
 //														 //
-//														 //
-//														 //
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
@@ -252,8 +250,6 @@ void CFlow_RecursiveDown::On_Finalize(void)
 
 ///////////////////////////////////////////////////////////
 //														 //
-//														 //
-//														 //
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
@@ -275,7 +271,7 @@ bool CFlow_RecursiveDown::Calculate(int x, int y)
 {
 	double	qFlow;
 
-	if( !m_pDTM->is_NoData(x, y) && (qFlow = m_pWeight ? m_pWeight->asDouble(x, y) : 1.0) > 0.0 )
+	if( !m_pDTM->is_NoData(x, y) && (qFlow = m_pWeights ? m_pWeights->asDouble(x, y) : 1.0) > 0.0 )
 	{
 		Src_Value	= m_pVal_Mean && !m_pVal_Input->is_NoData(x, y) ? m_pVal_Input->asDouble(x, y) : 0.0;
 
@@ -299,22 +295,18 @@ bool CFlow_RecursiveDown::Calculate(int x, int y)
 
 ///////////////////////////////////////////////////////////
 //														 //
-//														 //
-//														 //
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
 void CFlow_RecursiveDown::Add_Flow(int x, int y, double Fraction)
 {
-	if( m_pCatch    )	{	m_pCatch   ->Add_Value(x, y, Fraction);	}
+	if( m_pFlow     )	{	m_pFlow    ->Add_Value(x, y, Fraction);	}
 	if( m_pVal_Mean )	{	m_pVal_Mean->Add_Value(x, y, Fraction * Src_Value );	}
 }
 
 
 ///////////////////////////////////////////////////////////
 //														 //
-//														 //
-//														 //
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
diff --git a/src/modules/terrain_analysis/ta_hydrology/Flow_RecursiveDown.h b/src/modules/terrain_analysis/ta_hydrology/Flow_RecursiveDown.h
old mode 100644
new mode 100755
index e833a3a..d6e6aa6
--- a/src/modules/terrain_analysis/ta_hydrology/Flow_RecursiveDown.h
+++ b/src/modules/terrain_analysis/ta_hydrology/Flow_RecursiveDown.h
@@ -82,7 +82,7 @@
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
-class ta_hydrology_EXPORT CFlow_RecursiveDown : public CFlow  
+class CFlow_RecursiveDown : public CFlow  
 {
 public:
 	CFlow_RecursiveDown(void);
diff --git a/src/modules/terrain_analysis/ta_hydrology/Flow_RecursiveUp.cpp b/src/modules/terrain_analysis/ta_hydrology/Flow_RecursiveUp.cpp
old mode 100644
new mode 100755
index e572163..7fea6bd
--- a/src/modules/terrain_analysis/ta_hydrology/Flow_RecursiveUp.cpp
+++ b/src/modules/terrain_analysis/ta_hydrology/Flow_RecursiveUp.cpp
@@ -110,32 +110,23 @@ CFlow_RecursiveUp::CFlow_RecursiveUp(void)
 
 
 	//-----------------------------------------------------
-	// Input...
-
 	Parameters.Add_Grid(
 		NULL	, "TARGETS"		, _TL("Target Areas"),
 		_TL(""),
 		PARAMETER_INPUT_OPTIONAL
 	);
 
-
-	//-----------------------------------------------------
-	// Output...
-
 	Parameters.Add_Grid(
-		NULL	, "FLOWLEN"		, _TL("Flow Path Length"),
-		_TL(""),
+		NULL	, "FLOW_LENGTH"	, _TL("Flow Path Length"),
+		_TL("average distance that a cell's accumulated flow travelled"),
 		PARAMETER_OUTPUT_OPTIONAL
 	);
 
-
 	//-----------------------------------------------------
-	// Method...
-
 	Parameters.Add_Choice(
 		NULL	, "METHOD"		, _TL("Method"),
 		_TL(""),
-		CSG_String::Format(SG_T("%s|%s|%s|%s|"),
+		CSG_String::Format("%s|%s|%s|%s|",
 			_TL("Deterministic 8"),
 			_TL("Rho 8"),
 			_TL("Deterministic Infinity"),
@@ -145,8 +136,6 @@ CFlow_RecursiveUp::CFlow_RecursiveUp(void)
 
 
 	//-----------------------------------------------------
-	// Options...
-
 	Parameters.Add_Value(
 		NULL	, "CONVERGENCE"	, _TL("Convergence"),
 		_TL("Convergence factor for Multiple m_Flow Direction Algorithm (Freeman 1991)"),
@@ -154,22 +143,45 @@ CFlow_RecursiveUp::CFlow_RecursiveUp(void)
 	);
 
 	Parameters.Add_Value(
-		NULL	, "WEIGHT_GT_0"	, _TL("Suppress Negative Flow Accumulation Values"),
-		_TL("keep accumulated weights above zero; useful e.g. when accumulating measures of water balance."),
+		NULL	, "NO_NEGATIVES", _TL("Prevent Negative Flow Accumulation"),
+		_TL("when using weights: do not transport negative flow, set it to zero instead; useful e.g. when accumulating measures of water balance."),
 		PARAMETER_TYPE_Bool, true
 	);
 
+	Parameters.Add_Grid(
+		NULL	, "WEIGHT_LOSS"	, _TL("Loss through Negative Weights"),
+		_TL("when using weights without support for negative flow: output of the absolute amount of negative flow that occured"),
+		PARAMETER_OUTPUT_OPTIONAL
+	);
+
 	
 	//-----------------------------------------------------
-	// Initialisations...
-
 	m_Flow	= NULL;
 }
 
 
 ///////////////////////////////////////////////////////////
 //														 //
-//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+int CFlow_RecursiveUp::On_Parameters_Enable(CSG_Parameters *pParameters, CSG_Parameter *pParameter)
+{
+	if( !SG_STR_CMP(pParameter->Get_Identifier(), "METHOD") )
+	{
+		pParameters->Set_Enabled("CONVERGENCE", pParameter->asInt() == 4 || pParameter->asInt() == 5);
+	}
+
+	if( !SG_STR_CMP(pParameter->Get_Identifier(), "WEIGHTS") )
+	{
+		pParameters->Set_Enabled("NO_NEGATIVES", pParameter->asGrid() != NULL);
+	}
+
+	return( CFlow::On_Parameters_Enable(pParameters, pParameter) );
+}
+
+
+///////////////////////////////////////////////////////////
 //														 //
 ///////////////////////////////////////////////////////////
 
@@ -241,23 +253,26 @@ void CFlow_RecursiveUp::On_Destroy(void)
 
 ///////////////////////////////////////////////////////////
 //														 //
-//														 //
-//														 //
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
 void CFlow_RecursiveUp::On_Initialize(void)
 {
-	m_pFlowPath	= Parameters("FLOWLEN")->asGrid();
-	m_Converge	= Parameters("CONVERGENCE")->asDouble();
-	m_bGT_Zero	= m_pWeight ? Parameters("WEIGHT_GT_0")->asBool() : false;
+	m_pFlow_Length	= Parameters("FLOW_LENGTH")->asGrid();
+	m_Converge		= Parameters("CONVERGENCE")->asDouble();
+
+	m_bNoNegatives	= m_pWeights ? Parameters("NO_NEGATIVES")->asBool() : false;
+	m_pLoss			= Parameters("WEIGHT_LOSS")->asGrid();
+
+	if( m_bNoNegatives && m_pLoss )
+	{
+		m_pLoss->Assign_NoData();
+	}
 }
 
 
 ///////////////////////////////////////////////////////////
 //														 //
-//														 //
-//														 //
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
@@ -298,8 +313,6 @@ bool CFlow_RecursiveUp::Calculate(int x, int y)
 
 ///////////////////////////////////////////////////////////
 //														 //
-//														 //
-//														 //
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
@@ -328,9 +341,14 @@ void CFlow_RecursiveUp::Get_Flow(int x, int y)
 			}
 		}
 
-		if( m_bGT_Zero && m_pCatch->asDouble(x, y) < 0.0 )
+		if( m_bNoNegatives && m_pFlow->asDouble(x, y) < 0.0 )
 		{
-			m_pCatch->Set_Value(x, y, 0.0);
+			if( m_pLoss )
+			{
+				m_pLoss->Set_Value(x, y, fabs(m_pFlow->asDouble(x, y)));
+			}
+
+			m_pFlow->Set_Value(x, y, 0.0);
 		}
 	}
 }
@@ -338,8 +356,6 @@ void CFlow_RecursiveUp::Get_Flow(int x, int y)
 
 ///////////////////////////////////////////////////////////
 //														 //
-//														 //
-//														 //
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
diff --git a/src/modules/terrain_analysis/ta_hydrology/Flow_RecursiveUp.h b/src/modules/terrain_analysis/ta_hydrology/Flow_RecursiveUp.h
old mode 100644
new mode 100755
index bf0bf46..19bf12a
--- a/src/modules/terrain_analysis/ta_hydrology/Flow_RecursiveUp.h
+++ b/src/modules/terrain_analysis/ta_hydrology/Flow_RecursiveUp.h
@@ -82,7 +82,7 @@
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
-class ta_hydrology_EXPORT CFlow_RecursiveUp : public CFlow
+class CFlow_RecursiveUp : public CFlow
 {
 public:
 	CFlow_RecursiveUp(void);
@@ -90,26 +90,32 @@ public:
 
 protected:
 
-	virtual void			On_Initialize	(void);
+	virtual int				On_Parameters_Enable	(CSG_Parameters *pParameters, CSG_Parameter *pParameter);
 
-	virtual bool			Calculate		(void);
-	virtual bool			Calculate		(int x, int y);
+	virtual void			On_Initialize			(void);
+
+	virtual bool			Calculate				(void);
+	virtual bool			Calculate				(int x, int y);
 
 
 private:
 
+	bool					m_bNoNegatives;
+
 	double					***m_Flow;
+	
+	CSG_Grid				*m_pLoss;
 
 
 	void					On_Create		(void);
 	void					On_Destroy		(void);
 
-	void					Get_Flow		(int x, int y );
+	void					Get_Flow		(int x, int y);
 
-	void					Set_D8			(int x, int y );
-	void					Set_Rho8		(int x, int y );
-	void					Set_DInf		(int x, int y );
-	void					Set_MFD			(int x, int y );
+	void					Set_D8			(int x, int y);
+	void					Set_Rho8		(int x, int y);
+	void					Set_DInf		(int x, int y);
+	void					Set_MFD			(int x, int y);
 };
 
 
diff --git a/src/modules/terrain_analysis/ta_hydrology/Helper.cpp b/src/modules/terrain_analysis/ta_hydrology/Helper.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_hydrology/Helper.h b/src/modules/terrain_analysis/ta_hydrology/Helper.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_hydrology/IsochronesConst.cpp b/src/modules/terrain_analysis/ta_hydrology/IsochronesConst.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_hydrology/IsochronesConst.h b/src/modules/terrain_analysis/ta_hydrology/IsochronesConst.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_hydrology/IsochronesVar.cpp b/src/modules/terrain_analysis/ta_hydrology/IsochronesVar.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_hydrology/IsochronesVar.h b/src/modules/terrain_analysis/ta_hydrology/IsochronesVar.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_hydrology/LakeFlood.cpp b/src/modules/terrain_analysis/ta_hydrology/LakeFlood.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_hydrology/LakeFlood.h b/src/modules/terrain_analysis/ta_hydrology/LakeFlood.h
old mode 100644
new mode 100755
index b0273b9..ae8adcc
--- a/src/modules/terrain_analysis/ta_hydrology/LakeFlood.h
+++ b/src/modules/terrain_analysis/ta_hydrology/LakeFlood.h
@@ -106,7 +106,7 @@ public:
 };
 
 //---------------------------------------------------------
-class ta_hydrology_EXPORT CLakeFlood : public CSG_Module_Grid
+class CLakeFlood : public CSG_Module_Grid
 {
 public:
 	CLakeFlood(void);
@@ -133,7 +133,7 @@ private:
 };
 
 //---------------------------------------------------------
-class ta_hydrology_EXPORT CLakeFloodInteractive : public CSG_Module_Grid_Interactive
+class CLakeFloodInteractive : public CSG_Module_Grid_Interactive
 {
 public:
 	CLakeFloodInteractive(void);
diff --git a/src/modules/terrain_analysis/ta_hydrology/LakeFloodInteractive.cpp b/src/modules/terrain_analysis/ta_hydrology/LakeFloodInteractive.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_hydrology/MLB_Interface.cpp b/src/modules/terrain_analysis/ta_hydrology/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_hydrology/MLB_Interface.h b/src/modules/terrain_analysis/ta_hydrology/MLB_Interface.h
old mode 100644
new mode 100755
index 2504639..9e3cac8
--- a/src/modules/terrain_analysis/ta_hydrology/MLB_Interface.h
+++ b/src/modules/terrain_analysis/ta_hydrology/MLB_Interface.h
@@ -67,13 +67,6 @@
 //---------------------------------------------------------
 #include <saga_api/saga_api.h>
 
-//---------------------------------------------------------
-#ifdef ta_hydrology_EXPORTS
-	#define	ta_hydrology_EXPORT	_SAGA_DLL_EXPORT
-#else
-	#define	ta_hydrology_EXPORT	_SAGA_DLL_IMPORT
-#endif
-
 
 ///////////////////////////////////////////////////////////
 //														 //
diff --git a/src/modules/terrain_analysis/ta_hydrology/Makefile.am b/src/modules/terrain_analysis/ta_hydrology/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_hydrology/SAGA_Wetness_Index.cpp b/src/modules/terrain_analysis/ta_hydrology/SAGA_Wetness_Index.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_hydrology/SAGA_Wetness_Index.h b/src/modules/terrain_analysis/ta_hydrology/SAGA_Wetness_Index.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_hydrology/Sinuosity.cpp b/src/modules/terrain_analysis/ta_hydrology/Sinuosity.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_hydrology/Sinuosity.h b/src/modules/terrain_analysis/ta_hydrology/Sinuosity.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_hydrology/SlopeLength.cpp b/src/modules/terrain_analysis/ta_hydrology/SlopeLength.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_hydrology/SlopeLength.h b/src/modules/terrain_analysis/ta_hydrology/SlopeLength.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_hydrology/TopographicIndices.cpp b/src/modules/terrain_analysis/ta_hydrology/TopographicIndices.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_hydrology/TopographicIndices.h b/src/modules/terrain_analysis/ta_hydrology/TopographicIndices.h
old mode 100644
new mode 100755
index a5de978..a79fe98
--- a/src/modules/terrain_analysis/ta_hydrology/TopographicIndices.h
+++ b/src/modules/terrain_analysis/ta_hydrology/TopographicIndices.h
@@ -82,7 +82,7 @@
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
-class ta_hydrology_EXPORT CTWI : public CSG_Module_Grid
+class CTWI : public CSG_Module_Grid
 {
 public:
 	CTWI(void);
@@ -105,7 +105,7 @@ private:
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
-class ta_hydrology_EXPORT CStream_Power : public CSG_Module_Grid
+class CStream_Power : public CSG_Module_Grid
 {
 public:
 	CStream_Power(void);
@@ -128,7 +128,7 @@ private:
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
-class ta_hydrology_EXPORT CLS_Factor : public CSG_Module_Grid
+class CLS_Factor : public CSG_Module_Grid
 {
 public:
 	CLS_Factor(void);
@@ -158,7 +158,7 @@ private:
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
-class ta_hydrology_EXPORT CTCI_Low : public CSG_Module_Grid
+class CTCI_Low : public CSG_Module_Grid
 {
 public:
 	CTCI_Low(void);
diff --git a/src/modules/terrain_analysis/ta_hydrology/flow_by_slope.cpp b/src/modules/terrain_analysis/ta_hydrology/flow_by_slope.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_hydrology/flow_by_slope.h b/src/modules/terrain_analysis/ta_hydrology/flow_by_slope.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_hydrology/flow_massflux.cpp b/src/modules/terrain_analysis/ta_hydrology/flow_massflux.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_hydrology/flow_massflux.h b/src/modules/terrain_analysis/ta_hydrology/flow_massflux.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_hydrology/flow_width.cpp b/src/modules/terrain_analysis/ta_hydrology/flow_width.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_hydrology/flow_width.h b/src/modules/terrain_analysis/ta_hydrology/flow_width.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_hydrology/melton_ruggedness.cpp b/src/modules/terrain_analysis/ta_hydrology/melton_ruggedness.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_hydrology/melton_ruggedness.h b/src/modules/terrain_analysis/ta_hydrology/melton_ruggedness.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_lighting/HillShade.cpp b/src/modules/terrain_analysis/ta_lighting/HillShade.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_lighting/HillShade.h b/src/modules/terrain_analysis/ta_lighting/HillShade.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_lighting/MLB_Interface.cpp b/src/modules/terrain_analysis/ta_lighting/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_lighting/MLB_Interface.h b/src/modules/terrain_analysis/ta_lighting/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_lighting/Makefile.am b/src/modules/terrain_analysis/ta_lighting/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_lighting/SolarRadiation.cpp b/src/modules/terrain_analysis/ta_lighting/SolarRadiation.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_lighting/SolarRadiation.h b/src/modules/terrain_analysis/ta_lighting/SolarRadiation.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_lighting/Visibility_BASE.cpp b/src/modules/terrain_analysis/ta_lighting/Visibility_BASE.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_lighting/Visibility_BASE.h b/src/modules/terrain_analysis/ta_lighting/Visibility_BASE.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_lighting/Visibility_Point.cpp b/src/modules/terrain_analysis/ta_lighting/Visibility_Point.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_lighting/Visibility_Point.h b/src/modules/terrain_analysis/ta_lighting/Visibility_Point.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_lighting/Visibility_Points.cpp b/src/modules/terrain_analysis/ta_lighting/Visibility_Points.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_lighting/Visibility_Points.h b/src/modules/terrain_analysis/ta_lighting/Visibility_Points.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_lighting/topographic_correction.cpp b/src/modules/terrain_analysis/ta_lighting/topographic_correction.cpp
old mode 100644
new mode 100755
index 6d7a062..f753780
--- a/src/modules/terrain_analysis/ta_lighting/topographic_correction.cpp
+++ b/src/modules/terrain_analysis/ta_lighting/topographic_correction.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: topographic_correction.cpp 2208 2014-08-27 16:00:51Z oconrad $
+ * Version $Id: topographic_correction.cpp 2752 2016-01-15 15:26:55Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -369,7 +369,7 @@ bool CTopographic_Correction::Get_Illumination(void)
 	if( !pDEM->Get_System().is_Equal(*Get_System()) )
 	{
 		DEM.Create(*Get_System());
-		DEM.Assign(pDEM, pDEM->Get_Cellsize() > Get_Cellsize() ? GRID_INTERPOLATION_BSpline : GRID_INTERPOLATION_Mean_Cells);
+		DEM.Assign(pDEM, pDEM->Get_Cellsize() > Get_Cellsize() ? GRID_RESAMPLING_BSpline : GRID_RESAMPLING_Mean_Cells);
 		pDEM	= &DEM;
 	}
 
diff --git a/src/modules/terrain_analysis/ta_lighting/topographic_correction.h b/src/modules/terrain_analysis/ta_lighting/topographic_correction.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_lighting/topographic_openness.cpp b/src/modules/terrain_analysis/ta_lighting/topographic_openness.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_lighting/topographic_openness.h b/src/modules/terrain_analysis/ta_lighting/topographic_openness.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_lighting/view_shed.cpp b/src/modules/terrain_analysis/ta_lighting/view_shed.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_lighting/view_shed.h b/src/modules/terrain_analysis/ta_lighting/view_shed.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_morphometry/Convergence.cpp b/src/modules/terrain_analysis/ta_morphometry/Convergence.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_morphometry/Convergence.h b/src/modules/terrain_analysis/ta_morphometry/Convergence.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_morphometry/Convergence_Radius.cpp b/src/modules/terrain_analysis/ta_morphometry/Convergence_Radius.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_morphometry/Convergence_Radius.h b/src/modules/terrain_analysis/ta_morphometry/Convergence_Radius.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_morphometry/Curvature_Classification.cpp b/src/modules/terrain_analysis/ta_morphometry/Curvature_Classification.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_morphometry/Curvature_Classification.h b/src/modules/terrain_analysis/ta_morphometry/Curvature_Classification.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_morphometry/Curvature_UpDownSlope.cpp b/src/modules/terrain_analysis/ta_morphometry/Curvature_UpDownSlope.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_morphometry/Curvature_UpDownSlope.h b/src/modules/terrain_analysis/ta_morphometry/Curvature_UpDownSlope.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_morphometry/Hypsometry.cpp b/src/modules/terrain_analysis/ta_morphometry/Hypsometry.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_morphometry/Hypsometry.h b/src/modules/terrain_analysis/ta_morphometry/Hypsometry.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_morphometry/MLB_Interface.cpp b/src/modules/terrain_analysis/ta_morphometry/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_morphometry/MLB_Interface.h b/src/modules/terrain_analysis/ta_morphometry/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_morphometry/Makefile.am b/src/modules/terrain_analysis/ta_morphometry/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_morphometry/Morphometry.cpp b/src/modules/terrain_analysis/ta_morphometry/Morphometry.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_morphometry/Morphometry.h b/src/modules/terrain_analysis/ta_morphometry/Morphometry.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_morphometry/ProtectionIndex.cpp b/src/modules/terrain_analysis/ta_morphometry/ProtectionIndex.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_morphometry/ProtectionIndex.h b/src/modules/terrain_analysis/ta_morphometry/ProtectionIndex.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_morphometry/RealArea.cpp b/src/modules/terrain_analysis/ta_morphometry/RealArea.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_morphometry/RealArea.h b/src/modules/terrain_analysis/ta_morphometry/RealArea.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_morphometry/SurfaceSpecificPoints.cpp b/src/modules/terrain_analysis/ta_morphometry/SurfaceSpecificPoints.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_morphometry/SurfaceSpecificPoints.h b/src/modules/terrain_analysis/ta_morphometry/SurfaceSpecificPoints.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_morphometry/air_flow_height.cpp b/src/modules/terrain_analysis/ta_morphometry/air_flow_height.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_morphometry/air_flow_height.h b/src/modules/terrain_analysis/ta_morphometry/air_flow_height.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_morphometry/anisotropic_heating.cpp b/src/modules/terrain_analysis/ta_morphometry/anisotropic_heating.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_morphometry/anisotropic_heating.h b/src/modules/terrain_analysis/ta_morphometry/anisotropic_heating.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_morphometry/distance_gradient.cpp b/src/modules/terrain_analysis/ta_morphometry/distance_gradient.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_morphometry/distance_gradient.h b/src/modules/terrain_analysis/ta_morphometry/distance_gradient.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_morphometry/fuzzy_landform_elements.cpp b/src/modules/terrain_analysis/ta_morphometry/fuzzy_landform_elements.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_morphometry/fuzzy_landform_elements.h b/src/modules/terrain_analysis/ta_morphometry/fuzzy_landform_elements.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_morphometry/land_surface_temperature.cpp b/src/modules/terrain_analysis/ta_morphometry/land_surface_temperature.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_morphometry/land_surface_temperature.h b/src/modules/terrain_analysis/ta_morphometry/land_surface_temperature.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_morphometry/mass_balance_index.cpp b/src/modules/terrain_analysis/ta_morphometry/mass_balance_index.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_morphometry/mass_balance_index.h b/src/modules/terrain_analysis/ta_morphometry/mass_balance_index.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_morphometry/mrvbf.cpp b/src/modules/terrain_analysis/ta_morphometry/mrvbf.cpp
old mode 100644
new mode 100755
index 3ba4da8..9f65d38
--- a/src/modules/terrain_analysis/ta_morphometry/mrvbf.cpp
+++ b/src/modules/terrain_analysis/ta_morphometry/mrvbf.cpp
@@ -352,7 +352,7 @@ bool CMRVBF::Get_Values(CSG_Grid *pDEM, CSG_Grid *pSlopes, CSG_Grid *pPercentile
 		ny	= 2 + (int)(pDEM->Get_YRange() / Resolution);
 
 		pDEM->Create(SG_DATATYPE_Float, nx, ny, Resolution, pDEM->Get_XMin(), pDEM->Get_YMin());
-		pDEM->Assign(&Smoothed, GRID_INTERPOLATION_NearestNeighbour);
+		pDEM->Assign(&Smoothed, GRID_RESAMPLING_NearestNeighbour);
 
 		Get_Percentiles(pDEM, pPercentiles, 6);
 
@@ -481,9 +481,6 @@ bool CMRVBF::Get_Slopes(CSG_Grid *pDEM, CSG_Grid *pSlopes)
 //---------------------------------------------------------
 bool CMRVBF::Get_Flatness(CSG_Grid *pSlopes, CSG_Grid *pPercentiles, CSG_Grid *pCF, CSG_Grid *pVF, CSG_Grid *pRF, double T_Slope)
 {
-//	const int	Interpolation	= GRID_INTERPOLATION_Bilinear;
-	const int	Interpolation	= GRID_INTERPOLATION_BSpline;
-
 	if( pSlopes && pSlopes->is_Valid() && pPercentiles && pPercentiles->is_Valid() )
 	{
 		int		x, y;
@@ -493,8 +490,8 @@ bool CMRVBF::Get_Flatness(CSG_Grid *pSlopes, CSG_Grid *pPercentiles, CSG_Grid *p
 		{
 			for(x=0, xp=Get_XMin(); x<Get_NX(); x++, xp+=Get_Cellsize())
 			{
-				if( pSlopes		->Get_Value(xp, yp, Slope     , Interpolation)
-				&&	pPercentiles->Get_Value(xp, yp, Percentile, Interpolation) )
+				if( pSlopes		->Get_Value(xp, yp, Slope     )
+				&&	pPercentiles->Get_Value(xp, yp, Percentile) )
 				{
 					cf	= pCF->asDouble(x, y) * Get_Transformation(Slope, T_Slope, m_P_Slope);
 					vf	= cf * Get_Transformation(      Percentile, m_T_Pctl_V, m_P_Pctl);
diff --git a/src/modules/terrain_analysis/ta_morphometry/mrvbf.h b/src/modules/terrain_analysis/ta_morphometry/mrvbf.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_morphometry/param_scale.cpp b/src/modules/terrain_analysis/ta_morphometry/param_scale.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_morphometry/param_scale.h b/src/modules/terrain_analysis/ta_morphometry/param_scale.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_morphometry/relative_heights.cpp b/src/modules/terrain_analysis/ta_morphometry/relative_heights.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_morphometry/relative_heights.h b/src/modules/terrain_analysis/ta_morphometry/relative_heights.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_morphometry/ruggedness.cpp b/src/modules/terrain_analysis/ta_morphometry/ruggedness.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_morphometry/ruggedness.h b/src/modules/terrain_analysis/ta_morphometry/ruggedness.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_morphometry/tc_iwahashi_pike.cpp b/src/modules/terrain_analysis/ta_morphometry/tc_iwahashi_pike.cpp
old mode 100644
new mode 100755
index c034947..fdd227d
--- a/src/modules/terrain_analysis/ta_morphometry/tc_iwahashi_pike.cpp
+++ b/src/modules/terrain_analysis/ta_morphometry/tc_iwahashi_pike.cpp
@@ -178,7 +178,7 @@ bool CTC_Parameter_Base::Get_Parameter(CSG_Grid *pValues, CSG_Grid *pParameter)
 
 		CSG_Grid	Values(CSG_Grid_System(Cellsize, Get_XMin(), Get_YMin(), Get_XMax(), Get_YMax()), SG_DATATYPE_Float);
 
-		Values.Assign(pValues, GRID_INTERPOLATION_Mean_Cells);
+		Values.Assign(pValues, GRID_RESAMPLING_Mean_Cells);
 
 		for(int y=0; y<Get_NY() && Set_Progress(y); y++)
 		{
@@ -189,7 +189,7 @@ bool CTC_Parameter_Base::Get_Parameter(CSG_Grid *pValues, CSG_Grid *pParameter)
 			{
 				double	z, px	= Get_XMin() + x * Get_Cellsize();
 
-				if( pValues->is_NoData(x, y) || !Values.Get_Value(px, py, z, GRID_INTERPOLATION_BSpline) )
+				if( pValues->is_NoData(x, y) || !Values.Get_Value(px, py, z, GRID_RESAMPLING_BSpline) )
 				{
 					pParameter->Set_NoData(x, y);
 				}
diff --git a/src/modules/terrain_analysis/ta_morphometry/tc_iwahashi_pike.h b/src/modules/terrain_analysis/ta_morphometry/tc_iwahashi_pike.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_morphometry/top_hat.cpp b/src/modules/terrain_analysis/ta_morphometry/top_hat.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_morphometry/top_hat.h b/src/modules/terrain_analysis/ta_morphometry/top_hat.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_morphometry/tpi.cpp b/src/modules/terrain_analysis/ta_morphometry/tpi.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_morphometry/tpi.h b/src/modules/terrain_analysis/ta_morphometry/tpi.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_morphometry/wind_effect.cpp b/src/modules/terrain_analysis/ta_morphometry/wind_effect.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_morphometry/wind_effect.h b/src/modules/terrain_analysis/ta_morphometry/wind_effect.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_preprocessor/FillSinks.cpp b/src/modules/terrain_analysis/ta_preprocessor/FillSinks.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_preprocessor/FillSinks.h b/src/modules/terrain_analysis/ta_preprocessor/FillSinks.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_preprocessor/FillSinks_WL.cpp b/src/modules/terrain_analysis/ta_preprocessor/FillSinks_WL.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_preprocessor/FillSinks_WL.h b/src/modules/terrain_analysis/ta_preprocessor/FillSinks_WL.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_preprocessor/FillSinks_WL_XXL.cpp b/src/modules/terrain_analysis/ta_preprocessor/FillSinks_WL_XXL.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_preprocessor/Flat_Detection.cpp b/src/modules/terrain_analysis/ta_preprocessor/Flat_Detection.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_preprocessor/Flat_Detection.h b/src/modules/terrain_analysis/ta_preprocessor/Flat_Detection.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_preprocessor/MLB_Interface.cpp b/src/modules/terrain_analysis/ta_preprocessor/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_preprocessor/MLB_Interface.h b/src/modules/terrain_analysis/ta_preprocessor/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_preprocessor/Makefile.am b/src/modules/terrain_analysis/ta_preprocessor/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_preprocessor/Pit_Eliminator.cpp b/src/modules/terrain_analysis/ta_preprocessor/Pit_Eliminator.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_preprocessor/Pit_Eliminator.h b/src/modules/terrain_analysis/ta_preprocessor/Pit_Eliminator.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_preprocessor/Pit_Router.cpp b/src/modules/terrain_analysis/ta_preprocessor/Pit_Router.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_preprocessor/Pit_Router.h b/src/modules/terrain_analysis/ta_preprocessor/Pit_Router.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_preprocessor/burn_in_streams.cpp b/src/modules/terrain_analysis/ta_preprocessor/burn_in_streams.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_preprocessor/burn_in_streams.h b/src/modules/terrain_analysis/ta_preprocessor/burn_in_streams.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_profiles/Grid_Cross_Profiles.cpp b/src/modules/terrain_analysis/ta_profiles/Grid_Cross_Profiles.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_profiles/Grid_Cross_Profiles.h b/src/modules/terrain_analysis/ta_profiles/Grid_Cross_Profiles.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_profiles/Grid_Flow_Profile.cpp b/src/modules/terrain_analysis/ta_profiles/Grid_Flow_Profile.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_profiles/Grid_Flow_Profile.h b/src/modules/terrain_analysis/ta_profiles/Grid_Flow_Profile.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_profiles/Grid_Profile.cpp b/src/modules/terrain_analysis/ta_profiles/Grid_Profile.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_profiles/Grid_Profile.h b/src/modules/terrain_analysis/ta_profiles/Grid_Profile.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_profiles/Grid_ProfileFromPoints.cpp b/src/modules/terrain_analysis/ta_profiles/Grid_ProfileFromPoints.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_profiles/Grid_ProfileFromPoints.h b/src/modules/terrain_analysis/ta_profiles/Grid_ProfileFromPoints.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_profiles/Grid_Profile_From_Lines.cpp b/src/modules/terrain_analysis/ta_profiles/Grid_Profile_From_Lines.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_profiles/Grid_Profile_From_Lines.h b/src/modules/terrain_analysis/ta_profiles/Grid_Profile_From_Lines.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_profiles/Grid_Swath_Profile.cpp b/src/modules/terrain_analysis/ta_profiles/Grid_Swath_Profile.cpp
old mode 100644
new mode 100755
index 118f458..0c58f8d
--- a/src/modules/terrain_analysis/ta_profiles/Grid_Swath_Profile.cpp
+++ b/src/modules/terrain_analysis/ta_profiles/Grid_Swath_Profile.cpp
@@ -402,7 +402,7 @@ bool CGrid_Swath_Profile::Add_Swath(CSG_Shape *pPoint, int iEntry, CSG_Grid *pGr
 {
 	double	Value;
 
-	if( pGrid->Get_Value(pPoint->Get_Point(0), Value, GRID_INTERPOLATION_BSpline, false, true) )
+	if( pGrid->Get_Value(pPoint->Get_Point(0), Value, GRID_RESAMPLING_BSpline, false, true) )
 	{
 		pPoint->Set_Value(iEntry, Value);
 	}
@@ -432,7 +432,7 @@ bool CGrid_Swath_Profile::Add_Swath(CSG_Shape *pPoint, int iEntry, CSG_Grid *pGr
 
 	for( ; iRun<=nRun; iRun+=dRun, Left+=Step)
 	{
-		if( pGrid->Get_Value(Left, Value, GRID_INTERPOLATION_BSpline, false, true) )
+		if( pGrid->Get_Value(Left, Value, GRID_RESAMPLING_BSpline, false, true) )
 		{
 			Statistics	+= Value;
 		}
diff --git a/src/modules/terrain_analysis/ta_profiles/Grid_Swath_Profile.h b/src/modules/terrain_analysis/ta_profiles/Grid_Swath_Profile.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_profiles/MLB_Interface.cpp b/src/modules/terrain_analysis/ta_profiles/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_profiles/MLB_Interface.h b/src/modules/terrain_analysis/ta_profiles/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_profiles/Makefile.am b/src/modules/terrain_analysis/ta_profiles/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_slope_stability/ANGMAP_01.cpp b/src/modules/terrain_analysis/ta_slope_stability/ANGMAP_01.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_slope_stability/ANGMAP_01.h b/src/modules/terrain_analysis/ta_slope_stability/ANGMAP_01.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_slope_stability/MLB_Interface.cpp b/src/modules/terrain_analysis/ta_slope_stability/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_slope_stability/MLB_Interface.h b/src/modules/terrain_analysis/ta_slope_stability/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_slope_stability/Makefile.am b/src/modules/terrain_analysis/ta_slope_stability/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_slope_stability/SHALSTAB_01.cpp b/src/modules/terrain_analysis/ta_slope_stability/SHALSTAB_01.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_slope_stability/SHALSTAB_01.h b/src/modules/terrain_analysis/ta_slope_stability/SHALSTAB_01.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_slope_stability/Safetyfactor_01.cpp b/src/modules/terrain_analysis/ta_slope_stability/Safetyfactor_01.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_slope_stability/Safetyfactor_01.h b/src/modules/terrain_analysis/ta_slope_stability/Safetyfactor_01.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_slope_stability/TOBIA_01.cpp b/src/modules/terrain_analysis/ta_slope_stability/TOBIA_01.cpp
old mode 100644
new mode 100755
index a8f3bc1..eaa6f6b
--- a/src/modules/terrain_analysis/ta_slope_stability/TOBIA_01.cpp
+++ b/src/modules/terrain_analysis/ta_slope_stability/TOBIA_01.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: TOBIA_01.cpp 1935 2014-01-10 19:29:57Z reklov_w $
+ * Version $Id: TOBIA_01.cpp 2807 2016-02-21 19:32:40Z johanvdw $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -122,7 +122,7 @@ CTOBIA::CTOBIA(void)
 		);
 
 	Parameters.Add_Grid(
-		NULL, "E", "TOBIA classes", "Resulting TOBIA classses (1-7) grid", PARAMETER_OUTPUT
+		NULL, "E", "TOBIA classes", "Resulting TOBIA classes (1-7) grid", PARAMETER_OUTPUT
 		);
 
 	Parameters.Add_Grid(
diff --git a/src/modules/terrain_analysis/ta_slope_stability/TOBIA_01.h b/src/modules/terrain_analysis/ta_slope_stability/TOBIA_01.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_slope_stability/WEDGEFAIL_01.cpp b/src/modules/terrain_analysis/ta_slope_stability/WEDGEFAIL_01.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_slope_stability/WEDGEFAIL_01.h b/src/modules/terrain_analysis/ta_slope_stability/WEDGEFAIL_01.h
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_slope_stability/WETNESS_01.cpp b/src/modules/terrain_analysis/ta_slope_stability/WETNESS_01.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/terrain_analysis/ta_slope_stability/WETNESS_01.h b/src/modules/terrain_analysis/ta_slope_stability/WETNESS_01.h
old mode 100644
new mode 100755
diff --git a/src/modules/tin/Makefile.am b/src/modules/tin/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/tin/tin_tools/MLB_Interface.cpp b/src/modules/tin/tin_tools/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/tin/tin_tools/MLB_Interface.h b/src/modules/tin/tin_tools/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/tin/tin_tools/Makefile.am b/src/modules/tin/tin_tools/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/tin/tin_tools/TIN_Flow_Parallel.cpp b/src/modules/tin/tin_tools/TIN_Flow_Parallel.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/tin/tin_tools/TIN_Flow_Parallel.h b/src/modules/tin/tin_tools/TIN_Flow_Parallel.h
old mode 100644
new mode 100755
diff --git a/src/modules/tin/tin_tools/TIN_Flow_Trace.cpp b/src/modules/tin/tin_tools/TIN_Flow_Trace.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/tin/tin_tools/TIN_Flow_Trace.h b/src/modules/tin/tin_tools/TIN_Flow_Trace.h
old mode 100644
new mode 100755
diff --git a/src/modules/tin/tin_tools/TIN_From_Grid.cpp b/src/modules/tin/tin_tools/TIN_From_Grid.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/tin/tin_tools/TIN_From_Grid.h b/src/modules/tin/tin_tools/TIN_From_Grid.h
old mode 100644
new mode 100755
diff --git a/src/modules/tin/tin_tools/TIN_From_Grid_Specific_Points.cpp b/src/modules/tin/tin_tools/TIN_From_Grid_Specific_Points.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/tin/tin_tools/TIN_From_Grid_Specific_Points.h b/src/modules/tin/tin_tools/TIN_From_Grid_Specific_Points.h
old mode 100644
new mode 100755
diff --git a/src/modules/tin/tin_tools/TIN_From_Shapes.cpp b/src/modules/tin/tin_tools/TIN_From_Shapes.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/tin/tin_tools/TIN_From_Shapes.h b/src/modules/tin/tin_tools/TIN_From_Shapes.h
old mode 100644
new mode 100755
diff --git a/src/modules/tin/tin_tools/TIN_Gradient.cpp b/src/modules/tin/tin_tools/TIN_Gradient.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/tin/tin_tools/TIN_Gradient.h b/src/modules/tin/tin_tools/TIN_Gradient.h
old mode 100644
new mode 100755
diff --git a/src/modules/tin/tin_tools/TIN_To_Shapes.cpp b/src/modules/tin/tin_tools/TIN_To_Shapes.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/tin/tin_tools/TIN_To_Shapes.h b/src/modules/tin/tin_tools/TIN_To_Shapes.h
old mode 100644
new mode 100755
diff --git a/src/modules/tin/tin_viewer/MLB_Interface.cpp b/src/modules/tin/tin_viewer/MLB_Interface.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/tin/tin_viewer/MLB_Interface.h b/src/modules/tin/tin_viewer/MLB_Interface.h
old mode 100644
new mode 100755
diff --git a/src/modules/tin/tin_viewer/Makefile.am b/src/modules/tin/tin_viewer/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/modules/tin/tin_viewer/tin_view_control.cpp b/src/modules/tin/tin_viewer/tin_view_control.cpp
old mode 100644
new mode 100755
index f00058a..a3028ee
--- a/src/modules/tin/tin_viewer/tin_view_control.cpp
+++ b/src/modules/tin/tin_viewer/tin_view_control.cpp
@@ -200,14 +200,13 @@ CTIN_View_Control::CTIN_View_Control(wxWindow *pParent, CSG_TIN *pTIN, int Field
 	if( m_pRGB )
 	{
 		m_pSettings->Add_Choice(
-			pNode	, "RGB_INTERPOL", _TL("Map Draping Interpolation"),
+			pNode	, "RGB_INTERPOL"	, _TL("Map Draping Interpolation"),
 			_TL(""),
-			CSG_String::Format(SG_T("%s|%s|%s|%s|%s|"),
-				_TL("[VAL] None"),
-				_TL("[VAL] Bilinear"),
-				_TL("[VAL] Inverse Distance"),
-				_TL("[VAL] Bicubic Spline"),
-				_TL("[VAL] B-Spline")
+			CSG_String::Format("%s|%s|%s|%s|",
+				_TL("Nearest Neighbour"),
+				_TL("Bilinear Interpolation"),
+				_TL("Bicubic Spline Interpolation"),
+				_TL("B-Spline Interpolation")
 			), 0
 		);
 	}
@@ -523,7 +522,13 @@ bool CTIN_View_Control::_Draw_Image(void)
 
 	if( m_bRGB )
 	{
-		m_Interpolation	= m_Settings("RGB_INTERPOL")->asInt();
+		switch( m_Settings("RGB_INTERPOL")->asInt() )
+		{
+		default:	m_Resampling	= GRID_RESAMPLING_NearestNeighbour;	break;
+		case  1:	m_Resampling	= GRID_RESAMPLING_Bilinear;			break;
+		case  2:	m_Resampling	= GRID_RESAMPLING_BicubicSpline;	break;
+		case  3:	m_Resampling	= GRID_RESAMPLING_BSpline;			break;
+		}
 	}
 
 	//-------------------------------------------------
@@ -925,7 +930,7 @@ inline void CTIN_View_Control::_Draw_Triangle_Line(int y, double xa, double xb,
 
 			if( m_bRGB )
 			{
-				if( m_pRGB->Get_Value(c, d, c, m_Interpolation, false, true) )
+				if( m_pRGB->Get_Value(c, d, c, m_Resampling, false, true) )
 				{
 					_Draw_Pixel(x, y, z, _Dim_Color(c, dim));
 				}
diff --git a/src/modules/tin/tin_viewer/tin_view_control.h b/src/modules/tin/tin_viewer/tin_view_control.h
old mode 100644
new mode 100755
index 3dd0695..10e9f15
--- a/src/modules/tin/tin_viewer/tin_view_control.h
+++ b/src/modules/tin/tin_viewer/tin_view_control.h
@@ -134,12 +134,14 @@ public:
 
 private:
 
-	int							m_Color_Mode, m_Size_Def, m_cWire, m_Interpolation;
-
+	int							m_Color_Mode, m_Size_Def, m_cWire;
+	
 	double						m_xDown, m_yDown, m_cMin, m_cScale, m_Size_Scale;
 
 	double						r_sin_x, r_sin_y, r_sin_z, r_cos_x, r_cos_y, r_cos_z, r_xc, r_yc, r_zc, r_Scale, r_Scale_z;
 
+	TSG_Grid_Resampling			m_Resampling;
+
 	CSG_Rect					m_Extent;
 
 	CSG_Matrix					m_Image_zMax;
diff --git a/src/modules/tin/tin_viewer/tin_view_dialog.cpp b/src/modules/tin/tin_viewer/tin_view_dialog.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/tin/tin_viewer/tin_view_dialog.h b/src/modules/tin/tin_viewer/tin_view_dialog.h
old mode 100644
new mode 100755
diff --git a/src/modules/tin/tin_viewer/tin_view_module.cpp b/src/modules/tin/tin_viewer/tin_view_module.cpp
old mode 100644
new mode 100755
diff --git a/src/modules/tin/tin_viewer/tin_view_module.h b/src/modules/tin/tin_viewer/tin_view_module.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/Makefile.am b/src/saga_core/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_api/Makefile.am b/src/saga_core/saga_api/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_api/api_callback.cpp b/src/saga_core/saga_api/api_callback.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_api/api_colors.cpp b/src/saga_core/saga_api/api_colors.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_api/api_core.cpp b/src/saga_core/saga_api/api_core.cpp
old mode 100644
new mode 100755
index fdc4840..4d94e1a
--- a/src/saga_core/saga_api/api_core.cpp
+++ b/src/saga_core/saga_api/api_core.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: api_core.cpp 1921 2014-01-09 10:24:11Z oconrad $
+ * Version $Id: api_core.cpp 2801 2016-02-19 16:30:30Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -72,35 +72,45 @@
 //														 //
 ///////////////////////////////////////////////////////////
 
+//---------------------------------------------------------
 #ifdef _OPENMP
+
 #include <omp.h>
 
 //---------------------------------------------------------
-int		g_SG_Max_Num_Threads_Omp = omp_get_num_procs();
+int		g_SG_OMP_Max_Num_Threads	= omp_get_num_procs();
 
 //---------------------------------------------------------
-void	SG_Set_Max_Num_Threads_Omp		(int iCores)
+void	SG_OMP_Set_Max_Num_Threads		(int iCores)
 {
 	if( iCores > omp_get_num_procs() )
-		iCores = omp_get_num_procs();
+	{
+		iCores	= omp_get_num_procs();
+	}
 
-	g_SG_Max_Num_Threads_Omp	= iCores;
-	omp_set_num_threads(g_SG_Max_Num_Threads_Omp);
+	omp_set_num_threads(g_SG_OMP_Max_Num_Threads = iCores);
 }
 
 //---------------------------------------------------------
-int		SG_Get_Max_Num_Threads_Omp		(void)
+int		SG_OMP_Get_Max_Num_Threads		(void)
 {
-	return( g_SG_Max_Num_Threads_Omp );
+	return( g_SG_OMP_Max_Num_Threads );
 }
 
 //---------------------------------------------------------
-int		SG_Get_Max_Num_Procs_Omp		(void)
+int		SG_OMP_Get_Max_Num_Procs		(void)
 {
 	return( omp_get_num_procs() );
 }
+
+//---------------------------------------------------------
+#else
+void	SG_OMP_Set_Max_Num_Threads	(int iCores)	{}
+int		SG_OMP_Get_Max_Num_Threads	(void)	{	return( 1 );	}
+int		SG_OMP_Get_Max_Num_Procs	(void)	{	return( 1 );	}
 #endif
 
+
 ///////////////////////////////////////////////////////////
 //														 //
 //														 //
diff --git a/src/saga_core/saga_api/api_core.h b/src/saga_core/saga_api/api_core.h
old mode 100644
new mode 100755
index 661846c..956a923
--- a/src/saga_core/saga_api/api_core.h
+++ b/src/saga_core/saga_api/api_core.h
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: api_core.h 2710 2015-12-02 12:33:39Z oconrad $
+ * Version $Id: api_core.h 2801 2016-02-19 16:30:30Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -170,11 +170,9 @@
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
-#ifdef _OPENMP
-SAGA_API_DLL_EXPORT int		SG_Get_Max_Num_Threads_Omp		(void);
-SAGA_API_DLL_EXPORT void	SG_Set_Max_Num_Threads_Omp		(int iCores);
-SAGA_API_DLL_EXPORT int		SG_Get_Max_Num_Procs_Omp		(void);
-#endif
+SAGA_API_DLL_EXPORT void			SG_OMP_Set_Max_Num_Threads	(int iCores);
+SAGA_API_DLL_EXPORT int				SG_OMP_Get_Max_Num_Threads	(void);
+SAGA_API_DLL_EXPORT int				SG_OMP_Get_Max_Num_Procs	(void);
 
 
 ///////////////////////////////////////////////////////////
@@ -504,7 +502,7 @@ public:
 	bool				Set_Array		(size_t nValues, bool bShrink = true);
 	bool				Set_Array		(size_t nValues, void **pArray, bool bShrink = true);
 
-	bool				Inc_Array		(void);
+	bool				Inc_Array		(size_t nValues = 1);
 	bool				Inc_Array		(void **pArray);
 
 	bool				Dec_Array		(bool bShrink = true);
@@ -520,6 +518,55 @@ private:
 	void				*m_Values;
 
 };
+
+
+///////////////////////////////////////////////////////////
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+class SAGA_API_DLL_EXPORT CSG_Array_Int
+{
+public:
+	CSG_Array_Int						(const CSG_Array_Int &Array)			{	Create(Array);	}
+	int *				Create			(const CSG_Array_Int &Array);
+
+	CSG_Array_Int						(size_t nValues = 0, TSG_Array_Growth Growth = SG_ARRAY_GROWTH_0)	{	Create(nValues, Growth);	}
+	int *				Create			(size_t nValues = 0, TSG_Array_Growth Growth = SG_ARRAY_GROWTH_0);
+
+	void				Destroy			(void)									{	m_Array.Destroy();	}
+
+	bool				Set_Growth		(TSG_Array_Growth Growth)				{	return( m_Array.Set_Growth(Growth) );	}
+	int					Get_Growth		(void)	const							{	return( m_Array.Get_Growth()       );	}
+
+	size_t				Get_Size		(void)	const							{	return( m_Array.Get_Size() );	}
+
+	int *				Get_Array		(void)	const							{	return( (int *)m_Array.Get_Array()        );	}
+	int *				Get_Array		(size_t nValues)						{	return( (int *)m_Array.Get_Array(nValues) );	}
+
+	bool				Set_Array		(size_t nValues, bool bShrink = true)	{	return( m_Array.Set_Array(nValues, bShrink) );	}
+	bool				Inc_Array		(size_t nValues = 1)					{	return( m_Array.Inc_Array(nValues) );	}
+	bool				Dec_Array		(                bool bShrink = true)	{	return( m_Array.Dec_Array(bShrink) );	}
+
+	bool				Add				(int Value);
+	bool				Add				(const CSG_Array_Int &Array);
+
+	CSG_Array_Int &		operator =		(const CSG_Array_Int &Array)			{	Create(Array);	return( *this );	}
+
+	int &				operator []		(size_t Index)							{	return( *((int *)m_Array.Get_Entry(Index)) );	}
+	int					operator []		(size_t Index)	const					{	return( *((int *)m_Array.Get_Entry(Index)) );	}
+	int &				operator []		(int    Index)							{	return( *((int *)m_Array.Get_Entry(Index)) );	}
+	int					operator []		(int    Index)	const					{	return( *((int *)m_Array.Get_Entry(Index)) );	}
+
+	CSG_Array_Int &		operator +=		(int Value)								{	Add(Value);	return( *this );	}
+	CSG_Array_Int &		operator +=		(const CSG_Array_Int &Array)			{	Add(Array);	return( *this );	}
+
+
+private:
+
+	CSG_Array			m_Array;
+
+};
 
 
 ///////////////////////////////////////////////////////////
diff --git a/src/saga_core/saga_api/api_file.cpp b/src/saga_core/saga_api/api_file.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_api/api_memory.cpp b/src/saga_core/saga_api/api_memory.cpp
old mode 100644
new mode 100755
index b15d80f..0acad5e
--- a/src/saga_core/saga_api/api_memory.cpp
+++ b/src/saga_core/saga_api/api_memory.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: api_memory.cpp 2639 2015-10-07 10:59:17Z oconrad $
+ * Version $Id: api_memory.cpp 2745 2016-01-13 11:13:49Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -414,9 +414,9 @@ bool CSG_Array::Set_Array(size_t nValues, void **pArray, bool bShrink)
 }
 
 //---------------------------------------------------------
-bool CSG_Array::Inc_Array		(void)
+bool CSG_Array::Inc_Array		(size_t nValues)
 {
-	return( Set_Array(m_nValues + 1) );
+	return( Set_Array(m_nValues + nValues) );
 }
 
 bool CSG_Array::Inc_Array		(void **pArray)
@@ -441,6 +441,56 @@ bool CSG_Array::Dec_Array		(void **pArray, bool bShrink)
 //														 //
 //														 //
 ///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+int * CSG_Array_Int::Create(const CSG_Array_Int &Array)
+{
+	m_Array.Create(Array.m_Array);
+
+	return( (int *)m_Array.Get_Array() );
+}
+
+//---------------------------------------------------------
+int * CSG_Array_Int::Create(size_t nValues, TSG_Array_Growth Growth)
+{
+	m_Array.Create(sizeof(int), nValues, Growth);
+
+	return( (int *)m_Array.Get_Array() );
+}
+
+//---------------------------------------------------------
+bool CSG_Array_Int::Add(int Value)
+{
+	if( Inc_Array() )
+	{
+		Get_Array()[Get_Size() - 1]	= Value;
+
+		return( true );
+	}
+
+	return( false );
+}
+
+//---------------------------------------------------------
+bool CSG_Array_Int::Add(const CSG_Array_Int &Array)
+{
+	for(size_t i=0; i<Array.Get_Size(); i++)
+	{
+		if( Add(Array[i]) == false )
+		{
+			return( false );
+		}
+	}
+
+	return( true );
+}
+
+
+///////////////////////////////////////////////////////////
+//														 //
+//														 //
+//														 //
+///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
 CSG_Buffer::CSG_Buffer(void)
diff --git a/src/saga_core/saga_api/api_string.cpp b/src/saga_core/saga_api/api_string.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_api/api_translator.cpp b/src/saga_core/saga_api/api_translator.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_api/clipper.cpp b/src/saga_core/saga_api/clipper.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_api/clipper.hpp b/src/saga_core/saga_api/clipper.hpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_api/compatibility.h b/src/saga_core/saga_api/compatibility.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_api/data_manager.cpp b/src/saga_core/saga_api/data_manager.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_api/data_manager.h b/src/saga_core/saga_api/data_manager.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_api/dataobject.cpp b/src/saga_core/saga_api/dataobject.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_api/dataobject.h b/src/saga_core/saga_api/dataobject.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_api/datetime.cpp b/src/saga_core/saga_api/datetime.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_api/datetime.h b/src/saga_core/saga_api/datetime.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_api/geo_classes.cpp b/src/saga_core/saga_api/geo_classes.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_api/geo_functions.cpp b/src/saga_core/saga_api/geo_functions.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_api/geo_tools.h b/src/saga_core/saga_api/geo_tools.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_api/grid.cpp b/src/saga_core/saga_api/grid.cpp
old mode 100644
new mode 100755
index 1b89dc4..80c9e00
--- a/src/saga_core/saga_api/grid.cpp
+++ b/src/saga_core/saga_api/grid.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: grid.cpp 2641 2015-10-08 10:00:15Z oconrad $
+ * Version $Id: grid.cpp 2826 2016-02-25 11:30:10Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -610,27 +610,27 @@ bool CSG_Grid::is_Compatible(int NX, int NY, double Cellsize, double xMin, doubl
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
-double CSG_Grid::Get_Value(TSG_Point Position, int Interpolation, bool bByteWise, bool bOnlyValidCells) const
+double CSG_Grid::Get_Value(TSG_Point Position, TSG_Grid_Resampling Resampling, bool bByteWise, bool bOnlyValidCells) const
 {
 	double	Value;
 
-	return( Get_Value(Position.x, Position.y, Value, Interpolation, bByteWise, bOnlyValidCells) ? Value : Get_NoData_Value() );
+	return( Get_Value(Position.x, Position.y, Value, Resampling, bByteWise, bOnlyValidCells) ? Value : Get_NoData_Value() );
 }
 
-double CSG_Grid::Get_Value(double xPosition, double yPosition, int Interpolation, bool bByteWise, bool bOnlyValidCells) const
+double CSG_Grid::Get_Value(double xPosition, double yPosition, TSG_Grid_Resampling Resampling, bool bByteWise, bool bOnlyValidCells) const
 {
 	double	Value;
 
-	return( Get_Value(xPosition, yPosition, Value, Interpolation, bByteWise, bOnlyValidCells) ? Value : Get_NoData_Value() );
+	return( Get_Value(xPosition, yPosition, Value, Resampling, bByteWise, bOnlyValidCells) ? Value : Get_NoData_Value() );
 }
 
-bool CSG_Grid::Get_Value(TSG_Point Position, double &Value, int Interpolation, bool bByteWise, bool bOnlyValidCells) const
+bool CSG_Grid::Get_Value(TSG_Point Position, double &Value, TSG_Grid_Resampling Resampling, bool bByteWise, bool bOnlyValidCells) const
 {
-	return( Get_Value(Position.x, Position.y, Value, Interpolation, bByteWise, bOnlyValidCells) );
+	return( Get_Value(Position.x, Position.y, Value, Resampling, bByteWise, bOnlyValidCells) );
 }
 
 //---------------------------------------------------------
-bool CSG_Grid::Get_Value(double xPosition, double yPosition, double &Value, int Interpolation, bool bByteWise, bool bOnlyValidCells) const
+bool CSG_Grid::Get_Value(double xPosition, double yPosition, double &Value, TSG_Grid_Resampling Resampling, bool bByteWise, bool bOnlyValidCells) const
 {
 	if(	m_System.Get_Extent(true).Contains(xPosition, yPosition) )
 	{
@@ -642,26 +642,22 @@ bool CSG_Grid::Get_Value(double xPosition, double yPosition, double &Value, int
 
 		if( !bOnlyValidCells || is_InGrid(x + (int)(0.5 + dx), y + (int)(0.5 + dy)) )
 		{
-			switch( Interpolation )
+			switch( Resampling )
 			{
-			case GRID_INTERPOLATION_NearestNeighbour:
+			case GRID_RESAMPLING_NearestNeighbour:
 				Value	= _Get_ValAtPos_NearestNeighbour(x, y, dx, dy);
 				break;
 
-			case GRID_INTERPOLATION_Bilinear:
+			case GRID_RESAMPLING_Bilinear:
 				Value	= _Get_ValAtPos_BiLinear		(x, y, dx, dy, bByteWise);
 				break;
 
-			case GRID_INTERPOLATION_InverseDistance:
-				Value	= _Get_ValAtPos_InverseDistance	(x, y, dx, dy, bByteWise);
-				break;
-
-			case GRID_INTERPOLATION_BicubicSpline:
+			case GRID_RESAMPLING_BicubicSpline:
 				Value	= _Get_ValAtPos_BiCubicSpline	(x, y, dx, dy, bByteWise);
 				break;
 
 			default:
-			case GRID_INTERPOLATION_BSpline:
+			case GRID_RESAMPLING_BSpline:
 				Value	= _Get_ValAtPos_BSpline			(x, y, dx, dy, bByteWise);
 				break;
 			}
@@ -740,91 +736,43 @@ inline double CSG_Grid::_Get_ValAtPos_BiLinear(int x, int y, double dx, double d
 }
 
 //---------------------------------------------------------
-#define INVERSEDIST_ADD(ix, iy, dsx, dsy)		if( is_InGrid(ix, iy) ) { d = 1.0 / sqrt((dsx)*(dsx) + (dsy)*(dsy)); n += d;\
-													z += d * asDouble(ix, iy); }
-
-#define INVERSEDIST_ADD_BYTE(ix, iy, dsx, dsy)	if( is_InGrid(ix, iy) ) { d = 1.0 / sqrt((dsx)*(dsx) + (dsy)*(dsy)); n += d; v = asInt(ix, iy);\
-													z[0] += d * SG_GET_BYTE_0(v);\
-													z[1] += d * SG_GET_BYTE_1(v);\
-													z[2] += d * SG_GET_BYTE_2(v);\
-													z[3] += d * SG_GET_BYTE_3(v); }
-
-inline double CSG_Grid::_Get_ValAtPos_InverseDistance(int x, int y, double dx, double dy, bool bByteWise) const
+inline double CSG_Grid::_Get_ValAtPos_BiCubicSpline(double dx, double dy, double z_xy[4][4]) const
 {
-	if( dx > 0.0 || dy > 0.0 )
-	{
-		if( !bByteWise )
-		{
-			double	z = 0.0, n = 0.0, d;
+	#define BiCubicSpline(d, z) (z[1] + 0.5 * d * (z[2] - z[0] + d * (2 * z[0] - 5 * z[1] + 4 * z[2] - z[3] + d * (3 * (z[1] - z[2]) + z[3] - z[0]))))
 
-			INVERSEDIST_ADD(x    , y    ,       dx,       dy);
-			INVERSEDIST_ADD(x + 1, y    , 1.0 - dx,       dy);
-			INVERSEDIST_ADD(x    , y + 1,       dx, 1.0 - dy);
-			INVERSEDIST_ADD(x + 1, y + 1, 1.0 - dx, 1.0 - dy);
+	double	z_x[4];
 
-			if( n > 0.0 )
-			{
-				return( z / n );
-			}
-		}
-		else
-		{
-			sLong	v;
-			double	z[4], n = 0.0, d;
+	z_x[0]	= BiCubicSpline(dy, z_xy[0]);
+	z_x[1]	= BiCubicSpline(dy, z_xy[1]);
+	z_x[2]	= BiCubicSpline(dy, z_xy[2]);
+	z_x[3]	= BiCubicSpline(dy, z_xy[3]);
 
-			z[0] = z[1] = z[2] = z[3] = 0.0;
+	return( BiCubicSpline(dx, z_x) );
 
-			INVERSEDIST_ADD_BYTE(x    , y    ,       dx,       dy);
-			INVERSEDIST_ADD_BYTE(x + 1, y    , 1.0 - dx,       dy);
-			INVERSEDIST_ADD_BYTE(x    , y + 1,       dx, 1.0 - dy);
-			INVERSEDIST_ADD_BYTE(x + 1, y + 1, 1.0 - dx, 1.0 - dy);
+	//double	a0, a2, a3, b1, b2, b3, c[4];
 
-			if( n > 0.0 )
-			{
-				z[0]	/= n;
-				z[1]	/= n;
-				z[2]	/= n;
-				z[3]	/= n;
+	//for(int i=0; i<4; i++)
+	//{
+	//	a0		= z_xy[0][i] - z_xy[1][i];
+	//	a2		= z_xy[2][i] - z_xy[1][i];
+	//	a3		= z_xy[3][i] - z_xy[1][i];
 
-				return( SG_GET_LONG(z[0], z[1], z[2], z[3]) );
-			}
-		}
-	}
-	else
-	{
-		return( asDouble(x, y) );
-	}
+	//	b1		= -a0 / 3.0 + a2       - a3 / 6.0;
+	//	b2		=  a0 / 2.0 + a2 / 2.0;
+	//	b3		= -a0 / 6.0 - a2 / 2.0 + a3 / 6.0;
 
-	return( Get_NoData_Value() );
-}
+	//	c[i]	= z_xy[1][i] + b1 * dx + b2 * dx*dx + b3 * dx*dx*dx;
+	//}
 
-//---------------------------------------------------------
-inline double CSG_Grid::_Get_ValAtPos_BiCubicSpline(double dx, double dy, double z_xy[4][4]) const
-{
-	double	a0, a2, a3, b1, b2, b3, c[4];
+	//a0		= c[0] - c[1];
+	//a2		= c[2] - c[1];
+	//a3		= c[3] - c[1];
 
-	for(int i=0; i<4; i++)
-	{
-		a0		= z_xy[0][i] - z_xy[1][i];
-		a2		= z_xy[2][i] - z_xy[1][i];
-		a3		= z_xy[3][i] - z_xy[1][i];
+	//b1		= -a0 / 3.0 + a2       - a3 / 6.0;
+	//b2		=  a0 / 2.0 + a2 / 2.0;
+	//b3		= -a0 / 6.0 - a2 / 2.0 + a3 / 6.0;
 
-		b1		= -a0 / 3.0 + a2       - a3 / 6.0;
-		b2		=  a0 / 2.0 + a2 / 2.0;
-		b3		= -a0 / 6.0 - a2 / 2.0 + a3 / 6.0;
-
-		c[i]	= z_xy[1][i] + b1 * dx + b2 * dx*dx + b3 * dx*dx*dx;
-	}
-
-	a0		= c[0] - c[1];
-	a2		= c[2] - c[1];
-	a3		= c[3] - c[1];
-
-	b1		= -a0 / 3.0 + a2       - a3 / 6.0;
-	b2		=  a0 / 2.0 + a2 / 2.0;
-	b3		= -a0 / 6.0 - a2 / 2.0 + a3 / 6.0;
-
-	return( c[1] + b1 * dy + b2 * dy*dy + b3 * dy*dy*dy );
+	//return( c[1] + b1 * dy + b2 * dy*dy + b3 * dy*dy*dy );
 }
 
 inline double CSG_Grid::_Get_ValAtPos_BiCubicSpline(int x, int y, double dx, double dy, bool bByteWise) const
@@ -859,38 +807,34 @@ inline double CSG_Grid::_Get_ValAtPos_BiCubicSpline(int x, int y, double dx, dou
 //---------------------------------------------------------
 inline double CSG_Grid::_Get_ValAtPos_BSpline(double dx, double dy, double z_xy[4][4]) const
 {
-	int		i, ix, iy;
-	double	z, px, py, Rx[4], Ry[4];
+	double	Rx[4], Ry[4];
 
-	for(i=0, px=-1.0-dx, py=-1.0-dy; i<4; i++, px++, py++)
+	for(int i=0; i<4; i++)
 	{
-		Rx[i]	= 0.0;
-		Ry[i]	= 0.0;
-
-		if( (z = px + 2.0) > 0.0 )
-			Rx[i]	+=        z*z*z;
-		if( (z = px + 1.0) > 0.0 )
-			Rx[i]	+= -4.0 * z*z*z;
-		if( (z = px + 0.0) > 0.0 )
-			Rx[i]	+=  6.0 * z*z*z;
-		if( (z = px - 1.0) > 0.0 )
-			Rx[i]	+= -4.0 * z*z*z;
-		if( (z = py + 2.0) > 0.0 )
-			Ry[i]	+=        z*z*z;
-		if( (z = py + 1.0) > 0.0 )
-			Ry[i]	+= -4.0 * z*z*z;
-		if( (z = py + 0.0) > 0.0 )
-			Ry[i]	+=  6.0 * z*z*z;
-		if( (z = py - 1.0) > 0.0 )
-			Ry[i]	+= -4.0 * z*z*z;
-
-		Rx[i]	/= 6.0;
-		Ry[i]	/= 6.0;
+		double	d, s;
+
+		s	= 0.0;
+		if( (d = i - dx + 1.0) > 0.0 )	s	+=        d*d*d;
+		if( (d = i - dx + 0.0) > 0.0 )	s	+= -4.0 * d*d*d;
+		if( (d = i - dx - 1.0) > 0.0 )	s	+=  6.0 * d*d*d;
+		if( (d = i - dx - 2.0) > 0.0 )	s	+= -4.0 * d*d*d;
+	//	if( (d = i - dx - 3.0) > 0.0 )	s	+=        d*d*d;
+		Rx[i]	= s / 6.0;
+
+		s	= 0.0;
+		if( (d = i - dy + 1.0) > 0.0 )	s	+=        d*d*d;
+		if( (d = i - dy + 0.0) > 0.0 )	s	+= -4.0 * d*d*d;
+		if( (d = i - dy - 1.0) > 0.0 )	s	+=  6.0 * d*d*d;
+		if( (d = i - dy - 2.0) > 0.0 )	s	+= -4.0 * d*d*d;
+	//	if( (d = i - dy - 3.0) > 0.0 )	s	+=        d*d*d;
+		Ry[i]	= s / 6.0;
 	}
 
-	for(iy=0, z=0.0; iy<4; iy++)
+	double	z	= 0.0;
+
+	for(int iy=0; iy<4; iy++)
 	{
-		for(ix=0; ix<4; ix++)
+		for(int ix=0; ix<4; ix++)
 		{
 			z	+= z_xy[ix][iy] * Rx[ix] * Ry[iy];
 		}
@@ -952,53 +896,41 @@ inline bool CSG_Grid::_Get_ValAtPos_Fill4x4Submatrix(int x, int y, double z_xy[4
 	}
 
 	//-----------------------------------------------------
-	if( nNoData > 0 && nNoData < 16 )	// guess missing values as average of surrounding data values
+	for(int i=0; nNoData>0 && nNoData<16 && i<16; i++)	// guess missing values as average of surrounding data values
 	{
-		for(int i=0; nNoData>0 && i<16; i++)	// avoid the possibility of endless loop
+		double	t_xy[4][4];
+
+		for(iy=0; iy<4; iy++)	for(ix=0; ix<4; ix++)
 		{
-			double	t_xy[4][4];
+			t_xy[ix][iy]	= z_xy[ix][iy];
+		}
 
-			for(iy=0; iy<4; iy++)
+		for(iy=0; iy<4; iy++)	for(ix=0; ix<4; ix++)
+		{
+			if( is_NoData_Value(t_xy[ix][iy]) )
 			{
-				for(ix=0; ix<4; ix++)
-				{
-					t_xy[ix][iy]	= z_xy[ix][iy];
+				int		n	= 0;
+				double	s	= 0.0;
 
-					if( is_NoData_Value(z_xy[ix][iy]) )
+				for(jy=iy-1; jy<=iy+1; jy++)	for(jx=ix-1; jx<=ix+1; jx++)
+				{
+					if( is_InGrid(jx + x - 1, jy + y - 1) )
+					{
+						s	+= asDouble(jx + x - 1, jy + y - 1);
+						n	++;
+					}
+					else if( jy >= 0 && jy < 4 && jx >= 0 && jx < 4 && !is_NoData_Value(t_xy[jx][jy]) )
 					{
-						int		n	= 0;
-						double	s	= 0.0;
-
-						for(jy=iy-1; jy<=iy+1; jy++)
-						{
-							if( jy >= 0 && jy < 4 )
-							{
-								for(jx=ix-1; jx<=ix+1; jx++)
-								{
-									if( jx >= 0 && jx < 4 && !is_NoData_Value(z_xy[jx][jy]) )
-									{
-										s	+= z_xy[jx][jy];
-										n	++;
-									}
-								}
-							}
-						}
-
-						if( n > 0 )
-						{
-							t_xy[ix][iy]	= s / n;
-
-							nNoData--;
-						}
+						s	+= t_xy[jx][jy];
+						n	++;
 					}
 				}
-			}
 
-			for(iy=0; iy<4; iy++)
-			{
-				for(ix=0; ix<4; ix++)
+				if( n > 0 )
 				{
-					z_xy[ix][iy]	= t_xy[ix][iy];
+					z_xy[ix][iy]	= s / n;
+
+					nNoData--;
 				}
 			}
 		}
@@ -1020,16 +952,16 @@ inline bool CSG_Grid::_Get_ValAtPos_Fill4x4Submatrix(int x, int y, double z_xy[4
 		{
 			if( is_InGrid(jx, jy) )
 			{
-				int		v	= asInt(jx, jy);
+				int	z	= asInt(jx, jy);
 
-				z_xy[0][ix][iy]	= SG_GET_BYTE_0(v);
-				z_xy[1][ix][iy]	= SG_GET_BYTE_1(v);
-				z_xy[2][ix][iy]	= SG_GET_BYTE_2(v);
-				z_xy[3][ix][iy]	= SG_GET_BYTE_3(v);
+				z_xy[0][ix][iy]	= SG_GET_BYTE_0(z);
+				z_xy[1][ix][iy]	= SG_GET_BYTE_1(z);
+				z_xy[2][ix][iy]	= SG_GET_BYTE_2(z);
+				z_xy[3][ix][iy]	= SG_GET_BYTE_3(z);
 			}
 			else
 			{
-				z_xy[0][ix][iy]	= Get_NoData_Value();
+				z_xy[0][ix][iy]	= -1;
 
 				nNoData++;
 			}
@@ -1037,65 +969,55 @@ inline bool CSG_Grid::_Get_ValAtPos_Fill4x4Submatrix(int x, int y, double z_xy[4
 	}
 
 	//-----------------------------------------------------
-	if( nNoData > 0 && nNoData < 16 )	// guess missing values as average of surrounding data values
+	for(int i=0; nNoData>0 && nNoData<16 && i<16; i++)	// guess missing values as average of surrounding data values
 	{
-		for(int i=0; nNoData>0 && i<16; i++)	// avoid the possibility of endless loop
+		double	t_xy[4][4][4];
+
+		for(iy=0; iy<4; iy++)	for(ix=0; ix<4; ix++)
 		{
-			double	t_xy[4][4][4];
+			t_xy[0][ix][iy]	= z_xy[0][ix][iy];
+			t_xy[1][ix][iy]	= z_xy[1][ix][iy];
+			t_xy[2][ix][iy]	= z_xy[2][ix][iy];
+			t_xy[3][ix][iy]	= z_xy[3][ix][iy];
+		}
 
-			for(iy=0; iy<4; iy++)
+		for(iy=0; iy<4; iy++)	for(ix=0; ix<4; ix++)
+		{
+			if( t_xy[0][ix][iy] < 0 )
 			{
-				for(ix=0; ix<4; ix++)
+				int		n	= 0;
+				double	s[4]; s[0] = s[1] = s[2] = s[3] = 0.0;
+
+				for(jy=iy-1; jy<=iy+1; jy++)	for(jx=ix-1; jx<=ix+1; jx++)
 				{
-					t_xy[0][ix][iy]	 = z_xy[0][ix][iy];
-					t_xy[1][ix][iy]	 = z_xy[1][ix][iy];
-					t_xy[2][ix][iy]	 = z_xy[2][ix][iy];
-					t_xy[3][ix][iy]	 = z_xy[3][ix][iy];
+					if( is_InGrid(jx + x - 1, jy + y - 1) )
+					{
+						int	z	= asInt(jx + x - 1, jy + y - 1);
 
-					if( is_NoData_Value(z_xy[0][ix][iy]) )
+						s[0]	+= SG_GET_BYTE_0(z);
+						s[1]	+= SG_GET_BYTE_1(z);
+						s[2]	+= SG_GET_BYTE_2(z);
+						s[3]	+= SG_GET_BYTE_3(z);
+						n		++;
+					}
+					else if( jy >= 0 && jy < 4 && jx >= 0 && jx < 4 && !is_NoData_Value(t_xy[0][jx][jy]) )
 					{
-						int		n	= 0;
-						double	s[4]; s[0] = s[1] = s[2] = s[3] = 0;
-
-						for(jy=iy-1; jy<=iy+1; jy++)
-						{
-							if( jy >= 0 && jy < 4 )
-							{
-								for(jx=ix-1; jx<=ix+1; jx++)
-								{
-									if( jx >= 0 && jx < 4 && !is_NoData_Value(z_xy[0][jx][jy]) )
-									{
-										s[0]	+= z_xy[0][jx][jy];
-										s[1]	+= z_xy[1][jx][jy];
-										s[2]	+= z_xy[2][jx][jy];
-										s[3]	+= z_xy[3][jx][jy];
-										n		++;
-									}
-								}
-							}
-						}
-
-						if( n > 0 )
-						{
-							t_xy[0][ix][iy]	= s[0] / n;
-							t_xy[1][ix][iy]	= s[1] / n;
-							t_xy[2][ix][iy]	= s[2] / n;
-							t_xy[3][ix][iy]	= s[3] / n;
-
-							nNoData--;
-						}
+						s[0]	+= t_xy[0][jx][jy];
+						s[1]	+= t_xy[1][jx][jy];
+						s[2]	+= t_xy[2][jx][jy];
+						s[3]	+= t_xy[3][jx][jy];
+						n		++;
 					}
 				}
-			}
 
-			for(iy=0; iy<4; iy++)
-			{
-				for(ix=0; ix<4; ix++)
+				if( n > 0 )
 				{
-					z_xy[0][ix][iy]	= t_xy[0][ix][iy];
-					z_xy[1][ix][iy]	= t_xy[1][ix][iy];
-					z_xy[2][ix][iy]	= t_xy[2][ix][iy];
-					z_xy[3][ix][iy]	= t_xy[3][ix][iy];
+					z_xy[0][ix][iy]	= s[0] / n;
+					z_xy[1][ix][iy]	= s[1] / n;
+					z_xy[2][ix][iy]	= s[2] / n;
+					z_xy[3][ix][iy]	= s[3] / n;
+
+					nNoData--;
 				}
 			}
 		}
@@ -1119,7 +1041,7 @@ bool CSG_Grid::On_Update(void)
 	{
 		m_zStats.Invalidate();
 
-		for(int y=0; y<Get_NY() && SG_UI_Process_Get_Okay(); y++)
+		for(int y=0; y<Get_NY(); y++)
 		{
 			for(int x=0; x<Get_NX(); x++)
 			{
diff --git a/src/saga_core/saga_api/grid.h b/src/saga_core/saga_api/grid.h
old mode 100644
new mode 100755
index fe3ec0a..0d80771
--- a/src/saga_core/saga_api/grid.h
+++ b/src/saga_core/saga_api/grid.h
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: grid.h 2593 2015-09-23 07:34:34Z oconrad $
+ * Version $Id: grid.h 2776 2016-02-09 15:35:13Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -165,23 +165,22 @@ const SG_Char	gSG_Grid_File_Key_Names[GRID_FILE_KEY_Count][32]	=
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
-typedef enum ESG_Grid_Interpolation
+typedef enum ESG_Grid_Resampling
 {
-	GRID_INTERPOLATION_NearestNeighbour	= 0,
-	GRID_INTERPOLATION_Bilinear,
-	GRID_INTERPOLATION_InverseDistance,
-	GRID_INTERPOLATION_BicubicSpline,
-	GRID_INTERPOLATION_BSpline,
-
-	GRID_INTERPOLATION_Mean_Nodes,
-	GRID_INTERPOLATION_Mean_Cells,
-	GRID_INTERPOLATION_Minimum,
-	GRID_INTERPOLATION_Maximum,
-	GRID_INTERPOLATION_Majority,
-
-	GRID_INTERPOLATION_Undefined
+	GRID_RESAMPLING_NearestNeighbour	= 0,
+	GRID_RESAMPLING_Bilinear,
+	GRID_RESAMPLING_BicubicSpline,
+	GRID_RESAMPLING_BSpline,
+
+	GRID_RESAMPLING_Mean_Nodes,
+	GRID_RESAMPLING_Mean_Cells,
+	GRID_RESAMPLING_Minimum,
+	GRID_RESAMPLING_Maximum,
+	GRID_RESAMPLING_Majority,
+
+	GRID_RESAMPLING_Undefined
 }
-TSG_Grid_Interpolation;
+TSG_Grid_Resampling;
 
 //---------------------------------------------------------
 typedef enum ESG_Grid_Operation
@@ -568,7 +567,7 @@ public:		///////////////////////////////////////////////
 
 	virtual bool				Assign						(double Value = 0.0);
 	virtual bool				Assign						(CSG_Data_Object *pObject);
-	virtual bool				Assign						(CSG_Grid *pGrid, TSG_Grid_Interpolation Interpolation);
+	virtual bool				Assign						(CSG_Grid *pGrid, TSG_Grid_Resampling Interpolation);
 
 	void						Flip						(void);
 	void						Mirror						(void);
@@ -580,8 +579,8 @@ public:		///////////////////////////////////////////////
 	bool						Standardise					(void);
 	bool						DeStandardise				(double Mean, double StdDev);
 
-	int							Get_Gradient_NeighborDir	(int x, int y, bool bMustBeLower = true)			const;
-	bool						Get_Gradient				(int x, int y, double &Decline, double &Azimuth)	const;
+	int							Get_Gradient_NeighborDir	(int x, int y, bool bDown = true, bool bNoEdges = true)	const;
+	bool						Get_Gradient				(int x, int y, double &Incline, double &Azimuth)		const;
 
 
 	//-----------------------------------------------------
@@ -699,10 +698,10 @@ public:		///////////////////////////////////////////////
 	//-----------------------------------------------------
 	// Get Value...
 
-	double						Get_Value(double xPos, double yPos,                int Interpolation = GRID_INTERPOLATION_BSpline, bool bByteWise = false, bool bOnlyValidCells = false) const;
-	double						Get_Value(TSG_Point Position      ,                int Interpolation = GRID_INTERPOLATION_BSpline, bool bByteWise = false, bool bOnlyValidCells = false) const;
-	bool						Get_Value(double xPos, double yPos, double &Value, int Interpolation = GRID_INTERPOLATION_BSpline, bool bByteWise = false, bool bOnlyValidCells = false) const;
-	bool						Get_Value(TSG_Point Position      , double &Value, int Interpolation = GRID_INTERPOLATION_BSpline, bool bByteWise = false, bool bOnlyValidCells = false) const;
+	double						Get_Value(double xPos, double yPos,                TSG_Grid_Resampling Resampling = GRID_RESAMPLING_BSpline, bool bByteWise = false, bool bOnlyValidCells = false) const;
+	double						Get_Value(TSG_Point Position      ,                TSG_Grid_Resampling Resampling = GRID_RESAMPLING_BSpline, bool bByteWise = false, bool bOnlyValidCells = false) const;
+	bool						Get_Value(double xPos, double yPos, double &Value, TSG_Grid_Resampling Resampling = GRID_RESAMPLING_BSpline, bool bByteWise = false, bool bOnlyValidCells = false) const;
+	bool						Get_Value(TSG_Point Position      , double &Value, TSG_Grid_Resampling Resampling = GRID_RESAMPLING_BSpline, bool bByteWise = false, bool bOnlyValidCells = false) const;
 
 	virtual BYTE				asByte	(int x, int y, bool bScaled = true) const	{	return( SG_ROUND_TO_BYTE (asDouble(x, y, bScaled)) );	}
 	virtual BYTE				asByte	(     sLong n, bool bScaled = true) const	{	return( SG_ROUND_TO_BYTE (asDouble(   n, bScaled)) );	}
@@ -923,7 +922,7 @@ private:	///////////////////////////////////////////////
 	bool						_Get_ValAtPos_Fill4x4Submatrix	(int x, int y, double z_xy[4][4])					 const;
 	bool						_Get_ValAtPos_Fill4x4Submatrix	(int x, int y, double z_xy[4][4][4])				 const;
 
-	bool						_Assign_Interpolated	(CSG_Grid *pSource, TSG_Grid_Interpolation Interpolation);
+	bool						_Assign_Interpolated	(CSG_Grid *pSource, TSG_Grid_Resampling Interpolation);
 	bool						_Assign_MeanValue		(CSG_Grid *pSource, bool bAreaProportional);
 	bool						_Assign_ExtremeValue	(CSG_Grid *pSource, bool bMaximum);
 	bool						_Assign_Majority		(CSG_Grid *pSource);
@@ -1052,7 +1051,7 @@ public:
 	int							Get_Y				(int Index, int Offset = 0)	const	{	return( Offset + (Index >= 0 && Index < Get_Count() ? m_Cells.Get_Record_byIndex(Index)->asInt(1) : 0) );	}
 
 	double						Get_Distance		(int Index)	const					{	return( Index >= 0 && Index < Get_Count() ? m_Cells.Get_Record_byIndex(Index)->asDouble(2) : -1.0 );	}
-	double						Get_Weight			(int Index)	const					{	return( Index >= 0 && Index < Get_Count() ? m_Cells.Get_Record_byIndex(Index)->asDouble(3) : -1.0 );	}
+	double						Get_Weight			(int Index)	const					{	return( Index >= 0 && Index < Get_Count() ? m_Cells.Get_Record_byIndex(Index)->asDouble(3) :  0.0 );	}
 
 	bool						Get_Values			(int Index, int &x, int &y, double &Distance, double &Weight, bool bOffset = false)	const
 	{
diff --git a/src/saga_core/saga_api/grid_io.cpp b/src/saga_core/saga_api/grid_io.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_api/grid_memory.cpp b/src/saga_core/saga_api/grid_memory.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_api/grid_operation.cpp b/src/saga_core/saga_api/grid_operation.cpp
old mode 100644
new mode 100755
index a63b4bb..52217d0
--- a/src/saga_core/saga_api/grid_operation.cpp
+++ b/src/saga_core/saga_api/grid_operation.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: grid_operation.cpp 2708 2015-12-01 16:16:14Z oconrad $
+ * Version $Id: grid_operation.cpp 2817 2016-02-23 15:16:48Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -133,10 +133,10 @@ bool CSG_Grid::Assign(double Value)
 bool CSG_Grid::Assign(CSG_Data_Object *pObject)
 {
 	return( pObject && pObject->is_Valid() && pObject->Get_ObjectType() == Get_ObjectType()
-		&&  Assign((CSG_Grid *)pObject, GRID_INTERPOLATION_Undefined) );
+		&&  Assign((CSG_Grid *)pObject, GRID_RESAMPLING_Undefined) );
 }
 
-bool CSG_Grid::Assign(CSG_Grid *pGrid, TSG_Grid_Interpolation Interpolation)
+bool CSG_Grid::Assign(CSG_Grid *pGrid, TSG_Grid_Resampling Interpolation)
 {
 	//-----------------------------------------------------
 	if(	!is_Valid() || !pGrid || !pGrid->is_Valid() || is_Intersecting(pGrid->Get_Extent()) == INTERSECTION_None )
@@ -172,42 +172,41 @@ bool CSG_Grid::Assign(CSG_Grid *pGrid, TSG_Grid_Interpolation Interpolation)
 	&&	fmod(Get_XMin() - pGrid->Get_XMin(), Get_Cellsize()) == 0.0
 	&&	fmod(Get_YMin() - pGrid->Get_YMin(), Get_Cellsize()) == 0.0	)
 	{
-		bResult	= _Assign_Interpolated(pGrid, GRID_INTERPOLATION_NearestNeighbour);
+		bResult	= _Assign_Interpolated(pGrid, GRID_RESAMPLING_NearestNeighbour);
 	}
 
 	//---------------------------------------------------------
 	else switch( Interpolation )
 	{
-	case GRID_INTERPOLATION_NearestNeighbour:
-	case GRID_INTERPOLATION_Bilinear:
-	case GRID_INTERPOLATION_InverseDistance:
-	case GRID_INTERPOLATION_BicubicSpline:
-	case GRID_INTERPOLATION_BSpline:
+	case GRID_RESAMPLING_NearestNeighbour:
+	case GRID_RESAMPLING_Bilinear:
+	case GRID_RESAMPLING_BicubicSpline:
+	case GRID_RESAMPLING_BSpline:
 		bResult	= _Assign_Interpolated(pGrid, Interpolation);
 		break;
 
-	case GRID_INTERPOLATION_Mean_Nodes:
-	case GRID_INTERPOLATION_Mean_Cells:
-		bResult	= _Assign_MeanValue   (pGrid, Interpolation != GRID_INTERPOLATION_Mean_Nodes);
+	case GRID_RESAMPLING_Mean_Nodes:
+	case GRID_RESAMPLING_Mean_Cells:
+		bResult	= _Assign_MeanValue   (pGrid, Interpolation != GRID_RESAMPLING_Mean_Nodes);
 		break;
 
-	case GRID_INTERPOLATION_Minimum:
-	case GRID_INTERPOLATION_Maximum:
-		bResult	= _Assign_ExtremeValue(pGrid, Interpolation == GRID_INTERPOLATION_Maximum);
+	case GRID_RESAMPLING_Minimum:
+	case GRID_RESAMPLING_Maximum:
+		bResult	= _Assign_ExtremeValue(pGrid, Interpolation == GRID_RESAMPLING_Maximum);
 		break;
 
-	case GRID_INTERPOLATION_Majority:
+	case GRID_RESAMPLING_Majority:
 		bResult	= _Assign_Majority    (pGrid);
 		break;
 
 	default:
 		if( Get_Cellsize() < pGrid->Get_Cellsize() )	// Down-Scaling...
 		{
-			bResult	= _Assign_Interpolated(pGrid, GRID_INTERPOLATION_BSpline);
+			bResult	= _Assign_Interpolated(pGrid, GRID_RESAMPLING_BSpline);
 		}
 		else											// Up-Scaling...
 		{
-			bResult	= _Assign_MeanValue(pGrid, Interpolation != GRID_INTERPOLATION_Mean_Nodes);
+			bResult	= _Assign_MeanValue(pGrid, Interpolation != GRID_RESAMPLING_Mean_Nodes);
 		}
 		break;
 	}
@@ -232,7 +231,7 @@ bool CSG_Grid::Assign(CSG_Grid *pGrid, TSG_Grid_Interpolation Interpolation)
 }
 
 //---------------------------------------------------------
-bool CSG_Grid::_Assign_Interpolated(CSG_Grid *pGrid, TSG_Grid_Interpolation Interpolation)
+bool CSG_Grid::_Assign_Interpolated(CSG_Grid *pGrid, TSG_Grid_Resampling Interpolation)
 {
 	double	py	= Get_YMin();
 
@@ -315,120 +314,59 @@ bool CSG_Grid::_Assign_MeanValue(CSG_Grid *pGrid, bool bAreaProportional)
 	}
 
 	//-----------------------------------------------------
-	Assign_NoData();
-
-	CSG_Matrix	S(Get_NY(), Get_NX()), N(Get_NY(), Get_NX());
+	double	d	= Get_Cellsize() / pGrid->Get_Cellsize();
 
-	double	d	= pGrid->Get_Cellsize() / Get_Cellsize();
+	double	ox	= (Get_XMin(true) - pGrid->Get_XMin()) / pGrid->Get_Cellsize();
+	double	py	= (Get_YMin(true) - pGrid->Get_YMin()) / pGrid->Get_Cellsize();
 
-	//-----------------------------------------------------
-	if( bAreaProportional == false )
+	for(int y=0; y<Get_NY() && SG_UI_Process_Set_Progress(y, Get_NY()); y++, py+=d)
 	{
-		double	ax	= 0.5 + (pGrid->Get_XMin() - Get_XMin()) / Get_Cellsize();
-		double	py	= 0.5 + (pGrid->Get_YMin() - Get_YMin()) / Get_Cellsize();
+		int		ay	= (int)(bAreaProportional ? floor(py    ) : ceil (py    ));
+		int		by	= (int)(bAreaProportional ? ceil (py + d) : floor(py + d));
 
-		for(int y=0; y<pGrid->Get_NY() && SG_UI_Process_Set_Progress(y, pGrid->Get_NY()); y++, py+=d)
+		//-------------------------------------------------
+		#pragma omp parallel for
+		for(int x=0; x<Get_NX(); x++)
 		{
-			int	iy	= (int)floor(py);
+			double	px	= ox + x * d;
 
-			if( iy >= 0 && iy < Get_NY() )
-			{
-				#pragma omp parallel for
-				for(int x=0; x<pGrid->Get_NX(); x++)
-				{
-					if( !pGrid->is_NoData(x, y) )
-					{
-						int	ix	= (int)floor(ax + x * d);
-						
-						if( ix >= 0 && ix < Get_NX() )
-						{
-							S[ix][iy]	+= pGrid->asDouble(x, y);
-							N[ix][iy]	++;
-						}
-					}
-				}
-			}
-		}
-	}
+			int		ax	= (int)(bAreaProportional ? floor(px    ) : ceil (px    ));
+			int		bx	= (int)(bAreaProportional ? ceil (px + d) : floor(px + d));
 
-	//-----------------------------------------------------
-	else // if( bAreaProportional == true )
-	{
-		double	ax	= ((pGrid->Get_XMin() - 0.5 * pGrid->Get_Cellsize()) - (Get_XMin() - 0.5 * Get_Cellsize())) / Get_Cellsize();
-		double	py	= ((pGrid->Get_YMin() - 0.5 * pGrid->Get_Cellsize()) - (Get_YMin() - 0.5 * Get_Cellsize())) / Get_Cellsize();
+			CSG_Rect	rMean(px, py, px + d, py + d);
 
-		for(int y=0; y<pGrid->Get_NY() && SG_UI_Process_Set_Progress(y, pGrid->Get_NY()); y++, py+=d)
-		{
-			if( py > -d || py < Get_NY() )
-			{
-				int		iy	= (int)floor(py);
+			CSG_Simple_Statistics	s;
 
-				double	wy	= (py + d) - iy;	wy	= wy < 1.0 ? 1.0 : wy - 1.0; 
-
-				#pragma omp parallel for
-				for(int x=0; x<pGrid->Get_NX(); x++)
+			for(int iy=ay; iy<=by; iy++)
+			{
+				if( iy >= 0 && iy < pGrid->Get_NY() )
 				{
-					if( !pGrid->is_NoData(x, y) )
+					for(int ix=ax; ix<=bx; ix++)
 					{
-						double	px	= ax + x * d;
-
-						if( px > -d && px < Get_NX() )
+						if( ix >= 0 && ix < pGrid->Get_NX() && !pGrid->is_NoData(ix, iy) )
 						{
-							int		jy, jx, ix	= (int)floor(px);
-
-							double	wx	= (px + d) - ix;	wx	= wx < 1.0 ? 1.0 : wx - 1.0; 
-
-							double	z	= pGrid->asDouble(x, y);
-
-							if( iy >= 0 && iy < Get_NY() )		// wy > 0.0 is always true
+							if( bAreaProportional )
 							{
-								if( ix >= 0 && ix < Get_NX() )	// wx > 0.0 is always true
-								{
-									double	w	= wx * wy;
-									S[ix][iy]	+= w * z;
-									N[ix][iy]	+= w;
-								}
+								CSG_Rect	r(ix - 0.5, iy - 0.5, ix + 0.5, iy + 0.5);
 
-								if( wx < 1.0 && (jx = ix + 1) >= 0 && jx < Get_NX() )
+								if( r.Intersect(rMean) )
 								{
-									double	w	= (1.0 - wx) * wy;
-									S[jx][iy]	+= w * z;
-									N[jx][iy]	+= w;
+									s.Add_Value(pGrid->asDouble(ix, iy), r.Get_Area());
 								}
 							}
-
-							if( wy < 1.0 && (jy = iy + 1) >= 0 && jy < Get_NY() )
+							else
 							{
-								if( ix >= 0 && ix < Get_NX() )
-								{
-									double	w	= wx * (1.0 - wy);
-									S[ix][jy]	+= w * z;
-									N[ix][jy]	+= w;
-								}
-
-								if( wx < 1.0 && (jx = ix + 1) >= 0 && jx < Get_NX() )
-								{
-									double	w	= (1.0 - wx) * (1.0 - wy);
-									S[jx][jy]	+= w * z;
-									N[jx][jy]	+= w;
-								}
+								s.Add_Value(pGrid->asDouble(ix, iy));
 							}
 						}
 					}
 				}
 			}
-		}
-	}
 
-	//-----------------------------------------------------
-	for(int y=0; y<Get_NY() && SG_UI_Process_Set_Progress(y, Get_NY()); y++)
-	{
-		#pragma omp parallel for
-		for(int x=0; x<Get_NX(); x++)
-		{
-			if( N[x][y] > 0.0 )
+			//---------------------------------------------
+			if( s.Get_Count() > 0 )
 			{
-				Set_Value(x, y, S[x][y] / N[x][y]);
+				Set_Value(x, y, s.Get_Mean());
 			}
 			else
 			{
@@ -539,7 +477,7 @@ bool CSG_Grid::_Assign_Majority(CSG_Grid *pGrid)
 //---------------------------------------------------------
 CSG_Grid & CSG_Grid::operator = (const CSG_Grid &Grid)
 {
-	Assign((CSG_Grid *)&Grid, GRID_INTERPOLATION_Undefined);
+	Assign((CSG_Grid *)&Grid, GRID_RESAMPLING_Undefined);
 
 	return( *this );
 }
@@ -703,11 +641,11 @@ CSG_Grid & CSG_Grid::_Operation_Arithmetic(const CSG_Grid &Grid, TSG_Grid_Operat
 {
 	if( is_Intersecting(Grid.Get_Extent()) )
 	{
-		TSG_Grid_Interpolation	Interpolation	=
+		TSG_Grid_Resampling	Interpolation	=
 			Get_Cellsize() == Grid.Get_Cellsize() && fmod(Get_XMin() - Grid.Get_XMin(), Get_Cellsize()) == 0.0
 		&&	Get_Cellsize() == Grid.Get_Cellsize() && fmod(Get_YMin() - Grid.Get_YMin(), Get_Cellsize()) == 0.0
-		?	GRID_INTERPOLATION_NearestNeighbour
-		:	GRID_INTERPOLATION_BSpline;
+		?	GRID_RESAMPLING_NearestNeighbour
+		:	GRID_RESAMPLING_BSpline;
 
 		for(int y=0; y<Get_NY() && SG_UI_Process_Set_Progress(y, Get_NY()); y++)
 		{
@@ -724,19 +662,10 @@ CSG_Grid & CSG_Grid::_Operation_Arithmetic(const CSG_Grid &Grid, TSG_Grid_Operat
 					{
 						switch( Operation )
 						{
-						case GRID_OPERATION_Addition:
-							Add_Value(x, y,  Value);
-							break;
-
-						case GRID_OPERATION_Subtraction:
-							Add_Value(x, y, -Value);
-							break;
-
-						case GRID_OPERATION_Multiplication:
-							Mul_Value(x, y,  Value);
-							break;
-
-						case GRID_OPERATION_Division:
+						case GRID_OPERATION_Addition      :	Add_Value(x, y,  Value);	break;
+						case GRID_OPERATION_Subtraction   :	Add_Value(x, y, -Value);	break;
+						case GRID_OPERATION_Multiplication:	Mul_Value(x, y,  Value);	break;
+						case GRID_OPERATION_Division      :
 							if( Value != 0.0 )
 							{
 								Mul_Value(x, y, 1.0 / Value);
@@ -755,25 +684,18 @@ CSG_Grid & CSG_Grid::_Operation_Arithmetic(const CSG_Grid &Grid, TSG_Grid_Operat
 		SG_UI_Process_Set_Ready();
 
 		//-------------------------------------------------
+		CSG_String	Name;
+
 		switch( Operation )
 		{
-		case GRID_OPERATION_Addition:
-			Get_History().Add_Child(SG_T("GRID_OPERATION"), Grid.Get_Name())->Add_Property(SG_T("NAME"), _TL("Addition"));
-			break;
-
-		case GRID_OPERATION_Subtraction:
-			Get_History().Add_Child(SG_T("GRID_OPERATION"), Grid.Get_Name())->Add_Property(SG_T("NAME"), _TL("Subtraction"));
-			break;
-
-		case GRID_OPERATION_Multiplication:
-			Get_History().Add_Child(SG_T("GRID_OPERATION"), Grid.Get_Name())->Add_Property(SG_T("NAME"), _TL("Multiplication"));
-			break;
-
-		case GRID_OPERATION_Division:
-			Get_History().Add_Child(SG_T("GRID_OPERATION"), Grid.Get_Name())->Add_Property(SG_T("NAME"), _TL("Division"));
-			break;
+		case GRID_OPERATION_Addition      :	Name	= _TL("Addition"      );	break;
+		case GRID_OPERATION_Subtraction   :	Name	= _TL("Subtraction"   );	break;
+		case GRID_OPERATION_Multiplication:	Name	= _TL("Multiplication");	break;
+		case GRID_OPERATION_Division      :	Name	= _TL("Division"      );	break;
 		}
 
+		Get_History().Add_Child("GRID_OPERATION", Grid.Get_Name())->Add_Property("NAME", Name);
+
 		Get_History().Add_Children(((CSG_Grid *)&Grid)->Get_History());
 	}
 
@@ -784,41 +706,42 @@ CSG_Grid & CSG_Grid::_Operation_Arithmetic(const CSG_Grid &Grid, TSG_Grid_Operat
 CSG_Grid & CSG_Grid::_Operation_Arithmetic(double Value, TSG_Grid_Operation Operation)
 {
 	//-----------------------------------------------------
+	CSG_String	Name;
+
 	switch( Operation )
 	{
-	case GRID_OPERATION_Addition:
+	case GRID_OPERATION_Addition      :
+		Name	=  _TL("Addition");
 		if( Value == 0.0 )
 			return( *this );
-
-		Get_History().Add_Child(SG_T("GRID_OPERATION"), Value)->Add_Property(SG_T("NAME"), _TL("Addition"));
 		break;
 
-	case GRID_OPERATION_Subtraction:
+	case GRID_OPERATION_Subtraction   :
+		Name	=  _TL("Subtraction");
 		if( Value == 0.0 )
 			return( *this );
-
-		Get_History().Add_Child(SG_T("GRID_OPERATION"), Value)->Add_Property(SG_T("NAME"), _TL("Subtraction"));
 		Value	= -Value;
 		break;
 
 	case GRID_OPERATION_Multiplication:
+		Name	=  _TL("Multiplication");
 		if( Value == 1.0 )
 			return( *this );
-
-		Get_History().Add_Child(SG_T("GRID_OPERATION"), Value)->Add_Property(SG_T("NAME"), _TL("Multiplication"));
 		break;
 
-	case GRID_OPERATION_Division:
+	case GRID_OPERATION_Division      :
+		Name	=  _TL("Division");
 		if( Value == 0.0 )
 			return( *this );
-
-		Get_History().Add_Child(SG_T("GRID_OPERATION"), Value)->Add_Property(SG_T("NAME"), _TL("Division"));
 		Value	= 1.0 / Value;
 		break;
 	}
 
+	Get_History().Add_Child("GRID_OPERATION", Value)->Add_Property("NAME", Name);
+
 	//-----------------------------------------------------
-	for(int y=0; y<Get_NY() && SG_UI_Process_Set_Progress(y, Get_NY()); y++)
+	#pragma omp parallel for
+	for(int y=0; y<Get_NY(); y++)
 	{
 		for(int x=0; x<Get_NX(); x++)
 		{
@@ -826,22 +749,17 @@ CSG_Grid & CSG_Grid::_Operation_Arithmetic(double Value, TSG_Grid_Operation Oper
 			{
 				switch( Operation )
 				{
-				case GRID_OPERATION_Addition:
-				case GRID_OPERATION_Subtraction:
-					Add_Value(x, y, Value);
-					break;
+				case GRID_OPERATION_Addition      :
+				case GRID_OPERATION_Subtraction   :	Add_Value(x, y, Value);	break;
 
 				case GRID_OPERATION_Multiplication:
-				case GRID_OPERATION_Division:
-					Mul_Value(x, y, Value);
-					break;
+				case GRID_OPERATION_Division      :	Mul_Value(x, y, Value);	break;
 				}
 			}
 		}
 	}
 
-	SG_UI_Process_Set_Ready();
-
+	//-----------------------------------------------------
 	return( *this );
 }
 
@@ -855,17 +773,15 @@ CSG_Grid & CSG_Grid::_Operation_Arithmetic(double Value, TSG_Grid_Operation Oper
 //---------------------------------------------------------
 void CSG_Grid::Invert(void)
 {
-	int		x, y;
-	double	zMin, zMax;
-
 	if( is_Valid() && Get_ZRange() > 0.0 )
 	{
-		zMin	= Get_ZMin();
-		zMax	= Get_ZMax();
+		double	zMin	= Get_ZMin();
+		double	zMax	= Get_ZMax();
 
-		for(y=0; y<Get_NY() && SG_UI_Process_Set_Progress(y, Get_NY()); y++)
+		#pragma omp parallel for
+		for(int y=0; y<Get_NY(); y++)
 		{
-			for(x=0; x<Get_NX(); x++)
+			for(int x=0; x<Get_NX(); x++)
 			{
 				if( !is_NoData(x, y) )
 				{
@@ -874,71 +790,47 @@ void CSG_Grid::Invert(void)
 			}
 		}
 
-		SG_UI_Process_Set_Ready();
-
-		Get_History().Add_Child(SG_T("GRID_OPERATION"), _TL("Inversion"));
+		Get_History().Add_Child("GRID_OPERATION", _TL("Inverted"));
 	}
 }
 
 //---------------------------------------------------------
 void CSG_Grid::Flip(void)
 {
-	int		x, yA, yB;
-	double	*Line, d;
-
 	if( is_Valid() )
 	{
-		Line	= (double *)SG_Malloc(Get_NX() * sizeof(double));
-
-		for(yA=0, yB=Get_NY()-1; yA<yB && SG_UI_Process_Set_Progress(2 * yA, Get_NY()); yA++, yB--)
+		#pragma omp parallel for
+		for(int x=0; x<Get_NX(); x++)
 		{
-			for(x=0; x<Get_NX(); x++)
+			for(int yA=0, yB=Get_NX()-1; yA<yB; yA++, yB--)
 			{
-				Line[x]	= asDouble(x, yA);
-			}
-
-			for(x=0; x<Get_NX(); x++)
-			{
-				d		= Line[x];
-				Line[x]	= asDouble(x, yB);
+				double	d	   = asDouble(x, yA);
+				Set_Value(x, yA, asDouble(x, yB));
 				Set_Value(x, yB, d);
 			}
-
-			for(x=0; x<Get_NX(); x++)
-			{
-				Set_Value(x, yA, Line[x]);
-			}
 		}
 
-		SG_UI_Process_Set_Ready();
-
-		SG_Free(Line);
-
-		Get_History().Add_Child(SG_T("GRID_OPERATION"), _TL("Vertically mirrored"));
+		Get_History().Add_Child("GRID_OPERATION", _TL("Mirrored vertically"));
 	}
 }
 
 //---------------------------------------------------------
 void CSG_Grid::Mirror(void)
 {
-	int		xA, xB, y;
-	double	d;
-
 	if( is_Valid() )
 	{
-		for(y=0; y<Get_NY() && SG_UI_Process_Set_Progress(y, Get_NY()); y++)
+		#pragma omp parallel for
+		for(int y=0; y<Get_NY(); y++)
 		{
-			for(xA=0, xB=Get_NX()-1; xA<xB; xA++, xB--)
+			for(int xA=0, xB=Get_NX()-1; xA<xB; xA++, xB--)
 			{
-				d			=    asDouble(xA, y);
+				double	d	   = asDouble(xA, y);
 				Set_Value(xA, y, asDouble(xB, y));
 				Set_Value(xB, y, d);
 			}
 		}
 
-		SG_UI_Process_Set_Ready();
-
-		Get_History().Add_Child(SG_T("GRID_OPERATION"), _TL("Horizontally mirrored"));
+		Get_History().Add_Child("GRID_OPERATION", _TL("Mirrored horizontally"));
 	}
 }
 
@@ -952,92 +844,80 @@ void CSG_Grid::Mirror(void)
 //---------------------------------------------------------
 bool CSG_Grid::Normalise(void)
 {
-	if( !is_Valid() || Get_ZRange() <= 0.0 )
+	if( is_Valid() && Get_ZRange() > 0.0 )
 	{
-		return( false );
-	}
+		double	zMin	= Get_ZMin  ();
+		double	zRange	= Get_ZRange();
 
-	SG_UI_Process_Set_Text(_TL("Normalisation"));
-
-	double	zMin	= Get_ZMin();
-	double	zRange	= Get_ZRange();
-
-	for(int y=0; y<Get_NY() && SG_UI_Process_Set_Progress(y, Get_NY()); y++)
-	{
 		#pragma omp parallel for
-		for(int x=0; x<Get_NX(); x++)
+		for(int y=0; y<Get_NY(); y++)
 		{
-			if( !is_NoData(x, y) )
+			for(int x=0; x<Get_NX(); x++)
 			{
-				Set_Value(x, y, (asDouble(x, y) - zMin) / zRange);
+				if( !is_NoData(x, y) )
+				{
+					Set_Value(x, y, (asDouble(x, y) - zMin) / zRange);
+				}
 			}
 		}
-	}
 
-	SG_UI_Process_Set_Ready();
+		Get_History().Add_Child("GRID_OPERATION", _TL("Normalisation"));
 
-	Get_History().Add_Child(SG_T("GRID_OPERATION"), _TL("Normalisation"));
+		return( true );
+	}
 
-	return( true );
+	return( false );
 }
 
 //---------------------------------------------------------
 bool CSG_Grid::DeNormalise(double Minimum, double Maximum)
 {
-	if( !is_Valid() || Minimum > Maximum )
-	{
-		return( false );
-	}
-
-	SG_UI_Process_Set_Text(_TL("Denormalisation"));
-
-	for(int y=0; y<Get_NY() && SG_UI_Process_Set_Progress(y, Get_NY()); y++)
+	if( is_Valid() && Minimum < Maximum )
 	{
 		#pragma omp parallel for
-		for(int x=0; x<Get_NX(); x++)
+		for(int y=0; y<Get_NY(); y++)
 		{
-			if( !is_NoData(x, y) )
+			for(int x=0; x<Get_NX(); x++)
 			{
-				Set_Value(x, y, Minimum + asDouble(x, y) * (Maximum - Minimum));
+				if( !is_NoData(x, y) )
+				{
+					Set_Value(x, y, Minimum + asDouble(x, y) * (Maximum - Minimum));
+				}
 			}
 		}
-	}
 
-	SG_UI_Process_Set_Ready();
+		Get_History().Add_Child("GRID_OPERATION", _TL("Denormalisation"));
 
-	Get_History().Add_Child(SG_T("GRID_OPERATION"), _TL("Denormalisation"));
+		return( true );
+	}
 
-	return( true );
+	return( false );
 }
 
 //---------------------------------------------------------
 bool CSG_Grid::Standardise(void)
 {
-	if( !is_Valid() || Get_StdDev() <= 0.0 )
+	if( is_Valid() && Get_StdDev() > 0.0 )
 	{
-		return( false );
-	}
-
-	SG_UI_Process_Set_Text(_TL("Standardisation"));
+		double	Mean	= Get_Mean  ();
+		double	StdDev	= Get_StdDev();
 
-	double	Mean	= Get_Mean();
-	double	StdDev	= Get_StdDev();
-
-	for(int y=0; y<Get_NY() && SG_UI_Process_Set_Progress(y, Get_NY()); y++)
-	{
 		#pragma omp parallel for
-		for(int x=0; x<Get_NX(); x++)
+		for(int y=0; y<Get_NY(); y++)
 		{
-			if( !is_NoData(x, y) )
+			for(int x=0; x<Get_NX(); x++)
 			{
-				Set_Value(x, y, (asDouble(x, y) - Mean) / StdDev);
+				if( !is_NoData(x, y) )
+				{
+					Set_Value(x, y, (asDouble(x, y) - Mean) / StdDev);
+				}
 			}
 		}
-	}
 
-	SG_UI_Process_Set_Ready();
+		Get_History().Add_Child("GRID_OPERATION", _TL("Standardisation"));
 
-	Get_History().Add_Child(SG_T("GRID_OPERATION"), _TL("Standardisation"));
+		return( true );
+	}
 
 	return( false );
 }
@@ -1045,30 +925,26 @@ bool CSG_Grid::Standardise(void)
 //---------------------------------------------------------
 bool CSG_Grid::DeStandardise(double Mean, double StdDev)
 {
-	if( !is_Valid() || StdDev <= 0.0 )
-	{
-		return( false );
-	}
-
-	SG_UI_Process_Set_Text(_TL("Destandardisation"));
-
-	for(int y=0; y<Get_NY() && SG_UI_Process_Set_Progress(y, Get_NY()); y++)
+	if( is_Valid() && StdDev > 0.0 )
 	{
 		#pragma omp parallel for
-		for(int x=0; x<Get_NX(); x++)
+		for(int y=0; y<Get_NY(); y++)
 		{
-			if( !is_NoData(x, y) )
+			for(int x=0; x<Get_NX(); x++)
 			{
-				Set_Value(x, y, Mean + asDouble(x, y) * StdDev);
+				if( !is_NoData(x, y) )
+				{
+					Set_Value(x, y, Mean + asDouble(x, y) * StdDev);
+				}
 			}
 		}
-	}
 
-	SG_UI_Process_Set_Ready();
+		Get_History().Add_Child("GRID_OPERATION", _TL("Destandardisation"));
 
-	Get_History().Add_Child(SG_T("GRID_OPERATION"), _TL("Destandardisation"));
+		return( true );
+	}
 
-	return( true );
+	return( false );
 }
 
 
@@ -1079,42 +955,44 @@ bool CSG_Grid::DeStandardise(double Mean, double StdDev)
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
-int CSG_Grid::Get_Gradient_NeighborDir(int x, int y, bool bMustBeLower)	const
+/**
+  * Returns the direction to which the downward gradient is
+  * steepest. This implements the Deterministic 8 (D8) algorithm
+  * for identifying a single flow direction based on elevation
+  * data. Direction is numbered clock-wise beginning with 0 for
+  * the North. If no direction can be identified result will be a -1.
+  * If 'bDown' is not true the cell that the direction is pointing
+  * to might have a higher value than the center cell. If 'bNoEdges'
+  * is true a -1 will be returned for all cells that are at the
+  * edge of the data area.
+*/
+//---------------------------------------------------------
+int CSG_Grid::Get_Gradient_NeighborDir(int x, int y, bool bDown, bool bNoEdges)	const
 {
-	int		i, ix, iy, Direction;
-	double	z, dz, dzMax;
-
-	Direction	= -1;
+	int	Direction	= -1;
 
 	if( is_InGrid(x, y) )
 	{
-		z		= asDouble(x, y);
-		dzMax	= 0.0;
+		double	z	= asDouble(x, y), dzMax	= 0.0;
 
-		for(i=0; i<8; i++)
+		for(int i=0; i<8; i++)
 		{
-			ix	= m_System.Get_xTo(i, x);
-			iy	= m_System.Get_yTo(i, y);
+			int	ix	= m_System.Get_xTo(i, x);
+			int	iy	= m_System.Get_yTo(i, y);
 
-			if( !is_InGrid(ix, iy) )
+			if( is_InGrid(ix, iy) )
 			{
-				if( 1 )	// flag 'bStopOnNoData'
+				double	dz	= (z - asDouble(ix, iy)) / m_System.Get_Length(i);
+
+				if( (!bDown || dz > 0.0) && (Direction < 0 || dzMax < dz) )
 				{
-					return( -1 );
+					dzMax		= dz;
+					Direction	= i;
 				}
 			}
-			else
+			else if( bNoEdges )
 			{
-				dz	= (z - asDouble(ix, iy)) / m_System.Get_Length(i);
-
-				if( (bMustBeLower && dz > 0.0) || !bMustBeLower )
-				{
-					if( Direction < 0 || (dz > dzMax) )
-					{
-						Direction	= i;
-						dzMax		= dz;
-					}
-				}
+				return( -1 );
 			}
 		}
 	}
@@ -1123,54 +1001,47 @@ int CSG_Grid::Get_Gradient_NeighborDir(int x, int y, bool bMustBeLower)	const
 }
 
 //---------------------------------------------------------
-bool CSG_Grid::Get_Gradient(int x, int y, double &Decline, double &Azimuth) const
+/**
+  * Calculates the gradient of a cell interpreting all grid cell values
+  * as elevation surface. Calculation uses the formulas proposed
+  * by Zevenbergen & Thorne (1986).
+*/
+//---------------------------------------------------------
+bool CSG_Grid::Get_Gradient(int x, int y, double &Incline, double &Azimuth) const
 {
-	int		i, ix, iy, iDir;
-	double	z, zm[4], G, H;
-
 	if( is_InGrid(x, y) )
 	{
-		z		= asDouble(x, y);
+		double	z	= asDouble(x, y), dz[4];
 
-		for(i=0, iDir=0; i<4; i++, iDir+=2)
+		for(int i=0, iDir=0; i<4; i++, iDir+=2)
 		{
-			ix		= m_System.Get_xTo(iDir, x);
-			iy		= m_System.Get_yTo(iDir, y);
+			int	ix	= m_System.Get_xTo(iDir, x);
+			int	iy	= m_System.Get_yTo(iDir, y);
 
 			if( is_InGrid(ix, iy) )
 			{
-				zm[i]	= asDouble(ix, iy) - z;
+				dz[i]	= asDouble(ix, iy) - z;
+			}
+			else if( is_InGrid(ix = m_System.Get_xFrom(iDir, x), iy = m_System.Get_yFrom(iDir, y)) )
+			{
+				dz[i]	= z - asDouble(ix, iy);
 			}
 			else
 			{
-				ix		= m_System.Get_xFrom(iDir, x);
-				iy		= m_System.Get_yFrom(iDir, y);
-
-				if( is_InGrid(ix, iy) )
-				{
-					zm[i]	= z - asDouble(ix, iy);
-				}
-				else
-				{
-					zm[i]	= 0.0;
-				}
+				dz[i]	= 0.0;
 			}
 		}
 
-		G		= (zm[0] - zm[2]) / (2.0 * Get_Cellsize());
-        H		= (zm[1] - zm[3]) / (2.0 * Get_Cellsize());
+		double G	= (dz[0] - dz[2]) / (2.0 * m_System.Get_Cellsize());
+        double H	= (dz[1] - dz[3]) / (2.0 * m_System.Get_Cellsize());
 
-		Decline	= atan(sqrt(G*G + H*H));
-
-		if( G != 0.0 )
-			Azimuth	= M_PI_180 + atan2(H, G);
-		else
-			Azimuth	= H > 0.0 ? M_PI_270 : (H < 0.0 ? M_PI_090 : -1.0);
+		Incline	= atan(sqrt(G*G + H*H));
+		Azimuth	= G != 0.0 ? M_PI_180 + atan2(H, G) : H > 0.0 ? M_PI_270 : H < 0.0 ? M_PI_090 : -1.0;
 
 		return( true );
 	}
 
-	Decline	= 0.0;
+	Incline	=  0.0;
 	Azimuth	= -1.0;
 
 	return( false );
diff --git a/src/saga_core/saga_api/grid_pyramid.cpp b/src/saga_core/saga_api/grid_pyramid.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_api/grid_pyramid.h b/src/saga_core/saga_api/grid_pyramid.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_api/grid_system.cpp b/src/saga_core/saga_api/grid_system.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_api/mat_formula.cpp b/src/saga_core/saga_api/mat_formula.cpp
old mode 100644
new mode 100755
index ac1ef1f..9e15b38
--- a/src/saga_core/saga_api/mat_formula.cpp
+++ b/src/saga_core/saga_api/mat_formula.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: mat_formula.cpp 2451 2015-03-19 16:59:41Z oconrad $
+ * Version $Id: mat_formula.cpp 2779 2016-02-10 16:06:24Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -166,6 +166,30 @@ static double f_fmod(double x, double val)
 }
 
 //---------------------------------------------------------
+static double f_rand_u(double min, double max)
+{
+	return( CSG_Random::Get_Uniform(min, max) );
+}
+
+//---------------------------------------------------------
+static double f_rand_g(double mean, double stdv)
+{
+	return( CSG_Random::Get_Gaussian(mean, stdv) );
+}
+
+//---------------------------------------------------------
+static double f_and(double x, double y)
+{
+	return( x != 0.0 && y != 0.0 ? 1.0 : 0.0 );
+}
+
+//---------------------------------------------------------
+static double f_or(double x, double y)
+{
+	return( x != 0.0 || y != 0.0 ? 1.0 : 0.0 );
+}
+
+//---------------------------------------------------------
 static double f_ifelse(double condition, double x, double y)
 {
 	return( condition ? x : y );
@@ -182,17 +206,17 @@ static double f_ifelse(double condition, double x, double y)
 //---------------------------------------------------------
 static CSG_Formula::TSG_Formula_Item gSG_Functions[MAX_CTABLE]	=
 {
-	{SG_T("exp"   ),                      exp     , 1, 0},	//  1
-	{SG_T("ln"    ),                      log     , 1, 0},	//  2
-	{SG_T("sin"   ),                      sin     , 1, 0},	//  3
-	{SG_T("cos"   ),                      cos     , 1, 0},	//  4
-	{SG_T("tan"   ),                      tan     , 1, 0},	//  5
-	{SG_T("asin"  ),                      asin    , 1, 0},	//  6
-	{SG_T("acos"  ),                      acos    , 1, 0},	//  7
-	{SG_T("atan"  ),                      atan    , 1, 0},	//  8
+	{SG_T("exp"   ), (TSG_PFNC_Formula_1) exp     , 1, 0},	//  1
+	{SG_T("ln"    ), (TSG_PFNC_Formula_1) log     , 1, 0},	//  2
+	{SG_T("sin"   ), (TSG_PFNC_Formula_1) sin     , 1, 0},	//  3
+	{SG_T("cos"   ), (TSG_PFNC_Formula_1) cos     , 1, 0},	//  4
+	{SG_T("tan"   ), (TSG_PFNC_Formula_1) tan     , 1, 0},	//  5
+	{SG_T("asin"  ), (TSG_PFNC_Formula_1) asin    , 1, 0},	//  6
+	{SG_T("acos"  ), (TSG_PFNC_Formula_1) acos    , 1, 0},	//  7
+	{SG_T("atan"  ), (TSG_PFNC_Formula_1) atan    , 1, 0},	//  8
 	{SG_T("atan2" ), (TSG_PFNC_Formula_1) f_atan2 , 2, 0},	//  9
-	{SG_T("abs"   ),                      fabs    , 1, 0},	// 10
-	{SG_T("sqrt"  ),                      sqrt    , 1, 0},	// 11
+	{SG_T("abs"   ), (TSG_PFNC_Formula_1) fabs    , 1, 0},	// 10
+	{SG_T("sqrt"  ), (TSG_PFNC_Formula_1) sqrt    , 1, 0},	// 11
 	{SG_T("gt"    ), (TSG_PFNC_Formula_1) f_gt    , 2, 0},	// 12
 	{SG_T("lt"    ), (TSG_PFNC_Formula_1) f_lt    , 2, 0},	// 13
 	{SG_T("eq"    ), (TSG_PFNC_Formula_1) f_eq    , 2, 0},	// 14
@@ -200,10 +224,14 @@ static CSG_Formula::TSG_Formula_Item gSG_Functions[MAX_CTABLE]	=
 	{SG_T("int"   ), (TSG_PFNC_Formula_1) f_int   , 1, 0},	// 16
 	{SG_T("mod"   ), (TSG_PFNC_Formula_1) f_fmod  , 2, 0},	// 17
 	{SG_T("ifelse"), (TSG_PFNC_Formula_1) f_ifelse, 3, 0},	// 18
-	{SG_T("log"   ),                      log10   , 1, 0},	// 19
+	{SG_T("log"   ), (TSG_PFNC_Formula_1) log10   , 1, 0},	// 19
 	{SG_T("pow"   ), (TSG_PFNC_Formula_1) f_pow   , 2, 0},	// 20
-	{SG_T("sqr"   ), (TSG_PFNC_Formula_1) f_sqr   , 1, 0},	// 11
-	{NULL          ,                      NULL    , 0, 0}
+	{SG_T("sqr"   ), (TSG_PFNC_Formula_1) f_sqr   , 1, 0},	// 21
+	{SG_T("rand_u"), (TSG_PFNC_Formula_1) f_rand_u, 2, 1},	// 22
+	{SG_T("rand_g"), (TSG_PFNC_Formula_1) f_rand_g, 2, 1},	// 23
+	{SG_T("and"   ), (TSG_PFNC_Formula_1) f_and   , 2, 0},	// 24
+	{SG_T("or"    ), (TSG_PFNC_Formula_1) f_or    , 2, 0},	// 25
+	{          NULL,                          NULL, 0, 0}
 };
 
 
@@ -250,39 +278,91 @@ bool CSG_Formula::Destroy(void)
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
-CSG_String CSG_Formula::Get_Help_Operators(void)
+CSG_String CSG_Formula::Get_Help_Operators(bool bHTML, const CSG_String Additional[][2])
 {
-	return( SG_Translate(
-		SG_T("+ Addition\n")
-		SG_T("- Subtraction\n")
-		SG_T("* Multiplication\n")
-		SG_T("/ Division\n")
-		SG_T("^ power\n")
-		SG_T("abs(x)          - absolute value\n")
-		SG_T("sqr(x)          - square\n")
-		SG_T("sqrt(x)         - square root\n")
-		SG_T("ln(x)           - natural logarithm\n")
-		SG_T("log(x)          - base 10 logarithm\n")
-		SG_T("exp(x)          - exponential\n")
-		SG_T("pow(x, y)       - power with mantisse x and exponent y\n")
-		SG_T("sin(x)          - sine\n")
-		SG_T("cos(x)          - cosine\n")
-		SG_T("tan(x)          - tangent\n")
-		SG_T("asin(x)         - arcsine\n")
-		SG_T("acos(x)         - arccosine\n")
-		SG_T("atan(x)         - arctangent\n")
-		SG_T("atan2(x, y)     - arctangent of x/y\n")
-		SG_T("gt(x, y)        - the result is 1.0, if x is greater than y else 0.0\n")
-		SG_T("x > y           - the result is 1.0, if x is greater than y else 0.0\n")
-		SG_T("lt(x, y)        - the result is 1.0, if x is less than y, else 0.0\n")
-		SG_T("x < y           - the result is 1.0, if x is less than y, else 0.0\n")
-		SG_T("eq(x, y)        - the result is 1.0, if x equals y, else 0.0\n")
-		SG_T("x = y           - the result is 1.0, if x equals y, else 0.0\n")
-		SG_T("mod(x, y)       - returns the floating point remainder of x/y\n")
-		SG_T("ifelse(c, x, y) - if condition c is not 0.0 the result is x, else y\n")
-		SG_T("int(x)          - integer part of floating point value x\n")
-		SG_T("pi()            - returns the value of Pi\n")
-	));
+	const int	nOperators	= 33;
+
+	CSG_String	Operators[nOperators][2]	=
+	{
+		{	"+"              , _TL("Addition")	},
+		{	"-"              , _TL("Subtraction")	},
+		{	"*"              , _TL("Multiplication")	},
+		{	"/"              , _TL("Division")	},
+		{	"abs(x)"         , _TL("Absolute Value")	},
+		{	"mod(x, y)"      , _TL("Returns the floating point remainder of x/y")	},
+		{	"int(x)"         , _TL("Returns the integer part of floating point value x")	},
+		{	"sqr(x)"         , _TL("Square")	},
+		{	"sqrt(x)"        , _TL("Square Root")	},
+		{	"exp(x)"         , _TL("Exponential")	},
+		{	"pow(x, y)"      , _TL("Returns x raised to the power of y")	},
+		{	"x ^ y"          , _TL("Returns x raised to the power of y")	},
+		{	"ln(x)"          , _TL("Natural Logarithm")	},
+		{	"log(x)"         , _TL("Base 10 Logarithm")	},
+		{	"pi()"           , _TL("Returns the value of Pi")	},
+		{	"sin(x)"         , _TL("Sine")	},
+		{	"cos(x)"         , _TL("Cosine")	},
+		{	"tan(x)"         , _TL("Tangent")	},
+		{	"asin(x)"        , _TL("Arcsine")	},
+		{	"acos(x)"        , _TL("Arccosine")	},
+		{	"atan(x)"        , _TL("Arctangent")	},
+		{	"atan2(x, y)"    , _TL("Arctangent of x/y")	},
+		{	"gt(x, y)"       , _TL("Returns true (1), if x is greater than y, else false (0)")	},
+		{	"x > y"          , _TL("Returns true (1), if x is greater than y, else false (0)")	},
+		{	"lt(x, y)"       , _TL("Returns true (1), if x is less than y, else false (0)")	},
+		{	"x < y"          , _TL("Returns true (1), if x is less than y, else false (0)")	},
+		{	"eq(x, y)"       , _TL("Returns true (1), if x equals y, else false (0)")	},
+		{	"x = y"          , _TL("Returns true (1), if x equals y, else false (0)")	},
+		{	"and(x, y)"      , _TL("Returns true (1), if both x and y are true (i.e. not 0)")	},
+		{	"or(x, y)"       , _TL("Returns true (1), if at least one of both x and y is true (i.e. not 0)")	},
+		{	"ifelse(c, x, y)", _TL("Returns x, if condition c is true (i.e. not 0), else y")	},
+		{	"rand_u(x, y)"   , _TL("Random number, uniform distribution with minimum x and maximum y")	},
+		{	"rand_g(x, y)"   , _TL("Random number, Gaussian distribution with mean x and standard deviation y")	}
+	};
+
+	//-----------------------------------------------------
+	int			i;
+	CSG_String	s;
+
+	if( bHTML )
+	{
+		s	+= "<table border=\"0\">";
+
+		for(i=0; i<nOperators; i++)
+		{
+			CSG_String	op	= Operators[i][0]; op.Replace("<", "<");
+
+			s	+= "<tr><td><b>" + op + "</b></td><td>" + Operators[i][1] + "</td></tr>";
+		}
+
+		if( Additional )
+		{
+			for(i=0; !Additional[i][0].is_Empty(); i++)
+			{
+				CSG_String	op	= Additional[i][0]; op.Replace("<", "<");
+
+				s	+= "<tr><td><b>" + op + "</b></td><td>" + Additional[i][1] + "</td></tr>";
+			}
+		}
+
+		s	+= "</table>";
+	}
+	else
+	{
+		for(i=0; i<nOperators; i++)
+		{
+			s	+= Operators[i][0] + " - " + Operators[i][1] + "\n";
+		}
+
+		if( Additional )
+		{
+			for(i=0; !Additional[i][0].is_Empty(); i++)
+			{
+				s	+= Additional[i][0] + " - " + Additional[i][1] + "\n";
+			}
+		}
+	}
+
+	return( s );
 }
 
 //---------------------------------------------------------
@@ -290,7 +370,7 @@ bool CSG_Formula::Get_Error(CSG_String &Message)
 {
 	if( m_bError )
 	{
-		Message	 = CSG_String::Format(SG_T("%s %s %d\n"), _TL("Error in formula"), _TL("at position"), m_Error_Position);
+		Message	 = CSG_String::Format("%s %s %d\n", _TL("Error in formula"), _TL("at position"), m_Error_Position);
 
 		if( m_Error_Position < 0 || m_Error_Position >= (int)m_sFormula.Length() )
 		{
@@ -298,14 +378,14 @@ bool CSG_Formula::Get_Error(CSG_String &Message)
 		}
 		else
 		{
-			Message	+= m_sFormula.Left (m_Error_Position) + SG_T(" [")
-					+  m_sFormula      [m_Error_Position] + SG_T("] ")
+			Message	+= m_sFormula.Left (m_Error_Position) + " ["
+					+  m_sFormula      [m_Error_Position] + "] "
 					+  m_sFormula.Right(m_sFormula.Length() - (m_Error_Position + 1));
 		}
 
-		Message	+= SG_T("\n");
+		Message	+= "\n";
 		Message	+= m_sError;
-		Message	+= SG_T("\n");
+		Message	+= "\n";
 
 		return( true );
 	}
@@ -500,25 +580,25 @@ double CSG_Formula::_Get_Value(const double *Parameters, TMAT_Formula func) cons
 
 		case '>':
 			y		= *--bufp;
-			result	= y < *(--bufp) ? 1.0 : 0.0;
+			result	= y <  *(--bufp) ? 1.0 : 0.0;
 			*bufp++	= result;
 			break;
 
 		case '<':
 			y		= *--bufp;
-			result	= y > *(--bufp) ? 1.0 : 0.0;
+			result	= y >  *(--bufp) ? 1.0 : 0.0;
 			*bufp++	= result;
 			break;
 
 		case '&':
 			y		= *--bufp;
-			result	= y != 0.0 && *(--bufp) != 0.0 ? 1.0 : 0.0;
+			result	= y && *(--bufp) ? 1.0 : 0.0;
 			*bufp++	= result;
 			break;
 
 		case '|':
 			y		= *--bufp;
-			result	= y != 0.0 || *(--bufp) != 0.0 ? 1.0 : 0.0;
+			result	= y || *(--bufp) ? 1.0 : 0.0;
 			*bufp++	= result;
 			break;
 
@@ -531,20 +611,20 @@ double CSG_Formula::_Get_Value(const double *Parameters, TMAT_Formula func) cons
 
 			case 1:
 				x		= *--bufp;
-				*bufp++	= gSG_Functions[*function++].f(x);
+				*bufp++	= ((TSG_PFNC_Formula_1)gSG_Functions[*function++].f)(x);
 				break;
 
 			case 2:
 				y		= *--bufp;
 				x		= *--bufp;
-				*bufp++	=((TSG_PFNC_Formula_2)gSG_Functions[*function++].f)(x, y);
+				*bufp++	= ((TSG_PFNC_Formula_2)gSG_Functions[*function++].f)(x, y);
 				break;
 
 			case 3:
 				z		= *--bufp;
 				y		= *--bufp;
 				x		= *--bufp;
-				*bufp++	=((TSG_PFNC_Formula_3)gSG_Functions[*function++].f)(x, y, z);
+				*bufp++	= ((TSG_PFNC_Formula_3)gSG_Functions[*function++].f)(x, y, z);
 				break;
 
 			default:
@@ -602,43 +682,6 @@ const SG_Char * CSG_Formula::Get_Used_Variables(void)
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
-// If the function exists, it is deleted and a non-negative
-// value is returned. Otherwise, -1 is returned.
-// Original library functions may not be deleted.
-//
-int CSG_Formula::Del_Function(SG_Char *name)
-{
-	int		place	 = _Get_Function(name);
-
-	if( place == -1 )
-	{
-		return( -1 );	// there is an error message already
-	}
-
-	if( place < STD_FNC_NUM )
-	{
-		_Set_Error(_TL("original functions may not be deleted"));
-
-		return( -1 );
-	}
-
-	free(gSG_Functions[place].name);
-
-	TSG_Formula_Item	*pFunction;
-
-	for(pFunction=&gSG_Functions[place]; pFunction->f!=NULL; pFunction++)
-	{
-		pFunction->name		= (pFunction + 1)->name;
-		pFunction->f		= (pFunction + 1)->f;
-		pFunction->n_pars	= (pFunction + 1)->n_pars;
-	}
-
-	_Set_Error();
-
-	return( (int)(pFunction - gSG_Functions) );
-}
-
-//---------------------------------------------------------
 // int varying;  Does the result of the function vary
 // even when the parameters stay the same?
 // varying = 1 for e.g. random - number generators.
@@ -679,16 +722,7 @@ int CSG_Formula::Add_Function(const SG_Char *name, TSG_PFNC_Formula_1 f, int n_p
 	}
 	else 
 	{
-		where->name	=(SG_Char *)calloc(SG_STR_LEN(name) + 1, sizeof(SG_Char));
-
-		if( where->name == NULL )
-		{
-			_Set_Error(_TL("no memory"));
-
-			return( 0 );
-		}
-
-		SG_STR_CPY(where->name, name);
+		where->name		= name;
 		where->f		= f;
 		where->varying	= varying;
 		where->n_pars	= n_pars;
diff --git a/src/saga_core/saga_api/mat_grid_radius.cpp b/src/saga_core/saga_api/mat_grid_radius.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_api/mat_indexing.cpp b/src/saga_core/saga_api/mat_indexing.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_api/mat_mRMR.cpp b/src/saga_core/saga_api/mat_mRMR.cpp
old mode 100644
new mode 100755
index 90f0ef5..1231d5e
--- a/src/saga_core/saga_api/mat_mRMR.cpp
+++ b/src/saga_core/saga_api/mat_mRMR.cpp
@@ -92,6 +92,15 @@
 //---------------------------------------------------------
 #define DELETE_ARRAY(p)	if( p )	{	delete[]p;	p	= NULL;	}
 
+//---------------------------------------------------------
+enum ESG_mRMR_Selection
+{
+	SG_mRMR_SELECTION_RANK	= 0,
+	SG_mRMR_SELECTION_INDEX,
+	SG_mRMR_SELECTION_NAME,
+	SG_mRMR_SELECTION_SCORE
+};
+
 
 ///////////////////////////////////////////////////////////
 //														 //
@@ -256,17 +265,17 @@ int CSG_mRMR::Get_Count	(void) const
 
 int CSG_mRMR::Get_Index(int i) const
 {
-	return( m_pSelection->Get_Record(i)->asInt   (SG_mRMR_SELFLD_INDEX) );
+	return( m_pSelection->Get_Record(i)->asInt   (SG_mRMR_SELECTION_INDEX) );
 }
 
 CSG_String CSG_mRMR::Get_Name(int i) const
 {
-	return( m_pSelection->Get_Record(i)->asString(SG_mRMR_SELFLD_NAME ) );
+	return( m_pSelection->Get_Record(i)->asString(SG_mRMR_SELECTION_NAME ) );
 }
 
 double CSG_mRMR::Get_Score(int i) const
 {
-	return( m_pSelection->Get_Record(i)->asDouble(SG_mRMR_SELFLD_SCORE) );
+	return( m_pSelection->Get_Record(i)->asDouble(SG_mRMR_SELECTION_SCORE) );
 }
 
 
@@ -524,10 +533,10 @@ bool CSG_mRMR::Discretize(double Threshold)
 #define ADD_FEATURE(rank, score)	{\
 	CSG_Table_Record	*pFeature	= m_pSelection->Add_Record();\
 	\
-	pFeature->Set_Value(SG_mRMR_SELFLD_RANK , rank + 1);\
-	pFeature->Set_Value(SG_mRMR_SELFLD_INDEX, feaInd[rank]);\
-	pFeature->Set_Value(SG_mRMR_SELFLD_NAME , m_VarNames[feaInd[rank]]);\
-	pFeature->Set_Value(SG_mRMR_SELFLD_SCORE, score);\
+	pFeature->Set_Value(SG_mRMR_SELECTION_RANK , rank + 1);\
+	pFeature->Set_Value(SG_mRMR_SELECTION_INDEX, feaInd[rank]);\
+	pFeature->Set_Value(SG_mRMR_SELECTION_NAME , m_VarNames[feaInd[rank]]);\
+	pFeature->Set_Value(SG_mRMR_SELECTION_SCORE, score);\
 	\
 	ADD_MESSAGE(CSG_String::Format(SG_T("%d \t %d \t %s \t %5.3f"),\
 		rank + 1, feaInd[rank], m_VarNames[feaInd[rank]].c_str(), score)\
diff --git a/src/saga_core/saga_api/mat_matrix.cpp b/src/saga_core/saga_api/mat_matrix.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_api/mat_regression.cpp b/src/saga_core/saga_api/mat_regression.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_api/mat_regression_multiple.cpp b/src/saga_core/saga_api/mat_regression_multiple.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_api/mat_regression_weighted.cpp b/src/saga_core/saga_api/mat_regression_weighted.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_api/mat_spline.cpp b/src/saga_core/saga_api/mat_spline.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_api/mat_tools.cpp b/src/saga_core/saga_api/mat_tools.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_api/mat_tools.h b/src/saga_core/saga_api/mat_tools.h
old mode 100644
new mode 100755
index 4ebbf12..0a2090c
--- a/src/saga_core/saga_api/mat_tools.h
+++ b/src/saga_core/saga_api/mat_tools.h
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: mat_tools.h 2589 2015-09-18 15:40:49Z oconrad $
+ * Version $Id: mat_tools.h 2779 2016-02-10 16:06:24Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -500,7 +500,7 @@ private:
 
 	int							m_maxRadius, m_nPoints, *m_nPoints_R;
 
-	typedef struct
+	typedef struct SSG_Grid_Radius
 	{
 		int						x, y;
 
@@ -828,7 +828,7 @@ private:
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
-enum
+enum ESG_Classify_Supervised
 {
 	SG_CLASSIFY_SUPERVISED_BinaryEncoding	= 0,
 	SG_CLASSIFY_SUPERVISED_ParallelEpiped,
@@ -866,7 +866,11 @@ public:
 	int							Get_Feature_Count			(void)			{	return( m_nFeatures );				}
 
 	int							Get_Class_Count				(void)			{	return( m_nClasses );				}
-	const CSG_String &			Get_Class_ID				(int iClass)	{	return( m_pClasses[iClass]->m_ID );	}
+
+	const CSG_String &			Get_Class_ID				(int iClass)				{	return( m_pClasses[iClass]->m_ID );	}
+	double						Get_Class_Mean				(int iClass, int iFeature)	{	return( m_pClasses[iClass]->m_Mean[iFeature] );	}
+	double						Get_Class_Minimum			(int iClass, int iFeature)	{	return( m_pClasses[iClass]->m_Min [iFeature] );	}
+	double						Get_Class_Maximum			(int iClass, int iFeature)	{	return( m_pClasses[iClass]->m_Max [iFeature] );	}
 
 	int							Get_Class					(const CSG_String &Class_ID);
 	bool						Get_Class					(const CSG_Vector &Features, int &Class, double &Quality, int Method);
@@ -949,15 +953,6 @@ enum ESG_mRMR_Method
 	SG_mRMR_Method_MIQ			// Mutual Information Quotient (MIQ)
 };
 
-//---------------------------------------------------------
-enum
-{
-	SG_mRMR_SELFLD_RANK	= 0,
-	SG_mRMR_SELFLD_INDEX,
-	SG_mRMR_SELFLD_NAME,
-	SG_mRMR_SELFLD_SCORE
-};
-
 
 ///////////////////////////////////////////////////////////
 //                                                       //
@@ -1480,12 +1475,11 @@ public:
 
 	bool						Destroy				(void);
 
-	static CSG_String			Get_Help_Operators	(void);
+	static CSG_String			Get_Help_Operators	(bool bHTML = true, const CSG_String Additional[][2] = NULL);
 
 	bool						Get_Error			(CSG_String &Message);
 
 	int							Add_Function		(const SG_Char *Name, TSG_PFNC_Formula_1 f, int N_of_Pars, int Varying);
-	int							Del_Function		(SG_Char *Name);
 
 	bool						Set_Formula			(const CSG_String &Formula);
 	CSG_String					Get_Formula			(void)	const	{	return( m_sFormula );	}
@@ -1502,12 +1496,12 @@ public:
 
 
 	//-----------------------------------------------------
-	typedef struct 
+	typedef struct SSG_Formula_Item
 	{
-		SG_Char					*name;
-		TSG_PFNC_Formula_1		f;			
-		int						n_pars;		
-		int						varying;	// Does the result of the function vary even when the parameters stay the same? varying = 1 for e.g. random - number generators.
+		const SG_Char		*name;
+		TSG_PFNC_Formula_1	f;			
+		int					n_pars;		
+		int					varying;	// Does the result of the function vary even when the parameters stay the same? varying = 1 for e.g. random - number generators.
 	}
 	TSG_Formula_Item;
 
@@ -1515,7 +1509,7 @@ public:
 private:
 
 	//-----------------------------------------------------
-	typedef struct 
+	typedef struct SMAT_Formula
 	{
 		SG_Char					*code;
 		double					*ctable;
diff --git a/src/saga_core/saga_api/mat_trend.cpp b/src/saga_core/saga_api/mat_trend.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_api/metadata.cpp b/src/saga_core/saga_api/metadata.cpp
old mode 100644
new mode 100755
index 4dc450c..74b8ff7
--- a/src/saga_core/saga_api/metadata.cpp
+++ b/src/saga_core/saga_api/metadata.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: metadata.cpp 2291 2014-10-16 13:46:55Z oconrad $
+ * Version $Id: metadata.cpp 2777 2016-02-10 15:04:57Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -63,6 +63,7 @@
 #include <wx/xml/xml.h>
 #include <wx/wfstream.h>
 #include <wx/sstream.h>
+#include <wx/protocol/http.h>
 
 #include "metadata.h"
 #include "table.h"
@@ -173,6 +174,17 @@ void CSG_MetaData::Destroy(void)
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
+bool CSG_MetaData::is_Valid(void)	const
+{
+	return( this != NULL );
+}
+
+
+///////////////////////////////////////////////////////////
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
 CSG_MetaData * CSG_MetaData::Add_Child(void)
 {
 	return( Ins_Child(-1) );
@@ -696,6 +708,15 @@ bool CSG_MetaData::Load(const CSG_String &File, const SG_Char *Extension)
 {
 	Destroy();
 
+	//-----------------------------------------------------
+	if( File.Find("http://") == 0 )
+	{
+		CSG_String	s(File.Right(File.Length() - CSG_String("http://").Length()));
+
+		return( Load_HTTP(s.BeforeFirst('/'), s.AfterFirst('/')) );
+	}
+
+	//-----------------------------------------------------
 	wxXmlDocument	XML;
 
 	if( SG_File_Exists(SG_File_Make_Path(NULL, File, Extension)) && XML.Load(SG_File_Make_Path(NULL, File, Extension).c_str()) )
@@ -705,6 +726,7 @@ bool CSG_MetaData::Load(const CSG_String &File, const SG_Char *Extension)
 		return( true );
 	}
 
+	//-----------------------------------------------------
 	return( false );
 }
 
@@ -834,7 +856,64 @@ void CSG_MetaData::_Save(wxXmlNode *pNode) const
 
 ///////////////////////////////////////////////////////////
 //														 //
-//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
+bool CSG_MetaData::Load_HTTP(const CSG_String &Server, const CSG_String &Path, const SG_Char *Username, const SG_Char *Password)
+{
+	Destroy();
+
+	//-----------------------------------------------------
+	wxHTTP	HTTP;
+
+	if( Username && *Username )	{	HTTP.SetUser    (Username);	}
+	if( Password && *Password )	{	HTTP.SetPassword(Password);	}
+
+	wxString	s	= Server.c_str();
+
+	if( s.Find("http://") == 0 )
+	{
+		s	= s.Right(s.Length() - wxString("http://").Length());
+	}
+
+	if( !HTTP.Connect(s) )
+	{
+		return( false );
+	}
+
+	//-----------------------------------------------------
+	s	= Path.c_str();
+
+	if( s[0] != '/' )
+	{
+		s.Prepend("/");
+	}
+
+	wxInputStream	*pStream	= HTTP.GetInputStream(s);
+
+	if( !pStream )
+	{
+		return( false );
+	}
+
+	wxXmlDocument	XML;
+
+	if( XML.Load(*pStream) )
+	{
+		_Load(XML.GetRoot());
+
+		delete(pStream);
+
+		return( true );
+	}
+
+	delete(pStream);
+
+	return( false );
+}
+
+
+///////////////////////////////////////////////////////////
 //														 //
 ///////////////////////////////////////////////////////////
 
diff --git a/src/saga_core/saga_api/metadata.h b/src/saga_core/saga_api/metadata.h
old mode 100644
new mode 100755
index 2f64a1d..e5b3320
--- a/src/saga_core/saga_api/metadata.h
+++ b/src/saga_core/saga_api/metadata.h
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: metadata.h 2266 2014-10-01 15:00:52Z oconrad $
+ * Version $Id: metadata.h 2777 2016-02-10 15:04:57Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -106,6 +106,8 @@ public:
 	bool						Load				(CSG_File &Stream);
 	bool						Save				(CSG_File &Stream)			const;
 
+	bool						Load_HTTP			(const CSG_String &Server, const CSG_String &Path, const SG_Char *Username = NULL, const SG_Char *Password = NULL);
+
 	bool						Load_WKT			(const CSG_String &WKT);
 	bool						Save_WKT			(      CSG_String &WKT)		const;
 
@@ -155,7 +157,7 @@ public:
 	const CSG_MetaData &		operator []			(int Index)					const	{	return( *Get_Child(Index           ) );	}
 	const CSG_MetaData &		operator []			(const CSG_String &Name)	const	{	return( *Get_Child(_Get_Child(Name)) );	}
 
-	bool						is_Valid			(void)						const	{	return( this != NULL );					}
+	bool						is_Valid			(void)						const;
 
 	int							Get_Property_Count	(void)						const	{	return( m_Prop_Names.Get_Count() );	}
 	const CSG_String &			Get_Property_Name	(int i)						const	{	return( m_Prop_Names [i] );			}
diff --git a/src/saga_core/saga_api/module.cpp b/src/saga_core/saga_api/module.cpp
old mode 100644
new mode 100755
index 3850c94..c706237
--- a/src/saga_core/saga_api/module.cpp
+++ b/src/saga_core/saga_api/module.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: module.cpp 2670 2015-11-02 15:36:08Z oconrad $
+ * Version $Id: module.cpp 2774 2016-02-05 15:38:35Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -1184,8 +1184,8 @@ void _Add_XML(CSG_MetaData *pParent, CSG_Parameter *pParameter, CSG_String ID =
 }
 
 //---------------------------------------------------------
-#define SUMMARY_ADD_STR(label, value)	s += CSG_String::Format(SG_T("<tr><td valign=\"top\">%s</td><td valign=\"top\">%s</td></tr>"), label, value)
-#define SUMMARY_ADD_INT(label, value)	s += CSG_String::Format(SG_T("<tr><td valign=\"top\">%s</td><td valign=\"top\">%d</td></tr>"), label, value)
+#define SUMMARY_ADD_STR(label, value)	CSG_String::Format("<tr><td valign=\"top\"><b>%s</b></td><td valign=\"top\">%s</td></tr>", label, value)
+#define SUMMARY_ADD_INT(label, value)	CSG_String::Format("<tr><td valign=\"top\"><b>%s</b></td><td valign=\"top\">%d</td></tr>", label, value)
 
 #define SUMMARY_DO_ADD	(SG_UI_Get_Window_Main() ? Parameters(i)->do_UseInGUI() : Parameters(i)->do_UseInCMD())
 
@@ -1206,12 +1206,12 @@ CSG_String CSG_Module::Get_Summary(bool bParameters, const CSG_String &Menu, con
 		m.Add_Property(SG_XML_MODULE_ATT_AUTHOR, Get_Author     ());
 		m.Add_Child   (SG_XML_DESCRIPTION      , Get_Description());
 		m.Add_Child   (SG_XML_MENU             , Get_MenuPath   ());
-		m.Add_Child   (SG_XML_SPEC_ATT_GRID    , is_Grid        () ? SG_T("true") : SG_T("false"));
-		m.Add_Child   (SG_XML_SPEC_ATT_GRID    , is_Interactive () ? SG_T("true") : SG_T("false"));
+		m.Add_Child   (SG_XML_SPEC_ATT_GRID    , is_Grid        () ? "true" : "false");
+		m.Add_Child   (SG_XML_SPEC_ATT_GRID    , is_Interactive () ? "true" : "false");
 
 	//	CSG_MetaData	*pChild	= m.Add_Child(SG_XML_SPECIFICATION);
-	//	pChild->Add_Property(SG_XML_SPEC_ATT_GRID    , is_Grid        () ? SG_T("true") : SG_T("false"));
-	//	pChild->Add_Property(SG_XML_SPEC_ATT_INTERA  , is_Interactive () ? SG_T("true") : SG_T("false"));
+	//	pChild->Add_Property(SG_XML_SPEC_ATT_GRID    , is_Grid        () ? "true" : "false");
+	//	pChild->Add_Property(SG_XML_SPEC_ATT_INTERA  , is_Interactive () ? "true" : "false");
 
 		if( bParameters )
 		{
@@ -1248,43 +1248,43 @@ CSG_String CSG_Module::Get_Summary(bool bParameters, const CSG_String &Menu, con
 	//-----------------------------------------------------
 	else
 	{
-		s	+= CSG_String::Format(SG_T("<b>%s</b><table border=\"0\">"), _TL("Tool"));
+		s	+= CSG_String::Format("<h4>%s</h4><table border=\"0\">", _TL("Tool"));
 
-		SUMMARY_ADD_STR(_TL("Name"  ), Get_Name  ().c_str());
-		SUMMARY_ADD_STR(_TL("ID"    ), Get_ID    ().c_str());
-		SUMMARY_ADD_STR(_TL("Author"), Get_Author().c_str());
+		s	+= SUMMARY_ADD_STR(_TL("Name"  ), Get_Name  ().c_str());
+		s	+= SUMMARY_ADD_STR(_TL("ID"    ), Get_ID    ().c_str());
+		s	+= SUMMARY_ADD_STR(_TL("Author"), Get_Author().c_str());
 
 		if( is_Interactive() && is_Grid() )
 		{
-			SUMMARY_ADD_STR(_TL("Specification"), CSG_String::Format(SG_T("%s, %s"), _TL("grid"), _TL("interactive")).c_str() );
+			s	+= SUMMARY_ADD_STR(_TL("Specification"), CSG_String::Format("%s, %s", _TL("grid"), _TL("interactive")).c_str() );
 		}
 		else if( is_Interactive() )
 		{
-			SUMMARY_ADD_STR(_TL("Specification"), _TL("interactive"));
+			s	+= SUMMARY_ADD_STR(_TL("Specification"), _TL("interactive"));
 		}
 		else if( is_Grid() )
 		{
-			SUMMARY_ADD_STR(_TL("Specification"), _TL("grid"));
+			s	+= SUMMARY_ADD_STR(_TL("Specification"), _TL("grid"));
 		}
 
 		if( Get_Type() == MODULE_TYPE_Chain )
 		{
-			SUMMARY_ADD_STR(_TL("File"), Get_File_Name().c_str() );
+			s	+= SUMMARY_ADD_STR(_TL("File"), Get_File_Name().c_str() );
 		}
 
 		if( Menu.Length() > 0 )
 		{
 			CSG_String	sMenu(Menu);
 
-			sMenu.Replace(SG_T("|"), SG_T(" <b>></b> "));
+			sMenu.Replace("|", " <b>></b> ");
 
-			SUMMARY_ADD_STR(_TL("Menu"  ), sMenu.c_str());
+			s	+= SUMMARY_ADD_STR(_TL("Menu"  ), sMenu.c_str());
 		}
 
-		s	+= SG_T("</table><hr>");
+		s	+= "</table>";
 
 		//-------------------------------------------------
-		s	+= CSG_String::Format(SG_T("<b>%s</b><br>"), _TL("Description"));
+		s	+= CSG_String::Format("<hr><h4>%s</h4>", _TL("Description"));
 
 		s	+= Description.Length() > 0 ? Description : Get_Description();
 
@@ -1293,8 +1293,8 @@ CSG_String CSG_Module::Get_Summary(bool bParameters, const CSG_String &Menu, con
 		{
 			bool	bFirst, bOptionals	= false;
 
-			s	+= CSG_String::Format(SG_T("<hr><b>%s</b><br>"), _TL("Parameters"));
-			s	+= CSG_String::Format(SG_T("<table border=\"1\" width=\"100%%\" valign=\"top\" cellpadding=\"5\" rules=\"all\"><tr><th>%s</th><th>%s</th><th>%s</th><th>%s</th><th>%s</th></tr>\n"),
+			s	+= CSG_String::Format("<hr><h4>%s</h4>", _TL("Parameters"));
+			s	+= CSG_String::Format("<table border=\"1\" width=\"100%%\" valign=\"top\" cellpadding=\"5\" rules=\"all\"><tr><th>%s</th><th>%s</th><th>%s</th><th>%s</th><th>%s</th></tr>\n",
 					_TL("Name"), _TL("Type"), _TL("Identifier"), _TL("Description"), _TL("Constraints")
 				);
 
@@ -1308,10 +1308,10 @@ CSG_String CSG_Module::Get_Summary(bool bParameters, const CSG_String &Menu, con
 					if( bFirst )
 					{
 						bFirst	= false;
-						s	+= CSG_String::Format(SG_T("<tr><th colspan=\"5\">%s</th></tr>"), _TL("Input"));
+						s	+= CSG_String::Format("<tr><th colspan=\"5\">%s</th></tr>", _TL("Input"));
 					}
 
-					s	+= CSG_String::Format(SG_T("<tr><td>%s%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>"),
+					s	+= CSG_String::Format("<tr><td>%s%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>",
 						pParameter->Get_Name(),
 						pParameter->is_Optional() ? SG_T(" (*)") : SG_T(" "),
 						pParameter->Get_Description(PARAMETER_DESCRIPTION_TYPE).c_str(),
@@ -1374,11 +1374,11 @@ CSG_String CSG_Module::Get_Summary(bool bParameters, const CSG_String &Menu, con
 			}
 
 			//---------------------------------------------
-			s	+= SG_T("</table>");
+			s	+= "</table>";
 
 			if( bOptionals )
 			{
-				s	+= CSG_String::Format(SG_T("(*) <i>%s</i>"), _TL("optional"));
+				s	+= CSG_String::Format("(*) <i>%s</i>", _TL("optional"));
 			}
 		}
 	}
diff --git a/src/saga_core/saga_api/module.h b/src/saga_core/saga_api/module.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_api/module_chain.cpp b/src/saga_core/saga_api/module_chain.cpp
old mode 100644
new mode 100755
index 2269e7a..eac4137
--- a/src/saga_core/saga_api/module_chain.cpp
+++ b/src/saga_core/saga_api/module_chain.cpp
@@ -169,6 +169,11 @@ bool CSG_Module_Chain::Create(const CSG_String &File)
 	Set_Author       (GET_XML_CONTENT(m_Chain, "author"     , _TL("unknown")));
 	Set_Description  (GET_XML_CONTENT(m_Chain, "description", _TL("no description")));
 
+	CSG_String	Description	= Get_Description();
+	Description.Replace("[[", "<");	// support for xml/html tags
+	Description.Replace("]]", ">");
+	Set_Description(Description);
+
 	if( !m_Menu.is_Empty() && (m_Menu.Length() < 2 || m_Menu[1] != ':') )
 	{
 		if( IS_TRUE_PROPERTY(m_Chain["menu"], "absolute") )
@@ -526,39 +531,42 @@ bool CSG_Module_Chain::Data_Finalize(void)
 bool CSG_Module_Chain::Check_Condition(const CSG_MetaData &Condition, CSG_Parameters *pData)
 {
 	//-----------------------------------------------------
-	CSG_String	Type, Value;
+	CSG_String	Type;
 
 	if( !Condition.Cmp_Name("condition") || !Condition.Get_Property("type", Type) )
 	{
 		return( true );
 	}
 
-	if( !Condition.Get_Property("variable", Value) )
+	//-----------------------------------------------------
+	CSG_String	Variable;
+
+	if( !Condition.Get_Property("variable", Variable) )
 	{
-		Value	= Condition.Get_Content();
+		Variable	= Condition.Get_Content();
 	}
 
 	//-----------------------------------------------------
 	if( !Type.CmpNoCase("has_gui"   ) )	// executed from saga_gui ? (tool might offer different parameters if called from saga_cmd, python etc.)
 	{
-		return( IS_TRUE_STRING(Value) ? SG_UI_Get_Window_Main() != NULL : SG_UI_Get_Window_Main() == NULL );
+		return( IS_TRUE_STRING(Variable) ? SG_UI_Get_Window_Main() != NULL : SG_UI_Get_Window_Main() == NULL );
 	}
 
 	//-----------------------------------------------------
 	if( !Type.CmpNoCase("exists"    ) )	// data object exists
 	{
-		CSG_Parameter	*pParameter	= pData->Get_Parameter(Value);
+		CSG_Parameter	*pParameter	= pData->Get_Parameter(Variable);
 
 		return( pParameter && ((pParameter->is_DataObject() && pParameter->asDataObject()) || (pParameter->is_DataObject_List() && pParameter->asList()->Get_Count())) );
 	}
 
 	if( !Type.CmpNoCase("not_exists") )	// data object does not exist
 	{
-		return( pData->Get_Parameter(Value) == NULL || pData->Get_Parameter(Value)->asDataObject() == NULL );
+		return( pData->Get_Parameter(Variable) == NULL || pData->Get_Parameter(Variable)->asDataObject() == NULL );
 	}
 
 	//-----------------------------------------------------
-	CSG_Parameter	*pOption	= Parameters(Value);
+	CSG_Parameter	*pOption	= pData->Get_Parameter(Variable);
 
 	if( pOption == NULL )
 	{
@@ -574,8 +582,8 @@ bool CSG_Module_Chain::Check_Condition(const CSG_MetaData &Condition, CSG_Parame
 
 			if( Condition.Get_Property("value", Value) )
 			{
-				if(      !Type.CmpNoCase("=") || !Type.CmpNoCase("equal"    ) )	{	if( IS_TRUE_STRING(Value) == pOption->asBool() )	{	return( false );	}	}
-				else if( !Type.CmpNoCase("!") || !Type.CmpNoCase("not_equal") )	{	if( IS_TRUE_STRING(Value) != pOption->asBool() )	{	return( false );	}	}
+				if(      !Type.CmpNoCase("=") || !Type.CmpNoCase("equal"    ) )	{	return( (IS_TRUE_STRING(Value) ?  pOption->asBool() : !pOption->asBool()) );	}
+				else if( !Type.CmpNoCase("!") || !Type.CmpNoCase("not_equal") )	{	return( (IS_TRUE_STRING(Value) ? !pOption->asBool() :  pOption->asBool()) );	}
 			}
 		}
 		break;
@@ -649,9 +657,15 @@ bool CSG_Module_Chain::Check_Condition(const CSG_MetaData &Condition, CSG_Parame
 bool CSG_Module_Chain::Tool_Run(const CSG_MetaData &Tool)
 {
 	//-----------------------------------------------------
+	if( Tool.Cmp_Name("comment") )
+	{
+		return( true );
+	}
+
+	//-----------------------------------------------------
 	if( Tool.Cmp_Name("condition") )
 	{
-		if( !Check_Condition(Tool, &m_Data) )
+		if( !Check_Condition(Tool, &m_Data) || !Check_Condition(Tool, &Parameters) )
 		{
 			return( true );
 		}
@@ -681,7 +695,7 @@ bool CSG_Module_Chain::Tool_Run(const CSG_MetaData &Tool)
 
 	if(	!(pModule = SG_Get_Module_Library_Manager().Get_Module(Tool.Get_Property("library"), Module)) )
 	{
-		Error_Fmt("%s [%s].[%s]", _TL("could not find tool"),  Tool.Get_Property("library"), Module.c_str());
+		Error_Fmt("%s [%s].[%s]", _TL("could not find tool"), Tool.Get_Property("library"), Module.c_str());
 
 		return( false );
 	}
@@ -780,7 +794,11 @@ bool CSG_Module_Chain::Tool_Initialize(const CSG_MetaData &Tool, CSG_Module *pMo
 
 		CSG_Parameter	*pParameter, *pOwner;
 
-		if( !Tool_Get_Parameter(Parameter, pModule, &pParameter, &pOwner) )
+		if( Parameter.Cmp_Name("comment") )
+		{
+			continue;
+		}
+		else if( !Tool_Get_Parameter(Parameter, pModule, &pParameter, &pOwner) )
 		{
 			Error_Set(CSG_String::Format("%s: %s", _TL("parameter not found"), Parameter.Get_Property("id")));
 
@@ -855,7 +873,11 @@ bool CSG_Module_Chain::Tool_Initialize(const CSG_MetaData &Tool, CSG_Module *pMo
 
 		CSG_Parameter	*pParameter, *pOwner;
 
-		if( !Tool_Get_Parameter(Parameter, pModule, &pParameter, &pOwner) )
+		if( Parameter.Cmp_Name("comment") )
+		{
+			continue;
+		}
+		else if( !Tool_Get_Parameter(Parameter, pModule, &pParameter, &pOwner) )
 		{
 			return( false );
 		}
@@ -983,6 +1005,9 @@ CSG_Module_Chains::CSG_Module_Chains(const CSG_String &Library_Name, const CSG_S
 		m_Name			= GET_XML_CONTENT(XML, "name"       , m_Library_Name);
 		m_Description	= GET_XML_CONTENT(XML, "description", _TL("no description"));
 		m_Menu			= GET_XML_CONTENT(XML, "menu"       , _TL("Tool Chains"));
+
+		m_Description.Replace("[[", "<");	// support for xml/html tags
+		m_Description.Replace("]]", ">");
 	}
 
 	//-----------------------------------------------------
diff --git a/src/saga_core/saga_api/module_chain.h b/src/saga_core/saga_api/module_chain.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_api/module_grid.cpp b/src/saga_core/saga_api/module_grid.cpp
old mode 100644
new mode 100755
index 24458ab..c4ef4b5
--- a/src/saga_core/saga_api/module_grid.cpp
+++ b/src/saga_core/saga_api/module_grid.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: module_grid.cpp 2064 2014-03-21 13:20:57Z oconrad $
+ * Version $Id: module_grid.cpp 2759 2016-01-22 13:56:58Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -97,7 +97,7 @@ CSG_Module_Grid::~CSG_Module_Grid(void)
 //---------------------------------------------------------
 bool CSG_Module_Grid::Set_Progress_NCells(sLong iCell)
 {
-	if( Get_System()->is_Valid() && (Get_System()->Get_NCells() <= 100 || !(iCell % (Get_System()->Get_NCells() / 100))) )
+	if( Get_System()->is_Valid() )
 	{
 		return( CSG_Module::Set_Progress((double)iCell, (double)Get_System()->Get_NCells()) );
 	}
diff --git a/src/saga_core/saga_api/module_grid_interactive.cpp b/src/saga_core/saga_api/module_grid_interactive.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_api/module_interactive.cpp b/src/saga_core/saga_api/module_interactive.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_api/module_interactive_base.cpp b/src/saga_core/saga_api/module_interactive_base.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_api/module_library.cpp b/src/saga_core/saga_api/module_library.cpp
old mode 100644
new mode 100755
index dd7e91b..d92a6ab
--- a/src/saga_core/saga_api/module_library.cpp
+++ b/src/saga_core/saga_api/module_library.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: module_library.cpp 2378 2015-01-28 19:26:13Z oconrad $
+ * Version $Id: module_library.cpp 2810 2016-02-22 11:43:34Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -80,6 +80,17 @@
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
+#define SUMMARY_ADD_STR(label, value)	CSG_String::Format("<tr><td valign=\"top\"><b>%s</b></td><td valign=\"top\">%s</td></tr>", label, value)
+#define SUMMARY_ADD_INT(label, value)	CSG_String::Format("<tr><td valign=\"top\"><b>%s</b></td><td valign=\"top\">%d</td></tr>", label, value)
+
+
+///////////////////////////////////////////////////////////
+//														 //
+//														 //
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
 CSG_Module_Library::CSG_Module_Library(void)
 {
 	m_pInterface	= NULL;
@@ -165,16 +176,22 @@ CSG_String CSG_Module_Library::Get_Summary(int Format) const
 	{
 	//-----------------------------------------------------
 	case SG_SUMMARY_FMT_FLAT: case SG_SUMMARY_FMT_FLAT_NO_INTERACTIVE:
-		s	+= CSG_String::Format(SG_T("\n%s:\n"), _TL("tools"));
+
+		s	+= CSG_String::Format("\n%s:\t", _TL("Library" )) + Get_Info(MLB_INFO_Name    );
+		s	+= CSG_String::Format("\n%s:\t", _TL("Category")) + Get_Info(MLB_INFO_Category);
+
+		if( !Get_File_Name().is_Empty() )
+		{
+			s	+= CSG_String::Format("\n%s:\t", _TL("File"    )) + Get_File_Name();
+		}
+
+		s	+= CSG_String::Format("\n\n%s:\n", _TL("Tools"));
 
 		for(i=0; i<Get_Count(); i++)
 		{
 			if( Get_Module(i) && (Format == SG_SUMMARY_FMT_FLAT || !Get_Module(i)->is_Interactive()) )
 			{
-				s	+= CSG_String::Format(SG_T(" %s\t- %s\n"),
-					Get_Module(i)->Get_ID  ().c_str(),
-					Get_Module(i)->Get_Name().c_str()
-				);
+				s	+= " " + Get_Module(i)->Get_ID() + "\t" + Get_Module(i)->Get_Name() + "\n";
 			}
 		}
 
@@ -182,32 +199,47 @@ CSG_String CSG_Module_Library::Get_Summary(int Format) const
 
 	//-----------------------------------------------------
 	case SG_SUMMARY_FMT_HTML: default:
-		s	+= CSG_String::Format(SG_T("%s: <b>%s</b><br>%s: <i>%s</i><br>%s: <i>%s</i><br>%s: <i>%s</i><hr>%s"),
-				_TL("Tool Library"), Get_Info(MLB_INFO_Name   ).c_str(),
-				_TL("Author"      ), Get_Info(MLB_INFO_Author ).c_str(),
-				_TL("Version"     ), Get_Info(MLB_INFO_Version).c_str(),
-				_TL("File"        ), Get_File_Name().c_str(),
-				Get_Info(MLB_INFO_Description).c_str()
-			);
 
-		s	+= CSG_String::Format(SG_T("<hr><b>%s:<ul>"), _TL("Tools"));
+		s	+= CSG_String::Format("<h4>%s</h4>", _TL("Tool Library"));
+
+		s	+= "<table border=\"0\">";
+
+		s	+= SUMMARY_ADD_STR(_TL("Name"   ), Get_Info(MLB_INFO_Name   ).c_str());
+		s	+= SUMMARY_ADD_STR(_TL("Author" ), Get_Info(MLB_INFO_Author ).c_str());
+		s	+= SUMMARY_ADD_STR(_TL("Version"), Get_Info(MLB_INFO_Version).c_str());
+		s	+= SUMMARY_ADD_STR(_TL("File"   ), Get_File_Name()           .c_str());
+
+		s	+= "</table>";
+
+		//-------------------------------------------------
+		s	+= CSG_String::Format("<hr><h4>%s</h4>", _TL("Description"));
+
+		s	+= Get_Info(MLB_INFO_Description);
+
+		//-------------------------------------------------
+		s	+= CSG_String::Format("<hr><h4>%s</h4>", _TL("Tools"));
+
+		s	+= "<table border=\"0\">";
+
+		s	+= CSG_String::Format("<tr align=\"left\"><th>%s</th><th>%s</th></tr>", _TL("ID"), _TL("Name"));
 
 		for(i=0; i<Get_Count(); i++)
 		{
 			if( Get_Module(i) )
 			{
-				s	+= CSG_String::Format(SG_T("<li>%s</li>"), Get_Module(i)->Get_Name().c_str());
+				s	+= SUMMARY_ADD_STR(Get_Module(i)->Get_ID().c_str(), Get_Module(i)->Get_Name().c_str());
 			}
 		}
 
-		s	+= SG_T("</ul>");
+		s	+= "</table>";
 
-		s.Replace(SG_T("\n"), SG_T("<br>"));
+		s.Replace("\n", "<br>");
 
 		break;
 
 	//-----------------------------------------------------
 	case SG_SUMMARY_FMT_XML: case SG_SUMMARY_FMT_XML_NO_INTERACTIVE:
+
 		s	+= "<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>\n";
 		s	+= CSG_String::Format("<%s>\n"         , SG_XML_LIBRARY);
 		s	+= CSG_String::Format("\t<%s>%s</%s>\n", SG_XML_LIBRARY_PATH, Get_File_Name().c_str(), SG_XML_LIBRARY_PATH);
@@ -690,19 +722,35 @@ CSG_Module * CSG_Module_Library_Manager::Get_Module(const CSG_String &Library, c
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
-#define SUMMARY_HTML_ADD_INT(label, value)	s += CSG_String::Format(SG_T("<tr><td valign=\"top\">%s</td><td valign=\"top\">%d</td></tr>"), label, value)
-
-//---------------------------------------------------------
 CSG_String CSG_Module_Library_Manager::Get_Summary(int Format)	const
 {
 	//-----------------------------------------------------
-	int			i, nModules;
+	int			i, nTools;
+
+	CSG_Table	Libraries;
 
-	for(i=0, nModules=0; i<Get_Count(); i++)
+	Libraries.Add_Field("LIB"  , SG_DATATYPE_String);
+	Libraries.Add_Field("TOOLS", SG_DATATYPE_Int   );
+	Libraries.Add_Field("NAME" , SG_DATATYPE_String);
+	Libraries.Add_Field("PATH" , SG_DATATYPE_String);
+
+	for(i=0, nTools=0; i<Get_Count(); i++)
 	{
-		nModules	+= Get_Library(i)->Get_Count();
+		if( Get_Library(i)->Get_Count() > 0 )
+		{
+			nTools	+= Get_Library(i)->Get_Count();
+
+			Libraries.Add_Record();
+
+			Libraries[i].Set_Value(0, Get_Library(i)->Get_Library_Name());
+			Libraries[i].Set_Value(1, Get_Library(i)->Get_Count());
+			Libraries[i].Set_Value(2, Get_Library(i)->Get_Name());
+			Libraries[i].Set_Value(3, SG_File_Get_Path(Get_Library(i)->Get_File_Name()));
+		}
 	}
 
+	Libraries.Set_Index(0, TABLE_INDEX_Ascending);
+
 	//-----------------------------------------------------
 	CSG_String	s;
 
@@ -710,61 +758,64 @@ CSG_String CSG_Module_Library_Manager::Get_Summary(int Format)	const
 	{
 	//-----------------------------------------------------
 	case SG_SUMMARY_FMT_FLAT: case SG_SUMMARY_FMT_FLAT_NO_INTERACTIVE:
-		s	+= CSG_String::Format(SG_T("\n%d %s (%d %s):\n"), Get_Count(), _TL("loaded tool libraries"), nModules, _TL("tools"));
 
-		for(i=0; i<Get_Count(); i++)
+		s	+= CSG_String::Format("\n%d %s (%d %s):\n", Libraries.Get_Count(), _TL("loaded tool libraries"), nTools, _TL("tools"));
+
+		for(i=0; i<Libraries.Get_Count(); i++)
 		{
-			s	+= CSG_String::Format(SG_T("- %s\n"), Get_Library(i)->Get_Library_Name().c_str());
+			s	+= CSG_String::Format(" - %s\n", Libraries[i].asString(0));
 		}
 
 		break;
 
 	//-----------------------------------------------------
 	case SG_SUMMARY_FMT_HTML: default:
-		s	+= CSG_String::Format(SG_T("<b>%s</b>"), _TL("Tool Libraries"));
 
-		s	+= SG_T("<table border=\"0\">");
-		SUMMARY_HTML_ADD_INT(_TL("Available Libraries"), Get_Count());
-		SUMMARY_HTML_ADD_INT(_TL("Available Tools"    ), nModules);
-		s	+= SG_T("</table>");
+		s	+= CSG_String::Format("<h4>%s</h4>", _TL("Tool Libraries"));
+
+		s	+= "<table border=\"0\">";
+
+		s	+= SUMMARY_ADD_INT(_TL("Libraries"), Libraries.Get_Count());
+		s	+= SUMMARY_ADD_INT(_TL("Tools"    ), nTools);
 
-		s	+= CSG_String::Format(SG_T("<hr><b>%s:</b><table border=\"1\">"), _TL("Tool Libraries"));
+		s	+= "</table>";
 
-		s	+= CSG_String::Format(SG_T("<tr><th>%s</th><th>%s</th><th>%s</th><th>%s</th></tr>"),
-				_TL("Library"),
-				_TL("Tools"),
-				_TL("Name"),
+		s	+= CSG_String::Format("<hr><h4>%s</h4><table border=\"1\">", _TL("Libraries"));
+
+		s	+= CSG_String::Format("<tr align=\"left\"><th>%s</th><th>%s</th><th>%s</th><th>%s</th></tr>",
+				_TL("Library" ),
+				_TL("Tools"   ),
+				_TL("Name"    ),
 				_TL("Location")
 			);
 
-		for(i=0; i<Get_Count(); i++)
+		for(i=0; i<Libraries.Get_Count(); i++)
 		{
-			s	+= CSG_String::Format(SG_T("<tr><td>%s</td><td>%d</td><td>%s</td><td>%s</td></tr>"),
-					Get_Library(i)->Get_Library_Name().c_str(),
-					Get_Library(i)->Get_Count(),
-					Get_Library(i)->Get_Name().c_str(),
-					SG_File_Get_Path(Get_Library(i)->Get_File_Name()).c_str()
+			s	+= CSG_String::Format("<tr><td>%s</td><td>%d</td><td>%s</td><td>%s</td></tr>",
+					Libraries[i].asString(0),
+					Libraries[i].asInt   (1),
+					Libraries[i].asString(2),
+					Libraries[i].asString(3)
 				);
 		}
 
-		s	+= SG_T("</table>");
+		s	+= "</table>";
 
 		break;
 
 	//-----------------------------------------------------
 	case SG_SUMMARY_FMT_XML: case SG_SUMMARY_FMT_XML_NO_INTERACTIVE:
-		s	+= SG_T("<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>\n");
-		s	+= CSG_String::Format(SG_T("\n<%s>"), SG_XML_SYSTEM);
-		s	+= CSG_String::Format(SG_T("\n<%s>%s</%s>"), SG_XML_SYSTEM_VER, SAGA_VERSION, SG_XML_SYSTEM_VER);
 
-		for(int i=0; i<SG_Get_Module_Library_Manager().Get_Count(); i++)
+		s	+= "<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>\n";
+		s	+= CSG_String::Format("\n<%s>", SG_XML_SYSTEM);
+		s	+= CSG_String::Format("\n<%s>%s</%s>", SG_XML_SYSTEM_VER, SAGA_VERSION, SG_XML_SYSTEM_VER);
+
+		for(int i=0; i<Libraries.Get_Count(); i++)
 		{
-			s	+= CSG_String::Format(SG_T("\n\t<%s %s=\"%s\"/>"), SG_XML_LIBRARY, SG_XML_LIBRARY_NAME,
-				SG_Get_Module_Library_Manager().Get_Library(i)->Get_Library_Name().c_str()
-			);
+			s	+= CSG_String::Format("\n\t<%s %s=\"%s\"/>", SG_XML_LIBRARY, SG_XML_LIBRARY_NAME, Libraries[i].asString(0));
 		}
 
-		s	+= CSG_String::Format(SG_T("\n</%s>"), SG_XML_SYSTEM);
+		s	+= CSG_String::Format("\n</%s>", SG_XML_SYSTEM);
 
 		break;
 	}
diff --git a/src/saga_core/saga_api/module_library.h b/src/saga_core/saga_api/module_library.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_api/module_library_interface.cpp b/src/saga_core/saga_api/module_library_interface.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_api/parameter.cpp b/src/saga_core/saga_api/parameter.cpp
old mode 100644
new mode 100755
index f5e8cc0..6bd3750
--- a/src/saga_core/saga_api/parameter.cpp
+++ b/src/saga_core/saga_api/parameter.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: parameter.cpp 2624 2015-09-30 15:33:53Z oconrad $
+ * Version $Id: parameter.cpp 2798 2016-02-18 13:40:48Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -380,20 +380,170 @@ bool CSG_Parameter::is_Serializable(void)	const
 }
 
 //---------------------------------------------------------
+bool CSG_Parameter::is_Compatible(CSG_Parameter *pParameter)	const
+{
+	if( pParameter && pParameter->Get_Type() == Get_Type() )
+	{
+		switch( Get_Type() )
+		{
+		//-------------------------------------------------
+		case PARAMETER_TYPE_Choice           :
+			{
+				bool	bResult	= pParameter->asChoice()->Get_Count() == asChoice()->Get_Count();
+
+				for(int i=0; bResult && i<asChoice()->Get_Count(); i++)
+				{
+					bResult	= SG_STR_CMP(pParameter->asChoice()->Get_Item(i), asChoice()->Get_Item(i)) == 0;
+				}
+
+				return( bResult );
+			}
+
+		//-------------------------------------------------
+		case PARAMETER_TYPE_FixedTable       :	return( pParameter->asTable()->is_Compatible(asTable()) );
+
+		//-------------------------------------------------
+		case PARAMETER_TYPE_Parameters       :
+			{
+				bool	bResult	= pParameter->asParameters()->Get_Count() == asParameters()->Get_Count();
+
+				for(int i=0; bResult && i<asParameters()->Get_Count(); i++)
+				{
+					bResult	= pParameter->asParameters()->Get_Parameter(i)->is_Compatible(asParameters()->Get_Parameter(i));
+				}
+
+				return( bResult );
+			}
+
+		//-------------------------------------------------
+		default:	return( true );
+		}
+	}
+
+	return( false );
+}
+
+//---------------------------------------------------------
+bool CSG_Parameter::is_Value_Equal(CSG_Parameter *pParameter)	const
+{
+	if( pParameter && pParameter->Get_Type() == Get_Type() )
+	{
+		switch( Get_Type() )
+		{
+		case PARAMETER_TYPE_Node             :	return( true );
+
+		//-------------------------------------------------
+		case PARAMETER_TYPE_Bool             :	return( pParameter->asBool  () == asBool  () );
+		case PARAMETER_TYPE_Table_Field      :
+		case PARAMETER_TYPE_Choice           :
+		case PARAMETER_TYPE_Color            :
+		case PARAMETER_TYPE_Int              :	return( pParameter->asInt   () == asInt   () );
+		case PARAMETER_TYPE_Degree           :
+		case PARAMETER_TYPE_Double           :	return( pParameter->asDouble() == asDouble() );
+
+		case PARAMETER_TYPE_Table_Fields     :
+		case PARAMETER_TYPE_Font             :
+		case PARAMETER_TYPE_Text             :
+		case PARAMETER_TYPE_FilePath         :
+		case PARAMETER_TYPE_String           :	return( SG_STR_CMP(pParameter->asString(), asString()) == 0 );
+
+		case PARAMETER_TYPE_Range            :	return( pParameter->asRange()->Get_LoVal() == asRange()->Get_LoVal()
+													&&  pParameter->asRange()->Get_HiVal() == asRange()->Get_HiVal() );
+
+		case PARAMETER_TYPE_Grid_System      :	return( pParameter->asGrid_System()->is_Equal(*asGrid_System()) );
+
+		//-------------------------------------------------
+		case PARAMETER_TYPE_Colors           :
+			{
+				bool	bResult	= pParameter->asColors()->Get_Count() == asColors()->Get_Count();
+
+				for(int i=0; bResult && i<asColors()->Get_Count(); i++)
+				{
+					bResult	= pParameter->asColors()->Get_Color(i) == asColors()->Get_Color(i);
+				}
+
+				return( bResult );
+			}
+
+		//-------------------------------------------------
+		case PARAMETER_TYPE_FixedTable       :
+			{
+				bool	bResult	= pParameter->asTable()->is_Compatible(asTable()) && pParameter->asTable()->Get_Count() == asTable()->Get_Count();
+
+				for(int i=0; bResult && i<asTable()->Get_Count(); i++)
+				{
+					CSG_Table_Record *pA = pParameter->asTable()->Get_Record(i), *pB = asTable()->Get_Record(i);
+
+					for(int j=0; bResult && j<asTable()->Get_Field_Count(); j++)
+					{
+						bResult	= SG_STR_CMP(pA->asString(j), pB->asString(j)) == 0;
+					}
+				}
+
+				return( bResult );
+			}
+
+		//-------------------------------------------------
+		case PARAMETER_TYPE_DataObject_Output:
+		case PARAMETER_TYPE_Grid             :
+		case PARAMETER_TYPE_Table            :
+		case PARAMETER_TYPE_Shapes           :
+		case PARAMETER_TYPE_TIN              :
+		case PARAMETER_TYPE_PointCloud       :	return( pParameter->asDataObject() == asDataObject() );
+
+		//-------------------------------------------------
+		case PARAMETER_TYPE_Grid_List        :
+		case PARAMETER_TYPE_Table_List       :
+		case PARAMETER_TYPE_Shapes_List      :
+		case PARAMETER_TYPE_TIN_List         :
+		case PARAMETER_TYPE_PointCloud_List  :
+			{
+				bool	bResult	= pParameter->asList()->Get_Count() == asList()->Get_Count();
+
+				for(int i=0; bResult && i<asList()->Get_Count(); i++)
+				{
+					bResult	= pParameter->asList()->asDataObject(i) == asList()->asDataObject(i);
+				}
+
+				return( bResult );
+			}
+
+		//-------------------------------------------------
+		case PARAMETER_TYPE_Parameters       :
+			{
+				bool	bResult	= pParameter->asParameters()->Get_Count() == asParameters()->Get_Count();
+
+				for(int i=0; bResult && i<asParameters()->Get_Count(); i++)
+				{
+					bResult	= pParameter->asParameters()->Get_Parameter(i)->is_Value_Equal(asParameters()->Get_Parameter(i));
+				}
+
+				return( bResult );
+			}
+
+		//-------------------------------------------------
+		default:	break;
+		}
+	}
+
+	return( false );
+}
+
+//---------------------------------------------------------
 TSG_Data_Object_Type CSG_Parameter::Get_DataObject_Type(void)	const
 {
 	switch( Get_Type() )
 	{
-	default:								return( DATAOBJECT_TYPE_Undefined );
-	case PARAMETER_TYPE_Grid:
-	case PARAMETER_TYPE_Grid_List:			return( DATAOBJECT_TYPE_Grid );
-	case PARAMETER_TYPE_Table:
-	case PARAMETER_TYPE_Table_List:			return( DATAOBJECT_TYPE_Table );
-	case PARAMETER_TYPE_Shapes:
-	case PARAMETER_TYPE_Shapes_List:		return( DATAOBJECT_TYPE_Shapes );
-	case PARAMETER_TYPE_TIN:
-	case PARAMETER_TYPE_TIN_List:			return( DATAOBJECT_TYPE_TIN );
-	case PARAMETER_TYPE_PointCloud:
+	default                            :	return( DATAOBJECT_TYPE_Undefined  );
+	case PARAMETER_TYPE_Grid           :
+	case PARAMETER_TYPE_Grid_List      :	return( DATAOBJECT_TYPE_Grid       );
+	case PARAMETER_TYPE_Table          :
+	case PARAMETER_TYPE_Table_List     :	return( DATAOBJECT_TYPE_Table      );
+	case PARAMETER_TYPE_Shapes         :
+	case PARAMETER_TYPE_Shapes_List    :	return( DATAOBJECT_TYPE_Shapes     );
+	case PARAMETER_TYPE_TIN            :
+	case PARAMETER_TYPE_TIN_List       :	return( DATAOBJECT_TYPE_TIN        );
+	case PARAMETER_TYPE_PointCloud     :
 	case PARAMETER_TYPE_PointCloud_List:	return( DATAOBJECT_TYPE_PointCloud );
 	}
 }
diff --git a/src/saga_core/saga_api/parameter_data.cpp b/src/saga_core/saga_api/parameter_data.cpp
old mode 100644
new mode 100755
index 0900248..dd1c708
--- a/src/saga_core/saga_api/parameter_data.cpp
+++ b/src/saga_core/saga_api/parameter_data.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: parameter_data.cpp 2727 2015-12-13 16:02:55Z reklov_w $
+ * Version $Id: parameter_data.cpp 2771 2016-02-05 15:24:27Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -2274,7 +2274,7 @@ bool CSG_Parameter_Shapes::Set_Value(void *Value)
 
 		if(	pChild->Get_Type() == PARAMETER_TYPE_Table_Field )
 		{
-			pChild->Set_Value(m_pDataObject && pChild->is_Optional() ? ((CSG_Table *)m_pDataObject)->Get_Field_Count() : 0);
+			pChild->Set_Value(m_pDataObject && m_pDataObject != DATAOBJECT_CREATE && pChild->is_Optional() ? ((CSG_Table *)m_pDataObject)->Get_Field_Count() : 0);
 		}
 		else if( pChild->Get_Type() == PARAMETER_TYPE_Table_Fields )
 		{
diff --git a/src/saga_core/saga_api/parameters.cpp b/src/saga_core/saga_api/parameters.cpp
old mode 100644
new mode 100755
index 9a66dd7..437e045
--- a/src/saga_core/saga_api/parameters.cpp
+++ b/src/saga_core/saga_api/parameters.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: parameters.cpp 2676 2015-11-04 18:39:37Z oconrad $
+ * Version $Id: parameters.cpp 2798 2016-02-18 13:40:48Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -289,6 +289,12 @@ void CSG_Parameters::Set_Enabled(const CSG_String &Identifier, bool bEnabled)
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
+CSG_Parameter * CSG_Parameters::Add_Parameter(CSG_Parameter *pParameter)
+{
+	return( _Add(pParameter) );
+}
+
+//---------------------------------------------------------
 CSG_Parameter * CSG_Parameters::Add_Node(CSG_Parameter *pParent, const CSG_String &Identifier, const CSG_String &Name, const CSG_String &Description)
 {
 	return( _Add(pParent, Identifier, Name, Description, PARAMETER_TYPE_Node, PARAMETER_INFORMATION) );
@@ -314,6 +320,32 @@ CSG_Parameter * CSG_Parameters::Add_Info_Value(CSG_Parameter *pParent, const CSG
 }
 
 //---------------------------------------------------------
+CSG_Parameter * CSG_Parameters::Add_Bool  (CSG_Parameter *pParent, const CSG_String &Identifier, const CSG_String &Name, const CSG_String &Description, bool   Value)
+{
+	return( Add_Value(pParent, Identifier, Name, Description, PARAMETER_TYPE_Bool  , Value ? 1.0 : 0.0) );
+}
+
+CSG_Parameter * CSG_Parameters::Add_Int   (CSG_Parameter *pParent, const CSG_String &Identifier, const CSG_String &Name, const CSG_String &Description, int    Value, int    Minimum, bool bMinimum, int    Maximum, bool bMaximum)
+{
+	return( Add_Value(pParent, Identifier, Name, Description, PARAMETER_TYPE_Int   , Value, Minimum, bMinimum, Maximum, bMaximum) );
+}
+
+CSG_Parameter * CSG_Parameters::Add_Double(CSG_Parameter *pParent, const CSG_String &Identifier, const CSG_String &Name, const CSG_String &Description, double Value, double Minimum, bool bMinimum, double Maximum, bool bMaximum)
+{
+	return( Add_Value(pParent, Identifier, Name, Description, PARAMETER_TYPE_Double, Value, Minimum, bMinimum, Maximum, bMaximum) );
+}
+
+CSG_Parameter * CSG_Parameters::Add_Degree(CSG_Parameter *pParent, const CSG_String &Identifier, const CSG_String &Name, const CSG_String &Description, double Value, double Minimum, bool bMinimum, double Maximum, bool bMaximum)
+{
+	return( Add_Value(pParent, Identifier, Name, Description, PARAMETER_TYPE_Degree, Value, Minimum, bMinimum, Maximum, bMaximum) );
+}
+
+CSG_Parameter * CSG_Parameters::Add_Color (CSG_Parameter *pParent, const CSG_String &Identifier, const CSG_String &Name, const CSG_String &Description, int    Value)
+{
+	return( Add_Value(pParent, Identifier, Name, Description, PARAMETER_TYPE_Color , Value) );
+}
+
+//---------------------------------------------------------
 CSG_Parameter * CSG_Parameters::Add_Range(CSG_Parameter *pParent, const CSG_String &Identifier, const CSG_String &Name, const CSG_String &Description, double Range_Min, double Range_Max, double Minimum, bool bMinimum, double Maximum, bool bMaximum)
 {
 	return( _Add_Range(pParent, Identifier, Name, Description, false, Range_Min, Range_Max, Minimum, bMinimum, Maximum, bMaximum) );
@@ -919,17 +951,22 @@ bool CSG_Parameters::Del_Parameter(int iParameter)
 {
 	if( m_Parameters && iParameter >= 0 && iParameter < m_nParameters )
 	{
-		delete(m_Parameters[iParameter]);
-
-		m_nParameters--;
+		CSG_Parameter	*pParameter	= m_Parameters[iParameter];
 
-		for(; iParameter<m_nParameters; iParameter++)
+		for(m_nParameters--; iParameter<m_nParameters; iParameter++)
 		{
 			m_Parameters[iParameter]	= m_Parameters[iParameter + 1];
 		}
 
 		m_Parameters	= (CSG_Parameter **)SG_Realloc(m_Parameters, m_nParameters * sizeof(CSG_Parameter *));
 
+		for(iParameter=pParameter->Get_Children_Count()-1; iParameter>=0; iParameter--)
+		{
+			Del_Parameter(pParameter->Get_Child(iParameter)->Get_Identifier());
+		}
+
+		delete(pParameter);
+
 		return( true );
 	}
 
@@ -1161,25 +1198,60 @@ bool CSG_Parameters::Assign(CSG_Parameters *pSource)
 //---------------------------------------------------------
 bool CSG_Parameters::Assign_Values(CSG_Parameters *pSource)
 {
-	if( pSource && pSource != this )
+	if( !pSource || pSource == this )
+	{
+		return( false );
+	}
+
+	//-----------------------------------------------------
+	int		i, n;
+
+	for(i=0, n=0; i<pSource->Get_Count(); i++)
 	{
-		int		i, n;
+		CSG_Parameter	*pParameter	= Get_Parameter(pSource->Get_Parameter(i)->Get_Identifier());
 
-		for(i=0, n=0; i<pSource->Get_Count(); i++)
+		if( pParameter && pParameter->Get_Type() == pSource->Get_Parameter(i)->Get_Type() )
 		{
-			CSG_Parameter	*pParameter	= Get_Parameter(pSource->Get_Parameter(i)->Get_Identifier());
+			pParameter->Assign(pSource->Get_Parameter(i));
+			n++;
+		}
+	}
 
-			if( pParameter && pParameter->Get_Type() == pSource->Get_Parameter(i)->Get_Type() )
-			{
-				pParameter->Assign(pSource->Get_Parameter(i));
-				n++;
-			}
+	return( n > 0 );
+}
+
+//---------------------------------------------------------
+bool CSG_Parameters::Assign_Parameters(CSG_Parameters *pSource)
+{
+	if( !pSource || pSource == this )
+	{
+		return( false );
+	}
+
+	//-----------------------------------------------------
+	int		i;
+
+	Del_Parameters();
+
+	for(i=0; i<pSource->m_nParameters; i++)
+	{
+		_Add(pSource->m_Parameters[i]);
+	}
+
+	for(i=0; i<pSource->m_nParameters; i++)
+	{
+		if( Get_Parameter(i) && pSource->m_Parameters[i]->m_pParent )
+		{
+			Get_Parameter(i)->m_pParent	= Get_Parameter(pSource->m_Parameters[i]->m_pParent->Get_Identifier());
 		}
+	}
 
-		return( n > 0 );
+	if( pSource->m_pGrid_System )
+	{
+		m_pGrid_System	= Get_Parameter(pSource->m_pGrid_System->Get_Identifier());
 	}
 
-	return( false );
+	return( m_nParameters == pSource->m_nParameters );
 }
 
 
diff --git a/src/saga_core/saga_api/parameters.h b/src/saga_core/saga_api/parameters.h
old mode 100644
new mode 100755
index 62bee96..dda3700
--- a/src/saga_core/saga_api/parameters.h
+++ b/src/saga_core/saga_api/parameters.h
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: parameters.h 2671 2015-11-02 15:38:07Z oconrad $
+ * Version $Id: parameters.h 2795 2016-02-17 13:04:43Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -1271,6 +1271,8 @@ public:
 	bool						is_DataObject_List		(void)	const;
 	bool						is_Parameters			(void)	const;
 	bool						is_Serializable			(void)	const;
+	bool						is_Compatible			(CSG_Parameter *pParameter)	const;
+	bool						is_Value_Equal			(CSG_Parameter *pParameter)	const;
 
 	void						Set_UseInGUI			(bool bDoUse = false);
 	void						Set_UseInCMD			(bool bDoUse = false);
@@ -1437,11 +1439,19 @@ public:
 	bool						Del_Parameters			(void);
 
 	//-----------------------------------------------------
+	CSG_Parameter *				Add_Parameter			(CSG_Parameter *pParameter);
+
 	CSG_Parameter *				Add_Node				(CSG_Parameter *pParent, const CSG_String &Identifier, const CSG_String &Name, const CSG_String &Description);
 
 	CSG_Parameter *				Add_Value				(CSG_Parameter *pParent, const CSG_String &Identifier, const CSG_String &Name, const CSG_String &Description, TSG_Parameter_Type Type, double Value = 0.0, double Minimum = 0.0, bool bMinimum = false, double Maximum = 0.0, bool bMaximum = false);
 	CSG_Parameter *				Add_Info_Value			(CSG_Parameter *pParent, const CSG_String &Identifier, const CSG_String &Name, const CSG_String &Description, TSG_Parameter_Type Type, double Value = 0.0);
 
+	CSG_Parameter *				Add_Bool				(CSG_Parameter *pParent, const CSG_String &Identifier, const CSG_String &Name, const CSG_String &Description, bool   Value = false);
+	CSG_Parameter *				Add_Int					(CSG_Parameter *pParent, const CSG_String &Identifier, const CSG_String &Name, const CSG_String &Description, int    Value = 0  , int    Minimum = 0  , bool bMinimum = false, int    Maximum = 0  , bool bMaximum = false);
+	CSG_Parameter *				Add_Double				(CSG_Parameter *pParent, const CSG_String &Identifier, const CSG_String &Name, const CSG_String &Description, double Value = 0.0, double Minimum = 0.0, bool bMinimum = false, double Maximum = 0.0, bool bMaximum = false);
+	CSG_Parameter *				Add_Degree				(CSG_Parameter *pParent, const CSG_String &Identifier, const CSG_String &Name, const CSG_String &Description, double Value = 0.0, double Minimum = 0.0, bool bMinimum = false, double Maximum = 0.0, bool bMaximum = false);
+	CSG_Parameter *				Add_Color				(CSG_Parameter *pParent, const CSG_String &Identifier, const CSG_String &Name, const CSG_String &Description, int    Value = 0);
+
 	CSG_Parameter *				Add_Range				(CSG_Parameter *pParent, const CSG_String &Identifier, const CSG_String &Name, const CSG_String &Description, double Range_Min = 0.0, double Range_Max = 0.0, double Minimum = 0.0, bool bMinimum = false, double Maximum = 0.0, bool bMaximum = false);
 	CSG_Parameter *				Add_Info_Range			(CSG_Parameter *pParent, const CSG_String &Identifier, const CSG_String &Name, const CSG_String &Description, double Range_Min = 0.0, double Range_Max = 0.0);
 
@@ -1494,6 +1504,7 @@ public:
 
 	bool						Assign					(CSG_Parameters *pSource);
 	bool						Assign_Values			(CSG_Parameters *pSource);
+	bool						Assign_Parameters		(CSG_Parameters *pSource);
 
 	bool						Serialize				(const CSG_String &File_Name, bool bSave);
 	bool						Serialize				(CSG_MetaData &Entry        , bool bSave);
diff --git a/src/saga_core/saga_api/pointcloud.cpp b/src/saga_core/saga_api/pointcloud.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_api/pointcloud.h b/src/saga_core/saga_api/pointcloud.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_api/projections.cpp b/src/saga_core/saga_api/projections.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_api/quadtree.cpp b/src/saga_core/saga_api/quadtree.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_api/saga_api.cpp b/src/saga_core/saga_api/saga_api.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_api/saga_api.h b/src/saga_core/saga_api/saga_api.h
old mode 100644
new mode 100755
index c26299e..90a8784
--- a/src/saga_core/saga_api/saga_api.h
+++ b/src/saga_core/saga_api/saga_api.h
@@ -128,8 +128,8 @@
 //---------------------------------------------------------
 #define SAGA_MAJOR_VERSION		2
 #define SAGA_MINOR_VERSION		2
-#define SAGA_RELEASE_NUMBER		3
-#define SAGA_VERSION			SG_T("2.2.3")
+#define SAGA_RELEASE_NUMBER		4
+#define SAGA_VERSION			SG_T("2.2.4")
 
 
 ///////////////////////////////////////////////////////////
diff --git a/src/saga_core/saga_api/shape.cpp b/src/saga_core/saga_api/shape.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_api/shape_line.cpp b/src/saga_core/saga_api/shape_line.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_api/shape_part.cpp b/src/saga_core/saga_api/shape_part.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_api/shape_point.cpp b/src/saga_core/saga_api/shape_point.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_api/shape_points.cpp b/src/saga_core/saga_api/shape_points.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_api/shape_polygon.cpp b/src/saga_core/saga_api/shape_polygon.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_api/shapes.cpp b/src/saga_core/saga_api/shapes.cpp
old mode 100644
new mode 100755
index 00bd931..730ca1e
--- a/src/saga_core/saga_api/shapes.cpp
+++ b/src/saga_core/saga_api/shapes.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: shapes.cpp 2706 2015-12-01 14:22:12Z oconrad $
+ * Version $Id: shapes.cpp 2751 2016-01-15 15:22:53Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -234,7 +234,6 @@ bool CSG_Shapes::Create(const CSG_String &File_Name)
 	if( bResult )
 	{
 		Set_File_Name(File_Name, true);
-		Load_MetaData(File_Name);
 	}
 
 	//-----------------------------------------------------
@@ -412,8 +411,6 @@ bool CSG_Shapes::Save(const CSG_String &File_Name, int Format)
 
 		Set_File_Name(File_Name, true);
 
-		Save_MetaData(File_Name);
-
 		SG_UI_Process_Set_Ready();
 		SG_UI_Msg_Add(_TL("okay"), false, SG_UI_MSG_STYLE_SUCCESS);
 
diff --git a/src/saga_core/saga_api/shapes.h b/src/saga_core/saga_api/shapes.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_api/shapes_io.cpp b/src/saga_core/saga_api/shapes_io.cpp
old mode 100644
new mode 100755
index 783d16e..0059acb
--- a/src/saga_core/saga_api/shapes_io.cpp
+++ b/src/saga_core/saga_api/shapes_io.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: shapes_io.cpp 2706 2015-12-01 14:22:12Z oconrad $
+ * Version $Id: shapes_io.cpp 2769 2016-02-03 09:56:16Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -194,7 +194,11 @@ bool CSG_Shapes::_Load_ESRI(const CSG_String &File_Name)
 			return( false );
 		}
 
-		if( Content.asInt(0) != Type )
+		if( fDBF.isDeleted() )
+		{
+			// nop
+		}
+		else if( Content.asInt(0) != Type )
 		{
 			if( Content.asInt(0) == 0 )
 			{
@@ -340,6 +344,20 @@ bool CSG_Shapes::_Load_ESRI(const CSG_String &File_Name)
 	//-----------------------------------------------------
 	Get_Projection().Load(SG_File_Make_Path(NULL, File_Name, SG_T("prj")), SG_PROJ_FMT_WKT);
 
+	//-----------------------------------------------------
+	Load_MetaData(File_Name);
+
+	CSG_MetaData	*pFields	= Get_MetaData_DB().Get_Child("FIELDS");
+
+	if( pFields && pFields->Get_Children_Count() == Get_Field_Count() )
+	{
+		for(iField=0; iField<Get_Field_Count(); iField++)
+		{
+			Set_Field_Name(iField, pFields->Get_Content(iField));
+		}
+	}
+
+	//-----------------------------------------------------
 	return( true );
 }
 
@@ -632,6 +650,24 @@ bool CSG_Shapes::_Save_ESRI(const CSG_String &File_Name)
 	//-----------------------------------------------------
 	Get_Projection().Save(SG_File_Make_Path(NULL, File_Name, SG_T("prj")), SG_PROJ_FMT_WKT);
 
+	//-----------------------------------------------------
+	CSG_MetaData	*pFields	= Get_MetaData_DB().Get_Child("FIELDS");
+
+	if( !pFields )
+	{
+		pFields	= Get_MetaData_DB().Add_Child("FIELDS");
+	}
+
+	pFields->Del_Children();
+
+	for(iField=0; iField<Get_Field_Count(); iField++)
+	{
+		pFields->Add_Child("FIELD", Get_Field_Name(iField))->Add_Property("TYPE", gSG_Data_Type_Identifier[Get_Field_Type(iField)]);
+	}
+
+	Save_MetaData(File_Name);
+
+	//-----------------------------------------------------
 	return( true );
 }
 
diff --git a/src/saga_core/saga_api/shapes_ogis.cpp b/src/saga_core/saga_api/shapes_ogis.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_api/shapes_polygons.cpp b/src/saga_core/saga_api/shapes_polygons.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_api/shapes_search.cpp b/src/saga_core/saga_api/shapes_search.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_api/shapes_selection.cpp b/src/saga_core/saga_api/shapes_selection.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_api/table.cpp b/src/saga_core/saga_api/table.cpp
old mode 100644
new mode 100755
index 6a03943..cb18d5e
--- a/src/saga_core/saga_api/table.cpp
+++ b/src/saga_core/saga_api/table.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: table.cpp 2700 2015-11-24 17:18:29Z oconrad $
+ * Version $Id: table.cpp 2751 2016-01-15 15:22:53Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -175,12 +175,11 @@ bool CSG_Table::Create(const CSG_String &File_Name, TSG_Table_File_Type Format)
 	SG_UI_Msg_Add(CSG_String::Format("%s: %s...", _TL("Load table"), File_Name.c_str()), true);
 
 	//-----------------------------------------------------
-	bool	bResult	= File_Name.BeforeFirst(':').Cmp("PGSQL") && SG_File_Exists(File_Name) && Load(File_Name, (int)Format, NULL);
+	bool	bResult	= File_Name.BeforeFirst(':').Cmp("PGSQL") && SG_File_Exists(File_Name) && Load(File_Name, (int)Format, '\0');
 
 	if( bResult )
 	{
 		Set_File_Name(File_Name, true);
-		Load_MetaData(File_Name);
 	}
 
 	//-----------------------------------------------------
diff --git a/src/saga_core/saga_api/table.h b/src/saga_core/saga_api/table.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_api/table_dbase.cpp b/src/saga_core/saga_api/table_dbase.cpp
old mode 100644
new mode 100755
index 33b260f..63a29cb
--- a/src/saga_core/saga_api/table_dbase.cpp
+++ b/src/saga_core/saga_api/table_dbase.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: table_dbase.cpp 1921 2014-01-09 10:24:11Z oconrad $
+ * Version $Id: table_dbase.cpp 2769 2016-02-03 09:56:16Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -637,6 +637,12 @@ void CSG_Table_DBase::Flush_Record(void)
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
+bool CSG_Table_DBase::isDeleted(void)
+{
+	return( m_hFile && *m_Record == '*' );
+}
+
+//---------------------------------------------------------
 bool CSG_Table_DBase::asInt(int iField, int &Value)
 {
 	double	d;
diff --git a/src/saga_core/saga_api/table_dbase.h b/src/saga_core/saga_api/table_dbase.h
old mode 100644
new mode 100755
index 219746f..b7d496d
--- a/src/saga_core/saga_api/table_dbase.h
+++ b/src/saga_core/saga_api/table_dbase.h
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: table_dbase.h 1921 2014-01-09 10:24:11Z oconrad $
+ * Version $Id: table_dbase.h 2769 2016-02-03 09:56:16Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -143,6 +143,8 @@ public:
 	void						Flush_Record		(void);
 
 	//-----------------------------------------------------
+	bool						isDeleted			(void);
+
 	bool						asInt				(int iField, int    &Value);
 	bool						asDouble			(int iField, double &Value);
 	CSG_String					asString			(int iField);
diff --git a/src/saga_core/saga_api/table_io.cpp b/src/saga_core/saga_api/table_io.cpp
old mode 100644
new mode 100755
index a6507e7..167e924
--- a/src/saga_core/saga_api/table_io.cpp
+++ b/src/saga_core/saga_api/table_io.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: table_io.cpp 2690 2015-11-17 12:08:15Z oconrad $
+ * Version $Id: table_io.cpp 2766 2016-01-28 15:41:28Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -102,23 +102,32 @@ bool CSG_Table::Load(const CSG_String &File_Name, int Format, SG_Char Separator)
 	//-----------------------------------------------------
 	switch( Format )
 	{
-	case TABLE_FILETYPE_Text: default:
-		return( _Load_Text (File_Name, true , Separator) );
+	case TABLE_FILETYPE_Text:   default: if( !_Load_Text (File_Name, true , Separator) ) return( false ); break;
+	case TABLE_FILETYPE_Text_NoHeadLine: if( !_Load_Text (File_Name, false, Separator) ) return( false ); break;
+	case TABLE_FILETYPE_DBase          : if( !_Load_DBase(File_Name                  ) ) return( false ); break;
+	}
 
-	case TABLE_FILETYPE_Text_NoHeadLine:
-		return( _Load_Text (File_Name, false, Separator) );
+	//-----------------------------------------------------
+	Load_MetaData(File_Name);
 
-	case TABLE_FILETYPE_DBase:
-		return( _Load_DBase(File_Name) );
+	CSG_MetaData	*pFields	= Get_MetaData_DB().Get_Child("FIELDS");
+
+	if( pFields && pFields->Get_Children_Count() == Get_Field_Count() )
+	{
+		for(int iField=0; iField<Get_Field_Count(); iField++)
+		{
+			Set_Field_Name(iField, pFields->Get_Content(iField));
+		}
 	}
 
-	return( false );
+	//-----------------------------------------------------
+	return( true );
 }
 
 //---------------------------------------------------------
 bool CSG_Table::Save(const CSG_String &File_Name, int Format)
 {
-	return( Save(File_Name, Format, NULL) );
+	return( Save(File_Name, Format, '\0') );
 }
 
 //---------------------------------------------------------
@@ -163,6 +172,21 @@ bool CSG_Table::Save(const CSG_String &File_Name, int Format, SG_Char Separator)
 	}
 
 	//-----------------------------------------------------
+	CSG_MetaData	*pFields	= Get_MetaData_DB().Get_Child("FIELDS");
+
+	if( !pFields )
+	{
+		pFields	= Get_MetaData_DB().Add_Child("FIELDS");
+	}
+
+	pFields->Del_Children();
+
+	for(int iField=0; iField<Get_Field_Count(); iField++)
+	{
+		pFields->Add_Child("FIELD", Get_Field_Name(iField))->Add_Property("TYPE", gSG_Data_Type_Identifier[Get_Field_Type(iField)]);
+	}
+
+	//-----------------------------------------------------
 	if( bResult )
 	{
 		Set_Modified(false);
diff --git a/src/saga_core/saga_api/table_record.cpp b/src/saga_core/saga_api/table_record.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_api/table_selection.cpp b/src/saga_core/saga_api/table_selection.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_api/table_value.h b/src/saga_core/saga_api/table_value.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_api/tin.cpp b/src/saga_core/saga_api/tin.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_api/tin.h b/src/saga_core/saga_api/tin.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_api/tin_elements.cpp b/src/saga_core/saga_api/tin_elements.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_api/tin_triangulation.cpp b/src/saga_core/saga_api/tin_triangulation.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_cmd/Makefile.am b/src/saga_core/saga_cmd/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_cmd/callback.cpp b/src/saga_core/saga_cmd/callback.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_cmd/callback.h b/src/saga_core/saga_cmd/callback.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_cmd/man/Makefile.am b/src/saga_core/saga_cmd/man/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_cmd/man/saga_cmd.1 b/src/saga_core/saga_cmd/man/saga_cmd.1
old mode 100644
new mode 100755
index acc0591..aaf2c4b
--- a/src/saga_core/saga_cmd/man/saga_cmd.1
+++ b/src/saga_core/saga_cmd/man/saga_cmd.1
@@ -213,7 +213,7 @@ export SAGA_MLB=/usr/lib/saga
 .PP
 \&\fBsaga_cmd\fR ta_morphometry \*(L"Local Morphometry\*(R" \-ELEVATION dem.sgrd \-SLOPE slope.sgrd \-ASPECT aspect.sgrd \-METHOD 1
 .PP
-Multiple input files can be specified by seperating them by a semicolon (;).
+Multiple input files can be specified by separating them by a semicolon (;).
 .PP
 \&\fBsaga_cmd\fR libgrid_tools Merging \-GRIDS test1.sgrd\e;test2.sgrd \-GRID_TARGET merged.sgrd
 .SH "BUGS"
diff --git a/src/saga_core/saga_cmd/module_library.cpp b/src/saga_core/saga_cmd/module_library.cpp
old mode 100644
new mode 100755
index 49fd3cd..c3e3060
--- a/src/saga_core/saga_cmd/module_library.cpp
+++ b/src/saga_core/saga_cmd/module_library.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: module_library.cpp 2708 2015-12-01 16:16:14Z oconrad $
+ * Version $Id: module_library.cpp 2755 2016-01-19 15:57:08Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -683,6 +683,11 @@ bool CCMD_Module::_Load_Input(CSG_Parameter *pParameter)
 		while( FileNames.Length() > 0 );
 
 		pParameter->has_Changed();
+
+		if( pParameter->Get_Parent() && pParameter->Get_Parent()->Get_Type() == PARAMETER_TYPE_Grid_System )
+		{
+			pParameter->Get_Parent()->has_Changed();
+		}
 	}
 
 	return( true );
diff --git a/src/saga_core/saga_cmd/module_library.h b/src/saga_core/saga_cmd/module_library.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_cmd/saga_cmd.cpp b/src/saga_core/saga_cmd/saga_cmd.cpp
old mode 100644
new mode 100755
index 916411f..5f93258
--- a/src/saga_core/saga_cmd/saga_cmd.cpp
+++ b/src/saga_core/saga_cmd/saga_cmd.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: saga_cmd.cpp 2675 2015-11-04 10:39:23Z oconrad $
+ * Version $Id: saga_cmd.cpp 2821 2016-02-24 09:21:06Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -89,8 +89,8 @@ bool		Check_First		(const CSG_String &Argument);
 bool		Check_Flags		(const CSG_String &Argument);
 
 void		Print_Libraries	(void);
-void		Print_Modules	(CSG_Module_Library *pLibrary);
-void		Print_Execution	(CSG_Module_Library *pLibrary, CSG_Module *pModule);
+void		Print_Tools		(CSG_Module_Library *pLibrary);
+void		Print_Execution	(CSG_Module_Library *pLibrary, CSG_Module *pTool);
 
 void		Print_Logo		(void);
 void		Print_Get_Help	(void);
@@ -193,8 +193,6 @@ bool		Run(int argc, char *argv[])
 	//-----------------------------------------------------
 	if( argc <= 1 )
 	{
-		CMD_Print_Error(_TL("no arguments for saga call"));
-
 		Print_Libraries();
 
 		return( false );
@@ -222,7 +220,7 @@ bool		Run(int argc, char *argv[])
 bool		Execute(int argc, char *argv[])
 {
 	CSG_Module_Library	*pLibrary;
-	CSG_Module			*pModule;
+	CSG_Module			*pTool;
 
 	if( argc == 1 || (pLibrary = SG_Get_Module_Library_Manager().Get_Library(CSG_String(argv[1]), true)) == NULL )
 	{
@@ -231,31 +229,31 @@ bool		Execute(int argc, char *argv[])
 		return( false );
 	}
 
-	if( argc == 2 || (pModule = pLibrary->Get_Module(argv[2])) == NULL )
+	if( argc == 2 || (pTool = pLibrary->Get_Module(argv[2])) == NULL )
 	{
-		Print_Modules(pLibrary);
+		Print_Tools(pLibrary);
 
 		return( false );
 	}
 
 	if( argc == 3 && CMD_Get_XML() )
 	{	// Just output tool synopsis as XML-tagged text, then return.
-		SG_PRINTF(pModule->Get_Summary(true, "", "", true).c_str());
+		SG_PRINTF(pTool->Get_Summary(true, "", "", true).c_str());
 
 		return( true );
 	}
 
-	if( pModule->needs_GUI() )
+	if( pTool->needs_GUI() )
 	{
-		CMD_Print_Error(_TL("tool needs graphical user interface"), pModule->Get_Name());
+		CMD_Print_Error(_TL("tool needs graphical user interface"), pTool->Get_Name());
 
 		return( false );
 	}
 
 	//-----------------------------------------------------
-	Print_Execution(pLibrary, pModule);
+	Print_Execution(pLibrary, pTool);
 
-	CCMD_Module	CMD_Module(pLibrary, pModule);
+	CCMD_Module	CMD_Module(pLibrary, pTool);
 
 	return( CMD_Module.Execute(argc - 2, argv + 2) );
 }
@@ -395,7 +393,8 @@ bool		Load_Libraries(void)
 	wxString	Path, CMD_Path	= SG_File_Get_Path(SG_UI_Get_Application_Path()).c_str();
 
     #if defined(_SAGA_LINUX)
-		Load_Libraries(wxT(MODULE_LIBRARY_PATH));
+		Load_Libraries(MODULE_LIBRARY_PATH);
+		Load_Libraries(SG_File_Make_Path(CSG_String(SHARE_PATH), SG_T("toolchains")));	// look for tool chains
 	#else
 		wxString	DLL_Path	= SG_File_Make_Path(CMD_Path, SG_T("dll")).c_str();
 
@@ -477,6 +476,13 @@ bool		Check_First		(const CSG_String &Argument)
 //---------------------------------------------------------
 bool		Check_Flags		(const CSG_String &Argument)
 {
+#if   defined(_SAGA_LINUX)
+	CSG_String	Path_Shared	= SHARE_PATH;
+#elif defined(_SAGA_MSW)
+	CSG_String	Path_Shared	= SG_File_Get_Path(SG_UI_Get_Application_Path());
+#endif
+
+	//-----------------------------------------------------
 	CSG_String	s(Argument.BeforeFirst(SG_T('=')));
 
 	if( !s.CmpNoCase("-f") || !s.CmpNoCase("--flags") )
@@ -488,24 +494,29 @@ bool		Check_Flags		(const CSG_String &Argument)
 		CMD_Set_Interactive  (s.Find('i') >= 0                  );	// i: allow user interaction
 		CMD_Set_XML          (s.Find('x') >= 0                  );	// x: message output as xml
 
+		//-------------------------------------------------
 		if( s.Find('l') >= 0 )	// l: load translation dictionary
 		{
-			SG_Get_Translator() .Create(SG_File_Make_Path(SG_File_Get_Path(SG_UI_Get_Application_Path()),
-				SG_T("saga"    ), SG_T("lng")), false);
+			SG_Printf(CSG_String::Format("\n%s:", _TL("loading translation dictionary")));
+
+			SG_Printf(CSG_String::Format("\n%s.\n",
+				SG_Get_Translator().Create(SG_File_Make_Path(Path_Shared, SG_T("saga"), SG_T("lng")), false)
+				? _TL("success") : _TL("failed")
+			));
 		}
 
+		//-------------------------------------------------
 		if( s.Find('p') >= 0 )	// p: load projections dictionary
 		{
-#if defined(_SAGA_LINUX)
-		SG_Get_Projections().Create(SG_File_Make_Path(SG_File_Get_Path( CSG_String(SHARE_PATH)),
-			SG_T("saga_prj"), SG_T("srs")));
-#endif
-#if defined(_SAGA_MSW)
-		SG_Get_Projections().Create(SG_File_Make_Path(SG_File_Get_Path(SG_UI_Get_Application_Path()),
-			SG_T("saga_prj"), SG_T("srs")));
-#endif
+			SG_Printf(CSG_String::Format("\n%s:", _TL("loading spatial reference system database")));
+
+			SG_Printf(CSG_String::Format("\n%s.\n",
+				SG_Get_Projections().Create(SG_File_Make_Path(Path_Shared, SG_T("saga_prj"), SG_T("srs")))
+				? _TL("success") : _TL("failed")
+			));
 		}
 
+		//-------------------------------------------------
 		if( s.Find('o') >= 0 )	// o: load old style naming, has no effect if l-flag is set.
 		{
 			SG_Set_OldStyle_Naming();
@@ -514,22 +525,24 @@ bool		Check_Flags		(const CSG_String &Argument)
 		return( true );
 	}
 
+	//-----------------------------------------------------
 	else if( !s.CmpNoCase("-c") || !s.CmpNoCase("--cores") )
 	{
 		#ifdef _OPENMP
 		int	nCores	= 1;
 
-		if( !CSG_String(Argument).AfterFirst('=').asInt(nCores) || nCores > SG_Get_Max_Num_Procs_Omp() )
+		if( !CSG_String(Argument).AfterFirst('=').asInt(nCores) || nCores > SG_OMP_Get_Max_Num_Procs() )
 		{
-			nCores	= SG_Get_Max_Num_Procs_Omp();
+			nCores	= SG_OMP_Get_Max_Num_Procs();
 		}
 
-		SG_Set_Max_Num_Threads_Omp(nCores);
+		SG_OMP_Set_Max_Num_Threads(nCores);
 		#endif // _OPENMP
 
 		return( true );
 	}
 
+	//-----------------------------------------------------
 	else if( !s.CmpNoCase("-s") || !s.CmpNoCase("--story") )
 	{
 		int	Depth;
@@ -542,6 +555,7 @@ bool		Check_Flags		(const CSG_String &Argument)
 		return( true );
 	}
 
+	//-----------------------------------------------------
 	return( false );
 }
 
@@ -555,8 +569,6 @@ bool		Check_Flags		(const CSG_String &Argument)
 //---------------------------------------------------------
 void		Print_Libraries	(void)
 {
-	CMD_Print_Error(_TL("select a library"));
-
 	if( CMD_Get_Show_Messages() )
 	{
 		if( CMD_Get_XML() )
@@ -567,16 +579,16 @@ void		Print_Libraries	(void)
 		{
 			CMD_Print(SG_Get_Module_Library_Manager().Get_Summary(SG_SUMMARY_FMT_FLAT_NO_INTERACTIVE));
 
+			CMD_Print_Error(_TL("select a library"));
+
 			Print_Get_Help();
 		}
 	}
 }
 
 //---------------------------------------------------------
-void		Print_Modules	(CSG_Module_Library *pLibrary)
+void		Print_Tools		(CSG_Module_Library *pLibrary)
 {
-	CMD_Print_Error(_TL("select a tool"));
-
 	if( CMD_Get_Show_Messages() )
 	{
 		if( CMD_Get_XML() )
@@ -587,13 +599,15 @@ void		Print_Modules	(CSG_Module_Library *pLibrary)
 		{
 			CMD_Print(pLibrary->Get_Summary(SG_SUMMARY_FMT_FLAT_NO_INTERACTIVE));
 
+			CMD_Print_Error(_TL("select a tool"));
+
 			Print_Get_Help();
 		}
 	}
 }
 
 //---------------------------------------------------------
-void		Print_Execution	(CSG_Module_Library *pLibrary, CSG_Module *pModule)
+void		Print_Execution	(CSG_Module_Library *pLibrary, CSG_Module *pTool)
 {
 	if( CMD_Get_Show_Messages() )
 	{
@@ -608,13 +622,13 @@ void		Print_Execution	(CSG_Module_Library *pLibrary, CSG_Module *pModule)
 		else
 		{
 			SG_PRINTF(SG_T("____________________________\n"));
-			SG_PRINTF(SG_T("%s:\t%s\n"     ), _TL("library path"), SG_File_Get_Path(pLibrary->Get_File_Name()       ).c_str());
-			SG_PRINTF(SG_T("%s:\t%s\n"     ), _TL("library name"), SG_File_Get_Name(pLibrary->Get_File_Name(), false).c_str());
-			SG_PRINTF(SG_T("%s:\t%s\n"     ), _TL("library     "), pLibrary->Get_Name     ().c_str());
-			SG_PRINTF(SG_T("%s:\t%s\n"     ), _TL("tool        "), pModule ->Get_Name     ().c_str());
-			SG_PRINTF(SG_T("%s:\t%s\n"     ), _TL("author      "), pModule ->Get_Author   ().c_str());
+			SG_PRINTF(SG_T("%s: %s\n"), _TL("library path"), SG_File_Get_Path(pLibrary->Get_File_Name()       ).c_str());
+			SG_PRINTF(SG_T("%s: %s\n"), _TL("library name"), SG_File_Get_Name(pLibrary->Get_File_Name(), false).c_str());
+			SG_PRINTF(SG_T("%s: %s\n"), _TL("library     "), pLibrary->Get_Name  ().c_str());
+			SG_PRINTF(SG_T("%s: %s\n"), _TL("tool        "), pTool   ->Get_Name  ().c_str());
+			SG_PRINTF(SG_T("%s: %s\n"), _TL("author      "), pTool   ->Get_Author().c_str());
 		#ifdef _OPENMP
-			SG_PRINTF(SG_T("%s:\t%d [%d]\n"), _TL("processors  "), SG_Get_Max_Num_Threads_Omp(), SG_Get_Max_Num_Procs_Omp());
+			SG_PRINTF(SG_T("%s: %d [%d]\n"), _TL("processors  "), SG_OMP_Get_Max_Num_Threads(), SG_OMP_Get_Max_Num_Procs());
 		#endif // _OPENMP
 			SG_PRINTF(SG_T("____________________________\n\n"));
 		}
diff --git a/src/saga_core/saga_gdi/3d_view.h b/src/saga_core/saga_gdi/3d_view.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gdi/3d_view_canvas.cpp b/src/saga_core/saga_gdi/3d_view_canvas.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gdi/3d_view_dialog.cpp b/src/saga_core/saga_gdi/3d_view_dialog.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gdi/3d_view_panel.cpp b/src/saga_core/saga_gdi/3d_view_panel.cpp
old mode 100644
new mode 100755
index 3b8db35..0ff5daa
--- a/src/saga_core/saga_gdi/3d_view_panel.cpp
+++ b/src/saga_core/saga_gdi/3d_view_panel.cpp
@@ -177,14 +177,13 @@ CSG_3DView_Panel::CSG_3DView_Panel(wxWindow *pParent, CSG_Grid *pDrape)
 		);
 
 		m_Parameters.Add_Choice(
-			pNode_1	, "DRAPE_MODE"	, _TL("Map Draping Interpolation"),
+			pNode_1	, "DRAPE_MODE"	, _TL("Map Drape Resampling"),
 			_TL(""),
-			CSG_String::Format(SG_T("%s|%s|%s|%s|%s|"),
-				_TL("None"),
-				_TL("Bilinear"),
-				_TL("Inverse Distance"),
-				_TL("Bicubic Spline"),
-				_TL("B-Spline")
+			CSG_String::Format("%s|%s|%s|%s|",
+				_TL("Nearest Neighbour"),
+				_TL("Bilinear Interpolation"),
+				_TL("Bicubic Spline Interpolation"),
+				_TL("B-Spline Interpolation")
 			), 0
 		);
 	}
@@ -264,17 +263,17 @@ int CSG_3DView_Panel::On_Parameters_Enable(CSG_Parameters *pParameters, CSG_Para
 {
 	if( !SG_STR_CMP(pParameter->Get_Identifier(), "CENTRAL") )
 	{
-		pParameters->Get_Parameter("CENTRAL_DIST")->Set_Enabled(pParameter->asInt() == 1);
+		pParameters->Set_Enabled("CENTRAL_DIST", pParameter->asInt() == 1);
 	}
 
 	if( !SG_STR_CMP(pParameter->Get_Identifier(), "DO_DRAPE") )
 	{
-		pParameters->Get_Parameter("DRAPE_MODE")->Set_Enabled(pParameter->asBool());
+		pParameters->Set_Enabled("DRAPE_MODE"  , pParameter->asBool());
 	}
 
 	if( !SG_STR_CMP(pParameter->Get_Identifier(), "STEREO") )
 	{
-		pParameters->Get_Parameter("STEREO_DIST")->Set_Enabled(pParameter->asBool());
+		pParameters->Set_Enabled("STEREO_DIST" , pParameter->asBool());
 	}
 
 	return( 1 );
@@ -529,11 +528,18 @@ bool CSG_3DView_Panel::Update_View(bool bStatistics)
 	//-----------------------------------------------------
 	if( m_Play_State == SG_3DVIEW_PLAY_STOP )
 	{
-		m_bgColor		= m_Parameters("BGCOLOR"    )->asColor ();
-		m_bBox			= m_Parameters("DRAW_BOX"   )->asBool  ();
-		m_bStereo		= m_Parameters("STEREO"     )->asBool  ();
-		m_dStereo		= m_Parameters("STEREO_DIST")->asDouble();
-		m_Drape_Mode	= m_pDrape ? m_Parameters("DRAPE_MODE" )->asInt() : 0;
+		m_bgColor	= m_Parameters("BGCOLOR"    )->asColor ();
+		m_bBox		= m_Parameters("DRAW_BOX"   )->asBool  ();
+		m_bStereo	= m_Parameters("STEREO"     )->asBool  ();
+		m_dStereo	= m_Parameters("STEREO_DIST")->asDouble();
+
+		switch( m_Parameters("DRAPE_MODE") ? m_Parameters("DRAPE_MODE")->asInt() : 0 )
+		{
+		default:	m_Drape_Mode	= GRID_RESAMPLING_NearestNeighbour;	break;
+		case  1:	m_Drape_Mode	= GRID_RESAMPLING_Bilinear;			break;
+		case  2:	m_Drape_Mode	= GRID_RESAMPLING_BicubicSpline;	break;
+		case  3:	m_Drape_Mode	= GRID_RESAMPLING_BSpline;			break;
+		}
 
 		m_Projector.do_Central          (m_Parameters("CENTRAL")->asInt() == 1);
 		m_Projector.Set_Central_Distance(m_Parameters("CENTRAL_DIST")->asDouble());
diff --git a/src/saga_core/saga_gdi/3d_view_projector.cpp b/src/saga_core/saga_gdi/3d_view_projector.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gdi/3d_view_tools.h b/src/saga_core/saga_gdi/3d_view_tools.h
old mode 100644
new mode 100755
index d20722e..5f0eaa9
--- a/src/saga_core/saga_gdi/3d_view_tools.h
+++ b/src/saga_core/saga_gdi/3d_view_tools.h
@@ -162,10 +162,12 @@ protected:
 
 	bool						m_bBox, m_bStereo;
 
-	int							m_bgColor, m_Drape_Mode;
-
+	int							m_bgColor;
+	
 	double						m_dStereo;
 
+	TSG_Grid_Resampling			m_Drape_Mode;
+
 	TSG_Point_Z					m_Data_Min, m_Data_Max;
 
 	CSG_Grid					*m_pDrape;
diff --git a/src/saga_core/saga_gdi/Makefile.am b/src/saga_core/saga_gdi/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gdi/saga_gdi.cpp b/src/saga_core/saga_gdi/saga_gdi.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gdi/saga_gdi.h b/src/saga_core/saga_gdi/saga_gdi.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gdi/sgdi_core.h b/src/saga_core/saga_gdi/sgdi_core.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gdi/sgdi_diagram.cpp b/src/saga_core/saga_gdi/sgdi_diagram.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gdi/sgdi_diagram.h b/src/saga_core/saga_gdi/sgdi_diagram.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gdi/sgdi_dialog.cpp b/src/saga_core/saga_gdi/sgdi_dialog.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gdi/sgdi_dialog.h b/src/saga_core/saga_gdi/sgdi_dialog.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gdi/sgdi_helper.cpp b/src/saga_core/saga_gdi/sgdi_helper.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gdi/sgdi_helper.h b/src/saga_core/saga_gdi/sgdi_helper.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/Makefile.am b/src/saga_core/saga_gui/Makefile.am
old mode 100644
new mode 100755
index f7b23ec..c585012
--- a/src/saga_core/saga_gui/Makefile.am
+++ b/src/saga_core/saga_gui/Makefile.am
@@ -1,5 +1,5 @@
 #
-# $Id: Makefile.am 2696 2015-11-23 18:35:08Z oconrad $
+# $Id: Makefile.am 2809 2016-02-22 11:40:22Z oconrad $
 #
 INCS = -I.. -I.
 if DEBUG
@@ -25,7 +25,6 @@ active_attributes.cpp\
 active_attributes_control.cpp\
 active_description.cpp\
 active_history.cpp\
-active_HTMLExtraInfo.cpp\
 active_legend.cpp\
 active_parameters.cpp\
 callback.cpp\
@@ -94,6 +93,7 @@ wksp_layer.cpp\
 wksp_layer_classify.cpp\
 wksp_layer_legend.cpp\
 wksp_map.cpp\
+wksp_map_basemap.cpp\
 wksp_map_buttons.cpp\
 wksp_map_control.cpp\
 wksp_map_dc.cpp\
@@ -124,7 +124,6 @@ active_attributes.h\
 active_attributes_control.h\
 active_description.h\
 active_history.h\
-active_HTMLExtraInfo.h\
 active_legend.h\
 active_parameters.h\
 callback.h\
@@ -193,6 +192,7 @@ wksp_layer.h\
 wksp_layer_classify.h\
 wksp_layer_legend.h\
 wksp_map.h\
+wksp_map_basemap.h\
 wksp_map_buttons.h\
 wksp_map_control.h\
 wksp_map_dc.h\
diff --git a/src/saga_core/saga_gui/Makefile.in b/src/saga_core/saga_gui/Makefile.in
index 1c22bee..58e7f2b 100644
--- a/src/saga_core/saga_gui/Makefile.in
+++ b/src/saga_core/saga_gui/Makefile.in
@@ -107,40 +107,40 @@ PROGRAMS = $(bin_PROGRAMS)
 am_saga_gui_OBJECTS = active.$(OBJEXT) active_attributes.$(OBJEXT) \
 	active_attributes_control.$(OBJEXT) \
 	active_description.$(OBJEXT) active_history.$(OBJEXT) \
-	active_HTMLExtraInfo.$(OBJEXT) active_legend.$(OBJEXT) \
-	active_parameters.$(OBJEXT) callback.$(OBJEXT) \
-	data_source.$(OBJEXT) data_source_files.$(OBJEXT) \
-	data_source_odbc.$(OBJEXT) data_source_pgsql.$(OBJEXT) \
-	dc_helper.$(OBJEXT) dlg_about.$(OBJEXT) \
-	dlg_about_logo.$(OBJEXT) dlg_base.$(OBJEXT) \
-	dlg_colors.$(OBJEXT) dlg_colors_control.$(OBJEXT) \
-	dlg_list_base.$(OBJEXT) dlg_list_grid.$(OBJEXT) \
-	dlg_list_pointcloud.$(OBJEXT) dlg_list_shapes.$(OBJEXT) \
-	dlg_list_table.$(OBJEXT) dlg_list_tin.$(OBJEXT) \
-	dlg_parameters.$(OBJEXT) dlg_table.$(OBJEXT) \
-	dlg_table_control.$(OBJEXT) dlg_text.$(OBJEXT) \
-	helper.$(OBJEXT) info.$(OBJEXT) info_messages.$(OBJEXT) \
-	parameters_control.$(OBJEXT) parameters_properties.$(OBJEXT) \
-	project.$(OBJEXT) res_commands.$(OBJEXT) \
-	res_controls.$(OBJEXT) res_dialogs.$(OBJEXT) \
-	res_images.$(OBJEXT) saga.$(OBJEXT) saga_frame.$(OBJEXT) \
-	saga_frame_droptarget.$(OBJEXT) view_base.$(OBJEXT) \
-	view_histogram.$(OBJEXT) view_layout.$(OBJEXT) \
-	view_layout_control.$(OBJEXT) view_layout_info.$(OBJEXT) \
-	view_layout_printout.$(OBJEXT) view_map.$(OBJEXT) \
-	view_map_3d.$(OBJEXT) view_map_3d_panel.$(OBJEXT) \
-	view_map_control.$(OBJEXT) view_ruler.$(OBJEXT) \
-	view_scatterplot.$(OBJEXT) view_table.$(OBJEXT) \
-	view_table_control.$(OBJEXT) view_table_diagram.$(OBJEXT) \
-	wksp.$(OBJEXT) wksp_base_control.$(OBJEXT) \
-	wksp_base_item.$(OBJEXT) wksp_base_manager.$(OBJEXT) \
-	wksp_data_control.$(OBJEXT) wksp_data_item.$(OBJEXT) \
-	wksp_data_layers.$(OBJEXT) wksp_data_manager.$(OBJEXT) \
-	wksp_data_menu_file.$(OBJEXT) wksp_data_menu_files.$(OBJEXT) \
-	wksp_grid.$(OBJEXT) wksp_grid_manager.$(OBJEXT) \
-	wksp_grid_system.$(OBJEXT) wksp_layer.$(OBJEXT) \
-	wksp_layer_classify.$(OBJEXT) wksp_layer_legend.$(OBJEXT) \
-	wksp_map.$(OBJEXT) wksp_map_buttons.$(OBJEXT) \
+	active_legend.$(OBJEXT) active_parameters.$(OBJEXT) \
+	callback.$(OBJEXT) data_source.$(OBJEXT) \
+	data_source_files.$(OBJEXT) data_source_odbc.$(OBJEXT) \
+	data_source_pgsql.$(OBJEXT) dc_helper.$(OBJEXT) \
+	dlg_about.$(OBJEXT) dlg_about_logo.$(OBJEXT) \
+	dlg_base.$(OBJEXT) dlg_colors.$(OBJEXT) \
+	dlg_colors_control.$(OBJEXT) dlg_list_base.$(OBJEXT) \
+	dlg_list_grid.$(OBJEXT) dlg_list_pointcloud.$(OBJEXT) \
+	dlg_list_shapes.$(OBJEXT) dlg_list_table.$(OBJEXT) \
+	dlg_list_tin.$(OBJEXT) dlg_parameters.$(OBJEXT) \
+	dlg_table.$(OBJEXT) dlg_table_control.$(OBJEXT) \
+	dlg_text.$(OBJEXT) helper.$(OBJEXT) info.$(OBJEXT) \
+	info_messages.$(OBJEXT) parameters_control.$(OBJEXT) \
+	parameters_properties.$(OBJEXT) project.$(OBJEXT) \
+	res_commands.$(OBJEXT) res_controls.$(OBJEXT) \
+	res_dialogs.$(OBJEXT) res_images.$(OBJEXT) saga.$(OBJEXT) \
+	saga_frame.$(OBJEXT) saga_frame_droptarget.$(OBJEXT) \
+	view_base.$(OBJEXT) view_histogram.$(OBJEXT) \
+	view_layout.$(OBJEXT) view_layout_control.$(OBJEXT) \
+	view_layout_info.$(OBJEXT) view_layout_printout.$(OBJEXT) \
+	view_map.$(OBJEXT) view_map_3d.$(OBJEXT) \
+	view_map_3d_panel.$(OBJEXT) view_map_control.$(OBJEXT) \
+	view_ruler.$(OBJEXT) view_scatterplot.$(OBJEXT) \
+	view_table.$(OBJEXT) view_table_control.$(OBJEXT) \
+	view_table_diagram.$(OBJEXT) wksp.$(OBJEXT) \
+	wksp_base_control.$(OBJEXT) wksp_base_item.$(OBJEXT) \
+	wksp_base_manager.$(OBJEXT) wksp_data_control.$(OBJEXT) \
+	wksp_data_item.$(OBJEXT) wksp_data_layers.$(OBJEXT) \
+	wksp_data_manager.$(OBJEXT) wksp_data_menu_file.$(OBJEXT) \
+	wksp_data_menu_files.$(OBJEXT) wksp_grid.$(OBJEXT) \
+	wksp_grid_manager.$(OBJEXT) wksp_grid_system.$(OBJEXT) \
+	wksp_layer.$(OBJEXT) wksp_layer_classify.$(OBJEXT) \
+	wksp_layer_legend.$(OBJEXT) wksp_map.$(OBJEXT) \
+	wksp_map_basemap.$(OBJEXT) wksp_map_buttons.$(OBJEXT) \
 	wksp_map_control.$(OBJEXT) wksp_map_dc.$(OBJEXT) \
 	wksp_map_graticule.$(OBJEXT) wksp_map_layer.$(OBJEXT) \
 	wksp_map_manager.$(OBJEXT) wksp_module.$(OBJEXT) \
@@ -459,7 +459,7 @@ top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 
 #
-# $Id: Makefile.am 2696 2015-11-23 18:35:08Z oconrad $
+# $Id: Makefile.am 2809 2016-02-22 11:40:22Z oconrad $
 #
 INCS = -I.. -I.
 @DEBUG_TRUE at DBGFLAGS = -g -DDEBUG
@@ -476,7 +476,6 @@ active_attributes.cpp\
 active_attributes_control.cpp\
 active_description.cpp\
 active_history.cpp\
-active_HTMLExtraInfo.cpp\
 active_legend.cpp\
 active_parameters.cpp\
 callback.cpp\
@@ -545,6 +544,7 @@ wksp_layer.cpp\
 wksp_layer_classify.cpp\
 wksp_layer_legend.cpp\
 wksp_map.cpp\
+wksp_map_basemap.cpp\
 wksp_map_buttons.cpp\
 wksp_map_control.cpp\
 wksp_map_dc.cpp\
@@ -575,7 +575,6 @@ active_attributes.h\
 active_attributes_control.h\
 active_description.h\
 active_history.h\
-active_HTMLExtraInfo.h\
 active_legend.h\
 active_parameters.h\
 callback.h\
@@ -644,6 +643,7 @@ wksp_layer.h\
 wksp_layer_classify.h\
 wksp_layer_legend.h\
 wksp_map.h\
+wksp_map_basemap.h\
 wksp_map_buttons.h\
 wksp_map_control.h\
 wksp_map_dc.h\
@@ -773,7 +773,6 @@ distclean-compile:
 	-rm -f *.tab.c
 
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/active.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/active_HTMLExtraInfo.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/active_attributes.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/active_attributes_control.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/active_description.Po at am__quote@
@@ -846,6 +845,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/wksp_layer_classify.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/wksp_layer_legend.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/wksp_map.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/wksp_map_basemap.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/wksp_map_buttons.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/wksp_map_control.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/wksp_map_dc.Po at am__quote@
diff --git a/src/saga_core/saga_gui/active.cpp b/src/saga_core/saga_gui/active.cpp
old mode 100644
new mode 100755
index 197340e..6ed19fa
--- a/src/saga_core/saga_gui/active.cpp
+++ b/src/saga_core/saga_gui/active.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: active.cpp 2629 2015-10-01 09:40:40Z oconrad $
+ * Version $Id: active.cpp 2809 2016-02-22 11:40:22Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -82,7 +82,6 @@
 #include "active_history.h"
 #include "active_attributes.h"
 #include "active_legend.h"
-#include "active_HTMLExtraInfo.h"
 
 #include "wksp_module.h"
 
diff --git a/src/saga_core/saga_gui/active.h b/src/saga_core/saga_gui/active.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/active_HTMLExtraInfo.cpp b/src/saga_core/saga_gui/active_HTMLExtraInfo.cpp
deleted file mode 100644
index 2c5fa2c..0000000
--- a/src/saga_core/saga_gui/active_HTMLExtraInfo.cpp
+++ /dev/null
@@ -1,119 +0,0 @@
-/**********************************************************
- * Version $Id: active_HTMLExtraInfo.cpp 1921 2014-01-09 10:24:11Z oconrad $
- *********************************************************/
-///////////////////////////////////////////////////////////
-//                                                       //
-//                         SAGA                          //
-//                                                       //
-//      System for Automated Geoscientific Analyses      //
-//                                                       //
-//                    User Interface                     //
-//                                                       //
-//                    Program: SAGA                      //
-//                                                       //
-//-------------------------------------------------------//
-//                                                       //
-//               ACTIVE_HTMLExtraInfo.cpp                //
-//                                                       //
-//          Copyright (C) 2005 by Olaf Conrad            //
-//                                                       //
-//-------------------------------------------------------//
-//                                                       //
-// This file is part of 'SAGA - System for Automated     //
-// Geoscientific Analyses'. SAGA is free software; you   //
-// can redistribute it and/or modify it under the terms  //
-// of the GNU General Public License as published by the //
-// Free Software Foundation; version 2 of the License.   //
-//                                                       //
-// SAGA is distributed in the hope that it will be       //
-// useful, but WITHOUT ANY WARRANTY; without even the    //
-// implied warranty of MERCHANTABILITY or FITNESS FOR A  //
-// PARTICULAR PURPOSE. See the GNU General Public        //
-// License for more details.                             //
-//                                                       //
-// You should have received a copy of the GNU General    //
-// Public License along with this program; if not,       //
-// write to the Free Software Foundation, Inc.,          //
-// 51 Franklin Street, 5th Floor, Boston, MA 02110-1301, //
-// USA.                                                  //
-//                                                       //
-//-------------------------------------------------------//
-//                                                       //
-//    contact:    Olaf Conrad                            //
-//                Institute of Geography                 //
-//                University of Goettingen               //
-//                Goldschmidtstr. 5                      //
-//                37077 Goettingen                       //
-//                Germany                                //
-//                                                       //
-//    e-mail:     oconrad at saga-gis.org                   //
-//                                                       //
-///////////////////////////////////////////////////////////
-
-
-///////////////////////////////////////////////////////////
-//														 //
-//														 //
-//														 //
-///////////////////////////////////////////////////////////
-
-//---------------------------------------------------------
-#include "res_controls.h"
-
-#include "helper.h"
-
-#include "active_HTMLExtraInfo.h"
-
-
-///////////////////////////////////////////////////////////
-//														 //
-//														 //
-//														 //
-///////////////////////////////////////////////////////////
-
-//---------------------------------------------------------
-IMPLEMENT_CLASS(CACTIVE_HTMLExtraInfo, wxHtmlWindow)
-
-//---------------------------------------------------------
-BEGIN_EVENT_TABLE(CACTIVE_HTMLExtraInfo, wxHtmlWindow)
-END_EVENT_TABLE()
-
-
-///////////////////////////////////////////////////////////
-//														 //
-//														 //
-//														 //
-///////////////////////////////////////////////////////////
-
-//---------------------------------------------------------
-CACTIVE_HTMLExtraInfo::CACTIVE_HTMLExtraInfo(wxWindow *pParent)
-	: wxHtmlWindow(pParent, ID_WND_ACTIVE_HTMLEXTRAINFO , wxDefaultPosition, wxDefaultSize, wxHW_SCROLLBAR_AUTO|wxSUNKEN_BORDER)
-{
-}
-
-//---------------------------------------------------------
-CACTIVE_HTMLExtraInfo::~CACTIVE_HTMLExtraInfo(void)
-{
-}
-
-
-///////////////////////////////////////////////////////////
-//														 //
-//														 //
-//														 //
-///////////////////////////////////////////////////////////
-
-//---------------------------------------------------------
-void CACTIVE_HTMLExtraInfo::OnLinkClicked(const wxHtmlLinkInfo &Link)
-{
-	Open_WebBrowser(Link.GetHref());
-}
-
-
-///////////////////////////////////////////////////////////
-//														 //
-//														 //
-//														 //
-///////////////////////////////////////////////////////////
-
-//---------------------------------------------------------
diff --git a/src/saga_core/saga_gui/active_HTMLExtraInfo.h b/src/saga_core/saga_gui/active_HTMLExtraInfo.h
deleted file mode 100644
index a054fdc..0000000
--- a/src/saga_core/saga_gui/active_HTMLExtraInfo.h
+++ /dev/null
@@ -1,101 +0,0 @@
-/**********************************************************
- * Version $Id: active_HTMLExtraInfo.h 1921 2014-01-09 10:24:11Z oconrad $
- *********************************************************/
-///////////////////////////////////////////////////////////
-//                                                       //
-//                         SAGA                          //
-//                                                       //
-//      System for Automated Geoscientific Analyses      //
-//                                                       //
-//                    User Interface                     //
-//                                                       //
-//                    Program: SAGA                      //
-//                                                       //
-//-------------------------------------------------------//
-//                                                       //
-//               ACTIVE_HTMLExtraInfo.h                  //
-//                                                       //
-//          Copyright (C) 2005 by Olaf Conrad            //
-//                                                       //
-//-------------------------------------------------------//
-//                                                       //
-// This file is part of 'SAGA - System for Automated     //
-// Geoscientific Analyses'. SAGA is free software; you   //
-// can redistribute it and/or modify it under the terms  //
-// of the GNU General Public License as published by the //
-// Free Software Foundation; version 2 of the License.   //
-//                                                       //
-// SAGA is distributed in the hope that it will be       //
-// useful, but WITHOUT ANY WARRANTY; without even the    //
-// implied warranty of MERCHANTABILITY or FITNESS FOR A  //
-// PARTICULAR PURPOSE. See the GNU General Public        //
-// License for more details.                             //
-//                                                       //
-// You should have received a copy of the GNU General    //
-// Public License along with this program; if not,       //
-// write to the Free Software Foundation, Inc.,          //
-// 51 Franklin Street, 5th Floor, Boston, MA 02110-1301, //
-// USA.                                                  //
-//                                                       //
-//-------------------------------------------------------//
-//                                                       //
-//    contact:    Olaf Conrad                            //
-//                Institute of Geography                 //
-//                University of Goettingen               //
-//                Goldschmidtstr. 5                      //
-//                37077 Goettingen                       //
-//                Germany                                //
-//                                                       //
-//    e-mail:     oconrad at saga-gis.org                   //
-//                                                       //
-///////////////////////////////////////////////////////////
-
-//---------------------------------------------------------
-#ifndef _HEADER_INCLUDED__SAGA_GUI__ACTIVE_HTMLExtraInfo_H
-#define _HEADER_INCLUDED__SAGA_GUI__ACTIVE_HTMLExtraInfo_H
-
-
-///////////////////////////////////////////////////////////
-//														 //
-//														 //
-//														 //
-///////////////////////////////////////////////////////////
-
-//---------------------------------------------------------
-#include <wx/html/htmlwin.h>
-
-
-///////////////////////////////////////////////////////////
-//														 //
-//														 //
-//														 //
-///////////////////////////////////////////////////////////
-
-//---------------------------------------------------------
-class CACTIVE_HTMLExtraInfo : public wxHtmlWindow
-{
-	DECLARE_CLASS(CACTIVE_HTMLExtraInfo)
-
-public:
-	CACTIVE_HTMLExtraInfo(wxWindow *pParent);
-	virtual ~CACTIVE_HTMLExtraInfo(void);
-
-	virtual void			OnLinkClicked	(const wxHtmlLinkInfo &Link);
-
-
-private:
-
-
-//---------------------------------------------------------
-DECLARE_EVENT_TABLE()
-};
-
-
-///////////////////////////////////////////////////////////
-//														 //
-//														 //
-//														 //
-///////////////////////////////////////////////////////////
-
-//---------------------------------------------------------
-#endif // #ifndef _HEADER_INCLUDED__SAGA_GUI__ACTIVE_HTMLExtraInfo_H
diff --git a/src/saga_core/saga_gui/active_attributes.cpp b/src/saga_core/saga_gui/active_attributes.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/active_attributes.h b/src/saga_core/saga_gui/active_attributes.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/active_attributes_control.cpp b/src/saga_core/saga_gui/active_attributes_control.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/active_attributes_control.h b/src/saga_core/saga_gui/active_attributes_control.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/active_description.cpp b/src/saga_core/saga_gui/active_description.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/active_description.h b/src/saga_core/saga_gui/active_description.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/active_history.cpp b/src/saga_core/saga_gui/active_history.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/active_history.h b/src/saga_core/saga_gui/active_history.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/active_legend.cpp b/src/saga_core/saga_gui/active_legend.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/active_legend.h b/src/saga_core/saga_gui/active_legend.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/active_parameters.cpp b/src/saga_core/saga_gui/active_parameters.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/active_parameters.h b/src/saga_core/saga_gui/active_parameters.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/callback.cpp b/src/saga_core/saga_gui/callback.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/callback.h b/src/saga_core/saga_gui/callback.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/data_source.cpp b/src/saga_core/saga_gui/data_source.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/data_source.h b/src/saga_core/saga_gui/data_source.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/data_source_files.cpp b/src/saga_core/saga_gui/data_source_files.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/data_source_files.h b/src/saga_core/saga_gui/data_source_files.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/data_source_odbc.cpp b/src/saga_core/saga_gui/data_source_odbc.cpp
old mode 100644
new mode 100755
index 8b30d1f..3a82422
--- a/src/saga_core/saga_gui/data_source_odbc.cpp
+++ b/src/saga_core/saga_gui/data_source_odbc.cpp
@@ -295,13 +295,16 @@ void CData_Source_ODBC::On_Item_Menu(wxTreeEvent &event)
 	\
 	if(	pModule )\
 	{\
+		SG_UI_Msg_Lock(true);\
 		pModule->Settings_Push(NULL);\
 		bRetVal	= pModule->On_Before_Execution() && (CONDITION) && pModule->Execute();\
 		pModule->Settings_Pop();\
+		SG_UI_Msg_Lock(false);\
 	}\
 }
 
-#define SET_PARAMETER(IDENTIFIER, VALUE)	pModule->Get_Parameters()->Set_Parameter(SG_T(IDENTIFIER), VALUE)
+//---------------------------------------------------------
+#define SET_PARAMETER(IDENTIFIER, VALUE)	pModule->Set_Parameter(IDENTIFIER, VALUE)
 
 //---------------------------------------------------------
 bool CData_Source_ODBC::is_Connected(const CSG_String &Server)
@@ -453,7 +456,9 @@ void CData_Source_ODBC::Source_Close_All(void)
 
 	if( pModule )
 	{
+		SG_UI_Msg_Lock(true);
 		pModule->Execute();
+		SG_UI_Msg_Lock(false);
 	}
 }
 
@@ -466,9 +471,11 @@ void CData_Source_ODBC::Source_Close(const wxTreeItemId &Item)
 
 	if( pModule )
 	{
+		SG_UI_Msg_Lock(true);
 		pModule->On_Before_Execution();
 		pModule->Get_Parameters()->Set_Parameter("SERVERS", pData->Get_Value());
 		pModule->Execute();
+		SG_UI_Msg_Lock(false);
 	}
 }
 
diff --git a/src/saga_core/saga_gui/data_source_odbc.h b/src/saga_core/saga_gui/data_source_odbc.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/data_source_pgsql.cpp b/src/saga_core/saga_gui/data_source_pgsql.cpp
old mode 100644
new mode 100755
index 4983a10..3bb3720
--- a/src/saga_core/saga_gui/data_source_pgsql.cpp
+++ b/src/saga_core/saga_gui/data_source_pgsql.cpp
@@ -153,9 +153,11 @@ enum
 	\
 	if(	pModule )\
 	{\
+		SG_UI_Msg_Lock(true);\
 		pModule->Settings_Push(bManager ? &SG_Get_Data_Manager() : NULL);\
 		bResult	= pModule->On_Before_Execution() && (CONDITION) && pModule->Execute();\
 		pModule->Settings_Pop();\
+		SG_UI_Msg_Lock(false);\
 	}\
 }
 
@@ -262,12 +264,18 @@ bool	PGSQL_Save_Table	(CSG_Table *pTable)
 {
 	CSG_Module	*pModule	= SG_Get_Module_Library_Manager().Get_Module("db_pgsql", DB_PGSQL_Table_Save);
 
-	if(	pModule && pModule->On_Before_Execution() && pModule->Set_Parameter("SHAPES", pTable)
+	SG_UI_Msg_Lock(true);
+
+	if(	pModule && pModule->On_Before_Execution() && pModule->Set_Parameter("TABLE", pTable)
 	&&  DLG_Parameters(pModule->Get_Parameters()) && pModule->Execute() )
 	{
+		SG_UI_Msg_Lock(false);
+
 		return( true );
 	}
 
+	SG_UI_Msg_Lock(false);
+
 	return( false );
 }
 
@@ -276,12 +284,18 @@ bool	PGSQL_Save_Shapes	(CSG_Shapes *pShapes)
 {
 	CSG_Module	*pModule	= SG_Get_Module_Library_Manager().Get_Module("db_pgsql", DB_PGSQL_Shapes_Save);
 
+	SG_UI_Msg_Lock(true);
+
 	if(	pModule && pModule->On_Before_Execution() && pModule->Set_Parameter("SHAPES", pShapes)
 	&&  DLG_Parameters(pModule->Get_Parameters()) && pModule->Execute() )
 	{
+		SG_UI_Msg_Lock(false);
+
 		return( true );
 	}
 
+	SG_UI_Msg_Lock(false);
+
 	return( false );
 }
 
@@ -290,6 +304,8 @@ bool	PGSQL_Save_Grid		(CSG_Grid *pGrid)
 {
 	CSG_Module	*pModule	= SG_Get_Module_Library_Manager().Get_Module("db_pgsql", DB_PGSQL_Raster_Save);
 
+	SG_UI_Msg_Lock(true);
+
 	if(	pModule && pModule->On_Before_Execution() && pModule->Set_Parameter("NAME", pGrid->Get_Name()) )
 	{
 		pModule->Get_Parameters()->Get_Parameter("GRIDS")->asList()->Del_Items();
@@ -297,10 +313,14 @@ bool	PGSQL_Save_Grid		(CSG_Grid *pGrid)
 		if( pModule->Get_Parameters()->Get_Parameter("GRIDS")->asList()->Add_Item(pGrid)
 		&&  DLG_Parameters(pModule->Get_Parameters()) && pModule->Execute() )
 		{
+			SG_UI_Msg_Lock(false);
+
 			return( true );
 		}
 	}
 
+	SG_UI_Msg_Lock(false);
+
 	return( false );
 }
 
@@ -926,6 +946,8 @@ bool CData_Source_PgSQL::Source_Create(const wxTreeItemId &Item)
 	{
 		CSG_Module	*pModule	= SG_Get_Module_Library_Manager().Get_Module("db_pgsql", DB_PGSQL_DB_Create);
 
+		SG_UI_Msg_Lock(true);
+
 		if(	pModule && pModule->On_Before_Execution() )
 		{
 			if( pData->Get_Type() == TYPE_SERVER )
@@ -939,6 +961,8 @@ bool CData_Source_PgSQL::Source_Create(const wxTreeItemId &Item)
 				pModule->Execute();
 			}
 		}
+
+		SG_UI_Msg_Lock(false);
 	}
 
 	return( true );
@@ -1024,6 +1048,8 @@ void CData_Source_PgSQL::Source_Open(const wxTreeItemId &Item)
 	{
 		CSG_Module	*pModule	= SG_Get_Module_Library_Manager().Get_Module("db_pgsql", DB_PGSQL_Get_Connection);	// CGet_Connection
 
+		SG_UI_Msg_Lock(true);
+
 		if(	pModule && pModule->On_Before_Execution() )
 		{
 			if( pData->Get_Type() == TYPE_SERVER )
@@ -1037,6 +1063,8 @@ void CData_Source_PgSQL::Source_Open(const wxTreeItemId &Item)
 				pModule->Execute();
 			}
 		}
+
+		SG_UI_Msg_Lock(false);
 	}
 	else if( pData->is_Connected() )
 	{
diff --git a/src/saga_core/saga_gui/data_source_pgsql.h b/src/saga_core/saga_gui/data_source_pgsql.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/dc_helper.cpp b/src/saga_core/saga_gui/dc_helper.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/dc_helper.h b/src/saga_core/saga_gui/dc_helper.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/dlg_about.cpp b/src/saga_core/saga_gui/dlg_about.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/dlg_about.h b/src/saga_core/saga_gui/dlg_about.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/dlg_about_logo.cpp b/src/saga_core/saga_gui/dlg_about_logo.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/dlg_about_logo.h b/src/saga_core/saga_gui/dlg_about_logo.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/dlg_base.cpp b/src/saga_core/saga_gui/dlg_base.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/dlg_base.h b/src/saga_core/saga_gui/dlg_base.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/dlg_colors.cpp b/src/saga_core/saga_gui/dlg_colors.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/dlg_colors.h b/src/saga_core/saga_gui/dlg_colors.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/dlg_colors_control.cpp b/src/saga_core/saga_gui/dlg_colors_control.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/dlg_colors_control.h b/src/saga_core/saga_gui/dlg_colors_control.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/dlg_list_base.cpp b/src/saga_core/saga_gui/dlg_list_base.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/dlg_list_base.h b/src/saga_core/saga_gui/dlg_list_base.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/dlg_list_grid.cpp b/src/saga_core/saga_gui/dlg_list_grid.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/dlg_list_grid.h b/src/saga_core/saga_gui/dlg_list_grid.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/dlg_list_pointcloud.cpp b/src/saga_core/saga_gui/dlg_list_pointcloud.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/dlg_list_pointcloud.h b/src/saga_core/saga_gui/dlg_list_pointcloud.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/dlg_list_shapes.cpp b/src/saga_core/saga_gui/dlg_list_shapes.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/dlg_list_shapes.h b/src/saga_core/saga_gui/dlg_list_shapes.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/dlg_list_table.cpp b/src/saga_core/saga_gui/dlg_list_table.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/dlg_list_table.h b/src/saga_core/saga_gui/dlg_list_table.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/dlg_list_tin.cpp b/src/saga_core/saga_gui/dlg_list_tin.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/dlg_list_tin.h b/src/saga_core/saga_gui/dlg_list_tin.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/dlg_parameters.cpp b/src/saga_core/saga_gui/dlg_parameters.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/dlg_parameters.h b/src/saga_core/saga_gui/dlg_parameters.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/dlg_table.cpp b/src/saga_core/saga_gui/dlg_table.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/dlg_table.h b/src/saga_core/saga_gui/dlg_table.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/dlg_table_control.cpp b/src/saga_core/saga_gui/dlg_table_control.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/dlg_table_control.h b/src/saga_core/saga_gui/dlg_table_control.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/dlg_text.cpp b/src/saga_core/saga_gui/dlg_text.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/dlg_text.h b/src/saga_core/saga_gui/dlg_text.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/helper.cpp b/src/saga_core/saga_gui/helper.cpp
old mode 100644
new mode 100755
index 962e911..49a676f
--- a/src/saga_core/saga_gui/helper.cpp
+++ b/src/saga_core/saga_gui/helper.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: helper.cpp 2511 2015-06-17 13:22:42Z oconrad $
+ * Version $Id: helper.cpp 2772 2016-02-05 15:25:43Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -226,9 +226,9 @@ wxString		Get_TableInfo_asHTML(CSG_Table *pTable)
 
 	if( pTable && pTable->is_Valid() )
 	{
-		s	+= wxString::Format(wxT("<hr><b>%s</b>"), _TL("Table Description"));
+		s	+= wxString::Format("<hr><h4>%s</h4>", _TL("Table Description"));
 
-		s	+= wxString::Format(wxT("<table border=\"1\"><tr><th>%s</th><th>%s</th><th>%s</th><th>%s</th><th>%s</th><th>%s</th><th>%s</th>"),
+		s	+= wxString::Format("<table border=\"1\"><tr><th>%s</th><th>%s</th><th>%s</th><th>%s</th><th>%s</th><th>%s</th><th>%s</th>",
 			_TL("Field"),
 			_TL("Name"),
 			_TL("Type"),
@@ -240,7 +240,7 @@ wxString		Get_TableInfo_asHTML(CSG_Table *pTable)
 
 		for(int i=0; i<pTable->Get_Field_Count(); i++)
 		{
-			s	+= wxString::Format(wxT("<tr><td>%d</td><td>%s</td><td>%s</td>"),
+			s	+= wxString::Format("<tr><td>%d</td><td>%s</td><td>%s</td>",
 				i + 1,
 				pTable->Get_Field_Name(i),
 				SG_Data_Type_Get_Name(pTable->Get_Field_Type(i)).c_str()
@@ -248,7 +248,7 @@ wxString		Get_TableInfo_asHTML(CSG_Table *pTable)
 
 			if( SG_Data_Type_is_Numeric(pTable->Get_Field_Type(i)) )
 			{
-				s	+= wxString::Format(wxT("<td align=\"right\">%s</td><td align=\"right\">%s</td><td align=\"right\">%s</td><td align=\"right\">%s</td></tr>"),
+				s	+= wxString::Format("<td align=\"right\">%s</td><td align=\"right\">%s</td><td align=\"right\">%s</td><td align=\"right\">%s</td></tr>",
 					SG_Get_String(pTable->Get_Minimum(i), -6).c_str(),
 					SG_Get_String(pTable->Get_Maximum(i), -6).c_str(),
 					SG_Get_String(pTable->Get_Mean   (i), -6).c_str(),
@@ -257,11 +257,11 @@ wxString		Get_TableInfo_asHTML(CSG_Table *pTable)
 			}
 			else
 			{
-				s	+= wxString::Format(wxT("<td></td><td></td><td></td><td></td></tr>"));
+				s	+= wxString::Format("<td></td><td></td><td></td><td></td></tr>");
 			}
 		}
 
-		s	+= wxT("</table>");
+		s	+= "</table>";
 	}
 
 	return( s );
diff --git a/src/saga_core/saga_gui/helper.h b/src/saga_core/saga_gui/helper.h
old mode 100644
new mode 100755
index 92525bd..2ea9da0
--- a/src/saga_core/saga_gui/helper.h
+++ b/src/saga_core/saga_gui/helper.h
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: helper.h 2274 2014-10-02 15:44:21Z oconrad $
+ * Version $Id: helper.h 2772 2016-02-05 15:25:43Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -201,10 +201,10 @@ enum
 void				STATUSBAR_Set_Text				(const wxString &Text, int iPane = 0);
 
 //---------------------------------------------------------
-#define DESC_ADD_STR(label, value)	s.Append(wxString::Format(wxT("<tr><td valign=\"top\">%s</td><td valign=\"top\">%s</td></tr>"), label, value))
-#define DESC_ADD_INT(label, value)	s.Append(wxString::Format(wxT("<tr><td valign=\"top\">%s</td><td valign=\"top\">%d</td></tr>"), label, value))
-#define DESC_ADD_LONG(label, value)	s.Append(wxString::Format(wxT("<tr><td valign=\"top\">%s</td><td valign=\"top\">%lld</td></tr>"), label, value))
-#define DESC_ADD_FLT(label, value)	s.Append(wxString::Format(wxT("<tr><td valign=\"top\">%s</td><td valign=\"top\">%s</td></tr>"), label, SG_Get_String(value, -20).c_str()))
+#define DESC_ADD_STR(label, value)	s.Append(wxString::Format(wxT("<tr><td valign=\"top\"><b>%s</b></td><td valign=\"top\">%s</td></tr>"), label, value))
+#define DESC_ADD_INT(label, value)	s.Append(wxString::Format(wxT("<tr><td valign=\"top\"><b>%s</b></td><td valign=\"top\">%d</td></tr>"), label, value))
+#define DESC_ADD_LONG(label, value)	s.Append(wxString::Format(wxT("<tr><td valign=\"top\"><b>%s</b></td><td valign=\"top\">%lld</td></tr>"), label, value))
+#define DESC_ADD_FLT(label, value)	s.Append(wxString::Format(wxT("<tr><td valign=\"top\"><b>%s</b></td><td valign=\"top\">%s</td></tr>"), label, SG_Get_String(value, -20).c_str()))
 
 
 ///////////////////////////////////////////////////////////
diff --git a/src/saga_core/saga_gui/info.cpp b/src/saga_core/saga_gui/info.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/info.h b/src/saga_core/saga_gui/info.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/info_messages.cpp b/src/saga_core/saga_gui/info_messages.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/info_messages.h b/src/saga_core/saga_gui/info_messages.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/man/Makefile.am b/src/saga_core/saga_gui/man/Makefile.am
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/man/saga_gui.1 b/src/saga_core/saga_gui/man/saga_gui.1
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/parameters_control.cpp b/src/saga_core/saga_gui/parameters_control.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/parameters_control.h b/src/saga_core/saga_gui/parameters_control.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/parameters_properties.cpp b/src/saga_core/saga_gui/parameters_properties.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/parameters_properties.h b/src/saga_core/saga_gui/parameters_properties.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/project.cpp b/src/saga_core/saga_gui/project.cpp
old mode 100644
new mode 100755
index 6da9e85..d2b77ab
--- a/src/saga_core/saga_gui/project.cpp
+++ b/src/saga_core/saga_gui/project.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: project.cpp 2674 2015-11-03 17:03:58Z oconrad $
+ * Version $Id: project.cpp 2794 2016-02-17 11:14:04Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -95,6 +95,7 @@
 #include "wksp_map.h"
 #include "wksp_map_layer.h"
 #include "wksp_map_graticule.h"
+#include "wksp_map_basemap.h"
 #include "wksp_layer.h"
 
 #include "data_source_pgsql.h"
@@ -858,9 +859,17 @@ bool CWKSP_Project::_Load_Map(CSG_MetaData &Entry, const wxString &ProjectDir)
 				g_pMaps->Add((CWKSP_Layer *)pItem, pMap);
 			}
 		}
-		else
+		else if( !pNode->Get_Child(i)->Get_Name().Cmp("PARAMETERS") )
 		{
-			pMap->Add_Graticule(pNode->Get_Child(i));
+			if( pNode->Get_Child(i)->Cmp_Property("name", "GRATICULE") )
+			{
+				pMap->Add_Graticule(pNode->Get_Child(i));
+			}
+
+			if( pNode->Get_Child(i)->Cmp_Property("name", "BASEMAP") )
+			{
+				pMap->Add_BaseMap  (pNode->Get_Child(i));
+			}
 		}
 	}
 
@@ -921,6 +930,11 @@ bool CWKSP_Project::_Save_Map(CSG_MetaData &Entry, const wxString &ProjectDir, C
 		{
 			((CWKSP_Map_Graticule *)pMap->Get_Item(i))->Save(*pEntry);
 		}
+
+		else if( pMap->Get_Item(i)->Get_Type() == WKSP_ITEM_Map_BaseMap )
+		{
+			((CWKSP_Map_BaseMap   *)pMap->Get_Item(i))->Save(*pEntry);
+		}
 	}
 
 	return( true );
diff --git a/src/saga_core/saga_gui/project.h b/src/saga_core/saga_gui/project.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/colours.bmp b/src/saga_core/saga_gui/res/colours.bmp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/resource.h b/src/saga_core/saga_gui/res/resource.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/saga.appdata.xml b/src/saga_core/saga_gui/res/saga.appdata.xml
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/saga.bra.txt b/src/saga_core/saga_gui/res/saga.bra.txt
new file mode 100755
index 0000000..dcb95c0
--- /dev/null
+++ b/src/saga_core/saga_gui/res/saga.bra.txt
@@ -0,0 +1,7046 @@
+TEXT	TRANSLATION
+"   Actual Point Count:\t\t%d"	""
+"   Header Point Count:\t\t%d"	""
+"  +-> flagged as keypoints:\t%d"	""
+"  +-> flagged as synthetic:\t%d"	""
+"  +-> flagged as withheld:\t%d"	""
+"  Actual number of points by return is different from header (actual, header):"	""
+"  Bounding Box:\t\t\t%.2f, %.2f, %.2f, %.2f"	""
+"  Classification:\t\t\t%d, %d"	""
+"  File Creation Day/Year:\t\t%d/%d"	""
+"  File Name:\t\t\t%s"	""
+"  Flightline Edge:\t\t\t%d, %d"	""
+"  Generating Software:\t\t'%s'"	""
+"  Header Size:\t\t\t%d"	""
+"  Header Summary"	""
+"  Intensity:\t\t\t%d, %d"	""
+"  Max X Y Z:\t\t\t%.6f  %.6f  %.6f"	""
+"  Maximum Color:\t\t%d %d %d"	""
+"  Min X Y Z:\t\t\t%.6f  %.6f  %.6f"	""
+"  Minimum Color:\t\t\t%d %d %d"	""
+"  Minimum and Maximum Attributes (min, max)"	""
+"  Number Var. Length Records:\t%d"	""
+"  Number of Point Records:\t%d"	""
+"  Number of Points by Return"	""
+"  Number of Points by Return:\t%d  %d  %d  %d  %d"	""
+"  Number of Returns by Pulse"	""
+"  Offset X Y Z:\t\t\t%.6f  %.6f  %.6f"	""
+"  Offset to Point Data:\t\t%d"	""
+"  Point Classification Histogram"	""
+"  Point Classifications"	""
+"  Point Data Format:\t\t%d"	""
+"  Point Data Record Length:\t%d"	""
+"  Point Inspection Summary"	""
+"  Point Source Id:\t\t%d, %d"	""
+"  Project ID/GUID:\t\t'%s'"	""
+"  Reserved:\t\t\t%d"	""
+"  Return Count:\t\t\t%d, %d"	""
+"  Return Number:\t\t%d, %d"	""
+"  Scale Factor X Y Z:\t\t%.6g  %.6g  %.6g"	""
+"  Scan Angle Rank:\t\t%d, %d"	""
+"  Scan Direction Flag:\t\t%d, %d"	""
+"  Source ID:\t\t\t%d"	""
+"  Spatial Reference:\t\t%s"	""
+"  System Identifier:\t\t'%s'"	""
+"  Time:\t\t\t\t%.6f, %.6f"	""
+"  Total Points:\t%ld"	""
+"  Total Pulses:\t%ld"	""
+"  Version:\t\t\t%d.%d"	""
+"%.0f points from %d dataset(s) written to output grid %s."	"%.0f de pontos %d dataset(s) escritos na grade de sa�da %s."
+"%d points from %d dataset(s) written to output point cloud %s."	"%d pontos de %d escritos no dataset(s) de pontos da sa�da na n�vem %s."
+"%d points from %s written to output %s."	"%d pontos de %s escritos na sa�da %s."
+"%d points out of %d extracted."	"%d pontos de %d extra�dos."
+"%d points out of %d reclassified."	"%d pontos de %d reclassificados."
+"%d tiles created."	"%d mozaicos criados"
+"%d. %s"	"%d. %s"
+"%s_CORRPOINTS"	"%s_CORRPOINTS"
+"%s_DISP_VEC"	"%s_DISP_VEC"
+"%s_colorised"	"%s_colorised"
+"%s_merged"	"%s_merged"
+"%s_stats"	"%s_stats"
+"(Tw) wetness decline time constant"	"(Tw) decl�nio de umidade em tempo constante"
+"(Tw) wetness decline time constant [lower bound]"	"(Tw) decl�nio de umidade em tempo constante [limite inferior]"
+"(Tw) wetness decline time constant [upper bound]"	"(Tw) decl�nio de umidade em tempo constante [limite superior]"
+"(a)"	"(a)"
+"(a) [lower bound]"	"(a) [limite inferior]"
+"(a) [upper bound]"	"(a) [limite superior]"
+"(b)"	"(b)"
+"(b) [lower bound]"	"(b) [limite inferior]"
+"(b) [upper bound]"	"(b) [limite superior]"
+"(c) Parameter [lower bound]"	"(c) Par�metro [limite inferior]"
+"(c) Parameter [upper bound]"	"(c) Par�metro [limite superior]"
+"(f) Temperature Modulation Factor [lower bound]"	"(f) Fator de modula��o da temperatura [limite inferior]"
+"(f) Temperature Modulation Factor [upper bound]"	"(f) Fator de modula��o da temperatura [limite superior]"
+")"	")"
+"*"	"*"
+"* 83.50 percentile: %.2lf K"	"* 83.50 percent�l: %.2lf K"
+"* 97.50 percentile: %.2lf K"	"* 97.50 percentil: %.2lf K"
+"* 98.75 percentile: %.2lf K"	"* 98.75 percentil: %.2lf K"
+"* Cloud cover: %.2lf %%"	"* Cobertura de n�vem: %.2lf %%"
+"* Cold cloud: %.2lf K"	"* N�vem fria: %.2lf K"
+"* Desert index: %.2lf"	"* �ndice de deserto: %.2lf"
+"* Histogram classes: %d"	"* Classes do histograma: %d"
+"* Mean temperature: %.2lf K"	"* Temperatura m�dia: %.2lf K"
+"* Skewness: %.2lf"	"* Distor��o: %.2lf"
+"* Snow cover: %.2lf %%"	"* Cobertura de neve: %.2lf %%"
+"* Standard deviation: %.2lf"	"* Desvio padr�o: %.2lf"
+"* Temperature of clouds:"	"* Temperaturas de n�vens:"
+"* Warm cloud: %.2lf K"	"* N�vem quente: %.2lf K"
+"** Error : Wrong outlet point selected **"	"** Erro : Ponto de sa�da selecionada errada **"
+"** Maximum: %.2lf K"	"** M�ximo: %.2lf K"
+"** Mean (%s cloud): %.2lf K"	"** M�dia (%s n�vem): %.2lf K"
+"** Minimum: %.2lf K"	"** M�nimo: %.2lf K"
+"** Warning : Number of events might not be representative.\nMinimum number recommended: "	""
+"** Warning : Outlet point was modified **"	"** Aviso: ponto de sa�da foi modificado **"
+"...anteilig aus Rasterzellen der Teileinzugegebiete"	"... sub-bacias proporcionais a partir de c�lulas de um raster"
+"...anteilig aus den Flussrasterzellen"	"... rio a partir das c�lulas de um raster"
+"...anteilig aus den Hauptgerinnerasterzellen"	"... canal a partir das c�lulas de um raster"
+"...genau den entsprechenden Wert aus der jeweiligen Rasterzelle entnehmen"	"... referem-se exatamente o valor adequado a partir da respectiva c�lula do raster"
+"0"	"0"
+"0 - 1"	"0 - 1"
+"0 - 1.0"	"0 - 1.0"
+"0 is horizontal, 90 is vertical."	"0 � horizontal, 90 � vertical."
+"0-50 mm/day"	"0-50 mm/dia"
+"0.1"	"0.1"
+"01: A Simple Litter System"	"01: Um sistema de marca simples"
+"01: My first module"	"01: Meu primeiro m�dulo"
+"02: Carbon Cycle Simulation for Terrestrial Biomass"	"02: Simula��o do C�clo do Carbono para a Biomassa Terrestre"
+"02: Pixel by pixel operations with two grids"	"02: Opera��o pixel por pixel para duas grades"
+"03: Direct neighbours"	"03: Vizinhos imediatos"
+"03: Spatially Distributed Simulation of Soil Nitrogen Dynamics"	"03: Simula��o de Nutrientes Espacialmente Distribu�dos no Solo de forma Din�mica"
+"04: Direct neighbours - more..."	"04: Vizinhos imediatos - mais..."
+"05: Direct neighbours - slope and aspect"	"05: Vizinhos imediatos - declive e aspecto"
+"06: Extended neighbourhoods"	"06: vizinhan�as prolongadas"
+"07: Extended neighbourhoods - catchment areas (trace flow)"	"07: vizinhan�as prolongadas- �reas de capta��o (fluxo de rastreamento)"
+"08: Extended neighbourhoods - catchment areas (parallel)"	"08: vizinhan�as prolongadas- �reas de capta��o (paralelos)"
+"09: Extended neighbourhoods - catchment areas (recursive)"	"09: vizinhan�as prolongadas- �reas de capta��o (recursivo)"
+"1"	"1"
+"1 / cell size (pseudo specific catchment area)"	"1 / tamanho da c�lula (pseudo �rea de capta��o espec�fica)"
+"1 / cell size (specific catchment area)"	"1 / tamanho da c�lula (�rea espec�fica de capta��o)"
+"1 arc-second"	"1 arco-segundo"
+"1 bit"	"1 bit"
+"1 byte (0-255)"	"1 byte (0-255)"
+"1 byte integer"	"1 byte inteiro"
+"1 byte signed"	"1 byte assinado"
+"1 byte signed integer"	"1 byte assinado inteiro"
+"1 byte unsigned"	"1 byte n�o assinado"
+"1 byte unsigned integer"	"1 byte n�o assinado inteiro"
+"1. Attribute"	"1. Atributo"
+"1. quadrant (upper right)"	"1. quadrante (Direita superior)"
+"1.0"	"1.0"
+"10 parameter 3rd order polynom (Haralick 1983)"	"10 par�metro 3rd de ordem do pol�gono (Haralick 1983)"
+"100-200 mm/day"	"100-200 mm/dia"
+"10: Dynamic Simulation - Life"	"10: Simula��o din�mica - Vida"
+"11: Dynamic Simulation - Soil Nitrogen Dynamics"	"11: Simula��o din�mica - Nitrog�nio do solo din�mico"
+"128x128"	"128x128"
+"12: First steps with shapes"	"12: Primeiros passos com formas"
+"13: Reprojecting a shapes layer"	"13: Reprojetando camadas shapes"
+"14: Vectorising channel lines"	"14: Vetorizando canais de linhas"
+"16 bit"	"16 bit"
+"16 bit signed integer"	"16 bit assinado inteiro"
+"16 bit unsigned integer"	"16 bit n�o assinado inteiro"
+"16x16"	"16x16"
+"1st Order Polynomial"	"1� ordem polinominal"
+"1st Std. Parallel"	"1� paralelo"
+"2"	"2"
+"2 byte (0-65535)"	"2 byte (0-65535)"
+"2 byte integer"	"2 byte inteiro"
+"2 byte integer|4 byte floating point|"	"2 byte inteiro |4 byte com ponto flutuante|"
+"2 byte signed"	"2 byte assinados"
+"2 byte signed integer"	"2 byte inteiro assinados"
+"2 byte unsigned"	"2 byte n�o assinados"
+"2 byte unsigned integer"	"2 byte n�o assinado inteiro"
+"2 x 2"	"2 x 2"
+"2-fold"	"2-dobro"
+"2. Attribute"	"2. Atributo"
+"2. quadrant (lower right)"	"2. quadrante (Direita inferior)"
+"2.0"	"2.0"
+"20 seconds"	"20 segundos"
+"200-400 mm/day"	"200-400 mm/dia"
+"256x256"	"256x256"
+"2nd Date (End of Range)"	"2� Data (Fim da Faixa)"
+"2nd Order Polynomial"	"2� ordem polinominal"
+"2nd Std. Parallel"	"2� paralelo"
+"3"	"3"
+"3 X 3"	"3 X 3"
+"3 arc-second"	"3 arco-segundo"
+"3 parameters (translation only)"	"3 par�metros (apenas transla��o)"
+"3 x 3"	"3 x 3"
+"3. Attribute"	"3. Atributo"
+"3. quadrant (lower left)"	"2. quadrante (Esquerda inferior)"
+"32 bit floating point"	"32 bit ponto flutuante"
+"32 bit signed integer"	"32 bit assinado inteiro"
+"32 bit unsigned integer"	"32 bit n�o assinado inteiro"
+"32x32"	"32x32"
+"3306"	"3306"
+"3D Image"	"Imagem 3D"
+"3D Image Height"	"Altura da imagem 3D"
+"3D Image Width"	"Largura da imagem 3D"
+"3D Points"	"3D Pontos"
+"3D Shapes Viewer"	"Visualiza��o 3D de shapes"
+"3D View"	"Visualiza��o 3D"
+"3D View Sequencer"	"Sequ�ncia de visualiza��o 3D"
+"3D Viewer"	"Visualizador 3D "
+"3D Viewer."	"Visualizador 3D "
+"3D-View"	"Visualiza��o 3D"
+"3rd Order Polynomial"	"3� ordem polinomial"
+"4 (von Neumann)"	"4 (von Neumann)"
+"4 byte float"	"4 byte flutuante"
+"4 byte floating point"	"4 byte com ponto flutuante"
+"4 byte floating point number"	"4 byte com n�mero de ponto flutuante"
+"4 byte integer"	"4 byte inteiro"
+"4 byte signed"	"4 byte assinado"
+"4 byte signed integer"	"4 byte assinado inteiro"
+"4 byte unsigned"	"4 byte n�o assinado"
+"4 byte unsigned integer"	"4 byte n�o assinado inteiro"
+"4. quadrant (upper left)"	"4. quadrante (Esquerda superior)"
+"5 X 5"	"5 X 5"
+"50-100 mm/day"	"50-100 mm/dia"
+"6 parameter 2nd order polynom (Bauer, Rohdenburg, Bork 1985)"	"6 par�metro de 2� ordem polinomial (Bauer, Rohdenburg, Bork 1985)"
+"6 parameter 2nd order polynom (Evans 1979)"	"6 par�metro de 2� ordem polinomial (Evans 1979)"
+"6 parameter 2nd order polynom (Heerdegen & Beran 1982)"	"6 par�metro de 2� ordem polinomial (Heerdegen & Beran 1982)"
+"64 bit floating point"	"64 bit com ponto flutuante"
+"64x64"	"64x64"
+"7 X 7"	"7 X 7"
+"7 parameters"	"7 par�metros"
+"8 (Moore)"	"8 (Moore)"
+"8 bit"	"8 bit"
+"8 bit unsigned integer"	"8 bit n�o assinado inteiro"
+"8 byte float"	"8 byte flutuante"
+"8 byte floating point"	"8 byte com ponto flutuante"
+"8 byte floating point number"	"8 byte com n�mero de ponto flutuante"
+"9 parameter 2nd order polynom (Zevenbergen & Thorne 1987)"	"9 par�metro de 2� ordem polinomial (Zevenbergen & Thorne 1987)"
+":-( :-( you are a loser :-( :-("	":-( :-( voc� � um perdedor :-( :-("
+":-) :-) you are a winner :-) :-) Time:%ds\n"	""
+"<"	"<"
+"<="	"<="
+"<all grid systems>"	"<sistema de todas as grades>"
+"<create>"	"<criar>"
+"<default>"	"<padr�o>"
+"<no attributes>"	"<sem atributos>"
+"<no choice available>"	"<nenhuma op��o dispon�vel>"
+"<no items>"	"<sem itens>"
+"<none>"	"<nenhum>"
+"<not set>"	"<n�o configurado>"
+"="	"="
+">"	">"
+">400 mm/day"	">400 mm/dia"
+">="	">="
+"?"	"?"
+"A"	"A"
+"A SAGA module to create transects through polygon files."	"Um m�dulo SAGA para criar transectos atrav�s de arquivos de pol�gonos."
+"A Simple Litter System"	"Um Sistema Simples de Maca"
+"A grid that contains elevation data."	"Uma grade que cont�m dados de eleva��o."
+"A set of basic SAGA module programming examples."	"Um conjunto de exemplos b�sicos de programa��o do m�dulo SAGA."
+"A space separated list of key-value pairs (K=V)."	"Uma lista separada de espa�o de pares chave-valor (K = V)."
+"A text file with the full path to an input point cloud on each line"	"Um arquivo de texto com o caminho completo para um ponto de nuvem de entrada em cada linha"
+"A3 Landscape"	"A3 Paisagem"
+"A3 Portrait"	"A3 Retrato"
+"A4 Landscape"	"A4 Paisagem"
+"A4 Portrait"	"A4 Retrato"
+"A:Garden|Imagery"	"A:Horta|Imagem"
+"A:Grid|Analysis|Macroecology"	"A:Grade|An�lise|Macroecologia"
+"A:Grid|Distances"	"A:Grade|Dist�ncia"
+"A:Grid|Filter"	"A:Grade|Filtro"
+"A:Grid|Gaps"	"A:Grade|Lacunas"
+"A:Grid|Grid System"	"A:Grade|Sistema de raster"
+"A:Grid|Tools"	"A:Grade|Ferramentas"
+"A:Grid|Values"	"A:Grade|Valores"
+"A:Imagery|Classification"	"A:Imagens|Classifica��o"
+"A:Imagery|Fourier Analysis"	"A:Imagens|An�lise de Fourier"
+"A:Imagery|Segmentation"	"A:Imagens|Segmenta��o"
+"A:Imagery|Tools"	"A:Imagens|Ferramentas"
+"A:Shapes|Construction"	"A:Shapes|Constru��o"
+"A:Shapes|Conversion"	"A:Shapes|Convers�o"
+"A:Shapes|Selection"	"A:Shapes|Sele��o"
+"A:Shapes|Table"	"A:Shapes|Tabela"
+"A:Shapes|Tools"	"A:Shapes|Ferramentas"
+"A:Simulation|Hillslope Evolution"	"A:Simula��o|Eleva��o do relevo"
+"A:Simulation|Hydrology"	"A:Simula��o|Hidrologia"
+"A:Spatial and Geostatistics|Geographically Weighted Regression"	"A:Espacial e geoestat�stica|Regress�o Geograficamente ponderada"
+"A:Spatial and Geostatistics|Points"	"A:Espacial e geoestat�stica|Pontos"
+"A:Table|Construction"	"A:Tabela|Constru��o"
+"A:Table|Selection"	"A:Tabela|Sele��o"
+"A:Table|Tools"	"A:Tabela|Ferramentas"
+"A:Terrain Analysis|Climate and Weather"	"A:An�lise de terreno|Clima e Tempo"
+"A:Terrain Analysis|Hydrology|Flow Accumulation"	"A:An�lise de terreno|Hidrologia|Acumula��o de fluxo"
+"A:Terrain Analysis|Preprocessing"	"A:An�lise de terreno|Pr�-processamento"
+"A:Terrain Analysis|Terrain Classification"	"A:An�lise de terreno|Classifica��o de terreno"
+"ADDR"	"ADDR"
+"AFAC("	"AFAC("
+"AFAC()"	"AFAC()"
+"ANGMAP"	"ANGMAP"
+"AOI"	"AOI"
+"AOI Input Settings"	"AOI Configura��es de entrada"
+"AOI Shape"	"AOI Shape"
+"AOI does not intersect bounding box of SPCVF, nothing to do!"	"AOI n�o se cruza com o quadro de SPCVF, nada a ver com na delimita��o!"
+"AOI does not intersect with any bounding box of the SPCVF datasets, nothing to do!"	"AOI n�o cruza com qualquer caixa delimitadora dos conjuntos de dados SPCVF, nada a fazer!"
+"AOI does not intersect with any point of the SPCVF datasets, nothing to do!"	"AOI n�o se cruza com qualquer ponto dos conjuntos de dados SPCVF, nada a fazer!"
+"AQ("	"AQ("
+"AREA"	"�REA"
+"AS("	"AS("
+"ASCII"	"ASCII"
+"ASCII Decimal Separator"	"ASCII Separador decimal"
+"ASCII Grid Options"	"ASCII Op��es de grade"
+"ASCII Precision"	"ASCII Precis�o"
+"ASCII file with columns degree, order, c_lm, s_lm (separated by space)"	"Arquivo ASCII com colunas em grau, ordenados, c_lm, s_lm (separados por espa�o)"
+"ASPECT_1"	"ASPECT_1"
+"ASPECT_2"	"ASPECT_2"
+"ASPECT_3"	"ASPECT_3"
+"AWM1 Grid"	"AWM1 Grade"
+"AWM2 Grid"	"AWM2 Grade"
+"AWT Grid"	"AWT Grade"
+"AZIMUTH"	"AZIMUTH"
+"Abflussmanipulation Rasterzelle 1... "	"Manipula��o das c�lulas do raster de drenagem 1... "
+"Abflussmanipulation Rasterzelle 2... "	"Manipula��o das c�lulas do raster de drenagem 2... "
+"About SAGA"	"Sobre o SAGA"
+"Above Elevation"	"Eleva��o acima"
+"Above this threshold snow will start to melt"	"Acima deste limiar a neve vai come�ar a derreter"
+"Absolute"	"Absoluto"
+"Absolute Area"	"�rea absoluta"
+"Absolute Height"	"Altura absoluta"
+"Absolute Value"	""
+"Absolute Water Level"	"N�vel de �gua absoluto"
+"Absolute Water Levels"	"N�vel de �gua absoluto"
+"Absolute Weighting"	"Pondera��o Absoluta"
+"Abstract"	""
+"Acc. Area"	"Acc. �rea"
+"Acceleration"	"Acelera��o"
+"Acceptable Time Difference between Image and Laser Points"	"Diferen�a de tempo aceit�vel entre imagem e Pontos doLaser"
+"Accessing PostgreSQL databases."	"Acessando bancos de dados PostgreSQL."
+"Accumulated Cost"	"Custo acumulado"
+"Accumulated Cost Surface"	""
+"Accumulated Material"	""
+"Accumulated Material (Left Side)"	""
+"Accumulated Material (Right Side)"	""
+"Accumulated cost"	"Custo acumulado"
+"Accumulation Functions"	"Fun��es de acumula��o"
+"Accumulation Target"	"Destino de acumula��o"
+"Accuracy"	"Precis�o"
+"Acknowledgements"	"Agradecimentos"
+"Acquisition"	"Aquisi��o"
+"Action"	"A��o"
+"Activate Grid File Cache?"	"Ative o arquivo grade de cache?"
+"Activate file caching automatically, if memory size exceeds the threshold value."	"Ativar o cache de arquivos automaticamente, se o tamanho da mem�ria exceder o valor limite."
+"Activation function"	"fun��o de ativa��o"
+"Add"	"Adicionar"
+"Add All"	"Adicionar todos"
+"Add All Fields"	"Adicionar todos os campos"
+"Add Attribute to Clipped Points"	"Adicionar atributo para os pontos cortados"
+"Add Base Map"	""
+"Add Border"	"Adicionar borda"
+"Add Cells"	"Adicionar c�lulas"
+"Add Center"	"Adicionar centro"
+"Add Coordinates to points"	"Adicionar coordenadas para pontos"
+"Add Field"	"adicionar campo"
+"Add Frame"	"Adicionar Moldura"
+"Add Graticule"	"Adicionar quadr�cula"
+"Add Grid Values to Points"	"Adicionar valores de grade para pontos"
+"Add Grid Values to Shapes"	"Adicionar valores gradepara shapes"
+"Add Identifier"	"Adicionar identificador "
+"Add Indicator Fields for Categories"	"Adicionar Campos indicadores para categorias"
+"Add Link to Files"	"Adicionar link para os arquivos"
+"Add Location Info"	"Adicionar informa��o de localiza��o"
+"Add Overlap"	"Adicionar sobreposi��o"
+"Add Part"	"Adicionar parte"
+"Add Point Attributes to Polygons"	"Adicionar atributos de pontos para pol�gonos"
+"Add Point Order"	"Adicionar ordem de ponto"
+"Add Polygon Attributes to Points"	"Adicionar atributos de pol�gonos para pontos"
+"Add Position [Ctrl + A]"	"Adicionar posi��o [Ctrl + A]"
+"Add Project"	"Adicionar projeto"
+"Add Record"	"Adicionar registro"
+"Add Shape"	"Adicionar Shape"
+"Add Source Information"	"Adicionar informa��o de Fonte"
+"Add Volumes Below Base Level"	"Adicionar Volumes abaixo do n�vel base"
+"Add layer to selected map"	"Adicionar camada para o mapa selecionado"
+"Add location information from points (x,y,(z,m))"	"Adicionar informa��es de localiza��o para pontos (x,y,(z,m))"
+"Add overlap to AOI"	"Adicionar sobreposi��o para o AOI"
+"Add point order as additional attribute."	"Adicione ordem do ponto como atributo adicional."
+"Add to Map"	"Adicionar ao mapa"
+"Add to Table"	"Adicionar � tabela"
+"Add unique identifier attribute field to output, ID resembles processing order."	"Adicionar campo de atributo identificador �nico Adiciona � sa�da, ID contendo a ordem de processamento."
+"Added"	"Adicionado"
+"Addition"	"Adi��o"
+"Additional Output"	"Sa�da adicional"
+"Additional Point Clouds"	"Pontos adicionais de n�vens"
+"Additional Values"	"Valores adicionais"
+"Additional point clouds to merge with main point cloud."	"Pontos adicionais de fus�o com pontos da nuvem principal e nuvens adicionais."
+"Additional values that shall be saved to the output table."	"Valores adicionais que devem ser guardados para a tabela de sa�da."
+"Addition|"	"Adi��o!"
+"Adds a field with the name of the original input data set."	"Adiciona um campo com o nome do conjunto de dados de entrada original."
+"Adjust"	"ajustar"
+"Adjust Histogram Stretch to Map Extent"	"Ajustar histograma por amplia��o � extens�o do mapa"
+"Adjust to Grid"	"Ajustar � grade"
+"Adjustment"	"Ajustamento"
+"Advanced Settings"	"Configura��es avan�adas"
+"Aerosol Resistance Coefficient (Blue)"	"Coeficiente de Resist�ncia de Aerosol (azul)"
+"Aerosol Resistance Coefficient (Red)"	"Coeficiente de Resist�ncia de Aerosol (vermelho)"
+"Affine"	"Afim"
+"Aggregate"	"Agregados"
+"Aggregate Point Observations"	"Observa��es de pontos agregados"
+"Aggregated"	"Agregado"
+"Aggregation"	"Agrega��o"
+"Aggregation Index"	"�ndice de agrega��o"
+"Aggregation Size"	"Tamanho da agrega��o"
+"Air Humidity (2pm) [%%]"	"Humidade do ar (2pm) [%%]"
+"Air Pressure, Water and Dust Content"	"Press�o de Ar, �gua e Poeira"
+"Albedo"	"Alb�do"
+"Albers Equal Area Conic"	"�reas c�nicas equivalentes de Albers"
+"Alessandro Perego"	"Alessandro Perego"
+"Algorithm"	"Algoritmo"
+"Algorithm for the detection of Surface Specific Points"	"Algoritmo para a detec��o de superf�cies espec�ficas de observa��es"
+"Alignment"	"Alinhamento"
+"All"	"Tudo"
+"All Files"	"Todos os arquivos"
+"All Files|*.*|"	"Todos os arquivos|*.*|"
+"All Levels"	"Todos os n�veis"
+"All Recognised Files"	"Todos os arquivos Reconhecidos"
+"All Recognized File Types"	"Todos os tipos de arquivos reconhecidos"
+"All Recognized Files"	"Todos os arquivos Reconhecidos"
+"All Times"	"Todos os tempos"
+"All Variables"	"Todas as vari�veis"
+"Allgemeine Parameter"	"Par�metros gerais"
+"Allocation"	"Aloca��o"
+"Allocation Grid"	"Aloca��o de grade"
+"Allow Edge Pixels to be Seeds"	"Permitir que as bordas de pixels sejam semeadas"
+"Allow longitudes outside -180 to 180 Range"	"Permitir longitudes fora do alcance 180 a 180"
+"Allow multiple observer positions."	"Permitir v�rias posi��es de observa��o."
+"Allows one to scale shade brightness [%]"	"Permite escala de brilho de sombra [%]"
+"Allows to scale shade brightness, [percent]"	"Permite escala de brilho de sombra, [porcento]"
+"Allows to write cell values from additional grids to the output"	"Permite escrever valores de c�lulas de grades adicionais para a sa�da"
+"Alpha"	"Alfa"
+"Alpha Max (Degree)"	"Alfa m�ximo (Graus)"
+"Altura de llama"	"Altura de lhama"
+"Altura de llama (m)"	"Altura de lhama (m)"
+"Always use cloud signature (step 14)"	"Sempre use nuvem de assinaturas(passo 14)"
+"Ambient Occlusion"	"Oclus�o de ambiente"
+"Anaglyph"	"An�glifo"
+"Anaglyph [S]"	"An�glifo [S]"
+"Analysis"	"An�lise"
+"Analytical Hierarchy Process"	"Processo Anal�tico Hierarquico"
+"Analytical Hillshading"	"An�lise de sobreamento de montanhas"
+"Anchor Point"	"Ponto de ancoragem"
+"Angle"	"�ngulo"
+"Angle (in degrees)"	"�ngulo (em graus)"
+"Angle Calculation"	"C�lculo de �ngulo"
+"Angle X"	"�ngulo X"
+"Angle Y"	"�ngulo Y"
+"Angle Z"	"�ngulo Z"
+"Angle [Degree]"	"�ngulo [Graus]"
+"Angle in degrees, clockwise around x axis"	"�ngulo em graus, no sentido hor�rio em torno do eixo x"
+"Angle in degrees, clockwise around y axis"	"�ngulo em graus, no sentido hor�rio em torno do eixo y"
+"Angle in degrees, clockwise around z axis"	"�ngulo em graus, no sentido hor�rio em torno do eixo z"
+"Angle in degrees, counting clockwise from north"	"�ngulo em graus, contando no sentido hor�rio a partir do norte"
+"Angular Distance Weighted"	"Dist�ncia Angular Ponderada"
+"Angular Step Size (Degree)"	"Passo Tamanho Angular (Grau)"
+"Annual"	"Anual"
+"Annual Course of Daily Insolation"	"Curso Anual de insola��o di�ria"
+"Append Fields from another Table"	"Anexar campos de outra tabela"
+"Append Rows from ..."	"Acrescente linhas de ..."
+"Applies also to the binary format header file."	"Aplica-se tamb�m para o arquivo de cabe�alho em formato bin�rio."
+"Apply"	"Aplicar"
+"Apply Filter?"	"Aplicar filtro?"
+"Apply Move"	"Aplicarmovimento"
+"Apply a filter (erosion - binary reconstruction) to the input image "	"Aplicar um filtro (eros�o - reconstru��o bin�ria) para a imagem de entrada"
+"Apply changes?"	"Aplicar altera��es?"
+"Apply offset?"	"Aplicar deslocamento?"
+"Apply post-processing filter to remove small holes"	"Aplicar filtro de p�s-processamento para remover pequenos orif�cios"
+"Approx. Terrain Slope"	"Declive aproximado de terreno"
+"Approximate Coordinate"	"Coordenadas aproximadas"
+"Approximate Coordinates of Projection Center"	"Coordenadas aproximadas do Centro de Proje��o"
+"Approximate Coordinates of Target Point"	"Coordenadas aproximadas do Ponto-alvo"
+"Approximate Terrain Slope [%]"	"Declive aproximado de terreno [%]"
+"April"	"Abril"
+"Arc Vertex Distance [Degree]"	"Dist�ncia do v�rtice do arco[Grau]"
+"ArcGIS Version"	"Vers�o ArcGIS"
+"ArcSAGA Toolboxes"	"ArcSAGA caixas de ferramentas"
+"Arccosine"	""
+"Arcs to polygons"	"Arcos pra pol�gonos"
+"Arcsine"	""
+"Arctangent"	""
+"Arctangent of x/y"	""
+"Area"	"�rea"
+"Area +"	"�rea +"
+"Area -"	"�rea -"
+"Area Conversion"	"�rea de Convers�o"
+"Area [km2]"	"�rea [km2]"
+"Area [km2] Subbasin("	"�rea da Sub-bacia [km2] ("
+"Area of the Watershed in [km2]"	"�rea da bacia em [km2]"
+"Area of the Watershed in [km2] used for unit conversion"	"�rea da bacia em [km2] utilizado para a convers�o da unidade"
+"Area to Length Conversion"	"�rea para convers�o de comprimento"
+"Area[%]"	"�rea[%]"
+"Areal average of ln(T0) = ln(Te) [ln(m^2/h)]"	"�rea m�dia de ln(T0) = ln(Te) [ln(m^2/h)]"
+"Arithmetic Mean"	"M�dia aritm�tica"
+"Arithmetic mean (version 1)"	"M�dia aritm�tica (Vers�o 1)"
+"Arithmetic mean (version 2)"	"M�dia aritm�tica (Vers�o 2)"
+"Arrange Icons"	"Organizar �cones"
+"Aspect"	"Aspecto"
+"Aspect Units"	"Unidades de aspecto"
+"Aspect grid, in radians and 360 degree from north."	"Grade de aspecto, em radianos e 360 graus ao norte."
+"Aspect grid, in radians."	"Grade de aspecto, em radianos."
+"Aspect-Slope"	"Aspecto de Declive"
+"Aspect-Slope Grid"	"Grade de aspecto de declive"
+"Assign"	"Atribuir"
+"Assign ..."	"Atribuir"
+"Assign attributes to shapes..."	"Atribuir atributos aos shapes..."
+"Assume a given minimum slope for each cell."	"Assumir uma dada inclina��o m�nima para cada c�lula."
+"At-Sensor Radiance"	"Sensor At de radia��o"
+"At-Sensor Reflectance"	"Sensor At de reflect�ncia"
+"At-Sensor Temperature"	"Sensor At de teperatura"
+"At-Surface Radiance"	"Superf�cie At de radi�ncia"
+"At-Surface Reflectance"	"Superf�cie At de reflect�ncia"
+"Atlas Boundary Files (*.bna)"	"Atlas de arquivos de contorno "
+"Atmospheric Correction"	"Corre��o atmosf�rica"
+"Atmospheric Effects"	"Efeitos atmosf�ricos"
+"Attribute"	"Atributo"
+"Attribute (Size)"	"Atributo (Tamanho)"
+"Attribute Field"	"Campo de atributo"
+"Attribute Field Properties"	"Propriedades do campo de atributo"
+"Attribute Field to Grid"	"Campo de atributo para grade"
+"Attribute Identification"	"Identifica��o do atributo"
+"Attribute Table"	"Tabela de atributos"
+"Attribute Values"	"Valores de atributo"
+"Attribute field number to copy is out of range!"	"N�mero do campo de atributopara c�pia que esteja fora do intervalo!"
+"Attribute field number to grid is out of range!"	"N�mero do campo de atributo da grade que esteja fora do intervalo!"
+"Attribute fields one to three (x;y;z) are mandatory!"	"Os campos de atributo (x, y, z) s�o de preenchimento obrigat�rio!"
+"Attribute is Column ..."	"Atributo � coluna ..."
+"Attribute to process."	"Atributo para processar."
+"Attribute used for naming the output file(s)"	"Atributo usado para nomear o(s) arquivo(s) de sa�da"
+"Attributes"	"Atributos"
+"Attributes to add. Select none to add all"	"Atributos para adicionar. Selecione nenhum para adicionar todos"
+"Attributes to import besides x,y,z ..."	"Atributos para importar al�m de x, y, z ..."
+"August"	"Agosto"
+"Ausgabedaten"	"Ausgabedaten"
+"Ausgangsrasterzelle Flusseinzugsgebiet [Default: Elbe5000]"	"Ausgangsrasterzelle Flusseinzugsgebiet [Padr�o: Elbe5000]"
+"Auswahl der Art der anteiligen Flaechenwasserwasserentnahme."	"Auswahl der Art der anteiligen Flaechenwasserwasserentnahme."
+"Auswahl der Art der dynamischen Flaechenwasserwassernutzung (WUse). ACHTUNG: Funktioniert ggf. nur bei bereits initiierten Systemen bzw. nach Vorlauf"	"Selecionando o tipo de uso da �gua de superf�cie din�mica (Wuse). NOTA: Funciona apenas com os sistemas possivelmente j� iniciados"
+"Author"	"Autor"
+"Automated Cloud Cover Assessment"	"Avalia��o automatizada de nebulosidade"
+"Automatic"	"Autom�tico"
+"Automatically adjust control points to grid's data range"	"Ajustar automaticamente pontos de controle para o intervalo de dados da grade"
+"Automatically normalise attributes by standard deviation before clustering."	"Normalizar automaticamente atributos por desvio-padr�o antes do agrupamento."
+"Automatically normalise grids by standard deviation before clustering."	"Normalizar automaticamente grades por desvio-padr�o antes do agrupamento."
+"Available Choices"	"Escolhas dispon�veis"
+"Available Clay"	"Argila dispon�vel"
+"Available Connections"	"Conex�es dispon�veis"
+"Available Libraries"	"Bibliotecas dispon�veis"
+"Available Projections:"	"Proje��es dispon�veis:"
+"Available Sand"	"Areia dispon�vel"
+"Available Silt"	"Silt dispon�vel"
+"Available Tools"	"Ferramentas dispon�veis"
+"Average"	"M�dia"
+"Average 2 With Thereshold for Grids calculates average in X and Y distances unsing only the values that differ form central pixel less than a specified threshold. Each value has a weight which is inversely proportional to the distance (method 1)."	"M�dia com 2 limiares para calcular a m�dia das dist�ncias de X e Y em grades usando apenas os valores que diferem a forma pixel central inferior a um limite especificado. Cada valor tem um peso que � inversamente proporcional � dist�ncia (m�t [...]
+"Average 3 With Thereshold for Grids calculates average in X and Y distances unsing only the values that differ form central pixel less than a specified threshold. Each value has a weight which is inversely proportional to the distance (method 2)."	"M�dia com 3 limiares para calcular m�dia das dist�ncias X e Y em grades usando apenas os valores que diferem a forma do pixel central menor do que um limiar especificado. Cada valor tem um peso que � inversamente proporcional � dist�ncia (m�t [...]
+"Average With Mask 1"	"M�dia com m�scara 1"
+"Average With Mask 1 calculates average for cells specified by a mask grid. Cell excluded by the mask grid are NOT used in the average calculation."	"M�dia com m�scara 1, calcula a m�dia para c�lulas especificadas por uma grade de m�scara. C�lulas exclu�das pela grade m�scara n�o s�o utilizadas no c�lculo da m�dia."
+"Average With Mask 2"	"M�dia com m�scara 2"
+"Average With Mask 2 calculates average for cells specified by a mask grid. However cell excluded by the mask grid are used in the average calculation for right pixels."	"M�dia com m�scara 2, calcula a m�dia para c�lulas especificadas por uma grade de m�scara. No entanto as c�lulas exclu�das pela grade de m�scara s�o utilizadas no c�lculo da m�dia para os pixels."
+"Average With Thereshold 1"	"M�dia com limiar 1"
+"Average With Thereshold 2"	"M�dia com limiar 2"
+"Average With Thereshold 3"	"M�dia com limiar 3"
+"Average With Thereshold for Grids calculates average in X and Y distances unsing only the values that differ form central pixel less than a specified threshold. It's useful to remove noise whit a known maximum reducing the loss of informations"	"M�dia com limiar para grades calcula a m�dia das dist�ncias X e Y usando apenas os valores que diferem a forma do pixel central menor do que um limiar especificado. � �til para remover o ru�do de part�cula ao m�ximo conhecido, reduzindo a perda  [...]
+"Average slope of watercourse: %.2f m/m"	"Inclina��o m�dia de curso de �gua:%.2f m/m"
+"Average velocity in watercourse: %.2f m/min"	"Velocidade m�dia no curso de �gua: %.2f m/min"
+"Averaged Connectivity"	""
+"Averages"	"M�dias"
+"Avg. Curve Number"	"AVG. N�mero da curva"
+"Avg. Manning's N"	"AVG. Tripula��o de N"
+"Avg. Rainfall Intensity (mm/h)"	"AVG. Intensidade de precipita��o (mm / h)"
+"Azimuth"	"Azimute"
+"Azimuth [Degree]"	"Azimute [graus]"
+"Azimuthal Equidistant"	"Azimute equidistante"
+"B"	"B"
+"B-Spline"	"B-Spline"
+"B-Spline Approximation"	"Aproxima��o B-spline"
+"B-Spline Interpolation"	"Interpola��o B-Spline"
+"B.Bechtel, O.Conrad (c) 2013"	"B.Bechtel, O.Conrad (c) 2013"
+"B45 Ratio: Desert detection (step 10)"	"Propor��o B45: detec��o de deserto (passo 10)"
+"B56 Composite (step 6)"	"B56 Composi��o (passo 6)"
+"BD, Bulk density of the top layer [Mg/m3]"	"BD, Densidade da camada superior [Mg / m3]"
+"BFAC("	"BFAC("
+"BLACK_BLUE"	"PRETO_AZUL"
+"BLACK_GREEN"	"PRETO_VERDE"
+"BLACK_RED"	"PRETO_VERMELHO"
+"BLACK_WHITE"	"PRETO_BRANCO"
+"BLUH"	"SUOR"
+"BQ("	"BQ("
+"BSL"	"BSL"
+"BSL Files (*.bsl)"	"Arquivos BSL (*.bsl)"
+"BSL Script"	"Script BSL"
+"BSL from File"	"Arquivos de BSL"
+"Back Slope"	"Retornar Declive"
+"Background Color"	"Cor do plano de fundo"
+"Background Sample Density [Percent]"	"Densidade de amostra do plano de fundo (porcento)"
+"Backpropagation algorithm"	"Algor�timo de retropropaga��o"
+"Backpropagation parameters"	"Par�metros de retropropaga��o"
+"Backward"	"Para tr�s"
+"Backward Diagonal"	"Diagonal em retrocesso"
+"Backward [Page Down]"	"Retrocesso [P�gina Abaixo]"
+"Backward diagonal hatch"	"Escotilha de Retrocesso diagonal "
+"Band"	"Banda"
+"Band 1"	"Banda 1"
+"Band 2"	"Banda 2"
+"Band 3"	"Banda 3"
+"Band 4"	"Banda 4"
+"Band 5"	"Banda 5"
+"Band 61"	"Banda 61"
+"Band 62"	"Banda 62"
+"Band 7"	"Banda 7"
+"Band 8"	"Banda 8"
+"Band Name Field"	"Campo do nome da banda"
+"Bands"	"Bandas"
+"Bandwidth (Cells)"	"Largura da banda (C�lulas/pixels)"
+"Bare Earth"	"Terra nua"
+"Barometric Pressure [mbar]"	"Press�o barom�trica [mbar]"
+"Bars"	"Barras"
+"Base 10 Logarithm"	""
+"Base Level"	"N�vel de base"
+"Base Map"	""
+"Base Name"	"Nome base"
+"Base Probability"	"Probabilidade base"
+"Basic Terrain Analysis"	"An�lises b�sicas de terreno"
+"Basic measures for spatial point patterns."	"Medidas b�sicas para padr�es de pontos espaciais."
+"Basin Type (Gravelius)"	"Tipo de bacia (Gravelius)"
+"Basins"	"Bacias"
+"Beep when finished"	"Bip quando terminar"
+"Begin Transaction"	"Comece a Transa��o"
+"Below this threshold precipitation will fall as snow"	"Abaixo deste limiar a precipita��o vai cair como a neve"
+"Beruecksichtigung der Hauptgerinnerasterzellen?"	"Aprecia��o de Hauptgerinnerasterzellen?"
+"Beta"	"Beta"
+"Bicubic Spline"	"Spline (Ranhura) bic�bico"
+"Bicubic Spline Interpolation"	"Interpola��o de Spline (ranhura) Bic�bico"
+"Bifurcation"	"Bifurca��o"
+"Big Endian (Motorola)"	"Grande Endian (Motorola)"
+"Bilinear"	"Bilinear"
+"Bilinear Interpolation"	"Interpola��o bilinear"
+"Binary Byte Order"	"Ordem bin�ria de Byte"
+"Binary Encoding"	"Codifica��o bin�ria"
+"Binary Erosion-Reconstruction"	"Reconstru��o de eros�o bin�ria"
+"Binary input image for the connectivity analysis"	"Imagem de entrada Bin�ria para a an�lisede conectividade"
+"Binary object mask"	"M�scara de objeto bin�rio"
+"Birth Rate of Fishes"	"Taxa de de natalidade dos Peixes"
+"Birth Rate of Sharks"	"Taxa de natalidade de tubar�es"
+"Blending Distance"	"Dist�ncia de mesclagem"
+"Block Kriging"	"Bloco de kringagem"
+"Block Size"	"Tamanho do bloco"
+"Blocks"	"Blocos"
+"Blue"	"Azul"
+"Blue (TM 1)"	"Azul (TM 1)"
+"Blue Reflectance"	"Reflect�ncia Azul"
+"Board"	"Borda"
+"Boehner & Selige 2006"	"Boehner & Selige 2006"
+"Boehner's Simple Language (BSL) is a macro script language for grid based calculations."	"Linguagem simples de Boehner (BSL) � uma linguagem de macro script para c�lculos baseados em grade."
+"Bonne"	"Bom"
+"Boolean"	"Booleano"
+"Border"	"Borda"
+"Border Color"	"Cor da borda"
+"Borders"	"Bordas"
+"Bottom"	"Base"
+"Bottom to Top"	"De baixo para cima"
+"Boundaries"	""
+"Boundaries: the simple filter will only operate on grid cells which fall in the same shape"	""
+"Boundary Effect"	"Efeito de contorno"
+"Boundary Effect Color"	"Cor do efeito de contorno"
+"Bounding Box"	"Caixa de entorno"
+"Bounding Box [B]"	"Caixa de contorno [B]"
+"Branches"	"Ramos"
+"Branches to Litter"	"Ramos para Ninhada"
+"Braunschweiger Reliefmodell"	"Modelo de al�vio Braunschweiger"
+"Breaks"	"Quebras"
+"Brightness"	"Brilho"
+"Buffer"	"Buffer"
+"Buffer Distance"	"Dist�ncia de buffer"
+"Buffer Grid"	"Buffer de grade"
+"Buffer Size MB"	"Tamanho do buffer MB"
+"Buffer Size [MB]"	"Tamanho do buffer [MB]"
+"Buffer distance"	"Dist�ncia do buffer"
+"Buffer distance (grid units)."	"Dist�ncia do buffer (Unidades da grade)."
+"Buffer distance [map units]."	"Dist�ncia do buffer [unidades do mapa]."
+"Build Histogram..."	"Construir Histograma ..."
+"Buildings"	"Constru��es"
+"Bulk density top layer"	"Densidade aparente de camada superior"
+"Burn Stream Network into DEM"	"Fluxo em rede de gravadas em DEM"
+"Burned Streams"	"Fluxos produzidos"
+"Button"	"Bot�o"
+"Bypass second-pass processing, and merge warm (not ambiguous) and cold clouds"	"Processamento de desvio segundo a deriva��o e mesclar nuvens frias (sem abiguidade)"
+"Byte Order"	"Ordem de byte"
+"Byte order when writing floating point values in binary format"	"Ordem de bytes ao escrever valores de ponto flutuante em formato bin�rio"
+"Bytewise Interpolation"	"Interpola��o de Bytewise"
+"C"	"C"
+"C Correction"	"Corre��o C"
+"C Factor"	"Fator C"
+"C-SVC"	"C-SVC"
+"CC, canopy cover expressed as a portion [between 0-1] of the soil surface protected by vegetation or crop"	"CC, cobertura do dossel expressa como uma por��o [entre 0-1] da superf�cie do solo protegido por vegeta��o ou colheita"
+"CCD Physical Pixel Size [micron]"	"Tamanho F�sico do pixel CCD [m�cron]"
+"CELLS"	"C�LULAS"
+"CELLSIZE"	"TAMANHO DA C�LULA"
+"CENTER"	"CENTRO"
+"CFAC("	"CFAC("
+"CFit\n(created by SAGA Wizard)."	""
+"CLASS"	"CLASSE"
+"CLASS_ID"	"CLASSE_ID"
+"CLASS_NR"	"CLASSE_NR"
+"CLUSTER"	"CONJUNTO"
+"COLOR"	"COR"
+"CONTIGUITY"	"CONTIGUIDADE"
+"COUNT"	"CONTARGE"
+"CRS Database"	"Banco de dados CRS"
+"CRS Dictionary"	"Dicion�rio CRS"
+"CSV Files (*.csv)"	"Arquivos CSV "
+"CUMUL"	"CUMUL"
+"Cache"	""
+"Cache Directory"	""
+"Cache Size"	"Tamanho do cache"
+"Calculate distribution quantiles. Value specifies interval (median=50, quartiles=25, deciles=10, ...). Set to zero to omit quantile calculation."	"Calcule quantis de distribui��o. Valor especificado de intervalo (mediana = 50, quartis = 25, decis = 10, ...). Defina como zero para omitir o c�lculo dos quantis."
+"Calculate the volume under the grid's surface. This is mainly useful for Digital Elevation Models (DEM)."	"Calcule o volume sob a superf�cie da grade. Isto � �til para Modelos Digitais de Eleva��o (MDE)."
+"Calculates the gradient based on the values of each triangle's points.\n\n"	""
+"Calculates weights for distance plus one, avoiding division by zero for zero distances"	"Calcula pesos para a dist�ncias de mais de um, evitando a divis�o por zero para dist�ncias iguais a zero"
+"Calculating Catchment Area..."	"Calculando �rea de Influ�ncia ..."
+"Calculating Contributing Area"	"Calculando Contribui��o de �rea"
+"Calculating danger..."	"Calculando perigo ..."
+"Calculation"	"c�lculo"
+"Calculation Error"	"Erro no c�lculo"
+"Calculus"	"C�lculo"
+"Calculus BSL"	"C�lculo BSL"
+"Calibrated Digital Number"	"N�mero Digital Calibrado"
+"Calibration Constants"	"Constantes de calibra��o"
+"Camera"	"C�mera"
+"Can't execute a tool while another runs"	"N�o � poss�vel executar uma ferramenta, enquanto outra � executada"
+"Cancel"	"Cancelar"
+"Canny"	"Prudente"
+"Canopy Background Adjustment"	"Ajuste de fundo do dossel"
+"Canopy Cover"	"Capa de dorsel"
+"Canyons, Deeply Incised Streams"	"Dorsel, em fluxos profundamente insisos"
+"Carbon Cycle Simulation"	"Simula��o do ciclo do carbono"
+"Carbonization Factor"	"Fator de carboniza��o"
+"Cartesion Coordinates"	"Coordenadas cartesianas"
+"Cascade"	"Cascata"
+"Case Sensitive"	"Sens�vel ao Caractere"
+"Case of contiguity"	"Caso de contiguidade"
+"Cassini"	"Cassini"
+"Catchment Area"	"�rea de capta��o"
+"Catchment Area Calculation"	"C�lculo da �rea de capta��o"
+"Catchment area"	"�rea de capta��o"
+"Catchment slope"	"inclina��o de capta��o"
+"Categorical Features"	"Fei��es categorizadas"
+"Categorical Grids"	"Grades categorizadas"
+"Categories"	"Categorias"
+"Category"	""
+"Cell Balance"	"Saldo de c�lula"
+"Cell Count"	"N�mero de C�lulas"
+"Cell Count (X)"	"Contagem de c�lula"
+"Cell Count (Y)"	"Contagem de c�lula"
+"Cell Height"	"Altura da c�lula"
+"Cell Size"	"Tamanho da C�lula"
+"Cell Sizes"	"Tamanhos das c�lulas"
+"Cell size"	"Tamanho da c�lula"
+"CellSize to S-N Extent"	"Tamanho da c�lula para a extens�o S-N"
+"CellSize to W-E Extent"	"Tamanho da c�lula para a extens�o W-E"
+"Cells"	"C�lulas"
+"Cellsize"	"Tamanho da c�lula"
+"Cellsize of the output grid [map units]"	"Tamanho da c�lula para a grade de sa�da [unidades do mapa]"
+"Cellular Automata"	"Aut�matos de c�lulas"
+"Celsius to Fahrenheit"	"Celsius para Fahrenheit"
+"Center Versus Neighbours"	"Centro versus vizinhan�as"
+"Center of Triangles"	"Centro de Tri�ngulos"
+"Centered"	"Centralizado"
+"Central"	"Central"
+"Central Distance"	"Dist�ncia central"
+"Central Meridian"	"Meridiano central"
+"Central Parallel"	"Paralelo central"
+"Central Projection"	"Proje��o central"
+"Central Projection Distance"	"Dist�ncia da proje��o central"
+"Centre"	"Centro"
+"Centroid X"	"Centroide X"
+"Centroid Y"	"Centroide Y"
+"Centroids"	"Centroides"
+"Centroids for each part"	"Centr�ides para cada parte"
+"Change Cell Values"	"Alterar valores das c�lulas"
+"Change Color Format"	"Alterar formato de cor"
+"Change Data Storage"	"Alterar armazenamento de dados"
+"Change Date Format"	"Alterar formado da data"
+"Change Field Type"	"Alterar tipo do campo"
+"Change Grid Values"	"Alterar valores da grade"
+"Change Grid Values - Flood Fill"	"Alterar valores da grade - preenchimento"
+"Change Longitudinal Range for Grids"	"Alterar faixa longitudinal de grades"
+"Change Time Format"	"Alterar formato de tempo"
+"Change Vector"	"Alterar vetor"
+"Change Vector Analysis"	"An�lises de altera��o de vetor"
+"Change all values within radius."	"Alterar todos os valores dentro do raio."
+"Changed"	"Alterado"
+"Changed Grid"	"Grade alterado"
+"Channel"	"Canal"
+"Channel Definition Threshold (ha)"	"Limiar de defini��o de canais (ha)"
+"Channel Density"	"Densidade do canal"
+"Channel Direction"	"Dire��o do canal"
+"Channel Initiation Threshold"	"Limiar de inicia��o do canal"
+"Channel Mask"	"M�scara de canal"
+"Channel Network"	"Rede de Drenagem"
+"Channel Network Base Level"	"Base de n�vel da rede de canais"
+"Channel Network Distance"	"Dist�ncia da rede de canais"
+"Channel Network and Drainage Basins"	"Rede de Drenagem e Bacias Hidrogr�ficas"
+"Channel Network: Pass 1"	"Rede de canais: Passo 1"
+"Channel Network: Pass 2"	"Rede de canais: Passo 2"
+"Channel Network: Pass 3"	"Rede de canais: Passo 3"
+"Channel Network: Pass 4"	"Rede de canais: Passo 4"
+"Channel Network: Pass 5"	"Rede de canais: Passo 5"
+"Channel Network: Pass 6"	"Rede de canais: Passo 6"
+"Channel Skeleton"	"Esqueleto do canal"
+"Channel definition threshold"	"Limiar de defini��o de canal"
+"Channel network, all other cells NoData"	"Rede de canais, SemDados para todas as outras c�lulas"
+"Channel side slope(m/m)"	"Inclina��o lateral do canal (m/m)"
+"Channels"	"Canais"
+"Channels (Raster)"	"Canais (Raster)"
+"Channels (Vector)"	"Canais (Vetor)"
+"Charcoal to Environment"	"Carv�o para o Meio Ambiente"
+"Chart"	"Gr�fico"
+"Chart (bars):"	"Gr�fico (barras)"
+"Chart (sectors):"	"Gr�fico (seletores)"
+"Chart Type"	"Tipo do gr�fico"
+"Check Point Validity"	"Verifique o ponto de validade"
+"Check Vertices"	"Verifique v�rtices"
+"Check for Building Parts"	"Verifique se h� partes de constru��o"
+"Check the fields to export"	"Verifique os campos para exporta��o"
+"Check this in order to include NoData cells in the calculation."	"Marque esta, a fim de incluir c�lulas SemDados no c�lculo. "
+"Check this in order to include NoData points in the calculation."	"Marque esta, a fim de incluir pontos SemDados no c�lculo."
+"Check this parameter to constrain the query by an attribute range."	"Confira este par�metro para limitar a consulta por uma gama de atributos."
+"Check this to create a new attribute with the reclassification result. If unchecked, the existing attribute is updated."	"Confira este par�metro para limitar a consulta por uma gama de atributos."
+"Checked"	"Checked"
+"Chessboard"	"Tabuleiro"
+"Children"	"Crian�as"
+"Chip size of reference chip to be found in search chip"	"Tamanho do chip de ficha de refer�ncia a ser encontrado em busca de chip"
+"Chip size of search chip, used to find correlating reference chip"	"Tamanho do chip de busca de chip, usado para encontrar a ficha correspondente"
+"Choice"	"Op��o"
+"Choose 'slim' to trace grid node's shadow, 'fat' to trace the whole cell's shadow, or ignore shadowing effects. The first is slightly faster but might show some artifacts."	"Escolha 'fino' para rastrear a sombra de n�s da grade, 'espesso' para rastrear sombra de toda a c�lula, ou ignorar os efeitos de sombreamento. O primeiro � um pouco mais r�pido, mas pode mostrar alguns artefatos."
+"Choose 'slim' to trace grid node's shadow, 'fat' to trace the whole cell's shadow. The first is slightly faster but might show some artifacts."	"Escolha 'fino' para rastrear a sombra de n�s da rede, 'espesso' para rastrear sombra de toda a c�lula. O primeiro � um pouco mais r�pido, mas pode mostrar alguns artefatos."
+"Choose Cut from ..."	"Escolha Cortar a partir de ..."
+"Choose Directory"	"Escolha a pasta"
+"Choose Time Range"	"Escolha o Intervalo de tempo"
+"Choose a flow routing algorithm that shall be used for the overland flow distance calculation:\n- D8\n- MFD"	""
+"Choose a method"	"Escolha o m�todo"
+"Choose case: Rook's case contiguity compares only cell wich share an edge. Queen's case contiguity compares also cells which share just corners."	"Escolha de caso: Rook caso de contiguidade que compara apenas a parcela prop�cia da borda de uma c�lula. Rainha do caso contiguidade compara tamb�m as c�lulas que partilham apenas cantos."
+"Choose how to aggregate the values"	"Escolha como os valores devem ser agregados"
+"Choose how to align the ouput grid system to the AOI"	"Escolha como alinhar o sistema de grade de sa�da para a AOI"
+"Choose how to apply the new value."	"Escolha como aplicar o novo valor."
+"Choose how to handle file paths. With relative paths, you can package the *.spcvf and your point cloud tiles easily."	"Escolha como lidar com caminhos de arquivo. Com caminhos relativos, voc� pode empacotar o *.spcvf e sua nuvem de pontos facilmente."
+"Choose how to handle the NoData value of the output grid."	"Escolha como lidar com o valor SemDados da grade de sa�da."
+"Choose how to sort the elevation dataset before sampling"	"Escolha como classificar o conjunto de dados de eleva��o antes da amostragem"
+"Choose if you want to segmentate either on minima or on maxima."	"Escolha se voc� quer segmentar sobre os m�nimos ou sobre m�ximos."
+"Choose method how to adjust input values."	"Escolha a forma de como ajustar os valores de entrada."
+"Choose the Point Data Record Format you like to use"	"Escolha o formato do ponto de registro de dados que voc� gostaria de usar"
+"Choose the activation function used by the neronal network."	"Escolher a fun��o de ativa��o utilizada pela rede neronal."
+"Choose the classification constant to use"	"Escolha a constante de classifica��o a ser utilizada"
+"Choose the map type to generate."	"Escolha o tipo de mapa para gerar."
+"Choose the method how to insert additional points."	"Escolha o m�todo de como inserir pontos adicionais."
+"Choose the method to apply."	"Escolha o m�todo a aplicar."
+"Choose the mode of operation"	"Escolha o modo de funcionamento"
+"Choose the training method used for the neronal network."	"Escolha o m�todo de treinamento utilizado para a rede neronal."
+"Choose the type of data used in this model."	"Escolha o tipo de dados utilizado neste modelo."
+"Choose whether the input file's NoData value or a user specified NoData value is written"	"Escolha se valores SemDados do arquivo de entrada ou se um valor espec�fico deve ser considerado como SemDados"
+"Choose whether to reclassify a Point Cloud or to extract a subset from a Point Cloud."	"Escolha se deve reclassificar uma nuvem de pontos ou extrair um subconjunto de uma nuvem de pontos."
+"Circle"	"C�rculo"
+"Circle Point Distance [Degree]"	"Dist�ncia do C�rculo Ponto [Grau]"
+"Circles"	"C�rculos"
+"Circular"	"Circular"
+"Citation"	"Cita��o"
+"CityGML file import failed"	"A importa��o de arquivos CityGML falhou"
+"CityGML import failed"	"A importa��o CityGML falhou"
+"Class"	"Classes"
+"Class 1"	"Classe 1"
+"Class 2"	"Classe 2"
+"Class Identifier"	"Identificador da classe"
+"Class Name"	"Nome da classe"
+"Class Selection"	"Sele��o da classe"
+"Class Values"	"Valores da classe"
+"Classes"	"Classes"
+"Classification"	"Classifica��o"
+"Classification 1"	"Classifica��o 1"
+"Classification 2"	"Classifica��o 2"
+"Classification Constant"	"Constante de classifica��o"
+"Classification Method"	"M�todo de classifica��o"
+"Classification Quality"	"Qualidade de classifica��o"
+"Classification Type"	"Tipo de classifica��o"
+"Classification tools for grids."	"Ferramentas de classifica��o para grades"
+"Classify"	"Classificar"
+"Claudy 3"	"Claudy 3"
+"Clay"	"Argila"
+"Clay Loam"	"Argiloso"
+"Clear"	"Limpar"
+"Clear Fast Representativeness"	"Limpar Representatividade R�pidamente"
+"Clear Generalisation"	"Limpar Generaliza��o"
+"Clear History"	"Limpar hist�rico"
+"Clear Reference Points"	"Limpar pontos de refer�ncia"
+"Clear Selection"	"Limpar sele��o"
+"Climate"	"Clima"
+"Climate Data"	"Dados clim�ticos"
+"Climate parameters"	"Par�metros clim�ticos"
+"Climatic Precession"	"Precess�o clim�tica"
+"Clip Features"	"Cortar fei��es"
+"Clip Grid with Polygon"	"Cortar grade com pol�gono"
+"Clip Grid with Rectangle"	"Cortar grade a partir de ret�ngulo"
+"Clip Grids"	"Cortar grades"
+"Clip Points with Polygons"	"Cortar pontos com pol�gonos"
+"Clip to Extent"	"Clip para Extender"
+"Clipboard"	"Prancheta"
+"Clipped Grids"	"Grades cortadas"
+"Clipped Points"	"Pontos cortados"
+"Clipping Options"	"Op��es de corte"
+"Close"	"Fechar"
+"Close All"	"Fechar Tudo"
+"Close Gaps"	"Fechar lacunas"
+"Close Gaps with Spline"	"Fechar lacunas com ranhura/estrias"
+"Close Gaps with Stepwise Resampling"	"Fechar lacunas com reamostragem passo a passo"
+"Close One Cell Gaps"	"Fechar lacunas de pixels/celulas"
+"Close Project"	"Fechar projeto"
+"Close all data sets"	"Feche todos os conjuntos de dados"
+"Closed Depressions"	"Depress�es fechadas"
+"Closed Gaps Grid"	"Grade com lacunas fechadas"
+"Closing"	"Encerramento"
+"Closing Gaps..."	"Fechar lacunas ..."
+"Cloud Cover"	"Capa de n�vem"
+"Cloud Settings"	"Configura��es de n�vem"
+"Cluster"	"Aglomerado"
+"Cluster Analysis"	"An�lises de aglomerado"
+"Cluster Analysis (Shapes)"	"An�lises de aglomerado (Shapes)"
+"Cluster Analysis PC"	"An�lises de aglomerado PC"
+"Cluster Analysis for Point Clouds"	"An�lises de aglomerado para nuvem de pontos"
+"ClusterID"	"AglomeradoID"
+"Clusters"	"Aglomerados"
+"Clusters, which are closer than this distance to each other, are merged."	""
+"Coefficient of Determination"	"Coeficiente de determina��o"
+"Cold Cloud"	"Nuvem fria"
+"Collect values"	"Colete os valores"
+"Collpase Options"	"Op��es de colapso"
+"Color"	"Cor"
+"Color Attribute"	"Atributo de cor"
+"Color Blending"	"Misturando cor"
+"Color Palette"	"Paleta de cor"
+"Color Palette Rotation"	"Rota��o de paleta de cor"
+"Color Stretch"	"Extens�o de cores"
+"Color Triangle Composite"	"Tri�ngulo de composi��o de cor"
+"Color by Attribute"	"Cor pelo Atributo"
+"Coloring"	"Colora��o"
+"Colorisation (PC)"	"Coloriza��o (PC)"
+"Colorised Point Cloud"	"Nuvem de pontos colorizada"
+"Colors"	"Cores"
+"Colors Value Range"	"Alcance de valor de cores"
+"Colors file could not be exported."	"O arquivo de cores n�o pode ser exportado."
+"Colors file could not be imported."	"O arquivo de cores n�o pode ser importado"
+"Colour"	"Cor"
+"Colour Attribute"	"Atributo de cor"
+"Colour Normalized Brovey Sharpening"	"Cor normalizada Brovey Sharpening"
+"Colour Normalized Spectral Sharpening"	"Cor Normalizada por afia��o espectral "
+"Colouring"	"Colora��o"
+"Colours"	"Cores"
+"Colours Palette"	"Paleta de cores"
+"Columns"	"Colunas"
+"Combination"	"Combina��o"
+"Combination A"	"Combina��o A"
+"Combination B"	"Combina��o B"
+"Combine Grids"	"Combinar grades"
+"Combined Classes"	"Classes combinadas"
+"Combined Minimum Distance / Hillclimbing"	"Dist�ncia Combinada M�nima / hillclimbing"
+"Combined Shading"	"sombreamento Combinado"
+"Comma Separated Values"	"Valores separados por v�rgulas"
+"Command Line"	"Linha de comando"
+"Command Line Arguments"	"Argumentos de linha de comando"
+"Command Line with Header"	"Linha de Comando com cabe�alho"
+"Commands"	"Comandos"
+"Comment"	"Coment�rio"
+"Commit"	"Cometer/realizar"
+"Commit/Rollback Transaction"	"Cometer(realizar) / revers�o de transa��o"
+"Common Edge"	"Borda comum"
+"Common Edge Type of Face Neighbourhood"	"Borda comum ao tipo de face de vizinhan�a"
+"Common Vertex"	"V�rtice comum"
+"Compare with..."	"Comparar com..."
+"Completed Grid"	"Grade conclu�do"
+"Component"	"Coponente"
+"Composite"	"Composto"
+"Compound Analyses"	"An�lises compostas"
+"Compound Probability"	"Probabilidade composta"
+"CompuServe Graphics Interchange"	"Servidor de interc�mbio dos gr�ficos"
+"CompuServe Graphics Interchange (*.gif)"	"CompuServe Graphics Interchange (*.gif)"
+"Computed flow directions, 0=N, 1=NE, 2=E, ... 7=NW"	"Dire��es de fluxo computadorizada, 0=N, 1=NE, 2=E, ... 7=NW"
+"Concentration"	""
+"Concentration Approximation Threshold"	""
+"Concentration time (h)"	"Tempo de concentra��o ()"
+"Condition"	"condi��o"
+"Cone (Down)"	"Cone (Baixo)"
+"Cone (Up)"	"Cone (Acima)"
+"Cone (down)"	"Cone (baixo)"
+"Cone (up)"	"Cone (acima)"
+"Confirm file caching"	"Confirme o cache de arquivos"
+"Confusion"	"Confus�o"
+"Confusion Index"	"�ndice de confus�o"
+"Confusion Matrix"	"Matriz de confus�o"
+"Confusion Matrix (Polygons / Grid)"	"Matriz de confus�o (Pol�gonos / grades)"
+"Confusion Matrix (Two Grids)"	"Matriz de confus�o (duas grades)"
+"Connect to Database"	"Conecte-se ao banco de dados"
+"Connect to ODBC Source"	"Conectar-se a Fonte ODBC"
+"Connect to PostgreSQL"	"Conecte-se ao PostgreSQL"
+"Connected"	"Conectado"
+"Connection to database failed"	"Falha na conex�o com a base de dados"
+"Connections"	"Conex�es"
+"Connectivity"	"Conectividade"
+"Connectivity Analysis"	"An�lises de conectividade"
+"Connectivity Index (Pff)."	"�ndice de conectividade (Pff)."
+"Connectivity Neighbourhood"	"Conectividade de Vizinhan�a"
+"Connectivity Weighting"	"Pondera��o de conectividade"
+"Connectivity [Percent]"	"Conectividade (Porcentagem)"
+"Constant Grid"	"Grade constante"
+"Constant Histogram Stretch"	"Constante de Amplia��o do Histograma"
+"Constant Value"	"Valor constante"
+"Constant Variation Range [Degree]"	"Faixa de Varia��o Constante [Grau]"
+"Constant Wind Direction"	"Dire��o do vento constante"
+"Constant variation range"	"Faixa de varia��o constante"
+"Constrain"	"Constranger/restrigem"
+"Constrain Query"	"Restringir consulta"
+"Constrain model through central window cell"	"Restringir modelo por meio da c�lula central da janela"
+"Constraining attribute field number is out of range!"	"Restringindo o n�mero de campos de atributos que est�o fora do intervalo!"
+"Constraints"	"Restri��es"
+"Contour"	"Contorno"
+"Contour Lines"	"Linhas de contorno"
+"Contour Lines from Grid"	"Linha de contorno para a grade"
+"Contour lines equidistance [map units]."	"Contorno de linhas equidistantes [unidades do mapa]"
+"Contours"	"Contornos"
+"Contributing Area"	"Contribuindo com arredores"
+"Control Points"	"Pontos de controle"
+"Convergence"	"Converg�ncia"
+"Convergence (FD8)"	"Converg�ncia (FD8)"
+"Convergence Index"	"�ndice de Converg�ncia"
+"Convergence Index (Search Radius)"	"�ndice de converg�ncia (raio de busca)"
+"Convergence factor for Multiple Flow Direction Algorithm (Freeman 1991).\nApplies also to the Multiple Triangular Flow Directon Algorithm."	""
+"Convergence factor for Multiple Flow Direction algorithm"	"Fator de converg�ncia para o algoritmo de dire��o m�ltipla do fluxo"
+"Convergence factor for Multiple m_Flow Direction Algorithm (Freeman 1991)"	"Fator de converg�ncia para m�ltipla Dire��o m_Flow Algorithm (Freeman 1991)"
+"Convergence factor for the \'Multiple Flow Direction\' algorithm (after Freeman 1991)"	"Fator de converg�ncia para m�ltipla dire��o do fluxo (ap�s Freeman 1991)"
+"Conversion"	"Convers�o"
+"Convert Lines to Points"	"Converter linhas para pontos"
+"Convert Lines to Polygons"	"Converter linhas para pol�gonos"
+"Convert Multipoints to Points"	"Converter multipontos para pontos"
+"Convert Points to Line(s)"	"Converter pontos para linha(s)"
+"Convert Polygon/Line Vertices to Points"	"Converter pol�gonos/V�rtices de linhas para pontos"
+"Convert Polygons to Lines"	"Converter pol�gonos para linhas"
+"Convert Table to Points"	"Converter tabela para pontos"
+"Convert To Table"	"Converter para tabela"
+"Convert Vertex Type (2D/3D)"	"Converter tipo de v�rtice (2D/3D)"
+"Convert a shapes layer to a TIN\n\n"	""
+"Convert routes"	"Conveter rotas"
+"Convert track points"	"Converter pontos de trilha"
+"Convert way points"	"Converter forma de pontos"
+"Converted Grid"	"Converter grade"
+"Converting ..."	"Convertendo ..."
+"Converts a TIN data set to shapes layers.\n\n"	""
+"Convex Hull"	"Envolt�rio convexo"
+"Convexity"	"convexidade"
+"Conway's Game of Life"	""
+"Coordenada X"	"Coordenada X"
+"Coordenada X del punto de ignici�n (s�lo si no se usa grid de puntos de ignici�n)"	"Coordenada X do ponto de igni��o (apenas se n�o houver grade de ponto de flash usada)"
+"Coordenada Y"	"Coordenada Y"
+"Coordenada Y del punto de ignici�n (s�lo si no se usa grid de puntos de ignici�n)"	"Coordenada Y do ponto de igni��o (apenas se nenhuma grade ponto flash � utilizada)"
+"Coordinate Reference System Picker"	"Selecionador de Sistema de Refer�ncia de Coordenada"
+"Coordinate System"	"Sistema de coordenada"
+"Coordinate Transformation (Grid List)"	"Transforma��o de coordenada (Lista de grade)"
+"Coordinate Transformation (Grid)"	"Transforma��o de coordenada (Grade)"
+"Coordinate Transformation (Point Cloud List)"	"Transforma��o de coordenada (Lista de nuvem de ponto)"
+"Coordinate Transformation (Point Cloud)"	"Transforma��o de coordenada (Nuvem de ponto)"
+"Coordinate Transformation (Shapes List)"	"Transforma��o de coordenada (Lista de sahpes)"
+"Coordinate Transformation (Shapes)"	"Transforma��o de coordenada (Shapes)"
+"Coordinate Transformations based on the GeoTRANS-Engine of the National Imagery and Mapping Agency (NIMA)."	"Transforma��es de coordenadas com base no Geotrans-Engine da Ag�ncia Nacional de Imagens e Cartografia (NIMA)."
+"Coordinates"	"Coordenadas"
+"Coordinates of target point outside of DEM!"	"Coordenadas do ponto de destino fora do MDE!"
+"Copied Selection"	"Sele��o copiada"
+"Copy"	"Copiar"
+"Copy Attributes"	"Copiar atributos"
+"Copy Grid"	""
+"Copy Legend to Clipboard [Ctrl+L]"	"Copiar legenda para a �rea de transfer�ncia [Ctrl+L]"
+"Copy Legend to Clipboard..."	"Copiar legenda para a �rea de transfer�ncia "
+"Copy Map to Clipboard [Ctrl+C]"	"Copiar mapa para a �rea de transfer�ncia[Ctrl+C]"
+"Copy Project to Database"	"Copiar projeto para o banco de dados"
+"Copy Project to..."	"Copiar projeto para..."
+"Copy Selection"	"Copiar sele��o"
+"Copy Selection to New Shapes Layer"	"Copiar sele��o para a nova camada shape"
+"Copy Settings from other Layer"	"Copiar configura��es para outra camada"
+"Copy Settings from..."	"Copiar configura��es para ..."
+"Copy attributes from input to output point cloud."	"Copiar atributos de entrada para nuvem de ponto de sa�da."
+"Copy existing Attributes"	"Copiar atributos existentes"
+"Copy to Clipboard"	"Copiar para a �rea de transfer�ncia"
+"Copying original data..."	"Copiar dados originais ..."
+"Copyright (c) 2007 by Thomas Schorr"	"Copyright (c) 2007 by Thomas Schorr"
+"Copyrights (c) 2003 by Andre Ringeler"	"Copyrights (c) 2003 by Andre Ringeler"
+"Copyrights (c) 2003 by Olaf Conrad"	"Copyrights (c) 2003 by Olaf Conrad"
+"Copyrights (c) 2003 by Volker Wichmann"	"Copyrights (c) 2003 by Volker Wichmann"
+"Copyrights (c) 2004 by Victor Olaya"	"Copyrights (c) 2004 by Victor Olaya"
+"Copyrights (c) 2005 by Volker Wichmann"	"Copyrights (c) 2005 by Volker Wichmann"
+"Copyrights (c) 2006 by Victor Olaya"	"Copyrights (c) 2006 by Victor Olaya"
+"Copyrights (c) 2006 by Volker Wichmann"	"Copyrights (c) 2006 by Volker Wichmann"
+"Copyrights (c) 2007 by Volker Wichmann"	"Copyrights (c) 2007 by Volker Wichmann"
+"Copyrights (c) 2008 by Olaf Conrad"	"Copyrights (c) 2008 by Olaf Conrad"
+"Copyrights (c) 2009 Johan Van de Wauw"	"Copyrights (c) 2009 Johan Van de Wauw"
+"Copyrights (c) 2012 by Volker Wichmann"	"Copyrights (c) 2012 by Volker Wichmann"
+"Copyrights (c) 2014 by Volker Wichmann"	"Copyrights (c) 2014 by Volker Wichmann"
+"Core"	"Cora��o (Nucleo)"
+"Corrected Image"	"Imagem corrigida"
+"Corrected Transformed Vegetation Index"	"�ndice de vegeta��o transformado corrigido"
+"Correlated Points"	"Pontos correlacionados"
+"Correlated points with displacement and correlation information"	"Pontos correlacionados com deslocamento e correla��o de informa��es"
+"Correlation"	"Correla��o"
+"Correlation Matrix of the Fit Parameters:\n"	""
+"Corresponds to delta_max. Must be > 1"	"Corresponde � delta_max. Deve ser> 1"
+"Corresponds to delta_min. Must be > 0"	"Corresponde � delta_min. Deve ser> 0"
+"Cosine"	""
+"Cosine Correction (Civco 1989)"	"Cosseno de corre��o(Civco 1989)"
+"Cosine Correction (Teillet et al. 1982)"	"Cosseno de corre��o (Teillet et al. 1982)"
+"Cost Analysis"	""
+"Could not connect to data source."	"N�o foi poss�vel conectar-se a fonte de dados."
+"Could not create data source."	"N�o foi poss�vel criar fonte de dados."
+"Could not create dataset."	"N�o foi poss�vel criar dataset."
+"Could not initialize grid projection."	"N�o foi poss�vel inicializar proje��o da grade."
+"Could not load project."	"N�o foi poss�vel carregar projeto."
+"Could not save project."	"N�o foi poss�vel salvar projeto."
+"Count"	"Contagem"
+"Count No Data as Zero"	""
+"Count Only Above Base Level"	"Contagem Apenas Acima do N�vel de Base "
+"Count Only Below Base Level"	"Contagem Apenas Abaixo do n�vel de base"
+"Count Points in Polygons"	"Contagem de Pontos no Pol�gono"
+"Covariance"	"Covari�ncia"
+"Covariance Surface"	"Superf�cie de covari�ncia"
+"Covered Distance"	"Dist�ncia percorrida"
+"Create 3D Image"	"Criar imagem 3D"
+"Create Chart Layer (bars/sectors)"	"Criar camada de gr�fico (barras/seletores)"
+"Create Database"	"Criar banco de dados"
+"Create Graticule"	"Criar grade"
+"Create Grid System"	"Criar sistema de grade"
+"Create KML File"	"Criar arquivo KML"
+"Create Lookup Table"	"Criar Tabela de pesquisa"
+"Create New Shapes Layer"	"Criar uma nova camada shape"
+"Create New Table"	"Criar nova tabela"
+"Create Normalised Classification"	"Criar classifica��o normalizada"
+"Create Output of Quarter Cell Grids"	"Criar sa�da de quartos de c�lulas de grades"
+"Create PDF Docs"	"Criar documentos PDF"
+"Create PDF Documents"	"Criar documentos PDF"
+"Create Point Grid"	"Criar grade de pontos"
+"Create Propabilities"	"Criar probabilidades"
+"Create Raster Catalogue from Files"	"Criar cat�logo raster a partir de arquivo"
+"Create Raster Catalogues from Directory"	"Criar cat�logo raster a partir de uma pasta"
+"Create Reference Points"	"Criar pontos de refer�ncia"
+"Create Script Command File"	"Criar arquivo de script de linha de comando"
+"Create Single Multipart Polygon"	"Criar pol�gono �nico multipart"
+"Create TIN from shapes"	"Criar TIN a partir de shapes"
+"Create Tileshape from Virtual Point Cloud"	"Criar arquivo shape a partir de nuvem de pontos virtual"
+"Create Tool Description Files"	"Criar arquivos de descri��o de ferramentas"
+"Create Virtual Point Cloud Dataset"	"Criar dataset de nuvem de pontos virtual"
+"Create Web Content"	"Criar conte�do web"
+"Create X/Y Grids"	"Criar grades X/Y"
+"Create a binary mask Yes/No"	"Criar uma m�scara bin�ria Sim / N�o"
+"Create borders between segments as new grid."	"Criar bordas entre segmentos em nova grade"
+"Create index"	"Criar �ndice"
+"Create new Attribute"	"Criar novo atributo"
+"Created from file"	"Criado a partir de arquivo"
+"Creates a color animation based on the values of selected grids.\n"	""
+"Creation Options"	"Cria��o de op��es"
+"Creation option(s) not supported by the driver"	"Cria��o de op��o(�es) n�o suportada pelo controlador"
+"Croke et al. (2005)"	"Croke et al. (2005)"
+"Croke et al. (2005) !!! not yet implemented !!!"	"Croke et al. (2005) !!! ainda n�o implementada !!!"
+"Crop Coefficients"	"Coeficientes de corte"
+"Crop Statistics"	"Estat�sticas de corte"
+"Crop to Data"	"Cortar para dados"
+"Cropped Grids"	"Grades cortadas"
+"Cross"	"Cruz"
+"Cross Diagonal"	"Cruzamento diagonal"
+"Cross Profiles"	"Perfis transversais"
+"Cross Sections"	"Se��es de cruzamento"
+"Cross Validation"	"Valida��o de cruzamento"
+"Cross Validation Subsamples"	"Subamostras de valida��o de cruzamento"
+"Cross hatch"	"Hachura de cruzamento"
+"Cross-Classification Grid"	"Grade de classifica��o de cruzamento"
+"Cross-Classification and Tabulation"	"Classifica��o corte e tabula��o"
+"Cross-Sectional Curvature"	"Curvatura de corte transversal"
+"Cross-Tabulation"	"Tabula��o de cruzamento"
+"Cross-Tabulation Table"	"Tabela de tabula��o de cruzamento"
+"Cross-diagonal hatch"	"Hachura de cruzamento diagonal"
+"Cubic Spline Approximation"	"Aproxima��o c�bica estriada"
+"Cubic: a + b * x + c * x^2 + d * x^3"	"C�bico: a + b * x + c * x^2 + d * x^3"
+"Culmination"	"Culmina��o"
+"Cum.Covar."	"Cum.Covar."
+"Cum.Var."	"Cum.Var."
+"Cumulative"	"Corte de contagem"
+"Curvature"	"Curvatura"
+"Curvature Classification"	"Classifica��o de curvatura"
+"Curvature Thresholds [1 / m]"	"Limiar de curvatura [1 / m]"
+"Curvature Tolerance"	"Toler�ncia de curvatura"
+"Curvature tolerance that defines 'planar' surface"	"Toler�ncia de curvatura que define a superf�cie plana"
+"Curve Number"	"N�mero de curvatura"
+"Cut"	"Cortar"
+"Cut Shapes Layer"	"Cortar camadas shapes"
+"Cuts"	"Cortes"
+"Cutting %s resulted in an empty point cloud, skipping output!"	"O corte de %s resultou em uma nuvem de pontos vazia, pulando para a sa�da!"
+"Cycles"	"Ciclos"
+"Cylindrical Equal Area"	"�rea equivalente cil�ndrica"
+"D"	"D"
+"D, Average diameter [m] of the individual plants elements (stem, leaves) at the ground surface"	"D, Di�metro m�dio [m] dos elementos de plantas individuais (caule, folhas) na superf�cie do solo"
+"D/A"	"D/A"
+"D/sqrt(A)"	"D/sqrt(A)"
+"D8"	"D8"
+"DATA_CELLS"	"DATA_CELLS"
+"DBMS"	"Tipo de banco de dados"
+"DBase"	"DBase"
+"DBase file could not be opened."	"O arquivo DBase n�o p�de ser aberto."
+"DBase file does not contain any records."	"O arquivo DBase n�o cont�m quaisquer registros."
+"DD_FAC("	"DD_FAC("
+"DECLINE"	"DECL�NIO"
+"DEFAULT"	"Padr�o"
+"DEFAULT_BRIGHT"	"DEFAULT_BRIGHT"
+"DELAY("	"ATRASO("
+"DEM"	"MDE"
+"DEM without Sinks"	"MDE sem skins"
+"DEMON"	"DEMON"
+"DEMON - Min. DQV"	"DEMON - Min. DQV"
+"DEMON - Minium Drainage Quota Volume (DQV) for traced flow tubes"	"DEMON - Volume m�nimo de drenagem do contigente (DQV) para tubos de fluxo rastreados"
+"DESCRIPTION"	"Descri��o"
+"DIFF_MEAN"	"DIFF_MEAN"
+"DN"	"DN"
+"DSN"	"DSN"
+"DTM 1"	"DTM 1"
+"DTM 2"	"DTM 2"
+"DTM Filter (slope-based)"	"Filtro DTM (baseado-declive)"
+"DTM, digital terrain model [m]"	"DTM, modelo digital de terreno [m]"
+"DXF"	"DXF"
+"DXF Files (*.dxf)|*.dxf|All Files|*.*"	"Arquivos DXF (*.dxf)|*.dxf|All Files|*.*"
+"Daily Data"	"Dados di�rios"
+"Daily Insolation over Latitude"	"Insola��o di�ria sobre Latitude"
+"Daily to Hourly PET"	"PET di�rio por hora"
+"Danger"	"Perigo"
+"Dark Object Subtraction"	"Subtra��o de objeto escuro"
+"Darkness Digital Number (DN)"	"N�mero Digital de Escurid�o (DN)"
+"Data"	"Dados"
+"Data History"	"Hist�rico de de dados"
+"Data Manager"	"Gerenciador de dados"
+"Data Object"	"Objecto de dados"
+"Data Objects"	"Objetos de dados"
+"Data Offset (Bytes)"	"Deslocamento de dados (Bytes)"
+"Data Source Name"	"Nome da Fonte de Dados"
+"Data Sources"	"Fontes de dados"
+"Data Storage Type"	"Tipo de armazenamento de dados"
+"Data Table"	"Tabela de dados"
+"Data Type"	"Tipo de Dados"
+"Data completion..."	"Conclus�o de dados ..."
+"Data options"	"Op��es de dados"
+"Data storage type"	"Tipo de armazenamento de dados"
+"Data type"	"tipo de dado"
+"Database"	"Base de dados"
+"Database Name"	"Nome da base de dados"
+"Database access through the libmysql.lib interface."	"Acesso ao banco de dados por meio da interface libmysql.lib."
+"Database with Coordinate Reference System (CRS) definitions. A restart of SAGA is required to have the changes take effect!"	"Defini��es do banco de dados com sistema de coordenadas de refer�ncia (CRS). Um rein�cio do SAGA � necess�rio para que as altera��es tenham efeito!"
+"Database|ODBC"	"Banco de dados | ODBC"
+"Database|PostgreSQL"	"Banco de dados | PostgreSQL"
+"Dataset creation failed"	"A cria��o de conjunto de dados falhou"
+"Date"	"Data"
+"Date Column"	"Coluna de data"
+"Date Field"	"Campo de data"
+"Date/Time"	"Data/Hora"
+"Datum Definition"	"Defini��o de Datum"
+"Datum Shift"	"Mudan�a de Datum"
+"Datum Shift Grid"	"Mudan�a de Datum da grade"
+"Datum Shift Grid File"	"Arquivo de mudan�a de Datum da grade"
+"Datums (3 Parameters)"	"Datuns (3 Par�metros)"
+"Datums (7 Parameters)"	"Datuns (7 Par�metros)"
+"Day"	"Dia"
+"Day Length"	"Comprimento do dia"
+"Day of Month"	"Dia do m�s"
+"Day of Year"	"Dia do ano"
+"Day-Degree Factor"	"Fator de dia-grau"
+"Day-Degree Factor (lower bound)"	"Fator de dia-grau (limite inferior)"
+"Day-Degree Factor (upper bound)"	"Fator de dia-grau (limite superior)"
+"Day-Degree Factor depends on catchment characteristics"	"Fator de dia-grau dependente das caracter�sticas de capta��o"
+"Dead Fuel Moisture 100H"	"Umidade de inopera��o de combust�vel 100H"
+"Dead Fuel Moisture 10H"	"Umidade de inopera��o de combust�vel 10H"
+"Dead Fuel Moisture 1H"	"Umidade de inopera��o de combust�vel 1H"
+"Dead after"	"Depois da inopera��o"
+"December"	"Dezembro"
+"Decimal Precision"	"Precis�o decimal"
+"Decimals"	"Decimais"
+"Decision"	"Decis�o"
+"Decision Tree"	"�rvore de Decis�o"
+"Decrease Diagram Size"	"Diminua o tamanho do diagrama"
+"Decrease Exaggeration [F1]"	"Diminuir exagero [F1]"
+"Decrease Eye Distance"	"Diminuir dist�ncia de vis�o"
+"Decrease Legend Size"	"Diminuir tamanho da legenda"
+"Decrease Perspectivic Distance [F5]"	"Diminuir dist�ncia da perspectiva [F5]"
+"Decrease Size Scaling Factor [F7]"	"Diminuir tamanho do fator de escala[F7]"
+"Decrease Size [F5]"	"Diminuir o tamanho [F5]"
+"Decrease factor"	"Fator de diminui��o"
+"Decrease factor n_minus. Must be < 1."	"Fator de diminui��o n_minus. Deve ser < 1."
+"Deepen Drainage Routes"	"Aprofundar rotas de drenagem"
+"Default"	"Padr�o"
+"Default Filter Matrix (3x3)"	"Matriz de filtro padr�o (3x3)"
+"Default Reference Height"	"Altura Padr�o de Refer�ncia "
+"Default Rotation"	"Rota��o padr�o"
+"Default Size"	"Tamanho padr�o"
+"Defaults"	"Padr�es"
+"Defaults for New Maps"	"Padr�es para Novos Mapas"
+"Define AOI by ..."	"Definir AOI por ..."
+"Define Georeference for Grids"	"Definir Georreferenciamento para grades"
+"Definition"	"Defini��o"
+"Degree"	"Graus"
+"Dekang Lin"	"Dekang Lin"
+"Delete"	"Excluir"
+"Delete All Positions"	"Excluir Todas as posi��es"
+"Delete All Positions [Ctrl + X]"	"Excluir todas as posi��es [Ctrl + X]"
+"Delete All Records"	"Excluir todos os registros"
+"Delete Fields"	"Excluir Campos"
+"Delete History Entries"	"Excluir entradas do Hist�rico"
+"Delete Last Position [Ctrl + D]"	"Excluir �ltima posi��o [Ctrl + D]"
+"Delete Selected Part"	"Excluir parte selecionada"
+"Delete Selected Point"	"Excluir ponto selecionado"
+"Delete Selection"	"Excluir sele��o"
+"Delete Selection from Shapes Layer"	"Excluir sele��o de camadas shapes"
+"Delete selected point(s)."	"Excluir ponto(s) selecionado(s)."
+"Delete selected shape(s)."	"Excluir shape(s) selecionados."
+"Deleting raster band"	"Exclus�o de banda raster"
+"Deleting table"	"Excluindo tabela"
+"Delineated watershed basins"	"Bacias hidrogr�ficas delimitadas"
+"Delivery Index"	"�ndice de entrega"
+"Denoised"	"Denoised"
+"Denoised Grid"	"Grade Denoised"
+"Denormalisation"	"Desnormaliza��o"
+"Density"	"Densidade"
+"Density Index (Pf)."	"�ndice de densidade (Pf)."
+"Density [Percent]"	"Densidade [por cento]"
+"Density from Neighbourhood"	"Densidade de Vizinhan�a"
+"Dependent"	"Dependente"
+"Dependent Variable"	"Vari�vel dependente"
+"Dependent Variables"	"Vari�veis dependentes"
+"Dependent on chosen method, these are distances or probabilities."	"Dependem do m�todo escolhido, estas s�o as dist�ncias ou probabilidades."
+"Dependent on the chosen 'Initiation Grid' and 'Initiation Type' this value controls under which condition a channel is initiated."	"Dependendo da'grade de Inicia��o' e 'tipo de Inicia��o' escolhidos, esse valor controla em que condi��es um canal � iniciado."
+"Depending on mode of operation either transport capacity, transport fraction, threshold value or trigger value."	"Depende do modo de funcionamento, quer de capacidade de transportes , fra��o de transporte, valor limite ou valor de disparo."
+"Depression-free digital elevation model"	"Modelo digital de eleva��o livre de depress�o"
+"Depth"	"Profundidade"
+"Depth to which data history is stored. Set -1 keeps all history entries (default), 0 switches history option off."	"Profundidade em que o hist�rico de dados � armazenado. Definir -1 mant�m todas as entradas do hist�rico (padr�o), 0 para interruptores opcionais de hist�ria."
+"Der Gerinne- bzw. Hauptgerinneabfluss kann mit dieser Methode fuer Rasterzelle 1 manipuliert werden. "	"Der Gerinne- bzw. Hauptgerinneabfluss podem ser ser manipulados com este m�todo para a c�lula do raster 1."
+"Der Gerinne- bzw. Hauptgerinneabfluss kann mit dieser Methode fuer Rasterzelle 2 manipuliert werden. "	"Der Gerinne- bzw. Hauptgerinneabflusspodem ser ser manipulados com este m�todo para a c�lula do raster 2."
+"Derivation of slope lengths from catchment areas. These are rough approximations! Applies not to Desmet & Govers' method."	"Deriva��o de inclina��o de comprimentos de bacias hidrogr�ficas. Estes s�o apenas aproxima��es! N�o se aplica ao m�todo Desmet & Govers."
+"Derive contour lines."	"Derivar linhas de contorno."
+"Description"	"Descri��o"
+"Descriptive name for the grid system"	"Nome descritivo para o sistema de grade"
+"Desmet & Govers"	"Desmet & Govers"
+"Desmet & Govers 1996"	"Desmet & Govers 1996"
+"Destandardisation"	"Padroniza��o"
+"Destinations"	""
+"Destriped Grid"	"Grade fatiado"
+"Destriping"	"Fatiamento"
+"Destriping with Mask"	"Fatiamento com m�scara"
+"Details: Coefficients"	"Detalhes: Coeficientes"
+"Details: Model"	"Detalhes: Modelo"
+"Details: Steps"	"Detalhes:Etapas"
+"Detector type"	"Tipo de detector"
+"Determination"	"Determina��o"
+"Determination Coefficients"	"Coeficiente de determina��o"
+"Determines how the graticule is aligned to the extent, if division sizes do not fit."	"Determine como a grade � alinhada � medida, para tamanhos de divis�o n�o se encaixam."
+"Deterministic 8"	"Determinista 8"
+"Deterministic 8 (D8)"	"Determinista 8 (D8)"
+"Deterministic Infinity"	"Determinista infinito"
+"Deviation"	"Desvio"
+"Deviation from Arithmetic Mean"	"Desvio da M�dia Aritm�tica"
+"Deviation from Mean Value"	"Desvio do Valor M�dio"
+"Diagram"	"Diagrama"
+"Dialog"	"Di�logo"
+"Diameter plant elements"	"Elementos de di�metro de plantas"
+"Dictionary Files (*.dic)"	"Arquivos de dicion�rio (*.dic)"
+"Dictionary Files (*.lng)"	"Arquivos de dicion�rio (*.lng)"
+"Dictionary for Proj.4/OGC WKT translations. A restart of SAGA is required to have the changes take effect!"	"Dicion�rio de tradu��es Proj.4/OGC WKT. Um rein�cio do SAGA � necess�rio para que as altera��es tenham efeito!"
+"Dictionary for translations from built-in (English) to local language (editable text table). You need to restart SAGA to apply the changes."	"Dicion�rio de tradu��es embutidas (em Ingl�s) para a linguagem local (tabela de texto edit�vel). Voc� precisa reiniciar o SAGA para aplicar as altera��es."
+"Difference"	"Diferen�a"
+"Difference (A - B)"	"Diferen�a (A - B)"
+"Difference Input - Reconstruction"	"Diferen�a de entrada - Reconstru��o"
+"Difference Vegetation Index"	"ndice de Diferen�a de Vegeta��o "
+"Difference from Arithmetic Mean"	"Diferen�a da M�dia Aritm�tica"
+"Difference from Mean Value"	"Diferen�a de Valor M�dio"
+"Difference from all neighbour's mean"	"Diferen�a para todos os vizinhos na m�dia"
+"Difference to left neighbour"	"Diferen�a para o vizinho esquerdo"
+"Difference to left neighbour (using a while loop)"	"Diferen�a para o vizinho da esquerda (usando um loop while)"
+"Difference to local gradient."	"Diferen�a para o gradiente local."
+"Diffuse Insolation"	"Insola��o difusa"
+"Diffuse Pollution Risk"	"Risco de polui��o difusa"
+"Diffusive Hillslope Evolution (ADI)"	"Evolu��o difusiva de vertentes (ADI)"
+"Diffusive Hillslope Evolution (FTCS)"	"Evolu��o difusiva de vertentes (ETCS)"
+"Diffusivity [m2 / kyr]"	"Difusividade [m2 / kyr]"
+"Difuse Pollution Risk"	"Risco de polui��o difusa"
+"Digital Elevation Model that has to be processed"	"Modelo Digital de Eleva��o que deve ser processado"
+"Digital Terrain Model"	"Modelo Digital de Terreno"
+"Digital elevation model"	"Modelo Digital de Eleva��o"
+"Digital elevation model."	"Modelo Digital de Eleva��o"
+"Dilation"	"Dilata��o"
+"Dim"	"Dim"
+"Dim Colours"	"Cores Dim"
+"Dim Range"	"Alcance Dim"
+"Dip slope"	"Declive Dip"
+"Direcci�n del viento"	"Dire��o do vento"
+"Direcci�n del viento (grados desde el norte en sentido antihorario)"	"Rajadas de vento (graus a partir do Norte no sentido hor�rio)"
+"Direcci�n del viento (grados desde el norte)"	"Dire��o do vento (graus a partir do Norte)"
+"Direct Georeferencing of Airborne Photographs"	"Georreferenciamento direto de aerofotografias"
+"Direct Insolation"	"Insola��o direta"
+"Direct to Diffuse Ratio"	"Raz�o direto para difuso"
+"Direction"	"Dire��o"
+"Direction Difference"	"Diferen�a de dire��o"
+"Direction [Degree]"	"Dire��o [grau]"
+"Direction into which the wind blows, starting with 0 for North and increasing clockwise."	"Dire��o em que o vento sopra, come�ando com 0 para o Norte e crescente no sentido hor�rio."
+"Direction of Maximum Cost"	""
+"Direction of Minimum Standard Deviation"	"Dire��o de Desvio Padr�o M�nimo"
+"Direction of Plane [Degree]"	"Dire��o de Plano [Grau]"
+"Direction of the light source, measured in degree clockwise from the north direction."	"Dire��o da fonte de luz, medida em graus no sentido hor�rio a partir da dire��o norte."
+"Directional Average"	"M�dia direcional"
+"Directional Statistics"	"Estat�stica direcional"
+"Directional Statistics for Points"	"Estat�stica direcional para pontos"
+"Directional Statistics for Single Grid"	"Estat�stica direcional para grade simples"
+"Directory"	"Pasta"
+"Directory, where temporary cache files shall be saved."	"Directory, onde os arquivos de cache tempor�rios ser�o salvos."
+"Disconnect All"	"Desconectar todos"
+"Disconnect from ODBC Source"	"Desligar da Fonte ODBC"
+"Disconnect from PostgreSQL"	"Desconectar do PostgreSQL"
+"Discrete Colors"	"Cores discretas"
+"Discretization"	"Discretiza��o"
+"Discretization Threshold"	"Limiar de discretiza��o"
+"Disparity Image"	"Disparidade de imagem"
+"Displacement Vector"	"Deslocamento de vetor"
+"Displacement vectors between correlated points"	"Deslocamento de vetores entre os pontos correlacionados"
+"Display"	"Mostrar"
+"Display Resolution"	"Exibir resolu��o"
+"Display Type"	"Exibir tipo"
+"Dissolve Buffers"	"Dissolver buffers"
+"Dissolve Clip Features"	"Dissolver fei��es cortadas"
+"Dissolve..."	"Dissolver..."
+"Dissolved"	"Dissolvido"
+"Dissolved Lines"	"Dissolver linhas"
+"Dissolved Polygons"	"Dissolver pol�gonos"
+"Dist."	"Dist."
+"Distance"	"Dist�ncia"
+"Distance (ViGrA)"	"Dist�ncia (ViGrA)"
+"Distance Grid"	"Grade de dist�ncia"
+"Distance Overland"	"Dist�ncia terrestre"
+"Distance Range"	"Dist�ncia de alcance (Range)"
+"Distance Threshold"	"Dist�ncia de patamar (Threshold)"
+"Distance Weighted (inverse distance)"	"Dist�ncia Ponderada (dist�ncia inversa)"
+"Distance Weighting"	"Dist�ncia de pondera��o"
+"Distance Weighting Exponent"	"Expoente de dist�ncia de pondera��o"
+"Distance between points (grid units)."	"Dist�ncia entre pontos (unidades da grade)."
+"Distances"	"Dist�ncias"
+"Distinct"	"Distrito"
+"Diurnal Anisotropic Heating"	"Aquecimento diurno anisotr�pico"
+"Divergence"	"Diverg�ncia"
+"Diversity"	"Diversidade"
+"Diversity of Categories"	"Diversidade das Categorias"
+"Dividend"	"Dividendo"
+"Division"	"Divis�o"
+"Division Height"	"Altura da divis�o"
+"Division Width"	"Divis�o de largura"
+"Division by zero is not allowed !!!"	"A divis�o por zero n�o � permitido !!!"
+"Divisor"	"Divisor"
+"Do you really want to delete the table"	"Voc� realmente quer apagar a tabela"
+"Do you really want to delete this raster band"	"Voc� realmente quer apagar esta banda raster"
+"Do you want to delete the selection?"	"Voc� deseja apagar a sele��o?"
+"Do you want to exit SAGA?"	"Voc� deseja sair do SAGA?"
+"Do you wish to estimate Principal Point Offsets?"	"Voc� deseja estimar deslocamento do ponto principal?"
+"Do you wish to provide the Radial Distortion Parameters?"	"Voc� deseja fornecer Par�metros de distor��o radial?"
+"Do you wish to provide the time stamp of Image?"	"Voc� deseja fornecer a data e hora da imagem?"
+"Dominance"	"Domin�ncia"
+"Dot And Dash"	"Ponto e tra�o"
+"Dot and dash style"	"Estilo do ponto e tra�o"
+"Dotted"	"Pontilhado"
+"Dotted style"	"Estilho do pontilhado"
+"Double Edges"	"Dobro afiado"
+"Down"	"Para baixo"
+"Down [+]"	"Baixo [+]"
+"Down [End]"	"Baixo [End]"
+"Downhill flow is bound to preferred routing cells, where these are not no-data. Helps to model e.g. small ditches, that are not well represented in the elevation data."	"O declive do fluxo est� ligado a c�lulas de roteamento preferenciais, sempre que estas n�o est�o sem dados. Ajuda a modelar por exemplo pequenas valas, que n�o s�o bem representadas nos dados de eleva��o."
+"Downscaling Method"	"M�todo de redu��o de escala"
+"Downslope Area"	"�rea de curva descendente"
+"Downslope Basins"	"Bacias de curva descendente"
+"Downslope Curvature"	"Curvatura de curva descendente"
+"Downslope Distance Gradient"	"Dist�ncia da curva decrescente de gradiente"
+"Drainage Basins"	"Bacias de drenagem"
+"Drainage Network"	"Rede de drenagem"
+"Drape Map"	"Drapejar mapa"
+"Draw Box"	"Desenhar caixa"
+"Draw Faces"	"Desenhar faces"
+"Draw Nodes"	"Desenhar n�s"
+"Draw Style"	"Desenhar estilo"
+"Draw Wire"	"Desenhar fios"
+"Draw a section each n points"	"Desenhe uma se��o de cada n pontos"
+"Driver"	"Driver"
+"Driver does not support file creation."	"O controlador n�o suporta a cria��o do arquivo."
+"Drop"	"Soltar"
+"Drop Database"	"Soltar do Banco de Dados"
+"Drop Point Cloud Attributes"	"Soltar Atributos de nuvem de ponto "
+"Drop Table"	"Soltar tabela"
+"Dummy Grid"	"Grade de manequim"
+"Duplicated Points"	"Pontos duplicados"
+"Duplicates"	"Duplicatas"
+"Duration of Insolation"	"Dura��o da insola��o"
+"Dust [ppm]"	"Poeira [ppm]"
+"Dust factor: 100 ppm (standard)"	"Fator de poeira: 100 ppm (standard)"
+"Dynamische Flaechenwassernutzung und Abflussreduktion"	"Uso da terra din�mico e redu��o de escoamento da �gua"
+"Dynamische Flaechenwassernutzung..."	"Uso da �gua de superficies din�micas ..."
+"EDGES"	"BORDAS"
+"EHD, Effective hydrological depth of the soil [m]"	"DHE, profundidade efetiva hidrol�gica do solo [m]"
+"ENUM_ID"	"ENUM_ID"
+"EPSG Code"	"C�digo EPSG"
+"EPSG code error"	"Erro no c�digo EPSG"
+"ERDAS files other than version 7.4 are not supported."	"Outras vers�es diferentes da vers�o 7.4 de arquivos ERDAS n�o s�o suportados."
+"ESRI Arc/Info ASCII Grids (*.asc)"	"Grades ESRI Arc/Info ASCII (*.asc)"
+"ESRI Arc/Info Binary Grids (*.flt)"	"Grades bin�rios ESRI Arc/Info (*.flt)"
+"ESRI Arc/Info Grids"	"Grades ESRI Arc/Info"
+"ESRI E00"	"ESRI E00"
+"ESRI E00 Files|*.e00|All Files|*.*"	"Arquivos ESRI E00|*.e00|Todos os Arquivos|*.*"
+"ESRI Shape Files"	"Arquivos Shape ESRI "
+"ESRI Shapefiles"	"Arquivo Shape ESRI"
+"ESRI WKT Files (*.prj)"	"Arquivos ESRI WKT (*.prj)"
+"ETM+ Gain"	"ETM+ Ganho"
+"Each Line as new Profile"	"Cada linha como novo perfil"
+"Earth's Orbital Parameters"	"Par�metros Orbitais da Terra"
+"Earth-Sun Distance"	"Dist�ncia da Terra ao Sol "
+"East"	"Leste"
+"East []"	"Leste []"
+"Eccentricity"	"Excentricidade"
+"Eccentricity (e)"	"Excentricidade (e)"
+"Eckert IV/VI"	"Eckert IV/VI"
+"Edge"	"Borda"
+"Edge Cells"	"Borda das c�lulas"
+"Edge Connectivity"	"Bordas de conectividade"
+"Edge Contamination"	"Contamina��o de borda"
+"Edge Detection (ViGrA)"	"Detec��o de bordas (ViGrA)"
+"Edge Points"	"Pontos de Borda"
+"Edge Segments"	"Segmentos de Borda"
+"Edge threshold for nonlinear smoothing"	"Limiar de Borda para suaviza��o n�o-linear"
+"Edges"	"Bordas"
+"Edit"	"Editar"
+"Edit 3D-View Sequencer Positions"	"Editar Sequenciador Posi��es de visualiza��o 3D"
+"Edit Point Cloud"	"Editar nuvem de pontos"
+"Edit Positions"	"Editar posi��es"
+"Edit Selection"	"Editar sele��o"
+"Edit Shapes"	"Editar shapes"
+"Effective Air Flow Heights"	"Alturas eficazes do fluxo de ar"
+"Effective Flow Length"	"Comprimento de Fluxo eficaz"
+"Effective Rainfall"	"Chuvas efetivas"
+"Effective hydrological depth"	"Profundidade hidrol�gico efetiva"
+"Eigen Vectors"	"Vetores de Eigen"
+"Eigen reduction failed"	"Redu��o de Eigen falhou"
+"Eigenvalue"	"Autovalores"
+"Eigenvectors"	"Autovetores"
+"Eingangsdaten"	"Dados de entrada"
+"Einheit in der die WUse Daten vorliegen"	"Unidade nos dados indispon�veis"
+"Einlesen der NCache Textdatei"	"Lendo o arquivo de texto NCache"
+"Element Shape"	"Elemento de shape"
+"Elements"	"Elementos"
+"Elevation"	"Eleva��o"
+"Elevation Averaging"	"Calculando a m�dia de eleva��o"
+"Elevation Difference"	"Diferenca de eleva��o"
+"Elevation Grid"	"Grade de Eleva��o"
+"Elevation Range"	"Alcance de eleva��o"
+"Elevation Threshold"	"Limiar de eleva��o"
+"Elevation [m]"	"Eleva��o [m]"
+"Elevation at Reference Station [m]"	"Eleva��o na Esta��o de Refer�ncia [m]"
+"Elevation grid"	"Grade de eleva��o"
+"Elevation range (zMax (%.2f) - zMin (%.2f)) is equal or lower than zero!"	"Intervalo de eleva��o (zMax (%.2f) - zMin (%.2f)) � igual ou menor do que zero!"
+"Ellipsoid Definition"	"Defini��o de elipsoide"
+"Ellipsoid Height [m]"	"Altura do elipsoide [m]"
+"Ellipsoids"	"Elipsoides"
+"Enable local disk cache. Allows for offline operation."	""
+"Encountered invalid path description in *.spcvf file!"	"A inscri��o do caminho encontrado no arquivo *.spcvf� inv�lida!"
+"Encountered invalid path description in *.spcvf_tile_info file!"	"A inscri��o do caminho encontrado no arquivo *.spcvf_tile_info � inv�lida!"
+"End Latitude"	"Latitude final"
+"End Longitude"	"Longitude final"
+"Enforce True Color"	"Impor cor verdadeira"
+"Enhanced Vegetation Index"	" �ndice de Vegeta��o Aprimorado"
+"Entropy"	"Entropia"
+"Enumerate Table Field"	"Enumerar Campo da Tabela "
+"Epsilon"	"Epsilo"
+"Equals"	"Igual"
+"Equation"	"Equa��o"
+"Equidistance"	"Equidist�ncia"
+"Equidistant Cylindrical"	"Equidist�ncia cilindrica"
+"Equivalent Moisture"	"Humidade equivalente"
+"Equivalent Rectangle (A)"	"Ret�ngulo equivalente (A)"
+"Equivalent Rectangle (B)"	"Ret�ngulo equivalente (B)"
+"Erdas LAN/GIS files (*.lan, *.gis)|*.lan;*.gis|All Files|*.*"	"Arquivos Erdas LAN/GIS (*.lan, *.gis)|*.lan;*.gis|Todos os arquivos|*.*"
+"Erosion"	"Eros�o"
+"Error"	"Erro"
+"Error : Wrong table. Check table dimensions"	"Erro: tabela errada. Verificar as dimens�es da tabela"
+"Error : Wrong weights table. Check table dimensions"	"Erro: pesos errados da tabela. Verifique as dimens�es da tabela"
+"Error change (epsilon)"	"Erro de altera��o (Epsilo)"
+"Error in Formula"	"Erro na f�rmula"
+"Error in Trend Calculation"	"Erro no c�lculo de tend�ncia"
+"Error in formula"	"Erro na f�rmula"
+"Error parsing attribute fields: can't convert to number"	"Erro ao analisar campos de atributo: n�o pode converter-se ao n�mero"
+"Error parsing attribute fields: can't convert to number!"	"Erro ao analisar campos de atributo: n�o pode converter-se ao n�mero!"
+"Error parsing attribute fields: field index out of range"	"Erro ao analisar campos de atributo: �ndice de campo fora de alcance"
+"Error parsing attribute fields: field index out of range!"	"Erro ao analisar campos de atributo: �ndice de campo fora de alcance!"
+"Error parsing field type: can't convert to number"	"Erro de tipo de campo de an�lise: n�o pode converter-se ao n�mero"
+"Error: Continue anyway ?"	"Erro: Continuar mesmo assim?"
+"Errors"	"Erros"
+"Estimate Principal Point Offsets?"	"Estimar ponto de compensa��es principal ?"
+"Estimated Noise (absolute)"	"Ru�do estimado (absoluto)"
+"Estimated Noise (relative)"	"Ru�do estimado (relativo)"
+"Estimated noise in units of input data"	"Ru�do estimado em unidades de dados de entrada"
+"Estimated noise relative to mean standard deviation"	"Estimar ru�do em rela��o ao desvio m�dio padr�o"
+"Et/Eo, ratio of actual to potential evapotranspiration"	"Et/Eo, rela��o entre evapotranspira��o real e potencial"
+"Euclidean"	"Euclidiana"
+"EvP1 Name"	"Nome EvP1"
+"EvP2 Name"	"Nome EvP2"
+"EvP3 Name"	"Nome EvP3"
+"Evaluierungspunkt 1 [Default: Elbe5000]"	"Avalia��o do ponto 1 [Padr�o: Elbe5000]"
+"Evaluierungspunkt 2 [Default: Elbe5000]"	"Avalia��o do ponto 2 [Padr�o: Elbe5000]"
+"Evaluierungspunkt 3 [Default: Elbe5000]"	"Avalia��o do ponto 3 [Padr�o: Elbe5000]"
+"Evapotranspiration"	"Evapotranspira��o"
+"Evapotranspiration [m / dt]"	"Evapotranspira��o [m / dt]"
+"Exact"	"Exato"
+"Exaggeration"	"Exagero"
+"Exaggeration Factor"	"Fator de exagero"
+"Exaggeration Z"	"Exagero em Z"
+"Exclude No-Data Area"	"Excluir Area Sem-dados"
+"Exclude NoData Cells"	"Excluir c�lulas SemDados"
+"Execute"	"Executar"
+"Execute SQL"	"Execute SQL"
+"Execute Tool"	"Excluir ferramenta"
+"Executing tool"	"Excluindo ferramenta"
+"Execution"	"Execu��o"
+"Execution has been stopped by user!"	"A execu��o foi interrompida pelo usu�rio!"
+"Exit"	"Sair"
+"Exit SAGA"	"Sair do SAGA"
+"Expand"	"Expandir"
+"Expand Options"	"Expandir op��es"
+"Expand and Shrink"	"Expandir e encolher"
+"Expansion Degree"	"Grau de Expans�o"
+"Exponent"	"Expoente"
+"Exponent for distance weighting (0.0-4.0)"	"Expoente de pondera��o de dist�ncia (0,0-4,0)"
+"Exponential"	""
+"Export Atlas Boundary File"	"Exportar arquivo de limite de Atlas"
+"Export ESRI Arc/Info Grid"	"Exportar grade ESRI Arc/Info"
+"Export GPX"	"Exportar GPX"
+"Export GStat Shapes"	"Exportar Shapes GStat "
+"Export GeoTIFF"	"Exportar GeoTIFF"
+"Export Grid to KML"	"Exportar grade para KML"
+"Export Grid to XYZ"	"Exportar grade para XYZ"
+"Export Image (bmp, jpg, pcx, png, tif)"	"Exportar Imagem (bmp, jpg, pcx, png, tif)"
+"Export LAS Files"	"Exportar Arquivos LAS"
+"Export Point Cloud to Text File"	"Exportar nuvem de pontoss para arquivo de texto"
+"Export Raster"	"Exportar raster"
+"Export Raster to PostGIS"	"Exportar Raster para PostGIS"
+"Export Scalable Vector Graphics (SVG) File"	"Exportar arquivos Scalable Vector Graphics (SVG)"
+"Export Shapes"	"Exportar shapes"
+"Export Shapes to Generate"	"Exportar Shapes para gera��o"
+"Export Shapes to KML"	"Exportar shapes para KML"
+"Export Shapes to PostGIS"	"Exportar Shapes para PostGIS"
+"Export Shapes to XYZ"	"Exportar Shapes para XYZ"
+"Export Simple Features to Well Known Text"	"Exportar fei��es simples para Texto Bem Conhecido"
+"Export Surfer Blanking File"	"Exportar arquivo Surfer Blanking"
+"Export Surfer Grid"	"Exportar grade Surfer"
+"Export TIN to Stereo Lithography File (STL)"	"Exportar TIN para Stereo Lithography File (STL)"
+"Export Table"	"Exportar tabela"
+"Export Text Table"	"Exportar Tabela de Texto"
+"Export True Color Bitmap"	"Exportar Cor verdadeira em Bitmap"
+"Export WASP terrain map file"	"Exportar arquvo de mapa de terreno WASP"
+"Export WRF Geogrid Binary Format"	"Exportar em formato bin�rio de grade WRF"
+"Export to File"	"Exportar para arquivo"
+"Expression"	"Express�o"
+"Extended Neighourhood"	"Vizinhan�a estendida"
+"Extensions"	"Extens�es"
+"Extent"	"Extens�o"
+"Extent [Cut]"	"Extens�o [Cut]"
+"Extent to CellSize"	"Extender para o Tamanho de c�lula"
+"Extents"	"Extens�o"
+"Exterior Orientation Parameters"	"Par�metros de orienta��o exterior"
+"Extreme"	"Extremo"
+"Eye Distance"	"Dist�ncia de perspectiva"
+"Eye Distance [Degree]"	"Ver dist�ncia [Grau]"
+"F-statistic"	"F-statistica"
+"FACE_A"	"FACE_A"
+"FACE_B"	"FACE_B"
+"FLOW"	"FLUXO"
+"FS 1-1.5"	"FS 1-1.5"
+"FS 1.5-3"	"FS 1.5-3"
+"FS 3-6"	"FS 3-6"
+"FS <1"	"FS <1"
+"FS >6"	"FS >6"
+"Faces"	"Faces"
+"Factor"	"Fator"
+"Fade Color Count"	"Contagem de Desbotamento"
+"Fahrenheit to Celsius"	"Fahrenheit para Celsius"
+"Failure"	"Falha"
+"False Easting"	"Falso leste"
+"False Easting [m]"	"Falso leste [m]"
+"False Northing"	"Falso norte"
+"False Northing [m]"	"Falso leste"
+"Fast Representativeness"	"Representatividade r�pida"
+"Feature"	"Fei��o"
+"Feature Importances"	""
+"Feature Probabilities"	"Probabilidades de fei��es"
+"Feature Selection"	"Sele��o de fei��es"
+"Features"	"Fei��es"
+"Features Grid"	"Grade de fei��es"
+"Features are all pixels different not representing no-data."	"Fei��es s�o todos os pixels diferentes que n�o sejam sem-dados."
+"Features per Node"	"Fei��es por n�"
+"February"	"Fevereiro"
+"Feigenbaum's Bifurcation"	"Bifurca��o de Feigenbaum"
+"Ferhat Bing�l (c) 2009"	"Ferhat Bing�l (c) 2009"
+"Field"	"Campo"
+"Field %d: Name=\"	""
+"Field (ID)"	"Campo (ID)"
+"Field (Name)"	"Campo (Nme)"
+"Field Capacity [mm]"	"Capacidade do campo [mm]"
+"Field Definition"	"Defini��o do campo"
+"Field Description"	"Descri��o do campo"
+"Field Identifier"	"Identificador do campo"
+"Field Name"	"Nome do campo"
+"Field Names"	"Nomes do campo"
+"Field Naming"	"Nomear campo"
+"Field Properties"	"Propriedades do campo"
+"Field Separator"	"Separador do campo"
+"Field Statistics"	"Estat�sticas do campo"
+"Field Type"	"Tipo do campo"
+"Field Types"	"Tipos do campo"
+"Field data type"	"Tipo de dados do campo"
+"Field for Summary"	"Campo para resumo"
+"Field numbers (starting from 1) of the attributes to copy, separated by semicolon; fields one to three (x;y;z) are mandatory."	"N�meros de campo (a partir de 1) dos atributos a serem copiados, separados por ponto e v�rgula; campos de um a tr�s (x, y, z) s�o obrigat�rios."
+"Field with identifier."	"Campo com o identificador."
+"Field with measure information."	"Campo com informa��es de medida."
+"Field with x-coordinate."	"Campo com coordenada x"
+"Field with y-coordinate."	"Campo com coordenada y"
+"Field with z-coordinate information."	"Campo com informa��es da coordenada z."
+"Field with z-coordinate."	"Campo com z-coordenadas."
+"Fields"	"Campos"
+"Fields Visited"	"Campos Visitados"
+"Fields for diagram"	"Campos para diagrama"
+"Figure"	"Figura"
+"File"	"Arquivo"
+"File Cache"	"Arquivo de cache"
+"File Cache [MB]"	"Arquivo de cache [MB]"
+"File Caching"	"Arquivo no cache"
+"File Name"	"Nome do Arquivo"
+"File Paths"	"Caminhos de arquivo"
+"File System"	"Sistema de arquivos"
+"File contains headline"	"Arquivo contendo cabe�alho"
+"File does not exist:"	"Arquivo inexistente:"
+"File error"	"Erro no arquivo"
+"File path"	"Caminho do arquivo"
+"File signature is not 'LASF'!"	"Assinatura de arquivo n�o � "
+"File with Coefficients"	"Arquivo com Coeficientes"
+"Filename"	"Nome do arquivo"
+"Filepath"	"Caminho do arquivo"
+"Files"	"Arquivos"
+"File|ESRI E00"	"Arquivo|ESRI E00"
+"File|GPS Import"	"Arquivo|ImportarGPS"
+"File|Grid"	"Arquivo|Grade"
+"File|Reports"	"Arquivo|Relat�rios"
+"File|Shapes"	"Arquivo|Shapes"
+"File|Table"	"Arquivo|Tabela"
+"File|Tables"	"Arquivo|Tabelas"
+"File|Virtual"	"Arquivo|Virtual"
+"Fill Color"	"Cor de preenchimento"
+"Fill Color 1"	"Cor de preenchimento 1"
+"Fill Color 2"	"Cor de preenchimento 2"
+"Fill Gaps in Records"	"Preencher as lacunas nos registros"
+"Fill Increment"	"Preencher Incremento"
+"Fill NoData"	"Preencher SemDados"
+"Fill Sinks"	"Preencher dissipadores"
+"Fill Sinks (Planchon/Darboux, 2001)"	"Preencher dissipadores (Planchon/Darboux, 2001)"
+"Fill Sinks (QM of ESP)"	"Preencher vazios (QM of ESP)"
+"Fill Sinks (Wang & Liu)"	"Preencher dissipadores (Wang & Liu)"
+"Fill Sinks XXL (Wang & Liu)"	"Preencher dissipadores XXL (Wang & Liu)"
+"Fill Style"	"Estilo de preenchimento"
+"Fill Value"	"Valor de preenchimento"
+"Filled DEM"	"MDE preenchido"
+"Filling small holes in clouds..."	"Encher pequenos buracos nas nuvens ..."
+"Filter"	"Filtro"
+"Filter (Perego 2009)"	"Filtro (Perego 2009)"
+"Filter Clumps"	"Filtro aglomerado"
+"Filter Criterion"	"Crit�rio do filtro"
+"Filter Matrix"	"Matriz do filtro"
+"Filter Size (Radius)"	"Tamanho do filtro (Raios)"
+"Filter size (radius in grid cells)"	"Tamanho do filtro (raios nas c�lulas da grade)"
+"Filtered"	"Filtrado"
+"Filtered DTM"	"DTM filtrado"
+"Filtered Grid"	"Grade filtrada"
+"Filtered Image"	"Imagem filtrada"
+"Filtered Points"	"Pontos filtrados"
+"Filtered mask will be created automatically ..."	"M�scara filtrada ser� criada automaticamente"
+"Final Parameters"	"Par�metros finais"
+"Final State"	"Estado final"
+"Final aspect-slope grid."	"Aspecto final da grade de declive."
+"Final processing..."	"Processamento final ..."
+"Finalize"	"Finalizar"
+"Find Field of Extreme Value"	"Encontrar o campo de valor extremo"
+"Find Outlets"	"Encontrar sa�das"
+"Find Pits"	"Encontrar fossas"
+"Find and Run Tool"	"Encontrar e iniciar ferramenta"
+"Fire Length"	"Comprimento do fogo"
+"Fire Length (min)"	"Comprimento do fogo (min)"
+"Fire Risk Analysis"	"An�lise de risco de inc�ndio"
+"Fire Spreading Analysis"	"An�lise de espalhamento do fogo"
+"First Class"	"Primeira classe"
+"First Day"	"Primeiro dia"
+"First Derivative is singular! Probably the shape containes consecutive identical points.\n\n"	""
+"First input grid"	"Primeira grade de entrada"
+"Fit"	"Ajustar"
+"Fit Color Palette to Grid Values"	"Ajustar a paleta de cores para caber nos valores da grade"
+"Fit Column Sizes"	"Ajustar tamanhos de coluna"
+"Fit Diagram to Window"	"Ajustar diagrama � janela"
+"Fit Map Scale"	"Ajustar escala do mapa"
+"Fit N Points to shape"	"Moldar N pontos de ajuste"
+"Fit Row Sizes"	"Ajustar tamanhos de linha"
+"Fit Scale..."	"Ajustar escala"
+"Fit Size to Window"	"Ajustar tamanho � janela"
+"Fitting range"	"Ajustando alcance"
+"Fixed Interval (Degree)"	"Intervalo corrigido (Graus)"
+"Fixed Maximum"	"M�ximo corrigido"
+"Fixed Minimum"	"M�nimo corrigido"
+"Fixed Time Span (minutes)"	"Intervalo de Tempo corrigido (minutos)"
+"Fixed Time Span Offset (minutes)"	"Intervalo de tempo de deslocamento corrigido (minutos)"
+"Fixed angle"	"�ngulo corrigido"
+"Fixed value to be replaced"	"Valor corrigido para ser substituido"
+"Fixed|Cell value|"	"Corrigido!valor da c�lula!"
+"Flaechenverbrauch-Auswahl (FvA)"	"Flaechenverbrauch-Auswahl (FvA)"
+"Flame Length"	"Comprimento da chama"
+"Flame Length (m)"	"Comprimento da chama (m)"
+"Flat Area Threshold"	"�rea de Limiar plano"
+"Flat Area Values"	"Valores de �rea plana"
+"Flat Areas"	"�reas planas"
+"Flat Detection"	"Detec��o de plano"
+"Flats"	"Aplainamentos"
+"Flatten Polygon Layer"	"Camada de nivelamento de pol�gono"
+"Flattening"	"Aplainamento"
+"Flattening (f)"	"Aplainamento (f)"
+"Floating Point (4 byte)"	"Ponto flutuante (4 byte)"
+"Floating Point (8 byte)"	"Ponto flutuante (8 byte)"
+"Floating point"	"Ponto flutuante"
+"Flooded digital elevation model"	"Modelo digital de eleva��o Inundado"
+"Flow"	"Fluxo"
+"Flow Accumulation"	"Acumula��o de fluxo"
+"Flow Accumulation (Flow Tracing)"	"Acumula��o de Fluxo (Rastreamento de fluxo)"
+"Flow Accumulation (Mass-Flux Method)"	"Acumula��o de fluxo (M�todo Mass-Flux)"
+"Flow Accumulation (Parallel)"	"Acumula��o de fluxo (Paralelo)"
+"Flow Accumulation (QM of ESP)"	"Fluxo acumulado (QM of ESP)"
+"Flow Accumulation (Recursive)"	"Acumula��o de Fluxo (Recursive)"
+"Flow Accumulation (Top-Down)"	"Acumula��o de Fluxo (Top-Down)"
+"Flow Accumulation (Trace)"	"Acumula��o de fluxo (rastreamento)"
+"Flow Accumulation Unit"	"Unidade de acumula��o de fluxo"
+"Flow Algorithm"	"Algor�timo de fluxo"
+"Flow Connectivity"	"Conectividade de fluxo"
+"Flow Correction"	"Corre��o de fluxo"
+"Flow Depth"	"Profundidade de fluxo"
+"Flow Depth (actual flow velocity)"	"Profundidade de fluxo (velocidade do fluxo real)"
+"Flow Depth Grid (m)"	"Grade de profundidade de fluxo (m)"
+"Flow Direction"	"Dire��o de fluxo"
+"Flow Direction (up and down)"	"Dire��o de fluxo (acima e abaixo)"
+"Flow Direction Algorithm"	"Algor�timo de dire��o de fluxo"
+"Flow Directions"	"Dire��es de fluxo"
+"Flow Distance"	"Dist�ncia de fluxo"
+"Flow Distances"	"Dist�ncias de fluxo"
+"Flow Line Curvature"	"Linha de curvatura de fluxo"
+"Flow Lines"	"Linhas de fluxo"
+"Flow Path Length"	"Comprimento de linha de fluxo"
+"Flow Path Profile"	"Perfil de caminho de fluxo"
+"Flow Routing Algorithm"	"Algor�timo de roteamento de fluxo"
+"Flow Sinuosity"	"Sinuosidade de fluxo"
+"Flow Split Method"	"M�todo de fluxo dividido"
+"Flow Threshold"	"Limiar de fluxo"
+"Flow Travel Time"	"Tempo de deslocamento de fluxo"
+"Flow Width"	"Largura de fluxo"
+"Flow Width and Specific Catchment Area"	"Largura de fluxo e �rea de influ�ncia espec�fica"
+"Flow at Gauges"	"Medidores de fluxo"
+"Flow threshold, given as amount of cells, above which flow transport is unlimited. Ignored if range equals zero."	"Limiar de fluxo, dado como a quantidade de c�lulas, acima do qual o fluxo de transporte � ilimitado. Ignorado se o alcance(gama) igual a zero."
+"Flux"	"Fluxo"
+"Flux out of each cell, i.e. everything accumulated so far."	"Fluxo de cada c�lula, ou seja, tudo acumulado at� o momento."
+"Flying Height"	"Altura do v�o"
+"Focal Length (mm)"	"Dist�ncia Focal (mm)"
+"Focal Length [mm]"	"Dist�ncia Focal [mm]"
+"Focal Length in mm"	"Dist�ncia focal em mm"
+"Folder"	"Pasta"
+"Folder for PDF Files"	"Pasta para arquivos PDF"
+"Font"	"Fonte"
+"Font size given as percentage of map size."	"Tamanho da fonte dado em porcentagem do tamanho do mapa."
+"Foot Hollow"	"Cavidade de base"
+"Foot Slope"	"Declive de cavidade"
+"Foot Spur"	"Espora de cavidade"
+"Format"	"Formato"
+"Formula"	"F�rmula"
+"Forward"	"� frente"
+"Forward Diagonal"	"Diagonal em avan�o"
+"Forward [Page Up]"	"� frente [P�gina acima]"
+"Forward diagonal hatch"	"Escotilha de diagonal a frente"
+"Fourier Filter (ViGrA)"	"Filtro de Fourier (Vigra)"
+"Fourier Transform (Real, ViGrA)"	"Transforma��o de Fourier (Real, Vigra)"
+"Fourier Transform (ViGrA)"	"Transforma��o de Fourier (Vigra)"
+"Fourier Transform Inverse (ViGrA)"	"Transforma��o Inversa de Fourier (Vigra)"
+"Fourier Transformation (Imaginary)"	"Transforma��o de Fourier (imagin�rio)"
+"Fourier Transformation (OpenCV)"	"Transforma��o de Fourier (OpenCV)"
+"Fourier Transformation (Real)"	"Transforma��o de Fourier (Real)"
+"Fractal Dimension"	"Dimens�o fractal"
+"Fractal Dimension of Grid Surface"	"Dimens�o fractal da grade de superf�cie"
+"Fractal Type"	"Tipo fractal"
+"Fractals"	"Fractais"
+"Fragmentation"	"Fragmenta��o"
+"Fragmentation (Alternative)"	"Fragmenta��o (alternativa)"
+"Fragmentation (Standard)"	"Fragmenta��o (Padr�o)"
+"Fragmentation Classes from Density and Connectivity"	"Classes de fragmenta��o para densidade e conectividade"
+"Fragmentation Index"	"�ndice de fragmenta��o"
+"Frame"	"Moldura"
+"Frame Coordinates"	"Coordenadas do quadro"
+"Frame Size"	"Tamanho do quadro"
+"Frame Width"	"Largura do quadro"
+"Frame Width [Pixels]"	"Largura do quadro [pixels]"
+"Frequency"	"Frequ�ncia"
+"From"	"A partir"
+"Fuel Model"	"Modelo de combust�vel"
+"Full path to the directory for the output grids of each model step"	"Caminho completo para o diret�rio para grades de cada etapa do modelo de sa�da"
+"Function"	"Fun��o"
+"Function Fit"	"Ajuste de fun��o"
+"Function Fitting Range"	"Ajustar fun��o de faixa (Range)"
+"Function Parameters"	"Par�metros da Fun��o"
+"Function Plotter"	""
+"Function failed because no attributes are available"	"A fun��o falhou porque h� atributos que n�o est�o dispon�veis"
+"Fuzzified"	"Fuzificado"
+"Fuzzified Grid"	"Grade fuzificado"
+"Fuzzify"	"Fuzifica��o"
+"Fuzzy Intersection (AND)"	"Interse��o Fuzzy (E)"
+"Fuzzy Landform Element Classification"	"Elemento de classifica��o de relevo distorcido"
+"Fuzzy Logic"	"L�gica difusa"
+"Fuzzy Union (OR)"	"Uni�o Fuzzy (OU)"
+"G"	"G"
+"GC, Ground cover expressed as a portion [between 0-1] of the soil surface protected by vegetation or crop cover on the ground"	"GC, cobertura do solo expressa como uma por��o [entre 0-1] da superf�cie do solo protegido por vegeta��o ou plantas de cobertura no solo"
+"GDAL/OGR"	"GDAL/OGR"
+"GE / GR"	"GE / GR"
+"GE / V"	"GE / V"
+"GE / X"	"GE / X"
+"GPS Exchange Format (*.gpx)"	"Formato de troca de GPS(* .gpx)"
+"GPS Tools"	"Ferramentas de GPS"
+"GPSBabel"	"GPSBabel"
+"GPSBabel path"	"Caminho GPSBabel"
+"GPX Import"	"Importar GPX"
+"GPX file"	"Arquivo GPX"
+"GPX files (*.gpx)|*.gpx|All Files|*.*"	"Arquivos GPX (*.gpx)|*.gpx|Todos os arquivos|*.*"
+"GPX to shapefile"	"GPX para arquivo de shape"
+"GREEN_BLUE"	"GREEN_BLUE"
+"GREEN_GREY_BLUE"	"GREEN_GREY_BLUE"
+"GREEN_RED_BLUE"	"GREEN_RED_BLUE"
+"GRIB Files"	"Arquivos GRIB"
+"GRID"	"GRADE"
+"GStat Files (*.gstat)"	"Arquivos GStat (*.gstat)"
+"GStat shapes format export."	"Exportar em formato de shapes GStat"
+"GStat shapes format import."	"Importar em formato de shapes GStat"
+"GWR"	"GWR"
+"GWR Intercept"	"Intercepta��o GWR"
+"GWR Quality"	"Qualidade GWR"
+"GWR Regression"	"Regress�o GWR"
+"GWR Slope"	"Declive GWR"
+"GWR for Grid Downscaling"	"GWR pra grade com redu��o de escala"
+"GWR for Multiple Predictor Grids"	"GWR para grades de preditores multiplos"
+"GWR for Multiple Predictors"	"GWR para rasters de preditores multiplos"
+"GWR for Multiple Predictors (Gridded Model Output)"	"GWR para preditores multiplos (Sa�da Modelo Gradeado)"
+"GWR for Single Predictor (Gridded Model Output)"	"GWR para preditores simples (Sa�da modelo de grade)"
+"GWR for Single Predictor Grid"	"GWR para grades de preditores simples"
+"Gain"	"Ganho"
+"Gain (H/L) of all Landsat ETM+ bands (1-5,61,62,7,8)"	"Ganho (H/L) de todas as bandas Landsat ETM+ (1-5,61,62,7,8)"
+"Game Level"	"N�vel do jogo"
+"Games"	"Jogos"
+"Gamma"	"Gama"
+"Garden"	"Horta"
+"Garden|Introducing Module Programming"	"Horta|Apresentando Programa��o do M�dulo"
+"Garden|Recreations|Fractals"	"Horta|Recrea��es|Fractais"
+"Garden|Recreations|Games"	"Horta|Recrea��es|Jogos"
+"Garden|Web Service Data Access"	"Horta|Acesso a dados de servi�o Web"
+"Gauges"	"Medidores"
+"Gaussian"	"De Gauss"
+"Gaussian Filter"	"Filtragem Gaussiana"
+"Gaussian Filtering"	"Filtragem de Gauss"
+"Gaussian Landscape"	"Paisagem de Gauss"
+"Gaussian Landscapes"	"Paisagens de Gauss"
+"Gaussian and Exponential Weighting Bandwidth"	"Pondera��o de largura de banda de Gauss e exponencial"
+"Gc"	"Gc"
+"General"	"Geral"
+"General Curvature"	"Curvatura geral"
+"General Settings"	"Configura��es gerais"
+"Generalisation"	"Generaliza��o"
+"Generalized Surface"	"Superf�cie generalizada"
+"Generate Shapes"	"Gerar shapes"
+"Generated Shapefile."	"Arquivos de shapes gerado"
+"Geo-Reference"	"Georefer�ncia"
+"GeoTIFF (*.tif)"	"GeoTIFF (*.tif)"
+"GeoTIFF Files"	"Arquivos GeoTIFF"
+"GeoTRANS"	"GeoTRANS"
+"GeoTRANS engine initializing error!\n\nPlease check your data path settings!"	""
+"GeoTrans (Grid)"	"GeoTrans (Grade)"
+"GeoTrans (Shapes)"	"GeoTrans (Shapes)"
+"Geocentric Coordinate System"	"Sistema de coordenadas geoc�ntricas"
+"Geodesic Morphological Reconstruction"	"Reconstru��o morfol�gica geod�sica"
+"Geodetic"	"Geod�sico"
+"Geographic Coordinate Grids"	"Grade de Coordenadas Geogr�ficas"
+"Geographic Coordinate System"	"Sistema de Coordenadas Geogr�ficas"
+"Geographic Coordinate Systems"	"Sistema de Coordenadas Geogr�ficas"
+"Geographic Coordinates"	"Coordenadas geogr�ficas"
+"Geographic Distances"	"Dist�ncias geogr�ficas"
+"Geographic Distances (Pair of Coordinates)"	"Dist�ncias geogr�ficas (Par de coordenadas)"
+"Geoid"	"Geoide"
+"Geometric Figures"	"Figuras geom�tricas"
+"Geometry Type"	"Tipo de geometria"
+"Geoprocessing"	"Geoprocessamento"
+"Georeferencing"	"Georeferenciamento"
+"Get CRS Definition from..."	"Obter o CRS de defini��o para..."
+"Get Extent for ..."	"Obter extens�o para ..."
+"Get Grid from Virtual Point Cloud"	"Obter a grade da nuvem de pontos virtual"
+"Get Heights from ..."	"Obter alturas para ..."
+"Get Independent Variable from ..."	"Obter vari�vel independente para ..."
+"Get Shapes Extents"	"Obter extens�o das formas"
+"Get Subset from Virtual Point Cloud"	"Obter subconjunto da nuvem virtual de pontos"
+"Get table from MySQL server.\n"	""
+"Get the current cell's column/row index"	""
+"Get the x/y coordinates for the current cell"	""
+"Gini Decrease"	""
+"Global Irradiation"	"Irradia��o global"
+"Global Moran's I for Grids"	"Global Moran's I para grades"
+"Globe Viewer for Grids"	"Visualizador do globo para grades"
+"Gnomonic"	"Gnom�nico"
+"Gpx2shp path"	"Caminho Gpx2shp "
+"Gradient"	"Gradiente"
+"Gradient Calculation"	"C�lculo de gradiente"
+"Gradient Difference"	"Difer�nca de gradiente"
+"Gradient Vector from Cartesian to Polar Coordinates"	"Coordenadas polares para coordenadas cartesianas de vetores"
+"Gradient Vector from Polar to Cartesian Coordinates"	"Coordenadas gradiente polar para cartesianas"
+"Gradient Vectors"	"Vetores de gradiente"
+"Gradient Vectors from Direction and Length"	"Vetores gradiente de dire��o e comprimento"
+"Gradient Vectors from Directional Components"	"Componentes direcionais de gradientes de vetores"
+"Gradient Vectors from Surface"	"Vetores de gradiente de superf�cie"
+"Gradient threshold"	"Limiar de gradiente"
+"Gradients"	"Gradientes"
+"Graduated"	"Graduado"
+"Graduated Colors"	"Cores graduadas"
+"Graduated Colours"	"Cores graduadas"
+"Graticule"	"Grat�cula"
+"Gray Scale Image"	""
+"Great Elliptic"	"Grande el�ptica"
+"Greater than"	"Maior que"
+"Green"	"Verde"
+"Green (TM 3)"	"Verde (TM 3)"
+"Green-Ampt Infiltration"	"Infiltra��o Verde Ampt "
+"Greenness"	"Cor verde"
+"Grid"	"Grade"
+"Grid 1"	"Grade 1"
+"Grid 2"	"Grade 2"
+"Grid Buffer"	"Buffer para grade"
+"Grid Calculator"	"Calculador de Grade"
+"Grid Cell Index"	"�ndice c�lulas de grade"
+"Grid Difference"	"Diferen�a de grade"
+"Grid Division"	"Divis�o de grade"
+"Grid Generation"	""
+"Grid List"	"Lista de grade"
+"Grid Manager"	"Gerenciador de grade"
+"Grid Masking"	"Mascara de grade"
+"Grid Normalisation"	"Normaliza��o de grade"
+"Grid Project"	"Projeto de grade"
+"Grid Proximity Buffer"	"Buffer de proximidade para grade"
+"Grid Skeletonization"	"Setoriza��o de grade"
+"Grid Spacing (Map Units)"	"Espa�amento da grade (unidades do mapa)"
+"Grid Standardisation"	"Grade de normaliza��o"
+"Grid Statistics"	"Estat�sticas para grades"
+"Grid Statistics for Points"	"Estat�stica para grade de pontos"
+"Grid Statistics for Polygons"	"Estat�stica de grades para pol�gonos"
+"Grid System"	"Sistema da grade"
+"Grid System Extent"	"Extens�o do sistema da grade"
+"Grid System Fit"	"Ajustar sistema da grade"
+"Grid Systems"	"Sistemas de grade"
+"Grid Tools"	"Ferramentas de grade"
+"Grid Type"	"Tipo de grade"
+"Grid Value Request"	"Solicita��o de valor da grade"
+"Grid Values"	"Valores da grade"
+"Grid Values [Cells]"	"Valores da grade [C�lulas]"
+"Grid Values [Nodes]"	"Valores da grade [N�s]"
+"Grid Values to Points"	"Valores de grade para pontos"
+"Grid Values to Points (randomly)"	"Valores de grade para pontos (aleatoreamente)"
+"Grid View Settings"	"Configura��es de visualiza��o de grade"
+"Grid Volume"	"Volume da grade"
+"Grid based or related calculations."	"Grade baseada ou c�lculos relacionados"
+"Grid defining the zones to analyse. This grid also acts as a mask. Coding: NoData / categorial values."	"Definindo as zonas a serem analisadas na grade. Esta grade tamb�m atua como uma m�scara. Codifica��o: Valores SemDados/categorias."
+"Grid describing the AOI."	"Descri��o de grade do AOI."
+"Grid describing the state of each cell at timestep t + 1."	"Descrevendo o estado de cada c�lula da grade no timestep t + 1."
+"Grid describing the state of each cell at timestep t."	"Descrevendo o estado de cada c�lula da grade no timestep t."
+"Grid file could not be saved."	"O arquivo de grade n�o p�de ser salvo."
+"Grid list"	"Lista de grade"
+"Grid range"	"Alcance da grade"
+"Grid spacing used for the construction of correlated points [map units]"	"Espa�amento da grade utilizado para a constru��o de pontos correlacionados [unidades do mapa]"
+"Grid system"	"Sistema de grade"
+"Grid to TIN"	"Grade para TIN"
+"Grid to TIN (Surface Specific Points)"	"Grade para TIN (superf�cie de pontos espec�ficos)"
+"Grid to be filtered"	"Grade a ser filtrado"
+"Grid to filter"	"Grade para filtrar"
+"Grid to reclassify"	"Grade para reclassificar"
+"Grid value equals low value"	"O valor da grade � igual ao valor abaixo"
+"Grid with category of nearest source cell [Category]"	"Grade com categoria de c�lula de origem mais pr�xima [da categoria]"
+"Grid with euclidian distance to nearest source cell [grid units]"	"Grade com dist�ncia euclidiana a c�lula de origem mais pr�xima [unidades do raster]"
+"Grid with features to be buffered [Category/NoData]"	"Grade com fei��es que devem ser colocados o buffer [Categoria/SemDados]"
+"Grid with features to be buffered."	"Grade com fei��es a terem o buffer"
+"Grid with the input values to accumulate."	"Grade com valores de entrada para acumular."
+"Grid(s)"	"Grade(s)"
+"Grid(s) to fit extent to"	"Grade(s) para ajuste da extens�o"
+"Gridding"	"Grindagem"
+"Grids"	"Grades"
+"Grids Product"	"Produtos de grades"
+"Grids Sum"	"Soma de grades"
+"Grids from classified grid and table"	"Grades de classifica��o de grade e tabela"
+"Grids from different Systems"	"Grades de diferentes sistemas"
+"Grids to analyse"	"Grades para an�lise"
+"Grids to request"	"Grades para requisi��o"
+"Grids used to delineate the UCUs. Coding: NoData / categorical values."	"Grades usadas para delineamento de UCUs. Coding: SemDados / valores de categorias."
+"Grids with continuous data, statistics are calculated for each grid. Coding: NoData / continuous values."	"Grades com dados cont�nuos, as estat�sticas s�o calculadas para cada raster. Codifica��o: SemDados / valores cont�nuos."
+"Grid|Analysis"	"Grade|An�lises"
+"Grid|Calculus"	"Grade|C�lculos"
+"Grid|Export"	"Grade|Exportar"
+"Grid|Filter"	"Grade|Filtro"
+"Grid|Gridding"	"Grade|Cria��o de grade"
+"Grid|Import"	"Grade|Importar"
+"Grid|Tools"	"Grade|Ferramentas"
+"Ground cover"	"Cobertura do solo"
+"Group A"	"Grupo A"
+"Group B"	"Grupo B"
+"Group by"	"Agrupar por"
+"Grow Factor"	"Fator de crescimento"
+"Gs"	"Gs"
+"Gz"	"Gz"
+"HTML"	"HTML"
+"Hafer"	"Hafer"
+"Half the size of the moving window [vertex count], controls smoothing sensitivity."	"Metade do tamanho da janela m�vel [contagem dev�rtice], controles de suaviza��o de sensibilidade."
+"Halo Width"	"Largura de aur�ola"
+"Has Field Names"	"Disp�e nomes de campo"
+"Hauptgerinne-Parameter (erweitertes HD-Modell)"	"Par�metro-Hauptgerinne(erweitertes Modelo-HD)"
+"Having"	"Tendo"
+"Headline"	"Linha de cabe�alho"
+"Heads"	"Cabe�alhos"
+"Height"	"Altura"
+"Height (Cells)"	"Altura (C�lulas)"
+"Height Threshold"	"Limiar de altura"
+"Height [Degree]"	"Altura [Grau]"
+"Height given as percentage of map size"	"Altura dada em percentagem do tamanho do mapa"
+"Height of Atmosphere [m]"	"Altura do Ambiente [m]"
+"Height of Atmosphere and Vapour Pressure"	"Altura do Ambiente e press�o do vapor"
+"Height of the light source above ground."	"Altura da fonte de luz acima do solo."
+"Height of the light source, measured in degree above the horizon."	"Altura da fonte de luz, medida em graus acima do horizonte."
+"Height of view point"	"Altura do ponto de visualiza��o"
+"Height threshold for optimal profile calculation"	"Limite de altura ideal para o c�lculo do perfil"
+"Help"	"Ajuda"
+"Hemisphere"	"Hemisf�rio"
+"Herbaceous Fuel Moisture"	"Umidade doCombust�vel Herb�ceo"
+"High Pass"	"Passagem alta"
+"High Pass Filter"	"Filtro de passagem alta"
+"High Resolution Grid System"	"Sistema de grade de alta resolu��o"
+"High Ridges"	"Cumes elevados"
+"High Value"	"Valor elevado"
+"High variation for low sizes"	"Varia��o elevada para tamanhos baixos"
+"Higher"	"Superior"
+"Hilditch's Algorithm"	"Algoritmo de Hilditch"
+"Hill Height"	"Altura de colina"
+"Hill Index"	"�ndice de colina"
+"Hill Radius"	"Raio de Colina"
+"Hill-Climbing (Rubin 1967)"	"Subidas (Rubin 1967)"
+"Hillslope Index"	"�ndice de encosta de colina"
+"Histogram"	"Histograma"
+"Histogram Stretch"	"Amplia��o do Histograma"
+"Histogram Stretch Dialog"	"Di�logo de Amplia��o do Histograma"
+"Histogram Stretch to Minimum/Maximum"	"Amplia��o do Histograma para M�nimo/M�ximo"
+"Histogram Stretch to Percentile"	"Amplia��o do Histograma por percentil"
+"Histogram Stretch to Standard Deviation"	"Amplia��o do Histograma por Desvio Padr�o"
+"Histogram Surface"	"Histograma de superf�cie"
+"Histogram cloud signature:"	"Assinatura de histograma de nuvem:"
+"History"	"Hist�rico"
+"History Depth"	"Hist�rico de Profundidade"
+"Hofierka and Suri"	"Hofierka e Suri"
+"Hollow"	"Concavidade"
+"Homepage"	"Pagina inicial"
+"Homogenous"	"Homog�nea"
+"Horizontal"	"Horizontal"
+"Horizontal Align"	"Alinhamento horizontal"
+"Horizontal Interpolation Method"	"M�todo de interpola��o horizontal"
+"Horizontal Offset"	"Deslocamento horizontal"
+"Horizontal Overland Flow Distance"	"Fluxo da dist�ncia horizontal terrestre"
+"Horizontal Range"	"Faixa Horizontal"
+"Horizontal hatch"	"Hachura horizontal"
+"Host"	"Hospedeiro"
+"Hourly Data"	"Dados hora por hora"
+"How many trees to create?"	"Criar quantas �rvores?"
+"Hull Construction"	"Constru��o de cascos"
+"Humedad del combustible herb�ceo vivo"	"Combust�vel ativo de umidade herb�cea"
+"Humedad del combustible le�oso vivo"	"Umidade de combust�vel ativo de madeira"
+"Humedad del combustible muerto en 1-hora"	"Umidade de combust�vel inativo em uma hora"
+"Humedad del combustible muerto en 10-horas"	"Umidade de combust�vel inativo em 10 horas"
+"Humedad del combustible muerto en 100-horas"	"Umidade de combust�vel inativo em 100 horas"
+"Humification Factor"	"Fator de umidifica��o"
+"Humus to Charcoal"	"Humus de carv�o"
+"Hydrology"	"Hidrologia"
+"Hydrology: IHACRES"	"Hidrologia: IHACRES"
+"Hypsometric Curve"	"Curva Hipsom�trico"
+"Hypsometry"	"Hipsometria"
+"I am a module library template."	"Eu sou um modelo de biblioteca de m�dulo.s"
+"I'm diggin'..."	"Estou procurando'..."
+"I'm fillin'..."	"Estou preenchendo'..."
+"I, rainfall intensity [mm/h]"	"I, Intensidade da precipita��o [mm/h]"
+"I1: unrecognizable operator"	"I1: Operador irreconhec�vel"
+"I2: too many parameters"	"I2: Muitos par�metros"
+"I3: corrupted buffer"	"I3: buffer corrompido"
+"I4: size estimate too small"	"I4: estimativa de tamanho muito pequena"
+"ID"	"ID"
+"IF"	"SE"
+"IHACRES Basin"	"Bacia IHACRES"
+"IHACRES Basin (Dialog 2)"	"Bacia IHACRES (Di�logo 2)"
+"IHACRES Calibration (2)"	"Calibra��o IHACRES (2)"
+"IHACRES Distributed Input Dialog 2"	"IHACRES Di�logo de distribui��o de entrada 2"
+"IHACRES Elevation Bands"	"IHACRES Bandas de Eleva��o"
+"IHACRES Elevation Bands (Dialog 2)"	"IHACRES Bandas de eleva��o (Di�logo 2)"
+"IHACRES Elevation Bands Calibration"	"IHACRES Calibra��o de bandas de eleva��o"
+"IHACRES Input Table"	"IHACRES Tabela de entrada"
+"IHACRES Model Parameters"	"IHACRES Par�metros do Modelo"
+"IHACRES Model Parameters (Calibration)"	"IHACRES Par�metros do modelo (calibra��o)"
+"IHACRES Version"	"Vers�o IHACRES"
+"IHACRES Version 1.0"	"IHACRES Vers�o 1.0"
+"IHACRES_Basin_output"	"IHACRES_Basin_output"
+"IHS Sharpening"	"Afina��o de IHS"
+"IHS to RGB"	"IHS para RGB"
+"IMCORR - Feature Tracking"	"IMCORR - Rastreamento de fei��o"
+"ISODATA Cluster Statistics"	""
+"ISODATA Clustering for Grids"	""
+"Ice"	"Gelo"
+"Identifier"	"Identificador"
+"Identity"	"Identidade"
+"If checked the snow module is active"	"Se selecionado, o m�dulo de neve est� ativo"
+"If checked, it means there is no external inflow to the subbasin"	"Se marcada, significa que n�o existe um influxo externo � sub-bacia"
+"If checked, snow-melt module is used."	"Se selecionado, o m�dulo de derretimento de neve � usado."
+"If checked, then a second output table with all Time Series data is created."	"Se marcada, em seguida, uma tabela de sa�da secund�ria com todos os dados do per�odo � criada."
+"If checked, then temperature data are used."	"Se marcada, em seguida, s�o utilizados dados de temperatura."
+"If false, the training algorithm normalizes each input feature independently, shifting its mean value to 0 and making the standard deviation equal to 1."	"Se for falso, o algoritmo de treino normaliza a fun��o de entrada de cada elemento independentemente, mudando o seu valor m�dio para 0 e fazendo com que o desvio padr�o seja igual a 1."
+"If false, the training algorithm normalizes each output feature independently, by transforming it to the certain range depending on the used activation function."	"Se falso, o algoritmo de treinamento normaliza cada fei�ao de sa�da de forma independente, transformando-a ao certo intervalo, dependendo da fun��o de ativa��o utilizada."
+"If not set points will be removed from the input data set."	"Se n�o setar pontos de ajuste, ser� removido a partir do conjunto de dados de entrada."
+"If not set property attributes will be added to the orignal layer."	"Se n�o definir os atributos de propriedade ser� adicionado � camada original."
+"If not specified the cache will be created in the current user's temporary directory."	""
+"If set, output is given about the number of fields a flow path visits downhill. For D8 only."	"Se definido, a sa�da � dada sobre o n�mero de campos de uma via de fluxo visitada de declive. Somente para D8."
+"If table exists..."	"Se a tabela existe ..."
+"Ignition Points"	"Pontos de igni��o "
+"Ignore Defaults"	"Ignorar padr�es"
+"Ignore Lakes"	"Ignorar lagos"
+"Ignore No Data"	"Ignore sem-dados"
+"Illumination calculation"	"C�lculo de ilumina��o"
+"Image"	"Imagem"
+"Image (Blue Channel)"	"Imagem (Canal Azul)"
+"Image (Green Channel)"	"Imagem (Canal Verde)"
+"Image (Red Channel)"	"Imagem (Canal Vermelho)"
+"Image Acquisition Date"	"Dados de aquisi��o de Imagem "
+"Image Creation Date"	"Data de cria��o da Imagem "
+"Image File"	"Arquivo de imagem"
+"Image Files"	"Arquivos de Imagem"
+"Image Grid"	"Grade de imagem"
+"Image Import/Export."	"Importar/Exportar Imagem."
+"Image Properties"	"Propriedades da Imagem"
+"Image Resolution"	"Resolu��o da imagem"
+"Image Rotation [Degree]"	"Rota��o de Imagem [Grau]"
+"Image acquisition date (yyyy-mm-dd)"	"Data de aquisi��o da imagem (aaaa-mm-dd)"
+"Image creation date (yyyy-mm-dd)"	"Data de cria��o da imagem (aaaa-mm-dd)"
+"Image processing tools."	"Ferramentas de processamento de imagem."
+"Image segmentation algorithms."	"Algoritmos de segmenta��o de imagem."
+"Imagery"	"Imagens"
+"Imagery|Classification"	"Imagens|Classifica��o"
+"Imagery|Photogrammetry"	"Imagens|Fotogrametria"
+"Imagery|Segmentation"	"Imagens|Segmenta��o"
+"Imagery|ViGrA"	"Imagens|ViGrA"
+"Images"	"Imagens"
+"Images|*.bmp;*.jpg;*.png;*.tif|HTML Files|*.htm|All Files|*.*"	"Imagens|*.bmp;*.jpg;*.png;*.tif|HTML Files|*.htm|Todos os arquivos | *.*"
+"Imaginary"	"Imagin�rio"
+"Import"	"Importar"
+"Import Atlas Boundary File"	"Importar arquivo de Atlas Boundary"
+"Import Binary Raw Data"	"Importar dados bin�rios brutos"
+"Import Building Sketches from CityGML"	"Importar esbo�os de constru��o de CityGML"
+"Import DB Table from MySQL"	"Importar tabela do banco de dados MySQL"
+"Import DXF Files"	"Importar arquivos DXF"
+"Import ESRI Arc/Info Grid"	"Importar gradeESRI Arc/Info"
+"Import ESRI E00 File"	"Importar arquivo ESRI E00"
+"Import Erdas LAN/GIS"	"Importar Erdas LAN/GIS"
+"Import Extents"	"Extens�es de importa��o"
+"Import Filter"	"Importar filtro"
+"Import GPX"	"Importar GPX"
+"Import GRIB2 record"	"Importar recorde de GRIB2"
+"Import GStat Shapes"	"Importar Shapes GSTAT "
+"Import Grid from Table"	"Importar grade a partir de tabela"
+"Import Grid from XYZ"	"Importar grade a partir de XYZ"
+"Import Grids from KML"	"Importar grade a partir de KML"
+"Import Image (bmp, jpg, png, tif, gif, pnm, xpm)"	"Importar imagem (bmp, jpg, png, tif, gif, pnm, xpm)"
+"Import LAS Files"	"Importar arquivos LAS"
+"Import MOLA Grid (MEGDR)"	"Importar grade MOLA (MEGDR)"
+"Import NetCDF"	"Importar NetCDF"
+"Import Open Street Map Image"	""
+"Import Point Cloud from Shape File"	"Importar nuvem de pontos a partir de arquivo shape"
+"Import Point Cloud from Text File"	"Importar nuvem de pontos a partir de arquivo de texto"
+"Import Raster"	"Importar raster"
+"Import Raster from PostGIS"	"Importar Raster a partir de PostGIS"
+"Import SRTM30 DEM"	"Importar MDE SRTM30"
+"Import Scalable Vector Graphics (SVG) File"	"Importar arquivo Scalable Vector Graphics (SVG)"
+"Import Shapes"	"Importar shapes"
+"Import Shapes from PostGIS"	"Importar shapes a partir de PostGIS"
+"Import Shapes from XYZ"	"Importar shapes a partir de XYZ"
+"Import Simple Features from Well Known Text"	"Importar fei��es simples de texto conhecido"
+"Import Single Raster Band from PostGIS"	"Importar banda individual do raster a partir de PostGIS"
+"Import Stereo Lithography File (STL)"	"Importar arquivo de litografia estereof�nico (STL)"
+"Import Surfer Blanking Files"	"Importar arquivos de feixe de navega��o suspensa"
+"Import Surfer Grid"	"Importar grade de navega��o"
+"Import Table"	"Importar tabela"
+"Import Table from SQL Query"	"Importar tabela a partir de SQL Query"
+"Import Tables"	"Importar tabelas"
+"Import Text Table"	"Importar tabela de texto"
+"Import Text Table (Fixed Column Sizes)"	"Importar tabela de texto (coluna de tamanhos fixos)"
+"Import Text Table with Numbers only"	"Importar apenas n�meros de tabela de texto"
+"Import Tick Points"	"Importar pontos de marca��o"
+"Import USGS SRTM Grid"	"Importar grade USGS SRTM"
+"Import WASP terrain map file"	"Importar aqrquivo de mapa de terreno WASP"
+"Import WRF Geogrid Binary Format"	"Importar WRF em formato de geogrid bin�rio"
+"Import a Map via Web Map Service (WMS)"	"Importar um mapa via Web Map Service (WMS)"
+"Import and export filter for ESRI's E00 file exchange format."	"Importar e exportar filtro para o formato de troca de arquivos E00 da ESRI."
+"Import from File"	"Importar por meio de arquivo"
+"Import from Open Street Map"	"Importar a partir de Open Street Map"
+"Import, Clip and Resample Grids"	"Importar, cortar e reamostrar grades"
+"Import/Export"	"Importar/Exportar"
+"Importing"	"Importa��o"
+"Importing data ..."	"Importa��o de dados ..."
+"In this section you can define the topology of the neural network."	"Nesta se��o, voc� pode definir a topologia da rede neural."
+"In/Out"	"Dentro/Fora"
+"Include Center Cell"	"Incluir centro da c�lula"
+"Include X Coordinate"	"Incluir coordenada X"
+"Include Y Coordinate"	"Incluir coordenada Y"
+"Include a category for cloud shadows"	"Incluir uma categoria para sombras de nuvens"
+"Include diagonal neighbour relations"	"Incluir as rela��es de vizinhan�a diagonais"
+"Increase Diagram Size"	"Aumentar tamanho do diagrama"
+"Increase Exaggeration [F2]"	"Aumentar Exagero [F2]"
+"Increase Eye Distance"	"Aumentar dist�ncia de Vis�o"
+"Increase Legend Size"	"Aumentar tamanho da legenda"
+"Increase Perspectivic Distance [F6]"	"Aumentar dist�ncia de perspectiva [F6]"
+"Increase Size Scaling Factor [F8]"	"Aumentar tamanho do fator de escala [F8]"
+"Increase Size [F6]"	"Aumentar tamanho [F6]"
+"Increase factor"	"Aumenta o fator"
+"Increase factor n_plus. Must be > 1."	"Aumente fator n_plus. Deve ser> 1."
+"Independent Variable (per Grid and Cell)"	"Vari�vel independente (para grade e celula)"
+"Independent Variable (per Grid)"	"Vari�vel independente (para grade)"
+"Index"	"�ndice"
+"Indicatrix"	"Indicatriz"
+"Indices"	"�ndices"
+"Infiltration excess runoff [m/dt]"	"Excesso de infiltra��o de escoamento [m/dt]"
+"Infiltration rate [m/dt]"	"Taxa de infiltra��o [m/dt]"
+"Informe"	"Informe"
+"Init Fast Representativeness"	"Iniciar representatividade r�pida"
+"Init Generalisation"	"Iniciar generaliza��o"
+"Initial Litter Storage [g/m\xb2]"	""
+"Initial Nitrogen Content [kg/ha]"	"Teor de nitrog�nio inicial [kg/ha]"
+"Initial Number of Clusters"	""
+"Initial Number of Distance Classes"	"N�mero inicial de classes de dist�ncia"
+"Initial Number of Fishes [%]"	"N�mero inicial de Peixes [%]"
+"Initial Number of Sharks [%]"	"N�mero inicial de tubar�es [%]"
+"Initial State"	"Estado inicial"
+"Initial Threshold for Slope"	"Limiar inicial para declive"
+"Initial root zone storage deficit [m]"	"Zona inicial com d�ficit de armazenagem de raiz [m]"
+"Initial subsurface flow per unit area [m/h]"	"Escoamento subsuperficial inicial por unidade de �rea [m/h]"
+"Initial update value"	"Valor inicial de atualiza��o "
+"Initial value delta_0 of update-values delta_ij."	"Valor inicial Delta_0 de valores de atualiza��o delta_ij."
+"Initialisation"	"Inicializa��o"
+"Initialization Value"	"Inicializa��o Valor"
+"Initializing ..."	"A inicializar ..."
+"Initializing Fields"	"Inicializa��o de Campos"
+"Initializing direction matrix..."	"Inicializar matriz dire��o ..."
+"Initiation Grid"	"Grade de inicializa��o"
+"Initiation Threshold"	"Inicia��o Threshold"
+"Initiation Type"	"Tipo de Inicia��o"
+"Inlet Concentration"	""
+"Inner Buffer"	"Inner Tamp�o"
+"Input"	"Entrada"
+"Input Binary Grid"	"Grade de entrada bin�ria"
+"Input Features"	"Caracter�sticas de entrada"
+"Input File List"	"Input File List"
+"Input File's NoData Value"	"NoData valor de entrada do Arquivo"
+"Input Files"	"Arquivos de Entrada"
+"Input Format"	"Formato de Entrada"
+"Input Grid"	"Grade de entrada"
+"Input Grid 1"	"Grade de entrada 1"
+"Input Grid 2"	"Grade de entrada 2"
+"Input Grids"	"Grades de entrada"
+"Input Specification"	"Especifica��o de entrada"
+"Input Type of Destinations"	""
+"Input data for the trained network."	"Os dados de entrada para a rede treinada."
+"Input data to train the network."	"Os dados de entrada para treinar a rede."
+"Input file"	"Arquivo de entrada"
+"Input file list could not be opened!"	"Lista de arquivo de entrada n�o p�de ser aberto!"
+"Input for Mean over Catchment"	""
+"Input for module calculations."	"De entrada para os c�lculos do m�dulo."
+"Input for the morphological reconstruction"	"Entrada para a reconstru��o morfol�gica"
+"Input format"	"Formato de entrada"
+"Input grid"	"Grade de entrada"
+"Input grids to train the network."	"Grades de entrada para treinar a rede."
+"Input point shapefile"	"Arquivo de shape de ponto de entrada"
+"Input polygon shapefile"	"Arquivo de shape de pol�gono de entrada "
+"Input shape is empty!"	"O shape de entrada est� vazio!"
+"Input table is empty!"	"A tabela de entrada est� vazia!"
+"Input table or shapefile"	"Tabela de entrada ou arquivo de shape"
+"Insert"	"Inserir"
+"Insert Additional Points"	"Inserir pontos adicionais"
+"Insert Method"	"M�todo de Inser��o"
+"Insert Position"	"Posi��o de Inse��o"
+"Insert Record"	"Inserir registro"
+"Insertion"	"Inser��o"
+"Insertion Distance"	"Dist�ncia de Inser��o"
+"Integer"	"N�mero inteiro"
+"Integer (1 byte)"	"Inteiro (1 byte)"
+"Integer (2 byte)"	"Inteiro (2 byte)"
+"Integer (4 byte)"	"Inteiro (4 byte)"
+"Intensidad"	"Intensidade"
+"Intensidad (Kcal/m)"	"Intensidade (Kcal/m)"
+"Intensity"	"Intensidade"
+"Intensity (Kcal/m)"	"Intensidade (Kcal/m)"
+"Interactive tool execution failed"	"A execu��o da ferramenta interativa falhou"
+"Interactive tool execution has been started"	"A execu��o da ferramenta interativa foi iniciada"
+"Interactive tool execution has been stopped"	"A execu��o da ferramenta interativa foi parada"
+"Interactive version (left mouse clicks will trigger the calculation for the selected cell)."	"Vers�o interativa (clique esquerdo do mouse ir� acionar o c�lculo para a c�lula selecionada)."
+"Intercept"	"Interse��o"
+"Intercept of Soil Line"	"Interse��o da linha do solo"
+"Interface to Frank Warmerdam's Geospatial Data Abstraction Library (GDAL)."	"Interface para abstra��o geoespacial de biblioteca de dados de Frank Warmerdam (GDAL)."
+"Interflow"	"Interfluxo"
+"Interior"	"Interior"
+"Interior Orientation Parameters"	"Par�metros de orienta��o interior"
+"Internal Orientation Parameters"	"Par�metros de orienta��o interna"
+"Internal subcatchment routing velocity [m/h]"	"Velocidade de roteamento interna de sub bacia hidrogr�fica [m/h]"
+"Interpolated Colors"	"Cores interpoladas"
+"Interpolation"	"Interpola��o"
+"Interpolation Scale"	"Escala de interpola��o"
+"Interpolation Steps"	"Passos de Interpola��o"
+"Intersect"	"Intersec��o"
+"Intersection"	"Interse��o"
+"Interval"	"Intervalo"
+"Interval between points (in grid units)."	"Intervalo entre pontos (em unidades da grade)."
+"Intervalo de tiempo entre capas (min)"	"Intervalo de tempo entre camadas (min)"
+"Introducing Module Programming"	"Apresentando Programa��o do M�dulo"
+"Invalid Buffer Distance"	"Dist�ncia inv�lida de de buffer"
+"Invalid File Format."	"Formato de arquivo inv�lido."
+"Invalid Shapes"	"Shapes inv�lidos"
+"Invalid data set!"	"Dados inv�lidos inseridos!"
+"Invalid data!"	"Dados inv�lidos!"
+"Invalid display size!"	"Tamanho de exibi��o inv�lido!"
+"Invalid points layer."	"Camada de pontos inv�lida."
+"Invalid polygon layer."	"Camada de pol�gono inv�lida."
+"Inverse"	"Inverso"
+"Inverse Distance"	"Dist�ncia inversa"
+"Inverse Distance Offset"	"Dist�ncia inversa de deslocamento"
+"Inverse Distance Weighted"	" Dist�ncia inversa ponderada"
+"Inverse Distance Weighting Power"	"Dist�ncia inversa de pondera��o"
+"Inverse Grid"	""
+"Inverse Principle Components Rotation"	"Princ�pio inverso de rota��o de componentes"
+"Inverse transformation not available for selected projection type."	"A transforma��o inversa n�o est� dispon�vel para o tipo de proje��o selecionada."
+"Invert"	"Inverter"
+"Invert Data/No-Data"	"Inverter dados/sem-dados"
+"Invert Grid"	""
+"Invert Selection"	"Inverter sele��o"
+"Invert Selection of Shapes Layer"	"Inverter sele��o de camada shape"
+"Invert selection."	"Inverter sele��o."
+"Inverted"	""
+"Is the subbasin upstream (no external inflow)"	"� a sub-bacia a montante (sem fluxo externo)"
+"Isochrones Constant Speed"	"Velocidade is�crona constante"
+"Isochrones Variable Speed"	"Velocidade is�crona vari�vel"
+"Iteration"	"Intera��o"
+"Iterationen"	"Intera��es"
+"Iterations"	"Intera��es"
+"Iterative Minimum Distance (Forgy 1965)"	"Dist�ncia m�nima de interativa (Forgy 1965)"
+"JPEG - JFIF Compliant"	"Compat�vel com JPEG - JFIF"
+"JPEG - JFIF Compliant (*.jpg, *.jif, *.jpeg)"	"Compat�vel com JPEG - JFIF (*.jpg, *.jif, *.jpeg)"
+"JPG Files"	"Arquivos JPG"
+"Ja, Abfluss manuell vorgeben: res. Abfluss = Speicherinhalt * q + a"	"Sim, especificar manualmente o escoamento: res. Dreno = conte�do da mem�ria * q + a"
+"Ja, TestRoutine1 fuer Flusseinzugsgebiet bis zu der HG-Rasterzelle"	"Sim, TestRoutine1 para a bacia do rio at� a c�lula HG-grid"
+"Ja, TestRoutine1 nur fuer Teileinzugsgbiet der HG-Rasterzelle"	"Sim, somente para Teileinzugsgbiet TestRoutine1 a c�lula do HG-grid"
+"Ja, berechneten Abfluss veraendern: res. Abfluss = berechn. Abfluss * q + a"	"Sim, Altera��o de vaz�o calculada pelo cliente: res. Escorra = Calc.Dreno * q + a"
+"Jakeman & Hornberger (1993)"	"Jakeman & Hornberger (1993)"
+"January"	"janeiro"
+"Johan Van de Wauw (c) 2009"	"Johan Van de Wauw (c) 2009"
+"Join Attributes from a Table"	"Juntar atributos de uma tabela"
+"Join Attributes from a Table (Shapes)"	"Juntar atributos de uma tabela (Shapes)"
+"Join Segments based on Threshold Value"	"Juntar segmentos com base no valor do limiar"
+"Join Table"	"Juntar tabela"
+"Join segments based on threshold value."	"Juntar segmentos com base no valor limite."
+"Julia"	"Julia"
+"Julia - X"	"Julia - X"
+"Julia - Y"	"Julia - Y"
+"Julia Set"	"Julia Set"
+"Julian Day"	"Dia de Julian"
+"July"	"julho"
+"Junction"	"Jun��o"
+"Junctions"	"Jun��es"
+"June"	"junho"
+"K Factor"	""
+"K-Means Clustering for Grids"	""
+"K1"	"K1"
+"K2"	"K2"
+"K3"	"K3"
+"KE"	"KE"
+"KML files (*.kml)"	"Arquivos KML (*.kml)"
+"KML/KMZ File"	"Arquivo KML/KMZ"
+"KML/KMZ Files"	"Arquivos KML/KMZ "
+"KMZ Files"	"Arquivos KMZ"
+"Kappa"	"Capa"
+"Kappa Offset [degree]"	"Deslocamento de capa[grau]"
+"Kappa [degree]"	"Capa [grau]"
+"Kartoffeln"	"Kartoffeln"
+"Keep All"	"Manter tudo"
+"Keep Base Level below Surface"	"Manter Base de Dados com n�vel abaixo da superf�cie"
+"Keep Boundaries"	"Manter limites"
+"Keep Ridge Level above Surface"	"Manter cume de n�vel acima da superf�cie"
+"Keep Vertices on Straight Lines"	"Manter v�rtices em linhas retas"
+"Kelvin"	"Kelvin"
+"Kernel"	"N�cleo"
+"Kernel Density"	"Densidade do n�cleo"
+"Kernel Density Estimation"	"Densidade do n�cleo estimada"
+"Kernel Size"	"Tamanho do n�cleo"
+"Kernel Type"	"Tipo do n�cleo"
+"Kind of initializing Precipitation Event"	"Tipo de evento de inicializa��o de precipita��o"
+"Kinematic Routing Algorithm"	"Algor�timo de roteamento autom�tico"
+"Known Crops"	"Colheitas conhecidas"
+"Known X"	"X conhecido"
+"Known Y"	"Y Conhecido"
+"Kriging"	"Kringagem"
+"Kriging - geostatistical procedures for the gridding of irregular distributed point data."	"Kringagem - procedimentos de estat�stica para a gera��o de grade de dados de pontos distribu�dos irregulares."
+"LAS"	"LAS"
+"LAS File"	"Arquivo LAS"
+"LAS Files (*.las)|*.las|All Files|*.*"	"Arquivos LAS (*.las)|* .las |Todos os arquivos|*.*"
+"LAS Files (*.las)|*.las|LAS Files (*.LAS)|*.LAS|All Files|*.*"	"Arquivos LAS (*.las) |*.las|Arquivos LAS (*.LAS)|*.LAS|Todos os arquivos|*.*"
+"LAS Info"	"Informa��es de LAS"
+"LAS header exception: %s"	"Exce��o de cabe�alho LAS: %s"
+"LAS reader exception: %s"	"Exce��o de leitura de LAS: %s"
+"LFAC("	"LFAC("
+"LP, Saturated lateral permeability of the soil [m/day]"	"LP, permeabilidade laterais saturada do solo [m/dia]"
+"LS"	"LS"
+"LS Calculation"	"C�lculo LS"
+"LS Factor"	"Fator LS"
+"LS-Factor"	"Fator LS"
+"Label"	"R�tulo"
+"Label Field"	"Campo de r�tulo"
+"Labels"	"R�tulos"
+"Lag Classes"	"Classes Lag"
+"Lag Distance"	"Dist�ncia de Lag"
+"Lag Distance Classes"	"Classes de dist�ncia de Lag"
+"Lag Subbasin("	"Sub-bacia Lag("
+"Lag coefficient"	"Coeficiente Lag"
+"Lake"	"Lago"
+"Lake Flood"	"Inunda��o de lago"
+"Lambert Conformal Conic (1 parallel)"	"Conformacional c�nico de Lambert(1 paralelo)"
+"Lambert Conformal Conic (2 parallel)"	"Conformacional c�nico de Lambert(2 paralelo)"
+"Land Cover Weights"	"Pesos de cobertura da terra"
+"Land Surface Temperature"	"Temperatura de Superf�cie"
+"Land Surface Temperature [Deg.Celsius]"	"Temperatura de Superf�cie [Grau.Celsius]"
+"Land Use"	"Uso da terra"
+"Land Use ID"	"ID de Uso da Terra"
+"Land Use Scenario"	"Uso da Terra Cen�rio"
+"Land Use Scenario Generator"	"Generator de Cen�rio de Uso da Terra"
+"Landform"	"Acidente geogr�fico"
+"Landforms"	"Hidrografia"
+"Landsat"	"Landsat"
+"Landsat Band 2"	"Banda Landsat 2"
+"Landsat Band 3"	"Banda Landsat 3"
+"Landsat Band 4"	"Banda Landsat 4"
+"Landsat Band 5"	"Banda Landsat 5"
+"Landsat Band 6"	"Banda Landsat 6"
+"Landsat Import with Options"	"Op��es de importa��o Landsat"
+"Landsat Satellite (1-5)"	"Sat�lite Landsat (1-5)"
+"Landsat-1 MSS"	"Landsat-1 MSS"
+"Landsat-2 MSS"	"Landsat-2 MSS"
+"Landsat-3 MSS"	"Landsat-3 MSS"
+"Landsat-4 MSS"	"Landsat-4 MSS"
+"Landsat-4 TM"	"Landsat TM-4"
+"Landsat-5 MSS"	"Landsat-5 MSS"
+"Landsat-5 TM"	"Landsat-5 TM"
+"Landsat-7 ETM+"	"Landsat-7 ETM+"
+"Landsat-8 OLI/TIRS"	"Landsat-8 OLI/TIRS"
+"Language Translations"	"Tradu��es de Idiomas"
+"Laplace Filter"	"Filtro de Laplace"
+"Laplacian Filter"	"Filtro Laplaciano"
+"Laplacian Filter Kernel"	"Filtro Laplaciano de N�cleo"
+"Last Day"	"Ultimo dia"
+"Lat"	"Lat"
+"Lat. of True Scale"	"Lat. escala verdadeira"
+"Latitude"	"Latitude"
+"Latitude / Longitude Increment"	"Incremento de Latitude/Longitude"
+"Latitude 1"	"Latitude 1"
+"Latitude 2"	"Latitude 2"
+"Latitude 3"	"Latitude 3"
+"Latitude B"	"Latitude B"
+"Latitude Increment [Degree]"	"Incremento de Latitude [Grau]"
+"Latitude Pole"	"P�lo de Latitude"
+"Latitude [Degree]"	"Latitude [Grau]"
+"Latitude/Longitude Graticule"	"Grat�cula da Latitude/Longitude"
+"Latitudinal Statistics"	"Estat�sticas latitudinais"
+"Layer"	""
+"Layer A"	"Camada A"
+"Layer B"	"Camada B"
+"Layer of extreme value"	"Valor extremo de camada"
+"Layers"	"Camadas"
+"Layout"	"Layout"
+"Leading zeros for data set numbering. Set to -1 for not using numbers at all."	"Os zeros � esquerda para a numera��o de conjunto de dados. Definido como -1 para n�o usar n�meros em tudo."
+"Leaf Area Index"	"�ndice de �rea de folha"
+"Leaf Size (for Speed Optimisation)"	"Tamanho da folha (para otimiza��o da velocidade)"
+"Leafs"	"Folhas"
+"Least Cost Path"	"Caminho de menor custo"
+"Least Cost Paths"	"Caminhos de menor custo"
+"Least cost path profile lines"	""
+"Least cost path profile points"	"Pontos de perfil de caminho de menor custo"
+"Leaves"	"Folhas"
+"Leaves to Litter"	"Deixa para ninhada"
+"Lee Filter"	"Filtro de sotavento"
+"Lee Filter - Direction"	"Filtro de sotavento - dire��o"
+"Lee Filter - Standard Deviation"	"Filtro de sotavento - desvio padr�o"
+"Left"	"Esquerda"
+"Left Border (X)"	"Borda esquerda (X)"
+"Left Half"	"Metade esquerda"
+"Left Image"	"Imagem esquerda"
+"Left [/]"	"Esquerda [/]"
+"Left [F3]"	"Esquerda [F3]"
+"Left [Ins]"	"Esquerda [Ins]"
+"Left/Right"	"Esquerda/direita"
+"Legend"	"Legenda"
+"Legend: Save"	"Legenda: Salvar"
+"Legend: Zoom"	"Legenda: Zoom"
+"Length"	"Comprimento"
+"Length of the Gaussian window:\t %d"	""
+"Less than"	"Menor que"
+"Let pixel stay unclassified, if maximum likelihood probability value is less than threshold."	"Permitir p�xels n�o classificados, se o valor m�ximo da probabilidade � menor que o limite de probabilidade."
+"Let pixel stay unclassified, if minimum euclidian or mahalanobis distance is greater than threshold."	"Permitir p�xels n�o classificados, se a dist�ncia m�nima for maior do que o limite euclidiano ou Mahalanobis. "
+"Let pixel stay unclassified, if spectral angle distance is greater than threshold."	"Permitir p�xels n�o classificados, se a dist�ncia do �ngulo espectral � maior do que o limite."
+"Level"	"N�vel"
+"Level Aggregation"	"N�vel de agrega��o"
+"Level Heights"	"Alturas de n�vel"
+"Level of Detail"	"N�vel de detalhe"
+"Level of Generalisation"	"N�vel de generaliza��o"
+"Libraries"	""
+"Library"	"Biblioteca"
+"Life"	"Vida"
+"Life Cycle"	"Ciclo da vida"
+"Life Cycles"	"Ciclos de vida"
+"Light Source A"	"Fonte de luz"
+"Light Source B"	"Fonte de luz B"
+"Light Source Direction"	"Dire��o da fonte de luz"
+"Light Source Height"	"Altura da fonte de luz"
+"Lighting and visibility calculations for digital terrain models."	"C�lculos de Ilumina��o e visibilidade para modelos digitais do terreno."
+"Lighting, Visibility"	"Ilumina��o, visibilidade"
+"Line"	"Linha"
+"Line Color"	"Cor da linha"
+"Line Colour"	"Cor da linha"
+"Line Dissolve"	"Dissolver linha"
+"Line Endset (Bytes)"	"Extremidade da linha (Bytes)"
+"Line Offset (Bytes)"	"Deslocamentoda linha (Bytes)"
+"Line Order"	"Ordenar linha"
+"Line Properties"	"Propriedades da linha"
+"Line Simplification"	"Simplifica��o de linha"
+"Line Size"	"Tamanho da linha"
+"Line Smoothing"	"Suaviza��o de linha"
+"Line Style"	"Estilo de linha"
+"Line Transect(s)"	"Transecto(s) de linha"
+"Line or polygon shapefile to simplify."	"Simplificar arquivos de shapes de linha ou pol�gono"
+"Line with less than 2 vertices encountered!"	"Encontrou linhas com menos de 2 v�rtices!"
+"Line(s)"	"Linha(s)"
+"Line-Polygon Intersection"	"Intersec��o linha-pol�gono"
+"Linear"	"Linear"
+"Linear Flow Control Grid"	"Grade de controle de fluxo linear"
+"Linear Flow Threshold"	"Limiar de Fluxo Linear"
+"Linear Flow Threshold Grid"	"Grade de limiar de fluxo linear"
+"Linear Module"	"M�dulo Linear"
+"Linear: a + b * x"	"Linear: a + b * x"
+"Lines"	"Linhas"
+"Lines (extended)"	"Linhas (estendidas)"
+"Lines and Points"	"Linhas e Pontos"
+"Lines with Property Attributes"	"Linhas com atributos de Propriedade"
+"Linke Turbidity Coefficient"	"Coeficiente de Turbidez de Linke"
+"List"	"Lista"
+"List ODBC Servers"	"Lista de servidores ODBC"
+"List PostgreSQL Connections"	"Lista de conex�es PostgreSQL"
+"List Table Fields"	"Lista de campos da tabela"
+"List Tables"	"Lista de tabelas"
+"List of Grids"	"Lista de grades"
+"List of Measured Points as PC"	"Lista de pontos medidos como PC"
+"List of Shapes Layers"	"Lista de camadas shapes"
+"Listing"	"Listagem"
+"Litter to Humus"	"Ninhada de h�mus"
+"Litterfall Rate [g/m\xb2/a]"	""
+"Little Endian (Intel)"	"Little Endian (Intel)"
+"Load"	"Carregar"
+"Load Colors"	"Carregar cores"
+"Load Grid"	"Carregar grade"
+"Load Parameters"	"Par�metros de carregamento"
+"Load Point Cloud"	"Carregar nuvem de pontos"
+"Load Project"	"Carregar projeto"
+"Load Settings"	"Carregar defini��es"
+"Load Shapes"	"Carregar shapes"
+"Load Statistics from File..."	"Estat�sticas de carregamento para o arquivo ..."
+"Load TIN"	"Carregar TIN"
+"Load Table"	"Carregar tabela"
+"Load Text"	"Carregar texto"
+"Load Tool Library"	"Carregar biblioteca de ferramentas"
+"Load all bands"	"Carregar todas as bandas"
+"Load from File..."	"Carregar arquivo para ..."
+"Load from Workspace"	"Carregar a partir da �rea de trabalho"
+"Load grid"	"Carregar grade"
+"Load library"	"Carregar biblioteca"
+"Load point cloud"	"Carregar nuvem de pontos"
+"Load project"	"Carregar projeto"
+"Load shapefile"	"Carregar shapefile"
+"Load shapefile after conversion"	"Carregar shapefile ap�s a convers�o"
+"Load shapes"	"Carregar shapes"
+"Load table"	"Carregar tabela"
+"Load tool chain"	"Carregar cadeia de ferramentas"
+"Loaded Grid"	"Grade carregada"
+"Loaded Shapes"	"Shapes carregados"
+"Loading GSTAT-File"	"Carregando GSTAT-Arquivo"
+"Loam"	"Barro"
+"Loamy Sand"	"Areia argilosa"
+"Local Cartesian"	"Cartesiano local"
+"Local Cost"	""
+"Local Curvature"	"Curvatura local"
+"Local Downslope Curvature"	"Local curva descendente Curvatura"
+"Local Maxima"	"M�xima local"
+"Local Minima"	"Minima local"
+"Local Minima and Maxima"	"Minima e Maxima local"
+"Local Ridges"	"Cumes locais"
+"Local Ridges, Hills in Valleys"	"Comes locaislocais, Montanhas em Vales"
+"Local Rotation Base Level"	"N�vel Local Base de Rota��o"
+"Local Rotation [Degree]"	"Rota��o local [Grau]"
+"Local Sky View Factor"	"Fator de visualiza��o local do c�u"
+"Local Upslope Curvature"	"Curvatura de aclive local"
+"Locate STRM30 Data File"	"Localizar arquivo de dados STRM30"
+"Locate..."	"Localizar..."
+"Location"	"Localiza��o"
+"Locational Risk"	"Risco locacional"
+"Locations"	"Locais"
+"Logarithmic (down)"	"Logar�tmica (para baixo)"
+"Logarithmic (up)"	"Logar�tmica (para cima)"
+"Logarithmic Stretch Factor"	"Alongamento logar�tmico"
+"Logarithmic Transformation"	"Transforma��o logar�tmica"
+"Logarithmic: a + b * ln(x)"	"Logar�tmica: a + b * ln(x)"
+"Login"	"Conecte-se"
+"Logo"	"Logotipo"
+"Lon. Down"	"Lon. Baixa"
+"Long Dashed"	"Long tracejada"
+"Long dashed style"	"Long de estilo tracejado"
+"Long text"	"Texto long"
+"Longest watercourse length: %.2f m"	"Comprimento mais longo do curso de �gua: %.2f m"
+"Longitude"	"Longitude"
+"Longitude 1"	"Longitude 1"
+"Longitude 2"	"Longitude 2"
+"Longitude 3"	"Longitude 3"
+"Longitude Pole"	"Longitude P�lo"
+"Longitudinal Curvature"	"Curvatura longitudinal"
+"Longitudinal Grid Statistics"	"Estat�sticas Longitudinais de grades"
+"Longitudinal Profile"	"Perfil Longitudinal"
+"Look Up Section"	"Consultar na se��o"
+"Look up table (Points)"	"Olhe para cima de mesa (Pontos)"
+"Look-up Table"	"Tabela de pesquisa"
+"LookUp Table"	"Tabela de pesquisa"
+"Lookup Table"	"Tabela de pesquisa"
+"Lookup table used in method \"	""
+"Lookup table used in method \"	""
+"Lookup table."	"Tabela de pesquisa."
+"Loop"	"La�o"
+"Loss through Negative Weights"	""
+"Lotsa"	"Lotsa"
+"Low Pass"	"Passagem baixa"
+"Low Pass Filter"	"Filtro de passagem baixa"
+"Low Resolution Grid System"	"Sistema de resolu��o baixa de grades"
+"Low Value"	"Valor baixo"
+"Low moisture (WI <= 0.1"	"Baixa umidade (WI <= 0,1"
+"Low value < grid value < high value"	"Valor baixo < valor da grade < valor alto"
+"Low value <= grid value < high value"	"Valor baixo <= valor da grade< valor alto"
+"Low variation for low sizes"	"Baixa varia��o de tamanhos baixos"
+"Low-pass 1"	"Passagem baixa 1"
+"Low-pass 2"	"Passagem baixa 2"
+"Lower"	"Inferior"
+"Lower Border (Y)"	"Borda inferior (Y)"
+"Lower Tolerance"	"Baixa toler�ncia"
+"Lower left corner"	"Canto inferior esquerdo"
+"Loxodrome"	"Loxodrome"
+"Loxodromes"	"Loxodromes"
+"Lumped Atmospheric Transmittance"	"Transmit�ncia de aglomerados atmosf�ricos"
+"Lumped Atmospheric Transmittance [Percent]"	"Transmit�ncia de aglomerados atmosf�ricos [por cento]"
+"Luv Factor"	"Fator de Luv"
+"M"	"M"
+"MAX"	"MAX"
+"MAXIMUM"	"M�XIMO"
+"MDE"	"MDE"
+"MEAN"	"M�DIA"
+"MFD"	"MFD"
+"MIN"	"MIN"
+"MINIMUM"	"M�NIMO"
+"MLRA Coefficients"	"Coeficientes MLRA"
+"MLRA Model"	"Modelo MLRA"
+"MLRA Steps"	"Passos MLRA"
+"MMF-SAGA Soil Erosion Model"	"Modelo de eros�o do solo MMF-SAGA "
+"MOLA Grids (*.img)|*.img|All Files|*.*"	"Grades MOLA (*.img)|*.img|Todos os arquivos|*.*"
+"MORAN_I"	"MORAN_I"
+"MRRTF"	"MRRTF"
+"MRVBF"	"MRVBF"
+"MS Windows Bitmap (*.bmp)|*.bmp|All Files|*.*"	"MS Windows Bitmap (*.bmp)|*.bmp|Todos os arquivos|*.*"
+"MS, Soil moisture at field capacity [% w/w]"	"MS, Capacidade de campo de umidade do solo [% w/w]"
+"MSL Height [m]"	"Altura MSL [m]"
+"Maehweide"	"Maehweide"
+"Magnitude"	"Magnitude"
+"Mahalanobis Distance"	"Dist�ncia de Mahalanobis"
+"Main"	"Principal"
+"Main Basin ID"	"Principal Bacia ID"
+"Main Point Cloud"	"Ponto de Nuvem Principal"
+"Main Radius"	"Raio Principal"
+"Main channel routing velocity [m/h]"	"Velocidade de roteamento do canal principal [m/h]"
+"Main layer. The output layer will have the same fields in the attribute table as this layer."	"Camada principal. A camada de sa�da ter� os mesmos campos na tabela de atributos que esta camada."
+"Majority"	"Maioria"
+"Majority Filter"	"Filtro de maioria"
+"Make sure that the files\n"	""
+"Manager"	"Gerenciador"
+"Mandelbrot"	"Mandelbrot"
+"Mandelbrot Set"	"Mandelbrot Set"
+"Manhattan"	"Manhattan"
+"Manipulation des Gerinne- bzw. Hauptgerinneabflusses: Rasterzelle 1"	"Manipula��o de fluxo da calha ou do canal principal: pixel do raster 1"
+"Manipulation des Gerinne- bzw. Hauptgerinneabflusses: Rasterzelle 2"	"Manipula��o de fluxo da calha ou do canal principal: pixel do raster 2"
+"Manning's N"	"Manning's N"
+"Manning's Roughness"	"A rugosidade de Manning"
+"Manning-Strickler Coefficient"	"Coeficiente de Manning-Strickler"
+"Manning-Strickler coefficient for flow travel time estimation (reciprocal of Manning's Roughness Coefficient)"	"Coeficiente de Manning-Strickler para a estimativa de fluxo de tempo de viagem (rec�proco de rugosidade Coeficiente de Manning)"
+"Map"	"Mapa"
+"Map Drape Resampling"	""
+"Map Draping"	"Flutua��o do mapa"
+"Map Draping Interpolation"	"Interpolar flutua��o do mapa"
+"Map Extent"	"Extens�o do mapa"
+"Map File"	"Arquivo de mapa"
+"Map Height [Pixels]"	"Altura do mapa [Pixels]"
+"Map Layer"	"Camada do mapa"
+"Map Manager"	"Gerenciador de mapa"
+"Map Scale"	"Escala do mapa"
+"Map Selection"	"Sele��o do mapa"
+"Map Units"	"Unidades do mapa"
+"Map Width [Pixels]"	"Largura do mapa [Pixels]"
+"Map Window Arrangement"	"Arranjo da janela do mapa"
+"Map/Table Size Ratio [%]"	"Tamanho da raz�o do mapa/tabela [%]"
+"MapQuest"	""
+"Maps"	"Mapas"
+"March"	"Mar�o"
+"Mark Highest Neighbour"	"Marcar maior vizinhan�a"
+"Mask"	"M�scara"
+"Mask Grid"	"Grade de m�scara"
+"Mask Max"	"M�scara m�xima"
+"Mask Min"	"M�scara m�nima"
+"Mask value"	"Valor da m�scara"
+"Masked Grid"	"Grade com m�scara"
+"Mass Balance Index"	"�ndice de balan�o de massa"
+"Massivity Coefficient"	"Coeficiente de massividade"
+"Match"	"Combinar"
+"Match Fields by Name"	"Combinar campos por nome"
+"Material for Accumulation"	""
+"Matrix signular\n"	""
+"Max"	"Max"
+"Max Iterations"	"Intera��es m�ximas"
+"Max Lamda"	"Lamda m�xima"
+"Max. Iterations"	"Max. Itera��es"
+"Max. Number of Classes"	"N�mero m�ximo de Classes"
+"Max. Starvation Time for Sharks"	"Inani��o m�xima de tempo para tubar�es"
+"Max.Distance"	"Dist�ncia m�xima"
+"Maxima"	"Maxima"
+"Maximal Curvature"	"Curvatura m�xima"
+"Maximal Number of Points"	"N�mero m�ximo de pontos"
+"Maximimum Number of Samples"	"N�mero m�ximo de amostras"
+"Maximum"	"M�ximo"
+"Maximum Angle"	"�ngulo m�ximo"
+"Maximum Cells (C Correction Analysis)"	"M�ximo de C�lulas (C An�lise de Corre��o)"
+"Maximum Contour Value"	"Valor m�ximo do contorno"
+"Maximum Curvature"	"Curvatura m�xima"
+"Maximum Deviation between estimated excess rainfall and observed streamflow volumes"	"Desvio m�ximo entre excesso estimado de chuvas e volumes de vaz�es observadas"
+"Maximum Deviation: ExcessRain-Streamflow [%]"	"Desvio m�ximo: ExcessRain-Streamflow [%]"
+"Maximum Disparity"	"Disparidade M�xima"
+"Maximum Distance"	"Dist�ncia m�xima"
+"Maximum Distance [Cells]"	"Dist�ncia m�xima [c�lulas]"
+"Maximum Entropy"	"Entropia M�xima"
+"Maximum Entropy Classifcation"	"Classifica��o de m�xima entropia"
+"Maximum Entropy Presence Prediction"	"Previs�o m�xima de presen�a de entropia"
+"Maximum Flow Distance"	"Dist�ncia de fluxo m�ximo"
+"Maximum Height"	"Altura m�xima"
+"Maximum Iterations"	"Intera��es m�ximas"
+"Maximum Level"	"N�vel m�ximo"
+"Maximum Likelihood"	"Probabilidade m�xima"
+"Maximum Membership"	"Composi��o m�xima"
+"Maximum Number of Clusters"	""
+"Maximum Number of Iterations"	""
+"Maximum Number of Points"	"N�mero m�ximo de pontos"
+"Maximum Overestimation of ExcessRain [%]"	"Superestima��o m�xima de excesso de chuva [%]"
+"Maximum Points"	"Pontos m�ximo"
+"Maximum Resolution (Percentage)"	"Resolu��o m�xima (percentagem)"
+"Maximum Search Distance"	"Dist�ncia m�xima de pesquisa"
+"Maximum Search Radius"	"Busca por raio m�ximo"
+"Maximum Search Radius (cells)"	"Busca por raio m�ximo (c�lulas)"
+"Maximum Selection"	"Sele��o M�xima"
+"Maximum Standard Deviation within a Cluster"	""
+"Maximum Sum of overestimated ExcessRain to total ExcessRain in [%]"	"Soma m�xima de superestimado excesso de chuvas totais em [%]"
+"Maximum Temperature"	"Temperatura m�xima"
+"Maximum Time Span (Seconds)"	"Intervalo m�ximo de tempo (segundos)"
+"Maximum Total Order"	"Ordem m�xima total"
+"Maximum Value"	"Valor m�ximo"
+"Maximum X Order"	"Ordem m�xima de X"
+"Maximum Y Order"	"Ordem m�xima de Y"
+"Maximum angular difference as degree between adjacent segment points."	"Diferen�a angular m�xima de grau entre os pontos de segmentos adjacentes."
+"Maximum deviation allowed between original and simplified curve [map units]."	"Desvio m�ximo permitido entre a curva original e simplificada [mapa de unidades]."
+"Maximum distance parameter is ignored if set to zero (default)."	"O par�metro da dist�ncia m�xima � ignorada se definido como zero (padr�o)."
+"Maximum entropy based classification and prediction."	"Classifica��o de entropia baseado na previs�o m�xima."
+"Maximum number of classes in entire grid."	"N�mero m�ximo de classes na grade inteira."
+"Maximum number of classes in the entire grid."	"N�mero m�ximo de classes em toda a grade."
+"Maximum number of grid cells used for trend analysis as required by C correction."	"N�mero m�ximo de c�lulas da grade usados ??para an�lise de tend�ncias como exigido pela corre��o C."
+"Maximum number of iterations"	"N�mero m�ximo de intera��es"
+"Maximum number of rows/columns in selection of grid cells."	"N�mero m�ximo de linhas/colunas na sele��o das c�lulas."
+"Maximum resolution as percentage of the diameter of the DEM."	"Resolu��o m�xima em percentagem do di�metro do MDE."
+"Maximum root zone storage deficit [m]"	"D�ficit de armazenagem da zona m�xima de ra�zes [m]"
+"Maximum size"	"Tamanho m�ximo"
+"Maximum temperature:"	"Temperatura m�xima:"
+"Maximum value of the range to be reclassified."	"Valor m�ximo do intervalo que ser� reclassificado."
+"Maximun"	"M�ximo"
+"May"	"Maio"
+"Mean"	"M�dia"
+"Mean Average"	"M�dia da M�dia"
+"Mean Centre"	"Centro m�dia"
+"Mean Distance"	"Dist�ncia m�dia"
+"Mean Elevation"	"Eleva��o m�dia"
+"Mean Elevation [m.a.s.l]"	"Eleva��o m�dia [m.a.s.l]"
+"Mean Flow Distance"	"Dist�ncia m�dia de fluxo"
+"Mean Solar Irradiance"	"M�dia de irradi�ncia solar"
+"Mean Squared Error"	"Erro m�dio de enquadramento"
+"Mean Temperature"	"Temperatura m�dia"
+"Mean Value"	"Valor m�dio"
+"Mean Value (cell area weighted)"	"M�dia do Valor (�rea celular ponderada)"
+"Mean less Standard Deviation"	"M�dia menos desvio padr�o"
+"Mean over Catchment"	"M�dia maior capta��o"
+"Mean plus Standard Deviation"	"Desvio padr�o mais m�dia"
+"Mean runoff"	"M�dia de escoamento"
+"Mean saturation deficit (in watershed) [m]"	"D�ficit m�dio de satura��o (em bacias hidrogr�ficas) [m]"
+"Mean soil loss"	"M�dia de perda do solo"
+"Mean temperature"	"Temperatura m�dia"
+"Measure Distance"	"Medir dist�ncia"
+"Measured Points (PC)"	"Pontos medidos (PC)"
+"Median"	"Mediana"
+"Melton Ruggedness Number"	"N�mero de robust�z de Melton"
+"Membership Function Type"	"Tipo de fun��o de composi��o"
+"Memberships"	"Associa��es"
+"Memory Compression"	"Compress�o de mem�ria"
+"Memory Handling"	"Manuseamento de Mem�ria"
+"Memory Size"	"Tamanho da mem�ria"
+"Menu"	"Menu"
+"Mercator"	"Mercator"
+"Merge Layers"	"Mesclar Camadas"
+"Merge Line Parts to One Polygon"	"Mesclar partes de linha de um pol�gono"
+"Merge Point Clouds"	"Mesclar pontos de n�vem"
+"Merge Selection"	"Mesclar sele��o"
+"Merge Tables"	"Mesclar tabelas"
+"Merged Layer"	"Camada fundida"
+"Merged Layers"	"Camadas incorporadas"
+"Merged Point Cloud"	"Nuvem de pontos fundidas"
+"Merged Table"	"Tabela mesclada"
+"Meridional Grid Statistics"	"Grade de estat�sticas meridionais"
+"Meridional Statistics"	"Estat�sticas meridionais"
+"Mesh Denoise"	"Malha denoise"
+"Messages"	"Mensagens"
+"Metadata"	"Metadados"
+"Metadata File"	"Arquivo de metadados"
+"Metadata Files (*.met, *.txt)"	"Arquivos de metadados (*.met, *.txt)"
+"Metadata from Header:"	"Metadados de cabe�alho:"
+"Meteorological data"	"Dados meteorol�gicos"
+"Meteorological data for multiple timestep modelling [model step (day); temperature (Celsius); rainfall (mm), rainfall intensity (mm/h); rainfall duration (day); timespan (days)]"	"Os dados meteorol�gicos para a modelagem m�ltipla timestep [modelo de passo (dia); temperatura (graus Celsius); Precipita��o (mm), intensidade de precipita��o (mm/h); dura��o de precipita��o (dia); per�odo de tempo (dias)]"
+"Method"	"M�todo"
+"Method (LS)"	"M�todo (LS)"
+"Method (TWI)"	"M�todo (TWI)"
+"Method for Multiple Values"	"M�todo para v�rios valores"
+"Metric Conversions"	"Convers�es m�tricas"
+"Mid Infrared (TM 5)"	"Infravermelho m�dio (TM 5)"
+"Mid Infrared (TM 7)"	"Infravermelho m�dio (TM 7)"
+"Mid-Slope Positon"	"Posi��o m�dia de declive"
+"Midslope Drainages"	"Drenagens situadas ao meio da encosta"
+"Midslope Drainages, Shallow Valleys"	"Vales de drenagem superficial, situadas em meio a encosta"
+"Midslope Ridges"	"Cumes cituados em meio a encosta"
+"Midslope Ridges, Small Hills in Plains"	"Cumes situados em meio a encosta, pequenas colinas em planos"
+"Miller Cylindrical"	"Moleiro cil�ndrico"
+"Min"	"Min"
+"Min. Flow Speed (m/s)"	"Fluxo m�nimo de velocidade (m/s)"
+"Min. Segment Length"	"Comprimento m�nimo do segmento"
+"Min. Size"	"Tamanho m�nimo"
+"Min. Size (Cells)"	"Min. Size (Cells)"
+"Mine Sweeper"	"Mine Sweeper"
+"Minima"	"Minima"
+"Minimal Curvature"	"Curvatura m�nima"
+"Minimal Number of Points"	"Minimal N�mero de Pontos"
+"Minimum"	"M�nimo"
+"Minimum Bounding Box"	"M�nimo caixa delimitadora"
+"Minimum Contour Value"	"Valor m�nimo Contour"
+"Minimum Curvature"	"Curvatura m�nima"
+"Minimum Density [Percent]"	"Densidade m�nima [por cento]"
+"Minimum Density for Interior Forest [Percent]"	"Densidade m�nima para Interior Floresta [por cento]"
+"Minimum Distance"	"Dist�ncia M�nima"
+"Minimum Distance Analysis"	"An�lise Dist�ncia M�nima"
+"Minimum Exaggeration [%]"	"Exagero m�nimo [%]"
+"Minimum Gradient"	""
+"Minimum Height"	"Altura m�nima"
+"Minimum Magnitude"	"Magnitude M�nima"
+"Minimum Nash-Sutcliffe Efficiency"	"M�nimo de Efici�ncia de Nash-Sutcliffe"
+"Minimum Nash-Sutcliffe Efficiency required to print simulation to calibration table"	"Efici�ncia m�nima Nash-Sutcliffe necess�rio para imprimir a tabela de calibra��o simula��o"
+"Minimum Neighbours"	"Vizinhos m�nimos"
+"Minimum Node Split Size"	"N� m�nimo de Split Size"
+"Minimum Number of Dark Object Cells"	"N�mero M�nimo de Objeto celas escuras"
+"Minimum Number of Points"	"N�mero m�nimo de pontos"
+"Minimum Number of Samples in a Cluster"	""
+"Minimum Probability"	"Probabilidade m�nimo"
+"Minimum Redundancy Feature Selection"	"Sele��o de recursos de redund�ncia m�nimo"
+"Minimum Resolution (Degree)"	"Resolu��o M�nima (Grau)"
+"Minimum Segment Length (Cells)"	"Comprimento m�nimo Segmento (Cells)"
+"Minimum Size [%]"	"Tamanho m�nimo [%]"
+"Minimum Slope"	"Inclina��o m�nima"
+"Minimum Slope [Degree]"	"Inclina��o m�nima [Grau]"
+"Minimum Standard Deviation"	"Desvio Padr�o M�nimo"
+"Minimum Temperature"	"Temperatura M�nima"
+"Minimum Threshold"	"Limite m�nimo"
+"Minimum Value"	"Valor m�nimo"
+"Minimum and maximum of attribute range []."	"M�nimo e m�ximo de gama atributo []."
+"Minimum and maximum x-coordinate of AOI."	"M�nimos e m�ximos coordenada x da AOI."
+"Minimum and maximum y-coordinate of AOI."	"M�nimo e m�ximo coordenada y AOI."
+"Minimum magnitude as percentile."	"M�nima magnitude como percentual."
+"Minimum number of cells in a group of adjacent cells."	"O n�mero m�nimo de c�lulas em um grupo de c�lulas adjacentes."
+"Minimum number of neighbouring potential edge cells with similar direction."	"N�mero m�nimo de c�lulas de ponta potenciais vizinhos com sentido similar."
+"Minimum of Darkness DN Cells"	"M�nimo de Escurid�o DN Cells"
+"Minimum pixels to consider digital number as dark object"	"Pixels m�nimos para considerar o n�mero digital como objeto escuro"
+"Minimum probability to accept a classification result for a cell."	"Probabilidade m�nima para aceitar um resultado de classifica��o para uma c�lula."
+"Minimum shade brightness must be lower than maximum shade brightness!"	"Brilho m�nimo sombra deve ser menor do que o brilho m�ximo sombra!"
+"Minimum size"	"Tamanho m�nimo"
+"Minimum size of basin (cells)"	"Tamanho m�nimo da bacia (c�lulas)"
+"Minimum slope gradient to preserve from cell to cell; with a value of zero sinks are filled up to the spill elevation (which results in flat areas). Unit [Degree]"	"Gradiente m�nima inclina��o para preservar de c�lula para c�lula; com um valor de zero sumidouros s�o preenchidos at� o derramamento de eleva��o (o que resulta em �reas planas). Unidade [Grau]"
+"Minimum value of the range to be reclassified."	"Valor m�nimo da faixa a ser reclassificado."
+"Minimum/Maximum"	"M�nimo / M�ximo"
+"Minimun"	"Minimun"
+"Minnaert Correction"	"Corre��o Minnaert"
+"Minnaert Correction with Slope (Law & Nichol 2004)"	"Corre��o Minnaert com Slope (Law & Nichol 2004)"
+"Minnaert Correction with Slope (Riano et al. 2003)"	"Corre��o Minnaert com Slope (Riano et al. 2003)"
+"Mirror"	"Espelhar"
+"Mirror Grid"	""
+"Mirror Horizontally"	"Espelhar horizontalmente"
+"Mirror Vertically"	"Espelhar verticalmente"
+"Mirrored horizontally"	""
+"Mirrored vertically"	""
+"Missing Value"	"Valor em falta"
+"Mixed Flow Threshold (ha)"	"Limite de fluxo misto (ha)"
+"Mode"	"Modo"
+"Mode in Reflectance Histogram"	"Modo em Reflectance Histograma"
+"Mode of DN"	"Modo de DN"
+"Mode of Operation"	"Modo de opera��o"
+"Mode of operation"	"Modo de opera��o"
+"Model"	"Modelo"
+"Model Options"	"Op��es de modelo"
+"Model Parameters:"	"Par�metros do Modelo:"
+"Model Resolution"	"Modelo resolu��o"
+"Model Source"	"Modelo Fonte"
+"Model parameter [m]"	"Modelo par�metro [m]"
+"Model parameters"	"Os par�metros do modelo"
+"Model step %d/%d ..."	"Passo Modelo% d /% d ..."
+"Modelled Elevation"	"Modelado Elevation"
+"Modelling erosion processes."	"Modelando processos de eros�o."
+"Modelling hydrological processes."	"Modelando processos hidrol�gicos."
+"Modelling the Human Impact on Nature"	"Modelando o impacto humano sobre a Natureza"
+"Modelo de combustible"	"Modelo de combust�vel"
+"Modifed Quadratic Shepard"	"Modifed quadr�tica Shepard"
+"Modified"	"Modificado"
+"Modified Catchment Area"	"�rea de Capta��o de modifica��o"
+"Modify: post-processing..."	"Modificar: p�s-processamento ..."
+"Modify: pre-processing..."	"Modificar: pr�-processamento ..."
+"Module Library Template"	"Template Library Module"
+"Module My_Module"	"M�dulo My_Module"
+"Mollweide"	"Mollweide"
+"Moment [h]"	"Momento [h]"
+"Moment term"	"Termo Moment"
+"Month"	"M�s"
+"Monthly Global by Latitude"	"Mensal global por Latitude"
+"Moore"	"Moore"
+"Moore & Nieber 1989"	"Moore & Nieber 1989"
+"Moore (8)"	""
+"Moore et al. 1991"	"Moore et al. 1991"
+"Moran's I"	"I de Moran"
+"Morphological Filter"	"Filtro morfol�gica"
+"Morphological Filter (OpenCV)"	"Filtro morfol�gica (OpenCV)"
+"Morphological Filter (ViGrA)"	"Filtro morfol�gica (Vigra)"
+"Morphologically filtered binary mask"	"M�scara bin�ria morfologicamente filtrada"
+"Morphology"	"Morfologia"
+"Morphometric Features"	"Caracter�sticas morfom�tricas"
+"Morphometric Protection Index"	"�ndice de prote��o morfom�trica"
+"Morphometry"	"Morfometria"
+"Mosaic"	"mosaico"
+"Mosaicking"	"Mosaiciza��o"
+"Mountain Tops, High Ridges"	"Topos de montanha, cumes altos"
+"Mouths"	"Bocas"
+"Move"	"Mover"
+"Move Down"	"Mover para baixo"
+"Move Grid"	"Mover grade"
+"Move To Bottom"	"Mover para a base"
+"Move To Top"	"Mover para o topo"
+"Move Up"	"Subir"
+"Moves"	"Movimentos"
+"Moving window size = 1 + 2 * Neighborhood."	"Movendo-se o tamanho da janela = 1 + 2 * vizinho mais pr�ximo."
+"Multi Direction Lee Filter"	"Filtro Lee para multi dire��o"
+"Multi Level to Points Interpolation"	"Multi n�vel de pontos de interpola��o"
+"Multi Level to Surface Interpolation"	"Multi n�vel de superf�cie de interpola��o"
+"Multi Scale Factor"	"Multi Fator de escala"
+"Multi-Band Variation"	"Multi varia��o de banda"
+"Multilevel B-Spline Interpolation"	"interpola��o multin�vel B-Spline"
+"Multilevel B-Spline Interpolation (from Grid)"	"interpola��o multin�vel B-Spline (para grade)"
+"Multilevel B-Spline Interpolation for Categories"	"interpola��o por categorias multin�vel B-Spline"
+"Multiple Flow Direction"	"M�ltipla direc��o do fluxo"
+"Multiple Flow Direction (FD8)"	"M�ltipla dire��o do fluxo (FD8)"
+"Multiple Flow Direction (Quinn et al. 1991)"	"M�ltipla dire��o do fluxo (Quinn et al. 1991)"
+"Multiple Grids Viewer"	"Visualizador de multiplas grades"
+"Multiple Input Features"	"V�rias fei��es de entrada"
+"Multiple Linear Regression Analysis"	"An�lise de regress�o linear m�ltipla"
+"Multiple Linear Regression Analysis (Shapes)"	"An�lise de regress�o linear m�ltipla (Shapes)"
+"Multiple Maximum Downslope Gradient Based Flow Directon"	"M�ltipla curva descendente m�xima de gradiente baseado na dire��o de fluxo"
+"Multiple Observer"	"Observador m�ltiplo"
+"Multiple R-squared"	"M�ltiplo ao quadrado R"
+"Multiple Regression Analysis (Grid and Predictor Grids)"	"An�lise de regress�o m�ltipla (grade e gradespreditoras)"
+"Multiple Regression Analysis (Points and Predictor Grids)"	"An�lise de regress�o m�ltipla (Pontos e grades preditoras)"
+"Multiple Triangular Flow Directon"	"Dire��o de triangula��o m�ltipla de fluxo"
+"Multiple m_Flow Direction"	"M�ltipla dire��o m_Flow"
+"Multiple of Standard Deviation used as default for histogram stretch."	"M�ltiplo desvio padr�o utilizado como padr�o para esticar o histograma."
+"Multiplication"	"Multiplica��o"
+"Multipoint"	"Multipontos"
+"Multipoints"	"Multipontos"
+"Multiresolution Index of Valley Bottom Flatness (MRVBF)"	"�ndice de multiresolu��o de planicidade inferior de vale (MRVBF)"
+"Multleve B-Spline Interpolation"	"interpola��o multleve B-Spline"
+"Mutual Information Difference (MID)"	"Diferen�a de informa��o m�tua (MID)"
+"Mutual Information Quotient (MIQ)"	"Quociente de informa��o m�tua (MIQ)"
+"MySQL Data"	"Dados MySQL"
+"My_Module Module Sub Menu"	"M�dulo sub menu My_Module"
+"NAME"	"NOME"
+"NCELLS"	"NCELLS"
+"NCache einlesen"	"NCache lido"
+"NEIGHBORS"	"VIZINHOS"
+"NEON"	"N�ON"
+"NO DATA"	"SEM DADOS"
+"NODATA_CELLS"	"NODATA_CELLS"
+"NODE_A"	"Node_A"
+"NODE_B"	"NODE_B"
+"NODE_ID"	"NODE_ID"
+"NRMSE"	"NRMSE"
+"NSE|NSE high flow|NSE low flow"	"NSE|Alto fluxo NSE|Baixo fluxo NSE"
+"NTv2 Grid Shift Binary (*.gsb)"	"Gradede deslocamento bin�rio NTv2 (*.gsb)"
+"NV, Number of plant elements per unit area [number/unit area] at the ground surface"	"NV, N�mero de elementos da planta por unidade de �rea [n�mero de �rea/unidade] na superf�cie do solo"
+"NX"	"NX"
+"NY"	"NY"
+"N\xc3\xbamero of Monte-Carlo events"	""
+"Name"	"Nome"
+"Name Field"	"Nome do campo"
+"Name by..."	"Nome por ..."
+"Name des Evaluierungspunktes 1"	"Nome dos pontos de avalia��o 1"
+"Name des Evaluierungspunktes 2"	"Nome dos pontos de avalia��o 2"
+"Name des Evaluierungspunktes 3"	"Nome dos pontos de avalia��o 3"
+"Name of Landsat metadata file (.met or MTL.txt)"	"Nome do arquivo de metadados Landsat (.met ou MTL.txt)"
+"Natural Logarithm"	""
+"Natural Neighbour"	"Vizinho natural"
+"Navaladi, Schoeller, Conrad (c) 2009"	"Navaladi, Schoeller, Conrad (c) 2009"
+"Near Infrared (TM 4)"	"Infravermelho Pr�ximo (TM 4)"
+"Near Infrared Reflectance"	"Proximidade de reflect�ncia no infravermelho"
+"Near Points"	"Proximidade de pontos"
+"Nearest Neighbour"	"Vizinho mais pr�ximo"
+"Needs less memory, but is slow"	"Utiliza menos mem�ria, mas � lento"
+"Needs more memory, but is quicker"	"Utiliza mais mem�ria, mas � mais r�pido"
+"Negative Openness"	"Abertura negativa"
+"Neighborhood"	"Vizinhan�a"
+"Neighborhood Type"	"Tipo de proximidade"
+"Neighbourhood"	"Vizinhan�a"
+"Net Primary Production [Gt Carbon / a]"	"Produ��o prim�ria l�quida [Gt de carbono / a]"
+"NetCDF Files (*.nc)"	"Arquivos NetCDF (* .nc)"
+"Network topology"	"Topologia de rede"
+"Neumann"	"Neumann"
+"Neumann (4)"	""
+"Neumann: the four horizontally and vertically neighboured cells; Moore: all eight adjacent cells"	"Neumann: as quatro c�lulas horizontal e vertical vizinhas; Moore: todas as oito c�lulas adjacentes"
+"Neural Networks (OpenCV)"	"Redes Neurais (OpenCV)"
+"New"	"Novo"
+"New Shapes Layer"	"Nova camada shapes"
+"New Table"	"Nova tabela"
+"New grid filtered with the A1WiTh module"	"Nova grade filtrada com o m�dulo A1WiTh"
+"New grid filtered with the A2WiTh module"	"Nova grade filtrada com o m�dulo A2WiTh"
+"New grid filtered with the A3WiTh module"	"Nova grade filtrada com o m�dulo A3WiTh"
+"New grid filtered with the AvWiMa1 module"	"Nova grade filtrada com o m�dulo AvWiMa1"
+"New grid filtered with the AvWiMa2 module"	"Nova grade filtrada com o m�dulo AvWiMa2"
+"New grid filtered with the destriping1 module"	"Nova grade filtrada com o m�dulo destriping1"
+"New grid filtered with the destriping2 module"	"Nova grade filtrada com o m�dulo destriping2"
+"New grid filtered with the directional1 module"	"Nova grade filtrada com o m�dulo directional1"
+"New value."	"Novo valor."
+"Newton [A]"	"Newton [A]"
+"Newton [B]"	"Newton [B]"
+"Newton-Raphson"	"Newton-Raphson"
+"Next"	"Pr�ximo"
+"Neys (Modified Lambert Conformal Conic)"	"Neys (Modified Lambert Conformal Conic)"
+"Nitrogen in Rainfall [kg/ha/a]"	"Nitrog�nio na precipita��o [kg/ha/a]"
+"No Cut"	"Nenhum corete"
+"No Data"	"Sem dados"
+"No Data Cells"	"Nenhuma c�lula de dados"
+"No Data Value"	"Sem valor de dados"
+"No Failure"	"Nenhuma falha"
+"No Flats"	"Sem planos"
+"No Height"	"Sem Altura"
+"No INPUT vector normalization"	"Sem vetor de normaliza��o de ENTRADA"
+"No ODBC connection available!"	"Sem conex�o ODBC dispon�vel!"
+"No OUTPUT vector normalization"	"Sem vetor normalizado de SA�DA"
+"No Options"	"Sem op��es"
+"No PostgreSQL connection available!"	"Sem conex�o PostgreSQL dispon�vel!"
+"No Sinks"	"Sem sinks"
+"No attribute fields selected!"	"N�o h� campos de atributo selecionado!"
+"No attribute fields specified!"	"N�o h� campos de atributo especificado!"
+"No compatible table has been found."	"Nenhuma tabela compat�vel foi encontrada."
+"No data"	"Sem dados"
+"No description available"	"Descri��o n�o dispon�vel"
+"No duplicates found."	"N�o h� duplicatas encontradas."
+"No objects"	"Nenhum objeto"
+"No parameters available."	"N�o h� par�metros dispon�veis."
+"No path for output files specified!"	"Nenhum caminho para arquivos de sa�da especificado!"
+"No pen is used"	"Nenhuma caneta � usada"
+"No projects in directory"	"Nenhum dos projetos no diret�rio"
+"No raster files have been found in directory."	"Nem arquivo raster foi encontrado no diret�rio."
+"No shapes in selection"	"N�o h� shapes na sele��o"
+"No sinks have been detected."	"Sem dissipadores detectados."
+"No translation set by user"	"Nenhuma tradu��o definida pelo usu�rio"
+"NoData Output Grid"	"Grade SemDados de sa�da"
+"NoData Value"	"Valor SemDados"
+"NoData Value: %.6f"	"NoData Valor:% .6f"
+"NoData encountered in input grid %s: x %d (%.2f), y %d (%.2f)"	"SemDados encontrado na grade de entrada %s: x %d (%.2f), y %d (%.2f)"
+"NoData value of input grid"	"Valor SemDados da grade de entrada"
+"NoData value(s) in statistic grid(s)!"	"Valor(s) SemDados em grade(s) de estat�stica!"
+"Node"	"N�"
+"Nodes"	"N�s"
+"Non-Linear Module"	"M�dulo n�o-linear "
+"None"	"Nenhum"
+"Normal"	"Normal"
+"Normal Updating"	"Atualiza��o normal"
+"Normal escarpment"	"Escarpa normal"
+"Normalisation"	"Normaliza��o"
+"Normalise"	"Normalizar"
+"Normalised"	"Normalizada"
+"Normalised Grid"	"Grade normalizada"
+"Normalization (after Civco, modified by Law & Nichol)"	"Normaliza��o (ap�s Civco, modificada por Lawi & Nichol)"
+"Normalize"	"Normalizar"
+"Normalize Features"	"Normalizar fei��es"
+"Normalized Difference Vegetation Index"	"�ndice de vegeta��o por diferen�a normalizada"
+"Normalized Height"	"Altura normalizada"
+"Normalized Ratio Vegetation Index"	"Raz�o de normalisa��o de �ndice de vegeta��o"
+"North"	"Norte"
+"North Arrow"	"Seta de norte"
+"North []"	"Norte []"
+"North|South|"	"Norte|Sul|"
+"Not Named"	"N�o Nomeado"
+"Not Null"	"N�o nulo"
+"Nothing to do be done. Raster splitting is not supported."	"Nada a ser feito. Divis�o n�o � suportada."
+"Nothing to do! Merging needs more than one input data set."	"Nada para fazer! A fus�o precisa de mais do que um conjunto de dados de entrada."
+"Nothing to do. Raster is already within target range."	"Nada para fazer. Raster j� est� dentro da faixa alvo."
+"Nothing to do: there is no intersection with additonal grid."	"Nada a fazer: n�o h� intersec��o com a grade adicional."
+"November"	"Novembro"
+"No|Yes|"	"N�o|Sim|"
+"Number in Latitudinal Direction"	"N�mero de Dire��o Latitudinal"
+"Number in Meridional Direction"	"N�mero de Dire��o Meridional"
+"Number of Attributes"	"N�mero de Atributos"
+"Number of Buffer Zones"	"N�mero de Zonas de Prote��o"
+"Number of CPU Cores [# physical processors]"	"N�mero de N�cleos de CPU [# processadores f�sicos]"
+"Number of Categories"	"N�mero de Categorias"
+"Number of Cells"	"N�mero de c�lulas"
+"Number of Classes"	"N�mero de Classes"
+"Number of Clusters"	"N�mero de Clusters"
+"Number of Colors"	"N�mero de cores"
+"Number of Column Cells"	"N�mero de c�lulas de coluna"
+"Number of Columns"	"Numero de colunas"
+"Number of Components"	"N�mero de componentes"
+"Number of Data Cells"	"N�mero de c�lulas de dados"
+"Number of Data Sets"	""
+"Number of Different Classes"	"N�mero de classes diferentes"
+"Number of Directions"	"N�mero de dire��es"
+"Number of Distance Classes"	"N�mero de classes de dist�ncia"
+"Number of Elements"	"N�mero de elementos"
+"Number of Events"	"N�mero de Eventos"
+"Number of Facettes"	"N�mero de facetas"
+"Number of Features"	"N�mero de fei��es"
+"Number of Fields"	"N�mero de campos"
+"Number of Grid Cells"	"N�mero de c�lulas da grade"
+"Number of Grids"	"N�mero de grades"
+"Number of Intervals"	"N�mero de Intervalos"
+"Number of Iterations"	"N�mero de itera��es"
+"Number of Iterations for Normal Updating"	"N�mero de itera��es para atualiza��o normal"
+"Number of Iterations for Vertex Updating"	"N�mero de itera��es para Atualiza��o Vertex"
+"Number of Maps"	""
+"Number of No-Data Cells"	"N�mero de c�lulas SemDados"
+"Number of Numeric Value Classes"	"N�mero de classes de valor num�rico"
+"Number of Pairs"	"N�mero de pares"
+"Number of Parts"	"N�mero de partes"
+"Number of Points"	"N�mero de pontos"
+"Number of Points for Local Interpolation"	"N�mero de pontos para a interpola��o local"
+"Number of Points in Cell"	"N�mero de pontos na celula"
+"Number of Records"	"N�mero de registros"
+"Number of Row Cells"	"N�mero de c�lulas na linha"
+"Number of Rows"	"N�mero de linhas"
+"Number of Sectors"	"N�mero de setores"
+"Number of Shapes"	"N�mero de shapes"
+"Number of Simulations"	"N�mero de simula��es"
+"Number of Simulations for Calibration"	"N�mero de simula��es para calibra��o"
+"Number of Steps"	"N�mero de passos"
+"Number of Values"	"N�mero de valores"
+"Number of Variables"	"N�mero de vari�veis"
+"Number of Vertices"	"N�mero de v�rtices"
+"Number of added tools"	"N�mero de ferramentas adicionadas"
+"Number of additional attributes to import."	"N�mero de atributos adicionais para importar."
+"Number of arguments for attribute fields (%d), names (%d) and types (%d) do not match!"	"N�mero de argumentos para campos de atributo (%d), nomes (%d) e tipos (%d) n�o combinam!"
+"Number of attribute fields: %d"	"N�mero de campos de atributo:%d"
+"Number of atttribute table columns."	"N�mero de colunas da tabela de atributos."
+"Number of cells"	"N�mero de c�lulas"
+"Number of classes in the cloud temperature histogram"	"N�mero de classes no histograma da temperatura da nuvem"
+"Number of clusters"	"N�mero de grupos"
+"Number of decimals when writing floating point values in ASCII format."	"N�mero de casas decimais ao escrever valores de ponto flutuante em formato ASCII."
+"Number of discrete intervals (bins) used for sampling"	"N�mero de intervalos discretos (bins) usados ??para a amostragem"
+"Number of examples required for a node to be split. Choose 1 for complete growing."	"N�mero de exemplos necess�rios para um n� a ser dividido. Escolha 1 para o cultivo completo."
+"Number of fields a flow path visits downhill starting at a cell. For D8 only."	"N�mero de campos de um fluxo de visitas de caminho decrescente a partir de uma c�lula. Somente para D8."
+"Number of fields and precisions must be equal!"	"O n�mero de campos e precis�es deve ser igual!"
+"Number of horizontal tiles"	"N�mero de mosaicos horizontais"
+"Number of iterations, starts with search radius and increments with one cell by iteration."	"N�mero de itera��es, come�a com raio de busca e incrementa com uma celula por itera��o."
+"Number of layers"	"N�mero de camadas"
+"Number of nearest points, which will be evaluated for filtering. Set to zero to investigate all points in search radius."	"N�mero de pontos mais pr�ximos, os quais ser�o avaliados para a filtragem. Defina como zero para investigar todos os pontos no raio de busca."
+"Number of neurons"	"N�mero de neur�nios"
+"Number of points"	"N�mero de pontos"
+"Number of points in the simplified line"	"N�mero de pontos na linha simplificada"
+"Number of points on each side of the section"	"N�mero de pontos em cada lado da se��o"
+"Number of points per return:"	"N�mero de pontos por retorno:"
+"Number of raindays is greater than model timespan!"	"N�mero de dias de chuva � maior do que o espa�o de tempo do modelo!"
+"Number of raster files found in directory"	"N�mero de arquivos raster encontrados no diret�rio"
+"Number of sub-basins"	"N�mero de sub-bacias"
+"Number of the last x Iteration to be plotted."	"N�mero do �ltimo x itera��o a ser plotada."
+"Number of vertical tiles"	"N�mero de mosaicos verticais"
+"Number plant elements"	"N�mero elementos vegetais"
+"Numbering of Data Sets"	"Numera��o de conjuntos de dados"
+"Numeric"	"Num�rico"
+"Numeric Attribute Values"	"Atributo de valores num�rico"
+"Numerical Features"	"Fei��es num�ricas"
+"Numerical Precision"	"Precis�o num�rica"
+"O. Conrad (c) 2009"	"O. Conrad (c) 2009"
+"O. Conrad (c) 2011"	"O. Conrad (c) 2011"
+"O.Conrad (c) 2010"	"O.Conrad (c) 2010"
+"O.Conrad (c) 2011"	"O.Conrad (c) 2011"
+"O.Conrad (c) 2013"	"O.Conrad (c) 2013"
+"ODBC"	"ODBC"
+"ODBC Database Connection Error"	"Erro de conex�o com o banco de dados ODBC"
+"ODBC Servers"	"Servidores ODBC"
+"ODBC Sources"	"Fontes ODBC"
+"ODBC source connected"	"Fonte ODBC conectada"
+"ODBC source disconnected"	"Fonte ODBC desconectada"
+"ODBC/OTL"	"ODBC/OTL"
+"OID"	"OID"
+"OSM Areas"	"�reas OSM"
+"OSM Locations"	"Locais OSM"
+"OSM Relations"	"Rela��es OSM"
+"OSM Ways"	"OSM Formas"
+"OUTPUT"	"SA�DA"
+"OUTPUT certainty"	"Seguran�a de SA�DA"
+"OUTPUT classes"	"Classes de SA�DA"
+"Object Grid"	"Grade de objeto"
+"Objective Function"	"Fun��o objetiva"
+"Objects removed from input grid"	"Removedor de objetos da grade de entrada"
+"Oblique Mercator"	"Mercator obliquo"
+"Obliquity"	"Obliquidade"
+"Observations"	"Observa��es"
+"Observer points."	"Pontos de observa��o:"
+"October"	"Outubro"
+"Offset"	"Deslocamento"
+"Offset Slope"	"Deslocamento de cuesta"
+"Offset X"	"Deslocamento X"
+"Offset Y"	"Deslocamento Y"
+"Offset Z"	"Deslocamento Z"
+"Offset and Range (X)"	"Deslocamento e alcance (X)"
+"Offset and Range (Y)"	"Deslocamento e alcance (Y)"
+"Offset given as percentage of map size"	"Deslocamento dado em porcentagem do tamanho do mapa"
+"Ok"	"Ok"
+"Okay"	"Ok"
+"Old Style Namings"	"Nomea��o antiga de estilo"
+"Old Version"	"Vers�o antiga"
+"Olkin & Pratt"	"Olkin & Pratt"
+"Omega"	"�mega"
+"Omega [degree]"	"Omega [grau]"
+"One Point Cloud per Polygon"	"Uma nuvem de pontos por Poligono"
+"One or several input point cloud datasets to cut."	"Um ou v�rios conjuntos de dados de entrada de nuvem de pontos para cortar."
+"One per x"	"Um por x"
+"Online Help"	"Ajuda online"
+"Only Header Info"	"Somente informa��es de cabe�alho"
+"Only List Connected Servers"	"Somente servidores de lista conectados"
+"Only Process Gaps with Less Cells"	"Somente lacunas do processo com menos c�lulas"
+"Only Z-Direction Position is Updated"	"Apenas a dire��o Z da posi��o foi Atualizada"
+"Opaque"	"Opaco"
+"Open"	"Abrir"
+"Open Database Connection"	"Abrir concex�o do banco de dados"
+"Open Project"	"Abrir projeto"
+"Open Slopes"	"Encostas abertas"
+"Open Street Map"	""
+"Open as data set"	"Abrir como conjunto de dados"
+"Open with external application"	"Abrir com aplica��o externa"
+"OpenCV"	"OpenCV"
+"Opening"	"Abertura"
+"Openness"	"Abertura"
+"Operation"	"Opera��o"
+"Operation Control"	"Controle de opera��o"
+"Operator Type"	"Tipo de operador"
+"Operator scale"	"Escala do operador"
+"Opposite Neighbours"	"Vizinhos opostos"
+"Optimised"	""
+"Optional Output Filepath"	"Caminho do arquivo da sa�da opcional"
+"Optional Target Grids"	"Grades alvos opcionais"
+"Optional Tile Info Filename"	"Nome do arquivo opcional de informa��o do ladrilho"
+"Optional floating-point vector of weights for each sample. Some samples may be more important than others for training."	"Vetor opcional de ponto flutuante de pesos para cada amostra. Algumas amostras podem ser mais importantes do que outros para forma��o."
+"Optional integer vector indicating the samples (rows of inputs and outputs) that are taken into account."	"Vetor inteiro opcional indicando as amostras (linhas de entradas e sa�das) que s�o levados em conta."
+"Optional output polygon shapefile"	"Sa�da opcional de pol�gono shapefile"
+"Options"	"Op��es"
+"Options:\n - Less than\n - Equals\n - Greater than\nControls under which condition a channel is initiated."	""
+"Order"	"Ordenar"
+"Order by"	"Ordenar por"
+"Order by..."	"Ordenar por..."
+"Ordered Weighted Averaging (OWA)"	"M�dia Ponderada Ordenada (OWA)"
+"Ordern in den alle Ausgabedaten gespeichert werden sollen"	"Pasta que voc� deseja armazenar os dados de todas as sa�das"
+"Ordinary Kriging"	"Krigagem ordin�ria"
+"Ordnerpfad der Surface Runoff- und Drainagerasterdaten des Landoberflaechenschemas"	"Caminho da pasta para os dados de superf�cie , raster de drenagem"
+"Ordnerpfad der WUse Daten"	"Caminho da pasta de dados de deserto"
+"Ordnerpfad in dem alle zu bearbeitenden WaterGap Raster abgelegt sind"	"Caminho da pasta em que toda a grade WaterGAP processadas ser�o armazenadas"
+"Orientation"	"Orienta��o"
+"Origin Height"	"Altura de origem "
+"Origin Latitude"	"Latitude de origem"
+"Original"	"Original"
+"Original Channels"	"Canais originais"
+"Original Image"	"Imagem original"
+"Orographic Coefficient"	"Coeficiente orogr�fico"
+"Orthoclinal slope"	"Declive ortoclinal"
+"Orthodromes"	"Ortodromos"
+"Orthographic"	"Ortogr�fico"
+"Ouput"	"Sa�da"
+"Outlet"	"Sa�da"
+"Outlet Concentration"	""
+"Outlet Hydrographs"	"Hidrograma de sa�da"
+"Outlet X"	"Sa�da X"
+"Outlet Y"	"Sa�da Y"
+"Outline"	"Contorno"
+"Outlines"	"Contornos"
+"Output"	"Sa�da"
+"Output Directory"	"Diret�rio de sa�da"
+"Output Features"	"Fei��es de sa�da"
+"Output Field Name"	"Nome do campo de sa�da"
+"Output File"	"Arquivo de sa�da"
+"Output Filepath"	"Caminho de sa�da"
+"Output Format"	"Formato de sa�da"
+"Output Grid"	"Grade de sa�da"
+"Output Lod"	"Lod de sa�da"
+"Output Seeds"	"Sementes de sa�da"
+"Output Text File"	"Arquivo de texto de sa�da"
+"Output Type"	"Tipo de sa�da"
+"Output Unit"	"Unidade de sa�da"
+"Output Values"	"Valores de sa�da"
+"Output as..."	"Sa�da como ..."
+"Output at-sensor radiance for all bands"	"Sa�da de radi�ncia no sensor para todas as bandas"
+"Output file"	"Arquivo de sa�da"
+"Output file path"	"Caminho do arquivo de sa�da"
+"Output format"	"Formato de sa�da"
+"Output grid"	"Grade de sa�da"
+"Output of Change Vector"	"Vetor de altera��es de sa�da"
+"Output of Gradients"	"Sa�da de gradientes"
+"Output of Model Parameters"	"Par�metros do modelo de sa�da"
+"Output of Regression Parameters"	"Sa�da de par�metros de regress�o"
+"Output of module calculations."	"C�lculos de m�dulo de sa�da."
+"Output of..."	"Sa�da de ..."
+"Output parameters"	"Par�metros de sa�da"
+"Output shapes with field(s) deleted"	"Shapes de sa�da com campo(s) exclu�do"
+"Output table with field(s) deleted"	"Tabela de sa�da com o campo(s) exclu�do"
+"Output will inherit shape type and table structure from the first layer in this list."	"Sa�da herdar� o tipo de forma e estrutura da tabela da primeira camada nesta lista."
+"Overall Accuracy"	"Precis�o Geral"
+"Overall Bounding Box:"	"Caixa delimitadora geral:"
+"Overdip slope"	"Declive Overdip"
+"Overland"	"Superf�cie"
+"Overland Flow - Kinematic Wave D8"	"Fluxo superficial - Onda cinem�tica D8"
+"Overland Flow Distance"	"Dist�ncia do fluxo superficial"
+"Overland Flow Distance to Channel Network"	"Dist�ncia do fluxo superficial a rede de canais"
+"Overlap"	"Sobreposi��o"
+"Overlap [map units]"	"Sobreposi��o [mapa de unidades]"
+"Overlapping Areas"	"�reas sobrepostas"
+"Overlapping Cells"	"C�lulas que se sobrep�em"
+"Overlay Image"	"Imagem sobreposta"
+"Override"	"Sobrepor"
+"Overview"	"Vis�o geral"
+"Overview Content"	"Vis�o geral do conte�do"
+"Overwrite"	"Sobrescrever"
+"P/A"	"P/A"
+"P/sqrt(A)"	"P/sqrt(A)"
+"PATB"	"PATB"
+"PCA Eigen Vectors"	"Autovetores PCA"
+"PCP Column: Subbasin: "	"PCP Coluna: Sub-bacia: "
+"PCTL"	"PCTL"
+"PDF"	"PDF"
+"PDF Docs"	"Documentos PDF"
+"PDF Documents"	"Documentos PDF"
+"PDF File"	"Arquivo PDF"
+"PDF Files"	"Arquivos PDF"
+"PDF Files (*.pdf)|*.pdf|All Files|*.*"	"Arquivos PDF (*.pdf)|*.pdf|All Files|*.*"
+"PERCENTILE"	"PERCENTIL"
+"PERIMETER"	"PER�METRO"
+"PET (after Hargreaves, Grid)"	"PET (depois de Hargreaves, raster)"
+"PET (after Hargreaves, Table)"	"PET (depois de Hargreaves, tabela)"
+"PFAC("	"PFAC("
+"PH, plant height [m], representing the effective height from which raindrops fall from the crop or vegetation"	"PH, altura das plantas [m], o que representa a altura efetiva em que a chuva cai a partir da cultura ou vegeta��o"
+"PI, permanent interception expressed as the proportion [between 0-1] of rainfall"	"PI, intercepta��o permanente expressa como a propor��o [entre 0-1] de chuvas"
+"PNG Files"	"Arquivos PNG"
+"PRECISION"	"PRECIS�O"
+"PREDICTED"	"PREVIS�VEL"
+"PT_ID"	"PT_ID"
+"Page Setup"	"Configura��es da p�gina"
+"Pairwise Comparisons Table "	"Tabela de compara��es pareadas"
+"Pan"	"Pan"
+"Panchromatic"	"Pancrom�tico"
+"Panchromatic Channel"	"Canal pancrom�tico"
+"Panchromatic Channel Matching"	"Canal pancrom�tica concidente"
+"Panorama"	"Panorama"
+"Panorama Break [%]"	"Panorama da ruptura [%]"
+"Paper Format"	"Formato de Papel"
+"Parallelepiped"	"Paralelep�pedo"
+"Parameter"	"Par�metro"
+"Parameter (a)"	"Par�metro (a)"
+"Parameter (b)"	"Par�metro (b)"
+"Parameter (c)"	"Par�metro (c)"
+"Parameter (c) to fit streamflow volume"	"Par�metro (c) para ajustar o volume de vaz�es"
+"Parameter (l)"	"Par�metro (l)"
+"Parameter (l) [lower bound]"	"Par�metro (l) [limite inferior]"
+"Parameter (l) [upper bound]"	"Par�metro (l) [limite superior]"
+"Parameter (p)"	"Par�metro (p)"
+"Parameter (p) [lower bound]"	"Par�metro (p) [limite inferior]"
+"Parameter (p) [upper bound]"	"Par�metro (p) [limite superior]"
+"Parameter settings for No-Data and all other values."	"Ajustes de par�metros para Sem-dados e todos os outros valores."
+"Parameter settings for the NoData value of the output grid (header)."	"Ajustes de par�metros para o valor SemDados da grade de sa�da (cabe�alho)."
+"Parameters"	"Par�metros"
+"Parameters file could not be exported."	"O arquivo de par�metros n�o pode ser exportado."
+"Parameters file could not be imported."	"O arquivo de par�metros n�o podem ser importado."
+"Parameterwerte HD Modell"	"Valores dos par�metros do modelo HD"
+"Parsing %s ... "	"Analisando %s ... "
+"Partial D."	"Parcial D."
+"Partially wet (WI = 0.1 - 1)"	"Parcialmente molhada (WI = 0.1 - 1)"
+"Partition Coefficients"	"Coeficientes de parti��o"
+"Parts"	"Partes"
+"Pass"	"Passar"
+"Pass (saddle)"	"Passo (sela)"
+"Pass 1"	"Passo 1"
+"Pass 2"	"Passo 2"
+"Pass two processing..."	"Passo dois em processamento ..."
+"Password"	"Senha"
+"Patch"	"Remendo"
+"Patch Grid"	"Corre��o da grade"
+"Patching"	"Aplicando caminho"
+"Path"	"Caminho"
+"Path (1-255/233 1-3/4-5"	"Caminho (1-255/233 1-3/4-5"
+"Path for HTML Files"	"Caminho para arquivos HTML"
+"Pattern Analysis"	"An�lise de Padr�es"
+"Peak"	"Pico"
+"Peak Flow (m3/s)"	"Fluxo de pico (m3/s)"
+"Peak Flow (m3/s) at selected outlet cell"	"Fluxo de pico (m3/s) a c�lula de sa�da selecionada"
+"Percent"	"Por cento"
+"Percent of solar radiance in path radiance"	"Percentual de radia��o solar no caminho de radica��o"
+"Percentage clays"	"Argilas percentuais"
+"Percentage of points"	"Percentagem de pontos"
+"Percentage of points remaining in the simplified line"	"Percentagem de pontos restantes na linha simplificada"
+"Percentage of standard deviation"	"Percentagem de desvio padr�o"
+"Percentage rock fragments"	"Fragmentos de rocha percentual"
+"Percentage sand"	"Percentagem de areia"
+"Percentage silt"	"Percentagem silte"
+"Percentile"	"Percentil"
+"Percentile used as default for histogram stretch."	"Percentil usado como padr�o para esticar histograma."
+"Percentiles"	"Percentis"
+"Perforated"	"Perfurado"
+"Perihelion"	"Peri�lio"
+"Perimeter"	"Per�metro"
+"Permament Interception"	"Intercep��o permamente"
+"Permanent Wilting Point [mm]"	"Ponto de murchamento permanente [mm]"
+"Permeability"	"Permeabilidade"
+"Permutation Importance"	""
+"Perpendicular Vegetation Index (Perry and Lautenschlager, 1984)"	"�ndice de Vegeta��o Perpendicular (Perry e Lautenschlager, 1984)"
+"Perpendicular Vegetation Index (Qi, et al., 1994)"	"Perpendicular �ndice de Vegeta��o (Qi, et al., 1994)"
+"Perpendicular Vegetation Index (Richardson and Wiegand, 1977)"	"�ndice de Vegeta��o Perpendicular (Richardson e Wiegand, 1977)"
+"Perpendicular Vegetation Index (Walther and Shabaani)"	"�ndice Perpendicular de Vegeta��o (Walther e Shabaani)"
+"Perspectivic Distance"	"Dist�ncia de perspectiva"
+"Peucker & Douglas"	"Peucker & Douglas"
+"Pfad LS-Daten"	"Pfad LS-Daten"
+"Pfad WaterGap Raster"	"Pfad WaterGap Raster"
+"Phi [degree]"	"Phi [grau]"
+"Photogrammetry"	"Fotogrametria"
+"Photogrammetry tools."	"Ferramentas de fotogrametria."
+"Pit"	"Cova ou po�o"
+"Pixel Centers?"	"Centros de pixel?"
+"Pixel Width (um)"	"Largura de pixel (um)"
+"Pixel Width in micro meters"	"Largura Pixel em micro metros"
+"Plain"	"Plan�cie"
+"Plains"	"Plan�cie"
+"Plan Curvature"	"Plano de curvatura"
+"Planar"	"Planar"
+"Plane"	"Plano"
+"Plane (%.2fDegree)"	"Plano (%.2fDegree)"
+"Plant Height"	"Altura de planta"
+"Platform"	"Plataforma"
+"Play And Save as Images..."	"Iniciar e salvar como imagem..."
+"Play Loop [Ctrl + L]"	"Reproduzir loop [Ctrl + L]"
+"Play Once [Ctrl + P]"	"Reproduzir uma vez [Ctrl + P]"
+"Play and Save to Image"	"Reproduzir e salvar a Imagem"
+"Please choose a method of module operation."	"Por favor, escolha um m�todo de opera��o do m�dulo."
+"Please enter a numeric value:"	"Por favor, indique um valor num�rico:"
+"Please enter a text:"	"Por favor, indique um texto:"
+"Please provide a path for the output files."	"Por favor, forne�a um caminho para os arquivos de sa�da."
+"Please provide a shapefile with the 'Polygons' parameter!"	"Por favor, forne�a um shapefile com o par�metro 'Pol�gono'!"
+"Please provide a shapefile with the 'Shapes Extent' parameter!"	"Por favor, forne�a um shapefile com o par�metro 'Extens�o de Shapes'!"
+"Please provide a valid *.scpvf file!"	"Por favor, forne�a um arquivo *.scpvf v�lido!"
+"Please provide a valid *.scpvf_tile_info file!"	"Por favor, forne�a um arquivo *.scpvf_tile_infov�lido!"
+"Please provide a valid AOI!"	"Por favor, forne�a uma AOI v�lido!"
+"Please provide a valid R,G,B fields for this kind of operation!"	"Por favor, forne�a campos v�lidos R,G,B para este tipo de opera��o!"
+"Please provide a valid SAGA RGB field for this kind of operation!"	"Por favor, forne�a um campo RGB no SAGA v�lido para este tipo de opera��o!"
+"Please provide a valid base name for the output files!"	"Por favor, forne�a um nome de base v�lido para os arquivos de sa�da!"
+"Please provide a valid output directory for the output files!"	"Por favor, forne�a um diret�rio v�lido de sa�da para os arquivos de sa�da!"
+"Please provide a valid output file path!"	"Por favor, forne�a um caminho de arquivo v�lido sa�da!"
+"Please provide an attribute field with z-information!"	"Por favor, forne�a um campo de atributo com z-informa��o!"
+"Please provide an output file name!"	"Por favor, forne�a um nome de arquivo de sa�da!"
+"Please provide at least one column to export!"	"Por favor, forne�a pelo menos uma coluna para exportar!"
+"Please provide some input files!"	"Por favor, forne�a alguns arquivos de entrada!"
+"Please stop tool execution before exiting SAGA."	"Por favor, pare a execu��o da ferramenta antes de sair do SAGA."
+"Plot Holes"	"Buracos na trama"
+"Point"	"Ponto"
+"Point Cloud"	"Nuvem de pontos"
+"Point Cloud %s is empty after removing overlap, skipping dataset!"	"Nuvem de ponto %s est� vazia ap�s a remo��o de sobreposi��o, pulando conjunto de dados!"
+"Point Cloud Attribute Calculator"	"Calculadora de atributo para Nuvem de ponto"
+"Point Cloud Cutter"	"Cortador de Nuvem de pontos"
+"Point Cloud Manager"	"Gerenciador de Nuvem de pontos "
+"Point Cloud Reclassifier / Subset Extractor"	"Reclassificador / Extrator de subconjunto de Nuvem de pontos"
+"Point Cloud Thinning (simple)"	"Afinamento de Nuvem de pontos (simples)"
+"Point Cloud Viewer"	"Visualizador de Nuvem de pontos"
+"Point Cloud Viewer Settings"	"Defini��es do visualizador de Nuvem de pontos"
+"Point Cloud from Grid Points"	"Nuvem de pontos para grade de pontos"
+"Point Cloud from Shapes"	"Nuvem de pontos para Shapes"
+"Point Cloud from Table"	"Nuvem de pontos para Tabela"
+"Point Cloud list"	"Lista de Nuvem de pontos"
+"Point Cloud to Grid"	"Nuvem de pontos para grade"
+"Point Cloud to Shapes"	"Nuvem de pontos para Shapes"
+"Point Cloud to drop attribute from."	"Nuvem de pontos para alargar a partir de atributo."
+"Point Cloud to reclassify/extract"	"Reclassificar/extrair Nuvem de pontos"
+"Point Clouds"	"Nuvens de ponto"
+"Point Clouds Viewer"	"Visualizador de Nuvens de ponto"
+"Point Data Record Format"	"Formato de grava��o de dados de ponto"
+"Point Distances"	"Dist�ncias de ponto "
+"Point Grid"	"Grade de ponto"
+"Point Position"	"Posi��o do ponto "
+"Point Size"	"Tamanho do ponto"
+"Point Size: Default"	"Tamanho do ponto: Padr�o"
+"Point Size: Scaling"	"Tamanho do ponto: Escalonado"
+"Point Statistics for Polygons"	"Estat�sticas apontam para pol�gonos"
+"Point View Settings"	"Configura��es de visualiza��o de ponto"
+"Point cloud to drop attribute(s) from."	"Nuvem de ponto para largar a partir de atributo(s)."
+"Point cloud with attribute(s) dropped."	"Nuvem de pontos com o atributo(s) largou."
+"Point clouds viewer."	"Visualizador de nuvens de Ponto."
+"Point insertion distance [map units]."	"Dist�ncia de inser��o de ponto [mapa unidades]."
+"Point shapefile with source point(s)"	"Shapefile de ponto com ponto de origem(s)"
+"Point summary contains no points!"	"Resumo do ponto n�o cont�m pontos!"
+"Point to Keep"	"Ponto para manter"
+"Point(s)"	"Ponto(s)"
+"PointCloud"	"Nuvem de pontos"
+"Points"	"Pontos"
+"Points Filter"	"Filtro de pontos"
+"Points Thinning"	"Emagrecimento de pontos"
+"Points per Cell"	"Pontos por c�lula"
+"Points per Square"	"Pontos por metro quadrado"
+"Points to be Colorised"	"Pontos a ser coloridos"
+"Polar Angle Units"	"Unidades de �ngulo polar"
+"Polar Coordinate System"	"Sistema de Coordenadas Polares"
+"Polar Coordinates"	"Coordenadas Polares"
+"Polar Stereographic"	"Estereogr�fica polar"
+"Polar to Cartesian Coordinates"	"Polar em coordenadas cartesianas"
+"Polyconic"	"Polic�nica"
+"Polygon"	"Pol�gono"
+"Polygon Centroids"	"Centr�ides de Pol�gono"
+"Polygon Clipping"	"Cortando pol�gono"
+"Polygon Dissolve"	"Dissolver pol�gono"
+"Polygon Parts"	"Partes do pol�gono"
+"Polygon Parts to Separate Polygons"	"Separar pol�gonos por partes do pol�gono"
+"Polygon Properties"	"Propriedades do pol�gono"
+"Polygon Self-Intersection"	"Auto-intersec��o de pol�gono"
+"Polygon Shape Indices"	"�ndices de shape de pol�gono"
+"Polygon Vertex Check"	"Verificar v�rtice de poligono"
+"Polygon outlines of object regions"	"Contornos de pol�gonos por regi�es de objetos"
+"Polygon shapefile describing the bounding boxes of spcvf tiles."	"Descrevendo shape de pol�gono pelas caixas delimitadoras de quadr�culas spcvf."
+"Polygon with less than 3 vertices encountered!"	"Encontrou pol�gono com menos de 3 v�rtices!"
+"Polygon(s)"	"Pol�gono (s)"
+"Polygon-Line Intersection"	"Intersec��o de pol�gono-Linha"
+"Polygons"	"Pol�gonos"
+"Polygons to Edges and Nodes"	"Pol�gonos para Edges e Nodes"
+"Polygons with Property Attributes"	"Pol�gonos com atributos de Propriedade"
+"Polylines"	"Multiplas linhas"
+"Polynom"	"Polyn�mio"
+"Polynomial Coefficient"	"Coeficiente polinomial"
+"Polynomial Coefficients"	"Coeficientes polinomiais"
+"Polynomial Order"	"Ordem polinomial"
+"Polynomial Regression"	"Regress�o polinomial"
+"Polynomial Trend from Grids"	"Tend�ncia de polin�mio de grades"
+"Polynomial, Order"	"Polinomial, Ordenar"
+"Population"	"Popula��o"
+"Port"	"Porta"
+"Portable Network Graphics"	"Portable Network Graphics"
+"Portable Network Graphics (*.png)"	"Portable Network Graphics (*.png)"
+"Position"	"Posi��o"
+"Position as Geographic Coordinates"	"Posi��o em Coordenadas Geogr�ficas"
+"Positive Openness"	"Abertura positiva"
+"Positive values result in a shift in E direction."	"Os valores positivos resultam em uma mudan�a na dire��o E."
+"Positive values result in a shift in N direction."	"Os valores positivos resultam em uma mudan�a na dire��o N."
+"Possible error"	"Poss�vel erro"
+"PostGIS"	"PostGIS"
+"PostGIS extension added"	"Extens�o PostGIS acrescentada"
+"PostGIS extension missing or too old"	"Extens�o PostGIS ausente ou muito velha"
+"PostgreSQL"	"PostgreSQL"
+"PostgreSQL Connections"	"Conex�es do PostgreSQL"
+"PostgreSQL Database Connection Error"	"Erro de conex�o com o banco de dados PostgreSQL"
+"PostgreSQL Sources"	"Fontes PostgreSQL"
+"PostgreSQL database is already connected"	"Banco de dados PostgreSQL j� est� conectado"
+"PostgreSQL source connected"	"Fonte PostgreSQL conectado"
+"PostgreSQL source disconnected"	"Fonte PostgreSQL desconectado"
+"PostgreSQL source is already connected"	"Fonte PostgreSQL j� est� conectado"
+"Potential Evapotranspiration"	"Evapotranspira��o potencial"
+"Potential Incoming Solar Radiation"	"Entrada potencial de radia��o solar"
+"Power"	"Iniciar"
+"Power on soil (p)"	"Iniciar em solo (p)"
+"Power on soil (p) [lower bound]"	"Poder em solo (p) [limite inferior]"
+"Power on soil (p) [upper bound]"	"Poder em solo (p) [limite superior]"
+"Power on soil moisture"	"Ligue a umidade do solo"
+"Power on soil moisture (p), lower bound"	"Ligue a umidade do solo (p), limite inferior"
+"Power on soil moisture (p), upper bound"	"Ligue a umidade do solo (p), limite superior"
+"Power: a + b * x^c"	"Pot�ncia: a + b * x ^ c"
+"Pratt"	"Pratt"
+"Pre-analyze"	"Pr�-analisar"
+"Pre-defined Formulas"	"F�rmulas pr�-definidas"
+"Precipitation"	"Precipita��o"
+"Precipitation Column"	"Precipitation Coluna"
+"Precipitation [m / dt]"	"Precipita��o [m / dt]"
+"Precipitation [mm]"	"Precipita��o [mm]"
+"Precise Datum Conversion"	"Precise Datum Convers�o"
+"Precise Tracing"	"Rastreamento preciso"
+"Precisions"	"Precis�es"
+"Predefined Datum"	"Predefinido Datum"
+"Predefined Ellipsoids"	"Predefinidos Elips�ides"
+"Predefined Functions"	"Fun��es pr�-definidas"
+"Predefined Standard Ellipsoids"	"Predefinidos Elips�ides Padr�o"
+"Predicted responses (probabilities) for corresponding samples."	"Respostas preditas (probabilidades) para amostras correspondentes."
+"Prediction"	"Predi��o"
+"Prediction INPUT"	"ENTRADA Prediction"
+"Prediction Probability"	"Probabilidade de Previs�o"
+"Predictor"	"Predictor"
+"Predictors"	"Preditores"
+"Preferred Routing"	"Encaminhamento preferencial"
+"Preferred Target Grid Type"	"Tipo preferencial da grade alvo"
+"Preliminary scene analysis:"	"An�lise preliminar cena:"
+"Preprocessed DEM"	"DEM preprocessed"
+"Preprocessed DEM. If this is not set changes will be stored in the original DEM grid."	"MDE processado. Se isso n�o for definido, altera��es ser�o armazenadas na grade MDE original."
+"Preprocessing"	"Pr�-processamento"
+"Presence Data"	"Dados presen�a"
+"Presence Prediction"	"Predi��o de presen�a"
+"Presence Probability"	"Probabilidade de presen�a"
+"Preservation"	"Preserva��o"
+"Preserve 1px border Yes/No"	"Preservar fronteira 1px Sim/N�o"
+"Preserve Data Type"	"Preservar tipo de dados"
+"Preset Selection"	"Sele��o predefinida"
+"Presets"	"Predefini��es"
+"Prevent Negative Flow Accumulation"	""
+"Previous"	"Anterior"
+"Primary Key"	"Chave prim�ria"
+"Primary Name"	"Nome prim�rio"
+"Primary key)"	"Chave prim�ria)"
+"Principal Components"	"Componentes principais"
+"Principal Point Offset in X"	"Deslocamento em X do ponto principal"
+"Principal Point Offset in X (pixels)"	"Deslocamento em X (pixels) do ponto principal"
+"Principal Point Offset in X (pixles)"	"Deslocamento em X (pixles) do ponto principal"
+"Principal Point Offset in Y"	"Deslocamento em Y do ponto principal"
+"Principal Point Offset in Y (pixels)"	"Deslocamento em Y (pixels) do ponto principal"
+"Principle Components"	"Componentes principais"
+"Principle Components Analysis"	"An�lise de componentes principais"
+"Principle Components Based Image Sharpening"	"Afina��o de imagem com base em componentes principais"
+"Print"	"Imprimir"
+"Print Layout"	"Layout de impress�o"
+"Print Preview"	"Visualiza��o de Impress�o"
+"Print Setup"	"Configura��o de impress�o"
+"Print only information available in LAS header."	"Imprimir �nica informa��o dispon�vel no cabe�alho LAS."
+"Priority Index"	"�ndice de prioridade"
+"Probabilities"	"Probabilidades"
+"Probability"	"Probabilidade"
+"Probability Estimates"	"Estimativas de probabilidade"
+"Probability Reference"	"Probabilidade de refer�ncia"
+"Probability Threshold"	"Limiar de probabilidade"
+"Process Update Frequency [milliseconds]"	"Processo de atualiza��o de frequ�ncia [milissegundos]"
+"Processed DEM"	"MDE processado"
+"Processing"	"Processamento"
+"Processing AOI %d ..."	"Processando AOI %d ..."
+"Processing AOI ..."	"Processamento AOI ..."
+"Processing Sinks and Flats"	"Processando Pias e Flats"
+"Processing dataset %d"	"Processando conjunto de dados %d"
+"Processing first pass..."	"Processando primeiro passo..."
+"Processing observer %d ..."	"Processando observador %d ..."
+"Product"	"Produto"
+"Production"	"Produ��o"
+"Profile"	"Perfil"
+"Profile Curvature"	"Pefil de curvatura"
+"Profile Distance"	"Perfil de dist�ncia"
+"Profile Length"	"Perfil de comprimento"
+"Profile Line"	"Linha de perfil"
+"Profile Lines"	""
+"Profile Points"	"Pontos de perfil"
+"Profile Samples"	"Amostras de perfil"
+"Profile [%s]"	"Perfil [%s]"
+"Profile from points"	"Perfil de pontos"
+"Profiles"	"Perfis"
+"Profiles from Lines"	"Perfis de Linhas"
+"Proj.4"	"Proj.4"
+"Proj.4 Version is "	"Vers�o Proj.4 "
+"Proj4 Parameters"	"Par�metros proj4"
+"Proj4 definition string error"	"Erro de defini��o de sequ�ncia Proj4"
+"Project"	"Projeto"
+"Project File"	"Arquivo de projeto"
+"Project \'%s\'"	"Projeto \'%s\'"
+"Project has been saved."	"O projeto foi salvo."
+"Project has been successfully loaded."	"O projeto foi carregado com �xito."
+"Projected Coordinate System"	"Sistema de Coordenadas Projetadas"
+"Projected Coordinate Systems"	"Sistemas de Coordenadas Projetadas"
+"Projected Height"	"Altura projetada"
+"Projection"	"Proje��o"
+"Projection Centre"	"Centro de proje��o"
+"Projection Centre - X"	"Centro de Proje��o - X"
+"Projection Centre - Y"	"Centro de proje��o - Y"
+"Projection Centre - Z"	"Centro de proje��o - Z"
+"Projection Parameters"	"Par�metros de proje��o"
+"Projection Settings"	"Configura��es de proje��o"
+"Projection Type"	"Tipo de proje��o"
+"Projection routines make use of the Proj.4 Cartographic Projections library."	"Rotinas de proje��o para uso da biblioteca de Proje��es Cartogr�ficas Proj.4."
+"Projection_GeoTRANS_Datum_3.dat,\n"	""
+"Projection_GeoTRANS_Datum_7.dat,\n\n"	""
+"Projection_GeoTRANS_Ellipsoid.dat,\n"	""
+"Projection_GeoTRANS_Geoid_EGM96.dat,\n"	""
+"Projections"	"Proje��es"
+"Projection|Georeferencing"	"Proje��o|Georreferenciamento"
+"Propability"	"Probabilidade"
+"Properties"	"Propriedades"
+"Protection Index"	"�ndice de prote��o"
+"Provide Radial Distortion Parameters?"	"Fornecer par�metros de distor��o radial?"
+"Provide Time stamp of Image?"	"Fornecer tempo de cria��o da imagem?"
+"Proximity"	"Proximidade"
+"Proximity Grid"	"Grade de proximidade"
+"Punktuelle Rasterzellenmanipulation"	"Punktuelle Rasterzellenmanipulation"
+"Pythagoras' Tree"	"�rvore de Pit�goras"
+"Python"	"Python"
+"Python with Header"	"Python com cabe�alho"
+"Q, estimation of mean runoff [mm]"	"Q, estimativa de escoamento m�dio [mm]"
+"QM of ESP"	"QM de ESP"
+"QUALITY"	"QUALIDADE"
+"QuadTree"	"QuadTree"
+"QuadTree Structure to Shapes"	"Estrutura de Quadtree para shapes"
+"Quadrant"	"Quadrante"
+"Quadrants"	"Quadrantes"
+"Quadratic"	"Quadr�tico"
+"Quadratic Neighbors"	"Vizinhos quadr�ticos"
+"Quadric: a + b * x + c * x^2"	"Quadr�tico: a + b * x + c * x^2"
+"Quality"	"Qualidade"
+"Quality Measure"	"Medir a qualidade"
+"Quality assessment is not calculated, because the number of classes in the input grids differ."	"Avalia��o da qualidade n�o � calculada, porque o n�mero de classes na grade de entrada � diferente."
+"Quantile"	"Quantil"
+"Queen"	"Queen"
+"Queen's case"	"Caso Queen"
+"Query"	"Consulta"
+"Query Result"	"Resultado da Consulta"
+"Quotient"	"Quociente"
+"R"	"R"
+"R, height of precipitation in timespan [mm]"	"R, altura da precipita��o por per�odo de tempo [mm]"
+"R,G,B to SAGA RGB"	"R,G,B para SAGA RGB"
+"R,G,B value range"	"intervalo de valores R,G,B"
+"R2"	"R2"
+"R:Alternatives"	"R:Alternativas"
+"R:Classification"	"R:Classifica��o"
+"R:Conversion"	"R:Convers�o"
+"R:Conversions"	"R:Convers�es"
+"R:Dynamics"	"R:Din�micos"
+"R:Export"	"R:Exportar"
+"R:Fragmentation Analysis"	"R:An�lise de Fragmenta��o"
+"R:Grid Generation"	"R:Gera��o de grade"
+"R:Grid Values"	"R:Valores de grade"
+"R:Image Sharpening"	"R:Afina��o de imagem"
+"R:Import"	"R:Importar"
+"R:Indices"	"R:�ndices"
+"R:Interpolation from Points"	"R:Iinterpola��o de Pontos"
+"R:Landsat"	"R:Landsat"
+"R:Miscellaneous"	"R:Diversos"
+"R:Overlay"	"R:Sobreposi��o"
+"R:Point Cloud"	"R:Nuvem de Pontos"
+"R:Principle Components"	"R:Componentes Principais"
+"R:Shapes"	"R:Shapes"
+"R:Soil Analysis"	"R:An�lise do Solo"
+"R:Spatial Extent"	"R:Extens�o espacial"
+"R:Spline Interpolation"	"R:interpola��o Spline"
+"R:Table"	"R:Tabela"
+"R:Terrain Analysis"	"R:An�lise de terreno"
+"R:Tools"	"R:Ferramentas"
+"R:Topographic Indices"	"R:�ndices topogr�ficos"
+"R:Vectorization"	"R:Vetorisa��o"
+"RAINBOW"	"ARCO IRIS"
+"RANGE"	"ALCANCE"
+"RED_BLUE"	"RED_BLUE"
+"RED_BLUE_GREEN"	"RED_BLUE_GREEN"
+"RED_GREEN"	"RED_GREEN"
+"RED_GREEN_BLUE"	"RED_GREEN_BLUE"
+"RED_GREY_BLUE"	"RED_GREY_BLUE"
+"RED_GREY_GREEN"	"RED_GREY_GREEN"
+"RESIDUAL"	"RESIDUAL"
+"RGB"	"RGB"
+"RGB Coded Values"	"Valores codificados em RGB"
+"RGB Composite"	"Composi��o RGB"
+"RGB Image"	"Imagem RGB"
+"RGB Overlay"	"Sobreposi��o RGB"
+"RGB Values"	"Valores RGB"
+"RGB coded data"	"Dados codificados em RGB"
+"RGB to IHS"	"RGB para IHS"
+"RMSE"	"RMSE"
+"RPROP parameters"	"Par�metros RPROP"
+"RTL Compression"	"Compress�o RTL"
+"Radial Limit"	"Limite radial"
+"Radial search limit for openness calculation."	"Buscar Limite Radial para o c�lculo de abertura."
+"Radiance"	"Radi�ncia"
+"Radians"	"Radianos"
+"Radiation"	"Radia��o"
+"Radius"	"Raio"
+"Radius (Cells)"	"Raios (c�lulas)"
+"Radius (cells)"	"Raios (c�lulas)"
+"Radius X"	"Raio X"
+"Radius Y"	"Raio Y"
+"Radius [Cells]"	"Raios [c�lulas]"
+"Radius is too small"	"O raio � muito pequeno"
+"Radius is too small for your Standard Deviation"	"O raio � muito pequeno para o seu Desvio Padr�o"
+"Radius of Variance (Grid)"	"Raio de vari�ncia (grade)"
+"Radius used to trace for shadows (ambient occlusion) [map units]."	"Raio usado para rastrear as sombras (oclus�o do ambiente) [unidades do mapa]."
+"Radius with Variance"	"Raio com Vari�ncia"
+"Rainfall"	"Pluviosidade"
+"Rainfall Duration"	"Dura��o das Chuvas"
+"Rainfall intensity"	"Intensidade de precipita��o"
+"Random"	"Rand�mico"
+"Random Field"	"Campo aleat�rio"
+"Random Forest Classification"	"Classifica��o aleat�ria de Floresta"
+"Random Forest Classification (ViGrA)"	"Classifica��o aleat�ria de floresta (ViGrA)"
+"Random Forest Options"	"Op��es aleat�rias de floresta"
+"Random Forest Presence Prediction (ViGrA)"	"Predi��o aleat�ria de floresta (VIGrA)"
+"Random Terrain"	"Terreno aleat�rio"
+"Random number, Gaussian distribution with mean x and standard deviation y"	""
+"Random number, uniform distribution with minimum x and maximum y"	""
+"Range"	"Alcance"
+"Range of R,G,B values in LAS file."	"Faixa de valores R,G,Bem arquivo LAS."
+"Rank"	"Rank"
+"Rank Filter"	"Filtro de Rank"
+"Rank [Percent]"	"Rank [por cento]"
+"Raster Band Deletion"	"Exclus�o de Banda Raster"
+"Raster Band Identifier"	"Identificador de Banda Raster"
+"Raster Catalogue"	"Cat�logo raster"
+"Raster Catalogue (unknown CRS)"	"Cat�logo raster (unknown CRS)"
+"Raster Catalogues"	"Cat�logos raster"
+"Raster Dimension"	"Dimens�o do Raster"
+"Raster Resolution (Pixel Size)"	"Resolu��o do Raster (Tamanho do Pixel)"
+"Raster Resolution (Pixels Size)"	"Resolu��o Raster (Tamanho doPixels)"
+"Raster Resolution (Pixels X)"	"Resolu��o do Raster (Pixels X)"
+"Rasterzelle 1"	"Rasterzelle 1"
+"Rasterzelle 2"	"Rasterzelle 2"
+"Rate Constant for Litter Loss [1/a]"	"Taxa constante do lixo [1/a]"
+"Ratio Evapotranspiration"	"Propor��o de evapotranspira��o"
+"Ratio Vegetation Index"	"�ndice de Propor��o de Vegeta��o"
+"Raw Data File"	"Arquivo de dados brutos"
+"Ray Tracing"	"Raio de rastreamento"
+"Rayleigh Scattering"	"Dispers�o de Rayleigh"
+"Rayleigh atmosphere (diffuse sky irradiance)"	"Atmosfera de Rayleigh (irradi�ncia difusa do c�u)"
+"Rc"	"Rc"
+"Real"	"Real"
+"Real Surface Area"	"�rea real de superf�cie"
+"Real-valued Numerical Features"	"Fei��es Num�ricas com valor de reais"
+"Recalculate"	"Recalcular"
+"Reciprocal Flattening (rf)"	"Aplanamento rec�proco (RF)"
+"Reclassification of distance grid to buffer zones with a width equal to the equidistance value."	"Reclassifica��o de grade por dist�ncia de zonas-de buffer, com uma largura igual ao valor de eq�idist�ncia."
+"Reclassified Grid"	"Grade reclassificado"
+"Reclassified grid."	"Grade reclassificado."
+"Reclassified or extracted Point Cloud."	"Novem de ponto reclassificado ou extra�da."
+"Reclassify Grid Values"	"Reclassificar valores da grade"
+"Reclassify buffer distance to intervals of euqidistance ..."	"Reclassificar buffer de dist�ncia com intervalos de equidistantes ..."
+"Reclassify|Extract Subset|"	"Reclassificar|Extrair subconjunto|"
+"Recognised Files"	"Arquivos Reconhecidos"
+"Reconstruction result"	"Resultado da Reconstru��o"
+"Rectangles"	"Ret�ngulos"
+"Rectify Grid"	"Retificar grade"
+"Red"	"Vermelho"
+"Red (TM 2)"	"Vermelho (TM 2)"
+"Red Reflectance"	"Reflect�ncia do vermelho"
+"Reduction"	"Redu��o"
+"Reference Chip Size (Cells)"	"Tamanho do chip de Refer�ncia (C�lulas)"
+"Reference Points"	"Pontos de Refer�ncia"
+"Reference Points (Origin)"	"Pontos de Refer�ncia (origem)"
+"Reference Points (Projection)"	"Pontos de Refer�ncia (proje��o)"
+"Reference chip size set to %d"	"Tamanho do chip de refer�ncia definido para %d"
+"Referenced Grids"	"Grades referenciados"
+"Referencing"	"Referenciando"
+"Reflectance"	"Reflect�ncia"
+"Refresh"	"Atualizar"
+"Region of Interest"	"Regi�o de Interesse"
+"Regression"	"Regress�o"
+"Regression Analysis"	"An�lise de regress�o"
+"Regression Analysis (Points and Predictor Grid)"	"An�lise de regress�o (Pontos e grade preditor)"
+"Regression Details"	"Detalhes de Regress�o"
+"Regression Formula"	"Formula de Regress�o"
+"Regression Function"	"Fun��o de Regress�o"
+"Regression Kriging"	"Kringagem de Regress�o"
+"Regression Model"	"Modelo de Regress�o"
+"Regression Parameters"	"Par�metros de regress�o"
+"Regression with Residual Correction"	"Regress�o com corre��o Residual"
+"Regression: Coefficients"	"Coeficientes de regress�o:"
+"Regression: Model"	"Regress�o: Modelo"
+"Regression: Steps"	"Regress�o: Passos"
+"Regularisation"	"Regulariza��o"
+"Regularization"	"Regulariza��o"
+"Regularization Factor"	"Fator de regulariza��o"
+"Relation B / A"	"Rela��o B / A"
+"Relationship KE - I"	"Relacionamento KE- I"
+"Relationship between kinetic energy (KE) and rainfall intensity (I)"	"Rela��o entre energia cin�tica (KE) e intensidade de precipita��o (I)"
+"Relative Area"	"�rea relativa"
+"Relative Height"	"Altura Relativa"
+"Relative Heights and Slope Positions"	"Posi��es relativas de Alturas e Declive"
+"Relative Richness"	"Riqueza Relativa"
+"Relative Slope Position"	"Posi��o de declive relativa"
+"Relative from cell value"	"Valor da c�lula relativo"
+"Relative heights calculation..."	"C�lculo de alturas relativas..."
+"Relaxation"	"Relaxamento"
+"Reload"	"Recarregar"
+"Reload tool chain"	"Recarregar cadeia de ferramentas"
+"Remove"	"Remover"
+"Remove Border Regions?"	"Retirar as regi�es fronteiri�as?"
+"Remove Duplicate Points"	"Remover pontos duplicados"
+"Remove Overlap from Virtual Point Cloud Tiles"	"Remover sobreposi��o de mosaicos de nuvem virtual de pontos"
+"Remove every i-th point."	"Remova todos os pontos i-th."
+"Remove regions which have contact with (are adjacent to) the image borders?"	"Remover regi�es em contato(s�o adjacentes a) as fronteiras de imagem?"
+"Removed Objects"	"Objetos retirados"
+"Removing ambiguous pixels..."	"Removendo pixels amb�guos ..."
+"Rename"	"Renomear"
+"Rename Fields"	"Renomear campos"
+"Rename Raster Band"	"Renomear Banda do Raster"
+"Rename Table"	"Renomear Tabela"
+"Reopen Database Connections"	"Reabrir Conex�es do banco de dados"
+"Reopen PostgreSQL database connections. Warning: if set to true account information including unencrypted paswords for automatic connection will be stored."	"Reabrir as conex�es de banco de dados PostgreSQL. Aviso: se definido para informa��es de conta verdadeira, as senhas n�o criptografadas para conex�o autom�tica ser�o armazenadas."
+"Replace Condition"	"Substituir Condi��o"
+"Replace Text"	"Substituir texto"
+"Replace first PC with PAN"	"Substituir primeiro PC por PAN"
+"Replace with"	"Substituir por"
+"Replacement"	"Substitui��o"
+"Replacements"	"Substitui��es"
+"Report Unchanged Classes"	"Assinalar classes Inalteradas"
+"Reports"	"Relat�rios"
+"Representativeness"	"Representatividade"
+"Representativeness (Grid)"	"Representatividade (grade)"
+"Resampling"	"Reamostragem"
+"Resampling Filter"	"Filtro de reamostragem"
+"Rescale Range"	"Redimensionar Alcance (Range)"
+"Rescale Values (0-255)"	"Re-escalar valores (0-255)"
+"Rescale to 0 - 1"	"Redimensionar para 0-1"
+"Rescale to 0 - 1.0"	"Redimensionar para 0-1,0"
+"Resection (Terrestrial)"	"Resseca��o (Terrestre)"
+"Residual Analysis (Grid)"	"An�lise Residual (grade)"
+"Residual Corrected Regression"	"Regress�o Residual Corrigida"
+"Residual Correction"	"Corre��o Residual"
+"Residual Interpolation"	"Interpola��o Residual"
+"Residual standard error"	"Erro de residual padr�o"
+"Residuals"	"Residuais"
+"Resilent propagation (RPROP)"	"Propaga��o resiliente (RPROP)"
+"Resolution"	"Resolu��o"
+"Restore"	"Restaurar"
+"Restore Model from File"	"Restaurar Modelo de Arquivo"
+"Result"	"Resultado"
+"Result Grid"	"Grade resultante"
+"Result table"	"Tabela de resultados"
+"Result: Scene cloud free"	"Resultado: Cena de nuvem livre"
+"Result: Scene with clouds"	"Resultado: Cena com nuvens"
+"Resultierendes Raster ueber WasserENTNAHME erstellen"	"Resultierendes Raster ueber WasserENTNAHME erstellen"
+"Resultierendes Raster ueber WasserNUTZUNG erstellen"	"Resultierendes Raster ueber WasserNUTZUNG erstellen"
+"Resulting Point Cloud."	"Nuvem de pontos resultante."
+"Resulting Value"	"Valor resultante"
+"Results"	"Resultados"
+"Returns the floating point remainder of x/y"	""
+"Returns the integer part of floating point value x"	""
+"Returns the value of Pi"	""
+"Returns true (1), if at least one of both x and y is true (i.e. not 0)"	""
+"Returns true (1), if both x and y are true (i.e. not 0)"	""
+"Returns true (1), if x equals y, else false (0)"	""
+"Returns true (1), if x is greater than y, else false (0)"	""
+"Returns true (1), if x is less than y, else false (0)"	""
+"Returns x raised to the power of y"	""
+"Returns x, if condition c is true (i.e. not 0), else y"	""
+"Revert Palette"	"Reverter Paleta"
+"Rf"	"Rf"
+"Rho 8"	"Rho 8"
+"Ridge"	"Cume"
+"Ridge Detection Threshold"	"Limiar de detec��o de cume"
+"Ridge Level"	"N�vel de cume"
+"Right"	"Direita"
+"Right Image"	"Imagem direita"
+"Right [*]"	"Direita [*]"
+"Right [Del]"	"Direita [Del]"
+"Right [F4]"	"Direita [F4]"
+"Rill/Interrill Erosivity"	"Riacho/Entressulcos de erosividade"
+"RivFlow"	"RivFlow"
+"RivFlow."	"RivFlow."
+"River Heads"	"Rio principal"
+"River Mouths"	"Foz do rio"
+"Rn, number of rain days in timespan [-]"	"Rn, n�mero de dias de chuva no per�odo de tempo [-]"
+"Road Width"	"Largura de Estrada"
+"Roll Left [F4]"	"Rolar a Esquerda [F4]"
+"Roll Right[F3]"	"Rolar a direita [F3]"
+"Rook"	"Torre"
+"Rook's case"	"Caso de torre"
+"Rooke's case"	"Caso de torres"
+"Roots"	"Ra�zes"
+"Roots to Humus"	"Ra�zes para Humus"
+"Rotate"	"Girar"
+"Rotate X"	"Girar X"
+"Rotate Y"	"Girar Y"
+"Rotate Z"	"Girar Z"
+"Rotation"	"Rota��o"
+"Rotation Angle"	"�ngulo de rota��o"
+"Rotation X"	"Rota��o X"
+"Rotation Y"	"Rota��o Y"
+"Rotation Z"	"Rota��o Z"
+"Rotation angle [Degree]"	"�ngulo de rota��o [Grau]"
+"Rotation by Attribute"	"Rota��o por Atributo"
+"Roughness/Smoothness"	"Rugosidade/Lisura"
+"Route Soil along Channel Network"	"Percurso de solo ao longo da rede de canais"
+"Route soil loss along channel network to outlet"	"Rota de perda de solo ao longo da rede de canais para a sa�da"
+"Routing"	"Roteamento"
+"Routing Error"	"Erro de Roteamento"
+"Row Order"	"Ordem da Linha"
+"Rows"	"Linhas"
+"Run Once"	"Executar uma vez"
+"Run Tool"	"Executar ferramenta"
+"Running Average"	"M�dia de execu��es"
+"Running Script"	"Executando escript"
+"Runoff"	"Escoamento"
+"S, slope [rad]"	"S, inclina��o [rad]"
+"SAFETYFACTOR"	"FACTOR DE SEGURAN�A"
+"SAGA Colors"	"Cores do SAGA"
+"SAGA Grid Files (*.sgrd)|*.sgrd|All Files|*.*"	"Arquivos de grade do SAGA (*.sgrd)|*.sgrd|Todos os arquivos|*.*"
+"SAGA Help"	"SAGA Ajuda"
+"SAGA Parameter Files"	"Arquivos de Par�metros do SAGA"
+"SAGA Point Cloud Virtual Format (*.spcvf)"	"Formato virtual de Nuvem de pontos do SAGA (*.spcvf)"
+"SAGA Point Cloud Virtual Format Tile Info (*.spcvf_tile_info)"	"Nuvem de Pontos SAGA formato virtual de informa��es de grelha (*.spcvf_tile_info)"
+"SAGA Point Clouds"	"SAGA nuvens de pontos"
+"SAGA Projects"	"Projetos SAGA"
+"SAGA RGB"	"SAGA RGB"
+"SAGA RGB color"	"Cor SAGA RGB"
+"SAGA RGB to R,G,B"	"Saga RGB para R,G,B"
+"SAGA Tool Libraries"	"Bibliotecas de ferramentas do SAGA"
+"SAGA User Group Associaton (c) 2002"	"SAGA User Group Associaton (c) 2002"
+"SAGA User Group Associaton (c) 2002-2013"	"SAGA User Group Associaton (c) 2002-2013"
+"SAGA User Group Associaton (c) 2002-2014"	"SAGA User Group Associaton (c) 2002-2014"
+"SAGA User Group Associaton (c) 2008"	"SAGA User Group Associaton (c) 2008"
+"SAGA Wetness Index"	"�ndice de umidade SAGA"
+"SAGA: Print Map"	"SAGA: Imprimir Mapa"
+"SAGA\nSystem for Automated Geoscientific Analyses\nVersion 2.0"	""
+"SECTIONS"	"SE��ES"
+"SHALSTAB"	"SHALSTAB"
+"SIZE"	"TAMANHO"
+"SL, estimation of mean soil loss [kg]"	"SL, a estimativa de perda m�dia de solo [kg]"
+"SLOPE"	"DECLIVE"
+"SLc"	"SLC"
+"SLs"	"SLs"
+"SLz"	"SLZ"
+"SPCVF successfully created from %d dataset(s)."	"SPCVF criado com sucesso do conjunto de dados %d"
+"SPECIFIC"	"ESPEC�FICO"
+"SQL Statement"	"Declara��o SQL"
+"SQL Statment"	"Afirma��o SQL"
+"SQL execution failed"	"A execu��o do SQL falhou"
+"SRTM30 DEM Tiles (*.dem)|*.dem|All Files|*.*"	"Arquivos MDE SRTM30 (*.dem)|*.dem|Todos os arquivos|*.*"
+"ST, Percentage rock fragments on the soil surface [%]"	"ST, Porcentagem de fragmentos da rocha na superf�cie do solo [%]"
+"STDDEV"	"STDDEV"
+"STDDEVHI"	"STDDEVHI"
+"STDDEVLO"	"STDDEVLO"
+"STDDEV_HI"	"STDDEV_HI"
+"STDDEV_LO"	"STDDEV_LO"
+"STDDEV_MEAN"	"STDDEV_MEAN"
+"STL Files"	"Arquivos STL"
+"SUM"	"SOMA"
+"SVG - Scalable Vector Graphics Files (*.svg)"	"SVG - Scalable Vector Graphics Files (*.svg)"
+"SVG Interactive Map"	"Mapa interactivo SVG"
+"SVM"	"SVM"
+"SVM Classification"	"Classifica��o SVM"
+"SVM Type"	"Tipo SVM"
+"SVR Epsilon"	"SVR Epsilon"
+"Saddle"	"Saddle"
+"Sample Variogram"	"Variograma de amostra"
+"Sample from training population with or without replacement?"	"Amostra de treinamento da popula��o com ou sem substitui��o?"
+"Sample weights"	"Pesos amostrais"
+"Sample with Replacement"	"Amostra com substitui��o"
+"Samples"	"Amostras"
+"Samples in range"	"Amostras na faixa"
+"Samples per Tree"	"Amostras por �rvore"
+"Sand"	"Areia"
+"Sandy Clay"	"Arenoso Argiloso"
+"Sandy Clay Loam"	"Arenoso vermelho distr�fico"
+"Sandy Loam"	"Arenoso barrento"
+"Sat. lateral permeability"	"Sat. permeabilidade lateral"
+"Satellite Height [m]"	"Altura do sat�lite [m]"
+"Saturation overland flow [m/dt]"	"Fluxo de satura��o terrestre [m/dt]"
+"Saturation zone (WI > 1)"	"Zona de satura��o (WI > 1)"
+"Save"	"Salvar"
+"Save As Image"	"Salvar como Imagem"
+"Save Attributes as..."	"Salvar atributos como..."
+"Save Colors"	"Salvar cores"
+"Save Configuration"	"Salvar configura��o"
+"Save Georeference"	"Salvar georeferenciamento"
+"Save Georeference (world file)"	"Salvar georreferenciamento (arquivo mundo)"
+"Save Grid"	"Salvar grade"
+"Save Grid Statistics to Table"	"Salvar grade de estat�sticas como tabela"
+"Save Grid as Image..."	"Salvar grade como Imagem ..."
+"Save Headline"	"Salvar t�tulo"
+"Save History as Model"	"Salvar hist�rico como modelo"
+"Save KML file"	"Salvar arquivo KML"
+"Save Map as Image..."	"Salvar mapa como imagem ..."
+"Save Map to KMZ"	"Salvar Mapa para KMZ"
+"Save Modified Data"	"Salvar dados modificados"
+"Save Parameters"	"Salvar par�metros"
+"Save Point"	"Savar ponto"
+"Save Point Cloud"	"Salvar nuvem de ponto"
+"Save Project"	"Salvar projeto"
+"Save Project as..."	"Salvar projeto como..."
+"Save Settings"	"Salvar configura��es"
+"Save Shapes"	"Salvar Shapes"
+"Save Statistics to File..."	"Salvar estat�sticas para Arquivo ..."
+"Save TIN"	"Salvar TIN"
+"Save Table"	"Salvar tabela"
+"Save Table Header"	"Salvar cabe�alho da tabela"
+"Save Text"	"Salvar texto"
+"Save Tiles to Disk"	"Salvar arquivos para o disco"
+"Save To Memory Grid"	"Para economizar mem�ria de grade"
+"Save all"	"Salvar tudo"
+"Save as Image to Workspace"	"Salvar a imagem para a �rea de trabalho"
+"Save as Image when changed"	"Salvar a imagem quando alterada"
+"Save as Image..."	"Salvar como imagem..."
+"Save as KMZ..."	"Salvar como KMZ..."
+"Save as Tool Chain"	"Salvar como cadeia de ferramenta "
+"Save as..."	"Salvar como..."
+"Save changes?"	"Salvar altera��es?"
+"Save grid"	"Salvar grade"
+"Save point cloud"	"Salvar nuvem de ponto"
+"Save shapes"	"Salvar shapes"
+"Save table"	"Salvar tabela"
+"Save tiles to disk individually"	"Salvar arquivo para o disco individualmente"
+"Save to Clipboard"	"Salvar para �rea de transfer�ncia"
+"Save to Database..."	"Salvar a base de dados ..."
+"Save to File"	"Salvar em arquivo"
+"Save to File..."	"Salvar em arquivo ..."
+"Save to Path"	"Salvar para o caminho"
+"Save to Script File"	"Salvar em arquivo de Script"
+"Save to Workspace"	"Salvar para a �rea de trabalho"
+"Scalable Vector Graphics Files (*.svg)"	"Scalable Vector Graphics Files (*.svg)"
+"Scale"	"Escala"
+"Scale (Cells)"	"Escala (c�lulas)"
+"Scale 1 : "	"Escala 1: "
+"Scale Bar"	"Barra de escala"
+"Scale Factor"	"Fator de escala"
+"Scale Factor X"	"Fator de escala X"
+"Scale Factor Y"	"Fator de escala Y"
+"Scale Factor Z"	"Fator de escala Z"
+"Scale Point Size"	"Escala de tamanho de ponto"
+"Scale Radius (Cells)"	"Balan�o de raio (C�lulas)"
+"Scale Range"	"Faixa de escala"
+"Scale X"	"Escala X"
+"Scale Y"	"Escala Y"
+"Scale Z"	"Escala Z"
+"Scale factors"	"Fatores de escala"
+"Scaling"	"Escalamento / Dimensionamento"
+"Scaling Factor for Attribute Value"	"Fator de escala para o valor do atributo"
+"Scatterplot"	"Dispers�o"
+"Score"	"Ponto"
+"Screen"	"Tela"
+"Search Chip Size (Cells)"	"Pesquisa de tamanho de chip (C�lulas)"
+"Search Distance"	"Pesquisar dist�ncia"
+"Search Distance (Map Units)"	"Pesquisar dist�ncia (Mapa de unidades)"
+"Search Distance Increment"	"Pesquisar Incremento de dist�ncia"
+"Search Distance [Cells]"	"Pesquisar dist�ncia [c�lulas]"
+"Search Distance [km]"	"Pesquisar dist�ncia [km]"
+"Search Mode"	"Modo de pesquisa"
+"Search Options"	"Op��es de Pesquisa"
+"Search Radius"	"Busca por raio"
+"Search Range"	"Pesquisar Gama"
+"Search Result"	"Resultado da pesquisa"
+"Search Shape"	"Pesquisar shape"
+"Search chip size set to %d"	"Pesquisar tamanho do chip para %d"
+"Search distance given as number cells."	"Pesquisar dist�ncia dada como c�lulas num�ricas."
+"Search for Projects"	"Pesquisa de projetos"
+"Search for..."	"Procurar por..."
+"Search radius of kernel in cells."	"Pesquisar raio de n�cleo nas c�lulas."
+"Search text not found"	"Pesquisa de texto n�o encontrada"
+"Second Class"	"Segunda classe"
+"Second input grid"	"Segunda grade de entrada"
+"Secondary Name"	"Nome secund�rio"
+"Section"	"Se��o"
+"Sections"	"Se��es"
+"Sediment Balance"	"Balan�o de sedimento"
+"Sediment Balance Clay"	"Balan�o de sedimentos de argila"
+"Sediment Balance Sand"	"Balan�o de sedimentos de areia "
+"Sediment Balance Silt"	"Balan�o de sedimentos de silt"
+"Sediment Limited [%d], Transport Limited (SL = TC) [%d], Transport Limited (SL = G) [%d]"	"Sedimentos limitados [%d], transporte limitado (SL = TC) [%d], transporte limitado (SL = G) [%d]"
+"Sediment Yield Delivery Ratio"	"Raz�o de rendimentos de entrega de sedimentos "
+"Seed Generation"	"Gera��o de sementes"
+"Seed Points"	"Pontos de sementes"
+"Seed Type"	"Tipo de semente"
+"Seed Value"	"Valor de sementes"
+"Seeded Region Growing"	"Regi�o de crescimento de sementes"
+"Seeds"	"Sementes"
+"Seeds Grid"	"Semear grade"
+"Seeds Only"	"Apenas sementes"
+"Segment ID"	"ID de segmento"
+"Segmentation"	"Segmenta��o"
+"Segments"	"Segmentos"
+"Select * FROM test"	"Select * FROM teste"
+"Select All"	"Selecionar tudo"
+"Select File"	"Selecionar o arquivo"
+"Select Format"	"Selecionar formato"
+"Select Grid from List"	"Selecionar grade a partir da lista"
+"Select Look-up Table for Grid Visualization"	"Selecionar tabela de consulta para a grade de visualiza��o"
+"Select Points"	"Selecionar pontos"
+"Select Precipitation Column"	"Selecionar coluna de precipita��o"
+"Select Startup Project"	"Selecionar projeto de inicializa��o"
+"Select Temperature Column"	"Selecionar coluna de temperatura"
+"Select a layer to copy settings from it."	"Selecionar uma camada para copiar as configura��es a partir dela."
+"Select a mode of operation"	"Selecionar um modo de opera��o"
+"Select an input table and at least one output feature!"	"Selecionar uma tabela de entrada e pelo menos uma fei��o de sa�da!"
+"Select at least one output feature!"	"Selecionar pelo menos uma fei��o de sa�da!"
+"Select by Attributes... (Numerical Expression)"	"Sele��o por atributos ... (Express�o num�rica)"
+"Select by Attributes... (String Expression)"	"Sele��o por atributos ... (String Expression)"
+"Select by Location..."	"Sele��o por localiza��o ..."
+"Select by Numerical Expression"	"Selecionar por express�o num�rica"
+"Select by String Expression"	"Sele��o por string de express�o"
+"Select class identifier"	"Escolha um identificador de classe"
+"Select file"	"Selecionar arquivo"
+"Select from Multiple Bands"	"Selecionar a partir de v�rias bandas"
+"Select from Subdatasets..."	"Selecionar a partir de Subconjunto de dados ..."
+"Select if..."	"Selecionar se ..."
+"Select operator: eg. min < value < max."	"Escolha um operador: por exemplo. min < valor < max."
+"Select shapes that fulfil this condition"	"Selecionar shapes que cumprem esta condi��o"
+"Select the Column containing Discharge Values"	"Selecionar a coluna que cont�m os valores de descarga"
+"Select the Column containing Temperature Values"	"Selecionar a coluna que cont�m os valores de temperatura"
+"Select the Column containing precipitation Values"	"Selecionar a coluna que cont�m os valores de precipita��o"
+"Select the column containing inflow data to the subbasin"	"Selecionar a coluna que cont�m dados de influxo para a sub-bacia"
+"Select the column containing the Date"	"Selecionar a coluna que cont�m a data"
+"Select the column containing the observed streamflow time series"	"Selecionar a coluna que cont�m a s�rie observada no tempo de vaz�o"
+"Select the desired method: 1. a single value or a range defined by a single value is reclassified, 2. a range of values is reclassified, 3. the lookup table is used to reclassify the grid."	"Selecionar o m�todo desejado: 1. um �nico valor ou uma gama definida por um �nico valor � reclassificado, 2. um intervalo de valores � reclassificado, 3. a tabela de refer�ncia � usada para reclassificar a grade."
+"Select the desired operator (<;.;=; >;.); it is possible to define a range above or below the old value."	"Selecionar o operador desejado (<;.; =;> ;.); � poss�vel definir um intervalo acima ou abaixo do valor antigo."
+"Select the desired operator (min < value < max; min . value < max; min .value . max; min < value . max)."	"Selecionar o operador desejado (min < value < max; min . value < max; min .value . max; min < value . max)."
+"Select the features that should be used as the OUTPUT features."	"Selecionar as fun��es que devem ser usadas como as caracter�sticas de SA�DA."
+"Select training areas"	"Selecionar �reas de treinamento"
+"Select training output features"	"Selecionar fei��es de sa�da de treinamento"
+"Selection"	"Sele��o"
+"Selection Color"	"Sele��o de Cores"
+"Selection Method"	"M�todo de sele��o"
+"Semimajor Axis (a)"	"Semi-eixo (a)"
+"Semimajor Axis and Eccentricity"	"Semi-eixo e excentricidade"
+"Semimajor Axis and Eccentricity Squared"	"Semi-eixo e excentricidade esquadriada"
+"Semimajor Axis and Flattening"	"Semi-eixo e achatamento"
+"Semimajor Axis and Reciprocal Flattening"	"Semi-eixo e achatamento rec�proco"
+"Semimajor Axis and Semiminor Axis"	"Semi-eixo e eixo semiminor"
+"Semimajor axis or equatorial radius."	"Semi-eixo maior ou raio equatorial."
+"Semiminor Axis (b)"	"Eixo semi-menor (b)"
+"Semiminor axis or polar radius."	"Semi-eixo menor ou raio polar."
+"Semivariance"	"Semivari�ncia"
+"Sensitivity"	"Sensibilidade"
+"Sensor"	"Sensor"
+"Separate Line/Polygon Points"	"Separar pol�gono/linhade pontos"
+"Separate by..."	"Separado por ..."
+"Separate points by direction"	"Pontos separados por dire��o"
+"Separator"	"Separador"
+"Separator (other)"	"Separador (outro)"
+"Seperate Beruecksichtigung und Berechnung ueber Hauptgerinnerasterzellen - neben den normalen Gerinnerasterzellen."	"Separe Beruecksichtigung und Berechnung ueber Hauptgerinnerasterzellen - neben den normalen Gerinnerasterzellen."
+"September"	"setembro"
+"Sequencer"	"Sequ�ncia"
+"Sequencer Positions"	"Posi��es de sequ�ncia"
+"Server"	"Servidor"
+"Server Connection"	"Conex�o do Servidor"
+"Set Coordinate Reference System"	"Definir o Sistema de Coordenadas de Refer�ncia"
+"Set Custom NoData"	"Ajuste personalizado Sem-dados"
+"Set Range to Minmum/Maximum"	"Definir intervalo para minimo/M�ximo"
+"Set Range to Standard Deviation (1.5)"	"Definir faixa de desvio padr�o (1,5)"
+"Set Range to Standard Deviation (2.0)"	"Definir faixa de desvio padr�o (2,0)"
+"Set \'false\' to execute the calculation for each point in grid. Set \'true\' tu calculate the flow of one single cell."	"Definir \'false\' para executar o c�lculo para cada ponto na grade. Definir \'true\' para calcular o fluxo de uma �nica c�lula."
+"Set extent by"	"Definir extens�o por"
+"Set grid extent to grid cells (pixel as area), to grid nodes (pixel as point) or align to grid system."	"Definir ponto de grade para c�lulas da grade de pixels (como �rea), para n�s da grade de pixel (ponto) ou como alinhar ao sistema da grade."
+"Set selected values to no data."	"Definir valores selecionados para sem-dados."
+"Set true if you want multipart polygons to become separate polygons."	"Definir verdade, se voc� quiser pol�gonos de v�rias vias para tornar-se pol�gonos separados."
+"Settings"	"Configura��es"
+"Shade"	"Sombra"
+"Shade Brightness"	"Sombra Brilho"
+"Shade Brightness [%]"	"Sombra Brilho [%]"
+"Shade Transparency [%]"	"Sombra Transpar�ncia [%]"
+"Shading"	"Sombreamento"
+"Shading Method"	"M�todo de sombreamento"
+"Shadow"	"Sombra"
+"Shall I activate file caching for new grid."	"Devo ativar o cache de arquivos para nova grade."
+"Shall execution be stopped?"	"A execu��o deve ser interrompido?"
+"Shape"	"Shape"
+"Shape Index"	"�ndice de shape"
+"Shape Layers"	""
+"Shape Parameter for Elevation Percentile"	"Shape de par�metros para percentil de eleva��o"
+"Shape Parameter for Slope"	"Par�metros de declive do shape"
+"Shape Type"	"Tipo de shape"
+"Shape Type Manager"	"Gerenciador de tipo de shape"
+"Shape file could not be opened."	"Arquivo de shape n�o p�de ser aberto."
+"Shape type to generate."	"Tipo de shape a gerar."
+"Shape(s)"	"Shape(s)"
+"Shape(s) to fit extent to"	"Shape(s) para se ajustar � medida"
+"Shapefile describing the AOI."	"Shapefile descrevendo a AOI."
+"Shapes"	"Shapes"
+"Shapes Buffer"	"Buffer de shape"
+"Shapes Extent"	"Extens�o dos Shapes"
+"Shapes Layers"	"Camadas de shapes"
+"Shapes Manager"	"Gerenciador de shapes"
+"Shapes Report"	"Relat�rio de shapes"
+"Shapes Summary Report"	"Relat�rio Resumido de shapes"
+"Shapes View Settings"	"Ver defini��es de shapes"
+"Shapes list"	"Listar shapes"
+"Shapes to Grid"	"Shapes para grade"
+"Shapes to Select From"	"Shapes para selecionar de"
+"Shapes to TIN"	"Shapes para TIN"
+"Shapes to project"	"Proje��o de shapes"
+"Shapes with Text Replacements"	"Shapes com substitui��es de texto"
+"Shapes|Export"	"Shapes|Exportar"
+"Shapes|Grid"	"Shapes|Grade"
+"Shapes|Import"	"Shapes|Importar"
+"Shapes|Lines"	"Shapes|Linhas"
+"Shapes|Lines|Transects"	"Shapes|Linhas|Transectos"
+"Shapes|Point Clouds"	"Shapes|Nuvens de pontos"
+"Shapes|Points"	"Shapes|Pontos"
+"Shapes|Polygons"	"Shapes|Pol�gono"
+"Shapes|Tools"	"Shapes|Ferramentas"
+"Shared Polygon Edges"	"Bordas de pol�gonos compartilhadas"
+"Sharpen"	"Agu�ar"
+"Sharpened Channels"	"Canais afinados"
+"Sharpening"	"Afina��o"
+"Shear factors"	"Fatores de cisalhamento"
+"Shearing"	"Cisalhamento"
+"Shen-Castan"	"Shen-Castan"
+"Shift"	"Deslocamento"
+"Shift X"	"Deslocamento X"
+"Shift Y"	"Deslocamento Y"
+"Shift Z"	"Deslocamento Z"
+"Shift value"	"Valor de deslocamento"
+"Short Dashed"	"Tracejado curto"
+"Short Field Names"	"Nomes curtos de campo"
+"Short Wave Radiation [kW/m2]"	"Ondas curtas de radia��o [kW/m2]"
+"Short dashed style"	"Estilo curto frustrados"
+"Should the output shapes contain the centers of the border pixels instead of the corners?"	"Os shapes de sa�da devem conter os centros dos pixels como fronteira, em vez dos cantos?"
+"Shoulder Hollow"	"Cavidade ressaltada"
+"Shoulder Slope"	"Declive ressaltado"
+"Shoulder Spur"	"Espor�o ressaltado"
+"Show"	"Exibir"
+"Show 3D-View"	"Exibir visualiza��o 3D"
+"Show Categories"	"Mostrar categorias"
+"Show Cell Values"	"Mostrar valores de c�lulas"
+"Show Centroid"	"Mostrar Centroide"
+"Show Data File Sources"	"Exibir arquivo de fontes de dados"
+"Show Data Source Window"	"Mostrar janela de fonte de dados"
+"Show Edges"	"Mostrar arestas"
+"Show Filled"	"Mostrar preenchido"
+"Show Horizontal Legend"	"Mostrar legenda horizontal"
+"Show Layer"	"Mostrar camada"
+"Show Legend"	"Mostrar legenda"
+"Show Logo at Start Up"	"Mostrar logo no arranque"
+"Show Manager Window"	"Mostrar janela do gerenciador"
+"Show Map"	"Visualizar mapa"
+"Show Message Window"	"Mostrar janela de mensagens"
+"Show Nodes"	"Mostrar n�s"
+"Show Object Properties Window"	"Mostrar janela de propriedades do objeto"
+"Show Print Layout"	"Mostrar Layout de impress�o"
+"Show Progress"	"Mostrar progresso"
+"Show Regression"	"Mostrar regress�o"
+"Show Result in Dialog"	"Mostrar resultados em di�logo"
+"Show Results"	"Mostrar resultados"
+"Show Scale"	"Mostrar escala"
+"Show Scale Bar"	"Mostrar barra de escala"
+"Show Selection"	"Exibir sele��o"
+"Show Toolbar"	"Mostrar barra de ferramentas"
+"Show Vertical Legend"	"Mostrar legenda vertical"
+"Show Vertices"	"Mostrar v�rtices"
+"Show a Composite"	"Mostrar um compositor"
+"Show at all scales"	"Mostrar em todas as escalas"
+"Show data sources tab for file system. Disabling might speed up start-up. Changes take effect after restart."	"Exibir fontes de dados guia para o sistema de arquivos. A desativa��o pode acelerar a inicializa��o. As altera��es t�m efeito ap�s o rein�cio do SAGA."
+"Shrink"	"Encolher"
+"Shrink and Expand"	"Encolher e expandir"
+"Shrinking"	"Escolhendo"
+"Sibson"	"Sibson"
+"Side Slope"	"Lado de declive"
+"Sieved Classes"	"Classes peneiradas"
+"Sieving Classes"	"Classes de peneiramento"
+"Sigma"	"Sigma"
+"Sigmoid"	"Sigm�ide"
+"Significance Level"	"N�vel de signific�ncia"
+"Significance level (aka p-value) as threshold for automated predictor selection, given as percentage"	"O n�vel de signific�ncia (aka p-valor) como limite para a sele��o do preditor automatizado, dada como percentual"
+"Silt"	"Silt"
+"Silt Loam"	"Silt barro"
+"Silty Clay"	"Argila siltosa"
+"Silty Clay Loam"	"Silt vermelho distr�fico"
+"Similarity"	"Semelhan�a"
+"Similarity Threshold"	"Limiar de similaridade"
+"Simple"	"Simples"
+"Simple Filter"	"Filtro simples"
+"Simple Filter within shapes"	""
+"Simple Kriging"	"Krigagem simples"
+"Simple, flow path and swath profiles."	"Simpes, caminho de fluxo e perfis de faixa."
+"Simplified Lines"	"Linhas simplificadas"
+"Simplify Lines"	"Simplificar linhas"
+"Simulaci�n (Viento variable)"	"Simula��o (varia��o de vento)"
+"Simulando..."	"Simulando ..."
+"Simulate Interflow"	"Simular interfluxo"
+"Simulate interflow"	"Simular interfluxo"
+"Simulating..."	"Simulando ..."
+"Simulation"	"Simula��o"
+"Simulation Output"	"Sa�da de simula��o"
+"Simulation Time"	"Simula��o de tempo"
+"Simulation Time Step [h]"	"Simula��o de tempo por asso [h]"
+"Simulation Time [h]"	"Simula��o de hora [h]"
+"Simulation Time [kyr]"	"Simula��o de tempo [kyr]"
+"Simulation|Cellular Automata"	"Simula��o|Aut�matos celulares"
+"Simulation|Ecology|Modelling the Human Impact on Nature"	"Simula��o|Ecologia|Modelo de impacto humano sobre a natureza"
+"Simulation|Erosion"	"Simula��o|Eros�o"
+"Simulation|Fire Spreading"	"Simula��o|Espalhamento de fogo"
+"Simulation|Hydrology"	"Simula��o|Hidrologia"
+"Simulation|Hydrology|IHACRES"	"Simula��o|Hidrologia|IHACRES"
+"Simulation|Hydrology|RivFlow"	"Simula��o|Hidrologia|Fluxo de rio"
+"Simulation|Quantitative Modeling of Earth Surface Processes"	"Simula��o|Modelagem quantitativa dos processos de superf�cie da terra"
+"Sine"	""
+"Single Cell"	"C�lula �nica"
+"Single Colour"	"Cor �nica"
+"Single Flow Direction"	"Dire��o de fluxo �nico"
+"Single Storage"	"Armazenamento �nico"
+"Single Symbol"	"S�mbolo �nico"
+"Single Value Decomposition (OpenCV)"	"Valor individual de decomposi��o (OpenCV)"
+"Single value"	"Valor �nico"
+"Sink Drainage Route Detection"	"Detec��o de rota de dissipa��o de drenagem"
+"Sink Removal"	"Remo��o dissipador"
+"Sink Route"	"Rota de dissipa��o"
+"Sink Routes"	"Rotas de dissipa��o"
+"Sinks"	"Dissipadores"
+"Sinuosity"	"Sinuosidade"
+"Sinusoidal"	"Sinusoidal"
+"Size"	"Tamanho"
+"Size Range"	"Faixa de tamanho"
+"Size Scaling"	"Escalamento de tamanho"
+"Size by Attribute"	"Tamanho por atributo"
+"Size field"	"Campo de tamanho"
+"Size given as percentage of map size"	"Tamanho dado como percentagem do tamanho do mapa"
+"Size of Analysis Window"	"Tamanho da janela de an�lise"
+"Size of processing window (= 1 + 2 * radius) given as number of cells"	"Tamanho da janela de processamento (= 1 + 2 * raio) dado como n�mero de c�lulas"
+"Size of smoothing filter"	"Tamanho do filtro de suaviza��o"
+"Size relates to..."	"Tamanho refere-se a ..."
+"Skeleton"	"Esqueleto"
+"Skip"	"Pular"
+"Skip Lines"	"Pular linhas"
+"Skip Number"	"Pular n�mero"
+"Skip cells (step value)."	"Pular c�lulas (valor da etapa)."
+"Skip first line"	"Pular primeira linha"
+"Skip first line as it contains column names."	"Pular primeira linha, j� que cont�m os nomes das colunas."
+"Skipping dataset %s because of incompatibility with the first input dataset!"	"Ignorando conjunto de dados %s por causa de incompatibilidade com o primeiro conjunto de dados de entrada!"
+"Sky View Factor"	"Fator de visualiza��o do c�u"
+"Sky View Factor (Simplified)"	"Fator de visualiza��o do c�u (simplificado)"
+"Slope"	"Declive"
+"Slope Grid Units"	"Unidades de inclina��o da grade"
+"Slope Height"	"Altura de declive"
+"Slope Index"	"�ndice de declive"
+"Slope Length"	"Comprimento de declive"
+"Slope Limited Flow Accumulation"	"Declive limitado pela acumula��o do fluxo"
+"Slope Minimum"	"Inclina��o m�nima"
+"Slope Stability"	"Estabilidade de taludes"
+"Slope Threshold"	"Limiar de declive"
+"Slope Thresholds [Degree]"	"Limites de inclina��o [Grau]"
+"Slope Tolerance"	"Toler�ncia de declive"
+"Slope Units"	"Unidades de declive"
+"Slope Weighting"	"Pondera��o de declive"
+"Slope gradient to left neighbour [%%]"	"Declividade ao vizinho esquerdo[%%]"
+"Slope gradient to left neighbour [Degree]"	"Declividade ao vizinho esquerdo[Grau]"
+"Slope grid, in radians."	"Grade de declive, em radianos."
+"Slope of Soil Line"	"Inclina��o da linha do solo"
+"Slope threshold, given as degree, above which flow transport is unlimited."	"Limiar de declive, dado como grau, acima do qual o transporte de fluxo � ilimitado."
+"Slope tolerance that defines a 'flat' surface (degrees)"	"Toler�ncia de declive que define uma superf�cie de 'plano' (graus)"
+"Slope, Aspect, Curvature"	"Declive, Aspecto, Curvatura"
+"Slopes"	"Encostas"
+"Smith"	"Smith"
+"Smooth"	"Suave"
+"Smoothed Lines"	"Linhas suavizadas"
+"Smoothing (ViGrA)"	"Suaviza��o (ViGrA)"
+"Snap Distance"	"Dist�ncia de encaixe"
+"Snap Features"	"Encaixe de fei��es"
+"Snap Points to Grid"	"Encaixe de Pontos para a grade"
+"Snap Points to Lines"	"Encaixe de pontos para linhas"
+"Snap Points to Points"	"Encaixe de pontos para pontos"
+"Snap to..."	"Atrair � ..."
+"Snow Module Parameters"	"Par�metros de m�dulo de neve"
+"Snow Module on/off"	"M�dulo de Neve on/off"
+"Soil"	"Solo"
+"Soil Adjusted Vegetation Index"	"�ndice de ajuste de vegeta��o do solo"
+"Soil Adjustment Factor"	"Fator de Ajuste do solo"
+"Soil Moisture"	"Umidade do solo"
+"Soil Moisture Content"	"Conteudo de mistura do solo"
+"Soil Moisture Deficit"	"Deficit de umidade do solo"
+"Soil Moisture Power Eq."	"Equa��o de inicializa��o de umidade do solo"
+"Soil Nitrogen"	"Nitrog�nio do solo"
+"Soil Texture"	"Textura do solo"
+"Soil Texture Classification"	"Classifica��o de textura dos solos"
+"Soil Texture Classification for Tables"	"Classifica��o de textura de solos por tabelas"
+"Soil Water"	"�gua solo"
+"Soil moisture (at FC)"	"Umidade do solo (em FC)"
+"Soil moisture index (l)"	"�ndice de umidade do solo (l)"
+"Soil moisture index (l) [lower bound]"	"�ndice de umidade do solo (l) [limite inferior]"
+"Soil moisture index (l) [upper bound]"	"�ndice de umidade do solo (l) [limite superior]"
+"Soil moisture index threshold"	"Limiar do �ndice de umidade do solo"
+"Soil moisture index threshold (l), lower bound"	"Limiar do �ndice de umidade do solo (l), limite inferior"
+"Soil moisture index threshold (l), upper bound"	"Limiar do �ndice de umidade do solo (l), limite superior"
+"Soil moisture storage capacity"	"Capacidade de armazenamento de humidade do solo"
+"Soil parameters"	"Par�metros do solo"
+"Solar Constant [W / m\xb2]"	""
+"Solar Height"	"Altura solar"
+"Solar Position"	"Posi��o solar"
+"Solar Radiance"	"Radi�ncia solar"
+"Solar Radiation"	"Radia��o solar"
+"Solid"	"S�lido"
+"Solid style"	"Estilo s�lido"
+"Some Grid Analysis Tools."	"Algumas ferramentas de an�lise de grades."
+"Some OGR drivers are unable to determine the geometry type automatically, please choose the appropriate one in this case"	"Alguns controladores OGR s�o incapazes de determinar o tipo de geometria automaticamente, por favor escolha o mais adequado neste caso"
+"Sommergerste"	"Sommergerste"
+"Sort"	"Ordenar"
+"Sort Fields"	"Classificar campos"
+"Sort Table"	"Classificar tabela"
+"Sort first by"	"Classificar a primeira vez por"
+"Sort second by"	"Ordenar por segundo"
+"Sort third by"	"Ordenar por terceiro"
+"Sorted Levels"	"N�veis de ordenamento"
+"Sorting Order"	"Classificando ordem"
+"Source"	"Fonte"
+"Source Coordinate System Error"	"Erro de sistema de coordenada fonte"
+"Source Coordinate System Type Error"	"Erro de sistema de tipo de fonte deoordenada"
+"Source Datum"	"Datum fonte"
+"Source Datum Error"	"Erro no datum fonte"
+"Source Grid"	"Grade fonte"
+"Source Parameter List Initialisation Error"	"Lista fonte de par�metros de inicializa��o de erro"
+"Source Parameters"	"Par�metros de origem"
+"Source Point(s)"	"Ponto (s) fonte"
+"Source Projection"	"Proje��o fonte"
+"Source Projection Error"	"Erro de proje��o de origem "
+"Source Projection Parameters"	"Par�metros de proje��o fonte"
+"South"	"Sul"
+"South []"	"Sul []"
+"South-North"	"Sul-Norte"
+"Spacecraft Sensor"	"Sensor da nave espacial"
+"Spatial Point Pattern Analysis"	"An�lise de padr�es de ponto espacial"
+"Spatial Reference"	"Refer�ncia Espacial"
+"Spatial Reference System Files (*.srs)"	"Sistema de arquivos de refer�ncia espacial (*.srs)"
+"Spatial Reference System: %s"	"Sistema de refer�ncia espacial: %s"
+"Spatial and Geostatistics"	"Espacial e geoestat�stica"
+"Spatial and Geostatistics|Grids"	"Espacial e geoestat�stica|Grades"
+"Spatial and Geostatistics|Kriging"	"Espacial e geoestat�stica|Kringagem"
+"Spatial and Geostatistics|Points"	"Espacial e geoestat�stica|Pontos"
+"Spatial and Geostatistics|Regression"	"Espacial e geoestat�stica| Regress�o"
+"Spatial and geostatistical analyses of point data."	"An�lises espaciais e geoestat�stica de dados de ponto."
+"Special cases"	"Casos especiais"
+"Specific Catchment Area"	"�rea de capta��o espec�fica"
+"Specific Catchment Area (SCA)"	"�rea de capta��o espec�fica (CEC)"
+"Specification"	"Especifica��o"
+"Specifie options used for the training and test data."	"Op��es utilizadas para os dados de treinamento e teste."
+"Specifies stratification strategy. Either none, equal amount of class samples, or proportional to fraction of class samples."	"Especificar a estrat�gia de estratifica��o. Ou nenhuma, igual a quantidade de amostras de classes, ou proporcional � fra��o das amostras de classe."
+"Specifies the fraction of the total number of samples used per tree for learning."	"Especificar a frac��o do n�mero total de amostras usadas por �rvore para a aprendizagem."
+"Specify a threshold value as minimum difference between neighboured segments."	"Especificar um valor limiar de diferen�a m�nima entre os segmentos de vizinhan�a."
+"Spectral"	"Espectral"
+"Spectral Angle Mapping"	"Mapeamento de �ngulo espectral"
+"Spectral Angle Threshold (Degree)"	"Limiar de �ngulo espectral (Grau)"
+"Spectral Information Divergence"	"Diverg�ncia de informa��o espectral"
+"Speed (m/s)"	"Velocidade (m/s)"
+"Speicherordner"	"Pasta de armazenamento"
+"Speicherpfad der dynamischen Wassernutzungsdaten"	"Salvar caminho de dados din�micamente do uso da �gua"
+"Spherical Harmonic Synthesis"	"S�ntese harm�nica esf�rica"
+"Spline"	"Estriamento"
+"Spline Interpolation"	"interpola��o estriada"
+"Spline sensitivity, reduce to get smoother results, recommended: 80 < Tolerance < 200"	"Sensibilidade estriada, reduzir para obter resultados mais suaves, recomendada: 80 < Toler�ncia < 200"
+"Split Channels"	"Canais divididos"
+"Split Features"	"Fei��es de divis�o"
+"Split Lines at Points"	"Linhas divididas em pontos"
+"Split Lines with Lines"	"Linhas de divis�o com linhas"
+"Split Parts"	"Dividir Partes"
+"Split Polygon Parts"	"Partes de divis�o de Pol�gono"
+"Split RGB Composite"	"Dividir composi��o RGB"
+"Split Shapes Layer"	"Dividir camada de Shapes"
+"Split Shapes Layer Completely"	"Dividir camada Shapes completamente"
+"Split Shapes Layer Randomly"	"Dividir camada Shapes aleatoriamente"
+"Split Table/Shapes by Attribute"	"Dividir tabela/shapes por atributo"
+"Split with Line"	"Dividir com a linha"
+"Splitted"	"Dividido"
+"Spring"	"Primavera"
+"Spur"	"Espor�o"
+"Square"	"Quadrado"
+"Square Root"	""
+"Squared Correlation Coefficient"	"Coeficiente de correla��o ao quadrado"
+"Squared Eccentricity (es)"	"Excentricidade quadrada (es)"
+"Squares"	"Quadrados"
+"Stability"	"Estabilidade"
+"Standard"	"Padr�o"
+"Standard (max. 90Degree)"	"Padr�o (m�x. 90 graus)"
+"Standard Deviation"	"Desvio padr�o"
+"Standard Deviation (Percent of Radius)"	"Desvio padr�o (percentual de raios)"
+"Standard Distance"	"Dist�ncia padr�o"
+"Standard Longitude"	"Longitude padr�o"
+"Standard Parallel"	"Paralelo padr�o"
+"Standard Score"	"Pontua��o padr�o"
+"Standard deviation"	"Desvio padr�o"
+"Standard deviation of the Gaussian filter [-]."	"Desvio padr�o do filtro de Gaussian [-]."
+"Standard kernel 3"	"N�cleo padr�o 3"
+"Standardisation"	"Padroniza��o"
+"Standardised Grid"	"Grade padronizada"
+"Standardize"	"Estandardizar"
+"Standardized Height"	"Altura padronizada "
+"Start Degree"	"Grau inicial"
+"Start Latitude"	"Latitude Inicial"
+"Start Longitude"	"Longitude inicial"
+"Start Size"	"Tamanho inicial"
+"Start Value"	"Valor inicial"
+"Start Values"	"Valores iniciais"
+"Start [ka]"	"Iniciar [ka]"
+"Starting flood fill..."	"Iniciar a partir do preenchimento de inunda��o ..."
+"Startup Project"	"Projeto de inicializa��o"
+"State t"	"Estado t"
+"State t + 1"	"Estado t + 1"
+"Static table"	"Tabela est�tica"
+"Statistics"	"Estat�sticas"
+"Statistics for Grids"	"Estat�sticas para grades"
+"Std.Dev."	"Std.Dev."
+"StdDev"	"StdDev"
+"Steepened escarpment"	"Escarpa acentuada"
+"Steepest gradient (first version)"	"Gradiente mais �ngreme (primeira vers�o)"
+"Steepest gradient (second version)"	"Gradiente mais �ngreme (segunda vers�o)"
+"Stems"	"Caules"
+"Stems to Litter"	"Caules para lixo"
+"Step"	"Passo"
+"Step 1: low-pass of stripe"	"Passo 1: passa-baixo de banda"
+"Step 2: low-pass between stripe and its surruondings"	"Passo 2: passa-baixa entre banda e seus surruondings"
+"Step [ka]"	"Passo [ka]"
+"Steps"	"Etapas"
+"Steps to Next"	"Proximos passos"
+"Stepwidth"	"Largura do passo"
+"Stereo Anaglyph"	"Anaglifo estereo"
+"Stereo Eye Distance [Degree]"	"Dist�ncia est�rea de vis�o [Grau]"
+"Stereo Match (OpenCV)"	"Cabine est�rea (OpenCV)"
+"Stereographic"	"Estereogr�fica"
+"Stop [ka]"	"Parar [ka]"
+"Stop at Edge"	"Parar na borda"
+"Stop on Error"	"Parar em erro"
+"Storage"	"Armazenamento"
+"Storage Configuration"	"Configura��o de Armazenamento"
+"Store Model to File"	"Loja do modelo para arquivo"
+"Strahler Order"	"Ordenar por strahler"
+"Strahler order to begin a channel."	"Ordem Strahler para come�ar um canal."
+"Stratification"	"Estratifica��o"
+"Stream Order"	"Ordem de c�rrego"
+"Stream Power Index"	"�ndice de energia corrente"
+"Streamflow (obs.) Column"	"Coluna de vaz�o (obs.)"
+"Streamflow Column"	"Coluna de vaz�o"
+"Streams"	"Fluxo"
+"Strength of the momentum term (the difference between weights on the 2 previous iterations). This parameter provides some inertia to smooth the random fluctuations of the weights. It can vary from 0 (the feature is disabled) to 1 and beyond. The value 0.1 or so is good enough."	"For�ar termo din�mico (a diferen�a entre os pesos das 2 itera��es anteriores). Este par�metro proporciona uma certa in�rcia para suavizar as flutua��es aleat�rias dos pesos. Ela pode variar de 0 (o recurso est�  [...]
+"Strength of the weight gradient term. The recommended value is about 0.1."	"For�ar o termo de gradiente de peso. O valor recomendado � cerca de 0,1."
+"Stretch Factor"	"Fator de alongamento"
+"Stretch to Value Range"	"Alongar para Intervalo de valores"
+"Strings in Quota"	"Strings na cota"
+"Stripes distance"	"Dist�ncia de listras"
+"Style"	"Estilo"
+"Subbasin "	"Sub-bacia "
+"Subbasin Flow Distance"	" Dist�ncia de fluxo de sub-bacia"
+"Subbasin Inflow"	"Afluxo de sub-bacia"
+"Subbasins"	"Sub-bacias"
+"Subdued escarpment"	"Escarpa subjugada"
+"Subsurface flow [m/dt]"	"Escoamento subsuperficial [m / dt]"
+"Subtitle"	"Legenda"
+"Subtract Volumes Below Base Level"	"Subtrair volumes abaixo do n�vel base "
+"Subtraction"	"Subtra��o"
+"Successfully trained the network and predicted the values. Here comes the output."	"Treinado com sucesso a rede e previu os valores. A� vem a sa�da."
+"Successive Flow Routing"	"Fluxo de roteamento sucessivo"
+"Suction"	"Suc��o"
+"Sudoku"	"Sudoku"
+"Sum"	"Soma"
+"Sum of percentages"	"Soma das porcentagens"
+"Summary"	"Resumo"
+"Summary Table"	"Tabela resumo"
+"Summary table."	"Tabela de resumo."
+"Summary:\n"	""
+"Summary_"	"Resumo_"
+"Sun's height above horizon in degree"	"Altura do sol acima do horizonte em grau"
+"Sunrise"	"Nascer do sol"
+"Sunrise and Sunset"	"Nascer do sol e p�r do sol"
+"Suns's Height"	"Altura do sol"
+"Sunset"	"P�r do sol"
+"Supervised Classification for Grids"	"Classifica��o supervisionado para grades"
+"Supervised Classification for Shapes"	"Classifica��o supervisionado para shapes"
+"Supervised Classification for Tables"	"Classifica��o supervisionada para tabelas"
+"Support Vector Machine"	"Suporte para m�quina vetorial"
+"Surface"	"Superf�cie"
+"Surface Approximation Threshold"	""
+"Surface Area"	"�rea da superf�cie"
+"Surface Specific Points"	"Pontos espec�ficos da superf�cie"
+"Surface and Gradient"	""
+"Surface hydraulic conductivity [m/h]"	"Condutividade hidr�ulica da superf�cie [m / h]"
+"Surface roughness"	"Rigidez da superf�cie"
+"Surface used to derive the LDD network, e.g. a DTM."	"Superf�cie utilizada para obter a rede LDD, por exemplo, uma DTM."
+"Surface, Gradient and Concentration"	""
+"Surfer Blanking Files (*.bln)"	"Arquivos de branqueamento de surfer (*.bln)"
+"Surfer Blanking Files (*.bln)|*.bln|All Files|*.*"	"Arquivos de branqueamento de surfer (*.bln)|*.bln|Todos os arquivos|*.*"
+"Surfer Grid (*.grd)|*.grd|All Files|*.*"	"Grade de surfista (*.grd)|*.grd|Todos os arquivos|*.*"
+"Surfer's No Data Value"	"Sem Valor de dados do surfista"
+"Swath Profile"	"Perfil de faixa"
+"Swath Width"	"Largura de Faixa"
+"Swath width measured in map units."	"Largura de faixa medido em unidades do mapa."
+"Sweep Angle"	"Varrer �ngulo"
+"Switch from MFD8 to D8 if linear flow threshold is crossed."	"Mudar de MFD8 para D8 se o limiar de fluxo linear � atravessada."
+"Switch to Linear Flow"	"Mudar para fluxo linear"
+"Symbol Image"	"S�mbolo de imagem"
+"Symbol Type"	"Tipo de s�mbolo"
+"Symbolic Image"	"Imagem simb�lica"
+"Symmetrical Difference"	"Diferen�a sim�trica"
+"Synchronise Map Extents"	"Sincronizar extens�es de mapa"
+"Synchronize Map Extents"	"Sincronizar extens�es de mapa"
+"Syntax error at position #%d: \n%s\n"	""
+"Synthesized Grid"	"Grade sintetizada"
+"T Curvature"	"Curvatura T"
+"T Slope"	"Declive T"
+"T Vertical Distance to Channel Network"	"Dist�ncia vertical T a Rede Canal"
+"T, mean temperature [degree C]"	"T, a temperatura m�dia [graus C]"
+"TCI Low"	"TCI Baixo"
+"TCc"	"TCc"
+"TCz"	"TCz"
+"TFAC("	"TFAC("
+"TIFF files (*.tif)"	"Arquivos TIFF (* .tif)"
+"TIN"	"TIN"
+"TIN Centroids"	"Centr�ides TIN"
+"TIN Edges"	"Arestas TIN"
+"TIN Manager"	"Gerenciador TIN"
+"TIN Triangles"	"Tri�ngulos TIN"
+"TIN View Settings"	"Ver Defini��es TIN"
+"TIN Viewer"	"Visualizador TIN"
+"TIN Viewer Settings"	"Defini��es do Visualizador TIN"
+"TIN Voronoi"	"TIN Voronoi"
+"TIN creation failed"	"A cria��o do TIN falhou"
+"TIN list"	"Lista TIN"
+"TIN to Shapes"	"TIN para Shapes"
+"TIN viewer."	"Visualizador de TIN."
+"TIN_Gradient"	"TIN_Gradient"
+"TINs"	"TINs"
+"TMP Column: Subbasin: "	"TMP Coluna: Sub-bacia: "
+"TOBIA"	"TOBIA"
+"TOPMODEL"	"TOPMODEL"
+"TOPMODEL - Simulation Output"	"TOPMODEL - Sa�da de Simula��o"
+"TOPOGRAPHY"	"TOPOGRAFIA"
+"TPI Based Landform Classification"	"TPI Baseado na classifica��o da pedoforma"
+"TYPE"	"TIPO"
+"T_MELT("	"T_MELT("
+"T_RAIN("	"T_RAIN("
+"Table"	"Tabela"
+"Table (with Trend)"	"Tabela (com tend�ncia)"
+"Table / Shapes"	"Tabela / Shapes"
+"Table Calculator"	"Calculadora de tabela"
+"Table Calculator (Shapes)"	"Calculadora de tabela (Shapes)"
+"Table Deletion"	"Exclus�o da tabela"
+"Table Description"	"Descri��o da tabela "
+"Table Manager"	"Gerenciador de tabela"
+"Table Name"	"Nome da tabela"
+"Table calculator for shapes"	"Calculadora de tabela para shapes"
+"Table field"	"Campo da tabela"
+"Table fields"	"Campos da tabela"
+"Table from SQL Query"	"Tabela de SQL Query"
+"Table list"	"Lista de tabelas"
+"Table with Text Replacements"	"Tabela com substitui��es de texto"
+"Table with coordinates."	"Tabela com coordenadas."
+"Table without Gaps"	"Tabela sem lacunas"
+"Tables"	"Tabelas"
+"Tables using MySQL native driver"	"Tabelas usando o driver nativo MySQL"
+"Table|Calculus"	"Tabela|C�lculos"
+"Table|Tools"	"Tabela|Ferramentas"
+"Tagged Image File Format"	"Formato de arquivo de imagem alvo"
+"Tagged Image File Format (*.tif, *.tiff)"	"Formato de arquivo de imagem alvo (* .tif, * .tiff)"
+"Take Formula"	"Tirar formula"
+"Tangent"	""
+"Tangential Curvature"	"Curvatura tangencial"
+"Target"	"Alvo"
+"Target Area"	"�rea-alvo"
+"Target Areas"	"Areas-alvo"
+"Target Cell Size"	"Tamanho das c�lulas alvo"
+"Target Cellsize"	"Tamanho das c�lulas alvo"
+"Target Coordinate System Error"	"Erro no sistema de coordenadas alvo"
+"Target Coordinate System Type Error"	"Erro no tipo de sistema de coordenadas alvo"
+"Target Datum"	"Datum alvo"
+"Target Datum Error"	"Erro no datum alvo"
+"Target Grid"	"Grade alvo"
+"Target Grid System"	"Sistema de grade alvo"
+"Target Grid Type"	"Tipo de grade alvo"
+"Target Map"	""
+"Target Parameter List Initialisation Error"	"Erro na inicializa��o da lista de par�metros alvo"
+"Target Parameters"	"Par�metros alvo"
+"Target Projection"	"Proje��o alvo"
+"Target Projection Error"	"Erro na proje��o alvo"
+"Target Projection Parameters"	"Par�metros de proje��o alvo"
+"Target Range"	"Intervalo alvo"
+"Target System"	"Sistema alvo"
+"Target X coordinate"	"Coordenada alvo X"
+"Target Y coordinate"	"Coordenada alvo Y"
+"Tasseled Cap Transformation"	"Transforma��o da tampa de borlas"
+"Temperature"	"Temperatura"
+"Temperature (2pm) [DegreeC]"	"Temperatura (14:00h) [graus C]"
+"Temperature Column"	"Coluna da temperatura"
+"Temperature Gradient [Deg.Celsius/km]"	"Gradiente de temperatura[grau.Celsius/km]"
+"Temperature K1"	"K1 temperatura"
+"Temperature K2"	"K2 temperatura"
+"Temperature Modulation Factor (f)"	"Fator de modu��o de temperatura (f)"
+"Temperature Modulation Factor f"	"Fator de modula��o de temperatura f"
+"Temperature Threshold for Melting"	"Limite de temperatura para fus�o"
+"Temperature Threshold for Melting (lower bound)"	"Limite de temperatura para fus�o (limite inferior)"
+"Temperature Threshold for Melting (upper bound)"	"Limite de temperatura para fus�o (limite superior)"
+"Temperature Threshold for Rainfall"	"Limite de temperatura para precipita��o"
+"Temperature Threshold for Rainfall (lower bound)"	"Limite de temperatura para precipita��o (limite inferior)"
+"Temperature Threshold for Rainfall (upper bound)"	"Limite de temperatura para precipita��o (limite superior)"
+"Temperature at Reference Station [Deg.Celsius]"	"Temperatura na esta��o de refer�ncia [grau.Celsius]"
+"Template Menu|Template Sub Menu"	"Menu de modelo|Modelo de Sub-menu"
+"Templates"	"Modelos"
+"Temporary files"	"Arquivos tempor�rios"
+"Tension Threshold"	"Limiar de tens�o"
+"Tension Threshold [Percentage of Cell Size]"	"Limiar de tens�o [porcentagem do tamanho celular]"
+"Termination criteria of the training algorithm. You can specify how much the error could change between the iterations to make the algorithm continue (epsilon)."	"Crit�rios de termina��o do algoritmo de treinamento. Voc� pode especificar o quanto o erro poderia mudar entre as itera��es para fazer o algoritmo continuar (epsilon)."
+"Termination criteria of the training algorithm. You can specify the maximum number of iterations."	"Crit�rios de termina��o do algoritmo de treinamento. Voc� pode especificar o n�mero m�ximo de itera��es."
+"Terrain"	"Terreno"
+"Terrain Analysis"	"An�lise de terreno"
+"Terrain Analysis: Compound Analyses.\nThis library depends on the following SAGA module libraries:\n- ta_channels\n- ta_flow\n- ta_indices\n- ta_lighting\n- ta_morphometry\n- ta_preproc\n"	""
+"Terrain Analysis|Channels"	"An�lise de terreno|Canais"
+"Terrain Analysis|Hydrology"	"An�lise de terreno|Hidrologia"
+"Terrain Analysis|Lighting"	"An�lise de terreno|Ilumina��o"
+"Terrain Analysis|Morphometry"	"An�lise de terreno|morfometria"
+"Terrain Analysis|Preprocessing"	"An�lise de terreno|Pr�-processamento"
+"Terrain Analysis|Profiles"	"An�lise de terreno|Perfis"
+"Terrain Analysis|Slope Stability"	"An�lise de terreno|Estabilidade de taludes"
+"Terrain Map View"	"Visualizar mapa de terreno"
+"Terrain Path Cross Sections"	"Se��es de cruzamento de caminhos no terreno"
+"Terrain Ruggedness Index (TRI)"	"�ndice de robustez do terreno (TRI)"
+"Terrain Surface Classification (Iwahashi and Pike)"	"Classifica��o de superf�cie do terreno (Iwahashi e Pike)"
+"Terrain Surface Convexity"	"Convexidade de superf�cie do terreno"
+"Terrain Surface Texture"	"Textura da superf�cie do terreno"
+"Terrain View Factor"	"Fator de visualiza��o do terreno"
+"Terrain parameters"	"Par�metros do terreno"
+"Test- und Monitoring-Routinen"	"Test- und Monitoring-Routinen"
+"TestRoutine 1"	"TestRoutine 1"
+"Testroutine1 durchfuehren... "	"Testroutine1 durchfuehren ... "
+"Text"	"Texto"
+"Text File"	"Arquivo de texto"
+"Text Files"	"Arquivos de Texto"
+"Text Files (*.txt)"	"Arquivos de texto (*.txt)"
+"Text Replacements"	"Substitui��es de texto"
+"Text Table (*.txt)"	"Tabela de texto (*.txt)"
+"Text files (*.txt)"	"Arquivos de texto (*.txt)"
+"Textdatei (*.txt)|*.txt|All Files|*.*"	"Textdatei (*.txt)|*.txt|Todos os arquivos|*.*"
+"Textdatei|*.txt|All Files|*.*"	"Textdatei|*.txt|Todos os arquivos|*.*"
+"Texture"	"Textura"
+"The (numeric) fields to calculate the statistics for."	"Campos (num�ricos) para calculo das estat�sticas."
+"The GDAL dataset to be created."	"Conjunto de dados GDAL a ser criado."
+"The GDAL datatype of the created dataset."	"Tipo de dados GDAL do conjunto de dados criado."
+"The GDAL raster format (driver) to be used."	"Formato raster GDAL (driver) a ser usado."
+"The GeoTIFF File to be created."	"Arquivo GeoTIFF a ser criado."
+"The GeoTRANS engine could not be initialized !!\n\n"	""
+"The LAS output file."	"O arquivo de sa�da LAS."
+"The SAGA grids to be exported."	"Grade SAGA a ser exportada."
+"The angle between the surface and the incoming light beams, measured in radians."	"�ngulo entre a superf�cie e os feixes de luz de entrada, medido em radianos."
+"The areas used to train the neural network."	"�reas usadas para treinar a rede neural."
+"The attribute field to grid. Field numbers start with 1, so elevation is attribute field 3."	"Campo de atributo da grade. Os n�meros de campo devem come�ar com 1, de modo que a eleva��o � o campo de atributo 3."
+"The attribute field to use as constraint. Field numbers start with 1."	"Campo de atributo a ser usado como restri��o. Os n�meros de campo devem come�ar com um."
+"The attribute field with the x-coordinate."	"Campo de atributo com a coordenada x."
+"The attribute field with the y-coordinate."	"Campo de atributo com a coordenada y."
+"The attribute field with the z-coordinate."	"Campo de atributo com a coordenada z."
+"The attribute field(s) to drop."	"Campo(s) atributo de largada."
+"The attribute fields to cluster"	"Campos de atributo para agrupamento"
+"The attribute fields to convert, optional."	"Campos de atributo para converter, opcional."
+"The attribute with the class IDs, used to link the table and the grid."	"Atributo com as IDs de classe, utilizadas para ligar a tabela e a grade"
+"The base name of the tiles"	"Nome base das telhas"
+"The buffer distance must be greater than or equal to the cell size!"	"Dist�ncia do buffer deve ser maior do que ou igual ao tamanho da c�lula!"
+"The calculated statistics."	"Estat�sticas calculadas."
+"The calculated terrain slope [radians]."	"Declive do terreno calculado [radianos]."
+"The class field used to classify the shape. All classes will be vectorized."	"Campo de classe usada para classificar o shape. Todas as classes ser�o vetorizadas."
+"The clipped grid."	"Grade cortante."
+"The column holding the X-coordinate."	"Coluna prendendo a coordenada X."
+"The column holding the Y-coordinate."	"Coluna prendendo a coordenada Y."
+"The column holding the Z-coordinate."	"Coluna prendendo a coordenada z."
+"The converted shapefile."	"Shapefile convertido."
+"The cutted output point cloud dataset(s)."	"Conjunto de dados da nuvem de pontos cortados de sa�da"
+"The datatype to use for each field, separated by semicolon, e.g. \"	""
+"The decimal precision to use for each field, separated by semicolon, e.g. \"	""
+"The delay after the start of rainfall, before the discharge starts to rise."	"Atraso ap�s o in�cio das chuvas, antes da descarga come�a a subir."
+"The difference of positive and negative openness."	"Diferen�a de abertura positiva e negativa."
+"The field with B values (0-255)"	"Campo com valores B (0-255)"
+"The field with G values (0-255)"	"Campo com valores G (0-255)"
+"The field with R values (0-255)"	"Campo com valores de R (0-255)"
+"The field with SAGA RGB values"	"Campo com valores RGB SAGA"
+"The file to write the Calculation Results to."	"Arquivo para gravar os resultados do c�lculo a."
+"The file to write the point cloud to."	"Arquivo para gravar a nuvem de pontos para."
+"The final symbolic image"	"Imagem simb�lica definitiva"
+"The first DTM used to assign height information to grid 1"	"Primeiro DTM usado para atribuir informa��o de altura da grade 1"
+"The first grid to correlate"	"Primeira grade para correlacionar"
+"The flow depth used to calculate the actual flow velocity [m] (e.g. 0.005 unchannelled flow, 0.01 shallow rills, 0.25 deeper rills."	"Profundidade de fluxo utilizada para calcular a velocidade de fluxo real [m] (por exemplo, fluxo canalizado 0,005, 0,01, 0,25 sulcos pouco profundos sulcos mais profundos."
+"The full path and name of the .spcvf file"	"Caminho completo e o nome do arquivo .spcvf"
+"The full path and name of the spcvf tile info file describing the point cloud tiles without overlap"	"Caminho completo e o nome do arquivo de informa��es spcvf descrevendo as nuvens de pontos sem sobreposi��o"
+"The full path to which the output(s) should be written. Leave empty to output the datasets as grid list."	"Caminho completo para qual a sa�da(s) deve ser escrita. Deixe em branco para a sa�da dos conjuntos de dados como lista de grades."
+"The full path to which the output(s) should be written. Leave empty to output the datasets as point cloud list."	"Caminho completo para o qual a sa�da(s) deve ser escrita. Deixe em branco para a sa�da dos conjuntos de dados como lista de pontos de nuvem."
+"The full path to which the point cloud tiles without overlap should be written."	"Caminho completo para que as nuvens de nuvens de pontos sem sobreposi��o deve ser escrita."
+"The generated contour lines."	"Linhas de contorno geradas."
+"The grid coded with the class IDs."	"Grade codificada com as IDs de classe."
+"The grid to clip."	"Grade para o corte."
+"The grid to filter."	"Grade de filtro."
+"The grid to modify."	"Grade para modificar."
+"The grids geo-reference must be related either to the center or the corner of its lower left grid cell."	"As grades de geo-refer�ncia devem estar relacionadas tanto para o centro como para o canto de sua menor c�lula da grade esquerda."
+"The improved SIA model requires more than one smoothing iteration!"	"O modelo SIA melhorou e exige mais do que uma itera��o de suaviza��o!"
+"The input line shapefile to smooth."	"Shapefile do tipo linha de entrada para suavizar."
+"The input point cloud files to use"	"Arquivos de pontos de nuvem de entrada para usar"
+"The input table"	"Tabela de entrada"
+"The input table."	"Tabela de entrada."
+"The inverse selection is not implemented for input shapefiles with more than one polygon!"	"Sele��o inversa n�o � implementada para shapefiles de entrada com mais de um pol�gono!"
+"The length of the Gaussian window is too small, please provide a larger sigma."	"O comprimento da janela Gaussian � muito pequeno, por favor fornecer um sigma maior."
+"The merged point cloud."	"Nuvem de pontos resultante da fus�o."
+"The method used to identify surface specific points."	"M�todo utilizado para identificar pontos espec�ficos da superf�cie."
+"The name to use for each field, separated by semicolon, e.g. \"	""
+"The number of days to model."	"N�mero de dias para modelar."
+"The number of smoothing iterations [-]."	"N�mero de itera��es de suaviza��o [-]."
+"The number of supplied grids exceeds the number of variables in formula."	"O n�mero de grades fornecidas excede o n�mero de vari�veis ??na f�rmula."
+"The number of supplied grids is less than the number of variables in formula."	"O n�mero de grades fornecidas � menos do que o n�mero de vari�veis ??na f�rmula."
+"The numbers (starting from 1) of the fields to export, separated by semicolon, e.g. \"	""
+"The numbers (starting from 1) of the fields to import, separated by semicolon, e.g. \"	""
+"The output grid(s)"	"Grade(s) de sa�da"
+"The output grids, one grid for each table column."	"Grades de sa�da, um gradepara cada coluna da tabela."
+"The output point cloud"	"Nuvem de pontos de sa�da"
+"The output point cloud(s)"	"Nuvem(ns) ponto de sa�da"
+"The output point cloud."	"Nuvem de pontos de sa�da."
+"The output table"	"Tabela de sa�da"
+"The parameter controls the position of relative height maxima as a function of slope."	"O par�metro controla a posi��o relativa de altura m�ximas em fun��o da inclina��o."
+"The point cloud to export."	"Nuvem de pontos para exportar."
+"The radius in map units"	"Raio, em unidades de mapa"
+"The resulting grid gives the altitude above the channel network in the same units as the elevation data."	"A grade resultante d� a altitude acima da rede de canais nas mesmas unidades que os dados de eleva��o."
+"The resulting table inherits its field structure from the first table in this list."	"A tabela resultante herda sua estrutura de campo da primeira tabela nesta lista."
+"The second DTM used to assign height information to grid 2"	"Segunda DTM usado para atribuir informa��o de altura da grade 2"
+"The second grid to correlate"	"Segunda grade para correlacionar"
+"The shaded DTM."	"DTM sombreado."
+"The shapefile to convert."	"Shapefile convers�o."
+"The shapefile to use for clipping."	"Shapefile a ser usado para recorte."
+"The smoothed output line shapefile."	"Shapefile de linhas de sa�da suavizadas."
+"The smoothing preservation factor [-]."	"Factor de preserva��o de alisamento [-]."
+"The start value to use for the identifier."	"Valor inicial a ser usado para o identificador."
+"The table with the (numeric) data values for each class. The module creates a grid for each table column (besides the ID)."	"Tabela com os valores (num�ricos) de dados para cada classe. O m�dulo cria uma grade para cada coluna da tabela (al�m da ID)."
+"The terrain exaggeration factor allows to increase the shading contrasts in flat areas."	"O fator exagero de terreno permite aumentar os contrastes de sombra em �reas planas."
+"The transmittance of the atmosphere, usually between 60 and 80 percent."	"Transmit�ncia da atmosfera, geralmente entre 60 e 80 por cento."
+"The transparency of the shade [%]"	"Transpar�ncia da sombra[%]"
+"The unobstructed hemisphere given as percentage."	"Hemisf�rio desobstru�do dado em percentagem."
+"The value for the option '%s' must be specified."	"O valor para a op��o '%s' deve ser especificado."
+"The value to apply."	"Valor a ser aplicado."
+"The values in the specified radius is used in the average calculation only if its difference with the central value is lesser or equal to this threshold."	"Os valores do raio espec�fico s�o utilizados no c�lculo da m�dia, apenas se a sua diferen�a em rela��o ao valor central � menor ou igual a este limiar."
+"The values of the resultant grid can be either the seed value (e.g. the local maximum) or the enumerated segment id."	"Os valores da grade resultante podem ser os mesmos valores da semente (por exemplo, o m�ximo local) ou o ID do segmento enumerado."
+"The values of this grid are checked against the linear flow threshold to decide on the flow-routing algorithm."	"Os valores desta grade s�o verificados em rela��o ao limiar de fluxo linear para decidir sobre o algoritmo de fluxo de roteamento."
+"The x-coordinate of the target point in world coordinates [map units]"	"Coordenada x do ponto de destino em coordenadas globais [mapa unidades]"
+"The y-coordinate of the target point in world coordinates [map units]"	"Coordenada y do ponto de destino em coordenadas globais [mapa unidades]"
+"Theme"	"Tema"
+"Theme Field"	"Campo do tema"
+"There are less predictor variables then dependent ones."	"H� menos vari�veis ??de previs�o, em seguida, as dependentes."
+"There is no grid to request."	"N�o h� nenhuma grade de solicita��o."
+"There was a problem printing.\nPerhaps your current printer is not set correctly?"	""
+"Thermal"	"Termal"
+"These are the probabilities for the winner classes given by the neural network."	"Estas s�o as probabilidades para as classes ganhadoras dadas pela rede neural."
+"These are the winner class vectors."	"Estes s�o os vetores da classe ganhadora."
+"Thiam's Transformed Vegetation Index"	"�ndice de vegeta��o transformada de Thiam"
+"Thiessen Polygons"	"Pol�gonos de Thiessen"
+"Thin Plate Spline"	"Placa fina com ranhura"
+"Thin Plate Spline (TIN)"	"Placa fina com ranhura (TIN)"
+"Thin Plate Spline: solving matrix"	"Placa fina com ranhura: matriz de resolu��o"
+"Thinned Points"	"Pontos dilu�do"
+"This Color"	"Esta cor"
+"This Is Not A Caption!"	"Este n�o � um subt�tulo!"
+"This grid indicates the cells you want calculate the average."	"Esta grade indica as c�lulas que deseja calcular a m�dia."
+"This grid is used to select cells."	"Esta grade � usada para selecionar c�lulas."
+"This is a Test!!!"	"Isso � um teste!!!"
+"This is a floating point value parameter with double precision (8 bytes)."	"Este � um par�metro de valor de ponto flutuante com precis�o dupla (8 bytes)."
+"This is not a text!"	"Este n�o � um texto!"
+"This is the alpha parameter value for the sigmoid function."	"Este � o valor do par�metro alfa para a fun��o sigm�ide."
+"This is the beta parameter value for the sigmoid function."	"Este � o valor do par�metro de beta para a fun��o sigm�ide."
+"This is the horizontal component of the overland flow"	"Esta � a componente horizontal do fluxo superficial"
+"This is the vertical component of the overland flow"	"Esta � a componente vertical do escoamento superficial"
+"This must be your input data of type grid."	"Este deve ser nos seus dados de entrada do tipo grade."
+"This must be your input data of type shapes."	"Este deve ter os seus dados de entrada do tipo shapes."
+"This option does not apply to simple point layers."	"Esta op��o n�o se aplica a camadas de ponto simples."
+"This optional grid output contains the interpolated channel network base level elevations."	"Esta sa�da grade opcional cont�m a rede do canal de eleva��es de n�vel b�sico interpolados."
+"This section contains all parameters used by the RPROP algorithm."	"Esta se��o cont�m todos os par�metros utilizados pelo algoritmo Rprop."
+"This section contains all parameters used by the backpropagation algorithm."	"Esta se��o cont�m todos os par�metros utilizados pelo algoritmo de retropropaga��o."
+"This shapes layer will contain the resulting channel network in vector format (lines)."	"Esta camada shape conter� a rede de canais, resultando no formato de vetor (linhas)."
+"This value is ignored if set to zero."	"Esse valor � ignorado se definido como zero."
+"This will contain your output data of type grid."	"Este ir� conter os dados do tipo grade de sa�da."
+"This will contain your output data of type shapes."	"Este ir� conter os dados do tipo shapes de sa�da."
+"Thomas Schorr (c) 2007"	"Thomas Schorr (c) 2007"
+"Threshold"	"Limiar"
+"Threshold (Grid Units)"	"Limiar (Unidades da grade)"
+"Threshold (Init.)"	"Limiar (Inteiro)."
+"Threshold Buffer"	"Limite de buffer"
+"Threshold Elevation"	"Limiar de eleva��o"
+"Threshold Error"	"Error no limiar"
+"Threshold Grid"	"Grade de limiar"
+"Threshold Height"	"Altura do limiar"
+"Threshold Linear Flow"	"Limite de Fluxo Linear"
+"Threshold Type"	"Tipo de limiar"
+"Threshold [Percent]"	"Limiar [por cento]"
+"Threshold for Elevation Percentile (Lowness)"	"Limiar para eleva��o de percentil (abaixo)"
+"Threshold for Elevation Percentile (Upness)"	"Limiar para eleva��o de percentil (acima)"
+"Threshold for Peucker & Douglas Algorithm"	"Limiar para o algor�timo Peucker & Douglas"
+"Threshold for automatic mode [MB]"	"Limiar para o modo autom�tico [MB]"
+"Threshold for different route"	"Limiar para a rota diferente"
+"Threshold for linear flow, if exceeded D8 is used."	"Limite para o fluxo linear, se excedido, D8 � usado."
+"Threshold for plane"	"Limiar para v�o"
+"Thresholded Linear Flow"	"Limiar linear de fluxo"
+"Thresholds"	"Limiares"
+"Thumbnail Size"	"Tamanho da miniatura"
+"Thumbnails"	"Miniaturas"
+"Tiempo"	"Tempo"
+"Tiempo de inicio (min)"	"Tempo de inicio (min)"
+"Tiempo de simulacion (min)"	"Tempo de simula��o (min)"
+"Tile Horizontally"	"Lado a lado horizontalmente"
+"Tile Info File"	"Grade de informa��es do arquivo"
+"Tile Size (X)"	"Tamanho da grade (X)"
+"Tile Size (Y)"	"Tamanho da grade (Y)"
+"Tile Size Definition"	"Defini��o do tamanho da grade"
+"Tile Vertically"	"Lado a lado verticalmente"
+"Tilename"	"Nome da grade"
+"Tiles"	"Grades"
+"Tileshape"	"Grade do shape"
+"Tileshape_%s"	"Tileshape_%s"
+"Tiling"	"Revestimento"
+"Tilt"	"Inclinar"
+"Time"	"Tempo"
+"Time Delay (Rain-Runoff)"	"Tempo de atraso (Escoamento da chuva)"
+"Time Delay after Start of Rainfall (INTEGER)"	"Tempo de atraso ap�s o in�cio das chuvas (inteiro)"
+"Time Difference between Image & Points"	"Diferen�a de tempo entre Imagem & Pontos"
+"Time Field"	"Campo de tempo"
+"Time Interval [a]"	"Intervalo de tempo [a]"
+"Time Out [min]"	"Tempo esgotado [min]"
+"Time Out(h)"	"Tempo esgotado (h)"
+"Time Period"	"Per�odo de tempo"
+"Time Range"	"Intervalo de tempo"
+"Time Resolution [d]: Range of Days"	"Resolu��o de tempo [d]: Intervalo de dias"
+"Time Resolution [h]: Day"	"Resolu��o de tempo [h]: Dia"
+"Time Span"	"Intervalo de tempo"
+"Time Span Aggregation"	"Intervalo de tempo de agrega��o"
+"Time Span [a]"	"Intervalo de tempo [a]"
+"Time Span [h]"	"Intervalo de tempo [h]"
+"Time Stamp without date"	"Tempo sem data"
+"Time Step"	"Passo de tempo"
+"Time Step [h]"	"Passo de tempo [h]"
+"Time Step [kyr]"	"Passo de tempo [kyr]"
+"Time [a]"	"Tempo [a]"
+"Time interval is to large for a stable solution."	"O intervalo de tempo � grande para uma solu��o est�vel."
+"Time of Concentration [min]"	"Tempo de concentra��o [min]"
+"Time of Concentration [min] used to estimate flow speed."	"Tempo de concentra��o [min] usado para estimar a velocidade do fluxo."
+"Time span used for the calculation of daily radiation sums."	"Intervalo de tempo utilizado para o c�lculo dos montantes de radia��o di�rias."
+"Time stamp of Image"	"Tempo de Imagem"
+"Time step exceeds duration"	"Passo de tempo excede a dura��o"
+"Time step size for a day's calculation given in hours."	"Tamanho do passo de tempo para o c�lculo de um dia dado em horas."
+"Time step size for a range of days calculation given in days."	"Tamanho do passo de tempo para uma gama de c�lculo de dias dado em dias."
+"Timespan (days)"	"Intervalo de tempo (dias)"
+"Tip of the Day..."	"Dica do dia..."
+"Tissot's Indicatrix"	"Indicatriz de Tissot"
+"To"	"Para"
+"Tolerance"	"Toler�ncia"
+"Tolerance (Degree)"	"Toler�ncia (Grau)"
+"Tolerance [Degree]"	"Toler�ncia [Grau]"
+"Tool"	"Ferramenta"
+"Tool Chain"	"Cadeia de ferramentas"
+"Tool Chain with Header"	"Cadeia de ferramentas com cabe�alho"
+"Tool Chains"	"Cadeias de ferramentas"
+"Tool Description Source"	"Descri��o da fonte da ferramenta"
+"Tool Execution"	"Execu��o da ferramenta"
+"Tool Libraries"	"Bibliotecas de ferramentas"
+"Tool Library"	"Biblioteca de ferramenta"
+"Tool Manager"	"Gerenciador de ferramentas"
+"Tool Set"	"Conjunto de ferramentas"
+"Tool execution failed"	"A execu��o da ferramenta falhou"
+"Tool execution succeeded"	"A execu��o da ferramenta foi bem sucedida"
+"Toolbox Naming"	"Nomeclatura da caixa de ferramentas"
+"Tools"	"Ferramentas"
+"Tools for (grid based) digital terrain analysis."	"Ferramentas para an�lise digital do terreno (baseado em grade)."
+"Tools for GPS data handling."	"Ferramentas para manipula��o de dados de GPS."
+"Tools for Triangulated Irregular Network (TIN) processing."	"Ferramentas para processamento de triangula��o irregular de rede (TIN)."
+"Tools for digital terrain analysis."	"Ferramentas para an�lise digital do terreno."
+"Tools for lines."	"Ferramentas para linhas."
+"Tools for point clouds."	"Ferramentas para nuvens de pontos."
+"Tools for polygons."	"Ferramentas para pol�gonos."
+"Tools for regression analyses."	"Ferramentas para an�lise de regress�o."
+"Tools for spatial and geostatistical analyses."	"Ferramentas para an�lises espaciais e geoestat�stica."
+"Tools for table based analyses and calculations."	"Ferramentas para an�lises e c�lculos de tabelas."
+"Tools for the creation and manipulation of tables."	"Ferramentas para a cria��o e manipula��o de tabelas."
+"Tools for the georeferencing of spatial data."	"Ferramentas para o georreferenciamento de dados espaciais."
+"Tools for the gridding of points and other vector data."	"Ferramentas para o gradeamento de pontos e outros dados vetoriais."
+"Tools for the handling of virtual datasets."	"Ferramentas para a manipula��o de conjuntos de dados virtuais."
+"Tools for the import and export of ASPRS LAS files."	"Ferramentas para a importa��o e exporta��o de arquivos ASPRS de Las Vegas."
+"Tools for the import and export of DXF files."	"Ferramentas para a importa��o e exporta��o de arquivos DXF."
+"Tools for the import and export of gridded data."	"Ferramentas para a importa��o e exporta��o de dados da grade."
+"Tools for the import and export of tables."	"Ferramentas para a importa��o e exporta��o de tabelas."
+"Tools for the import and export of vector data."	"Ferramentas para a importa��o e exporta��o de dados vetoriais."
+"Tools for the manipulation of gridded data."	"Ferramentas para a manipula��o de dados em grade."
+"Tools for the manipulation of point vector data."	"Ferramentas para a manipula��o de dados vetoriais de ponto."
+"Tools for the manipulation of vector data."	"Ferramentas para a manipula��o de dados vetoriais."
+"Tools for the preprocessing of digital terrain models."	"Ferramentas para o pr�-processamento de modelos digitais de terreno."
+"Tools for weather and climate data."	"Ferramentas para dados de tempo e clima."
+"Tools related to gridded and vector data (conversions, combinations, etc.)."	"Ferramentas relacionadas com dados em grade e vetores (convers�es, combina��es, etc.)."
+"Top"	"Topo"
+"Top of Atmosphere Reflectance"	"In�cio da reflect�ncia da atmosfera"
+"Top to Bottom"	"De cima para baixo"
+"Topographic Correction"	"Corre��o topogr�fica"
+"Topographic Openness"	"Abertura topogr�fica"
+"Topographic Position Index"	"�ndice de posi��o topogr�fica"
+"Topographic Position Index (TPI)"	"�ndice de posi��o topogr�ica (TPI)"
+"Topographic Wetness Index"	"Indice de umidade topogr�fico"
+"Topographic Wetness Index (TWI)"	"�ndice de umidade topogr�fica (TWI)"
+"Topography"	"Topografia"
+"Topograpic Wetness Index Calculation"	"C�lculo de indice de umidade topogr�fica"
+"Total"	"Total"
+"Total Catchment Area"	"�rea total de capta��o"
+"Total Catchment Area (TCA)"	"Total de �rea program�tica (TCA)"
+"Total Catchment Area [km2]"	"�rea total de capta��o [km2]"
+"Total Curvature"	"Curvatura total"
+"Total Insolation"	"Insola��o total"
+"Total Kinetic Energy"	"Total de energia cin�tica"
+"Total area is zero or minimum elevation is equal or lower than maximum elevation!"	"A �rea total � zero ou a eleva��o m�nima � igual ou inferior a eleva��o m�xima!"
+"Total flow (in watershed) [m^3/dt]"	"Fluxo total (em bacias hidrogr�ficas) [m^3/dt]"
+"Total flow [m/dt]"	"Fluxo total [m/dt]"
+"Total memory size"	"Tamanho total da mem�ria"
+"Total number of points: %s"	"N�mero total de pontos: %s"
+"Total number of referenced datasets: %d"	"N�mero total de conjuntos de dados referenciados: %d"
+"Tracing: Convergence"	"Rastreamento: Converg�ncia"
+"Tracing: Max. Divergence"	"Rastreamento: Max�xima diverg�ncia"
+"Tracing: Stop after x cells with divergent flow"	"Rastreamento: Pare ap�s c�lulas x com fluxo divergente"
+"Tracing: Weight"	"Rastreamento: Peso"
+"Track"	"Faixa"
+"Train INPUT"	"Treinar ENTRADA"
+"Training Areas"	"�reas de forma��o"
+"Training Classes"	"Classes de treinamento"
+"Training Options"	"Op��es de treinamento"
+"Training method"	"M�todo de treinamento"
+"Transactions"	"Transa��es"
+"Transect through polygon shapefile"	"Transecto atrav�s de shapefile de pol�gono"
+"Transects"	"Transectos"
+"Transfer Coefficients"	"Coeficientes de transfer�ncia"
+"Transform Point Cloud"	"Transformar nuvem de pontos"
+"Transform Shapes"	"Transformar shapes"
+"Transformation"	"Transforma��o"
+"Transformed"	"Transformado"
+"Transformed Soil Adjusted Vegetation Index (Baret and Guyot, 1991)"	"�ndice ajustado de transforma��o do solo para vegeta��o (Baret e Guyot, 1991)"
+"Transformed Soil Adjusted Vegetation Index (Baret et al. 1989)"	"�ndice ajustado de transforma��o do solo para vegeta��o (Baret et al. 1989)"
+"Transformed Vegetation Index"	"�ndice de vegeta��o transformado"
+"Transitional"	"Transit�rio"
+"Translatable Elements"	"Elementos traduz�veis"
+"Translation"	"Tradu��o"
+"Translation X"	"Tradu��o X"
+"Translation Y"	"Tradu��o Y"
+"Translation Z"	"Tradu��o Z"
+"Translation: X"	"Tradu��o: X"
+"Translation: Y"	"Tradu��o: Y"
+"Transmissivity"	"Transmissividade"
+"Transparency [%]"	"Transpar�ncia [%]"
+"Transparent"	"Transparente"
+"Transport Capacity Clay"	"Capacidade de transportes de argila"
+"Transport Capacity Sand"	"Capacidade de transportes de areia"
+"Transport Capacity Silt"	"Capacidade de transportes de silt"
+"Transport Condition Clay"	"Estado de transporte de argila"
+"Transport Condition Sand"	"Estado de trasporte de areia"
+"Transport Condition Silt"	"Estado de transporte de Silt"
+"Transpose Grids"	"Transpor grades"
+"Transpose Table"	"Transpor tabela"
+"Transposed Grids"	"Grades transpostas"
+"Transversal radius"	"Raio transversal"
+"Transverse Cylindrical Equal Area"	"�rea transversal cil�ndrica"
+"Transverse Mercator"	"Transversa de Mercator"
+"Tree"	"�rvore"
+"Tree Count"	"�rvore de contagem"
+"Trend"	"Tend�ncia"
+"Trend Analysis"	"An�lise de tend�ncias"
+"Trend Analysis (Shapes)"	"An�lise de tend�ncias (shapes)"
+"Trend Surface"	"Tend�ncia de superf�cie"
+"Triangles"	"Tri�ngulos"
+"Triangulation"	"Triangula��o"
+"True Latitude 1"	"Latitude de verdadeiro1"
+"True Latitude 2"	"Latitude verdadeiro2"
+"True Scale Latitude"	"Latitude de verdadeira escala "
+"TwFAC("	"TwFAC("
+"Two Parallel Storages"	"Dois armaz�ns paralelos"
+"Two Storages in Series"	"Dois armaz�ns em s�rie"
+"Two Storages in Series !!! not yet implemented !!!"	"Dois armaz�ns em s�rie !!! Ainda n�o implementado !!!"
+"Type"	"Tipo"
+"Type in a value that shall be used for the chosen mathematical operation."	"Tipo de um valor que deve ser utilizado para a opera��o matem�tica escolhida."
+"Type of Area"	"Tipo de �rea"
+"Type of Output"	"Tipo de sa�da"
+"Type of Quality Measure"	"Tipo de qualidade medida"
+"Type of Slope"	"Tipo de declive"
+"Type of distance calculation"	"Tipo de c�lculo de dist�ncia"
+"Type of smoothing"	"Tipo de suaviza��o"
+"Type=\"	""
+"U-shaped Valleys"	"Vales em shape de U"
+"UNRECOGNISED COMMAND ID"	"COMANDO DE ID N�O RECONHECIDO"
+"USGS SRTM Grids (*.hgt)|*.hgt|All Files|*.*"	"Grades USGS SRTM (*.hgt)|*.hgt|Todos os arquivos|*.*"
+"UTM North"	"Norte UTM"
+"UTM South"	"Sul UTM"
+"Unable to connect to server."	"N�o � poss�vel conectar ao servidor."
+"Unable to create filtered mask grid!"	"N�o � poss�vel criar grade de m�scara filtrados!"
+"Unable to create grid for the eroded image!"	"N�o � poss�vel criar grade para a imagem corro�da!"
+"Unable to get capabilities."	"N�o � poss�vel obter capacidades."
+"Unable to get map."	"N�o foi poss�vel obter o mapa."
+"Unable to open LAS file!"	"N�o � poss�vel abrir arquivo LAS!"
+"Unable to open input file!"	"N�o � poss�vel abrir o arquivo de entrada!"
+"Unable to open output file %s!"	"N�o � poss�vel abrir arquivo de sa�da% s!"
+"Unable to read points from LAS file!"	"N�o � poss�vel ler pontos do arquivo LAS!"
+"Unable to save %s file!"	"N�o foi poss�vel salvar o arquivo %s!"
+"Unable to save file %s!"	"N�o foi poss�vel salvar o arquivo %s!"
+"Unclassified"	"N�o classificados"
+"Uncond. stable"	"Uncond. est�vel"
+"Uncond. unstable"	"Uncond. inst�vel"
+"Undefined"	"Indefinido"
+"Undefined Coordinate System"	"Sistema de coordenadas indefinido"
+"Undefined or binary attribute field types are not supported!"	"Os tipos de campo de atributo indefinidos ou bin�rios n�o s�o suportados!"
+"Underdip slope"	"Declive Underdip"
+"Undetermined"	"Indeterminado"
+"Uniform"	"Uniforme"
+"Union"	"Uni�o"
+"Unique"	"�nico"
+"Unit"	"Unidade"
+"Unit Name"	"Nome da unidade"
+"Units"	"Unidades"
+"Units for output radiation values."	"Unidades para valores de radia��o de sa�da."
+"Units of Direction"	""
+"Universal Kriging"	"Kringagem universal"
+"Universal Transvers Mercator (UTM)"	"Transverso Universal de Mercator (UTM)"
+"Unknown"	"Desconhecido"
+"Unknown Error"	"Erro desconhecido"
+"Unknown LAS header exception!"	"Exce��o de cabe�alho LAS desconhecida!"
+"Unknown LAS reader exception!"	"Exce��o leitor LAS desconhecida!"
+"Unkown EPSG Code"	"C�digo EPSG Unkown "
+"Unreferenced Grids"	"Grades n�o referenciadas"
+"Unsaturated zone time delay per unit storage deficit [h]"	"Zona insaturada de tempo de atraso por d�ficit de armazenagem de unidade [h]"
+"Unsorted tool chains"	"Cadeias de ferramentas n�o triadas"
+"Unsupervised"	""
+"Up"	"Para cima"
+"Up [-]"	"Acima [-]"
+"Up [Home]"	"Acima [Home]"
+"Up/Down"	"Acima/Abaixo"
+"Update"	"Atualizar"
+"Update Colors from Features"	""
+"Update Data"	"Atualizar dados"
+"Update Raster SRID"	"Atualizar raster SRID"
+"Update Shapes SRID"	"Atualizar shapes SRID"
+"Update View"	"Atualizar vista"
+"Update Views"	"Atualizar visualiza��es"
+"Update cluster view while clustering."	"Atualizar vista cluster enquanto agrupamento."
+"Update the network weights"	"Atualizar os pesos da rede"
+"Update values lower limit"	"Atualizar de valores do-limite mais baixo"
+"Update values upper limit"	"Atualizar valores do limite superior"
+"Update view during simulation."	"Atualizar vista durante a simula��o."
+"Upland Drainages"	"Drenagens de terra firme"
+"Upland Drainages, Headwaters"	"Drenagens de terra firme, Cabeceiras"
+"Upper"	"Superior"
+"Upper Slopes"	"Encostas superiores"
+"Upper Slopes, Mesas"	"Encostas superiores, Mesas"
+"Upper Tolerance"	"Toler�ncia superior"
+"Upscaling Method"	"M�todo de aumento de resolu��o"
+"Upslope Area"	"�reas aplainadas"
+"Upslope Basins"	"Bacias aplainadas"
+"Upslope Curvature"	"Curvatura aplainada"
+"Upslope Flow Width"	"Largura de fluxo aplainado"
+"Upslope Length Factor"	"Fator de comprimento aplainado"
+"Upslope Slope"	"Inclina��o de aclive"
+"Upslope Weighting"	"Pondera��o de aclive "
+"Upslope and Downslope Curvature"	"Curvatura de aclive e declive"
+"Urban"	"Urbano"
+"Use 5 percent confidence interval"	"Usar intervalo de confian�a de 5 por cento"
+"Use Confidence Interval"	"Usar Intervalo de confian�a"
+"Use Flow Threshold"	"Usar limiar de fluxo"
+"Use Label as Identifier"	"Usar etiqueta como identificador"
+"Use Multiple Cores"	""
+"Use NoData"	"Usar SemDados"
+"Use Offset"	"Usar deslocamento"
+"Use Pyramids"	"Usar pir�mides"
+"Use Surfer's No-Data Value"	"Usar valores SemDados de surfista"
+"Use Target Area Polygon"	"Usar �rea do pol�gono alvo"
+"Use Z-Range"	"Usar o alcance-Z"
+"Use a user-specified elevation range instead of min/max of the input dataset"	"Usar um intervalo eleva��o especificado pelo usu�rio em vez de min/max do conjunto de dados de entrada"
+"Use old style namings (e.g. 'modules' instead of 'tools'). Ignored if translation file is used. You need to restart SAGA to apply the changes."	"Usar estilo antigo de nome (por exemplo, 'm�dulos' em vez de 'ferramentas'). Ignorado se o arquivo utiliza a tradu��o. Voc� precisa reiniciar o SAGA para aplicar as altera��es."
+"Use only features selected by the minimum Redundancy Maximum Relevance (mRMR) algorithm"	"Usar somente recursos selecionados pela redund�ncia da relev�ncia m�xima (mrmr) do algoritmo m�nimo"
+"Use only seed cells as starting points."	"Usar pilhas de sementes apenas como pontos de partida."
+"Use sky view factor based on local slope (after Oke 1988), if no sky viev factor grid is given."	"Fator de vista. Usar c�u baseado no declive local (ap�s Oke 1988), se nenhum fator de visualiza��o do c�u for dado."
+"Use the first three features in list to obtain blue, green, red components for class colour in look-up table."	""
+"Use the stipple bitmap"	"Usar o bitmap de granito"
+"Use the user dashes"	"Usar os tra�os de usu�rios"
+"Use this option to reclassify No-Data values independently of the method settings."	"Usar esta op��o para reclassificar valores SemDadosindependentemente das configura��es de m�todo."
+"Use this option to reclassify all other values that are not specified in the options above."	"Usar esta op��o para reclassificar todos os outros valores que n�o s�o especificados nas op��es acima."
+"Use training area labels as identifier in classification result, assumes all label values are integer numbers!"	"Usar etiquetas da �rea de forma��o como identificador no resultado da classifica��o, assume todos os valores dos r�tulos que s�o n�meros inteiros!"
+"Use x -Values"	"Usar x -Valores"
+"User"	"Do utilizador"
+"User Defined"	"Definido pelo usu�rio"
+"User Defined Datum"	"Datum definido pelo usu�rio"
+"User Defined Extent"	"Medida definidas pelo usu�rio"
+"User Defined Filter"	"Filtro definido pelo usu�rio"
+"User Defined Kernel"	"Kernel definido pelo usu�rio"
+"User Defined No Data Value"	"Valor SemDados definido pelo usu�iro"
+"User Defined NoData Value"	"Valor SemDados definido pelo usu�iro"
+"User Defined Polynomial"	"Polinomial definido pelo usu�rio"
+"User Defined Size"	"Tamanho definido pelo usu�rio"
+"User Name"	"Nome de usu�rio"
+"User defined NoData value for output grid."	"Valor SemDados definido pelo usu�rio para a grade de sa�da."
+"User defined Orientation"	"Orienta��o definida pelo usu�rio"
+"User defined Zero Direction"	"Dire��o inicial definida pelo usu�rio"
+"User defined range"	"Intervalo definido pelo usu�rio"
+"User defined rank"	"Classifica��o definida pelo usu�rio"
+"User defined rescale"	"Reescalonamento definido pelo usu�rio"
+"User defined tool menus"	"Usu�rio definiu menus de ferramentas"
+"User defined tool menus."	"Menus de ferramentas definido pelo usu�rio."
+"User specified elevation range"	"Alcance de eleva��o especificado pelo usu�rio"
+"Username"	"Nome de usu�rio"
+"Using temperature data?"	"Usar dados de temperatura?"
+"Using the snow-melt module?"	"Usar o m�dulo de derretimento de neve?"
+"V / GR"	"V / GR"
+"V / V"	"V / V"
+"V / X"	"V / X"
+"V. Olaya, V. Wichmann (c) 2004-2015"	"V. Olaya, V. Wichmann (c) 2004-2015"
+"V. Wichmann (c) 2013"	"V. Wichmann (c) 2013"
+"V. Wichmann, M. Setiawan (c) 2009-2012"	"V. Wichmann, M. Setiawan (c) 2009-2012"
+"V.Olaya (c) 2004, O.Conrad (c) 2011"	"V.Olaya (c) 2004, O.Conrad (c) 2011"
+"V.Olaya (c) 2004, V.Wichmann (c) 2015"	"V.Olaya (c) 2004, V.Wichmann (c) 2015"
+"VALUE"	"VALOR"
+"VAR"	"VAR"
+"VARIANCE"	"VARI�NCIA"
+"VARIATION"	"VARIA��O"
+"Valley Depth"	"Profundidade de vale"
+"Valley Index"	"�ndice de vale"
+"Valley Radius"	"Raio de vale"
+"Valley and Ridge Detection (Top Hat Approach)"	"Detec��o de Valley e Ridge( Top Hat Approach)"
+"Valleys"	"Vales"
+"Value"	"Valor"
+"Value (Maximum)"	"Pre�o (M�ximo)"
+"Value Aggregation"	"Valor de agrega��o"
+"Value Count"	"Valor de contagem"
+"Value Grid"	"Valor da grade"
+"Value Maximum"	"Valor m�ximo"
+"Value Minimum"	"Valor m�nimo"
+"Value Preparation"	"Prepara��o do valor"
+"Value Range"	"Intervalo de valores"
+"Value Type"	"Tipo de valor"
+"Value as RGB"	"Valor como RGB"
+"Value as RGB Code"	"Valor como c�digo RGB"
+"Value in Grid 1"	"Valor na grade 1"
+"Value in Grid 2"	"Valor na grade 2"
+"Value of Target Function"	"Valor da fun��o de destino"
+"Value of right cells in the Mask Grid"	"Valor de c�lulas da direita na grade de m�scara"
+"Value range"	"Faixa de valores"
+"Value to be replaced"	"Valor a ser substitu�do"
+"Value to reclassify."	"Valor de reclassifica��o."
+"Value which is assigned to the dummy grid."	"Valor que � atribu�do ao pr�-grade."
+"Values"	"Valores"
+"Values between A and B increase from 0 to 1, values between B and C will be set to 1."	"Os valores entre A e B com aumento de 0 a 1, os valores entre B e C ir�o ser definidos como 1."
+"Values between B and C will be set to 1, values between C and D decrease from 1 to 0."	"Os valores entre B e C ser� definida como 1, os valores entre C e D diminui��o de 1 a 0."
+"Values greater than D will be set to 0."	"Valores maiores que D ser�o definido como 0."
+"Values lower than A will be set to 0."	"Valores baixos de A ser�o definidos como 0."
+"Van der Grinten"	"Van der Grinten"
+"Var.cum."	"Var.cum."
+"Variable"	"Vari�vel"
+"Variance"	"Varia��o"
+"Variance (version 1)"	"Vari�ncia (vers�o 1)"
+"Variance (version 2)"	"Vari�ncia (vers�o 2)"
+"Variance Radius"	"Raio de vari�ncia"
+"Variance in Feature Space"	"Varia��o na fei��o do espa�o"
+"Variance in Position Space"	"Varia��o na posi��o espacial"
+"Variogram"	"Variograma"
+"Variogram (Dialog)"	"Variograma (Di�logo)"
+"Variogram Cloud"	"Variograma de nuvem"
+"Variogram Model"	"Modelo de variograma"
+"Variogram Settings"	"Configura��es de variograma"
+"Variogram Surface"	"Superf�cie de variograma"
+"Various Authors"	"V�rios Autores"
+"Various authors."	"V�rios autores."
+"Vector Ruggedness Measure (VRM)"	"Medida de robust�s de vetores (VRM)"
+"Vector Terrain Ruggedness (VRM)"	"Vetor Robustez de terreno (VRM)"
+"Vectorised class as..."	"Classe vetorizada como ..."
+"Vectorising Grid Classes"	"Classes de vetoriza��o da grade"
+"Vegetation"	"Vegeta��o"
+"Vegetation Index (Distance Based)"	"�ndice de vegeta��o (Baseado na dist�ncia)"
+"Vegetation Index (Slope Based)"	"�ndice de vegeta��o (Based na inclina��o)"
+"Vegetation Indices"	"�ndices de vegeta��o"
+"Vegetation parameters"	"Par�metros da vegeta��o"
+"Velocidad del viento"	"Velocidade do vento"
+"Velocidad del viento (km/h)"	"Velocidade do vento (km/h)"
+"Verbose"	"Verboso"
+"Verbose Messages"	"Mensagens detalhadas"
+"Verbose Output"	"Sa�da detalhada"
+"Version"	"Vers�o"
+"Vertex Distance [Degree]"	"Dist�ncia Vertex [Grau]"
+"Vertex Type"	"Tipo de vertex"
+"Vertex Updating"	"Atualiza��o de vertex"
+"Vertical"	"Vertical"
+"Vertical (drainage) flux [m/dt]"	"Vertical (drenagem) de fluxo [m/dt]"
+"Vertical Align"	"Alinhamento vertical"
+"Vertical Distance"	"Dist�ncia vertical"
+"Vertical Distance to Channel Network"	"Dist�ncia vertical para rede de canais"
+"Vertical Interpolation Method"	"M�todo de interpola��o vertical"
+"Vertical Offset"	"Deslocamento vertical"
+"Vertical Overland Flow Distance"	"Dist�ncia do fluxo vertical terrestre"
+"Vertical Range"	"Faixa Vertical"
+"Vertical Scaling"	"Escala vertical"
+"Vertical hatch"	"Escotilha vertical"
+"Vertical scaling factor"	"Fator de escala vertical"
+"Vertices"	"V�rtices"
+"Vertikale Zufluesse"	"Vertikale Zufluesse"
+"ViGrA"	"ViGrA"
+"Victor Olaya (c) 2004"	"Victor Olaya (c) 2004"
+"Victor Olaya (c) 2005"	"Victor Olaya (c) 2005"
+"View Distance"	"Ver dist�ncia"
+"Virtual"	"Virtual"
+"Visibility"	"Visibilidade"
+"Visibility (points)"	"Visibilidade (pontos)"
+"Visibility (single point)"	"Visibilidade (ponto �nico)"
+"Visible Sky"	"C�u vis�vel"
+"Visualization"	"Visualiza��o"
+"Visualization tools for grids."	"Ferramentas de visualiza��o para grades."
+"Visualization|3D Viewer"	"Visualiza��o|Visualiza��o 3D"
+"Visualization|Grid"	"Visualiza��o|Grade"
+"Vol. +"	"Vol. +"
+"Vol. -"	"Vol. -"
+"Volker Wichmann (c) 2010, LASERDATA GmbH"	"Volker Wichmann (c) 2010, LASERDATA GmbH"
+"Volker Wichmann (c) 2010-213, LASERDATA GmbH"	"Volker Wichmann (c) 2010-213, LASERDATA GmbH"
+"Volker Wichmann (c) 2012, LASERDATA GmbH"	"Volker Wichmann (c) 2012, LASERDATA GmbH"
+"Volker Wichmann (c) 2013, LASERDATA GmbH"	"Volker Wichmann (c) 2013, LASERDATA GmbH"
+"Volume: %f"	"Volume: %f"
+"Volumes"	"Volumes"
+"Votes"	"Votos"
+"W"	"W"
+"WARNING"	"AVISO"
+"WARNING: %d dataset(s) skipped because of incompatibilities!"	"AVISO: Conjunto de dados %dignorados devido a incompatibilidades!"
+"WARNING: %d dataset(s) skipped because they are empty!"	"AVISO: Conjunto de dados %d ignorados porque eles est�o vazios!"
+"WARNING: %d invalid points skipped!"	"AVISO: pontos %d inv�lidos e ignorado!"
+"WARNING: Skipping misformatted line: %d!"	"AVISO: Ignorando linha misformatted: %d!"
+"WARNING: selected attribute is not numeric; generating unique identifiers instead."	"AVISO: Atributo selecionado n�o � num�rico; gerar identificadores �nicos em vez disso."
+"WARNING: skipping non-numeric field '%s'!"	"AVISO: pular campo n�o num�rico '%s'!"
+"WARNING: smoothing sensitivity is greater than the number of iterations!"	"AVISO: sensibilidade de suaviza��o� maior do que o n�mero de itera��es!"
+"WARNING: unable to smooth line because Gaussian window too large (number of line vertices too small or sigma too big)."	"AVISO: suavidade de linha imposs�velporque a janela Gaussian � muito grande (n�mero de linha v�rtices muito pequeno ou muito grande sigma)."
+"WASP Map Files (*.map)"	"Arquivos de mapa WASP (*.map)"
+"WEDGEFAIL"	"WEDGEFAIL"
+"WETNESS"	"UMIDADE"
+"WHITE_BLUE"	"WHITE_BLUE"
+"WHITE_GREEN"	"WHITE_GREEN"
+"WHITE_RED"	"WHITE_RED"
+"WKT Files (*.wkt)"	"Arquivos WKT (*.wkt)"
+"WKT Import"	"Importar WKT"
+"WKT: %s"	"WKT: %s"
+"WMS Import"	"Importar WMS"
+"WMS Map"	"Mapa WMS "
+"WUse Einheit"	"WUse Einheit"
+"W_up"	"W_up"
+"Wa-Tor"	"Wa-Tor"
+"Waehlen ob TestRoutine 1 durchgefuehrt werden soll... 1) nur fuer Teileinzugsgebiet der HG-Rasterzelle oder 2) fuer das Flusseinzugsgebiet bis zum Erreichen der HG-Rasterzelle."	"Escolha se a rotina de teste para um progresso ... 1) Apenas para a sub-bacia do raster HG- ou 2) para a bacia do rio at� chegar ao raster HG."
+"Warm Cloud"	"Nuvem de calor"
+"Warning"	"AVISO"
+"Warning: there are more predictor variables then dependent ones, surplus will be ignored."	"Aviso: h� mais vari�veis de previs�o do que os dependentes, o excedente ser� ignorado."
+"Warping Shapes"	"Shapes deempenamento"
+"Water"	"�gua"
+"Water Content [cm]"	"Conte�do de �gua[cm]"
+"Water Retention Capacity"	"Capacidade de reten��o de �gua"
+"Water Vapour Pressure [mbar]"	"Press�o de vapor de �gua [mbar]"
+"Water content change across the wetting front"	"Mudan�a de teor de �gua em toda a frente molhar"
+"Water content of a vertical slice of atmosphere in cm: 1.5 to 1.7, average=1.68"	"Conte�do de �gua de uma fatia vertical da atmosfera em cm: 1.5 a 1.7, m�dia = 1,68"
+"Watershed Basins"	"Bacias hidrogr�ficas"
+"Watershed Basins (Extended)"	"Bacias hidrogr�ficas (Extendidas)"
+"Watershed Segmentation"	"Segmenta��o de bacias hidrogr�ficas"
+"Watershed Segmentation (ViGrA)"	"Segmenta��o de Bacias Hidrogr�ficas (ViGrA)"
+"Weather Records"	"Registros do Tempo"
+"Web Service Data Access"	"Acesso a dados Web Service"
+"Weight"	"Peso"
+"Weight for grid "	"Peso para grade"
+"Weight gradient term"	"Peso termo gradiente"
+"Weighted"	"Pesada"
+"Weighting"	"Pondera��o"
+"Weighting Function"	"Fun��o de pondera��o"
+"Weighting Neighbors"	"Vizinhos de pondera��o"
+"Weights"	"Pesos"
+"Well Known Text File"	"Arquivo de texto conhecido"
+"Well Known Text Format (*.wkt)"	"Arquivo de texto conhecido (*.wkt)"
+"Well Known Text file error"	"Erro no arquivo de texto conhecido"
+"West"	"Oeste"
+"West []"	"Oeste []"
+"West-East"	"Oeste-Leste"
+"Wetness"	"Umidade"
+"Wetness decline time constant (Tw)"	"Constante de tempo de decl�nio de umidade (Tw)"
+"Wetting front suction [m]"	"Suc��o frontal molhada [m]"
+"Where"	"Onde"
+"Wherry 1"	"Bote 1"
+"Wherry 2"	"Bote 2"
+"Width"	"Espessura"
+"Width (Cells)"	"Largura (Cells)"
+"Width given as percentage of map size"	"Largura dada em percentagem do tamanho do mapa"
+"Width of gradient filter"	"Largura de filtro gradiente"
+"Wind Direction"	"Dire��o do vento"
+"Wind Direction (degrees clockwise from north)"	"Dire��o do vento (graus no sentido hor�rio do norte)"
+"Wind Direction Units"	"Unidades de dire��o do vento"
+"Wind Effect"	"Efeito do vento"
+"Wind Effect (Windward / Leeward Index)"	"Efeito do vento (�ndice de barlavento/sotavento)"
+"Wind Exposition"	"Exposi��o do vento"
+"Wind Exposition Index"	"�ndice de exposi��o do vento"
+"Wind Speed"	"Velocidade do vento"
+"Wind Speed (m/s)"	"Velocidade do vento (m/s)"
+"Wind direction (degrees clockwise from north)"	"Dire��o do vento (graus no sentido hor�rio do norte)"
+"Wind speed (m/s)"	"Velocidade do vento (m/s)"
+"Window"	"Janela"
+"Windows or OS/2 Bitmap"	"Bitmap Windows ou OS/2 "
+"Windows or OS/2 Bitmap (*.bmp)"	"Bitmap Windows ou OS/2(*.bmp)"
+"Windward Factor"	"Fator de barlavento"
+"Winner Takes All"	"O vencedor leva tudo"
+"Wintergerste"	"Wintergerste"
+"Winterraps"	"Rampas de inverno"
+"Winterroggen"	"Winterroggen"
+"Winterweizen"	"Winterweizen"
+"Wire Frame Color"	"Cor da arma��o do quadro"
+"Wischmeier & Smith 1978"	"Wischmeier & Smith 1978"
+"Wombling (Edge Detection)"	"Wombling (Dire��o da borda)"
+"Wombling for Multiple Features (Edge Detection)"	"Wombling para m�ltiplas fun��es (Detec��o de borda)"
+"Wood Fuel Moisture"	"Umidade do combust�vel madeira"
+"Workspace"	"�rea de trabalho"
+"World File"	"Arquivo mundo"
+"World File from Flight and Camera Settings"	"Arquivo mundo de voo e das configura��es da c�mera"
+"Write Field Names"	"Nomes de escrita de campo"
+"Write Header"	"Escrever cabe�alho"
+"Write all calculated Time Series in a table?"	"Escrever todas as s�ries temporais calculadas em uma tabela?"
+"Write column names."	"Escrever nomes das colunas."
+"Write one point cloud dataset for each polygon"	"Escrever um conjunto de dados de n�vem de pontos para cada pol�gono"
+"Writing dataset failed."	"Falha ao escrever conjunto de dados."
+"X"	"X"
+"X / GR"	"X / GR"
+"X / V"	"X / V"
+"X / X"	"X / X"
+"X Axis"	"X Axis"
+"X Component"	"Componente X"
+"X Coordinates"	"Coordenada X"
+"X Grid 1"	"Grade X 1"
+"X Position"	"Posi��o X"
+"X Range"	"Alcance X"
+"X Values"	"Valores X"
+"X World"	"Mundo X"
+"X is Column ..."	"X � uma coluna ..."
+"X offset"	"Deslocamento X"
+"X, Y"	"X, Y"
+"X, Y, Z"	"X, Y, Z"
+"X, Y, Z, M"	"X, Y, Z, M"
+"X-Coordinate"	"Coordenada X"
+"X-Extent"	"Extens�o X"
+"X-Range"	"Alcance X"
+"X-Rotation"	"Rota��o X"
+"X11 Pixel Map"	"Mapa de pixel X11"
+"XML Files"	"Arquivos XML"
+"XML Files (*.xml)"	"Arquivos XML (*.xml)"
+"XMax: %.6f"	"XMax: %.6f"
+"XMin: %.6f"	"XMin: %.6f"
+"XYZ Files (*.xyz)"	"Arquivos XYZ (*.xyz)"
+"XYZ files (*.xyz)"	"Arquivos XYZ (*.xyz)"
+"Y"	"Y"
+"Y = a * X^b (power)"	"Y = a * X^b (iniciar)"
+"Y = a + b * X (linear)"	"Y = a + b * X (linear)"
+"Y = a + b * ln(X) (logarithmic)"	"Y = a + b * ln(X) (logar�timico)"
+"Y = a + b / X"	"Y = a + b / X"
+"Y = a / (b - X)"	"Y = a / (b - X)"
+"Y = a e^(b * X) (exponential)"	"Y = a e^(b * X) (exponencial)"
+"Y Axis"	"Y Axis"
+"Y Component"	"Componente Y"
+"Y Coordinates"	"Coordenada Y"
+"Y Grid 1"	"Grade Y 1"
+"Y Position"	"Posi��o Y"
+"Y Range"	"Alcance Y"
+"Y Values"	"Valor Y"
+"Y World"	"Mundo Y"
+"Y is Column ..."	"Y � uma coluna ..."
+"Y offset"	"Deslocamento Y"
+"Y-Coordinate"	"Coordenada Y"
+"Y-Extent"	"Extens�o Y"
+"Y-Range"	"Alcance Y"
+"Y-Rotation"	"Rota��o Y"
+"YELLOW_BLUE"	"YELLOW_BLUE"
+"YELLOW_GREEN"	"YELLOW_GREEN"
+"YELLOW_RED"	"YELLOW_RED"
+"YMax: %.6f"	"YMax: %.6f"
+"YMin: %.6f"	"YMin: %.6f"
+"Year"	"Ano"
+"Year [ka]"	"Ano [ka]"
+"Yoshimasa Tsuruoka"	"Yoshimasa Tsuruoka"
+"You can specify the number of layers in the network (including input and output layer)."	"Voc� pode especificar o n�mero de camadas na rede (incluindo a camada de entrada e sa�da)."
+"You can specify the number of neurons in each layer of the network."	"Voc� pode especificar o n�mero de neur�nios de cada camada na rede."
+"You canceled printing"	"Voc� cancelou a impress�o"
+"You must specify a reclass table with a minimium (field 1), a maximum (field 2) and a code value (field 3)!\n"	""
+"You must specify a reclass table with a minimium of one record!\n"	""
+"You must specify at least one attribute to drop!"	"Voc� apenas especifica o ultimo atributo para corte!"
+"You need to specify a operation control grid as input!\n"	""
+"Z"	"Z"
+"Z Attribute"	"Atributo Z"
+"Z Axis"	"Z Axis"
+"Z Multiplier"	"Multiplicador Z"
+"Z Value"	"Valor Z"
+"Z Values"	"Valores Z"
+"Z is Column ..."	"Z � uma coluna ..."
+"Z-Offset"	"Deslocamento Z"
+"Z-Range"	"Alcance Z"
+"Z-Rotation"	"Rota��o Z"
+"Z-Scale"	"Escala Z"
+"ZMax"	"ZMax"
+"ZMax: %.6f"	"ZMax: %.6f"
+"ZMin"	"ZMin"
+"ZMin: %.6f"	"ZMin: %.6f"
+"ZONE"	"ZONA"
+"Zenith"	"Zenith"
+"Zero"	"Zero"
+"Zero as No-Data"	"Zero � um SemDados"
+"Zevenbergen & Thorne"	"Zevenbergen & Thorne"
+"Zevenbergen & Thorne (1987) refer to this as plan curvature"	"Zevenbergen & Thorne (1987) refer to this as plan curvature"
+"Zevenbergen & Thorne (1987) refer to this as profile curvature"	"Zevenbergen & Thorne (1987) refer to this as profile curvature"
+"Zonal Multiple Regression Analysis (Points and Predictor Grids)"	"An�lise de regress�o multipla Zonal (Prontos e grades preditoras)"
+"Zonal Statistics"	"Estat�sticas Zonal"
+"Zone"	"Zona"
+"Zone Grid"	"Zona da grade"
+"Zones"	"Zonas"
+"Zoom"	"Visualizar"
+"Zoom To Active Layer"	"Zona para a camada ativa"
+"Zoom To Extent"	"Zoom para a extens�o"
+"Zoom To Full Extent"	"Zoom para toda a extens�o"
+"Zoom To Next Extent"	"Zoom para a pr�xima extens�o"
+"Zoom To Previous Extent"	"Zoom para a extens�o anterior"
+"Zoom To Selection"	"Zoom para a sele��o"
+"Zoom View"	"Visualizar zoom"
+"Zoom to added layer"	"Zoom para a camada adicionada"
+"Zsoft Paintbrush"	"Pincel Zsoft "
+"Zsoft Paintbrush (*.pcx)"	"Pincel Zsoft(*.pcx)"
+"Zuckerrueben"	"Cultura de beterraba"
+"[CAP] Save to PDF"	"[PAC] Salvar em PDF"
+"[ERR] Could not save PDF file."	"[ERR] N�o foi poss�vel salvar o arquivo PDF."
+"[FLD] Attribute"	"[FLD] Atributo"
+"[FLD] Grid"	"[FLD] Grade"
+"[FLD] Icon"	"[FLD] �cone"
+"[FLD] Index Layer"	"[FLD] �ndice da camada"
+"[FLD] PDF Document"	"[FLD] Documento PDF"
+"[FLD] Paper Format"	"[FLD] Formato da folha"
+"[FLD] Round Scale"	"[FLD] Escala Redonda"
+"[FLD] SVG File"	"[FLD] Arquivo SVG "
+"[FLD] Shapes"	"[FLD] Shapes"
+"[FLD] Title"	"[FLD] T�tulo"
+"[MSG] Save as Interactive SVG"	"[MSG] Salvar como arquivo Interativo SVG"
+"[MSG] Save to PDF"	"[MSG] Salvar em PDF"
+"[MSG] failed"	"[MSG] falhou"
+"[MSG] okay"	"[MSG] ok"
+"[deprecated] Point Cloud Viewer"	"[obsoleta] Visualizador de nuvem de pontos"
+"[deprecated] TIN Viewer"	"[obsoleta] Visualizador TIN "
+"[not set]|"	"[n�o definida] |"
+"\n** Error : Invalid parameters **\n"	""
+"\nError: Please verify your xMin, yMin, xMax, yMax settings!\n"	""
+"\nError: the method Extent by Grid(s) requires grid(s) as input!\n"	""
+"\nError: the method Extent by Shape(s) requires shape(s) as input!\n"	""
+"\nNumber of Clusters"	""
+"\nNumber of Variables"	""
+"\nRMS  of Residuals (stdfit):\t%f\n"	""
+"\nValue of Target Function"	""
+"\n\n ** Error : Could not close PDF engine ** \n\n"	""
+"\n\n ** Error : Could not save PDF file ** \n\n"	""
+"_TL"	"_TL"
+"a * b"	"a * b"
+"a + b * (1 - exp(-(x / c)^2))"	"a + b * (1 - exp(-(x / c)^2))"
+"a + b * (1 - exp(-x / c))"	"a + b * (1 - exp(-x / c))"
+"a + b - a * b"	"a + b - a * b"
+"a + b / x"	"a + b / x"
+"a double number of the discretization threshold; set to 0 to make binarization"	"um n�mero dobro do limiar de discretiza��o; definido como 0 para fazer binariza��o"
+"a(q)"	"a(q)"
+"a(q) [lower bound]"	"a(q) [limite inferior]"
+"a(q) [upper bound]"	"a(q) [limite superior]"
+"a(s)"	"a(s)"
+"a(s) [lower bound]"	"a(s) [limite inferior]"
+"a(s) [upper bound]"	"a(s) [limite superior]"
+"abort export"	"abortar exporta��o"
+"absolute"	"absoluto"
+"absolute catchment area"	"�rea de capta��o absoluta"
+"access violation"	"viola��o de acesso"
+"accucapacityflux / state"	"capacidade de fluxo acumulado / estado"
+"accuflux"	"accuflux"
+"accufractionflux / state"	"accufractionflux / estado"
+"accuthresholdflux / state"	"accuthresholdflux / estado"
+"accutriggerflux / state"	"accutriggerflux / estado"
+"add"	"adicionar"
+"add buffer (map units) to extent"	"adicionar buffer (unidades do mapa) para a extens�o"
+"add to current selection"	"adicionar � sele��o atual"
+"added"	"adicionado"
+"adjusted"	"ajustado"
+"after"	"ap�s"
+"aggregated"	"agregado"
+"align grid to coordinate system"	"alinhar grade ao sistema de coordenadas"
+"align to grid system"	"alinhar ao sistema de grade"
+"all"	"todos"
+"all attributes"	"todos os atributos"
+"all classes"	"todas as classes"
+"all directions"	"todas as dire��es"
+"all entities"	"todas as entidades"
+"all lines"	"todas as linhas"
+"all points within search distance"	"todos os pontos dentro de dist�ncia de busca"
+"all quadrants"	"todos os quadrantes"
+"all shapes"	"todas os shapes"
+"all sides"	"todos os lados"
+"already in transaction"	"j� em opera��o"
+"alternating scale bar"	"barra de escala alternada"
+"alternative"	"alternativa"
+"always ask what to do"	"sempre perguntar o que fazer"
+"analyzing"	"Analisando"
+"angle calculation is only available when exact two features are compared"	"o c�lculo do �ngulo s� est� dispon�vel quando duas caracter�sticas exatas s�o comparados"
+"another grid"	"outra grade"
+"append records, if table structure allows"	"acrescentar registros, se a estrutura da tabela permite"
+"appending to existing table"	"anexando a tabela existente"
+"apply coordinate transformation if appropriate"	"Aplique transforma��o de coordenadas, se necess�rio"
+"apply linear flow routing (D8) to all cells, having a flow accumulation greater than the specified threshold"	"aplicar fluxo linear de encaminhamento (D8) para todas as c�lulas, com uma acumula��o de fluxo maior que o limite especificado"
+"approximating points..."	"Pontos de aproxima��o ..."
+"are completely within"	"est�o completamente dentro"
+"are in the specified directory.\n"	""
+"area"	"�rea"
+"arrow"	"seta"
+"arrow (centered to cell)"	"seta (centralizado para celular)"
+"ascending"	"ascendente"
+"aspect 1"	"aspecto 1"
+"aspect 2"	"aspecto 2"
+"aspect 3"	"aspecto 3"
+"at least two contents (sand, silt, clay) have to be given"	"pelo menos dois conte�dos (areia, silte, argila) t�m de ser dadas"
+"at position"	"na posi��o"
+"attribute"	"atributo"
+"attribute contains search expression"	"o atributo cont�m a express�o de busca"
+"attribute is contained in search expression"	"o atributo est� contido na express�o de busca"
+"attribute is identical with search expression"	"o atributo � id�ntico a express�o de pesquisa"
+"attribute to be searched; if not set all attributes will be searched"	"o atributo a ser pesquisado; se n�o definir todos os atributos ser�o procurados"
+"attributes must be more than 1"	""
+"author      "	""
+"automatically"	"automaticamente"
+"average"	"m�dia"
+"average distance that a cell's accumulated flow travelled"	""
+"average size of the area covered by each category that occurs within search area"	"tamanho m�dio da �rea coberta por cada categoria que ocorre dentro da �rea de busca"
+"average value"	"valor m�dio"
+"avoids precision problems when source and target crs use different geodedtic datums."	"evita problemas de precis�o quando a origem e de destino crs usar diferentes pontos de refer�ncia geodedtic."
+"b(q)"	"b(q)"
+"b(q) [lower bound]"	"b(q) [limite inferior]"
+"b(q) [upper bound]"	"b(q) [limite superior]"
+"backward"	"para tr�s"
+"band transformation"	"transforma��o de banda"
+"band width search"	"busca de largura de banda"
+"band width smoothing"	"largura de banda de alisamento"
+"bar"	"barra"
+"bar (not outlined)"	"barra (n�o esbo�ado)"
+"basic SIA model"	"modelo b�sico SIA"
+"before"	"antes"
+"before tool execution check failed"	"a checagem da ferramenta falhou antes da execu��o"
+"begin transaction command failed"	"comando de transa��o falhou antes da execu��o"
+"between cells"	"entre as c�lulas"
+"bi-linear saddle"	"sela bi-linear"
+"bilinear"	"bilinear"
+"binary"	"bin�rio"
+"bit"	"bit"
+"black > blue"	"preto > azul"
+"black > green"	"preto > verde"
+"black > red"	"preto > vermelho"
+"black hat"	"hat preto"
+"blend boundary"	"limite de mistura"
+"blending distance given in map units"	"dist�ncia de mistura dada em unidades do mapa"
+"blue channel color"	"cor do canal azul "
+"bm"	"bm"
+"both"	""
+"bottom"	"inferior"
+"bottom / left"	"inferior / esquerdo"
+"bottom left"	"inferior esquerdo"
+"bottom right"	"inferior direito"
+"bottom up"	"de baixo para cima"
+"bottom-left"	"inferior-esquerdo"
+"bottom-right"	"inferior direito"
+"bright - dark"	"claro - escuro"
+"built-in"	"constru�das em"
+"by area size"	""
+"by number of cells"	""
+"c, Percentage clays [%]"	"c, argilas percentuais [%]"
+"cache memory size in MB"	"tamanho do cache de mem�ria em MB"
+"calculate averages"	"calcular m�dias"
+"calculate from grid system"	"calcular, a partir do sistema da grade"
+"calculate gradient magnitude"	"calcular gradiente de magnitude"
+"calculate gradients"	"calcular gradientes"
+"calculating splines..."	"c�lcular estrias (splines) ..."
+"calculating variance"	"c�lculo de vari�ncia"
+"cartesian"	"cartesiano"
+"catchment area and slope..."	"�rea de capta��o e inclina��o ..."
+"catchment length (square root of catchment area)"	"comprimento de capta��o (raiz quadrada da �rea de capta��o)"
+"catchment slope"	"inclina��o de capta��o"
+"catchment specific parameter for sediment delivery ratio calculation"	"par�metro espec�fico para capta��o de sedimentos c�lculo da taxa de entrega"
+"categorical"	"categ�rico"
+"category and library name"	"nome da categoria e biblioteca"
+"cell"	"c�lula"
+"cell area"	"�rea celular"
+"cells"	"c�lulas"
+"cells in process"	""
+"cellsize and lower left center coordinates"	"tamano da c�lula e coordenadas menores do centro-esquerda"
+"cellsize and lower left corner coordinates"	"tamanho da c�lula ecoordenadas canto inferior esquerdo"
+"cellsize and upper left center coordinates"	"tamanho da c�lula e cotas do centro superior esquerdo"
+"cellsize and upper left corner coordinates"	"tamanho da c�lula e coordenadas do canto superior esquerdo"
+"center"	"centro"
+"center cell's aspect direction"	"dire��o do aspecto da c�lula central"
+"centered"	"centralisado"
+"central"	"central"
+"change"	"alterar"
+"check for building parts failed"	"verificar se h� partes de constru��o falhou"
+"check this in case parameter 'water' is absolute water level"	"verificar isso no par�metro caso a �gua seja o n�vel de �gua absoluta"
+"check this in case seed cells are coded with absolute water level"	"verificar isso no caso de c�lulas de sementes sejam codificadas com n�vel de �gua absoluta"
+"checked"	"verificado"
+"choose vertex type for resulting contours"	"escolher o tipo de v�rtice para o resultando dos contornos"
+"circle"	"c�rculo"
+"circle in rhombus"	"c�rculo em losango"
+"circle in square"	"c�rculo em quadrado"
+"circle in triangle (down)"	"c�rculo em tri�ngulo (para baixo)"
+"circle in triangle (up)"	"c�rculo em tri�ngulo (para cima)"
+"circle with rhombus"	"c�rculo com losango"
+"circle with square"	"c�rculo com quadrado"
+"circle with triangle (down)"	"c�rculo com tri�ngulo (para baixo)"
+"circle with triangle (up)"	"c�rculo com tri�ngulo (para cima)"
+"class identification"	"identifica��o de classe"
+"classification"	"classifica��o"
+"clay content given as percentage"	"teor de argila dado em porcentagem"
+"clean inner rings"	"an�is internos limpos"
+"clip extent does not match extent of input grids"	"extens�o de corte n�o corresponde � extens�o das grades de entrada"
+"clip extent does not match grid's extent"	"extens�o de corte n�o corresponde com aextens�o da grade"
+"clip features"	"cortar fei�oes"
+"clipped"	"cortados"
+"clockwise"	"no sentido hor�rio"
+"closing"	"fechamento"
+"coef0"	"coef0"
+"coef0 in kernel function"	"coef0 em fun��o do kernel"
+"collecting background data"	"coleta de dados de fundo"
+"collecting elements"	"coleta de elementos"
+"collecting presence data"	"coletando dados de presen�a"
+"color"	"cor"
+"colors"	"cores"
+"columns"	"colunas"
+"comma"	"v�rgula"
+"comma (,)"	"v�rgula (,)"
+"command execution failed"	"a execu��o do comando falhou"
+"commit"	"cometer"
+"commit transaction command failed"	"comando transa��o falhou ao cometer"
+"complete input times near points matrix"	"tempos de entrada completos pr�ximos da matriz de pontos"
+"completely contain"	"completamente centralizado"
+"completely contained"	"completamente contido"
+"concavity"	"concavidade"
+"confirm"	"confirmar"
+"confirm with options"	"confirmar com op��es"
+"constant direction into the wind blows, given as degree"	"dire��o constante em que o vento sopra, dado em grau"
+"constant histogram stretch for all time steps"	"trecho do histograma constante para todas as etapas de tempo"
+"constant latitude"	"latitude constante"
+"contain the centeroid of"	"conter o centeroide de"
+"continue"	"continuar"
+"continuous"	"cont�nuo"
+"conventional eight-neihbourhood"	"convencional de oito vizinhan�as"
+"conventional four-neighbourhood"	"quatro vizinhos convencional"
+"convexity"	"convexidade"
+"coordinates (offset, range, cell size, tile size)"	"coordenadas (offset, escala, tamanho da c�lula, o tamanho da quadr�cula)"
+"copying"	"c�pia"
+"copyrights (c) 2006 Stefan Liersch"	"direitos autorais (c) 2006 Stefan Liersch"
+"corner"	"canto"
+"corrected"	"corrigido"
+"correlation matrix"	"matriz de correla��o"
+"corrupted file header"	"cabe�alho do arquivo corrompido"
+"corrupted record header"	"cabe�alho de registro corrompido"
+"corrupted shapefile."	"shapefile corrompido."
+"could allocate memory for scaled grid"	"foi poss�vel alocar mem�ria para a grade em escala"
+"could not access raster table"	"n�o foi poss�vel acessar a tabela raster"
+"could not access table"	"n�o foi poss�vel acessar a tabela"
+"could not add save point"	"N�o foi poss�vel adicionar o ponto salvo"
+"could not allocate memory for temporary grid."	"n�o foi poss�vel alocar mem�ria para a grade tempor�ria."
+"could not allocate sufficient memory"	"n�o foi poss�velalocar mem�ria suficiente"
+"could not commit/rollback transactions."	"n�o foi poss�vel cometer transa��es / revers�o."
+"could not connect ODBC source"	"n�o foi poss�vel se conectar � fonte ODBC"
+"could not connect to PostgreSQL source"	"n�o foi poss�vel se conectar � fonte de PostgreSQL"
+"could not connect to database."	"n�o poderia estar conectado � base de dados."
+"could not create KML file"	"n�o foi poss�vel criar arquivo KML"
+"could not create distance grid"	"n�o conseguiu criar grade de dist�ncia"
+"could not create geometry field"	"n�o foi poss�vel criar campo da geometria"
+"could not create index on observations"	"n�o foi poss�vel criar �ndice em observa��es"
+"could not create index: insufficient memory"	"n�o foi poss�vel criar �ndice: Mem�ria insuficiente"
+"could not create new PostgreSQL database"	"n�o conseguiu criar um novo banco de dados PostgreSQL"
+"could not create table"	"n�o foi poss�vel criar tabela"
+"could not create target grid"	""
+"could not create weights grid"	"n�o conseguiu criar pesos de grade"
+"could not disconnect ODBC source"	"n�o pode desligar a fonte ODBC"
+"could not disconnect PostgreSQL source"	"n�o foi poss�vel desligar a fonte PostgreSQL"
+"could not disconnect and drop PostgreSQL database"	"n�o foi poss�vel se desconectar do banco de dados PostgreSQL"
+"could not drop PostgreSQL database"	"n�o foi poss�vel deixar desconectar do banco de dados PostgreSQL"
+"could not execute module"	"n�o foi poss�vel executar o m�dulo"
+"could not execute tool"	"n�o foi poss�vel executar a ferramenta"
+"could not find module"	"N�o conseguimos encontrar o m�dulo"
+"could not find tool"	"N�o conseguimos encontrar a ferramenta"
+"could not import random forest"	"n�o foi poss�vel importar a floresta aleat�ria"
+"could not initialize classifier from file"	"n�o foi poss�vel inicializar o classificador de arquivo"
+"could not initialize classifier from training areas"	"n�o foi poss�vel inicializar o classificador de �reas de forma��o"
+"could not initialize cluster engine"	"n�o foi poss�vel inicializar o motor de cluster"
+"could not initialize data objects"	"n�o foi poss�vel inicializar os objetos de dados"
+"could not initialize kernel"	"n�o foi poss�vel p�de inicializar do kernel"
+"could not initialize module"	"n�o foi poss�vel inicializar o m�dulo"
+"could not initialize reference point search engine"	"n�o foi poss�velinicializar refer�ncia de ponto do motor de busca"
+"could not initialize search engine for hills"	"n�o foi poss�velinicializar o buscador de colinas"
+"could not initialize search engine for valleys"	"n�o foi poss�vel inicializarbuscador de vales"
+"could not initialize search kernel"	"n�o foi poss�vel inicializar a pesquisa do kernel"
+"could not initialize tool"	"n�o foi poss�vel inicializar a ferramenta"
+"could not load file"	"N�o foi poss�vel carregar o arquivo"
+"could not load model from file"	"n�o pode carregar o modelo de arquivo"
+"could not load raster"	"N�o foi poss�vel carregar o raster"
+"could not locate line string to polygon conversion tool"	"n�o conseguimos localizar a seq��ncia de linha para ferramenta de convers�o de pol�gonos"
+"could not open GetMap stream"	"n�o foi poss�vel abrir fluxo GetMap"
+"could not open data source"	"n�o foi poss�vel abrir a fonte de dados"
+"could not open file"	"n�o p�de abrir arquivo"
+"could not open model file"	"n�o foi poss�vel abrir o arquivo de modelo"
+"could not read headline"	"n�o foi poss�vel ler a linha de cabe�alho"
+"could not read image"	"n�o foi poss�vel ler a imagem"
+"could not read metadata file"	"n�o foi poss�vel ler o arquivo de metadados"
+"could not read project file."	"n�o foi poss�vel ler arquivo de projeto."
+"could not save image file"	"n�o foi poss�vel salvar arquivo de imagem"
+"could not save model to file"	"n�o foi poss�vel salvar o modelo para arquivo"
+"could not save shape"	"n�o foi poss�vel salvar o shape"
+"could not start transaction"	"N�o foi poss�vel iniciar a transa��o"
+"counterclockwise"	"sentido anti-hor�rio"
+"counting cells"	"contagem de c�lulas"
+"create data source"	"criar fonte de dados"
+"create from training areas"	"criar a partir de �reas de forma��o"
+"create layer"	"criar camada"
+"create model from training areas"	"criar modelo de �reas de forma��o"
+"created from history"	"criado a partir do hist�rico"
+"creating batch file example"	"criando exemplo de arquivo em lotes"
+"creating interpolator"	"criando interpolator"
+"creating tool documentation files"	"cria��o de arquivos de documenta��o de ferramentas"
+"cross"	"atravessar"
+"cubic convolution"	"convolu��o c�bica"
+"cubic surface"	"superf�cie c�bica"
+"cyan - white"	"ciano - branco"
+"dX"	"dX"
+"dX (Map Units)"	"dX (Mapa de unidades)"
+"dY"	"dY"
+"dY (Map Units)"	"dY (Mapa de unidades)"
+"dZ"	"dZ"
+"dZ (Map Units)"	"dZ (Mapa de unidades)"
+"dark - bright"	"escuro - claro"
+"dark object subtraction 1"	"subtra��o de objeto escuro 1"
+"dark object subtraction 2"	"subtra��o de escuro objeto2"
+"dark object subtraction 2b"	"subtra��o objeto escuro 2b"
+"dark object subtraction 3"	"subtra��o de objetoescuro 3"
+"dark object subtraction 4"	"subtra��o de objetoescuro 4"
+"data / no-data"	"dados / SemDados"
+"data file could not be openend"	"arquivo de dados n�o p�de ser aberto"
+"data set has no attributes"	"conjunto de dados n�o tem atributos"
+"database table does not exist"	"a tabela de banco do dados n�o existe"
+"date"	"data"
+"day"	"dia"
+"dbf read: could not open file"	"leitura dbf: n�o foi poss�vel abrir arquivo"
+"dbf read: could not read header"	"leitura dbf: n�o foi poss�vel ler o cabe�alho"
+"dbf write: could open file"	"escrita dbf: p�de abrir arquivo"
+"dbf write: invalid table"	"escrita dbf: tabela inv�lida"
+"dd.mm.yy"	"dd.mm.yy"
+"dd:mm:yy"	"dd:mm:yy"
+"ddmmyy, fix size"	"ddmmyy, corrigir tamanho"
+"ddmmyyyy, fix size"	"ddmmyyyy, fix size"
+"default"	"padr�o"
+"default (same brightness)"	"padr�o (mesmo brilho)"
+"default value if no attribute has been selected"	"valor padr�o se nenhum atributo for selecionado"
+"default value if no grid has been selected"	"valor padr�o se nenhuma grade foi selecionada"
+"defines the maximum resolution [km] for the re-projected distance segments"	"define a resolu��o m�xima [km] para os segmentos de dist�ncia re-projetada"
+"degree"	"grau"
+"degree in kernel function"	"medida em fun��o do kernel"
+"degree to radians"	"medida em radianos"
+"degrees of freedom"	"degrees of freedom"
+"delete data source"	"excluir fonte de dados"
+"delete feature"	"excluir fei��o"
+"delete layer"	"excluir camada"
+"delivery index calculation failed"	"Falha no c�lculo do �ndice de entrega"
+"descending"	"descendente"
+"diffuse pollution risk calculation failed"	"o c�lculo de risco de polui��o difusa falhou"
+"digital elevation model"	"modelo digital de eleva��o"
+"digital elevation model [m]"	"modelo digital de eleva��o [m]"
+"digitzing a polygon"	"digitalizar um pol�gono"
+"dilation"	"dilata��o"
+"direction"	"dire��o"
+"direction of scan flag"	"dire��o da bandeira de digitaliza��o"
+"direction of sun (degree, clockwise from North)"	"dire��o do sol (grau, no sentido hor�rio do norte)"
+"direction to the center cell"	"dire��o para a c�lula central"
+"directional1 average for Grids"	"m�dia directional1 para grades"
+"disabling might help to shut down faster, particularly if started from slow devices"	"desativando poderia ajudar a encerrar o processo mais r�pido, especialmente se iniciado a partir de dispositivos lentos"
+"dissolved inner rings"	"an�is internos dissolvidos"
+"distance"	"dist�ncia"
+"distance weighted average catchment slope"	"inclina��o de dist�ncia m�dia ponderada de capta��o "
+"distance weighted average of the number of different categories for distance classes"	""
+"do not confirm"	"n�o confirmam"
+"do not join"	"n�o aderir"
+"do not show"	"n�o mostrar"
+"do not sort"	"n�o classificar"
+"do not update"	"n�o atualizar"
+"down"	"diminui��o"
+"downscaling"	"diminui��o gradual"
+"dragging a box"	"arrastando uma caixa"
+"driver not found."	"o controlador n�o foi encontrado."
+"dropping table"	"soltar tabela"
+"duplicates have been identified."	"duplicados foram identificados."
+"e"	"e"
+"each island as separated polygon"	"cada ilha como pol�gono separados"
+"each pair with a single record"	"cada par com um �nico registro"
+"each shape"	"cada shape"
+"each shape's part"	"parte de cada shape"
+"edge cells"	"c�lulas de borda"
+"edge collection"	"cole��o de borda"
+"edge detection"	"detec��o de bordas"
+"edge of flight line flag"	"bandeira da linha de v�o de borda"
+"effective flow length"	"comprimento eficaz de fluxo"
+"effective friction = stated friction ^f , where f = cos(DifAngle)^k."	""
+"eight-neihbourhood"	"oito vizinhos"
+"eight-neihbourhood (distance based weighting)"	"oito vizinhos (pondera��o com base na dist�ncia)"
+"elevation"	"eleva��o"
+"elevation and roughness"	"eleva��o e aspereza"
+"elevation threshold used to identify hills/valleys"	"limite de altitude utilizado para identificar colinas / vales"
+"ellipse"	"elipse"
+"empty"	"vazio"
+"empty coded function"	"fun��o codificada vazia"
+"empty or corrupted file"	"arquivo vazio ou corrompido"
+"enumeration"	"enumera��o"
+"epsilon in loss function of epsilon-SVR"	"epsilon em fun��o de perda de epsilon-SVR"
+"epsilon-SVR"	"epsilon-SVR"
+"equal"	"igual"
+"equal intervals"	"intervalos iguais"
+"erosion"	"eros�o"
+"error"	"erro"
+"error in formula"	"erro na f�rmula"
+"error loading data file"	"erro no arquivo de dados de carregamento"
+"error reading index file"	"arquivo de �ndice de leitura de erro"
+"error saving data file"	"salvar arquivo de dados de erro"
+"error saving index file"	"arquivo de �ndice de salvamento de erro"
+"exclude range"	"excluir alcance"
+"executing tool"	"ferramenta de execu��o"
+"expand"	"expandir"
+"expand and shrink"	"expandir e encolher"
+"expected"	"esperado"
+"expected to be the second of day"	"Espera-se que seja o segundo dia de"
+"explained cumulative variance"	"vari�ncia acumulada explicada"
+"explained variance"	"vari�ncia explicada"
+"exponential"	"exponencial"
+"export grid"	"exportar grade"
+"extent of lake, coded with local water depth"	"extens�o do lago, codificado com profundidade de �gua local"
+"extent of lake, coded with water depth"	"extens�o do lago, codificado com profundidade de �gua"
+"faces"	"faces"
+"faces and wire"	"faces e fio"
+"failed"	"falhou"
+"failed to create index for table"	"Falha ao criar �ndice para a tabela"
+"failed to create polygon clipping mask"	"n�o foi poss�vel criar m�scara de corte de pol�gono"
+"failed to create searche engine"	"n�o foi poss�vel criar motor de pesquisa"
+"failed to estimate target extent"	"n�o foi possivel estimar extens�o alvo"
+"failed to initialise search engine"	"falhou ao inicializar motor de busca"
+"failed to initialize target grid"	"Falha ao inicializar a grade alvo"
+"failed to launch default application"	"n�o foi poss�vel lan�ar o aplicativo padr�o"
+"failed to load KML ground overlay icon"	"Falha ao carregar KML �cone superposi��o de solo"
+"failed to load data"	"Falha ao carregar dados"
+"failed to load file"	"Falha ao carregar arquivo"
+"failed to load georeference for KML ground overlay"	"Falha ao carregar georreferenciamento para KML de superposi��o de solo"
+"failed to load or parse xml file"	"Falha ao carregar ou analisar arquivo xml"
+"failed to project target grid"	"n�o conseguiu projetar grade alvo"
+"failed to retrieve map image data"	""
+"failed to set radius"	"Falha ao definir raio"
+"failed: could not find a suitable import driver"	"falhou: n�o foi poss�vel encontrar um controlador de importa��o adequado"
+"fat"	"gordo/expesso"
+"feathering"	"difus�o"
+"feature has been dropped"	"O recurso foi descartado"
+"feature space"	"espa�o de fei��es"
+"feature space and position"	"espa�o de fei��es e posi��o"
+"field cannot be mapped to binary object"	"o campo n�o pode ser mapeado para objeto bin�rio"
+"fields layer does not contain any records"	"a camada de campos n�o cont�m quaisquer registros"
+"file could not be opened"	"o arquivo n�o p�de ser aberto"
+"file could not be opened."	"o arquivo n�o p�de ser aberto."
+"file does not exist."	"o arquivo n�o existe."
+"file not found"	"arquivo n�o encontrado"
+"file path, name and type used to save frames to image files"	"caminho do arquivo, o nome e o tipo usado para salvar quadros para arquivos de imagem"
+"fill sinks permanently"	"encher pias permanentemente"
+"fill sinks temporarily"	"encher pias temporariamente"
+"find inner rings"	"encontrar an�is internos"
+"find local minima"	"encontrar m�nimos locais"
+"first"	"primeiro"
+"first point"	"primeiro ponto"
+"first value"	"primeiro valor"
+"fit histogram stretch for each time step"	"ajuste de estriamento do histograma para cada passo de tempo"
+"fit to each grid"	"ajustar a cada grade"
+"fit to overall range"	"ajustar ao alcance global"
+"fit to overall standard deviation"	"ajustar ao desvio padr�o global"
+"fit to page"	"Ajustar � p�gina"
+"fit to value"	"ajustar a valorizar"
+"fitted interval"	"intervalo equipada"
+"fitting a polynom of ith order needs at least i + 1 samples"	"montagem de um polynom de ordem om precisa de pelo menos i + 1 amostras"
+"fixed"	"fixo"
+"fixed cell height"	"altura da c�lula fixa"
+"fixed interval"	"intervalo fixo"
+"fixed value"	"valor fixo"
+"floating"	"flutuante"
+"floating point"	"ponto flutuante"
+"flow accumulation threshold (cells) for linear flow routing"	"fluxo de acumula��o limiar (c�lulas) para roteamento de fluxo linear"
+"flow depth [m] for flow travel time estimation"	"fluir profundidade [m] para o fluxo de estimativa de tempo de viagem"
+"flow directions..."	"dire��es de fluxo ..."
+"flow travel time to channel expressed in hours based on Manning's Equation"	"fluir o tempo de viagem para o canal expresso em horas com base na equa��o de Manning"
+"flow width (original)"	"largura de fluxo (inicial)"
+"forward"	"para a frente"
+"found less than two categories, nothing to do"	"encontrados a menos de duas categorias, nada a ver"
+"four-neighbourhood"	"quatro vizinhan�as"
+"from line center"	"do centro da linha"
+"from list"	"da lista"
+"full frame"	"quadro completo"
+"function fitting failed !"	"fun��o de encaixe falhou!"
+"function not found"	"fun��o n�o encontrada"
+"function table full"	"tabela de fun��o completa"
+"gamma in kernel function"	"gamma em fun��o do kernel"
+"gaussian"	"gaussian"
+"gaussian kernel"	"Kernel gaussiano"
+"gaussian weighting"	"pondera��o gaussian"
+"geographical"	"geogr�fico"
+"give output of an edge twice, i.e. once for each of the two adjacent polygons"	"dar sa�da de uma aresta duas vezes, ou seja, uma vez para cada um dos dois pol�gonos adjacentes"
+"given as map units or meters if polar coordinates switch is on; ignored if set to zero"	"expressa em unidades do mapa ou metros, se as coordenadas polares do interruptor est� ligado; ignorado se definido como zero"
+"given in degree clockwise from North direction"	"em graus no sentido hor�rio do Norte"
+"global"	"global"
+"gps-time"	"gps-time"
+"gradient (degree)"	"gradiente (grau)"
+"gradient (tangens)"	"gradiente (tangens)"
+"gradients"	"gradientes"
+"green > blue"	"verde > azul"
+"green > grey > blue"	"verde > cinza > blue"
+"green > red > blue"	"verde > vermelho > azul"
+"green channel color"	"cor do canal verde"
+"greyscale"	"escala de cinza"
+"grid"	"grade"
+"grid cell size"	"tamanho da c�lula da grade"
+"grid cells"	"c�lulas da grade"
+"grid has been dropped"	"a grade foi descartada"
+"grid list"	"lista de grades"
+"grid name"	"nome da grade"
+"grid nodes"	"n�s da grade"
+"grid number"	"n�mero de grade"
+"grid or grid system"	"sistema da grade ou grade"
+"grid project"	"projeto da grade"
+"grid system"	"sistema de grade"
+"guam"	"guam"
+"h"	"h"
+"has already been loaded"	"j� foi carregado"
+"have their centroid in"	"t�m o seu baricentro em"
+"heads and mouths..."	"cabe�as e bocas ..."
+"height"	"altura"
+"height of sun above horizon (degree)"	"altura do sol acima do horizonte (grau)"
+"hh"	"hh"
+"hh.mm.ss"	"hh.mm.ss"
+"hh:mm:ss"	"hh: mm: ss"
+"hhmmss, fix size"	"hhmmss, corrigir tamanho"
+"high"	"altura"
+"highest"	"mais alta"
+"highest z"	"maior z"
+"histogram match"	"combinar histograma"
+"horizontal"	"horizontal"
+"horizontally"	""
+"hours"	"horas"
+"how to request values if step size is more than one cell"	"Como se pedir valores de tamanho de passo para mais do que uma c�lula"
+"if empty shapes layers's name is used as table name"	"se o nome de shapes vazios das camadas � usado como nome de tabela"
+"if less than 100, it is distinguished between interior and core forest"	"se a menos de 100, distingue-se entre interior e o n�cleo da floresta"
+"if more than one feature is in selection, this colour is used for the non active features"	"se mais de um recurso � na sele��o, esta cor � usada para as fei��es n�o ativas"
+"if set, only values with level heights above DEM will be used"	"se definido, somente valores com alturas acima do n�vel DEM ser�o usadas"
+"ignore"	"ignorar"
+"ignored if set to zero"	"ignorado se definido como zero"
+"ignored if set to zero (consider all pairs)"	"ignorado se definido como zero (considerar todos os pares)"
+"image"	"imagem"
+"immediate"	"imediato"
+"importing line strings"	"importa��o de linha de cadeias"
+"improper function syntax"	"fun��o de sintaxe impr�pria"
+"improved SIA model"	"modelo melhorado SIA"
+"in the formula these grids are addressed in order of the list as 'g1, g2, g3, ...'"	"na f�rmula, estas grades s�o abordadas na ordem d a lista como 'G1, G2, G3, ...'"
+"in the formula these grids are addressed in order of the list as 'h1, h2, h3, ...'"	"na f�rmula estas grades s�o abordados na ordem da lista como 'H1, H2, H3, ...'"
+"include all"	"incluir todos"
+"include range"	"incluir alcance"
+"incompatible file."	"arquivo incompat�vel."
+"incompatible items have been removed from input list"	"itens incompat�veis foram removidos da lista de entrada"
+"index"	"�ndice"
+"index creation failed"	"a cria��o do �ndice falhou"
+"index creation stopped by user"	"a cria��o do �ndice foi parada pelo usu�rio"
+"index file could not be opened"	"o arquivo de �ndice n�o p�de ser aberto"
+"index number"	"n�mero do �ndice"
+"index out of bounds"	"�ndice fora dos limites"
+"index out of range"	"�ndice fora do intervalo"
+"initial map window arrangement after a project is loaded"	"arranjo inicial da janela de mapa depois que um projeto � carregado"
+"initial number of lag distance classes"	"n�mero inicial de classes de dist�ncia de atraso"
+"initial number of lag distance classes for variogram estimation"	"n�mero inicial de classes de dist�ncia lag para a estimativa do variograma"
+"initialisation error"	"erro de inicializa��o"
+"initialization"	"inicializa��o"
+"initialization failed"	"falha na inicializa��o"
+"input"	"entrada"
+"input file"	"Arquivo de entrada"
+"instable (thawing)"	"inst�vel (descongela��o)"
+"insufficient training samples"	"amostras de treinamento insuficientes"
+"intensity"	"intensidade"
+"interactive"	"interativo"
+"internal data type"	""
+"interpolating"	"interpolando"
+"interpolation method to use if grid needs to be aligned to coordinate system"	"m�todo de interpola��o para usar se a grade precisa ser alinhada com o sistema de coordenadas"
+"intersect"	"interceptar"
+"intersects"	"intersec��es"
+"invalid E00 file"	"arquivo E00 inv�lido"
+"invalid NetCDF file"	"arquivo NetCDF inv�lido"
+"invalid acquisition date"	"data de aquisi��o inv�lida"
+"invalid boolean value ('0', '1', 'false', 'true')"	"valor booleano inv�lido ('0', '1', 'false', 'true')"
+"invalid command"	"comando inv�lido"
+"invalid control points"	"pontos de controle inv�lidos"
+"invalid data"	"dados inv�lidos"
+"invalid division size"	"divis�o de tamanho inv�lida"
+"invalid extent"	"extens�o inv�lida"
+"invalid features"	"recursos inv�lidos"
+"invalid field selection"	"sele��o de campo inv�lido"
+"invalid file code"	"c�digo de arquivo inv�lido"
+"invalid file name"	"nome do arquivo inv�lido"
+"invalid filter matrix"	"matriz de filtro inv�lido"
+"invalid geographic coordinate system / datum"	"sistema de coordenadas geogr�ficas / Datum inv�lido"
+"invalid geogrid file name"	"nome do arquivo geogrid inv�lido"
+"invalid grid system"	"sistema de grade inv�lido"
+"invalid image file path"	"caminho do arquivo de imagem inv�lido"
+"invalid input"	"entrada inv�lida"
+"invalid input data"	"dados de entrada inv�lido"
+"invalid input!"	"entrada inv�lida!"
+"invalid lines layer"	"camada de linhas inv�lida"
+"invalid lookup table."	"tabela de pesquisa inv�lida."
+"invalid number of features"	"n�mero inv�lido de fei��es"
+"invalid number of parameters"	"n�mero inv�lido de par�metros"
+"invalid or empty polygons layer"	"camada de pol�gonos inv�lidas ou vazias"
+"invalid or empty shapes layer"	"camada de shapes inv�lida ou vazia"
+"invalid or unsupported shape or vertex type"	"shape ou tipo de v�rtice inv�lido ou sem suporte"
+"invalid point cloud"	"nuvem de pontos inv�lida"
+"invalid points have been skipped"	"pontos inv�lidos foram ignorados"
+"invalid points layer"	"camada de pontos inv�lidos"
+"invalid polygons"	"pol�gonos inv�lidos"
+"invalid production date"	"data de produ��o inv�lida"
+"invalid project file."	"arquivo de projeto inv�lido."
+"invalid snap features"	"fei��es de snap inv�lidas"
+"invalid table"	"tabela inv�lida"
+"invalid target grid"	"grade de destino inv�lida"
+"invalid tool definition"	"defini��o da ferramenta inv�lida"
+"invalid training data"	"dados de treinamento inv�lidos"
+"invalid user specified value range."	"usu�rio inv�lido de alcance de valor especificado."
+"invalid utm zone"	"zona UTM inv�lida"
+"invalid word size"	"tamanho da palavra inv�lida"
+"inverse distance to a power"	"dist�ncia inversa a uma pot�ncia"
+"inverse transformation not available"	"transforma��o inversa n�o dispon�vel"
+"is ignored if set to zero"	"� ignorado se definido como zero"
+"j-shaped"	"em forma de J"
+"ja; bestimmen anhand eines Hauptgerinnerasters (HG Raster)"	"ja; bestimmen anhand eines Hauptgerinnerasters (HG Raster)"
+"ja; bestimmen ueber das Wasserflussvolumen (P:RFlow)"	"ja; bestimmen ueber das Wasserflussvolumen (P:RFlow)"
+"ja; bestimmen ueber die jeweilige Anzahl der ZuflussRasterzellen (IR:NumInFlowCells, P:NumCells"	"ja; bestimmen ueber die jeweilige Anzahl der ZuflussRasterzellen (IR:NumInFlowCells, P:NumCells"
+"k-fold"	"k-fold"
+"keep maxima (with tolerance)"	"manter maxima (com toler�ncia)"
+"keep minima (with tolerance)"	"manter os m�nimos (com toler�ncia)"
+"keep original line attributes"	"manter os atributos de linha originais"
+"keine"	"keine"
+"kernel size defined as radius number of cells"	"tamanho do kernel definido a partir do n�mero de c�lulas de raio"
+"kml and image files"	"kml e arquivos de imagem"
+"kmz file"	"arquivo KMZ"
+"kmz, kml and image files"	"kmz, kml e arquivos de imagem"
+"label minima"	"etiqueta m�nima"
+"last"	"�ltimo"
+"last point"	"�ltimo ponto"
+"last state"	"�ltimo estado"
+"last value"	"�ltimo valor"
+"layer uses undefined coordinate system, assuming geographic coordinates"	"camada usa sistema de coordenadas indefinido, assumindo coordenadas geogr�ficas"
+"learning"	"aprendizagem"
+"least significant first"	"primeiro menos significativo"
+"least squares fitted plane (Horn 1981, Costa-Cabral & Burgess 1996)"	"least squares fitted plane (Horn 1981, Costa-Cabral & Burgess 1996)"
+"leave one out"	"deixar um fora"
+"left"	"esquerda"
+"less than two classes in model"	"menos de duas classes no modelo"
+"less than two polygons in layer, nothing to do!"	"menos de dois pol�gonos na camada, nada a fazer!"
+"level"	"n�vel"
+"level 1"	"n�vel 1"
+"level 2"	"n�vel 2"
+"library     "	""
+"library file name"	"Nome do arquivo de biblioteca"
+"library name"	"nome da biblioteca"
+"library path"	"caminho da biblioteca"
+"line simplification can only be applied to lines and polygons"	"a linha de simplifica��o s� pode ser aplicada a linhas e pol�gonos"
+"linear"	"linear"
+"linear: u'*v\npolynomial: (gamma*u'*v + coef0)^degree\nradial basis function: exp(-gamma*|u-v|^2)\nsigmoid: tanh(gamma*u'*v + coef0)"	""
+"lines"	"linhas"
+"lines with same attribute value(s)"	"linhas com o mesmo valor(s) do atributo"
+"list order"	"ordem de apresenta��o"
+"listing of database tables failed"	"a listagem de tabelas de banco de dados falhou"
+"listing of table columns failed"	"a listagem de colunas da tabela falhou"
+"loaded tool libraries"	"bibliotecas de ferramentas carregadas"
+"loading"	"carregando"
+"loading OSM data"	"carregamento de dados OSM"
+"loading band"	"banda de carregamento"
+"loading building parts"	"partes de constru��o de carregamento"
+"loading failed"	"o carregamento falhou"
+"loading spatial reference system database"	""
+"loading translation dictionary"	""
+"local"	"local"
+"local maximum search distance given in map units"	"dist�ncia de pesquisa m�xima local dada em unidades do mapa"
+"local slope"	"declives locais"
+"local water depth or absolute water level at the user specified cell"	"profundidade da �gua local ou n�vel de �gua absoluta celular especificado pelo usu�rio "
+"localhost"	"localhost"
+"logarithmic"	"logar�tmica"
+"lookup table"	"tabela de pesquisa"
+"low"	"baixo"
+"lower and upper thresholds for semantic import model, planar vs. sloped areas"	"limiares inferiores e superiores para o modelo de importa��o sem�ntica, planar vs. �reas inclinadas"
+"lower and upper thresholds for semantic import model, straight vs. curved areas"	"limiares inferiores e superiores para o modelo de importa��o sem�ntica, �reas vs. curvado retas"
+"lower cell's value to neighbours minimum value minus epsilon"	"menor valor da c�lula para os vizinhos valor m�nimo menos epsilon"
+"lower left and upper right center coordinates"	"coordenadas centro-direita para a esquerda e superiores mais baixas"
+"lower left and upper right corner coordinates"	"mais baixas coordenadas do canto direito esquerdo e superior"
+"lowest"	"menor"
+"lowest z"	"menor z"
+"m"	"m"
+"m2"	"m2"
+"m2/h"	"m2/h"
+"m3/Monat"	"m3/Monat"
+"m3/s"	"m3/s"
+"magenta - white"	"magento - branco"
+"main basins..."	"principais bacias ..."
+"majority"	"maioria"
+"map units"	"unidades do mapa"
+"mark breaks in first line"	"marca de quebra na primeira linha"
+"masking no data"	"m�scara sem dados"
+"masking..."	"mascaramento ..."
+"match input data"	"combinar dados de entrada"
+"matching histogram"	"histograma de correspond�ncia"
+"mathematical"	"matem�tico"
+"matrix initialisation failed"	"a inicializa��o de matriz falhou"
+"matrix inversion failed"	"a invers�o de matriz falhou"
+"max"	"max"
+"max(0, a + b - 1)"	"max(0, a + b - 1)"
+"max(a, b) (non-interactive)"	"max(a, b) (n�o interativo):;"
+"max. change"	"m�x. alterar"
+"max_sd"	"max_sd"
+"maxima of variance"	"maxima de vari�ncia"
+"maximum"	"m�ximo"
+"maximum difference between original and median filtered elevation (3x3 moving window) that still is recognized flat"	"m�xima diferen�a entre eleva��o original e mediana filtrada (janela 3x3 m�vel) que ainda � reconhecida plana"
+"maximum distance for variogram estimation"	"dist�ncia m�xima para a estimativa de variograma"
+"maximum number of calculated first components; set to zero to get all"	"n�mero m�ximo de componentes calculados primeiros; definido como zero para obter todas"
+"maximum number of clusters must be more than 2 and less than number of samples"	""
+"maximum number of initial cluster centers must be more or equal to 0 and less than number of clusters"	""
+"maximum number of iterations, ignored if set to zero (default)"	"n�mero m�ximo de itera��es, ignorado se definido como zero (padr�o)"
+"maximum number of nearest points"	"n�mero m�ximo de pontos mais pr�ximos"
+"maximum slope (Travis et al. 1975)"	"inclina��o m�xima (Travis et al. 1975)"
+"maximum triangle slope (Tarboton 1997)"	"inclina��o m�xima de tri�ngulo (Tarboton 1997)"
+"maximum value"	"valor m�ximo"
+"maximum value of all duplicates"	"valor m�ximo de todas as duplicatas"
+"maximum x value"	"valor m�ximo x"
+"maximum y value"	"valor m�ximo y"
+"mean"	"m�dia"
+"mean value"	"valor m�dio"
+"mean value of all duplicates"	"valor m�dio de todas as duplicatas"
+"memory"	"mem�ria"
+"memory allocation error."	"Erro de aloca��o de mem�ria."
+"memory allocation failed"	"a aloca��o de mem�ria falhou"
+"min"	"min"
+"min < value < max"	"min < valor < max"
+"min < value <= max"	"min < valor <= max"
+"min <= value < max"	"min <= valor < max"
+"min <= value <= max"	"min <= valor <= max"
+"min(1, a + b)"	"min (1, a + b)"
+"min(a, b) (non-interactive)"	"min(a, b) (n�o interativo)"
+"min_sd"	"min_sd"
+"minima of variance"	"minima de vari�ncia"
+"minimum"	"m�nimo"
+"minimum number of points to use"	"n�mero m�nimo de pontos para utiliza��o"
+"minimum number of upslope contributing cells to start a channel"	"n�mero m�nimo de c�lulas aplainadas contribuindo para iniciar um canal"
+"minimum requirement"	"requerimento m�nimo"
+"minimum slope angle preserved from one cell to the next, zero results in flat areas [Degree]"	"�ngulo de inclina��o m�nimo preservado de uma c�lula para as pr�ximas, zero resultados em �reas planas [Grau]"
+"minimum value"	"valor m�nimo"
+"minimum value of all duplicates"	"valor m�nimo de todos os duplicados"
+"minimum x value"	"valor m�nimo x"
+"minimum y value"	"valor m�nimo y"
+"minutes"	"minutos"
+"missing icon tags"	"�cone de marcas faltando"
+"missing operand"	"operando em falta"
+"missing tool chain tags"	"etiquetas faltando na cadeia de ferramentas"
+"model application"	"aplica��o do modelo"
+"model creation"	"cria��o do modelo"
+"moment"	"momento"
+"month"	"m�s"
+"more than one field in selection"	"mais do que um campo na sele��o"
+"morpological gradient"	"gradiente morfol�gico"
+"most significant first"	"primeiro mais significativo"
+"multi scale"	"Multi escala"
+"multiple"	"m�ltiplo"
+"multiple flow direction"	"m�ltipla dire��o do fluxo"
+"multiplicative"	"multiplicativo"
+"n"	"n"
+"n-fold cross validation: n must > 1"	"valida��o cruzada n-fold: n preciso > 1"
+"name"	"nome"
+"naming for splitted lines"	"nomea��o para linhas parceladas"
+"nearest neighbour"	"vizinho mais pr�ximo"
+"needs at least two attributes in selection"	"precisa de pelo menos dois atributos na sele��o"
+"nein"	"nein"
+"neon"	"n�on"
+"new"	"novo"
+"new selection"	"nova sele��o"
+"new value"	"novo valor"
+"no"	"n�o"
+"no 'get extents' support for single point layers"	"n�o obter extens�es de apoio das camadas individuais de ponto"
+"no PostGIS layer"	"nenhuma camada de PostGIS"
+"no attributes in selection"	"sem atributos na sele��o"
+"no attributes in table"	"sem atributos na tabela"
+"no choice available"	"nenhuma op��o dispon�vel"
+"no class definitions for final state"	"n�o h� defini��es de classe para o estado final"
+"no class definitions for grid"	"n�o h� defini��es de classe para a grade"
+"no class definitions for initial state"	"n�o h� defini��es de classe para o estado inicial"
+"no conversion (areas already given as specific catchment area)"	"Nenhuma convers�o (�reas j� dadas como �rea de influ�ncia espec�fica)"
+"no data entries in project file."	"Nenhuma entrada de dados no arquivo de projeto."
+"no data objects"	"n�o h� objetos de dados"
+"no data values"	"n�o h� valores de dados"
+"no database connection"	"nenhuma conex�o de banco de dados"
+"no description"	"Nenhuma descri��o"
+"no destination points in grid area."	""
+"no distance weighting"	"nenhuma dist�ncia de pondera��o"
+"no edges found"	"sem arestas encontradas"
+"no features in input list"	"n�o h� fei��es na lista de entrada"
+"no features in selection"	"n�o h� fei��es na sele��o"
+"no features to buffer."	"n�o disp�e de buffer."
+"no fields in selection"	"h� campos na sele��o"
+"no fields to add"	"h� campos para adicionar"
+"no gaps"	"sem lacunas"
+"no geometry in selection"	"nenhuma geometria na sele��o"
+"no grid in list"	"nenhuma grade na lista"
+"no grids have been imported"	"n�o h� grades que foram importados"
+"no grids in list"	"n�o h� grades na lista"
+"no grids in selection"	"n�o h� grades na sele��o"
+"no histogram for unclassified data"	"n�o h� histograma para dados n�o classificados"
+"no history"	"sem hist�rico"
+"no input"	"sem entrada"
+"no intersection with mask grid."	"nenhuma interse��o com a grade de m�scara."
+"no layers in data source"	"n�o h� camadas na fonte de dados"
+"no lines for splitting"	"n�o h� linhas para divis�o"
+"no memory"	"nenhuma mem�ria"
+"no name has been specified for new raster table"	"nenhum nome foi especificado para nova tabela raster"
+"no output parameter in selection"	"nenhum par�metro de sa�da na sele��o"
+"no parameter output specified"	"nenhuma sa�da de par�metro especificado"
+"no points in input layer"	"n�o h� pontos na camada de entrada"
+"no points in layer"	"n�o h� pontos na camada"
+"no points removed"	"sem pontos removidos"
+"no polygons in input"	"n�o h� pol�gonos na entrada"
+"no polygons in input layer"	"n�o h� pol�gonos na camada de entrada"
+"no predictors available"	"n�o h� preditores dispon�veis"
+"no predictors have been selected"	"nenhuns preditores foram selecionados"
+"no predictors in selection"	"n�o h� preditores na sele��o"
+"no projection specified"	"nenhuma proje��o especificada"
+"no projection type defined"	"nenhum tipo de proje��o definido"
+"no properties selected"	"n�o h� propriedades selecionadas"
+"no records in data set"	"n�o h� registros no conjunto de dados"
+"no records in file."	"n�o h� registros no arquivo."
+"no records in input data"	"n�o h� registros nos dados de entrada"
+"no records in selection"	"n�o h� registros na sele��o"
+"no records to append"	"n�o h� registros para anexar"
+"no scaling"	"sem escala"
+"no seed points identified"	"n�o h� pontos de sementes identificadas"
+"no self-intersecting polygons detected"	"n�o h� pol�gonos de auto-interse��o detectados"
+"no shapes for intersection found"	"nenhum shape de interse��o encontrado"
+"no shapes in selection"	"n�o h� shapes na sele��o"
+"no sinks"	"n�o skins"
+"no spatial intersection between grid(s) and points layer"	"n�o h� interse��o espacial entre a grade(s) e os pontos da camada"
+"no spatial intersection between grid(s) and polygon layer"	"n�o h� interse��o espacial entre a grade(s) e a camada de pol�gono"
+"no target specified"	"sem destino especificado"
+"no target variable in selection"	"nenhuma vari�vel alvo na sele��o"
+"no training areas could be analysed."	"�reas de forma��o poderiam ser analisadas."
+"no translation available"	"nenhuma tradu��o dispon�vel"
+"no valid data found in grid(s)"	"n�o h� dados v�lidos encontrados na grade(s)"
+"no valid grid in features list."	"nenhuma grade v�lida na lista de funcionalidades."
+"no valid grid in list."	"nenhuma grade v�lida na lista."
+"no valid samples in data set"	"amostras n�o v�lidas no conjunto de dados"
+"no variation in point pattern"	"nenhuma varia��o no padr�o de ponto"
+"no-data cells"	"c�lulas SemDados"
+"node"	"n�"
+"node detection"	"detec��o de n�"
+"nodes"	"n�s"
+"noise variance given as absolute value"	"vari�ncia do ru�do dado em valor absoluto"
+"noise variance given relative to mean standard deviation"	"vari�ncia do ru�do dado em rela��o � m�dia do desvio padr�o"
+"non-linear response term"	"prazo de resposta n�o-linear"
+"none"	"nenhum"
+"nonlinear"	"n�o-linear"
+"normalize (0-1)"	"normalizar (0-1)"
+"normalized"	"normalizada"
+"normal|down under|"	"normal|embaixo|"
+"not a PostGIS database"	"n�o um banco de dados PostGIS"
+"not a valid PostGIS database!"	"n�o � um banco de dados PostGIS v�lido!"
+"not enough neighbours"	"os vizinhos n�o s�o suficiente"
+"not enough observations"	"observa��es n�o s�o suficiente"
+"not enough points for interpolation"	"os pontos n�o s�o suficientes para interpola��o"
+"not enough points to perform pattern analysis"	"os pontos n�o s�o suficientes para executar a an�lise de padr�es"
+"not enough reference points"	"os pontos de refer�ncia n�o s�o suficiente"
+"not in transaction"	"n�o est� em opera��o"
+"not more than one point in layer"	"n�o mais de um ponto na camada"
+"not supported by PostGIS versions less than 2.1"	"n�o � suportado por vers�es PostGIS abaixo de 2.1"
+"nothing to crop"	"nada para cortar"
+"nothing to do, there are less than two grids in input list."	"nada para fazer, h� menos de duas grades na lista de entrada."
+"nothing to do. transformation needs at least two components."	"nada para fazer. a transforma��o precisa de, pelo menos, dois componentes."
+"nothing to do: input format is same as output format"	"nada a fazer: o formato de entrada � o mesmo que o formato de sa�da"
+"nothing to do: no data in selection"	"nada a fazer: n�o h� dados na sele��o"
+"nothing to do: original and desired field types are identical"	"nada a fazer: originais e campo desejado tipos s�o id�nticos"
+"nu-SVC"	"nu-SVC"
+"nu-SVR"	"nu-SVR"
+"number of added polygons"	"n�mero de pol�gonos adicionadas"
+"number of categories"	"n�mero de categorias"
+"number of cells"	"n�mero de c�lulas"
+"number of cells in S-N direction"	"n�mero de c�lulas em direc��o S-N"
+"number of cells in W-E direction"	"n�mero de c�lulas em dire��o W-E"
+"number of different categories (unique values) within search area"	"n�mero de diferente de categorias (valores originais) dentro da �rea de pesquisa"
+"number of dropped observations"	"o n�mero de observa��es arriou"
+"number of dropped shapes"	"n�mero de formas caiu"
+"number of grid cells per tile"	"o n�mero de c�lulas da grade por quadr�cula"
+"number of initial and final state grids differs"	"o n�mero de estado inicial e final das grades difere"
+"number of inner rings"	"n�mero de an�is internos"
+"number of model features do not fit input features list"	"n�mero de fei��es do modelo n�o se encaixa na lista de fei��es de entrada"
+"number of order"	"n�mero de ordem"
+"number of pits above threshold level"	"n�mero de covas acima do n�vel do limiar"
+"number of points"	"n�mero de pontos"
+"number of processed sinks"	"n�mero de skins processados"
+"number of replacements"	"n�mero de substitui��es"
+"number of returns of given pulse"	"n�mero de retornos de impulso dado"
+"number of scanned files"	"n�mero de arquivos digitalizados"
+"number of subsamples for k-fold cross validation"	"n�mero de subamostras para a valida��o cruzada k-fold"
+"number of the return"	"n�mero do retorno"
+"number of translatable elements"	"n�mero de elementos traduz�veis"
+"object"	"objeto"
+"objects"	"objetos"
+"offset in minutes relative to 00:00 (midnight)"	"deslocamento em minutos em rela��o � 00:00 (meia-noite)"
+"okay"	"OK"
+"old value"	"valor antigo"
+"on cell"	"na c�lula"
+"one catalogue for each coordinate system"	"um cat�logo para cada sistema de coordenadas"
+"one catalogue using geographic coordinates"	"um cat�logo usando coordenadas geogr�ficas"
+"one hull for all shapes"	"um casco para todos os shapes"
+"one hull per shape"	"um casco por shape"
+"one hull per shape part"	"um casco por parte do shape"
+"one layer for all points"	"uma camada para todos os pontos"
+"one multi-line per polygon"	"um multi-linha para pol�gono"
+"one single (multi-)polygon object"	"um �nico (multi-)objeto pol�gono"
+"one single class specified by class identifier"	"uma �nica classe especificada pelo identificador de classe"
+"one-class SVM"	"uma classe SVM"
+"online"	"conectados"
+"only during start up phase"	"apenas durante a fase de arranque"
+"only entities with layer definition"	"apenas entidades com defini��o de camada"
+"only entities without layer definition"	"apenas entidades sem defini��o de camada"
+"only one class in training data"	"apenas uma classe em dados de treinamento"
+"only points with given minimum number of points in search radius will be processed"	"apenas os pontos com o n�mero m�nimo de pontos dado no raio de busca ser�o processados"
+"only show within scale range; values are given as extent measured in map units"	"mostrar apenas dentro da faixa de escala; Os valores s�o dados em medida de unidades de mapa"
+"only z"	"apenas z"
+"open transactions committed"	"transa��es abertas comprometidas"
+"open transactions rollbacked"	"transa��es abertas rollbacked"
+"open transactions rolled back"	"transa��es abertas revertidas"
+"opening"	"abertura"
+"operator"	"operador"
+"optional"	"opcional"
+"optional grid providing values to be compared with linear flow threshold instead of flow accumulation"	"a grade opcional proporciona valores para ser comparado com o limiar de fluxo linear em vez de acumula��o de fluxo"
+"optional input"	"entrada opcional"
+"optional output"	"sa�da opcional"
+"orientation"	"orienta��o"
+"origin adjustment for Z axis (heading)"	"ajuste de origem para o eixo Z (cabe�alho)"
+"original"	"original"
+"original calculation (Ringeler)"	"c�lculo inicial (Ringeler)"
+"original name"	"nome original"
+"original name + variable type"	"nome original + tipo de vari�vel"
+"other"	"outro"
+"other values"	"outros valores"
+"out-of-bag error"	"erro out-of-bag"
+"output"	"sa�da"
+"output of intermediate results to execution message window"	"sa�da de resultados intermedi�rios para a janela de mensagem de execu��o"
+"ovalooblonga-rectangularoblonga"	"ovalooblonga-rectangularoblonga"
+"ovaloredonda-ovalooblonga"	"ovaloredonda-ovalooblonga"
+"overwrite previous output if adequate"	"substituir sa�da anterior, se adequado"
+"p-value"	"valor-"
+"parallel"	"paralelo"
+"parameter C (cost) of C-SVC, epsilon-SVR, and nu-SVR"	"par�metro C (custo) de C-SVC, epsilon-SVR, e nu-SVR"
+"parameter not found"	"par�metro n�o encontrado"
+"parameter nu of nu-SVC, one-class SVM, and nu-SVR"	"par�metro nu de nu-SVC, uma classe SVM, e nu-SVR"
+"parameters"	"par�metros"
+"pass"	"passo"
+"patch size"	"tamanho da mancha"
+"pdf"	"pdf"
+"per line"	"por linha"
+"per line segment"	"por segmento de linha"
+"percent"	"por cento"
+"percentiles"	"percentis"
+"perform region growing"	"realizar regi�o de cultivo"
+"performing distance calculation..."	"realiza��o de c�lculo de dist�ncia ..."
+"pie"	"pizza"
+"pie (not outlined)"	"pizza (n�o esbo�ado)"
+"point (.)"	"ponto (.)"
+"point cloud"	"nuvem de pontos"
+"point cloud (centered)"	"nuvem de pontos (centralizado)"
+"point cloud viewer can only be run from graphical user interface"	"o visualizador de nuvem de pontos s� pode ser executado a partir da interface gr�fica do usu�rio"
+"point cloud viewer will not be started, because point cloud has no points"	"o visualizador de pontos de nuvem n�o vai ser iniciado, porque o ponto de nuvem n�o tem pontos"
+"point source ID"	"ID do ponto de origem"
+"point with maximum attribute value"	"ponto com valor m�ximo de atributo"
+"point with minimum attribute value"	"ponto com o valor m�nimo de atributo"
+"points"	"pontos"
+"points can only intersect with polygons"	"Os pontos s� podem se cruzar com pol�gonos"
+"points have been dropped"	"Os pontos foram retirados"
+"points have been filtered"	"Os pontos foram filtrados"
+"points have been imported with success"	"Os pontos foram importados com sucesso"
+"points layer and grid do not intersect at all"	"pontos de camada e grade n�o se cruzam em tudo"
+"points read"	"ler pontos"
+"points written"	"pontos escritos"
+"polar coordinates given in degree"	"coordenadas polares dadas em graus"
+"polygon"	"pol�gono"
+"polygon conversion"	"convers�o de pol�gonos"
+"polygon wise (cell area weighted)"	""
+"polygon wise (cell area)"	""
+"polygon wise (cell centers)"	""
+"polygons"	"pol�gonos"
+"polylines"	"polilinhas"
+"polynomial"	"polinomial"
+"polynomial trend"	"tend�ncia polinomial"
+"polynomial trend (coefficient interpolation)"	"tend�ncia polinomial (coeficiente de interpola��o)"
+"post-processing..."	"p�s-processamento..."
+"power of distance"	"inicializa��o de dist�ncia"
+"prediction"	"predi��o"
+"preparing distance calculation..."	"preparar o c�lculo de dist�ncia ..."
+"press any key"	"aperte qualquer tecla"
+"processed DEM"	"MDE processado"
+"processing"	"processamento"
+"processors  "	""
+"projection initialization failed"	"inicializa��o proje��o falhou"
+"projection initialization failure"	"Falha de inicializa��o de proje��o"
+"proportional"	"proporcional"
+"quadrants"	"quadrantes"
+"quadratic surface"	"superf�cie quadr�tica"
+"quantiles"	"quantiles"
+"quartic kernel"	"Kernel quartic"
+"radial basis function"	"fun��o de base radial"
+"radians"	"radianos"
+"radians to degree"	"radianos em graus"
+"radius given in map units used to cut hills"	"raio dado em unidades do mapa usado para cortar colinas"
+"radius given in map units used to fill valleys"	"raio dado em unidades do mapa usado para preencher vales"
+"radius in map units"	"raio em unidades do mapa"
+"rainbow"	"arco Iris"
+"random read"	"leitura aleat�ria"
+"random write"	"grava��o aleat�ria"
+"range"	"alcance"
+"range of days"	"intervalo de dias"
+"raster"	"raster"
+"re-projection"	"re-proje��o"
+"re-projection to geographic coordinates"	"re-proje��o para coordenadas geogr�ficas"
+"ready"	"pronto"
+"ready ..."	"pronto ..."
+"received empty stream."	"recebeu c�rrego vazio."
+"rectangle"	"ret�ngulo"
+"rectangular"	"retangular"
+"red > blue"	"vermelho > azul"
+"red > blue > green"	"vermelho > azul > verde"
+"red > green"	"vermelho > verde"
+"red > green > blue"	"vermelho > verde > azul"
+"red > grey > blue"	"vermelho > cinza > azul"
+"red > grey > green"	"vermelho > cinza > verde"
+"red channel color"	"cor do canal vermelho"
+"red=this, green=1, blue=2"	"vermelho = esta, verde = 1, azul = 2"
+"redonda-ovaloredonda"	"redonda-ovaloredonda"
+"regression"	"regress�o"
+"regression analysis could not detect a significant predictor"	"A an�lise de regress�o n�o conseguiu detectar um preditor significativo"
+"regression model applied to predictor grids"	"modelo de regress�o aplicado �s grades de previs�o"
+"regression model applied to predictor grids with interpolated residuals added"	"modelo de regress�o aplicado ao preditor de grades com res�duos interpolados adicionados"
+"relative"	"relativo"
+"remove above percentile"	"remover percentil acima"
+"remove below percentile"	"remover abaixo do percentil"
+"remove from current selection"	"remover da sele��o atual"
+"remove maxima (with tolerance)"	"remover maxima (com toler�ncia)"
+"remove minima (with tolerance)"	"remover m�nimos (com toler�ncia)"
+"removed"	"removido"
+"replace existing table"	"substituir a tabela existente"
+"replacements"	"substitui��es"
+"resampling"	"reamostragem"
+"resampling cell size is too large"	"o tamanho da c�lula de reamostragem � demasiado grande"
+"resampling method used when projection is needed"	""
+"rescale to 0 - 255"	"redimensionar para 0 - 255"
+"resolution"	"resolu��o"
+"resolution has to be greater than zero"	"a resolu��o tem de ser maior que zero"
+"restore from file"	"restaurar a partir do arquivo"
+"restore model from file"	"modelo de restaura��o de arquivo"
+"return"	"retorno"
+"rgb coded raster map to be draped"	"rgb mapa raster codificado para ser envolto"
+"rgb coded values"	"valores rgb codificados"
+"rgb color"	"cor rgb"
+"rhombus"	"losango"
+"right"	"direita"
+"rollback"	"revers�o"
+"rollback transaction command failed"	"o comando de opera��o de revers�o falhou"
+"root"	"origem/raiz"
+"rotated"	"girado"
+"rotation around the X axis (roll)"	"rota��o em torno do eixo X (rolo)"
+"rotation around the Y axis (pitch)"	"rota��o em torno do eixo Y (pitch)"
+"rotation around the Z axis (heading)"	"rota��o em torno do eixo Z (posi��o)"
+"rotation clockwise in degree"	"rota��o no sentido hor�rio em grau"
+"roughness"	"rugosidade"
+"rows"	"linhas"
+"s, Percentage sand [%]"	"s, porcentagem de areia [%]"
+"same as in graphical user interface"	"mesmo que na interface gr�fica do utilizador"
+"same as input grid"	"mesma grade de entrada"
+"same as original"	"mesmo que o original"
+"same as predictors"	"mesmo que os preditores"
+"samples must be more than 1"	""
+"sand content given as percentage"	"teor de areia dado em percentagem"
+"save output to file instead of memory"	"salvar a sa�da para o arquivo em vez da mem�ria"
+"save point added"	"salvar ponto adicionado"
+"saving building parts"	"salvar partes do edif�cio"
+"scale factor must not equal zero"	"fator de escala igual a zero n�o pode"
+"scale line"	"linha de escala"
+"scale to size range"	"escala a faixa de tamanho"
+"scan angle"	"�ngulo de leitura"
+"scanning"	"digitaliza��o"
+"search distance is less than half of grid cell size"	"a pesquisa de dist�ncia � menor do que metade do tamanho da c�lula da grade"
+"seconds"	"segundos"
+"sectors"	"setores"
+"seed cells coded with local water depth or absolute water level, all other cells NoData"	"c�lulas de sementes codificadas com profundidade de �gua local ou n�vel de �gua absoluta, todas as outras c�lulas SemDados"
+"seed to saddle difference"	"diferen�a de selagem de deced�ncia"
+"seeds difference"	"diferen�a descedente"
+"segments identified"	"segmentos identificados"
+"select a library"	"selecione uma biblioteca"
+"select a tool"	"selecione uma ferramenta"
+"select from current selection"	"selecionar a partir da sele��o atual"
+"selected records"	"registros selecionados"
+"selected shapes"	"shapes selecionados"
+"selected table contains no valid records"	"a tabela selecionada n�o cont�m registros v�lidos"
+"selected table does not have numeric attributes"	"a tabela selecionada n�o tem atributos num�ricos"
+"self-intersection"	"auto-intersec��o"
+"separate layer for each polygon"	"camada separada para cada pol�gono"
+"separate lines"	"linhas separadas"
+"sequential write"	"grava��o sequencial"
+"set"	"conjunto"
+"set greater one for line smoothing"	"definir mais um para a suaviza��o de linha"
+"set input"	"entrada de ajuste"
+"sgbm"	"SGBM"
+"shading"	"sombreamento"
+"shading (fixed light source)"	"sombreamento (fonte luminosa fixa)"
+"shape file could not be opened."	"arquivo de shape n�o p�de ser aberto."
+"shape in process"	"moldar em processo"
+"shapes extent"	"extens�o do shape"
+"shapes have been dropped"	"os shapes foram retirados"
+"shapes layer extent"	"extens�o da camada shape"
+"show direct insolation for each time step."	"mostrar insola��o direta para cada passo de tempo."
+"show mouse position in statusbar using geographic coordinates if possible"	"mostrar a posi��o do mouse na barra de status usando coordenadas geogr�ficas, se poss�vel"
+"shows cell values when zoomed"	"mostra os valores das c�lulas quando ampliada"
+"shrink"	"encolher"
+"shrink and expand"	"encolher e expandir"
+"sigmoid"	"sigm�ide"
+"sigmoidal"	"sigmoidal"
+"signed 1 byte integer"	"assinado inteiro de 1 byte"
+"signed 2 byte integer"	"assinado inteiro de 2 bytes"
+"signed 4 byte integer"	"assinado inteiro de 4 byte"
+"signed 8 byte integer"	"assinado inteiro de 8 bytes"
+"silt content given as percentage"	"silte dado em porcentagem"
+"simple and fast"	""
+"simple line"	"linha simples"
+"simple planar surface"	"superf�cie simples plana"
+"simply decrease cell's value by epsilon"	"diminuir o valor da c�lula por epsilon simples"
+"single"	"solteira"
+"single class"	"classe �nica"
+"single flow direction"	"dire��o de fluxo �nico"
+"single|range|simple table|user supplied table|"	"simples|alcance|tabela simples|tabela fornecida pelo usu�rio|"
+"size range as percentage of step"	"faixa de tamanho de percentagem da etapa"
+"slim"	"esbelto/fino"
+"slope threshold must not be zero!"	"o limite de inclina��o n�o deve ser zero!"
+"slope value has to be greater than zero"	"o valor da inclina��o tem de ser maior que zero"
+"slower but memory saving"	"mais lento, mas economizando mem�ria"
+"snap distance in screen units (pixels)"	"dist�ncia de estado em unidades de tela (pixels)"
+"snap move"	"movimento de estado"
+"snapped"	"bateu"
+"soil texture"	"textura do solo"
+"solve inner rings"	"resolver an�is internos"
+"source"	"fonte"
+"space"	"espa�o"
+"specific catchment area"	"�rea de influ�ncia espec�fica"
+"specific catchment area (contour length dependent on aspect)"	"�rea de influ�ncia espec�fica (dependente do aspecto comprimento do contorno)"
+"specific catchment area (contour length simply as cell size)"	"�rea de capta��o espec�fica (comprimento do contorno simples a partir do tamanho das c�lulas)"
+"specify fields with type"	"especificar campos e tipo"
+"spline"	"spline/estriado"
+"splitting polygon parts"	"partes de divis�o de pol�gono"
+"sql excution error"	"erro de execu��o do sql"
+"square"	"quadrado"
+"square root"	"raiz quadrada"
+"square root (catchment length)"	"raiz quadrada (comprimento de capta��o)"
+"square root of catchment area"	"raiz quadrada de �rea de capta��o"
+"stable"	"est�vel"
+"standard"	"padr�o"
+"standard deviation"	"desvio padr�o"
+"standard kernel 1"	"kernel padr�o 1"
+"standard kernel 2"	"kernel padr�o 2"
+"standardize"	"estandardizar"
+"standardized"	"padronizado"
+"statistics table does not contain any records"	"a tabela de estat�sticas n�o cont�m quaisquer registros"
+"statistics table is missing required fields"	"a tabela de estat�sticas est� faltando campos obrigat�rios"
+"stddev"	"stddev"
+"step"	"passo"
+"step size should not exceed number of cells in x or y direction"	"o tamanho do passo n�o deve exceder o n�mero de c�lulas na dire��o x ou y"
+"stepwise"	"passo a passo"
+"stretch to grid's standard deviation"	"esticar pelo desvio padr�o da grade"
+"stretch to grid's value range"	"esticar a faixa de valores da grade"
+"stretch to specified value range"	"esticar a faixa de valor especificado"
+"string"	"cadeia(de texto)"
+"subbasins..."	"sub-bacias ..."
+"subtract"	"subtrair"
+"success"	"sucesso"
+"sum"	"soma"
+"sums-of-squares-and-cross-products matrix"	"somas dos quadrados-e-produtos-cruzados da matriz"
+"surface and result grids have to share the same grid system"	"as grades de superf�cie e de resultados tem que compartilhar o mesmo sistema de rede"
+"symmetric"	"sim�trico"
+"syntax error"	"erro de sintaxe"
+"t"	"t"
+"table"	"tabela"
+"table already exists"	"a tabela j� existe"
+"table could not be opened."	"a tabela n�o p�de ser aberta."
+"table has no geometry field"	"a tabela tem nenhum campo de geometria"
+"tabulator"	"tabulador"
+"take original value (0 - 255)"	"tomar valor original (0 - 255)"
+"take value from the point to be kept"	"tomar valor a partir do ponto a ser mantido"
+"target"	"alvo"
+"target area is distinct from levels area "	"�rea alvo � distinta da �rea de n�veis "
+"target's spatial reference system is undefined"	"o sistema de refer�ncia espacial do alvo � indefinido"
+"text"	"texto"
+"the lower this value is the stronger is the suction effect"	"quanto menor este valor �, mais forte � o efeito de suc��o"
+"theta"	"theta"
+"thick"	"espesso"
+"thin"	"fino"
+"this operation requires locations to be of type polygon"	"Esta opera��o requer locais para ser do tipo pol�gono"
+"this operation requires selectable shapes to be of type polygon"	"Esta opera��o requer shapes selecion�veis ??para ser do tipo pol�gono"
+"threshold slope"	"limite de inclina��o"
+"tolerance as absolute values"	"toler�ncia em valores absolutos"
+"tolerance of termination criterion"	"toler�ncia de crit�rio de rescis�o"
+"too few parameters"	"Muito poucos par�metros"
+"too many constants"	"muitas constantes"
+"too many input variables"	"muitas vari�veis ??de entrada"
+"too many parameters"	"muitos par�metros"
+"tool        "	""
+"tool execution failed"	"a execu��o da ferramenta falhou"
+"tool initialization failed"	"a inicializa��o da ferramenta falhou"
+"tool needs graphical user interface"	"a ferramenta precisa de interface gr�fica do usu�rio"
+"tools"	"ferramentas"
+"top"	"topo"
+"top / right"	"canto superior direito"
+"top down"	"de cima para baixo"
+"top hat"	"superior"
+"top left"	"superior esquerdo"
+"top right"	"canto superior direito"
+"top-left"	"superior-esquerdo"
+"top-right"	"superior-direito"
+"top-to-bottom and left-to-right cell sizes differ."	"tamanhos de c�lulas diferentes de cima para baixo e da esquerda para a direita ."
+"topographic wetness index..."	"�ndice topogr�fico de umidade ..."
+"topography"	"topografia"
+"total catchment area"	"�rea total da bacia"
+"trace stream network downstream"	"rastreamento da rede fluxo de jusante"
+"training"	"treinamento"
+"training failed"	"a forma��o falhou"
+"transaction started"	"transa��o iniciada"
+"triangle (down)"	"tri�ngulo (para baixo)"
+"triangle (up)"	"tri�ngulo (para cima)"
+"triangulating"	"triangula��o"
+"trying to drop table"	"tentando largar tabela"
+"type -h or --help for further information"	"escreva -h ou --help para mais informa��es"
+"unable to create file."	"incapaz de criar arquivo."
+"unable to load vector data from PostGIS database"	"n�o foi poss�vel carregar dados vetoriais a partir do banco de dados PostGIS"
+"uncheck this means no discretizaton (i.e. data is already integer)"	"desmarque esta op��o significa que n�o h� discretiza��o (ou seja, os dados j� est�o em inteiro)"
+"uncorrected"	"n�o corrigido"
+"undeclared parameter"	"par�metro n�o declarado"
+"undefined"	"Indefinido"
+"undefined data type"	"tipo de dados indefinido"
+"unique values"	"valores originais"
+"unjoined records have been removed"	"os registos foram juntados e foram removidos"
+"unknown"	"desconhecido"
+"unknown error: execution"	"erro desconhecido: execu��o"
+"unknown error: user break"	"erro desconhecido: ruptura de usu�rio"
+"unknown errror parsing formula"	""
+"unknown parameter"	"par�metro desconhecido"
+"unknown projection"	"proje��o desconhecida"
+"unkown"	"desconhecido"
+"unmatched parentheses"	"par�nteses n�o-casados"
+"unnamed"	"an�nimo"
+"unsigned 1 byte integer"	"Inteiro n�o assinado de 1 byte"
+"unsigned 2 byte integer"	"inteiro de 2 bytes n�o assinado"
+"unsigned 4 byte integer"	"inteiro de 4 byte n�o assinado"
+"unsigned 8 byte integer"	"inteiro de 8 bytes n�o assinado"
+"unsorted"	"n�o ordenado"
+"unsupported file version"	"vers�o do arquivo sem suporte"
+"unsupported shape type."	"Tipo de shape incompat�vel."
+"unsupported tool chain version"	"ferramenta sem suporte para a vers�o"
+"unsupported vector type"	"Tipo de vetor sem suporte"
+"until user closes it"	"at� que o usu�rio fecha-o"
+"up"	"acima"
+"upscaling of predictors"	"escalonamento de preditores"
+"upsetting model domain"	"modelo de dom�nio perturbador"
+"use a zero value for hillslopes, any other value for channel cells."	"usar um valor zero para encostas, qualquer outro valor para as c�lulas do canal."
+"use more averaged elevations when looking at increasing distances"	"usar eleva��es mais m�dias quando se observa para dist�ncias cada vez maiores"
+"use old version for constant wind direction (no acceleration and averaging option)"	"usar a vers�o antiga para a dire��o do vento constante (sem acelera��o e uma m�dia de op��o)"
+"use this for (linear) flow routing, if the value is a valid direction (0-7 = N, NE, E, SE, S, SW, W, NW)"	"usar isso para encaminhamento (linear) de fluxo, se o valor for uma dire��o v�lida (0-7 = N, NE, E, SE, S, SW, W, NW)"
+"use this grid's system for output grids"	"usar o sistema de grade para esta grade de sa�da"
+"user data"	"dados do usu�rio"
+"user defined"	"definido pelo usu�rio"
+"user defined NoData value"	"valor SemDados definido pelo usu�rio"
+"user defined kernel"	"kernel definido pelo usu�rio"
+"user defined size"	"tamanho definido pelo usu�rio"
+"using cellsize"	"usando tamano da c�lula"
+"valid data cells match original grid extent"	"c�lulas de dados v�lidos correspondem a extens�o da grade inicial"
+"value at mouse position"	"valor na posi��o do mouse"
+"var"	"var"
+"variable and height levels have to be of same number"	"n�veis de vari�veis ??de altura e tem que ser do mesmo n�mero"
+"variable type"	"tipo de vari�vel"
+"variable type + original name"	"tipo de vari�vel + nome original"
+"variance"	"varia��o"
+"variance-covariance matrix"	"matriz de vari�ncia-covari�ncia"
+"variogram model"	"modelo de variograma"
+"vertical"	"vertical"
+"vertically"	""
+"w"	"w"
+"warning"	"aviso"
+"warning, input uses less than 4 bytes per value"	"aviso, use menos de 4 bytes de entrada para cada valor"
+"warning: albedo is ignored"	"aviso: o albedo � ignorado"
+"warning: number of Eigen vectors and components differs."	"aviso: o n�mero de vetores Eigen e componentes difere."
+"warning: number of component grids and components differs."	"aviso: o n�mero de grades de componentes e componentes difere."
+"weighting factor for slope in index calculation"	"fator de pondera��o para o c�lculo de �ndices em declive"
+"when using weights without support for negative flow: output of the absolute amount of negative flow that occured"	""
+"when using weights: do not transport negative flow, set it to zero instead; useful e.g. when accumulating measures of water balance."	""
+"whether to train a SVC or SVR model for probability estimates"	"estimativas de probabilidade para para treinar um modelo SVC ou SVR"
+"whether to use the shrinking heuristics"	"se pretende utilizar a heur�stica encolhendo"
+"white - cyan"	"branco - ciano"
+"white - magenta"	"branco - magenta"
+"white - yellow"	"branco - amarelo"
+"white > blue"	"branco > azul"
+"white > green"	"branco > verde"
+"white > red"	"branco > vermelho"
+"wire"	"fio"
+"with B-spline refinement"	"refinamento com B-spline"
+"without B-spline refinement"	"refinamento sem B-spline"
+"world"	"mundo"
+"x - Values"	"x - Valores"
+"x Position"	"x Posi��o"
+"x, y"	"x, y"
+"x, y, z"	"x, y, z"
+"x, y, z, m"	"x, y, z, m"
+"xMax"	"xMax"
+"xMin"	"xMin"
+"xMin, yMin, NX, NY"	"xMin, yMin, NX, NY"
+"xMin, yMin, xMax, yMax"	"xMin, yMin, xMax, yMax"
+"y - Values"	"Y - Valores"
+"y Position"	"y Posi��o"
+"yMax"	"yMax"
+"yMin"	"yMin"
+"yellow - white"	"amarelo - branco"
+"yellow > blue"	"amarelo > azul"
+"yellow > green"	"amarelo > verde"
+"yellow > red"	"amarelo > vermelho"
+"yes"	"sim"
+"yy.mm.dd"	"yy.mm.dd"
+"yy:mm:dd"	"yy:mm:dd"
+"yymmdd, fix size"	"yymmdd, corrigir tamanho"
+"yyyymmdd, fix size"	"yyyymmdd, corrigir tamanho"
+"z values"	"z valores"
+"z, Percentage silt [%]"	"Z, Percentagem de silt [%]"
+"{STATZONAL_NAME} Zonal Grid Statistics"	""
diff --git a/src/saga_core/saga_gui/res/saga.desktop b/src/saga_core/saga_gui/res/saga.desktop
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/saga.ger.txt b/src/saga_core/saga_gui/res/saga.ger.txt
old mode 100644
new mode 100755
index 8335527..bc8a8ef
--- a/src/saga_core/saga_gui/res/saga.ger.txt
+++ b/src/saga_core/saga_gui/res/saga.ger.txt
@@ -234,7 +234,6 @@ TEXT	TRANSLATION
 "A set of basic SAGA module programming examples."	"Ein Satz grundlegender Beispiele f�r die Modulprogrammierung."
 "A space separated list of key-value pairs (K=V)."	""
 "A text file with the full path to an input point cloud on each line"	""
-"A.Ringeler (c) 2003"	""
 "A3 Landscape"	"A3 Querformat"
 "A3 Portrait"	"A3 Hochformat"
 "A4 Landscape"	"A4 Querformat"
@@ -300,20 +299,21 @@ TEXT	TRANSLATION
 "Absolute"	"Absolut"
 "Absolute Area"	"Absolute Fl�che"
 "Absolute Height"	"Absolute H�he"
+"Absolute Value"	""
 "Absolute Water Level"	"Absoluter Wasserstand"
 "Absolute Water Levels"	"Absolute Wasserst�nde"
 "Absolute Weighting"	""
+"Abstract"	""
 "Acc. Area"	"abgesch�tzte Fl�che"
 "Acceleration"	"Beschleunigung"
 "Acceptable Time Difference between Image and Laser Points"	""
 "Accessing PostgreSQL databases."	""
 "Accumulated Cost"	"Akkumulierte Kosten"
-"Accumulated Cost (Anisotropic)"	"Akkumulierte Kosten (Anisotropisch)"
-"Accumulated Cost (Isotropic)"	"Akkumulierte Kosten (Isotropisch)"
-"Accumulated Material from Left Side"	""
-"Accumulated Material from Right Side"	""
+"Accumulated Cost Surface"	""
+"Accumulated Material"	""
+"Accumulated Material (Left Side)"	""
+"Accumulated Material (Right Side)"	""
 "Accumulated cost"	"Akkumulierte Kosten"
-"Accumulated cost surface"	"akkumulierte Kostenabsch�tzung"
 "Accumulation Functions"	""
 "Accumulation Target"	""
 "Accuracy"	""
@@ -327,6 +327,7 @@ TEXT	TRANSLATION
 "Add All"	""
 "Add All Fields"	""
 "Add Attribute to Clipped Points"	"F�ge Attribute zu ausgeschnittenen Punkten hinzu"
+"Add Base Map"	""
 "Add Border"	"F�ge Grenze hinzu"
 "Add Cells"	"F�ge Zellen hinzu"
 "Add Center"	"Erg�nze Mitte"
@@ -453,7 +454,11 @@ TEXT	TRANSLATION
 "Arc Vertex Distance [Degree]"	""
 "ArcGIS Version"	""
 "ArcSAGA Toolboxes"	""
+"Arccosine"	""
 "Arcs to polygons"	"Kreissegmente zu Polygonen"
+"Arcsine"	""
+"Arctangent"	""
+"Arctangent of x/y"	""
 "Area"	"Fl�che"
 "Area +"	"Fl�che +"
 "Area -"	"Fl�che -"
@@ -526,7 +531,6 @@ TEXT	TRANSLATION
 "Average"	"Durchschnitt"
 "Average 2 With Thereshold for Grids calculates average in X and Y distances unsing only the values that differ form central pixel less than a specified threshold. Each value has a weight which is inversely proportional to the distance (method 1)."	"Durchschnitt 2 Mit Schwellenwert f�r die Rasterberechnung in x und y Entfernung, der nur Werte benutzt die sich weniger als der spezifische Schwellenwert vom zentralen Pixel unterscheiden. Jeder Wert hat eine Gewichtung die invers proportiona [...]
 "Average 3 With Thereshold for Grids calculates average in X and Y distances unsing only the values that differ form central pixel less than a specified threshold. Each value has a weight which is inversely proportional to the distance (method 2)."	"Durchschnitt 3 Mit Schwellenwert f�r die Rasterberechnung in x und y Entfernung, der nur Werte benutzt die sich weniger als der spezifische Schwellenwert von dem zentralen Pixel unterscheiden. Jeder Wert hat eine Gewichtung die invers proport [...]
-"Average Size"	""
 "Average With Mask 1"	"Durchschnitt mit Maske 1"
 "Average With Mask 1 calculates average for cells specified by a mask grid. Cell excluded by the mask grid are NOT used in the average calculation."	"Durchschnitt mit Maske 1 kalkuliert den Durchschnitt f�r Zellen innerhalb eines Schablonenrasters. Zellen au�erhalb des Schablonenrasters werden nicht f�r den berechneten Durchschnitt herangezogen."
 "Average With Mask 2"	"Mit Maske 2"
@@ -537,6 +541,7 @@ TEXT	TRANSLATION
 "Average With Thereshold for Grids calculates average in X and Y distances unsing only the values that differ form central pixel less than a specified threshold. It's useful to remove noise whit a known maximum reducing the loss of informations"	"Durchschnitt Mit Schwellenwert f�r die Rasterberechnung in X und Y Entfernung, der nur Werte benutzt die sich weniger als der spezifische Schwellenwert vom zentralen Pixel unterscheiden. Es ist sinnvoll Noise mit einer bekannten Gr��e vorher zu  [...]
 "Average slope of watercourse: %.2f m/m"	""
 "Average velocity in watercourse: %.2f m/min"	""
+"Averaged Connectivity"	""
 "Averages"	""
 "Avg. Curve Number"	"Durchschnittliche Kurvennummer"
 "Avg. Manning's N"	"Durchschnitt Manning�s N"
@@ -548,7 +553,6 @@ TEXT	TRANSLATION
 "B-Spline"	""
 "B-Spline Approximation"	"B-Spline-Interpolation"
 "B-Spline Interpolation"	"B-Spline Interpolation"
-"B-spline"	""
 "B.Bechtel, O.Conrad (c) 2013"	""
 "B45 Ratio: Desert detection (step 10)"	""
 "B56 Composite (step 6)"	""
@@ -589,7 +593,9 @@ TEXT	TRANSLATION
 "Bare Earth"	"kahle Erde"
 "Barometric Pressure [mbar]"	""
 "Bars"	"Balken"
+"Base 10 Logarithm"	""
 "Base Level"	"Ausgangsniveau"
+"Base Map"	""
 "Base Name"	""
 "Base Probability"	"Basis-Wahrscheinlichkeit"
 "Basic Terrain Analysis"	""
@@ -631,6 +637,8 @@ TEXT	TRANSLATION
 "Borders"	"Grenzen"
 "Bottom"	"Basis"
 "Bottom to Top"	"Unten bis Oben"
+"Boundaries"	""
+"Boundaries: the simple filter will only operate on grid cells which fall in the same shape"	""
 "Boundary Effect"	""
 "Boundary Effect Color"	""
 "Bounding Box"	"Rahmen"
@@ -680,6 +688,8 @@ TEXT	TRANSLATION
 "CRS Dictionary"	"CRS Verzeichnis"
 "CSV Files (*.csv)"	"CSV Dateien (*.csv)"
 "CUMUL"	""
+"Cache"	""
+"Cache Directory"	""
 "Cache Size"	""
 "Calculate distribution quantiles. Value specifies interval (median=50, quartiles=25, deciles=10, ...). Set to zero to omit quantile calculation."	"Berechne Verteilungs-Quantile.Werte spezifizieren Intervall (median=50, quartil=25, decil=10,...).Eintragen von 0 verhindert Quantilberechnung."
 "Calculate the volume under the grid's surface. This is mainly useful for Digital Elevation Models (DEM)."	"Kalkuliere das Volumen unter der Rasteroberfl�che. Dieses ist haupts�chlich sinnvoll f�r Digitale Gel�ndemodelle (DGM)."
@@ -715,6 +725,7 @@ TEXT	TRANSLATION
 "Categorical Features"	""
 "Categorical Grids"	""
 "Categories"	""
+"Category"	""
 "Cell Balance"	"Zellen Gleichgewicht"
 "Cell Count"	"Zellen Anzahl"
 "Cell Count (X)"	"Zellen Z�hlen (X)"
@@ -884,7 +895,6 @@ TEXT	TRANSLATION
 "Close all data sets"	""
 "Closed Depressions"	""
 "Closed Gaps Grid"	"Raster mit geschlossenen L�cken"
-"Closest Point"	"n�chstgelegener Punkt (Pf.)"
 "Closing"	"Schlie�en"
 "Closing Gaps..."	"Schlie�e L�cken..."
 "Cloud Cover"	""
@@ -893,10 +903,10 @@ TEXT	TRANSLATION
 "Cluster Analysis"	"Clusteranalyse"
 "Cluster Analysis (Shapes)"	""
 "Cluster Analysis PC"	"Clusteranalyse f�r Punktwolken"
-"Cluster Analysis for Grids"	"Clusteranalyse f�r Raster"
 "Cluster Analysis for Point Clouds"	"Clusteranalyse f�r Punktwolken"
 "ClusterID"	"Cluster ID"
 "Clusters"	"Cluster"
+"Clusters, which are closer than this distance to each other, are merged."	""
 "Coefficient of Determination"	"Bestimmtheitsma�"
 "Cold Cloud"	""
 "Collect values"	"Sammele Werte"
@@ -951,6 +961,8 @@ TEXT	TRANSLATION
 "CompuServe Graphics Interchange"	"CompuServe Graphics Interchange"
 "CompuServe Graphics Interchange (*.gif)"	"CompuServe Graphics Interchange (*.gif)"
 "Computed flow directions, 0=N, 1=NE, 2=E, ... 7=NW"	"Berechnete Flie�richtung. 0=N, 1=NE, 2=E, ... 7=NW"
+"Concentration"	""
+"Concentration Approximation Threshold"	""
 "Concentration time (h)"	"Sammlungszeit (h)"
 "Condition"	"Bedingung"
 "Cone (Down)"	"Kegel (abw�rts)"
@@ -1020,7 +1032,7 @@ TEXT	TRANSLATION
 "Converts a TIN data set to shapes layers.\n\n"	"Wandelt einen TIN-Datensatz in eine Vektorebene um.\n\n"
 "Convex Hull"	"Konvexe H�lle"
 "Convexity"	""
-"Conway's Life"	"Conway�s Spiel des Lebens"
+"Conway's Game of Life"	""
 "Coordenada X"	"Koordinate X"
 "Coordenada X del punto de ignici�n (s�lo si no se usa grid de puntos de ignici�n)"	"Koordinate X des Z�ndpunktes"
 "Coordenada Y"	"Koordinate Y"
@@ -1039,6 +1051,7 @@ TEXT	TRANSLATION
 "Copied Selection"	""
 "Copy"	"Kopieren"
 "Copy Attributes"	""
+"Copy Grid"	""
 "Copy Legend to Clipboard [Ctrl+L]"	""
 "Copy Legend to Clipboard..."	""
 "Copy Map to Clipboard [Ctrl+C]"	""
@@ -1074,9 +1087,10 @@ TEXT	TRANSLATION
 "Correlation Matrix of the Fit Parameters:\n"	"Korrelationsmatrix der geeigneten Parameter:\n"
 "Corresponds to delta_max. Must be > 1"	""
 "Corresponds to delta_min. Must be > 0"	""
+"Cosine"	""
 "Cosine Correction (Civco 1989)"	"Kosinus-Korrektur (Civco 1989)"
 "Cosine Correction (Teillet et al. 1982)"	"Kosinus-Korrektur (Teillet et al. 1982)"
-"Cost Grid"	"Kostengitter"
+"Cost Analysis"	""
 "Could not connect to data source."	""
 "Could not create data source."	"Datenquelle kann nicht erstellt werden."
 "Could not create dataset."	"Datensatz kann nicht erzeugt werden."
@@ -1084,6 +1098,7 @@ TEXT	TRANSLATION
 "Could not load project."	"Kann Projekt nicht laden."
 "Could not save project."	"Projekt kann nicht gespeichert werden."
 "Count"	"Anzahl"
+"Count No Data as Zero"	""
 "Count Only Above Base Level"	"Z�hle nur �ber Ausgangsniveau"
 "Count Only Below Base Level"	"Z�hle nur unter Ausgangsniveau"
 "Count Points in Polygons"	"Anzahl Punkte in Polygonen"
@@ -1143,7 +1158,6 @@ TEXT	TRANSLATION
 "Cross-Tabulation"	"Kreuzauflistung"
 "Cross-Tabulation Table"	"Kreuzauflistungstabelle"
 "Cross-diagonal hatch"	"diagonale Kreuzschraffur"
-"Cubic Convolution"	""
 "Cubic Spline Approximation"	"kubische Spline-Angleichung"
 "Cubic: a + b * x + c * x^2 + d * x^3"	"Kubisch: a + b * x + c * x^2 + d * x^3"
 "Culmination"	""
@@ -1311,7 +1325,7 @@ TEXT	TRANSLATION
 "Desmet & Govers"	""
 "Desmet & Govers 1996"	""
 "Destandardisation"	"Destandardisation"
-"Destination Points"	"Zielpunkte"
+"Destinations"	""
 "Destriped Grid"	"Gestreiftes Raster"
 "Destriping"	""
 "Destriping with Mask"	""
@@ -1370,10 +1384,9 @@ TEXT	TRANSLATION
 "Direction Difference"	""
 "Direction [Degree]"	"Richtung [Grad]"
 "Direction into which the wind blows, starting with 0 for North and increasing clockwise."	""
+"Direction of Maximum Cost"	""
 "Direction of Minimum Standard Deviation"	"Richtung der minimalen Standardabweichung"
 "Direction of Plane [Degree]"	"Richtung der Fl�che [Grad]"
-"Direction of max cost"	"Richtung der maximalen Kosten"
-"Direction of max cost for each cell. In degrees"	"Richtung der maximalen Kosten f�r jede Zelle. In Grad"
 "Direction of the light source, measured in degree clockwise from the north direction."	"Richtung der Lichtquelle, gemessen in Grad im Uhrzeigersinn von Norden."
 "Directional Average"	""
 "Directional Statistics"	"Gerichtete Statistik"
@@ -1505,7 +1518,6 @@ TEXT	TRANSLATION
 "Edit Positions"	"Positionen bearbeiten"
 "Edit Selection"	""
 "Edit Shapes"	"Vektoren bearbeiten"
-"Efective friction = stated friction ^f , where f = cos(DifAngle)^k."	"effektive Reibung = vorgegebene Reibung ^f , wobei f = cos(DifWinkel)^k. "
 "Effective Air Flow Heights"	"Effektive Luftflussh�hen"
 "Effective Flow Length"	""
 "Effective Rainfall"	""
@@ -1532,6 +1544,7 @@ TEXT	TRANSLATION
 "Ellipsoid Definition"	"Ellipsoid Definition"
 "Ellipsoid Height [m]"	"Ellipsoid H�he [m]"
 "Ellipsoids"	"Ellipsoide"
+"Enable local disk cache. Allows for offline operation."	""
 "Encountered invalid path description in *.spcvf file!"	""
 "Encountered invalid path description in *.spcvf_tile_info file!"	""
 "End Latitude"	""
@@ -1599,6 +1612,7 @@ TEXT	TRANSLATION
 "Expansion Degree"	""
 "Exponent"	"Exponent"
 "Exponent for distance weighting (0.0-4.0)"	"Exponent f�r Distanzgewichtung"
+"Exponential"	""
 "Export Atlas Boundary File"	"Export Atlas Boundary Datei"
 "Export ESRI Arc/Info Grid"	"Export ESRI Arc/Info Rasterdaten"
 "Export GPX"	"Export GPX"
@@ -1658,6 +1672,7 @@ TEXT	TRANSLATION
 "False Northing [m]"	"unechte Nordrichtung [m]"
 "Fast Representativeness"	"Schneller repr�sentativer Charakter"
 "Feature"	""
+"Feature Importances"	""
 "Feature Probabilities"	""
 "Feature Selection"	""
 "Features"	"Merkmale"
@@ -1794,7 +1809,6 @@ TEXT	TRANSLATION
 "Flatten Polygon Layer"	""
 "Flattening"	"Abplattung"
 "Flattening (f)"	"Abplattung (f)"
-"Flip"	"Kippen"
 "Floating Point (4 byte)"	"Flie�kommazahl (4 Byte)"
 "Floating Point (8 byte)"	"Flie�kommazahl (8 Byte)"
 "Floating point"	""
@@ -1882,6 +1896,7 @@ TEXT	TRANSLATION
 "Function Fit"	"Funktionsanpassung"
 "Function Fitting Range"	"Funktionsanpassungsbereich"
 "Function Parameters"	"Funktionsparameter"
+"Function Plotter"	""
 "Function failed because no attributes are available"	"Funktion schlug fehl, weil keine Attribute verf�gbar sind."
 "Fuzzified"	"unscharf"
 "Fuzzified Grid"	"unscharfes Raster"
@@ -1977,6 +1992,9 @@ TEXT	TRANSLATION
 "Get Shapes Extents"	"Nimm Vektorausdehnung"
 "Get Subset from Virtual Point Cloud"	""
 "Get table from MySQL server.\n"	"Hole Tabelle vom MySQL-Server.\n"
+"Get the current cell's column/row index"	""
+"Get the x/y coordinates for the current cell"	""
+"Gini Decrease"	""
 "Global Irradiation"	""
 "Global Moran's I for Grids"	"Globales Moran�s I f�r Raster"
 "Globe Viewer for Grids"	""
@@ -1997,6 +2015,7 @@ TEXT	TRANSLATION
 "Graduated Colors"	""
 "Graduated Colours"	""
 "Graticule"	"Gitternetz"
+"Gray Scale Image"	""
 "Great Elliptic"	""
 "Greater than"	"Gr��er als"
 "Green"	"Gr�n"
@@ -2011,12 +2030,11 @@ TEXT	TRANSLATION
 "Grid Cell Index"	""
 "Grid Difference"	"Raster Differenz"
 "Grid Division"	""
-"Grid Interpolation"	"Raster Interpolation"
+"Grid Generation"	""
 "Grid List"	""
 "Grid Manager"	"Rasterverwaltung"
 "Grid Masking"	"Raster Abdeckung"
 "Grid Normalisation"	"Raster Normierung"
-"Grid Orientation"	"Raster Ausrichtung"
 "Grid Project"	"Raster Projekt"
 "Grid Proximity Buffer"	"Raster Nachbarschaftspuffer"
 "Grid Skeletonization"	"Raster Ger�st"
@@ -2143,7 +2161,6 @@ TEXT	TRANSLATION
 "Horizontal Overland Flow Distance"	"Horizontale �ber Land Str�mungsdistanz"
 "Horizontal Range"	"Horizontaler Bereich"
 "Horizontal hatch"	"horizontale Schraffur"
-"Horizontally mirrored"	"horizontal gespiegelt"
 "Host"	""
 "Hourly Data"	"St�ndliche Daten"
 "How many trees to create?"	""
@@ -2185,6 +2202,8 @@ TEXT	TRANSLATION
 "IHS Sharpening"	""
 "IHS to RGB"	""
 "IMCORR - Feature Tracking"	""
+"ISODATA Cluster Statistics"	""
+"ISODATA Clustering for Grids"	""
 "Ice"	"Eis"
 "Identifier"	"Bezeichner"
 "Identity"	""
@@ -2195,9 +2214,9 @@ TEXT	TRANSLATION
 "If checked, then temperature data are used."	"Wenn abgehakt werden die Temperaturdaten benutzt."
 "If false, the training algorithm normalizes each input feature independently, shifting its mean value to 0 and making the standard deviation equal to 1."	""
 "If false, the training algorithm normalizes each output feature independently, by transforming it to the certain range depending on the used activation function."	""
-"If grid is not set, a new one will be created using chosen width and height."	"Wenn kein Raster ausgew�hlt ist wird ein neues erzeugt mit der ausgew�hlten Breite und H�he."
 "If not set points will be removed from the input data set."	""
 "If not set property attributes will be added to the orignal layer."	""
+"If not specified the cache will be created in the current user's temporary directory."	""
 "If set, output is given about the number of fields a flow path visits downhill. For D8 only."	""
 "If table exists..."	"Wenn Tabelle existiert..."
 "Ignition Points"	"Z�ndungspunkte"
@@ -2251,6 +2270,7 @@ TEXT	TRANSLATION
 "Import LAS Files"	"Import LAS Dateien"
 "Import MOLA Grid (MEGDR)"	"Import MOLA Raster (MEGDR)"
 "Import NetCDF"	""
+"Import Open Street Map Image"	""
 "Import Point Cloud from Shape File"	""
 "Import Point Cloud from Text File"	"Import Punktwolken von Textdateien"
 "Import Raster"	""
@@ -2311,6 +2331,7 @@ TEXT	TRANSLATION
 "Init Generalisation"	"Initialisere die Generalisierung"
 "Initial Litter Storage [g/m\xb2]"	""
 "Initial Nitrogen Content [kg/ha]"	"Anfangsstickstoffgehalt [kg/ha]"
+"Initial Number of Clusters"	""
 "Initial Number of Distance Classes"	"Anf�ngliche Anzahl von Entfernungsklassen"
 "Initial Number of Fishes [%]"	"Anfangsanzahl von Fischen [%]"
 "Initial Number of Sharks [%]"	"Anfangsanzahl von Haien [%]"
@@ -2328,6 +2349,7 @@ TEXT	TRANSLATION
 "Initiation Grid"	"Startraster"
 "Initiation Threshold"	"Anfangsschwellenwert"
 "Initiation Type"	"Anfangs Typ"
+"Inlet Concentration"	""
 "Inner Buffer"	""
 "Input"	"Eingabe"
 "Input Binary Grid"	""
@@ -2341,11 +2363,12 @@ TEXT	TRANSLATION
 "Input Grid 2"	"Eingaberaster 2"
 "Input Grids"	"Eingaberaster"
 "Input Specification"	"Eingabevorgabe"
+"Input Type of Destinations"	""
 "Input data for the trained network."	""
 "Input data to train the network."	""
 "Input file"	"Eingabedatei"
 "Input file list could not be opened!"	""
-"Input for Mean over Catchment Calculation"	""
+"Input for Mean over Catchment"	""
 "Input for module calculations."	"Eingabe f�r Modulberechnungen."
 "Input for the morphological reconstruction"	""
 "Input format"	"Eingabeformat"
@@ -2385,7 +2408,6 @@ TEXT	TRANSLATION
 "Internal subcatchment routing velocity [m/h]"	"Routinggeschwindigkeit des Internen Teileinzuggebietes [m/h] "
 "Interpolated Colors"	"Interpolierte Farben"
 "Interpolation"	"Interpolation"
-"Interpolation Method"	"Interpolationsmethode"
 "Interpolation Scale"	""
 "Interpolation Steps"	"Interpolationsschritte"
 "Intersect"	""
@@ -2404,18 +2426,19 @@ TEXT	TRANSLATION
 "Invalid polygon layer."	"Nicht zul�ssige Polygonebene"
 "Inverse"	"Invers"
 "Inverse Distance"	""
-"Inverse Distance Interpolation"	"Inverse Distanz Interpolation"
 "Inverse Distance Offset"	"Inverse Distanz Versatz"
 "Inverse Distance Weighted"	"Inverse Distanzgewichtung"
 "Inverse Distance Weighting Power"	"Inverse Distanz Gewichtungskraft"
+"Inverse Grid"	""
 "Inverse Principle Components Rotation"	""
 "Inverse transformation not available for selected projection type."	"Inverse Transformation nicht verf�gbar f�r den gew�hlten Projektionstyp."
-"Inversion"	"Inversion"
 "Invert"	"Umkehren"
 "Invert Data/No-Data"	"Umkehr Daten/No-Data"
+"Invert Grid"	""
 "Invert Selection"	"Invertiere Auswahl"
 "Invert Selection of Shapes Layer"	"Invertiere Auswahl der Vektorebenen"
 "Invert selection."	"Auswahl umkehren."
+"Inverted"	""
 "Is the subbasin upstream (no external inflow)"	"Ist der Teilbecken gegenstrom (kein externer Zustrom)"
 "Isochrones Constant Speed"	"Isochrone konstante Geschwindigkeit"
 "Isochrones Variable Speed"	"Isochrone variable Geschwindigkeit"
@@ -2447,6 +2470,8 @@ TEXT	TRANSLATION
 "Junction"	""
 "Junctions"	"Verbindungen"
 "June"	"Juni"
+"K Factor"	""
+"K-Means Clustering for Grids"	""
 "K1"	""
 "K2"	""
 "K3"	""
@@ -2546,6 +2571,7 @@ TEXT	TRANSLATION
 "Latitude [Degree]"	""
 "Latitude/Longitude Graticule"	""
 "Latitudinal Statistics"	""
+"Layer"	""
 "Layer A"	"Ebene A"
 "Layer B"	"Ebene B"
 "Layer of extreme value"	"Ebene extremer Werte"
@@ -2557,7 +2583,7 @@ TEXT	TRANSLATION
 "Leafs"	"Bl�tter"
 "Least Cost Path"	"Weg geringster Kosten"
 "Least Cost Paths"	"Wege geringster Kosten"
-"Least cost path profile line"	"Geringste Kostenpfad Profil Linie"
+"Least cost path profile lines"	""
 "Least cost path profile points"	"Geringste Kostenpfadprofil Punkte"
 "Leaves"	"Bl�tter"
 "Leaves to Litter"	"Bl�tter zu Abfall"
@@ -2586,6 +2612,7 @@ TEXT	TRANSLATION
 "Level Heights"	""
 "Level of Detail"	"Detaillierungsgrad"
 "Level of Generalisation"	"Stufe der Generalisierung"
+"Libraries"	""
 "Library"	"Bibliothek"
 "Life"	"Leben"
 "Life Cycle"	"Lebenszyklus"
@@ -2667,6 +2694,7 @@ TEXT	TRANSLATION
 "Loam"	"Lehm"
 "Loamy Sand"	"lehmiger Sand"
 "Local Cartesian"	"�rtlich Kartesisch"
+"Local Cost"	""
 "Local Curvature"	""
 "Local Downslope Curvature"	""
 "Local Maxima"	"Lokales Maximum"
@@ -2712,6 +2740,7 @@ TEXT	TRANSLATION
 "Lookup table used in method \"	"Nachschlagetabelle benutzt bei der Methode \"
 "Lookup table."	"Nachschlagetabelle."
 "Loop"	""
+"Loss through Negative Weights"	""
 "Lotsa"	"Viele"
 "Low Pass"	"Tiefpass"
 "Low Pass Filter"	"Tiefpassfilter"
@@ -2774,6 +2803,7 @@ TEXT	TRANSLATION
 "Manning-Strickler Coefficient"	""
 "Manning-Strickler coefficient for flow travel time estimation (reciprocal of Manning's Roughness Coefficient)"	""
 "Map"	"Karte"
+"Map Drape Resampling"	""
 "Map Draping"	""
 "Map Draping Interpolation"	""
 "Map Extent"	""
@@ -2787,6 +2817,7 @@ TEXT	TRANSLATION
 "Map Width [Pixels]"	"Kartenbreite [Pixel]"
 "Map Window Arrangement"	""
 "Map/Table Size Ratio [%]"	"Karten/Tabellen Gr��enverh�ltnis [%]"
+"MapQuest"	""
 "Maps"	"Karten"
 "March"	"M�rz"
 "Mark Highest Neighbour"	"markiere h�chsten Nachbarn"
@@ -2800,7 +2831,7 @@ TEXT	TRANSLATION
 "Massivity Coefficient"	"Massivit�tskoeffzient"
 "Match"	""
 "Match Fields by Name"	""
-"Material"	"Material"
+"Material for Accumulation"	""
 "Matrix signular\n"	"singulare Matrix\n"
 "Max"	"Max"
 "Max Iterations"	"Maximale Iterationen"
@@ -2832,6 +2863,8 @@ TEXT	TRANSLATION
 "Maximum Level"	"Maximalpegel"
 "Maximum Likelihood"	"Maximale Wahrscheinlichkeit"
 "Maximum Membership"	""
+"Maximum Number of Clusters"	""
+"Maximum Number of Iterations"	""
 "Maximum Number of Points"	"Maximale Anzahl der Punkte"
 "Maximum Overestimation of ExcessRain [%]"	"Maximale �bersch�tzung von �berschussregen [%]"
 "Maximum Points"	"Maximale Punkte"
@@ -2840,6 +2873,7 @@ TEXT	TRANSLATION
 "Maximum Search Radius"	"Maximaler Suchradius"
 "Maximum Search Radius (cells)"	"Maximaler Suchradius (Zellen)"
 "Maximum Selection"	""
+"Maximum Standard Deviation within a Cluster"	""
 "Maximum Sum of overestimated ExcessRain to total ExcessRain in [%]"	"Maximale Summe von �bereingesch�tztem �berschussregen zu totalem �berschussregen in [%]"
 "Maximum Temperature"	""
 "Maximum Time Span (Seconds)"	""
@@ -2943,6 +2977,7 @@ TEXT	TRANSLATION
 "Minimum Distance"	"Minimaldistanz"
 "Minimum Distance Analysis"	"Minimale Entfernung Analyse"
 "Minimum Exaggeration [%]"	"Minimale �berh�hung [%]"
+"Minimum Gradient"	""
 "Minimum Height"	""
 "Minimum Magnitude"	""
 "Minimum Nash-Sutcliffe Efficiency"	"Minimale Nash-Sutcliffe Effizienz"
@@ -2951,6 +2986,7 @@ TEXT	TRANSLATION
 "Minimum Node Split Size"	""
 "Minimum Number of Dark Object Cells"	""
 "Minimum Number of Points"	"Minimale Anzahl von Punkten"
+"Minimum Number of Samples in a Cluster"	""
 "Minimum Probability"	""
 "Minimum Redundancy Feature Selection"	""
 "Minimum Resolution (Degree)"	""
@@ -2982,8 +3018,11 @@ TEXT	TRANSLATION
 "Minnaert Correction with Slope (Law & Nichol 2004)"	"Minnaert Korrektur mit Neigung (Law & Nichol 2004)"
 "Minnaert Correction with Slope (Riano et al. 2003)"	"Minnaert Korrektur mit Neigung (Riano et al. 2003)"
 "Mirror"	"Spiegeln"
+"Mirror Grid"	""
 "Mirror Horizontally"	""
 "Mirror Vertically"	""
+"Mirrored horizontally"	""
+"Mirrored vertically"	""
 "Missing Value"	""
 "Mixed Flow Threshold (ha)"	"Gemischter Str�mungsschwellenwert (ha)"
 "Mode"	""
@@ -3018,6 +3057,7 @@ TEXT	TRANSLATION
 "Monthly Global by Latitude"	""
 "Moore"	""
 "Moore & Nieber 1989"	""
+"Moore (8)"	""
 "Moore et al. 1991"	""
 "Moran's I"	""
 "Morphological Filter"	"Morphologischer Filter"
@@ -3096,13 +3136,12 @@ TEXT	TRANSLATION
 "Name des Evaluierungspunktes 2"	""
 "Name des Evaluierungspunktes 3"	""
 "Name of Landsat metadata file (.met or MTL.txt)"	""
+"Natural Logarithm"	""
 "Natural Neighbour"	"Nat�rliche Nachbarn-Methode"
 "Navaladi, Schoeller, Conrad (c) 2009"	""
 "Near Infrared (TM 4)"	""
 "Near Infrared Reflectance"	""
 "Near Points"	""
-"Nearest Neigbhor"	"N�chster Nachbar"
-"Nearest Neighbor"	"N�chster Nachbar"
 "Nearest Neighbour"	"N�chste Nachbarn-Methode"
 "Needs less memory, but is slow"	"Ben�tigt weniger Speicher, ist aber langsam"
 "Needs more memory, but is quicker"	"Ben�tigt mehr Speicher, ist aber schneller"
@@ -3114,10 +3153,10 @@ TEXT	TRANSLATION
 "NetCDF Files (*.nc)"	""
 "Network topology"	""
 "Neumann"	""
+"Neumann (4)"	""
 "Neumann: the four horizontally and vertically neighboured cells; Moore: all eight adjacent cells"	""
 "Neural Networks (OpenCV)"	""
 "New"	"Neu"
-"New Grid Dimensions"	"Neue Rasterdimensionen"
 "New Shapes Layer"	"Neue Vektorebene"
 "New Table"	"Neue Tabelle"
 "New grid filtered with the A1WiTh module"	"Neues Raster gefiltert mit dem A1WiTh Modul"
@@ -3152,7 +3191,6 @@ TEXT	TRANSLATION
 "No attribute fields specified!"	""
 "No compatible table has been found."	""
 "No data"	""
-"No data loaded."	"Keine Daten geladen."
 "No description available"	"Keine Beschreibung verf�gbar"
 "No duplicates found."	"Keine Duplikate gefunden."
 "No objects"	""
@@ -3213,6 +3251,7 @@ TEXT	TRANSLATION
 "Number of Columns"	"Anzahl der Spalten"
 "Number of Components"	"Anzahl der Komponenten"
 "Number of Data Cells"	"Anzahl der Datenzellen"
+"Number of Data Sets"	""
 "Number of Different Classes"	"Anzahl verschiedener Klassen"
 "Number of Directions"	"Anzahl der Richtungen"
 "Number of Distance Classes"	"Anzahl der Entfernungsklassen"
@@ -3227,6 +3266,7 @@ TEXT	TRANSLATION
 "Number of Iterations"	""
 "Number of Iterations for Normal Updating"	""
 "Number of Iterations for Vertex Updating"	""
+"Number of Maps"	""
 "Number of No-Data Cells"	""
 "Number of Numeric Value Classes"	""
 "Number of Pairs"	"Anzahl der Paare"
@@ -3334,6 +3374,7 @@ TEXT	TRANSLATION
 "Open Database Connection"	""
 "Open Project"	""
 "Open Slopes"	""
+"Open Street Map"	""
 "Open as data set"	""
 "Open with external application"	""
 "OpenCV"	""
@@ -3344,6 +3385,7 @@ TEXT	TRANSLATION
 "Operator Type"	"Operatortyp"
 "Operator scale"	"Operator Umfang"
 "Opposite Neighbours"	"entgegengesetzte Nachbarn"
+"Optimised"	""
 "Optional Output Filepath"	""
 "Optional Target Grids"	""
 "Optional Tile Info Filename"	""
@@ -3373,6 +3415,7 @@ TEXT	TRANSLATION
 "Orthographic"	"Orthografisch"
 "Ouput"	"Ausgabe"
 "Outlet"	""
+"Outlet Concentration"	""
 "Outlet Hydrographs"	"Abflussganglinien"
 "Outlet X"	"Auslass X"
 "Outlet Y"	"Auslass Y"
@@ -3513,6 +3556,7 @@ TEXT	TRANSLATION
 "Permament Interception"	""
 "Permanent Wilting Point [mm]"	"Permanenter Welkepunkt [mm]"
 "Permeability"	"Durchl�ssigkeit"
+"Permutation Importance"	""
 "Perpendicular Vegetation Index (Perry and Lautenschlager, 1984)"	""
 "Perpendicular Vegetation Index (Qi, et al., 1994)"	""
 "Perpendicular Vegetation Index (Richardson and Wiegand, 1977)"	""
@@ -3701,6 +3745,7 @@ TEXT	TRANSLATION
 "Preserve Data Type"	"Erhalte Datentyp"
 "Preset Selection"	""
 "Presets"	""
+"Prevent Negative Flow Accumulation"	""
 "Previous"	"Vorherige"
 "Primary Key"	""
 "Primary Name"	"Prim�rer Name"
@@ -3737,18 +3782,15 @@ TEXT	TRANSLATION
 "Product"	"Produkt"
 "Production"	""
 "Profile"	"Profile"
-"Profile (lines)"	"Profile (Linien)"
-"Profile (points)"	"Profile (Punkte)"
 "Profile Curvature"	"Profile Kurvatur"
 "Profile Distance"	"Profile Distanz"
 "Profile Length"	"Profile L�nge"
 "Profile Line"	"Profile Linie"
+"Profile Lines"	""
 "Profile Points"	"Profile Punkte"
 "Profile Samples"	"Profile Stichproben"
 "Profile [%s]"	"Profile [%]"
 "Profile from points"	"Profile aus Punkten"
-"Profile_Line_[%s]_%d"	"Profil_Linie_[%s]_%d"
-"Profile_Points_[%s]_%d"	"Profil_Punkte_[%s]_%d"
 "Profiles"	"Profile"
 "Profiles from Lines"	"Profile aus Linien"
 "Proj.4"	"Proj.4"
@@ -3817,7 +3859,6 @@ TEXT	TRANSLATION
 "R:Classification"	"R:Klassifizierung"
 "R:Conversion"	"R:Umwandlung"
 "R:Conversions"	"R:Umwandlungen"
-"R:Cost Analysis"	"R:Kostenauswertung"
 "R:Dynamics"	""
 "R:Export"	"R:Export"
 "R:Fragmentation Analysis"	"R:Fragmentierungsanalyse"
@@ -3887,6 +3928,8 @@ TEXT	TRANSLATION
 "Random Forest Options"	""
 "Random Forest Presence Prediction (ViGrA)"	""
 "Random Terrain"	""
+"Random number, Gaussian distribution with mean x and standard deviation y"	""
+"Random number, uniform distribution with minimum x and maximum y"	""
 "Range"	"Bereich"
 "Range of R,G,B values in LAS file."	"Bereich der R,G,B Werte in LAS Datei."
 "Rank"	"Rankzahl"
@@ -4021,6 +4064,16 @@ TEXT	TRANSLATION
 "Resulting Point Cloud."	"Resultierende Punktwolke"
 "Resulting Value"	"sich ergebender Wert"
 "Results"	"Ergebnisse"
+"Returns the floating point remainder of x/y"	""
+"Returns the integer part of floating point value x"	""
+"Returns the value of Pi"	""
+"Returns true (1), if at least one of both x and y is true (i.e. not 0)"	""
+"Returns true (1), if both x and y are true (i.e. not 0)"	""
+"Returns true (1), if x equals y, else false (0)"	""
+"Returns true (1), if x is greater than y, else false (0)"	""
+"Returns true (1), if x is less than y, else false (0)"	""
+"Returns x raised to the power of y"	""
+"Returns x, if condition c is true (i.e. not 0), else y"	""
 "Revert Palette"	"Umkehrtabelle"
 "Rf"	""
 "Rho 8"	""
@@ -4332,6 +4385,7 @@ TEXT	TRANSLATION
 "Shall execution be stopped?"	"Soll die Ausf�hrung gestoppt werden?"
 "Shape"	""
 "Shape Index"	"Vektor Index"
+"Shape Layers"	""
 "Shape Parameter for Elevation Percentile"	"Formparameter f�r H�henperzentil"
 "Shape Parameter for Slope"	"Formparameter f�r Neigung"
 "Shape Type"	"Vektortyp"
@@ -4435,6 +4489,7 @@ TEXT	TRANSLATION
 "Similarity Threshold"	""
 "Simple"	"Einfach"
 "Simple Filter"	"Einfache Filter"
+"Simple Filter within shapes"	""
 "Simple Kriging"	""
 "Simple, flow path and swath profiles."	"Einfach, Fliessweg und Bahnprofile"
 "Simplified Lines"	"vereinfachte Linien"
@@ -4458,6 +4513,7 @@ TEXT	TRANSLATION
 "Simulation|Hydrology|IHACRES"	"Simulation|Hydrologie|IHACRES"
 "Simulation|Hydrology|RivFlow"	""
 "Simulation|Quantitative Modeling of Earth Surface Processes"	""
+"Sine"	""
 "Single Cell"	"Einzelzelle"
 "Single Colour"	""
 "Single Flow Direction"	"Einzelne Flie�richtung"
@@ -4483,7 +4539,6 @@ TEXT	TRANSLATION
 "Size of smoothing filter"	"Gr��e des Gl�ttungsfilters"
 "Size relates to..."	""
 "Skeleton"	"Ger�st"
-"Skewness"	""
 "Skip"	""
 "Skip Lines"	""
 "Skip Number"	"Auslassungsnummer"
@@ -4626,6 +4681,7 @@ TEXT	TRANSLATION
 "Spring"	""
 "Spur"	""
 "Square"	"Rechteck"
+"Square Root"	""
 "Squared Correlation Coefficient"	""
 "Squared Eccentricity (es)"	"quadratische Exzentrit�t"
 "Squares"	"Quadrate"
@@ -4727,13 +4783,15 @@ TEXT	TRANSLATION
 "Supervised Classification for Shapes"	""
 "Supervised Classification for Tables"	""
 "Support Vector Machine"	""
-"Suppress Negative Flow Accumulation Values"	""
 "Surface"	"Oberfl�che"
+"Surface Approximation Threshold"	""
 "Surface Area"	""
 "Surface Specific Points"	"Oberfl�che spezifische Punkte"
+"Surface and Gradient"	""
 "Surface hydraulic conductivity [m/h]"	"Oberfl�che hydraulische Durchl�ssigkeit [m/h]"
 "Surface roughness"	""
 "Surface used to derive the LDD network, e.g. a DTM."	""
+"Surface, Gradient and Concentration"	""
 "Surfer Blanking Files (*.bln)"	""
 "Surfer Blanking Files (*.bln)|*.bln|All Files|*.*"	"Surfer Blanking Dateien (*.bln)|*.bln|Alle Dateien|*.*"
 "Surfer Grid (*.grd)|*.grd|All Files|*.*"	"Surfer Rasterdateien (*.grd)|*.grd|Alle Dateien|*.*"
@@ -4809,6 +4867,7 @@ TEXT	TRANSLATION
 "Tagged Image File Format"	"Tagged Image Dateiformat"
 "Tagged Image File Format (*.tif, *.tiff)"	"Tagged Image Dateiformat (*.tif, *.tiff)"
 "Take Formula"	"Benutze Formel"
+"Tangent"	""
 "Tangential Curvature"	""
 "Target"	"Ziel"
 "Target Area"	"Zielbereich"
@@ -4822,6 +4881,7 @@ TEXT	TRANSLATION
 "Target Grid"	"Ziel Raster"
 "Target Grid System"	""
 "Target Grid Type"	"Ziel Rastertyp"
+"Target Map"	""
 "Target Parameter List Initialisation Error"	"Ziel Parameterlisten Initialisationsfehler"
 "Target Parameters"	"Ziel Parameter"
 "Target Projection"	"Ziel Projektion"
@@ -5153,7 +5213,6 @@ TEXT	TRANSLATION
 "Total Curvature"	""
 "Total Insolation"	"Gesamt Sonneneinstrahlung"
 "Total Kinetic Energy"	""
-"Total accumulated Material"	"Gesamt angesammeltes Material"
 "Total area is zero or minimum elevation is equal or lower than maximum elevation!"	""
 "Total flow (in watershed) [m^3/dt]"	""
 "Total flow [m/dt]"	"Gesamtstr�mung [m/dt]"
@@ -5259,6 +5318,7 @@ TEXT	TRANSLATION
 "Unit Name"	"Einheitenname"
 "Units"	"Einheiten"
 "Units for output radiation values."	"Einheiten f�r die Ausgabe der Strahlungswerte."
+"Units of Direction"	""
 "Universal Kriging"	"Universal Kriging"
 "Universal Transvers Mercator (UTM)"	"Universal Transversal Merkator (UTM)"
 "Unknown"	"Unbekannt"
@@ -5269,11 +5329,13 @@ TEXT	TRANSLATION
 "Unreferenced Grids"	""
 "Unsaturated zone time delay per unit storage deficit [h]"	"Unges�ttigte Zone Zeitverz�gerung pro Einheit Speicherdefizit [h]"
 "Unsorted tool chains"	""
+"Unsupervised"	""
 "Up"	""
 "Up [-]"	""
 "Up [Home]"	""
 "Up/Down"	"Auf/Ab"
 "Update"	"Aktualisiere"
+"Update Colors from Features"	""
 "Update Data"	""
 "Update Raster SRID"	""
 "Update Shapes SRID"	""
@@ -5304,6 +5366,7 @@ TEXT	TRANSLATION
 "Use Confidence Interval"	"Nutze Vertrauensintervall"
 "Use Flow Threshold"	""
 "Use Label as Identifier"	""
+"Use Multiple Cores"	""
 "Use NoData"	""
 "Use Offset"	"Nutze Versatz"
 "Use Pyramids"	"Benutze Pyramiden"
@@ -5315,6 +5378,7 @@ TEXT	TRANSLATION
 "Use only features selected by the minimum Redundancy Maximum Relevance (mRMR) algorithm"	""
 "Use only seed cells as starting points."	"Benutze nur Keimzellen als Startpunkte."
 "Use sky view factor based on local slope (after Oke 1988), if no sky viev factor grid is given."	"Benutze Himmelsblickfaktor basierend auf lokaler neigung (nach Oke 1988), wenn kein Himmelsblickraster gegeben ist. "
+"Use the first three features in list to obtain blue, green, red components for class colour in look-up table."	""
 "Use the stipple bitmap"	"Benutze die verschattete Bitmap"
 "Use the user dashes"	"Benutze den benutzerdefinierten Strich"
 "Use this option to reclassify No-Data values independently of the method settings."	"Nutze diese Option um No-Data-Werte unabh�ngig von der Methodenauswahl neu zu berechnen."
@@ -5433,7 +5497,6 @@ TEXT	TRANSLATION
 "Vertical Scaling"	""
 "Vertical hatch"	"vertikale Schraffur"
 "Vertical scaling factor"	""
-"Vertically mirrored"	"vertikal gespiegelt"
 "Vertices"	""
 "Vertikale Zufluesse"	""
 "ViGrA"	""
@@ -5676,11 +5739,6 @@ TEXT	TRANSLATION
 "[MSG] Save to PDF"	"Als PDF speichern"
 "[MSG] failed"	"fehlgeschlagen"
 "[MSG] okay"	"erfolgreich"
-"[VAL] B-Spline"	""
-"[VAL] Bicubic Spline"	"Bikubischer Spline"
-"[VAL] Bilinear"	""
-"[VAL] Inverse Distance"	"Umgekehrte Distanz"
-"[VAL] None"	"Nicht vorhanden"
 "[deprecated] Point Cloud Viewer"	""
 "[deprecated] TIN Viewer"	""
 "[not set]|"	"[nichts ausgew�hlt]|"
@@ -5763,9 +5821,11 @@ TEXT	TRANSLATION
 "attribute is contained in search expression"	"Attribut ist im Suchausdruck enthalten"
 "attribute is identical with search expression"	"Attribut ist identisch mit dem Suchausdruck"
 "attribute to be searched; if not set all attributes will be searched"	"zu durchsuchende Attribute; wenn nichts eingetragen wird, werden alle Attribute durchsucht"
+"attributes must be more than 1"	""
 "author      "	"Autor"
 "automatically"	""
 "average"	"Durchschnitt"
+"average distance that a cell's accumulated flow travelled"	""
 "average size of the area covered by each category that occurs within search area"	""
 "average value"	""
 "avoids precision problems when source and target crs use different geodedtic datums."	""
@@ -5784,7 +5844,6 @@ TEXT	TRANSLATION
 "begin transaction command failed"	""
 "between cells"	""
 "bi-linear saddle"	"bilinearer Sattel"
-"bicubic spline"	""
 "bilinear"	""
 "binary"	"bin�r"
 "bit"	"Bit"
@@ -5796,6 +5855,7 @@ TEXT	TRANSLATION
 "blending distance given in map units"	""
 "blue channel color"	"Blauer Farbkanal"
 "bm"	""
+"both"	""
 "bottom"	"Unten"
 "bottom / left"	"unten / links"
 "bottom left"	"unten links"
@@ -5805,6 +5865,8 @@ TEXT	TRANSLATION
 "bottom-right"	""
 "bright - dark"	"hell - dunkel"
 "built-in"	"eingebaut"
+"by area size"	""
+"by number of cells"	""
 "c, Percentage clays [%]"	"c, Prozentanteil Tage [%]"
 "cache memory size in MB"	""
 "calculate averages"	"berechne Durchschnitt"
@@ -5823,6 +5885,7 @@ TEXT	TRANSLATION
 "cell"	"Zelle"
 "cell area"	"Zellfl�che"
 "cells"	"Zellen"
+"cells in process"	""
 "cellsize and lower left center coordinates"	""
 "cellsize and lower left corner coordinates"	""
 "cellsize and upper left center coordinates"	""
@@ -5910,6 +5973,7 @@ TEXT	TRANSLATION
 "could not create index: insufficient memory"	"Index konnte nicht erzeugt werden: nicht gen�gend Speicher"
 "could not create new PostgreSQL database"	""
 "could not create table"	""
+"could not create target grid"	""
 "could not create weights grid"	""
 "could not disconnect ODBC source"	""
 "could not disconnect PostgreSQL source"	""
@@ -6015,6 +6079,7 @@ TEXT	TRANSLATION
 "dissolved inner rings"	""
 "distance"	"Entfernung"
 "distance weighted average catchment slope"	""
+"distance weighted average of the number of different categories for distance classes"	""
 "do not confirm"	"nicht best�tigen"
 "do not join"	"nicht verbinden"
 "do not show"	"nicht anzeigen"
@@ -6036,6 +6101,7 @@ TEXT	TRANSLATION
 "edge detection"	"Eckenerkennung"
 "edge of flight line flag"	"Ecken der Flugroute flag"
 "effective flow length"	""
+"effective friction = stated friction ^f , where f = cos(DifAngle)^k."	""
 "eight-neihbourhood"	""
 "eight-neihbourhood (distance based weighting)"	""
 "elevation"	"Erhebung"
@@ -6085,6 +6151,7 @@ TEXT	TRANSLATION
 "failed to load georeference for KML ground overlay"	""
 "failed to load or parse xml file"	""
 "failed to project target grid"	""
+"failed to retrieve map image data"	""
 "failed to set radius"	""
 "failed: could not find a suitable import driver"	"fehlgeschlagen: konnte keinen passenden Importtreiber finden"
 "fat"	""
@@ -6163,7 +6230,6 @@ TEXT	TRANSLATION
 "grid or grid system"	""
 "grid project"	"Rasterprojekt"
 "grid system"	"Raster System"
-"grid systems"	"Rastersysteme"
 "guam"	""
 "h"	""
 "has already been loaded"	"wurde bereits geladen"
@@ -6180,6 +6246,7 @@ TEXT	TRANSLATION
 "highest z"	"h�chster z"
 "histogram match"	""
 "horizontal"	"horizontal"
+"horizontally"	""
 "hours"	"Stunden"
 "how to request values if step size is more than one cell"	""
 "if empty shapes layers's name is used as table name"	"wenn Name der leeren Vektorebene als Tabellenname genutzt wird"
@@ -6219,7 +6286,7 @@ TEXT	TRANSLATION
 "insufficient training samples"	""
 "intensity"	"Intensit�t"
 "interactive"	"interaktiv"
-"interpolate values if projection is needed"	""
+"internal data type"	""
 "interpolating"	"interpolierend"
 "interpolation method to use if grid needs to be aligned to coordinate system"	""
 "intersect"	"�berschneiden"
@@ -6266,7 +6333,6 @@ TEXT	TRANSLATION
 "invalid user specified value range."	""
 "invalid utm zone"	"ung�ltige UTM Zone"
 "invalid word size"	"ung�ltige Wortl�nge"
-"inverse distance"	""
 "inverse distance to a power"	"inverse Entfernung zu einem Schwerpunkt"
 "inverse transformation not available"	"inverse Umwandlung nicht verf�gbar"
 "is ignored if set to zero"	"wird nicht ber�cksichtigt wenn auf Null gesetzt"
@@ -6274,9 +6340,7 @@ TEXT	TRANSLATION
 "ja; bestimmen anhand eines Hauptgerinnerasters (HG Raster)"	""
 "ja; bestimmen ueber das Wasserflussvolumen (P:RFlow)"	""
 "ja; bestimmen ueber die jeweilige Anzahl der ZuflussRasterzellen (IR:NumInFlowCells, P:NumCells"	""
-"k factor"	"k Faktor"
 "k-fold"	""
-"keep accumulated weights above zero; useful e.g. when accumulating measures of water balance."	""
 "keep maxima (with tolerance)"	"benutze Maxima (mit Toleranz)"
 "keep minima (with tolerance)"	"behalte Minima (mit Toleranz)"
 "keep original line attributes"	"benutze urspr�ngliche Linienattribute"
@@ -6319,6 +6383,8 @@ TEXT	TRANSLATION
 "loading band"	""
 "loading building parts"	""
 "loading failed"	""
+"loading spatial reference system database"	""
+"loading translation dictionary"	""
 "local"	""
 "local maximum search distance given in map units"	""
 "local slope"	""
@@ -6361,6 +6427,8 @@ TEXT	TRANSLATION
 "maximum difference between original and median filtered elevation (3x3 moving window) that still is recognized flat"	""
 "maximum distance for variogram estimation"	""
 "maximum number of calculated first components; set to zero to get all"	"maximale Anzahl der berechneten ersten Komponenten; auf null setzen um alle zu erhalten"
+"maximum number of clusters must be more than 2 and less than number of samples"	""
+"maximum number of initial cluster centers must be more or equal to 0 and less than number of clusters"	""
 "maximum number of iterations, ignored if set to zero (default)"	""
 "maximum number of nearest points"	""
 "maximum slope (Travis et al. 1975)"	""
@@ -6412,7 +6480,6 @@ TEXT	TRANSLATION
 "n-fold cross validation: n must > 1"	""
 "name"	"Name"
 "naming for splitted lines"	"Namensgebung f�r getrennte Linien"
-"nearest neigbhour"	""
 "nearest neighbour"	""
 "needs at least two attributes in selection"	""
 "nein"	""
@@ -6423,7 +6490,6 @@ TEXT	TRANSLATION
 "no"	"nein"
 "no 'get extents' support for single point layers"	"keine �get extents�Unterst�tzung f�r Einzelpunkt-Vektorebenen"
 "no PostGIS layer"	""
-"no arguments for saga call"	""
 "no attributes in selection"	""
 "no attributes in table"	"keine Attribute in der Tabelle"
 "no choice available"	""
@@ -6436,6 +6502,7 @@ TEXT	TRANSLATION
 "no data values"	"keine Datenwerte"
 "no database connection"	"Keine Datenbankverbindung"
 "no description"	""
+"no destination points in grid area."	""
 "no distance weighting"	"keine Entfernungsgewichtung"
 "no edges found"	"keine Ecken gefunden"
 "no features in input list"	""
@@ -6527,7 +6594,6 @@ TEXT	TRANSLATION
 "number of cells"	""
 "number of cells in S-N direction"	"Anzahl der Zellen in S-N-Richtung"
 "number of cells in W-E direction"	"Anzahl der Zellen in W-E-Richtung"
-"number of different categories (unique values) per area"	""
 "number of different categories (unique values) within search area"	""
 "number of dropped observations"	""
 "number of dropped shapes"	"Nummer der abgeworfenen Vektoren"
@@ -6582,7 +6648,6 @@ TEXT	TRANSLATION
 "origin adjustment for Z axis (heading)"	""
 "original"	""
 "original calculation (Ringeler)"	"Originalberechnung (Ringeler)"
-"original functions may not be deleted"	"Originalfunktion darf nicht entfernt werden"
 "original name"	""
 "original name + variable type"	""
 "other"	"andere"
@@ -6629,6 +6694,9 @@ TEXT	TRANSLATION
 "polar coordinates given in degree"	""
 "polygon"	""
 "polygon conversion"	""
+"polygon wise (cell area weighted)"	""
+"polygon wise (cell area)"	""
+"polygon wise (cell centers)"	""
 "polygons"	"Polygone"
 "polylines"	""
 "polynomial"	""
@@ -6692,6 +6760,7 @@ TEXT	TRANSLATION
 "replacements"	"Austausch"
 "resampling"	"Neuberechnung"
 "resampling cell size is too large"	""
+"resampling method used when projection is needed"	""
 "rescale to 0 - 255"	""
 "resolution"	"Aufl�sung"
 "resolution has to be greater than zero"	"Die Aufl�sung muss gr��er als null sein"
@@ -6718,6 +6787,7 @@ TEXT	TRANSLATION
 "same as input grid"	"genau wie Eingaberaster"
 "same as original"	""
 "same as predictors"	""
+"samples must be more than 1"	""
 "sand content given as percentage"	"Sandgehalt gegeben in Prozent"
 "save output to file instead of memory"	""
 "save point added"	""
@@ -6753,7 +6823,6 @@ TEXT	TRANSLATION
 "shading (fixed light source)"	"Schummerung (feste Lichtquelle)"
 "shape file could not be opened."	"Vektordatei konnte nicht ge�ffnet werden."
 "shape in process"	"Vektor in Bearbeitung"
-"shape wise, supports overlapping polygons"	""
 "shapes extent"	""
 "shapes have been dropped"	"Vektoren wurden zugewiesen"
 "shapes layer extent"	"Vektorebenen-Umfang"
@@ -6769,16 +6838,15 @@ TEXT	TRANSLATION
 "signed 4 byte integer"	"4 byte Ganzzahl mit Vorzeichen"
 "signed 8 byte integer"	"8 byte Ganzzahl mit Vorzeichen"
 "silt content given as percentage"	"Schluffgehalt gegeben in Prozentgehalt"
+"simple and fast"	""
 "simple line"	"einfache Linie"
 "simple planar surface"	"einfache planare Oberfl�che"
 "simply decrease cell's value by epsilon"	""
-"sin(x*x + y*y)"	""
 "single"	""
 "single class"	""
 "single flow direction"	""
 "single|range|simple table|user supplied table|"	"einzeln|Bereich|einfache Tabelle|durch Nutzer bereitgestellte Tabelle|"
 "size range as percentage of step"	""
-"skewness of the area size per category distribution"	""
 "slim"	""
 "slope threshold must not be zero!"	""
 "slope value has to be greater than zero"	""
@@ -6889,6 +6957,7 @@ TEXT	TRANSLATION
 "unknown"	"unbekannt"
 "unknown error: execution"	"unbekannter Fehler: Ausf�hrung"
 "unknown error: user break"	"unbekannter Fehler: Abbruch durch Anwender"
+"unknown errror parsing formula"	""
 "unknown parameter"	"unbekannter Parameter"
 "unknown projection"	"unbekannte Projektion"
 "unkown"	"unbekannt"
@@ -6928,6 +6997,7 @@ TEXT	TRANSLATION
 "variance-covariance matrix"	"Varianz-Kovarianz Matrix"
 "variogram model"	""
 "vertical"	"vertikal"
+"vertically"	""
 "w"	""
 "warning"	""
 "warning, input uses less than 4 bytes per value"	""
@@ -6935,6 +7005,8 @@ TEXT	TRANSLATION
 "warning: number of Eigen vectors and components differs."	""
 "warning: number of component grids and components differs."	""
 "weighting factor for slope in index calculation"	""
+"when using weights without support for negative flow: output of the absolute amount of negative flow that occured"	""
+"when using weights: do not transport negative flow, set it to zero instead; useful e.g. when accumulating measures of water balance."	""
 "whether to train a SVC or SVR model for probability estimates"	""
 "whether to use the shrinking heuristics"	""
 "white - cyan"	"wei� - cyan"
@@ -6956,8 +7028,6 @@ TEXT	TRANSLATION
 "xMin"	"xMin"
 "xMin, yMin, NX, NY"	""
 "xMin, yMin, xMax, yMax"	""
-"xmax"	"xmax"
-"xmin"	"xmin"
 "y - Values"	"y - Werte"
 "y Position"	"y Position"
 "yMax"	""
@@ -6967,8 +7037,6 @@ TEXT	TRANSLATION
 "yellow > green"	"gelb > gr�n"
 "yellow > red"	"gelb > rot"
 "yes"	"ja"
-"ymax"	""
-"ymin"	""
 "yy.mm.dd"	"jj.mm.tt"
 "yy:mm:dd"	"jj:mm:tt"
 "yymmdd, fix size"	"jjmmtt, feste Gr��e"
diff --git a/src/saga_core/saga_gui/res/saga.ico b/src/saga_core/saga_gui/res/saga.ico
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/saga.lng.txt b/src/saga_core/saga_gui/res/saga.lng.txt
old mode 100644
new mode 100755
index 3b76706..3a10208
--- a/src/saga_core/saga_gui/res/saga.lng.txt
+++ b/src/saga_core/saga_gui/res/saga.lng.txt
@@ -234,7 +234,6 @@ TEXT	TRANSLATION
 "A set of basic SAGA module programming examples."	""
 "A space separated list of key-value pairs (K=V)."	""
 "A text file with the full path to an input point cloud on each line"	""
-"A.Ringeler (c) 2003"	""
 "A3 Landscape"	""
 "A3 Portrait"	""
 "A4 Landscape"	""
@@ -300,20 +299,21 @@ TEXT	TRANSLATION
 "Absolute"	""
 "Absolute Area"	""
 "Absolute Height"	""
+"Absolute Value"	""
 "Absolute Water Level"	""
 "Absolute Water Levels"	""
 "Absolute Weighting"	""
+"Abstract"	""
 "Acc. Area"	""
 "Acceleration"	""
 "Acceptable Time Difference between Image and Laser Points"	""
 "Accessing PostgreSQL databases."	""
 "Accumulated Cost"	""
-"Accumulated Cost (Anisotropic)"	""
-"Accumulated Cost (Isotropic)"	""
-"Accumulated Material from Left Side"	""
-"Accumulated Material from Right Side"	""
+"Accumulated Cost Surface"	""
+"Accumulated Material"	""
+"Accumulated Material (Left Side)"	""
+"Accumulated Material (Right Side)"	""
 "Accumulated cost"	""
-"Accumulated cost surface"	""
 "Accumulation Functions"	""
 "Accumulation Target"	""
 "Accuracy"	""
@@ -327,6 +327,7 @@ TEXT	TRANSLATION
 "Add All"	""
 "Add All Fields"	""
 "Add Attribute to Clipped Points"	""
+"Add Base Map"	""
 "Add Border"	""
 "Add Cells"	""
 "Add Center"	""
@@ -453,7 +454,11 @@ TEXT	TRANSLATION
 "Arc Vertex Distance [Degree]"	""
 "ArcGIS Version"	""
 "ArcSAGA Toolboxes"	""
+"Arccosine"	""
 "Arcs to polygons"	""
+"Arcsine"	""
+"Arctangent"	""
+"Arctangent of x/y"	""
 "Area"	""
 "Area +"	""
 "Area -"	""
@@ -526,7 +531,6 @@ TEXT	TRANSLATION
 "Average"	""
 "Average 2 With Thereshold for Grids calculates average in X and Y distances unsing only the values that differ form central pixel less than a specified threshold. Each value has a weight which is inversely proportional to the distance (method 1)."	""
 "Average 3 With Thereshold for Grids calculates average in X and Y distances unsing only the values that differ form central pixel less than a specified threshold. Each value has a weight which is inversely proportional to the distance (method 2)."	""
-"Average Size"	""
 "Average With Mask 1"	""
 "Average With Mask 1 calculates average for cells specified by a mask grid. Cell excluded by the mask grid are NOT used in the average calculation."	""
 "Average With Mask 2"	""
@@ -537,6 +541,7 @@ TEXT	TRANSLATION
 "Average With Thereshold for Grids calculates average in X and Y distances unsing only the values that differ form central pixel less than a specified threshold. It's useful to remove noise whit a known maximum reducing the loss of informations"	""
 "Average slope of watercourse: %.2f m/m"	""
 "Average velocity in watercourse: %.2f m/min"	""
+"Averaged Connectivity"	""
 "Averages"	""
 "Avg. Curve Number"	""
 "Avg. Manning's N"	""
@@ -548,7 +553,6 @@ TEXT	TRANSLATION
 "B-Spline"	""
 "B-Spline Approximation"	""
 "B-Spline Interpolation"	""
-"B-spline"	""
 "B.Bechtel, O.Conrad (c) 2013"	""
 "B45 Ratio: Desert detection (step 10)"	""
 "B56 Composite (step 6)"	""
@@ -589,7 +593,9 @@ TEXT	TRANSLATION
 "Bare Earth"	""
 "Barometric Pressure [mbar]"	""
 "Bars"	""
+"Base 10 Logarithm"	""
 "Base Level"	""
+"Base Map"	""
 "Base Name"	""
 "Base Probability"	""
 "Basic Terrain Analysis"	""
@@ -631,6 +637,8 @@ TEXT	TRANSLATION
 "Borders"	""
 "Bottom"	""
 "Bottom to Top"	""
+"Boundaries"	""
+"Boundaries: the simple filter will only operate on grid cells which fall in the same shape"	""
 "Boundary Effect"	""
 "Boundary Effect Color"	""
 "Bounding Box"	""
@@ -680,6 +688,8 @@ TEXT	TRANSLATION
 "CRS Dictionary"	""
 "CSV Files (*.csv)"	""
 "CUMUL"	""
+"Cache"	""
+"Cache Directory"	""
 "Cache Size"	""
 "Calculate distribution quantiles. Value specifies interval (median=50, quartiles=25, deciles=10, ...). Set to zero to omit quantile calculation."	""
 "Calculate the volume under the grid's surface. This is mainly useful for Digital Elevation Models (DEM)."	""
@@ -715,6 +725,7 @@ TEXT	TRANSLATION
 "Categorical Features"	""
 "Categorical Grids"	""
 "Categories"	""
+"Category"	""
 "Cell Balance"	""
 "Cell Count"	""
 "Cell Count (X)"	""
@@ -884,7 +895,6 @@ TEXT	TRANSLATION
 "Close all data sets"	""
 "Closed Depressions"	""
 "Closed Gaps Grid"	""
-"Closest Point"	""
 "Closing"	""
 "Closing Gaps..."	""
 "Cloud Cover"	""
@@ -893,10 +903,10 @@ TEXT	TRANSLATION
 "Cluster Analysis"	""
 "Cluster Analysis (Shapes)"	""
 "Cluster Analysis PC"	""
-"Cluster Analysis for Grids"	""
 "Cluster Analysis for Point Clouds"	""
 "ClusterID"	""
 "Clusters"	""
+"Clusters, which are closer than this distance to each other, are merged."	""
 "Coefficient of Determination"	""
 "Cold Cloud"	""
 "Collect values"	""
@@ -951,6 +961,8 @@ TEXT	TRANSLATION
 "CompuServe Graphics Interchange"	""
 "CompuServe Graphics Interchange (*.gif)"	""
 "Computed flow directions, 0=N, 1=NE, 2=E, ... 7=NW"	""
+"Concentration"	""
+"Concentration Approximation Threshold"	""
 "Concentration time (h)"	""
 "Condition"	""
 "Cone (Down)"	""
@@ -1020,7 +1032,7 @@ TEXT	TRANSLATION
 "Converts a TIN data set to shapes layers.\n\n"	""
 "Convex Hull"	""
 "Convexity"	""
-"Conway's Life"	""
+"Conway's Game of Life"	""
 "Coordenada X"	""
 "Coordenada X del punto de ignici�n (s�lo si no se usa grid de puntos de ignici�n)"	""
 "Coordenada Y"	""
@@ -1039,6 +1051,7 @@ TEXT	TRANSLATION
 "Copied Selection"	""
 "Copy"	""
 "Copy Attributes"	""
+"Copy Grid"	""
 "Copy Legend to Clipboard [Ctrl+L]"	""
 "Copy Legend to Clipboard..."	""
 "Copy Map to Clipboard [Ctrl+C]"	""
@@ -1074,9 +1087,10 @@ TEXT	TRANSLATION
 "Correlation Matrix of the Fit Parameters:\n"	""
 "Corresponds to delta_max. Must be > 1"	""
 "Corresponds to delta_min. Must be > 0"	""
+"Cosine"	""
 "Cosine Correction (Civco 1989)"	""
 "Cosine Correction (Teillet et al. 1982)"	""
-"Cost Grid"	""
+"Cost Analysis"	""
 "Could not connect to data source."	""
 "Could not create data source."	""
 "Could not create dataset."	""
@@ -1084,6 +1098,7 @@ TEXT	TRANSLATION
 "Could not load project."	""
 "Could not save project."	""
 "Count"	""
+"Count No Data as Zero"	""
 "Count Only Above Base Level"	""
 "Count Only Below Base Level"	""
 "Count Points in Polygons"	""
@@ -1143,7 +1158,6 @@ TEXT	TRANSLATION
 "Cross-Tabulation"	""
 "Cross-Tabulation Table"	""
 "Cross-diagonal hatch"	""
-"Cubic Convolution"	""
 "Cubic Spline Approximation"	""
 "Cubic: a + b * x + c * x^2 + d * x^3"	""
 "Culmination"	""
@@ -1311,7 +1325,7 @@ TEXT	TRANSLATION
 "Desmet & Govers"	""
 "Desmet & Govers 1996"	""
 "Destandardisation"	""
-"Destination Points"	""
+"Destinations"	""
 "Destriped Grid"	""
 "Destriping"	""
 "Destriping with Mask"	""
@@ -1370,10 +1384,9 @@ TEXT	TRANSLATION
 "Direction Difference"	""
 "Direction [Degree]"	""
 "Direction into which the wind blows, starting with 0 for North and increasing clockwise."	""
+"Direction of Maximum Cost"	""
 "Direction of Minimum Standard Deviation"	""
 "Direction of Plane [Degree]"	""
-"Direction of max cost"	""
-"Direction of max cost for each cell. In degrees"	""
 "Direction of the light source, measured in degree clockwise from the north direction."	""
 "Directional Average"	""
 "Directional Statistics"	""
@@ -1505,7 +1518,6 @@ TEXT	TRANSLATION
 "Edit Positions"	""
 "Edit Selection"	""
 "Edit Shapes"	""
-"Efective friction = stated friction ^f , where f = cos(DifAngle)^k."	""
 "Effective Air Flow Heights"	""
 "Effective Flow Length"	""
 "Effective Rainfall"	""
@@ -1532,6 +1544,7 @@ TEXT	TRANSLATION
 "Ellipsoid Definition"	""
 "Ellipsoid Height [m]"	""
 "Ellipsoids"	""
+"Enable local disk cache. Allows for offline operation."	""
 "Encountered invalid path description in *.spcvf file!"	""
 "Encountered invalid path description in *.spcvf_tile_info file!"	""
 "End Latitude"	""
@@ -1599,6 +1612,7 @@ TEXT	TRANSLATION
 "Expansion Degree"	""
 "Exponent"	""
 "Exponent for distance weighting (0.0-4.0)"	""
+"Exponential"	""
 "Export Atlas Boundary File"	""
 "Export ESRI Arc/Info Grid"	""
 "Export GPX"	""
@@ -1658,6 +1672,7 @@ TEXT	TRANSLATION
 "False Northing [m]"	""
 "Fast Representativeness"	""
 "Feature"	""
+"Feature Importances"	""
 "Feature Probabilities"	""
 "Feature Selection"	""
 "Features"	""
@@ -1794,7 +1809,6 @@ TEXT	TRANSLATION
 "Flatten Polygon Layer"	""
 "Flattening"	""
 "Flattening (f)"	""
-"Flip"	""
 "Floating Point (4 byte)"	""
 "Floating Point (8 byte)"	""
 "Floating point"	""
@@ -1882,6 +1896,7 @@ TEXT	TRANSLATION
 "Function Fit"	""
 "Function Fitting Range"	""
 "Function Parameters"	""
+"Function Plotter"	""
 "Function failed because no attributes are available"	""
 "Fuzzified"	""
 "Fuzzified Grid"	""
@@ -1977,6 +1992,9 @@ TEXT	TRANSLATION
 "Get Shapes Extents"	""
 "Get Subset from Virtual Point Cloud"	""
 "Get table from MySQL server.\n"	""
+"Get the current cell's column/row index"	""
+"Get the x/y coordinates for the current cell"	""
+"Gini Decrease"	""
 "Global Irradiation"	""
 "Global Moran's I for Grids"	""
 "Globe Viewer for Grids"	""
@@ -1997,6 +2015,7 @@ TEXT	TRANSLATION
 "Graduated Colors"	""
 "Graduated Colours"	""
 "Graticule"	""
+"Gray Scale Image"	""
 "Great Elliptic"	""
 "Greater than"	""
 "Green"	""
@@ -2011,12 +2030,11 @@ TEXT	TRANSLATION
 "Grid Cell Index"	""
 "Grid Difference"	""
 "Grid Division"	""
-"Grid Interpolation"	""
+"Grid Generation"	""
 "Grid List"	""
 "Grid Manager"	""
 "Grid Masking"	""
 "Grid Normalisation"	""
-"Grid Orientation"	""
 "Grid Project"	""
 "Grid Proximity Buffer"	""
 "Grid Skeletonization"	""
@@ -2143,7 +2161,6 @@ TEXT	TRANSLATION
 "Horizontal Overland Flow Distance"	""
 "Horizontal Range"	""
 "Horizontal hatch"	""
-"Horizontally mirrored"	""
 "Host"	""
 "Hourly Data"	""
 "How many trees to create?"	""
@@ -2185,6 +2202,8 @@ TEXT	TRANSLATION
 "IHS Sharpening"	""
 "IHS to RGB"	""
 "IMCORR - Feature Tracking"	""
+"ISODATA Cluster Statistics"	""
+"ISODATA Clustering for Grids"	""
 "Ice"	""
 "Identifier"	""
 "Identity"	""
@@ -2195,9 +2214,9 @@ TEXT	TRANSLATION
 "If checked, then temperature data are used."	""
 "If false, the training algorithm normalizes each input feature independently, shifting its mean value to 0 and making the standard deviation equal to 1."	""
 "If false, the training algorithm normalizes each output feature independently, by transforming it to the certain range depending on the used activation function."	""
-"If grid is not set, a new one will be created using chosen width and height."	""
 "If not set points will be removed from the input data set."	""
 "If not set property attributes will be added to the orignal layer."	""
+"If not specified the cache will be created in the current user's temporary directory."	""
 "If set, output is given about the number of fields a flow path visits downhill. For D8 only."	""
 "If table exists..."	""
 "Ignition Points"	""
@@ -2251,6 +2270,7 @@ TEXT	TRANSLATION
 "Import LAS Files"	""
 "Import MOLA Grid (MEGDR)"	""
 "Import NetCDF"	""
+"Import Open Street Map Image"	""
 "Import Point Cloud from Shape File"	""
 "Import Point Cloud from Text File"	""
 "Import Raster"	""
@@ -2311,6 +2331,7 @@ TEXT	TRANSLATION
 "Init Generalisation"	""
 "Initial Litter Storage [g/m\xb2]"	""
 "Initial Nitrogen Content [kg/ha]"	""
+"Initial Number of Clusters"	""
 "Initial Number of Distance Classes"	""
 "Initial Number of Fishes [%]"	""
 "Initial Number of Sharks [%]"	""
@@ -2328,6 +2349,7 @@ TEXT	TRANSLATION
 "Initiation Grid"	""
 "Initiation Threshold"	""
 "Initiation Type"	""
+"Inlet Concentration"	""
 "Inner Buffer"	""
 "Input"	""
 "Input Binary Grid"	""
@@ -2341,11 +2363,12 @@ TEXT	TRANSLATION
 "Input Grid 2"	""
 "Input Grids"	""
 "Input Specification"	""
+"Input Type of Destinations"	""
 "Input data for the trained network."	""
 "Input data to train the network."	""
 "Input file"	""
 "Input file list could not be opened!"	""
-"Input for Mean over Catchment Calculation"	""
+"Input for Mean over Catchment"	""
 "Input for module calculations."	""
 "Input for the morphological reconstruction"	""
 "Input format"	""
@@ -2385,7 +2408,6 @@ TEXT	TRANSLATION
 "Internal subcatchment routing velocity [m/h]"	""
 "Interpolated Colors"	""
 "Interpolation"	""
-"Interpolation Method"	""
 "Interpolation Scale"	""
 "Interpolation Steps"	""
 "Intersect"	""
@@ -2404,18 +2426,19 @@ TEXT	TRANSLATION
 "Invalid polygon layer."	""
 "Inverse"	""
 "Inverse Distance"	""
-"Inverse Distance Interpolation"	""
 "Inverse Distance Offset"	""
 "Inverse Distance Weighted"	""
 "Inverse Distance Weighting Power"	""
+"Inverse Grid"	""
 "Inverse Principle Components Rotation"	""
 "Inverse transformation not available for selected projection type."	""
-"Inversion"	""
 "Invert"	""
 "Invert Data/No-Data"	""
+"Invert Grid"	""
 "Invert Selection"	""
 "Invert Selection of Shapes Layer"	""
 "Invert selection."	""
+"Inverted"	""
 "Is the subbasin upstream (no external inflow)"	""
 "Isochrones Constant Speed"	""
 "Isochrones Variable Speed"	""
@@ -2447,6 +2470,8 @@ TEXT	TRANSLATION
 "Junction"	""
 "Junctions"	""
 "June"	""
+"K Factor"	""
+"K-Means Clustering for Grids"	""
 "K1"	""
 "K2"	""
 "K3"	""
@@ -2546,6 +2571,7 @@ TEXT	TRANSLATION
 "Latitude [Degree]"	""
 "Latitude/Longitude Graticule"	""
 "Latitudinal Statistics"	""
+"Layer"	""
 "Layer A"	""
 "Layer B"	""
 "Layer of extreme value"	""
@@ -2557,7 +2583,7 @@ TEXT	TRANSLATION
 "Leafs"	""
 "Least Cost Path"	""
 "Least Cost Paths"	""
-"Least cost path profile line"	""
+"Least cost path profile lines"	""
 "Least cost path profile points"	""
 "Leaves"	""
 "Leaves to Litter"	""
@@ -2586,6 +2612,7 @@ TEXT	TRANSLATION
 "Level Heights"	""
 "Level of Detail"	""
 "Level of Generalisation"	""
+"Libraries"	""
 "Library"	""
 "Life"	""
 "Life Cycle"	""
@@ -2667,6 +2694,7 @@ TEXT	TRANSLATION
 "Loam"	""
 "Loamy Sand"	""
 "Local Cartesian"	""
+"Local Cost"	""
 "Local Curvature"	""
 "Local Downslope Curvature"	""
 "Local Maxima"	""
@@ -2712,6 +2740,7 @@ TEXT	TRANSLATION
 "Lookup table used in method \"user supplied table\""	""
 "Lookup table."	""
 "Loop"	""
+"Loss through Negative Weights"	""
 "Lotsa"	""
 "Low Pass"	""
 "Low Pass Filter"	""
@@ -2774,6 +2803,7 @@ TEXT	TRANSLATION
 "Manning-Strickler Coefficient"	""
 "Manning-Strickler coefficient for flow travel time estimation (reciprocal of Manning's Roughness Coefficient)"	""
 "Map"	""
+"Map Drape Resampling"	""
 "Map Draping"	""
 "Map Draping Interpolation"	""
 "Map Extent"	""
@@ -2787,6 +2817,7 @@ TEXT	TRANSLATION
 "Map Width [Pixels]"	""
 "Map Window Arrangement"	""
 "Map/Table Size Ratio [%]"	""
+"MapQuest"	""
 "Maps"	""
 "March"	""
 "Mark Highest Neighbour"	""
@@ -2800,7 +2831,7 @@ TEXT	TRANSLATION
 "Massivity Coefficient"	""
 "Match"	""
 "Match Fields by Name"	""
-"Material"	""
+"Material for Accumulation"	""
 "Matrix signular\n"	""
 "Max"	""
 "Max Iterations"	""
@@ -2832,6 +2863,8 @@ TEXT	TRANSLATION
 "Maximum Level"	""
 "Maximum Likelihood"	""
 "Maximum Membership"	""
+"Maximum Number of Clusters"	""
+"Maximum Number of Iterations"	""
 "Maximum Number of Points"	""
 "Maximum Overestimation of ExcessRain [%]"	""
 "Maximum Points"	""
@@ -2840,6 +2873,7 @@ TEXT	TRANSLATION
 "Maximum Search Radius"	""
 "Maximum Search Radius (cells)"	""
 "Maximum Selection"	""
+"Maximum Standard Deviation within a Cluster"	""
 "Maximum Sum of overestimated ExcessRain to total ExcessRain in [%]"	""
 "Maximum Temperature"	""
 "Maximum Time Span (Seconds)"	""
@@ -2943,6 +2977,7 @@ TEXT	TRANSLATION
 "Minimum Distance"	""
 "Minimum Distance Analysis"	""
 "Minimum Exaggeration [%]"	""
+"Minimum Gradient"	""
 "Minimum Height"	""
 "Minimum Magnitude"	""
 "Minimum Nash-Sutcliffe Efficiency"	""
@@ -2951,6 +2986,7 @@ TEXT	TRANSLATION
 "Minimum Node Split Size"	""
 "Minimum Number of Dark Object Cells"	""
 "Minimum Number of Points"	""
+"Minimum Number of Samples in a Cluster"	""
 "Minimum Probability"	""
 "Minimum Redundancy Feature Selection"	""
 "Minimum Resolution (Degree)"	""
@@ -2982,8 +3018,11 @@ TEXT	TRANSLATION
 "Minnaert Correction with Slope (Law & Nichol 2004)"	""
 "Minnaert Correction with Slope (Riano et al. 2003)"	""
 "Mirror"	""
+"Mirror Grid"	""
 "Mirror Horizontally"	""
 "Mirror Vertically"	""
+"Mirrored horizontally"	""
+"Mirrored vertically"	""
 "Missing Value"	""
 "Mixed Flow Threshold (ha)"	""
 "Mode"	""
@@ -3018,6 +3057,7 @@ TEXT	TRANSLATION
 "Monthly Global by Latitude"	""
 "Moore"	""
 "Moore & Nieber 1989"	""
+"Moore (8)"	""
 "Moore et al. 1991"	""
 "Moran's I"	""
 "Morphological Filter"	""
@@ -3096,13 +3136,12 @@ TEXT	TRANSLATION
 "Name des Evaluierungspunktes 2"	""
 "Name des Evaluierungspunktes 3"	""
 "Name of Landsat metadata file (.met or MTL.txt)"	""
+"Natural Logarithm"	""
 "Natural Neighbour"	""
 "Navaladi, Schoeller, Conrad (c) 2009"	""
 "Near Infrared (TM 4)"	""
 "Near Infrared Reflectance"	""
 "Near Points"	""
-"Nearest Neigbhor"	""
-"Nearest Neighbor"	""
 "Nearest Neighbour"	""
 "Needs less memory, but is slow"	""
 "Needs more memory, but is quicker"	""
@@ -3114,10 +3153,10 @@ TEXT	TRANSLATION
 "NetCDF Files (*.nc)"	""
 "Network topology"	""
 "Neumann"	""
+"Neumann (4)"	""
 "Neumann: the four horizontally and vertically neighboured cells; Moore: all eight adjacent cells"	""
 "Neural Networks (OpenCV)"	""
 "New"	""
-"New Grid Dimensions"	""
 "New Shapes Layer"	""
 "New Table"	""
 "New grid filtered with the A1WiTh module"	""
@@ -3152,7 +3191,6 @@ TEXT	TRANSLATION
 "No attribute fields specified!"	""
 "No compatible table has been found."	""
 "No data"	""
-"No data loaded."	""
 "No description available"	""
 "No duplicates found."	""
 "No objects"	""
@@ -3213,6 +3251,7 @@ TEXT	TRANSLATION
 "Number of Columns"	""
 "Number of Components"	""
 "Number of Data Cells"	""
+"Number of Data Sets"	""
 "Number of Different Classes"	""
 "Number of Directions"	""
 "Number of Distance Classes"	""
@@ -3227,6 +3266,7 @@ TEXT	TRANSLATION
 "Number of Iterations"	""
 "Number of Iterations for Normal Updating"	""
 "Number of Iterations for Vertex Updating"	""
+"Number of Maps"	""
 "Number of No-Data Cells"	""
 "Number of Numeric Value Classes"	""
 "Number of Pairs"	""
@@ -3334,6 +3374,7 @@ TEXT	TRANSLATION
 "Open Database Connection"	""
 "Open Project"	""
 "Open Slopes"	""
+"Open Street Map"	""
 "Open as data set"	""
 "Open with external application"	""
 "OpenCV"	""
@@ -3344,6 +3385,7 @@ TEXT	TRANSLATION
 "Operator Type"	""
 "Operator scale"	""
 "Opposite Neighbours"	""
+"Optimised"	""
 "Optional Output Filepath"	""
 "Optional Target Grids"	""
 "Optional Tile Info Filename"	""
@@ -3373,6 +3415,7 @@ TEXT	TRANSLATION
 "Orthographic"	""
 "Ouput"	""
 "Outlet"	""
+"Outlet Concentration"	""
 "Outlet Hydrographs"	""
 "Outlet X"	""
 "Outlet Y"	""
@@ -3513,6 +3556,7 @@ TEXT	TRANSLATION
 "Permament Interception"	""
 "Permanent Wilting Point [mm]"	""
 "Permeability"	""
+"Permutation Importance"	""
 "Perpendicular Vegetation Index (Perry and Lautenschlager, 1984)"	""
 "Perpendicular Vegetation Index (Qi, et al., 1994)"	""
 "Perpendicular Vegetation Index (Richardson and Wiegand, 1977)"	""
@@ -3701,6 +3745,7 @@ TEXT	TRANSLATION
 "Preserve Data Type"	""
 "Preset Selection"	""
 "Presets"	""
+"Prevent Negative Flow Accumulation"	""
 "Previous"	""
 "Primary Key"	""
 "Primary Name"	""
@@ -3737,18 +3782,15 @@ TEXT	TRANSLATION
 "Product"	""
 "Production"	""
 "Profile"	""
-"Profile (lines)"	""
-"Profile (points)"	""
 "Profile Curvature"	""
 "Profile Distance"	""
 "Profile Length"	""
 "Profile Line"	""
+"Profile Lines"	""
 "Profile Points"	""
 "Profile Samples"	""
 "Profile [%s]"	""
 "Profile from points"	""
-"Profile_Line_[%s]_%d"	""
-"Profile_Points_[%s]_%d"	""
 "Profiles"	""
 "Profiles from Lines"	""
 "Proj.4"	""
@@ -3817,7 +3859,6 @@ TEXT	TRANSLATION
 "R:Classification"	""
 "R:Conversion"	""
 "R:Conversions"	""
-"R:Cost Analysis"	""
 "R:Dynamics"	""
 "R:Export"	""
 "R:Fragmentation Analysis"	""
@@ -3887,6 +3928,8 @@ TEXT	TRANSLATION
 "Random Forest Options"	""
 "Random Forest Presence Prediction (ViGrA)"	""
 "Random Terrain"	""
+"Random number, Gaussian distribution with mean x and standard deviation y"	""
+"Random number, uniform distribution with minimum x and maximum y"	""
 "Range"	""
 "Range of R,G,B values in LAS file."	""
 "Rank"	""
@@ -4021,6 +4064,16 @@ TEXT	TRANSLATION
 "Resulting Point Cloud."	""
 "Resulting Value"	""
 "Results"	""
+"Returns the floating point remainder of x/y"	""
+"Returns the integer part of floating point value x"	""
+"Returns the value of Pi"	""
+"Returns true (1), if at least one of both x and y is true (i.e. not 0)"	""
+"Returns true (1), if both x and y are true (i.e. not 0)"	""
+"Returns true (1), if x equals y, else false (0)"	""
+"Returns true (1), if x is greater than y, else false (0)"	""
+"Returns true (1), if x is less than y, else false (0)"	""
+"Returns x raised to the power of y"	""
+"Returns x, if condition c is true (i.e. not 0), else y"	""
 "Revert Palette"	""
 "Rf"	""
 "Rho 8"	""
@@ -4332,6 +4385,7 @@ TEXT	TRANSLATION
 "Shall execution be stopped?"	""
 "Shape"	""
 "Shape Index"	""
+"Shape Layers"	""
 "Shape Parameter for Elevation Percentile"	""
 "Shape Parameter for Slope"	""
 "Shape Type"	""
@@ -4435,6 +4489,7 @@ TEXT	TRANSLATION
 "Similarity Threshold"	""
 "Simple"	""
 "Simple Filter"	""
+"Simple Filter within shapes"	""
 "Simple Kriging"	""
 "Simple, flow path and swath profiles."	""
 "Simplified Lines"	""
@@ -4458,6 +4513,7 @@ TEXT	TRANSLATION
 "Simulation|Hydrology|IHACRES"	""
 "Simulation|Hydrology|RivFlow"	""
 "Simulation|Quantitative Modeling of Earth Surface Processes"	""
+"Sine"	""
 "Single Cell"	""
 "Single Colour"	""
 "Single Flow Direction"	""
@@ -4483,7 +4539,6 @@ TEXT	TRANSLATION
 "Size of smoothing filter"	""
 "Size relates to..."	""
 "Skeleton"	""
-"Skewness"	""
 "Skip"	""
 "Skip Lines"	""
 "Skip Number"	""
@@ -4626,6 +4681,7 @@ TEXT	TRANSLATION
 "Spring"	""
 "Spur"	""
 "Square"	""
+"Square Root"	""
 "Squared Correlation Coefficient"	""
 "Squared Eccentricity (es)"	""
 "Squares"	""
@@ -4727,13 +4783,15 @@ TEXT	TRANSLATION
 "Supervised Classification for Shapes"	""
 "Supervised Classification for Tables"	""
 "Support Vector Machine"	""
-"Suppress Negative Flow Accumulation Values"	""
 "Surface"	""
+"Surface Approximation Threshold"	""
 "Surface Area"	""
 "Surface Specific Points"	""
+"Surface and Gradient"	""
 "Surface hydraulic conductivity [m/h]"	""
 "Surface roughness"	""
 "Surface used to derive the LDD network, e.g. a DTM."	""
+"Surface, Gradient and Concentration"	""
 "Surfer Blanking Files (*.bln)"	""
 "Surfer Blanking Files (*.bln)|*.bln|All Files|*.*"	""
 "Surfer Grid (*.grd)|*.grd|All Files|*.*"	""
@@ -4809,6 +4867,7 @@ TEXT	TRANSLATION
 "Tagged Image File Format"	""
 "Tagged Image File Format (*.tif, *.tiff)"	""
 "Take Formula"	""
+"Tangent"	""
 "Tangential Curvature"	""
 "Target"	""
 "Target Area"	""
@@ -4822,6 +4881,7 @@ TEXT	TRANSLATION
 "Target Grid"	""
 "Target Grid System"	""
 "Target Grid Type"	""
+"Target Map"	""
 "Target Parameter List Initialisation Error"	""
 "Target Parameters"	""
 "Target Projection"	""
@@ -5153,7 +5213,6 @@ TEXT	TRANSLATION
 "Total Curvature"	""
 "Total Insolation"	""
 "Total Kinetic Energy"	""
-"Total accumulated Material"	""
 "Total area is zero or minimum elevation is equal or lower than maximum elevation!"	""
 "Total flow (in watershed) [m^3/dt]"	""
 "Total flow [m/dt]"	""
@@ -5259,6 +5318,7 @@ TEXT	TRANSLATION
 "Unit Name"	""
 "Units"	""
 "Units for output radiation values."	""
+"Units of Direction"	""
 "Universal Kriging"	""
 "Universal Transvers Mercator (UTM)"	""
 "Unknown"	""
@@ -5269,11 +5329,13 @@ TEXT	TRANSLATION
 "Unreferenced Grids"	""
 "Unsaturated zone time delay per unit storage deficit [h]"	""
 "Unsorted tool chains"	""
+"Unsupervised"	""
 "Up"	""
 "Up [-]"	""
 "Up [Home]"	""
 "Up/Down"	""
 "Update"	""
+"Update Colors from Features"	""
 "Update Data"	""
 "Update Raster SRID"	""
 "Update Shapes SRID"	""
@@ -5304,6 +5366,7 @@ TEXT	TRANSLATION
 "Use Confidence Interval"	""
 "Use Flow Threshold"	""
 "Use Label as Identifier"	""
+"Use Multiple Cores"	""
 "Use NoData"	""
 "Use Offset"	""
 "Use Pyramids"	""
@@ -5315,6 +5378,7 @@ TEXT	TRANSLATION
 "Use only features selected by the minimum Redundancy Maximum Relevance (mRMR) algorithm"	""
 "Use only seed cells as starting points."	""
 "Use sky view factor based on local slope (after Oke 1988), if no sky viev factor grid is given."	""
+"Use the first three features in list to obtain blue, green, red components for class colour in look-up table."	""
 "Use the stipple bitmap"	""
 "Use the user dashes"	""
 "Use this option to reclassify No-Data values independently of the method settings."	""
@@ -5433,7 +5497,6 @@ TEXT	TRANSLATION
 "Vertical Scaling"	""
 "Vertical hatch"	""
 "Vertical scaling factor"	""
-"Vertically mirrored"	""
 "Vertices"	""
 "Vertikale Zufluesse"	""
 "ViGrA"	""
@@ -5676,11 +5739,6 @@ TEXT	TRANSLATION
 "[MSG] Save to PDF"	""
 "[MSG] failed"	""
 "[MSG] okay"	""
-"[VAL] B-Spline"	""
-"[VAL] Bicubic Spline"	""
-"[VAL] Bilinear"	""
-"[VAL] Inverse Distance"	""
-"[VAL] None"	""
 "[deprecated] Point Cloud Viewer"	""
 "[deprecated] TIN Viewer"	""
 "[not set]|"	""
@@ -5763,9 +5821,11 @@ TEXT	TRANSLATION
 "attribute is contained in search expression"	""
 "attribute is identical with search expression"	""
 "attribute to be searched; if not set all attributes will be searched"	""
+"attributes must be more than 1"	""
 "author      "	""
 "automatically"	""
 "average"	""
+"average distance that a cell's accumulated flow travelled"	""
 "average size of the area covered by each category that occurs within search area"	""
 "average value"	""
 "avoids precision problems when source and target crs use different geodedtic datums."	""
@@ -5784,7 +5844,6 @@ TEXT	TRANSLATION
 "begin transaction command failed"	""
 "between cells"	""
 "bi-linear saddle"	""
-"bicubic spline"	""
 "bilinear"	""
 "binary"	""
 "bit"	""
@@ -5796,6 +5855,7 @@ TEXT	TRANSLATION
 "blending distance given in map units"	""
 "blue channel color"	""
 "bm"	""
+"both"	""
 "bottom"	""
 "bottom / left"	""
 "bottom left"	""
@@ -5805,6 +5865,8 @@ TEXT	TRANSLATION
 "bottom-right"	""
 "bright - dark"	""
 "built-in"	""
+"by area size"	""
+"by number of cells"	""
 "c, Percentage clays [%]"	""
 "cache memory size in MB"	""
 "calculate averages"	""
@@ -5823,6 +5885,7 @@ TEXT	TRANSLATION
 "cell"	""
 "cell area"	""
 "cells"	""
+"cells in process"	""
 "cellsize and lower left center coordinates"	""
 "cellsize and lower left corner coordinates"	""
 "cellsize and upper left center coordinates"	""
@@ -5910,6 +5973,7 @@ TEXT	TRANSLATION
 "could not create index: insufficient memory"	""
 "could not create new PostgreSQL database"	""
 "could not create table"	""
+"could not create target grid"	""
 "could not create weights grid"	""
 "could not disconnect ODBC source"	""
 "could not disconnect PostgreSQL source"	""
@@ -6015,6 +6079,7 @@ TEXT	TRANSLATION
 "dissolved inner rings"	""
 "distance"	""
 "distance weighted average catchment slope"	""
+"distance weighted average of the number of different categories for distance classes"	""
 "do not confirm"	""
 "do not join"	""
 "do not show"	""
@@ -6036,6 +6101,7 @@ TEXT	TRANSLATION
 "edge detection"	""
 "edge of flight line flag"	""
 "effective flow length"	""
+"effective friction = stated friction ^f , where f = cos(DifAngle)^k."	""
 "eight-neihbourhood"	""
 "eight-neihbourhood (distance based weighting)"	""
 "elevation"	""
@@ -6085,6 +6151,7 @@ TEXT	TRANSLATION
 "failed to load georeference for KML ground overlay"	""
 "failed to load or parse xml file"	""
 "failed to project target grid"	""
+"failed to retrieve map image data"	""
 "failed to set radius"	""
 "failed: could not find a suitable import driver"	""
 "fat"	""
@@ -6163,7 +6230,6 @@ TEXT	TRANSLATION
 "grid or grid system"	""
 "grid project"	""
 "grid system"	""
-"grid systems"	""
 "guam"	""
 "h"	""
 "has already been loaded"	""
@@ -6180,6 +6246,7 @@ TEXT	TRANSLATION
 "highest z"	""
 "histogram match"	""
 "horizontal"	""
+"horizontally"	""
 "hours"	""
 "how to request values if step size is more than one cell"	""
 "if empty shapes layers's name is used as table name"	""
@@ -6219,7 +6286,7 @@ TEXT	TRANSLATION
 "insufficient training samples"	""
 "intensity"	""
 "interactive"	""
-"interpolate values if projection is needed"	""
+"internal data type"	""
 "interpolating"	""
 "interpolation method to use if grid needs to be aligned to coordinate system"	""
 "intersect"	""
@@ -6266,7 +6333,6 @@ TEXT	TRANSLATION
 "invalid user specified value range."	""
 "invalid utm zone"	""
 "invalid word size"	""
-"inverse distance"	""
 "inverse distance to a power"	""
 "inverse transformation not available"	""
 "is ignored if set to zero"	""
@@ -6274,9 +6340,7 @@ TEXT	TRANSLATION
 "ja; bestimmen anhand eines Hauptgerinnerasters (HG Raster)"	""
 "ja; bestimmen ueber das Wasserflussvolumen (P:RFlow)"	""
 "ja; bestimmen ueber die jeweilige Anzahl der ZuflussRasterzellen (IR:NumInFlowCells, P:NumCells"	""
-"k factor"	""
 "k-fold"	""
-"keep accumulated weights above zero; useful e.g. when accumulating measures of water balance."	""
 "keep maxima (with tolerance)"	""
 "keep minima (with tolerance)"	""
 "keep original line attributes"	""
@@ -6319,6 +6383,8 @@ TEXT	TRANSLATION
 "loading band"	""
 "loading building parts"	""
 "loading failed"	""
+"loading spatial reference system database"	""
+"loading translation dictionary"	""
 "local"	""
 "local maximum search distance given in map units"	""
 "local slope"	""
@@ -6361,6 +6427,8 @@ TEXT	TRANSLATION
 "maximum difference between original and median filtered elevation (3x3 moving window) that still is recognized flat"	""
 "maximum distance for variogram estimation"	""
 "maximum number of calculated first components; set to zero to get all"	""
+"maximum number of clusters must be more than 2 and less than number of samples"	""
+"maximum number of initial cluster centers must be more or equal to 0 and less than number of clusters"	""
 "maximum number of iterations, ignored if set to zero (default)"	""
 "maximum number of nearest points"	""
 "maximum slope (Travis et al. 1975)"	""
@@ -6412,7 +6480,6 @@ TEXT	TRANSLATION
 "n-fold cross validation: n must > 1"	""
 "name"	""
 "naming for splitted lines"	""
-"nearest neigbhour"	""
 "nearest neighbour"	""
 "needs at least two attributes in selection"	""
 "nein"	""
@@ -6423,7 +6490,6 @@ TEXT	TRANSLATION
 "no"	""
 "no 'get extents' support for single point layers"	""
 "no PostGIS layer"	""
-"no arguments for saga call"	""
 "no attributes in selection"	""
 "no attributes in table"	""
 "no choice available"	""
@@ -6436,6 +6502,7 @@ TEXT	TRANSLATION
 "no data values"	""
 "no database connection"	""
 "no description"	""
+"no destination points in grid area."	""
 "no distance weighting"	""
 "no edges found"	""
 "no features in input list"	""
@@ -6527,7 +6594,6 @@ TEXT	TRANSLATION
 "number of cells"	""
 "number of cells in S-N direction"	""
 "number of cells in W-E direction"	""
-"number of different categories (unique values) per area"	""
 "number of different categories (unique values) within search area"	""
 "number of dropped observations"	""
 "number of dropped shapes"	""
@@ -6582,7 +6648,6 @@ TEXT	TRANSLATION
 "origin adjustment for Z axis (heading)"	""
 "original"	""
 "original calculation (Ringeler)"	""
-"original functions may not be deleted"	""
 "original name"	""
 "original name + variable type"	""
 "other"	""
@@ -6629,6 +6694,9 @@ TEXT	TRANSLATION
 "polar coordinates given in degree"	""
 "polygon"	""
 "polygon conversion"	""
+"polygon wise (cell area weighted)"	""
+"polygon wise (cell area)"	""
+"polygon wise (cell centers)"	""
 "polygons"	""
 "polylines"	""
 "polynomial"	""
@@ -6692,6 +6760,7 @@ TEXT	TRANSLATION
 "replacements"	""
 "resampling"	""
 "resampling cell size is too large"	""
+"resampling method used when projection is needed"	""
 "rescale to 0 - 255"	""
 "resolution"	""
 "resolution has to be greater than zero"	""
@@ -6718,6 +6787,7 @@ TEXT	TRANSLATION
 "same as input grid"	""
 "same as original"	""
 "same as predictors"	""
+"samples must be more than 1"	""
 "sand content given as percentage"	""
 "save output to file instead of memory"	""
 "save point added"	""
@@ -6753,7 +6823,6 @@ TEXT	TRANSLATION
 "shading (fixed light source)"	""
 "shape file could not be opened."	""
 "shape in process"	""
-"shape wise, supports overlapping polygons"	""
 "shapes extent"	""
 "shapes have been dropped"	""
 "shapes layer extent"	""
@@ -6769,16 +6838,15 @@ TEXT	TRANSLATION
 "signed 4 byte integer"	""
 "signed 8 byte integer"	""
 "silt content given as percentage"	""
+"simple and fast"	""
 "simple line"	""
 "simple planar surface"	""
 "simply decrease cell's value by epsilon"	""
-"sin(x*x + y*y)"	""
 "single"	""
 "single class"	""
 "single flow direction"	""
 "single|range|simple table|user supplied table|"	""
 "size range as percentage of step"	""
-"skewness of the area size per category distribution"	""
 "slim"	""
 "slope threshold must not be zero!"	""
 "slope value has to be greater than zero"	""
@@ -6889,6 +6957,7 @@ TEXT	TRANSLATION
 "unknown"	""
 "unknown error: execution"	""
 "unknown error: user break"	""
+"unknown errror parsing formula"	""
 "unknown parameter"	""
 "unknown projection"	""
 "unkown"	""
@@ -6928,6 +6997,7 @@ TEXT	TRANSLATION
 "variance-covariance matrix"	""
 "variogram model"	""
 "vertical"	""
+"vertically"	""
 "w"	""
 "warning"	""
 "warning, input uses less than 4 bytes per value"	""
@@ -6935,6 +7005,8 @@ TEXT	TRANSLATION
 "warning: number of Eigen vectors and components differs."	""
 "warning: number of component grids and components differs."	""
 "weighting factor for slope in index calculation"	""
+"when using weights without support for negative flow: output of the absolute amount of negative flow that occured"	""
+"when using weights: do not transport negative flow, set it to zero instead; useful e.g. when accumulating measures of water balance."	""
 "whether to train a SVC or SVR model for probability estimates"	""
 "whether to use the shrinking heuristics"	""
 "white - cyan"	""
@@ -6956,8 +7028,6 @@ TEXT	TRANSLATION
 "xMin"	""
 "xMin, yMin, NX, NY"	""
 "xMin, yMin, xMax, yMax"	""
-"xmax"	""
-"xmin"	""
 "y - Values"	""
 "y Position"	""
 "yMax"	""
@@ -6967,8 +7037,6 @@ TEXT	TRANSLATION
 "yellow > green"	""
 "yellow > red"	""
 "yes"	""
-"ymax"	""
-"ymin"	""
 "yy.mm.dd"	""
 "yy:mm:dd"	""
 "yymmdd, fix size"	""
diff --git a/src/saga_core/saga_gui/res/saga.png b/src/saga_core/saga_gui/res/saga.png
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/saga_dic.txt b/src/saga_core/saga_gui/res/saga_dic.txt
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/saga_gui.rc b/src/saga_core/saga_gui/res/saga_gui.rc
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/saga_icon_128.png b/src/saga_core/saga_gui/res/saga_icon_128.png
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/saga_icon_64.png b/src/saga_core/saga_gui/res/saga_icon_64.png
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/saga_srs.txt b/src/saga_core/saga_gui/res/saga_srs.txt
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/saga_tip.txt b/src/saga_core/saga_gui/res/saga_tip.txt
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/tool_menus.xml b/src/saga_core/saga_gui/res/tool_menus.xml
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/tool_menus_example.xml b/src/saga_core/saga_gui/res/tool_menus_example.xml
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/crs_edit_point_add.xpm b/src/saga_core/saga_gui/res/xpm/crs_edit_point_add.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/crs_edit_point_move.xpm b/src/saga_core/saga_gui/res/xpm/crs_edit_point_move.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/crs_hand.xpm b/src/saga_core/saga_gui/res/xpm/crs_hand.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/crs_hand_grap.xpm b/src/saga_core/saga_gui/res/xpm/crs_hand_grap.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/crs_info.xpm b/src/saga_core/saga_gui/res/xpm/crs_info.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/crs_magnifier.xpm b/src/saga_core/saga_gui/res/xpm/crs_magnifier.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/crs_select.xpm b/src/saga_core/saga_gui/res/xpm/crs_select.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/default.xpm b/src/saga_core/saga_gui/res/xpm/default.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/nb_active_attributes.xpm b/src/saga_core/saga_gui/res/xpm/nb_active_attributes.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/nb_active_description.xpm b/src/saga_core/saga_gui/res/xpm/nb_active_description.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/nb_active_htmlextrainfo.xpm b/src/saga_core/saga_gui/res/xpm/nb_active_htmlextrainfo.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/nb_active_legend.xpm b/src/saga_core/saga_gui/res/xpm/nb_active_legend.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/nb_active_parameters.xpm b/src/saga_core/saga_gui/res/xpm/nb_active_parameters.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/nb_info_error.xpm b/src/saga_core/saga_gui/res/xpm/nb_info_error.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/nb_info_execution.xpm b/src/saga_core/saga_gui/res/xpm/nb_info_execution.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/nb_info_messages.xpm b/src/saga_core/saga_gui/res/xpm/nb_info_messages.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/nb_wksp_data.xpm b/src/saga_core/saga_gui/res/xpm/nb_wksp_data.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/nb_wksp_maps.xpm b/src/saga_core/saga_gui/res/xpm/nb_wksp_maps.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/nb_wksp_modules.xpm b/src/saga_core/saga_gui/res/xpm/nb_wksp_modules.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/nb_wksp_thumbnails.xpm b/src/saga_core/saga_gui/res/xpm/nb_wksp_thumbnails.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/nb_wksp_treeview.xpm b/src/saga_core/saga_gui/res/xpm/nb_wksp_treeview.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/saga_icon_16.xpm b/src/saga_core/saga_gui/res/xpm/saga_icon_16.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/saga_icon_32.xpm b/src/saga_core/saga_gui/res/xpm/saga_icon_32.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/saga_splash.xpm b/src/saga_core/saga_gui/res/xpm/saga_splash.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_active.xpm b/src/saga_core/saga_gui/res/xpm/tb_active.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_datasource.xpm b/src/saga_core/saga_gui/res/xpm/tb_datasource.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_delete.xpm b/src/saga_core/saga_gui/res/xpm/tb_delete.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_diagram_parameters.xpm b/src/saga_core/saga_gui/res/xpm/tb_diagram_parameters.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_edit_shape_add.xpm b/src/saga_core/saga_gui/res/xpm/tb_edit_shape_add.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_edit_shape_add_part.xpm b/src/saga_core/saga_gui/res/xpm/tb_edit_shape_add_part.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_edit_shape_del.xpm b/src/saga_core/saga_gui/res/xpm/tb_edit_shape_del.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_edit_shape_del_part.xpm b/src/saga_core/saga_gui/res/xpm/tb_edit_shape_del_part.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_edit_shape_del_point.xpm b/src/saga_core/saga_gui/res/xpm/tb_edit_shape_del_point.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_edit_shape_select.xpm b/src/saga_core/saga_gui/res/xpm/tb_edit_shape_select.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_help.xpm b/src/saga_core/saga_gui/res/xpm/tb_help.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_histogram_as_table.xpm b/src/saga_core/saga_gui/res/xpm/tb_histogram_as_table.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_histogram_cumulative.xpm b/src/saga_core/saga_gui/res/xpm/tb_histogram_cumulative.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_info.xpm b/src/saga_core/saga_gui/res/xpm/tb_info.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_layout_page_setup.xpm b/src/saga_core/saga_gui/res/xpm/tb_layout_page_setup.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_layout_print.xpm b/src/saga_core/saga_gui/res/xpm/tb_layout_print.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_layout_print_preview.xpm b/src/saga_core/saga_gui/res/xpm/tb_layout_print_preview.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_layout_print_setup.xpm b/src/saga_core/saga_gui/res/xpm/tb_layout_print_setup.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_map3d_central_less.xpm b/src/saga_core/saga_gui/res/xpm/tb_map3d_central_less.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_map3d_central_more.xpm b/src/saga_core/saga_gui/res/xpm/tb_map3d_central_more.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_map3d_exaggerate_less.xpm b/src/saga_core/saga_gui/res/xpm/tb_map3d_exaggerate_less.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_map3d_exaggerate_more.xpm b/src/saga_core/saga_gui/res/xpm/tb_map3d_exaggerate_more.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_map3d_interpolated.xpm b/src/saga_core/saga_gui/res/xpm/tb_map3d_interpolated.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_map3d_properties.xpm b/src/saga_core/saga_gui/res/xpm/tb_map3d_properties.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_map3d_rotate_x_less.xpm b/src/saga_core/saga_gui/res/xpm/tb_map3d_rotate_x_less.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_map3d_rotate_x_more.xpm b/src/saga_core/saga_gui/res/xpm/tb_map3d_rotate_x_more.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_map3d_rotate_z_less.xpm b/src/saga_core/saga_gui/res/xpm/tb_map3d_rotate_z_less.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_map3d_rotate_z_more.xpm b/src/saga_core/saga_gui/res/xpm/tb_map3d_rotate_z_more.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_map3d_shift_x_less.xpm b/src/saga_core/saga_gui/res/xpm/tb_map3d_shift_x_less.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_map3d_shift_x_more.xpm b/src/saga_core/saga_gui/res/xpm/tb_map3d_shift_x_more.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_map3d_shift_y_less.xpm b/src/saga_core/saga_gui/res/xpm/tb_map3d_shift_y_less.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_map3d_shift_y_more.xpm b/src/saga_core/saga_gui/res/xpm/tb_map3d_shift_y_more.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_map3d_shift_z_less.xpm b/src/saga_core/saga_gui/res/xpm/tb_map3d_shift_z_less.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_map3d_shift_z_more.xpm b/src/saga_core/saga_gui/res/xpm/tb_map3d_shift_z_more.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_map3d_stereo.xpm b/src/saga_core/saga_gui/res/xpm/tb_map3d_stereo.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_map_3d_show.xpm b/src/saga_core/saga_gui/res/xpm/tb_map_3d_show.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_map_layout_show.xpm b/src/saga_core/saga_gui/res/xpm/tb_map_layout_show.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_map_legend_horizontal.xpm b/src/saga_core/saga_gui/res/xpm/tb_map_legend_horizontal.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_map_legend_vertical.xpm b/src/saga_core/saga_gui/res/xpm/tb_map_legend_vertical.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_map_mode_distance.xpm b/src/saga_core/saga_gui/res/xpm/tb_map_mode_distance.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_map_mode_pan.xpm b/src/saga_core/saga_gui/res/xpm/tb_map_mode_pan.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_map_mode_select.xpm b/src/saga_core/saga_gui/res/xpm/tb_map_mode_select.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_map_mode_zoom.xpm b/src/saga_core/saga_gui/res/xpm/tb_map_mode_zoom.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_map_north_arrow.xpm b/src/saga_core/saga_gui/res/xpm/tb_map_north_arrow.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_map_scalebar.xpm b/src/saga_core/saga_gui/res/xpm/tb_map_scalebar.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_map_synchronize.xpm b/src/saga_core/saga_gui/res/xpm/tb_map_synchronize.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_map_zoom_active.xpm b/src/saga_core/saga_gui/res/xpm/tb_map_zoom_active.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_map_zoom_full.xpm b/src/saga_core/saga_gui/res/xpm/tb_map_zoom_full.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_map_zoom_last.xpm b/src/saga_core/saga_gui/res/xpm/tb_map_zoom_last.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_map_zoom_next.xpm b/src/saga_core/saga_gui/res/xpm/tb_map_zoom_next.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_map_zoom_selection.xpm b/src/saga_core/saga_gui/res/xpm/tb_map_zoom_selection.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_open.xpm b/src/saga_core/saga_gui/res/xpm/tb_open.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_open_grid.xpm b/src/saga_core/saga_gui/res/xpm/tb_open_grid.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_open_module.xpm b/src/saga_core/saga_gui/res/xpm/tb_open_module.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_open_shapes.xpm b/src/saga_core/saga_gui/res/xpm/tb_open_shapes.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_open_table.xpm b/src/saga_core/saga_gui/res/xpm/tb_open_table.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_open_tin.xpm b/src/saga_core/saga_gui/res/xpm/tb_open_tin.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_save.xpm b/src/saga_core/saga_gui/res/xpm/tb_save.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_scatterplot_parameters.xpm b/src/saga_core/saga_gui/res/xpm/tb_scatterplot_parameters.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_show.xpm b/src/saga_core/saga_gui/res/xpm/tb_show.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_table_col_add.xpm b/src/saga_core/saga_gui/res/xpm/tb_table_col_add.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_table_col_del.xpm b/src/saga_core/saga_gui/res/xpm/tb_table_col_del.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_table_row_add.xpm b/src/saga_core/saga_gui/res/xpm/tb_table_row_add.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_table_row_del.xpm b/src/saga_core/saga_gui/res/xpm/tb_table_row_del.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_table_row_del_all.xpm b/src/saga_core/saga_gui/res/xpm/tb_table_row_del_all.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_table_row_ins.xpm b/src/saga_core/saga_gui/res/xpm/tb_table_row_ins.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/tb_wksp.xpm b/src/saga_core/saga_gui/res/xpm/tb_wksp.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/wksp_data_manager.xpm b/src/saga_core/saga_gui/res/xpm/wksp_data_manager.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/wksp_grid.xpm b/src/saga_core/saga_gui/res/xpm/wksp_grid.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/wksp_grid_manager.xpm b/src/saga_core/saga_gui/res/xpm/wksp_grid_manager.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/wksp_grid_system.xpm b/src/saga_core/saga_gui/res/xpm/wksp_grid_system.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/wksp_map.xpm b/src/saga_core/saga_gui/res/xpm/wksp_map.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/wksp_map_graticule.xpm b/src/saga_core/saga_gui/res/xpm/wksp_map_graticule.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/wksp_map_manager.xpm b/src/saga_core/saga_gui/res/xpm/wksp_map_manager.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/wksp_module.xpm b/src/saga_core/saga_gui/res/xpm/wksp_module.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/wksp_module_library.xpm b/src/saga_core/saga_gui/res/xpm/wksp_module_library.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/wksp_module_manager.xpm b/src/saga_core/saga_gui/res/xpm/wksp_module_manager.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/wksp_noitems.xpm b/src/saga_core/saga_gui/res/xpm/wksp_noitems.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/wksp_odbc_source_off.xpm b/src/saga_core/saga_gui/res/xpm/wksp_odbc_source_off.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/wksp_odbc_source_on.xpm b/src/saga_core/saga_gui/res/xpm/wksp_odbc_source_on.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/wksp_odbc_sources.xpm b/src/saga_core/saga_gui/res/xpm/wksp_odbc_sources.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/wksp_shapes_line.xpm b/src/saga_core/saga_gui/res/xpm/wksp_shapes_line.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/wksp_shapes_manager.xpm b/src/saga_core/saga_gui/res/xpm/wksp_shapes_manager.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/wksp_shapes_point.xpm b/src/saga_core/saga_gui/res/xpm/wksp_shapes_point.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/wksp_shapes_points.xpm b/src/saga_core/saga_gui/res/xpm/wksp_shapes_points.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/wksp_shapes_polygon.xpm b/src/saga_core/saga_gui/res/xpm/wksp_shapes_polygon.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/wksp_table.xpm b/src/saga_core/saga_gui/res/xpm/wksp_table.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/wksp_table_manager.xpm b/src/saga_core/saga_gui/res/xpm/wksp_table_manager.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/wksp_tin.xpm b/src/saga_core/saga_gui/res/xpm/wksp_tin.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/wksp_tin_manager.xpm b/src/saga_core/saga_gui/res/xpm/wksp_tin_manager.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/wnd_diagram.xpm b/src/saga_core/saga_gui/res/xpm/wnd_diagram.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/wnd_histogram.xpm b/src/saga_core/saga_gui/res/xpm/wnd_histogram.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/wnd_layout.xpm b/src/saga_core/saga_gui/res/xpm/wnd_layout.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/wnd_map.xpm b/src/saga_core/saga_gui/res/xpm/wnd_map.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/wnd_map3d.xpm b/src/saga_core/saga_gui/res/xpm/wnd_map3d.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/wnd_scatterplot.xpm b/src/saga_core/saga_gui/res/xpm/wnd_scatterplot.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res/xpm/wnd_table.xpm b/src/saga_core/saga_gui/res/xpm/wnd_table.xpm
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res_commands.cpp b/src/saga_core/saga_gui/res_commands.cpp
old mode 100644
new mode 100755
index ca01cf9..73e5735
--- a/src/saga_core/saga_gui/res_commands.cpp
+++ b/src/saga_core/saga_gui/res_commands.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: res_commands.cpp 2698 2015-11-24 13:45:01Z oconrad $
+ * Version $Id: res_commands.cpp 2793 2016-02-16 16:51:24Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -227,6 +227,7 @@ wxString CMD_Get_Name(int Cmd_ID)
 	case ID_CMD_MAPS_SCALEBAR:					return( _TL("Scale Bar") );
 	case ID_CMD_MAPS_PROJECTION:				return( _TL("Spatial Reference") );
 	case ID_CMD_MAPS_GRATICULE_ADD:				return( _TL("Add Graticule") );
+	case ID_CMD_MAPS_BASEMAP_ADD:				return( _TL("Add Base Map") );
 	case ID_CMD_MAPS_LAYER_SHOW:				return( _TL("Show Layer") );
 	case ID_CMD_MAPS_MOVE_TOP:					return( _TL("Move To Top") );
 	case ID_CMD_MAPS_MOVE_BOTTOM:				return( _TL("Move To Bottom") );
@@ -243,6 +244,7 @@ wxString CMD_Get_Name(int Cmd_ID)
 	case ID_CMD_MAP_LAYOUT_SHOW:				return( CMD_Get_Name(ID_CMD_MAPS_LAYOUT_SHOW) );
 	case ID_CMD_MAP_SCALEBAR:					return( CMD_Get_Name(ID_CMD_MAPS_SCALEBAR) );
 	case ID_CMD_MAP_GRATICULE_ADD:				return( CMD_Get_Name(ID_CMD_MAPS_GRATICULE_ADD) );
+	case ID_CMD_MAP_BASEMAP_ADD:				return( CMD_Get_Name(ID_CMD_MAPS_BASEMAP_ADD) );
 	case ID_CMD_MAP_SAVE_IMAGE:					return( CMD_Get_Name(ID_CMD_MAPS_SAVE_IMAGE) );
 	case ID_CMD_MAP_SAVE_IMAGE_ON_CHANGE:		return( CMD_Get_Name(ID_CMD_MAPS_SAVE_IMAGE_ON_CHANGE) );
 	case ID_CMD_MAP_SYNCHRONIZE:				return( CMD_Get_Name(ID_CMD_MAPS_SYNCHRONIZE) );
@@ -386,6 +388,7 @@ int CMD_Get_ImageID(int Cmd_ID)
 	case ID_CMD_MAP_SYNCHRONIZE:		return( ID_IMG_TB_MAP_SYNCHRONIZE );
 	case ID_CMD_MAP_SCALEBAR:			return( ID_IMG_TB_MAP_SCALEBAR );
 	case ID_CMD_MAP_GRATICULE_ADD:				break;
+	case ID_CMD_MAP_BASEMAP_ADD:				break;
 	case ID_CMD_MAP_LEGEND_VERTICAL:	return( ID_IMG_TB_MAP_LEGEND_VERTICAL );
 	case ID_CMD_MAP_LEGEND_HORIZONTAL:	return( ID_IMG_TB_MAP_LEGEND_HORIZONTAL );
 
diff --git a/src/saga_core/saga_gui/res_commands.h b/src/saga_core/saga_gui/res_commands.h
old mode 100644
new mode 100755
index d6d75e8..8d52b4d
--- a/src/saga_core/saga_gui/res_commands.h
+++ b/src/saga_core/saga_gui/res_commands.h
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: res_commands.h 2698 2015-11-24 13:45:01Z oconrad $
+ * Version $Id: res_commands.h 2793 2016-02-16 16:51:24Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -261,6 +261,7 @@ enum ID_COMMANDS
 	ID_CMD_MAPS_SCALEBAR,
 	ID_CMD_MAPS_PROJECTION,
 	ID_CMD_MAPS_GRATICULE_ADD,
+	ID_CMD_MAPS_BASEMAP_ADD,
 	ID_CMD_MAPS_LAYER_SHOW,
 	ID_CMD_MAPS_MOVE_TOP,
 	ID_CMD_MAPS_MOVE_BOTTOM,
@@ -281,6 +282,7 @@ enum ID_COMMANDS
 	ID_CMD_MAP_LAYOUT_SHOW,
 	ID_CMD_MAP_SCALEBAR,
 	ID_CMD_MAP_GRATICULE_ADD,
+	ID_CMD_MAP_BASEMAP_ADD,
 	ID_CMD_MAP_SAVE_IMAGE,
 	ID_CMD_MAP_SAVE_IMAGE_ON_CHANGE,
 	ID_CMD_MAP_SYNCHRONIZE,
diff --git a/src/saga_core/saga_gui/res_controls.cpp b/src/saga_core/saga_gui/res_controls.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res_controls.h b/src/saga_core/saga_gui/res_controls.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res_dialogs.cpp b/src/saga_core/saga_gui/res_dialogs.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res_dialogs.h b/src/saga_core/saga_gui/res_dialogs.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/res_images.cpp b/src/saga_core/saga_gui/res_images.cpp
old mode 100644
new mode 100755
index 3dd3668..ab3abb0
--- a/src/saga_core/saga_gui/res_images.cpp
+++ b/src/saga_core/saga_gui/res_images.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: res_images.cpp 2275 2014-10-02 15:48:59Z oconrad $
+ * Version $Id: res_images.cpp 2793 2016-02-16 16:51:24Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -322,6 +322,7 @@ const char ** IMG_Get_XPM(int ID_IMG)
 	case ID_IMG_WKSP_GRID_SYSTEM:	return( wksp_grid_system_xpm );
 	case ID_IMG_WKSP_MAP:	return( wksp_map_xpm );
 	case ID_IMG_WKSP_MAP_GRATICULE:	return( wksp_map_graticule_xpm );
+	case ID_IMG_WKSP_MAP_BASEMAP:	return( wnd_map_xpm );
 	case ID_IMG_WKSP_MAP_MANAGER:	return( wksp_map_manager_xpm );
 	case ID_IMG_WKSP_MODULE:	return( wksp_module_xpm );
 	case ID_IMG_WKSP_MODULE_CHAIN:	return( wksp_module_xpm );
diff --git a/src/saga_core/saga_gui/res_images.h b/src/saga_core/saga_gui/res_images.h
old mode 100644
new mode 100755
index ef7e378..cf3447b
--- a/src/saga_core/saga_gui/res_images.h
+++ b/src/saga_core/saga_gui/res_images.h
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: res_images.h 2275 2014-10-02 15:48:59Z oconrad $
+ * Version $Id: res_images.h 2793 2016-02-16 16:51:24Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -199,6 +199,7 @@ enum ID_IMAGES
 	ID_IMG_WKSP_MAP,
 	ID_IMG_WKSP_MAP_MANAGER,
 	ID_IMG_WKSP_MAP_GRATICULE,
+	ID_IMG_WKSP_MAP_BASEMAP,
 	ID_IMG_WKSP_MODULE,
 	ID_IMG_WKSP_MODULE_CHAIN,
 	ID_IMG_WKSP_MODULE_LIBRARY,
diff --git a/src/saga_core/saga_gui/saga.cpp b/src/saga_core/saga_gui/saga.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/saga.h b/src/saga_core/saga_gui/saga.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/saga_frame.cpp b/src/saga_core/saga_gui/saga_frame.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/saga_frame.h b/src/saga_core/saga_gui/saga_frame.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/saga_frame_droptarget.cpp b/src/saga_core/saga_gui/saga_frame_droptarget.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/saga_frame_droptarget.h b/src/saga_core/saga_gui/saga_frame_droptarget.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/view_base.cpp b/src/saga_core/saga_gui/view_base.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/view_base.h b/src/saga_core/saga_gui/view_base.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/view_histogram.cpp b/src/saga_core/saga_gui/view_histogram.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/view_histogram.h b/src/saga_core/saga_gui/view_histogram.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/view_layout.cpp b/src/saga_core/saga_gui/view_layout.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/view_layout.h b/src/saga_core/saga_gui/view_layout.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/view_layout_control.cpp b/src/saga_core/saga_gui/view_layout_control.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/view_layout_control.h b/src/saga_core/saga_gui/view_layout_control.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/view_layout_info.cpp b/src/saga_core/saga_gui/view_layout_info.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/view_layout_info.h b/src/saga_core/saga_gui/view_layout_info.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/view_layout_printout.cpp b/src/saga_core/saga_gui/view_layout_printout.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/view_layout_printout.h b/src/saga_core/saga_gui/view_layout_printout.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/view_map.cpp b/src/saga_core/saga_gui/view_map.cpp
old mode 100644
new mode 100755
index ee5995f..74bc644
--- a/src/saga_core/saga_gui/view_map.cpp
+++ b/src/saga_core/saga_gui/view_map.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: view_map.cpp 2681 2015-11-06 12:31:05Z oconrad $
+ * Version $Id: view_map.cpp 2823 2016-02-24 17:57:07Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -99,6 +99,7 @@ BEGIN_EVENT_TABLE(CVIEW_Map, CVIEW_Base)
 	EVT_MENU			(ID_CMD_MAP_SCALEBAR					, CVIEW_Map::On_Map_ScaleBar)
 	EVT_MENU			(ID_CMD_MAP_NORTH_ARROW					, CVIEW_Map::On_Map_North_Arrow)
 	EVT_MENU			(ID_CMD_MAP_GRATICULE_ADD				, CVIEW_Map::On_Map_Graticule)
+	EVT_MENU			(ID_CMD_MAP_BASEMAP_ADD					, CVIEW_Map::On_Map_BaseMap)
 	EVT_MENU			(ID_CMD_MAP_SAVE_IMAGE					, CVIEW_Map::On_Map_Save_Image)
 	EVT_MENU			(ID_CMD_MAP_SAVE_IMAGE_ON_CHANGE		, CVIEW_Map::On_Map_Save_Image_On_Change)
 	EVT_MENU			(ID_CMD_MAPS_SAVE_IMAGE_TO_KMZ			, CVIEW_Map::On_Map_Save_Image_To_KMZ)
@@ -165,9 +166,12 @@ wxMenu * CVIEW_Map::_Create_Menu(void)
 //	pMenu->AppendSeparator();
 	CMD_Menu_Add_Item(pMenu, true , ID_CMD_MAP_3D_SHOW);
 	CMD_Menu_Add_Item(pMenu, true , ID_CMD_MAP_LAYOUT_SHOW);
+	pMenu->AppendSeparator();
 	CMD_Menu_Add_Item(pMenu, true , ID_CMD_MAP_SCALEBAR);
 	CMD_Menu_Add_Item(pMenu, true , ID_CMD_MAP_NORTH_ARROW);
+	pMenu->AppendSeparator();
 	CMD_Menu_Add_Item(pMenu, false, ID_CMD_MAP_GRATICULE_ADD);
+	CMD_Menu_Add_Item(pMenu, false, ID_CMD_MAP_BASEMAP_ADD);
 	pMenu->AppendSeparator();
 	CMD_Menu_Add_Item(pMenu, false, ID_CMD_MAP_SAVE_IMAGE);
 //	CMD_Menu_Add_Item(pMenu, true , ID_CMD_MAP_SAVE_IMAGE_ON_CHANGE);
@@ -450,6 +454,7 @@ void CVIEW_Map::On_Command_UI(wxUpdateUIEvent &event)
 		break;
 
 	case ID_CMD_MAP_GRATICULE_ADD:
+	case ID_CMD_MAP_BASEMAP_ADD:
 		event.Enable(m_pMap->Get_Count() > 0 && m_pMap->Get_Projection().is_Okay());
 		break;
 	}
@@ -572,6 +577,12 @@ void CVIEW_Map::On_Map_Graticule(wxCommandEvent &event)
 }
 
 //---------------------------------------------------------
+void CVIEW_Map::On_Map_BaseMap(wxCommandEvent &event)
+{
+	m_pMap->Add_BaseMap();
+}
+
+//---------------------------------------------------------
 void CVIEW_Map::On_Map_Zoom_Synchronize(wxCommandEvent &event)
 {
 	m_pMap->Set_Synchronising(!m_pMap->is_Synchronising());
diff --git a/src/saga_core/saga_gui/view_map.h b/src/saga_core/saga_gui/view_map.h
old mode 100644
new mode 100755
index f95576e..be02206
--- a/src/saga_core/saga_gui/view_map.h
+++ b/src/saga_core/saga_gui/view_map.h
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: view_map.h 2681 2015-11-06 12:31:05Z oconrad $
+ * Version $Id: view_map.h 2793 2016-02-16 16:51:24Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -137,6 +137,7 @@ private:
 	void							On_Map_ScaleBar				(wxCommandEvent  &event);
 	void							On_Map_North_Arrow			(wxCommandEvent  &event);
 	void							On_Map_Graticule			(wxCommandEvent  &event);
+	void							On_Map_BaseMap				(wxCommandEvent  &event);
 
 	void							On_Map_Mode_Zoom			(wxCommandEvent  &event);
 	void							On_Map_Mode_Pan				(wxCommandEvent  &event);
diff --git a/src/saga_core/saga_gui/view_map_3d.cpp b/src/saga_core/saga_gui/view_map_3d.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/view_map_3d.h b/src/saga_core/saga_gui/view_map_3d.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/view_map_3d_panel.cpp b/src/saga_core/saga_gui/view_map_3d_panel.cpp
old mode 100644
new mode 100755
index 056d9eb..4fc9328
--- a/src/saga_core/saga_gui/view_map_3d_panel.cpp
+++ b/src/saga_core/saga_gui/view_map_3d_panel.cpp
@@ -130,7 +130,7 @@ void CView_Map_3DPanel::Update_Statistics(void)
 		{
 			double	z, wx	= m_DEM.Get_XMin() + x * m_DEM.Get_Cellsize();
 
-			if( m_pDEM->Get_Value(wx, wy, z, GRID_INTERPOLATION_BSpline, false, true) )
+			if( m_pDEM->Get_Value(wx, wy, z, GRID_RESAMPLING_BSpline, false, true) )
 			{
 				m_DEM.Set_Value(x, y, z);
 			}
diff --git a/src/saga_core/saga_gui/view_map_3d_panel.h b/src/saga_core/saga_gui/view_map_3d_panel.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/view_map_control.cpp b/src/saga_core/saga_gui/view_map_control.cpp
old mode 100644
new mode 100755
index 8532ad1..3b5df2c
--- a/src/saga_core/saga_gui/view_map_control.cpp
+++ b/src/saga_core/saga_gui/view_map_control.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: view_map_control.cpp 2735 2015-12-16 17:47:02Z oconrad $
+ * Version $Id: view_map_control.cpp 2749 2016-01-13 17:37:51Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -877,10 +877,6 @@ void CVIEW_Map_Control::On_Mouse_RUp(wxMouseEvent &event)
 		{
 			pMenu	= Get_Active_Layer()->Edit_Get_Menu();
 		}
-		else
-		{
-			pMenu	= m_pParent->_Create_Menu();
-		}
 		break;
 
 	//-----------------------------------------------------
diff --git a/src/saga_core/saga_gui/view_map_control.h b/src/saga_core/saga_gui/view_map_control.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/view_ruler.cpp b/src/saga_core/saga_gui/view_ruler.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/view_ruler.h b/src/saga_core/saga_gui/view_ruler.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/view_scatterplot.cpp b/src/saga_core/saga_gui/view_scatterplot.cpp
old mode 100644
new mode 100755
index 243239b..45e89a1
--- a/src/saga_core/saga_gui/view_scatterplot.cpp
+++ b/src/saga_core/saga_gui/view_scatterplot.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: view_scatterplot.cpp 2318 2014-10-31 12:10:58Z oconrad $
+ * Version $Id: view_scatterplot.cpp 2752 2016-01-15 15:26:55Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -829,7 +829,6 @@ bool CVIEW_ScatterPlot::_Initialize_Grids()
 	m_sY.Printf(SG_T("%s"), pGrid_Y->Get_Name());
 
 	bool	bEqual			= m_pGrid->Get_System() == pGrid_Y->Get_System();
-	int		Interpolation	= GRID_INTERPOLATION_BSpline;
 	int		maxSamples		= m_Options("SAMPLES_MAX")->asInt();
 	double	Step			= maxSamples > 0 && m_pGrid->Get_NCells() > maxSamples ? m_pGrid->Get_NCells() / maxSamples : 1.0;
 
@@ -855,7 +854,7 @@ bool CVIEW_ScatterPlot::_Initialize_Grids()
 
 				double	z;
 
-				if(	pGrid_Y->Get_Value(p, z, Interpolation, false, true) )
+				if(	pGrid_Y->Get_Value(p, z, GRID_RESAMPLING_BSpline, false, true) )
 				{
 					m_Regression.Add_Values(m_pGrid->asDouble(iCell), z);
 				}
@@ -897,7 +896,7 @@ bool CVIEW_ScatterPlot::_Initialize_Shapes(void)
 	{
 		CSG_Shape	*pShape	= pPoints->Get_Shape((int)i);
 
-		if( !pShape->is_NoData(Field) && m_pGrid->Get_Value(pShape->Get_Point(0), z, GRID_INTERPOLATION_BSpline, false, true) )
+		if( !pShape->is_NoData(Field) && m_pGrid->Get_Value(pShape->Get_Point(0), z, GRID_RESAMPLING_BSpline, false, true) )
 		{
 			m_Regression.Add_Values(z, pShape->asDouble(Field));
 		}
diff --git a/src/saga_core/saga_gui/view_scatterplot.h b/src/saga_core/saga_gui/view_scatterplot.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/view_table.cpp b/src/saga_core/saga_gui/view_table.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/view_table.h b/src/saga_core/saga_gui/view_table.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/view_table_control.cpp b/src/saga_core/saga_gui/view_table_control.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/view_table_control.h b/src/saga_core/saga_gui/view_table_control.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/view_table_diagram.cpp b/src/saga_core/saga_gui/view_table_diagram.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/view_table_diagram.h b/src/saga_core/saga_gui/view_table_diagram.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/wksp.cpp b/src/saga_core/saga_gui/wksp.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/wksp.h b/src/saga_core/saga_gui/wksp.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/wksp_base_control.cpp b/src/saga_core/saga_gui/wksp_base_control.cpp
old mode 100644
new mode 100755
index a13a20b..93e0796
--- a/src/saga_core/saga_gui/wksp_base_control.cpp
+++ b/src/saga_core/saga_gui/wksp_base_control.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: wksp_base_control.cpp 2419 2015-02-19 21:00:10Z oconrad $
+ * Version $Id: wksp_base_control.cpp 2800 2016-02-18 17:06:22Z oconrad $
  *********************************************************/
 	
 ///////////////////////////////////////////////////////////
@@ -151,7 +151,6 @@ CWKSP_Base_Control::CWKSP_Base_Control(wxWindow *pParent, wxWindowID id)
 	: wxTreeCtrl(pParent, id, wxDefaultPosition, wxDefaultSize, wxTR_HAS_BUTTONS)
 {
 	m_pManager	= NULL;
-	m_bUpdating	= false;
 
 	AssignImageList(new wxImageList(IMG_SIZE_TREECTRL, IMG_SIZE_TREECTRL, true, 0));
 	IMG_ADD_TO_TREECTRL(ID_IMG_WKSP_NOITEMS);
@@ -420,38 +419,13 @@ bool CWKSP_Base_Control::_Del_Item_Confirm(CWKSP_Base_Item *pItem)
 //---------------------------------------------------------
 int CWKSP_Base_Control::Get_Selection_Count(void)
 {
-	if( GetWindowStyle() & wxTR_MULTIPLE )
-	{
-		wxArrayTreeItemIds	IDs;
-
-		return( GetSelections(IDs) );
-	}
-	else
-	{
-		wxTreeItemId	ID	= GetSelection();
-
-		return( ID.IsOk() ? 1 : 0 );
-	}
+	return( GetSelection().IsOk() ? 1 : 0 );
 }
 
 //---------------------------------------------------------
-CWKSP_Base_Item * CWKSP_Base_Control::Get_Item_Selected(void)
+CWKSP_Base_Item * CWKSP_Base_Control::Get_Item_Selected(bool bUpdate)
 {
-	wxTreeItemId	ID;
-
-	if( GetWindowStyle() & wxTR_MULTIPLE )
-	{
-		wxArrayTreeItemIds	IDs;
-
-		if( GetSelections(IDs) == 1 )
-		{
-			ID	= IDs[0];
-		}
-	}
-	else
-	{
-		ID	= GetSelection();
-	}
+	wxTreeItemId	ID	= GetSelection();
 
 	return( ID.IsOk() ? (CWKSP_Base_Item *)GetItemData(ID) : NULL );
 }
@@ -459,43 +433,14 @@ CWKSP_Base_Item * CWKSP_Base_Control::Get_Item_Selected(void)
 //---------------------------------------------------------
 bool CWKSP_Base_Control::Set_Item_Selected(CWKSP_Base_Item *pItem, bool bKeepMultipleSelection)
 {
-	if( pItem && pItem->Get_Control() == this && pItem->GetId().IsOk() )
+	if( !pItem || !pItem->GetId().IsOk() || pItem->Get_Control() != this )
 	{
-		if( GetWindowStyle() & wxTR_MULTIPLE )
-		{
-			if( bKeepMultipleSelection )
-			{
-				ToggleItemSelection(pItem->GetId());
-			}
-			else
-			{
-				m_bUpdating	= true;
-				SelectItem(pItem->GetId());
-				m_bUpdating	= false;
-
-				wxArrayTreeItemIds	IDs;
-				
-				if( GetSelections(IDs) > 1 )
-				{
-					for(size_t i=0; i<IDs.Count(); i++)
-					{
-						if( IDs[i] != pItem->GetId() )
-						{
-							UnselectItem(IDs[i]);
-						}
-					}
-				}
-			}
-		}
-		else
-		{
-			SelectItem(pItem->GetId());
-		}
-
-		return( true );
+		return( false );
 	}
 
-	return( false );
+	SelectItem(pItem->GetId());
+
+	return( true );
 }
 
 
@@ -508,34 +453,17 @@ bool CWKSP_Base_Control::Set_Item_Selected(CWKSP_Base_Item *pItem, bool bKeepMul
 //---------------------------------------------------------
 wxMenu * CWKSP_Base_Control::Get_Context_Menu(void)
 {
-	wxMenu			*pMenu	= NULL;
 	CWKSP_Base_Item	*pItem	= Get_Item_Selected();
 
 	if( pItem )
 	{
-		pMenu	= pItem->Get_Menu();
-	}
-	else if( GetWindowStyle() & wxTR_MULTIPLE )
-	{
-		wxArrayTreeItemIds	IDs;
-
-		if( GetSelections(IDs) > 0 )
-		{
-			pMenu	= new wxMenu;
-
-			CMD_Menu_Add_Item(pMenu, false, ID_CMD_WKSP_ITEM_CLOSE);
-			CMD_Menu_Add_Item(pMenu, false, ID_CMD_WKSP_ITEM_SHOW);
-			CMD_Menu_Add_Item(pMenu, false, ID_CMD_WKSP_ITEM_SETTINGS_LOAD);
-			CMD_Menu_Add_Item(pMenu, false, ID_CMD_WKSP_ITEM_SETTINGS_COPY);
-		}
+		return(	pItem->Get_Menu() );
 	}
 
-	if( pMenu == NULL )
-	{
-		pMenu	= new wxMenu;
+	//-----------------------------------------------------
+	wxMenu	*pMenu	= new wxMenu;
 
-		CMD_Menu_Add_Item(pMenu, false, ID_CMD_WKSP_ITEM_CLOSE);
-	}
+	CMD_Menu_Add_Item(pMenu, false, ID_CMD_WKSP_ITEM_CLOSE);
 
 	return( pMenu );
 }
@@ -1029,9 +957,14 @@ void CWKSP_Base_Control::On_Item_KeyDown(wxTreeEvent &event)
 //---------------------------------------------------------
 void CWKSP_Base_Control::On_Item_SelChanged(wxTreeEvent &event)
 {
-	if( g_pACTIVE && (!m_bUpdating || Get_Item_Selected()) )
+	if( g_pACTIVE )
 	{
-		g_pACTIVE->Set_Active(Get_Item_Selected());
+		CWKSP_Base_Item	*pItem	= Get_Item_Selected(true);
+
+		if( pItem )
+		{
+			g_pACTIVE->Set_Active(pItem);
+		}
 	}
 
 	event.Skip();
diff --git a/src/saga_core/saga_gui/wksp_base_control.h b/src/saga_core/saga_gui/wksp_base_control.h
old mode 100644
new mode 100755
index 521869b..fc01960
--- a/src/saga_core/saga_gui/wksp_base_control.h
+++ b/src/saga_core/saga_gui/wksp_base_control.h
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: wksp_base_control.h 2009 2014-02-21 14:42:18Z oconrad $
+ * Version $Id: wksp_base_control.h 2800 2016-02-18 17:06:22Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -90,9 +90,9 @@ public:
 	CWKSP_Base_Control(wxWindow *pParent, wxWindowID id);
 	virtual ~CWKSP_Base_Control(void);
 
-	int							Get_Selection_Count	(void);
-	class CWKSP_Base_Item *		Get_Item_Selected	(void);
-	bool						Set_Item_Selected	(class CWKSP_Base_Item *pItem, bool bKeepMultipleSelection = false);
+	virtual int					Get_Selection_Count	(void);
+	virtual CWKSP_Base_Item *	Get_Item_Selected	(bool bUpdate = false);
+	virtual bool				Set_Item_Selected	(class CWKSP_Base_Item *pItem, bool bKeepMultipleSelection = false);
 
 	void						On_Command			(wxCommandEvent  &event);
 	void						On_Command_UI		(wxUpdateUIEvent &event);
@@ -111,8 +111,6 @@ public:
 
 protected:
 
-	bool						m_bUpdating;
-
 	class CWKSP_Base_Manager	*m_pManager;
 
 
diff --git a/src/saga_core/saga_gui/wksp_base_item.cpp b/src/saga_core/saga_gui/wksp_base_item.cpp
old mode 100644
new mode 100755
index 7e77537..1a465e5
--- a/src/saga_core/saga_gui/wksp_base_item.cpp
+++ b/src/saga_core/saga_gui/wksp_base_item.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: wksp_base_item.cpp 2488 2015-05-13 10:08:58Z reklov_w $
+ * Version $Id: wksp_base_item.cpp 2792 2016-02-16 16:50:35Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -132,7 +132,7 @@ CWKSP_Base_Item::CWKSP_Base_Item(void)
 	m_ID		= 0;
 
 	m_Parameters.Create(this, _TL(""), _TL(""));
-	m_Parameters.Set_Callback_On_Parameter_Changed(&_On_Parameter_Changed);
+	m_Parameters.Set_Callback_On_Parameter_Changed(&Parameter_Callback);
 }
 
 //---------------------------------------------------------
@@ -208,6 +208,7 @@ CWKSP_Base_Control * CWKSP_Base_Item::Get_Control(void)
 	case WKSP_ITEM_Map:
 	case WKSP_ITEM_Map_Layer:
 	case WKSP_ITEM_Map_Graticule:
+	case WKSP_ITEM_Map_BaseMap:
 		return( g_pMap_Ctrl );
 	}
 }
@@ -255,7 +256,7 @@ CSG_Parameters * CWKSP_Base_Item::Get_Parameters(void)
 //---------------------------------------------------------
 CSG_Parameter * CWKSP_Base_Item::Get_Parameter(const CSG_String &Identifier)
 {
-	return( Get_Parameters() ? Get_Parameters()->Get_Parameter(Identifier) : NULL );
+	return( m_Parameters.Get_Parameter(Identifier) );
 }
 
 //---------------------------------------------------------
@@ -277,7 +278,7 @@ void CWKSP_Base_Item::Parameters_Changed(void)
 }
 
 //---------------------------------------------------------
-int CWKSP_Base_Item::_On_Parameter_Changed(CSG_Parameter *pParameter, int Flags)
+int CWKSP_Base_Item::Parameter_Callback(CSG_Parameter *pParameter, int Flags)
 {
 	if( pParameter && pParameter->Get_Owner() && pParameter->Get_Owner()->Get_Owner() )
 	{
diff --git a/src/saga_core/saga_gui/wksp_base_item.h b/src/saga_core/saga_gui/wksp_base_item.h
old mode 100644
new mode 100755
index c83ca95..2dd48a3
--- a/src/saga_core/saga_gui/wksp_base_item.h
+++ b/src/saga_core/saga_gui/wksp_base_item.h
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: wksp_base_item.h 2700 2015-11-24 17:18:29Z oconrad $
+ * Version $Id: wksp_base_item.h 2792 2016-02-16 16:50:35Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -127,6 +127,7 @@ typedef enum
 	WKSP_ITEM_Map,
 	WKSP_ITEM_Map_Layer,
 	WKSP_ITEM_Map_Graticule,
+	WKSP_ITEM_Map_BaseMap,
 
 	WKSP_ITEM_Undefined
 }
@@ -184,6 +185,9 @@ protected:
 	virtual int						On_Parameter_Changed	(CSG_Parameters *pParameters, CSG_Parameter *pParameter, int Flags);
 
 
+	static int						Parameter_Callback		(CSG_Parameter *pParameter, int Flags);
+
+
 private:
 
 	bool							m_bManager;
@@ -192,9 +196,6 @@ private:
 
 	CWKSP_Base_Manager				*m_pManager;
 
-
-	static int						_On_Parameter_Changed	(CSG_Parameter *pParameter, int Flags);
-
 };
 
 
diff --git a/src/saga_core/saga_gui/wksp_base_manager.cpp b/src/saga_core/saga_gui/wksp_base_manager.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/wksp_base_manager.h b/src/saga_core/saga_gui/wksp_base_manager.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/wksp_data_control.cpp b/src/saga_core/saga_gui/wksp_data_control.cpp
old mode 100644
new mode 100755
index 9f0a537..82cddcf
--- a/src/saga_core/saga_gui/wksp_data_control.cpp
+++ b/src/saga_core/saga_gui/wksp_data_control.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: wksp_data_control.cpp 1921 2014-01-09 10:24:11Z oconrad $
+ * Version $Id: wksp_data_control.cpp 2800 2016-02-18 17:06:22Z oconrad $
  *********************************************************/
 	
 ///////////////////////////////////////////////////////////
@@ -70,6 +70,8 @@
 #include "res_controls.h"
 #include "res_images.h"
 
+#include "active.h"
+
 #include "wksp_data_control.h"
 #include "wksp_data_manager.h"
 #include "wksp_data_layers.h"
@@ -155,7 +157,9 @@ CWKSP_Data_Control	*g_pData_Ctrl	= NULL;
 CWKSP_Data_Control::CWKSP_Data_Control(wxWindow *pParent)
 	: CWKSP_Base_Control(pParent, ID_WND_WKSP_DATA)
 {
-	g_pData_Ctrl	= this;
+	g_pData_Ctrl		= this;
+
+	m_bUpdate_Selection	= false;
 
 	SetWindowStyle(wxTR_HAS_BUTTONS|wxTR_MULTIPLE);
 
@@ -286,3 +290,83 @@ bool CWKSP_Data_Control::Close(bool bSilent)
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
+int CWKSP_Data_Control::Get_Selection_Count(void)
+{
+	wxArrayTreeItemIds	IDs;
+
+	return( GetSelections(IDs) );
+}
+
+//---------------------------------------------------------
+CWKSP_Base_Item * CWKSP_Data_Control::Get_Item_Selected(bool bUpdate)
+{
+	if( m_bUpdate_Selection )
+	{
+		return( NULL );
+	}
+
+	if( bUpdate )
+	{
+		Get_Manager()->MultiSelect_Check();
+	}
+
+	if( Get_Manager()->MultiSelect_Count() > 0 )
+	{
+		return( Get_Manager() );
+	}
+
+	wxArrayTreeItemIds	IDs;
+
+	if( GetSelections(IDs) == 1 )
+	{
+		return( (CWKSP_Base_Item *)GetItemData(IDs[0]) );
+	}
+
+	return( NULL );
+}
+
+//---------------------------------------------------------
+bool CWKSP_Data_Control::Set_Item_Selected(CWKSP_Base_Item *pItem, bool bKeepMultipleSelection)
+{
+	if( !pItem || !pItem->GetId().IsOk() || pItem->Get_Control() != this )
+	{
+		return( false );
+	}
+
+	if( bKeepMultipleSelection )
+	{
+		ToggleItemSelection(pItem->GetId());
+	}
+	else
+	{
+		m_bUpdate_Selection	= true;
+		SelectItem(pItem->GetId());
+		m_bUpdate_Selection	= false;
+
+		wxArrayTreeItemIds	IDs;
+				
+		if( GetSelections(IDs) > 1 )
+		{
+			for(size_t i=0; i<IDs.Count(); i++)
+			{
+				if( IDs[i] != pItem->GetId() )
+				{
+					UnselectItem(IDs[i]);
+				}
+			}
+		}
+	}
+
+	g_pACTIVE->Set_Active(Get_Item_Selected());
+
+	return( true );
+}
+
+
+///////////////////////////////////////////////////////////
+//														 //
+//														 //
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
diff --git a/src/saga_core/saga_gui/wksp_data_control.h b/src/saga_core/saga_gui/wksp_data_control.h
old mode 100644
new mode 100755
index 4d99f38..b93deaa
--- a/src/saga_core/saga_gui/wksp_data_control.h
+++ b/src/saga_core/saga_gui/wksp_data_control.h
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: wksp_data_control.h 1921 2014-01-09 10:24:11Z oconrad $
+ * Version $Id: wksp_data_control.h 2800 2016-02-18 17:06:22Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -90,16 +90,23 @@ public:
 	CWKSP_Data_Control(wxWindow *pParent);
 	virtual ~CWKSP_Data_Control(void);
 
-	class CWKSP_Data_Manager *	Get_Manager		(void)	{	return( (class CWKSP_Data_Manager *)m_pManager );	}
+	class CWKSP_Data_Manager *	Get_Manager			(void)	{	return( (class CWKSP_Data_Manager *)m_pManager );	}
 
-	void						Add_Item		(class CWKSP_Base_Manager *pManager, class CWKSP_Base_Item *pItem);
+	void						Add_Item			(class CWKSP_Base_Manager *pManager, class CWKSP_Base_Item *pItem);
 
-	bool						Close			(bool bSilent);
+	bool						Close				(bool bSilent);
+
+	virtual int					Get_Selection_Count	(void);
+	virtual CWKSP_Base_Item *	Get_Item_Selected	(bool bUpdate = false);
+	virtual bool				Set_Item_Selected	(class CWKSP_Base_Item *pItem, bool bKeepMultipleSelection = false);
 
 
 private:
 
-	int							_Get_Image_ID	(class CWKSP_Base_Item *pItem);
+	bool						m_bUpdate_Selection;
+
+
+	int							_Get_Image_ID		(class CWKSP_Base_Item *pItem);
 
 
 //---------------------------------------------------------
diff --git a/src/saga_core/saga_gui/wksp_data_item.cpp b/src/saga_core/saga_gui/wksp_data_item.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/wksp_data_item.h b/src/saga_core/saga_gui/wksp_data_item.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/wksp_data_layers.cpp b/src/saga_core/saga_gui/wksp_data_layers.cpp
old mode 100644
new mode 100755
index d136147..86b8ba8
--- a/src/saga_core/saga_gui/wksp_data_layers.cpp
+++ b/src/saga_core/saga_gui/wksp_data_layers.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: wksp_data_layers.cpp 2021 2014-02-26 15:49:51Z oconrad $
+ * Version $Id: wksp_data_layers.cpp 2792 2016-02-16 16:50:35Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -258,7 +258,17 @@ bool CWKSP_Data_Button::_Set_Active(bool bKeepOthers)
 	{
 		SetFocus();
 
-		g_pData_Ctrl->SelectChildren(m_pItem->GetId());
+		if( !bKeepOthers )
+		{
+			g_pData_Ctrl->SelectChildren(m_pItem->GetId());
+		}
+		else
+		{
+			for(int i=0; i<((CWKSP_Base_Manager *)m_pItem)->Get_Count(); i++)
+			{
+				g_pData_Ctrl->Set_Item_Selected(((CWKSP_Base_Manager *)m_pItem)->Get_Item(i), true);
+			}
+		}
 
 		g_pData_Buttons->Refresh(false);
 
diff --git a/src/saga_core/saga_gui/wksp_data_layers.h b/src/saga_core/saga_gui/wksp_data_layers.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/wksp_data_manager.cpp b/src/saga_core/saga_gui/wksp_data_manager.cpp
old mode 100644
new mode 100755
index b55385b..e5d4ae6
--- a/src/saga_core/saga_gui/wksp_data_manager.cpp
+++ b/src/saga_core/saga_gui/wksp_data_manager.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: wksp_data_manager.cpp 2723 2015-12-11 10:18:03Z oconrad $
+ * Version $Id: wksp_data_manager.cpp 2800 2016-02-18 17:06:22Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -86,6 +86,7 @@
 #include "wksp_table_manager.h"
 #include "wksp_table.h"
 #include "wksp_shapes_manager.h"
+#include "wksp_shapes.h"
 #include "wksp_tin_manager.h"
 #include "wksp_pointcloud_manager.h"
 #include "wksp_grid_manager.h"
@@ -371,7 +372,7 @@ bool CWKSP_Data_Manager::Initialise(void)
 			}
 			else
 			{	// recently opened project
-				return( m_pProject->Load(dlg.GetStringSelection(), false, false) );
+				return( m_pProject->Load(dlg.GetStringSelection(), false, true) );
 			}
 		}
 	}
@@ -422,45 +423,26 @@ wxString CWKSP_Data_Manager::Get_Description(void)
 {
 	wxString	s;
 
-	s.Printf(wxT("<b>%s</b><br>"), _TL("Data"));
-
-	if( Get_Count() <= 0 )
-	{
-		s.Append(_TL("No data loaded."));
-	}
-	else
-	{
-		if( m_pProject->Has_File_Name() )
-		{
-			s.Append(wxString::Format(wxT("%s: %s<br>"), _TL("Project File"), m_pProject->Get_File_Name()));
-		}
+	//-----------------------------------------------------
+	s	+= wxString::Format("<h4>%s</h4>", _TL("Data"));
 
-		if( Get_Tables() )
-		{
-			s.Append(wxString::Format(wxT("%s: %d<br>"), _TL("Tables"), Get_Tables()->Get_Count()));
-		}
+	s	+= "<table border=\"0\">";
 
-		if( Get_Shapes() )
-		{
-			s.Append(wxString::Format(wxT("%s: %d<br>"), _TL("Shapes"), Get_Shapes()->Get_Items_Count()));
-		}
+	DESC_ADD_INT(_TL("Number of Data Sets"), Get_Count());
 
-		if( Get_TINs() )
-		{
-			s.Append(wxString::Format(wxT("%s: %d<br>"), _TL("TIN"), Get_TINs()->Get_Count()));
-		}
+	if( m_pProject->Has_File_Name() )
+	{
+		DESC_ADD_STR(_TL("Project File"), m_pProject->Get_File_Name());
+	}
 
-		if( Get_PointClouds() )
-		{
-			s.Append(wxString::Format(wxT("%s: %d<br>"), _TL("Point Clouds"), Get_PointClouds()->Get_Count()));
-		}
+	DESC_ADD_INT(_TL("Tables"      ), Get_Tables     () ? Get_Tables     ()->Get_Count      () : 0);
+	DESC_ADD_INT(_TL("Shapes"      ), Get_Shapes     () ? Get_Shapes     ()->Get_Items_Count() : 0);
+	DESC_ADD_INT(_TL("TIN"         ), Get_TINs       () ? Get_TINs       ()->Get_Count      () : 0);
+	DESC_ADD_INT(_TL("Point Clouds"), Get_PointClouds() ? Get_PointClouds()->Get_Count      () : 0);
+	DESC_ADD_INT(_TL("Grid Systems"), Get_Grids      () ? Get_Grids      ()->Get_Count      () : 0);
+	DESC_ADD_INT(_TL("Grids"       ), Get_Grids      () ? Get_Grids      ()->Get_Items_Count() : 0);
 
-		if( Get_Grids() )
-		{
-			s.Append(wxString::Format(wxT("%s: %d<br>"), _TL("Grid Systems"), Get_Grids()->Get_Count()));
-			s.Append(wxString::Format(wxT("%s: %d<br>"), _TL("Grids"), Get_Grids()->Get_Items_Count()));
-		}
-	}
+	s	+= wxT("</table>");
 
 	return( s );
 }
@@ -468,9 +450,20 @@ wxString CWKSP_Data_Manager::Get_Description(void)
 //---------------------------------------------------------
 wxMenu * CWKSP_Data_Manager::Get_Menu(void)
 {
-	wxMenu	*pMenu;
+	if( m_Sel_Items.Count() > 0 )
+	{
+		wxMenu	*pMenu	= new wxMenu;
 
-	pMenu	= new wxMenu(_TL("Data"));
+		CMD_Menu_Add_Item(pMenu, false, ID_CMD_WKSP_ITEM_CLOSE);
+		CMD_Menu_Add_Item(pMenu, false, ID_CMD_WKSP_ITEM_SHOW);
+		CMD_Menu_Add_Item(pMenu, false, ID_CMD_WKSP_ITEM_SETTINGS_LOAD);
+		CMD_Menu_Add_Item(pMenu, false, ID_CMD_WKSP_ITEM_SETTINGS_COPY);
+
+		return( pMenu );
+	}
+
+	//-----------------------------------------------------
+	wxMenu	*pMenu	= new wxMenu(_TL("Data"));
 
 	CMD_Menu_Add_Item(pMenu, false, ID_CMD_DATA_PROJECT_OPEN);
 //	CMD_Menu_Add_Item(pMenu, false, ID_CMD_DATA_PROJECT_OPEN_ADD);
@@ -602,8 +595,24 @@ bool CWKSP_Data_Manager::On_Command_UI(wxUpdateUIEvent &event)
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
+CSG_Parameters * CWKSP_Data_Manager::Get_Parameters(void)
+{
+	if( m_Sel_Parms[0].Get_Count() > 0 )
+	{
+		return( &m_Sel_Parms[0] );
+	}
+
+	return( m_Parameters.Get_Count() > 0 ? &m_Parameters : NULL );
+}
+
+//---------------------------------------------------------
 void CWKSP_Data_Manager::Parameters_Changed(void)
 {
+	if( MultiSelect_Update() )
+	{
+		return;
+	}
+
 	SG_Grid_Cache_Set_Directory   (m_Parameters("GRID_CACHE_TMPDIR" )->asString());
 	SG_Grid_Cache_Set_Automatic   (m_Parameters("GRID_CACHE_AUTO"   )->asBool  ());
 	SG_Grid_Cache_Set_Threshold_MB(m_Parameters("GRID_CACHE_THRSHLD")->asDouble());
@@ -1268,3 +1277,181 @@ bool CWKSP_Data_Manager::Set_Parameters(CSG_Data_Object *pObject, CSG_Parameters
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
+size_t CWKSP_Data_Manager::MultiSelect_Count(void)
+{
+	return( m_Sel_Items.Count() );
+}
+
+//---------------------------------------------------------
+bool CWKSP_Data_Manager::MultiSelect_Check(void)
+{
+	enum
+	{
+		TYPE_Table,
+		TYPE_Shapes_Point,
+		TYPE_Shapes_Points,
+		TYPE_Shapes_Line,
+		TYPE_Shapes_Polygon,
+		TYPE_TIN,
+		TYPE_PointCloud,
+		TYPE_Grid,
+		TYPE_Undefined
+	};
+
+	//-----------------------------------------------------
+	wxArrayTreeItemIds	IDs;
+
+	if( Get_Control()->GetSelections(IDs) > 1 )
+	{
+		int	iType, Type	= TYPE_Undefined;
+
+		for(size_t iID=0; iID<IDs.Count(); iID++)
+		{
+			CWKSP_Base_Item	*pItem	= (CWKSP_Base_Item *)Get_Control()->GetItemData(IDs[iID]);
+
+			switch( pItem->Get_Type() )
+			{
+			default                    :	iType	= TYPE_Undefined     ;	break;
+			case WKSP_ITEM_Table       :	iType	= TYPE_Table         ;	break;
+			case WKSP_ITEM_TIN         :	iType	= TYPE_TIN           ;	break;
+			case WKSP_ITEM_PointCloud  :	iType	= TYPE_PointCloud    ;	break;
+			case WKSP_ITEM_Grid        :	iType	= TYPE_Grid          ;	break;
+			case WKSP_ITEM_Shapes      :	switch( ((CWKSP_Shapes *)pItem)->Get_Shapes()->Get_Type() )
+				{
+				default                :	iType	= TYPE_Undefined     ;	break;
+				case SHAPE_TYPE_Point  :	iType	= TYPE_Shapes_Point  ;	break;
+				case SHAPE_TYPE_Points :	iType	= TYPE_Shapes_Points ;	break;
+				case SHAPE_TYPE_Line   :	iType	= TYPE_Shapes_Line   ;	break;
+				case SHAPE_TYPE_Polygon:	iType	= TYPE_Shapes_Polygon;	break;
+				}
+				break;
+			}
+
+			//---------------------------------------------
+			if( iType != TYPE_Undefined )
+			{
+				if( Type == TYPE_Undefined )
+				{
+					Type	= iType;
+
+					m_Sel_Parms[0].Assign(pItem->Get_Parameters());
+
+					m_Sel_Items.Clear();
+
+					m_Sel_Items.Add(IDs[iID]);
+				}
+				else if( Type == iType )
+				{
+					m_Sel_Items.Add(IDs[iID]);
+
+					for(int i=0; i<m_Sel_Parms[0].Get_Count(); i++)
+					{
+						CSG_Parameter	&Parameter	= m_Sel_Parms[0][i];
+						
+						CSG_Parameter	*pParameter	= pItem->Get_Parameters()->Get_Parameter(Parameter.Get_Identifier());
+
+						if( !Parameter.is_Compatible(pParameter) )
+						{
+							m_Sel_Parms[0].Del_Parameter(i--);
+						}
+						else if( !Parameter.is_Value_Equal(pParameter) )
+						{
+							if( Parameter.is_DataObject() )
+							{
+								Parameter.Set_Value(DATAOBJECT_NOTSET);
+							}
+							else if( Parameter.is_DataObject_List() )
+							{
+								Parameter.asList()->Del_Items();
+							}
+							else switch( Parameter.Get_Type() )
+							{
+							default:
+								Parameter.Restore_Default();
+								break;
+
+							case PARAMETER_TYPE_Bool       :
+							case PARAMETER_TYPE_Int        :
+							case PARAMETER_TYPE_Double     :
+							case PARAMETER_TYPE_Degree     :
+							case PARAMETER_TYPE_Color      :
+							case PARAMETER_TYPE_Table_Field:
+							case PARAMETER_TYPE_Choice     :	Parameter.Set_Value(0.0);	break;
+
+							case PARAMETER_TYPE_String     :
+							case PARAMETER_TYPE_Text       :
+							case PARAMETER_TYPE_FilePath   :	Parameter.Set_Value(CSG_String(""));	break;
+							}
+						}
+					}
+				}
+				else //  Type != iType
+				{
+					IDs.Clear();
+				}
+			}
+		}
+
+		//-------------------------------------------------
+		if( IDs.Count() > 0 )
+		{
+			m_Sel_Parms[1]	= m_Sel_Parms[0];
+
+			if( g_pACTIVE->Get_Active() == this )
+			{
+				g_pACTIVE->Get_Parameters()->Update_Parameters(&m_Sel_Parms[0], false);
+			}
+
+			return( true );
+		}
+	}
+
+	//-----------------------------------------------------
+	m_Sel_Items.Clear();
+
+	m_Sel_Parms[0].Destroy();
+	m_Sel_Parms[1].Destroy();
+
+	return( false );
+}
+
+//---------------------------------------------------------
+bool CWKSP_Data_Manager::MultiSelect_Update(void)
+{
+	if( m_Sel_Items.Count() == 0 )
+	{
+		return( false );
+	}
+
+	CSG_Parameters	Changed;
+
+	for(int i=0; i<m_Sel_Parms[0].Get_Count(); i++)		// compare to backup list [1] to detect changed parameters
+	{
+		if( !m_Sel_Parms[0][i].is_Value_Equal(&m_Sel_Parms[1][i]) )
+		{
+			Changed.Add_Parameter(&m_Sel_Parms[0][i]);
+		}
+	}
+
+	for(size_t iID=0; iID<m_Sel_Items.Count(); iID++)	// assign changed values to selected data set parameters
+	{
+		CWKSP_Data_Item	*pItem	= (CWKSP_Data_Item *)Get_Control()->GetItemData(m_Sel_Items[iID]);
+
+		pItem->Get_Parameters()->Assign_Values(&Changed);
+
+		pItem->Parameters_Changed();
+	}
+
+	m_Sel_Parms[1].Assign_Values(&m_Sel_Parms[0]);		// update backup list with changed values
+
+	return( true );
+}
+
+
+///////////////////////////////////////////////////////////
+//														 //
+//														 //
+//														 //
+///////////////////////////////////////////////////////////
+
+//---------------------------------------------------------
diff --git a/src/saga_core/saga_gui/wksp_data_manager.h b/src/saga_core/saga_gui/wksp_data_manager.h
old mode 100644
new mode 100755
index 4573b47..9db3c18
--- a/src/saga_core/saga_gui/wksp_data_manager.h
+++ b/src/saga_core/saga_gui/wksp_data_manager.h
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: wksp_data_manager.h 2501 2015-06-12 10:02:42Z oconrad $
+ * Version $Id: wksp_data_manager.h 2800 2016-02-18 17:06:22Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -103,6 +103,7 @@ public:
 	virtual bool					On_Command			(int Cmd_ID);
 	virtual bool					On_Command_UI		(wxUpdateUIEvent &event);
 
+	virtual CSG_Parameters *		Get_Parameters		(void);
 	virtual void					Parameters_Changed	(void);
 
 	CWKSP_Base_Manager *			Get_Manager			(TSG_Data_Object_Type Type, bool bAdd = false);
@@ -144,11 +145,19 @@ public:
 
 	int								Get_Numbering		(void)	const	{	return( m_Numbering );	}
 
+	size_t							MultiSelect_Count	(void);
+	bool							MultiSelect_Check	(void);
+	bool							MultiSelect_Update	(void);
+
 
 private:
 
 	int								m_Numbering;
 
+	wxArrayTreeItemIds				m_Sel_Items;
+
+	CSG_Parameters					m_Sel_Parms[2];
+
 	class CWKSP_Project				*m_pProject;
 
 	class CWKSP_Data_Menu_Files		*m_pMenu_Files;
diff --git a/src/saga_core/saga_gui/wksp_data_menu_file.cpp b/src/saga_core/saga_gui/wksp_data_menu_file.cpp
old mode 100644
new mode 100755
index 8bf4c41..339c6bb
--- a/src/saga_core/saga_gui/wksp_data_menu_file.cpp
+++ b/src/saga_core/saga_gui/wksp_data_menu_file.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: wksp_data_menu_file.cpp 2674 2015-11-03 17:03:58Z oconrad $
+ * Version $Id: wksp_data_menu_file.cpp 2781 2016-02-11 11:18:49Z oconrad $
  *********************************************************/
 	
 ///////////////////////////////////////////////////////////
@@ -257,6 +257,14 @@ void CWKSP_Data_Menu_File::Update(wxMenu *pMenu)
 		}
 
 		//-------------------------------------------------
+		for(i=m_Recent_Count-1; i>=0; i--)
+		{
+			if( !m_Recent[i].IsEmpty() && !wxFileExists(m_Recent[i]) )
+			{
+				Del(m_Recent[i]);
+			}
+		}
+
 		for(i=0, bFirst=false; i<m_Recent_Count; i++)
 		{
 			if( m_Recent[i].Length() > 0 )
@@ -301,7 +309,7 @@ void CWKSP_Data_Menu_File::Add(const wxString &FileName)
 //---------------------------------------------------------
 void CWKSP_Data_Menu_File::Del(const wxString &FileName)
 {
-	if( m_Recent && m_Recent_Count > 0 )
+	if( m_Recent && m_Recent_Count > 0 && !FileName.IsEmpty() )
 	{
 		wxString	s_tmp(FileName);
 
diff --git a/src/saga_core/saga_gui/wksp_data_menu_file.h b/src/saga_core/saga_gui/wksp_data_menu_file.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/wksp_data_menu_files.cpp b/src/saga_core/saga_gui/wksp_data_menu_files.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/wksp_data_menu_files.h b/src/saga_core/saga_gui/wksp_data_menu_files.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/wksp_grid.cpp b/src/saga_core/saga_gui/wksp_grid.cpp
old mode 100644
new mode 100755
index 30e89c6..5bdd04b
--- a/src/saga_core/saga_gui/wksp_grid.cpp
+++ b/src/saga_core/saga_gui/wksp_grid.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: wksp_grid.cpp 2716 2015-12-04 11:55:42Z oconrad $
+ * Version $Id: wksp_grid.cpp 2772 2016-02-05 15:25:43Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -117,9 +117,9 @@ wxString CWKSP_Grid::Get_Description(void)
 	wxString	s;
 
 	//-----------------------------------------------------
-	s	+= wxString::Format(wxT("<b>%s</b>"), _TL("Grid"));
+	s	+= wxString::Format("<h4>%s</h4>", _TL("Grid"));
 
-	s	+= wxT("<table border=\"0\">");
+	s	+= "<table border=\"0\">";
 
 	DESC_ADD_STR (_TL("Name"               ), m_pObject->Get_Name());
 	DESC_ADD_STR (_TL("Description"        ), m_pObject->Get_Description());
@@ -344,19 +344,19 @@ void CWKSP_Grid::On_Create_Parameters(void)
 	// General...
 
 	m_Parameters.Add_String(
-		m_Parameters("NODE_GENERAL")	, "GENERAL_Z_UNIT"			, _TL("Unit"),
+		m_Parameters("NODE_GENERAL")	, "GENERAL_Z_UNIT"		, _TL("Unit"),
 		_TL(""),
 		Get_Grid()->Get_Unit()
 	);
 
 	m_Parameters.Add_Value(
-		m_Parameters("NODE_GENERAL")	, "GENERAL_Z_FACTOR"		, _TL("Z-Scale"),
+		m_Parameters("NODE_GENERAL")	, "GENERAL_Z_FACTOR"	, _TL("Z-Scale"),
 		_TL(""),
 		PARAMETER_TYPE_Double, 1.0
 	);
 
 	m_Parameters.Add_Value(
-		m_Parameters("NODE_GENERAL")	, "GENERAL_Z_OFFSET"		, _TL("Z-Offset"),
+		m_Parameters("NODE_GENERAL")	, "GENERAL_Z_OFFSET"	, _TL("Z-Offset"),
 		_TL(""),
 		PARAMETER_TYPE_Double, 0.0
 	);
@@ -365,14 +365,13 @@ void CWKSP_Grid::On_Create_Parameters(void)
 	// Display...
 
 	m_Parameters.Add_Choice(
-		m_Parameters("NODE_DISPLAY")	, "DISPLAY_INTERPOLATION"	, _TL("Interpolation"),
+		m_Parameters("NODE_DISPLAY")	, "DISPLAY_RESAMPLING"	, _TL("Resampling"),
 		_TL(""),
-		CSG_String::Format(SG_T("%s|%s|%s|%s|%s|"),
-			_TL("None"),
-			_TL("Bilinear"),
-			_TL("Inverse Distance"),
-			_TL("Bicubic Spline"),
-			_TL("B-Spline")
+		CSG_String::Format("%s|%s|%s|%s|",
+			_TL("Nearest Neighbour"),
+			_TL("Bilinear Interpolation"),
+			_TL("Bicubic Spline Interpolation"),
+			_TL("B-Spline Interpolation")
 		), 0
 	);
 
@@ -380,7 +379,7 @@ void CWKSP_Grid::On_Create_Parameters(void)
 	// Classification...
 
 	((CSG_Parameter_Choice *)m_Parameters("COLORS_TYPE")->Get_Data())->Set_Items(
-		CSG_String::Format(SG_T("%s|%s|%s|%s|%s|%s|%s|"),
+		CSG_String::Format("%s|%s|%s|%s|%s|%s|%s|",
 			_TL("Single Symbol"   ),	// CLASSIFY_UNIQUE
 			_TL("Lookup Table"    ),	// CLASSIFY_LUT
 			_TL("Discrete Colors" ),	// CLASSIFY_METRIC
@@ -402,15 +401,15 @@ void CWKSP_Grid::On_Create_Parameters(void)
 	m_Parameters.Add_Choice(
 		m_Parameters("NODE_SHADE")		, "SHADE_MODE"		, _TL("Coloring"),
 		_TL(""),
-		CSG_String::Format(SG_T("%s|%s|%s|%s|%s|%s|%s|%s|"),
-			_TL("bright - dark"),
-			_TL("dark - bright"),
-			_TL("white - cyan"),
-			_TL("cyan - white"),
+		CSG_String::Format("%s|%s|%s|%s|%s|%s|%s|%s|",
+			_TL("bright - dark"  ),
+			_TL("dark - bright"  ),
+			_TL("white - cyan"   ),
+			_TL("cyan - white"   ),
 			_TL("white - magenta"),
 			_TL("magenta - white"),
-			_TL("white - yellow"),
-			_TL("yellow - white")
+			_TL("white - yellow" ),
+			_TL("yellow - white" )
 		), 0
 	);
 
@@ -879,7 +878,7 @@ wxString CWKSP_Grid::Get_Value(CSG_Point ptWorld, double Epsilon)
 	double		Value;
 	wxString	s;
 
-	if( Get_Grid()->Get_Value(ptWorld, Value, GRID_INTERPOLATION_NearestNeighbour) )
+	if( Get_Grid()->Get_Value(ptWorld, Value, GRID_RESAMPLING_NearestNeighbour) )
 	{
 		switch( m_pClassify->Get_Mode() )
 		{
@@ -972,52 +971,55 @@ bool CWKSP_Grid::Edit_On_Mouse_Up(CSG_Point Point, double ClientToWorld, int Key
 	{
 		g_pACTIVE->Get_Attributes()->Set_Attributes();
 
-		CSG_Rect	rWorld(m_Edit_Mouse_Down, Point);
-
-		m_xSel	= Get_Grid()->Get_System().Get_xWorld_to_Grid(rWorld.Get_XMin()); if( m_xSel < 0 ) m_xSel = 0;
-		int	nx	= Get_Grid()->Get_System().Get_xWorld_to_Grid(rWorld.Get_XMax()); if( nx >= Get_Grid()->Get_NX() ) nx = Get_Grid()->Get_NX() - 1;
-		nx	= 1 + nx - m_xSel;
-
-		m_ySel	= Get_Grid()->Get_System().Get_yWorld_to_Grid(rWorld.Get_YMin()); if( m_ySel < 0 ) m_ySel = 0;
-		int	ny	= Get_Grid()->Get_System().Get_yWorld_to_Grid(rWorld.Get_YMax()); if( ny >= Get_Grid()->Get_NY() ) ny = Get_Grid()->Get_NY() - 1;
-		ny	= 1 + ny - m_ySel;
-
 		m_Edit_Attributes.Destroy();
 
-		if( nx > 0 && ny > 0 )
+		CSG_Rect	rWorld(m_Edit_Mouse_Down, Point);
+
+		if( rWorld.Intersects(Get_Grid()->Get_Extent(true)) )
 		{
-			int	x, y, Maximum = g_pData->Get_Parameter("GRID_SELECT_MAX")->asInt();
+			m_xSel	= Get_Grid()->Get_System().Get_xWorld_to_Grid(rWorld.Get_XMin()); if( m_xSel < 0 ) m_xSel = 0;
+			int	nx	= Get_Grid()->Get_System().Get_xWorld_to_Grid(rWorld.Get_XMax()); if( nx >= Get_Grid()->Get_NX() ) nx = Get_Grid()->Get_NX() - 1;
+			nx	= 1 + nx - m_xSel;
 
-			if( nx > Maximum )
-			{
-				m_xSel	+= (nx - Maximum) / 2;
-				nx		= Maximum;
-			}
+			m_ySel	= Get_Grid()->Get_System().Get_yWorld_to_Grid(rWorld.Get_YMin()); if( m_ySel < 0 ) m_ySel = 0;
+			int	ny	= Get_Grid()->Get_System().Get_yWorld_to_Grid(rWorld.Get_YMax()); if( ny >= Get_Grid()->Get_NY() ) ny = Get_Grid()->Get_NY() - 1;
+			ny	= 1 + ny - m_ySel;
 
-			if( ny > Maximum )
+			if( nx > 0 && ny > 0 )
 			{
-				m_ySel	+= (ny - Maximum) / 2;
-				ny		= Maximum;
-			}
+				int	x, y, Maximum = g_pData->Get_Parameter("GRID_SELECT_MAX")->asInt();
 
-			for(x=0; x<nx; x++)
-			{
-				m_Edit_Attributes.Add_Field(CSG_String::Format(SG_T("%d"), x + 1), Get_Grid()->Get_Type());
-			}
+				if( nx > Maximum )
+				{
+					m_xSel	+= (nx - Maximum) / 2;
+					nx		= Maximum;
+				}
 
-			for(y=0; y<ny; y++)
-			{
-				CSG_Table_Record	*pRecord	= m_Edit_Attributes.Add_Record();
+				if( ny > Maximum )
+				{
+					m_ySel	+= (ny - Maximum) / 2;
+					ny		= Maximum;
+				}
 
 				for(x=0; x<nx; x++)
 				{
-					if( !Get_Grid()->is_NoData(m_xSel + x, m_ySel + ny - 1 - y) )
-					{
-						pRecord->Set_Value(x, Get_Grid()->asDouble(m_xSel + x, m_ySel + ny - 1 - y));
-					}
-					else
+					m_Edit_Attributes.Add_Field(CSG_String::Format(SG_T("%d"), x + 1), Get_Grid()->Get_Type());
+				}
+
+				for(y=0; y<ny; y++)
+				{
+					CSG_Table_Record	*pRecord	= m_Edit_Attributes.Add_Record();
+
+					for(x=0; x<nx; x++)
 					{
-						pRecord->Set_NoData(x);
+						if( !Get_Grid()->is_NoData(m_xSel + x, m_ySel + ny - 1 - y) )
+						{
+							pRecord->Set_Value(x, Get_Grid()->asDouble(m_xSel + x, m_ySel + ny - 1 - y));
+						}
+						else
+						{
+							pRecord->Set_NoData(x);
+						}
 					}
 				}
 			}
@@ -1400,54 +1402,71 @@ bool CWKSP_Grid::Get_Image_Legend(wxBitmap &BMP, double Zoom)
 //---------------------------------------------------------
 void CWKSP_Grid::On_Draw(CWKSP_Map_DC &dc_Map, int Flags)
 {
-	int		Interpolation;
+	if(	Get_Extent().Intersects(dc_Map.m_rWorld) == INTERSECTION_None )
+	{
+		return;
+	}
+
+	//-----------------------------------------------------
 	double	Transparency;
 
-	if(	Get_Extent().Intersects(dc_Map.m_rWorld) != INTERSECTION_None )
+	switch( m_pClassify->Get_Mode() )
 	{
-		switch( m_pClassify->Get_Mode() )
-		{
-		default:				Transparency	= m_Parameters("DISPLAY_TRANSPARENCY")->asDouble() / 100.0;	break;
-		case CLASSIFY_SHADE:	Transparency	= 2.0;	break;
-		case CLASSIFY_RGB:		Transparency	= m_Parameters("DISPLAY_TRANSPARENCY")->asDouble() / 100.0;	if( Transparency <= 0.0 )	Transparency	= 3.0;	break;
-		}
+	default            :	Transparency	= m_Parameters("DISPLAY_TRANSPARENCY")->asDouble() / 100.0;	break;
+	case CLASSIFY_RGB  :	Transparency	= m_Parameters("DISPLAY_TRANSPARENCY")->asDouble() / 100.0;	if( Transparency <= 0.0 )	Transparency	= 3.0;	break;
+	case CLASSIFY_SHADE:	Transparency	= 2.0;	break;
+	}
 
-		m_pClassify->Set_Shade_Mode(m_Parameters("SHADE_MODE")->asInt());
+	if( !dc_Map.IMG_Draw_Begin(Transparency) )
+	{
+		return;
+	}
 
-		if( dc_Map.IMG_Draw_Begin(Transparency) )
-		{
-			Interpolation	= m_pClassify->Get_Mode() == CLASSIFY_LUT
-							? GRID_INTERPOLATION_NearestNeighbour
-							: m_Parameters("DISPLAY_INTERPOLATION")->asInt();
+	//-----------------------------------------------------
+	TSG_Grid_Resampling	Resampling;
 
-			if(	dc_Map.m_DC2World >= Get_Grid()->Get_Cellsize()
-			||	Interpolation != GRID_INTERPOLATION_NearestNeighbour
-			||  m_Parameters("COLORS_TYPE" )->asInt() == CLASSIFY_OVERLAY )
-			{
-				_Draw_Grid_Points	(dc_Map, Interpolation);
-			}
-			else
-			{
-				_Draw_Grid_Cells	(dc_Map);
-			}
+	if( m_pClassify->Get_Mode() == CLASSIFY_LUT )
+	{
+		Resampling	= GRID_RESAMPLING_NearestNeighbour;
+	}
+	else switch( m_Parameters("DISPLAY_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;
+	}
 
-			dc_Map.IMG_Draw_End();
+	//-----------------------------------------------------
+	m_pClassify->Set_Shade_Mode(m_Parameters("SHADE_MODE")->asInt());
 
-			if( (Flags & LAYER_DRAW_FLAG_NOLABELS) == 0 )
-			{
-				_Draw_Values(dc_Map);
-			}
+	if(	dc_Map.m_DC2World >= Get_Grid()->Get_Cellsize()
+	||	Resampling != GRID_RESAMPLING_NearestNeighbour
+	||  m_Parameters("COLORS_TYPE")->asInt() == CLASSIFY_OVERLAY )
+	{
+		_Draw_Grid_Points	(dc_Map, Resampling);
+	}
+	else
+	{
+		_Draw_Grid_Cells	(dc_Map);
+	}
 
-			if( (Flags & LAYER_DRAW_FLAG_NOEDITS) == 0 )
-			{
-				_Draw_Edit(dc_Map);
-			}
-		}
+	//-----------------------------------------------------
+	dc_Map.IMG_Draw_End();
+
+	if( (Flags & LAYER_DRAW_FLAG_NOLABELS) == 0 )
+	{
+		_Draw_Values(dc_Map);
+	}
+
+	if( (Flags & LAYER_DRAW_FLAG_NOEDITS) == 0 )
+	{
+		_Draw_Edit(dc_Map);
 	}
 }
 
 //---------------------------------------------------------
-void CWKSP_Grid::_Draw_Grid_Points(CWKSP_Map_DC &dc_Map, int Interpolation)
+void CWKSP_Grid::_Draw_Grid_Points(CWKSP_Map_DC &dc_Map, TSG_Grid_Resampling Resampling)
 {
 	int	Mode	= m_Parameters("COLORS_TYPE" )->asInt() == CLASSIFY_OVERLAY
 				? m_Parameters("OVERLAY_MODE")->asInt()
@@ -1485,7 +1504,7 @@ void CWKSP_Grid::_Draw_Grid_Points(CWKSP_Map_DC &dc_Map, int Interpolation)
 	{
 		for(int iyDC=0; iyDC<=nyDC; iyDC++)
 		{
-			_Draw_Grid_Line(dc_Map, Interpolation, Mode, pOverlay, ayDC - iyDC, axDC, bxDC);
+			_Draw_Grid_Line(dc_Map, Resampling, Mode, pOverlay, ayDC - iyDC, axDC, bxDC);
 		}
 	}
 	else
@@ -1493,13 +1512,13 @@ void CWKSP_Grid::_Draw_Grid_Points(CWKSP_Map_DC &dc_Map, int Interpolation)
 		#pragma omp parallel for
 		for(int iyDC=0; iyDC<=nyDC; iyDC++)
 		{
-			_Draw_Grid_Line(dc_Map, Interpolation, Mode, pOverlay, ayDC - iyDC, axDC, bxDC);
+			_Draw_Grid_Line(dc_Map, Resampling, Mode, pOverlay, ayDC - iyDC, axDC, bxDC);
 		}
 	}
 }
 
 //---------------------------------------------------------
-void CWKSP_Grid::_Draw_Grid_Line(CWKSP_Map_DC &dc_Map, int Interpolation, int Mode, CWKSP_Grid *pOverlay[2], int yDC, int axDC, int bxDC)
+void CWKSP_Grid::_Draw_Grid_Line(CWKSP_Map_DC &dc_Map, TSG_Grid_Resampling Resampling, int Mode, CWKSP_Grid *pOverlay[2], int yDC, int axDC, int bxDC)
 {
 	double	xMap	= dc_Map.xDC2World(axDC);
 	double	yMap	= dc_Map.yDC2World( yDC);
@@ -1508,7 +1527,7 @@ void CWKSP_Grid::_Draw_Grid_Line(CWKSP_Map_DC &dc_Map, int Interpolation, int Mo
 	{
 		double	Value;
 
-		if( Get_Grid()->Get_Value(xMap, yMap, Value, Interpolation, Mode == -2, true) )
+		if( Get_Grid()->Get_Value(xMap, yMap, Value, Resampling, Mode == -2, true) )
 		{
 			if( Mode < 0 )
 			{
@@ -1525,10 +1544,10 @@ void CWKSP_Grid::_Draw_Grid_Line(CWKSP_Map_DC &dc_Map, int Interpolation, int Mo
 
 				c[0]	= (int)(255.0 * m_pClassify->Get_MetricToRelative(Value));
 
-				c[1]	= pOverlay[0] && pOverlay[0]->Get_Grid()->Get_Value(xMap, yMap, Value, Interpolation, false, true)
+				c[1]	= pOverlay[0] && pOverlay[0]->Get_Grid()->Get_Value(xMap, yMap, Value, Resampling, false, true)
 						? (int)(255.0 * pOverlay[0]->m_pClassify->Get_MetricToRelative(Value)) : 255;
 
-				c[2]	= pOverlay[1] && pOverlay[1]->Get_Grid()->Get_Value(xMap, yMap, Value, Interpolation, false, true)
+				c[2]	= pOverlay[1] && pOverlay[1]->Get_Grid()->Get_Value(xMap, yMap, Value, Resampling, false, true)
 						? (int)(255.0 * pOverlay[1]->m_pClassify->Get_MetricToRelative(Value)) : 255;
 
 				if( c[0] < 0 ) c[0] = 0; else if( c[0] > 255 ) c[0] = 255;
diff --git a/src/saga_core/saga_gui/wksp_grid.h b/src/saga_core/saga_gui/wksp_grid.h
old mode 100644
new mode 100755
index 55b9f1d..962c7ed
--- a/src/saga_core/saga_gui/wksp_grid.h
+++ b/src/saga_core/saga_gui/wksp_grid.h
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: wksp_grid.h 2716 2015-12-04 11:55:42Z oconrad $
+ * Version $Id: wksp_grid.h 2752 2016-01-15 15:26:55Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -141,8 +141,8 @@ private:
 
 	void						_Save_Image				(void);
 
-	void						_Draw_Grid_Points		(CWKSP_Map_DC &dc_Map, int Interpolation);
-	void						_Draw_Grid_Line			(CWKSP_Map_DC &dc_Map, int Interpolation, int Mode, CWKSP_Grid *pOverlay[2], int yDC, int axDC, int bxDC);
+	void						_Draw_Grid_Points		(CWKSP_Map_DC &dc_Map, TSG_Grid_Resampling Resampling);
+	void						_Draw_Grid_Line			(CWKSP_Map_DC &dc_Map, TSG_Grid_Resampling Resampling, int Mode, CWKSP_Grid *pOverlay[2], int yDC, int axDC, int bxDC);
 	void						_Draw_Grid_Cells		(CWKSP_Map_DC &dc_Map);
 
 	void						_Draw_Values			(CWKSP_Map_DC &dc_Map);
diff --git a/src/saga_core/saga_gui/wksp_grid_manager.cpp b/src/saga_core/saga_gui/wksp_grid_manager.cpp
old mode 100644
new mode 100755
index 2dd118c..e4f4e77
--- a/src/saga_core/saga_gui/wksp_grid_manager.cpp
+++ b/src/saga_core/saga_gui/wksp_grid_manager.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: wksp_grid_manager.cpp 1921 2014-01-09 10:24:11Z oconrad $
+ * Version $Id: wksp_grid_manager.cpp 2791 2016-02-16 16:48:55Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -65,6 +65,8 @@
 
 #include "res_commands.h"
 
+#include "helper.h"
+
 #include "wksp_data_manager.h"
 
 #include "wksp_map_manager.h"
@@ -102,7 +104,15 @@ wxString CWKSP_Grid_Manager::Get_Description(void)
 {
 	wxString	s;
 
-	s.Printf(wxT("<b>%s</b><br>%d %s"), _TL("Grids"), Get_Count(), Get_Count() == 1 ? _TL("grid system") : _TL("grid systems"));
+	//-----------------------------------------------------
+	s	+= wxString::Format("<h4>%s</h4>", _TL("Grids"));
+
+	s	+= "<table border=\"0\">";
+
+	DESC_ADD_INT(_TL("Grid Systems"), Get_Count      ());
+	DESC_ADD_INT(_TL("Grids"       ), Get_Items_Count());
+
+	s	+= wxT("</table>");
 
 	return( s );
 }
diff --git a/src/saga_core/saga_gui/wksp_grid_manager.h b/src/saga_core/saga_gui/wksp_grid_manager.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/wksp_grid_system.cpp b/src/saga_core/saga_gui/wksp_grid_system.cpp
old mode 100644
new mode 100755
index 95ff115..d04a120
--- a/src/saga_core/saga_gui/wksp_grid_system.cpp
+++ b/src/saga_core/saga_gui/wksp_grid_system.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: wksp_grid_system.cpp 1921 2014-01-09 10:24:11Z oconrad $
+ * Version $Id: wksp_grid_system.cpp 2772 2016-02-05 15:25:43Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -106,9 +106,9 @@ wxString CWKSP_Grid_System::Get_Description(void)
 	wxString	s;
 
 	//-----------------------------------------------------
-	s	+= wxString::Format(wxT("<b>%s</b>"), _TL("Grid System"));
+	s	+= wxString::Format("<h4>%s</h4>", _TL("Grid System"));
 
-	s	+= wxT("<table border=\"0\">");
+	s	+= "<table border=\"0\">";
 
 	DESC_ADD_STR (_TL("Name")				, Get_Name());
 	DESC_ADD_INT (_TL("Number of Grids")	, Get_Count());
diff --git a/src/saga_core/saga_gui/wksp_grid_system.h b/src/saga_core/saga_gui/wksp_grid_system.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/wksp_layer.cpp b/src/saga_core/saga_gui/wksp_layer.cpp
old mode 100644
new mode 100755
index cb8785b..c01ae17
--- a/src/saga_core/saga_gui/wksp_layer.cpp
+++ b/src/saga_core/saga_gui/wksp_layer.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: wksp_layer.cpp 2700 2015-11-24 17:18:29Z oconrad $
+ * Version $Id: wksp_layer.cpp 2796 2016-02-17 17:49:32Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -403,14 +403,6 @@ int CWKSP_Layer::On_Parameter_Changed(CSG_Parameters *pParameters, CSG_Parameter
 //---------------------------------------------------------
 void CWKSP_Layer::On_Parameters_Changed(void)
 {
-	m_pObject->Set_Name       (m_Parameters("OBJECT_NAME")->asString());
-	m_pObject->Set_Description(m_Parameters("OBJECT_DESC")->asString());
-
-	m_pObject->Set_NoData_Value_Range(
-		m_Parameters("GENERAL_NODATA")->asRange()->Get_LoVal(),
-		m_Parameters("GENERAL_NODATA")->asRange()->Get_HiVal()
-	);
-
 	//-----------------------------------------------------
 	m_pClassify->Initialise(this, m_Parameters("LUT")->asTable(), m_Parameters("METRIC_COLORS")->asColors());
 
diff --git a/src/saga_core/saga_gui/wksp_layer.h b/src/saga_core/saga_gui/wksp_layer.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/wksp_layer_classify.cpp b/src/saga_core/saga_gui/wksp_layer_classify.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/wksp_layer_classify.h b/src/saga_core/saga_gui/wksp_layer_classify.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/wksp_layer_legend.cpp b/src/saga_core/saga_gui/wksp_layer_legend.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/wksp_layer_legend.h b/src/saga_core/saga_gui/wksp_layer_legend.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/wksp_map.cpp b/src/saga_core/saga_gui/wksp_map.cpp
old mode 100644
new mode 100755
index fa70cbf..fbf1bec
--- a/src/saga_core/saga_gui/wksp_map.cpp
+++ b/src/saga_core/saga_gui/wksp_map.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: wksp_map.cpp 2681 2015-11-06 12:31:05Z oconrad $
+ * Version $Id: wksp_map.cpp 2793 2016-02-16 16:51:24Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -81,6 +81,7 @@
 #include "wksp_map.h"
 #include "wksp_map_layer.h"
 #include "wksp_map_graticule.h"
+#include "wksp_map_basemap.h"
 #include "wksp_map_buttons.h"
 
 #include "wksp_layer_legend.h"
@@ -232,18 +233,18 @@ wxString CWKSP_Map::Get_Description(void)
 {
 	wxString	s;
 
-	s	+= wxString::Format("<b>%s</b>", _TL("Map"));
+	//-----------------------------------------------------
+	s	+= wxString::Format("<h4>%s</h4>", _TL("Map"));
 
 	s	+= "<table border=\"0\">";
 
-	s	+= wxString::Format("<tr><td>%s</td><td>%s</td></tr>", _TL("Name")  , m_Name.c_str());
-
-	s	+= wxString::Format("<tr><td>%s</td><td>%d</td></tr>", _TL("Layers"), Get_Count());
-
-	s	+= wxString::Format("<tr><td>%s</td><td>%s</td></tr>", _TL("Coordinate System"), m_Projection.Get_Description().c_str());
+	DESC_ADD_STR(_TL("Name"             ), m_Name.c_str());
+	DESC_ADD_INT(_TL("Layers"           ), Get_Count());
+	DESC_ADD_STR(_TL("Coordinate System"), m_Projection.Get_Description().c_str());
 
 	s	+= "</table>";
 
+	//-----------------------------------------------------
 	return( s );
 }
 
@@ -259,8 +260,11 @@ wxMenu * CWKSP_Map::Get_Menu(void)
 	pMenu->AppendSeparator();
 	CMD_Menu_Add_Item(pMenu,  true, ID_CMD_MAPS_3D_SHOW);
 	CMD_Menu_Add_Item(pMenu,  true, ID_CMD_MAPS_LAYOUT_SHOW);
+	pMenu->AppendSeparator();
 	CMD_Menu_Add_Item(pMenu,  true, ID_CMD_MAPS_SCALEBAR);
+//	CMD_Menu_Add_Item(pMenu,  true, ID_CMD_MAP_NORTH_ARROW);
 	CMD_Menu_Add_Item(pMenu, false, ID_CMD_MAPS_GRATICULE_ADD);
+	CMD_Menu_Add_Item(pMenu, false, ID_CMD_MAPS_BASEMAP_ADD);
 	CMD_Menu_Add_Item(pMenu,  true, ID_CMD_MAPS_SYNCHRONIZE);
 	CMD_Menu_Add_Item(pMenu, false, ID_CMD_MAPS_PROJECTION);
 	pMenu->AppendSeparator();
@@ -319,6 +323,10 @@ bool CWKSP_Map::On_Command(int Cmd_ID)
 		Add_Graticule();
 		break;
 
+	case ID_CMD_MAPS_BASEMAP_ADD:
+		Add_BaseMap();
+		break;
+
 	case ID_CMD_MAPS_PROJECTION:
 		Set_Projection();
 		break;
@@ -368,6 +376,7 @@ bool CWKSP_Map::On_Command_UI(wxUpdateUIEvent &event)
 		break;
 
 	case ID_CMD_MAPS_GRATICULE_ADD:
+	case ID_CMD_MAPS_BASEMAP_ADD:
 		event.Enable(Get_Count() > 0 && m_Projection.is_Okay());
 		break;
 	}
@@ -806,6 +815,27 @@ CWKSP_Map_Graticule * CWKSP_Map::Add_Graticule(CSG_MetaData *pEntry)
 }
 
 //---------------------------------------------------------
+class CWKSP_Map_BaseMap * CWKSP_Map::Add_BaseMap(CSG_MetaData *pEntry)
+{
+	CWKSP_Map_BaseMap	*pItem;
+
+	if( (Get_Count() > 0 && m_Projection.is_Okay()) || pEntry )
+	{
+		g_pMaps->Add(this);
+
+		Add_Item(pItem = new CWKSP_Map_BaseMap(pEntry));
+
+		Move_Top(pItem);
+
+		View_Refresh(true);
+
+		return( pItem );
+	}
+
+	return( NULL );
+}
+
+//---------------------------------------------------------
 CWKSP_Base_Item * CWKSP_Map::Add_Copy(CWKSP_Base_Item *pItem)
 {
 	if( pItem )
@@ -817,11 +847,20 @@ CWKSP_Base_Item * CWKSP_Map::Add_Copy(CWKSP_Base_Item *pItem)
 
 		if( pItem->Get_Type() == WKSP_ITEM_Map_Graticule )
 		{
-			CWKSP_Map_Graticule	*pGraticule	= Add_Graticule();
+			CWKSP_Map_Graticule	*pItem	= Add_Graticule();
+
+			pItem->Get_Parameters()->Assign_Values(pItem->Get_Parameters());
+
+			return( pItem );
+		}
+
+		if( pItem->Get_Type() == WKSP_ITEM_Map_BaseMap )
+		{
+			CWKSP_Map_BaseMap	*pItem	= Add_BaseMap();
 
-			pGraticule->Get_Parameters()->Assign_Values(pItem->Get_Parameters());
+			pItem->Get_Parameters()->Assign_Values(pItem->Get_Parameters());
 
-			return( pGraticule );
+			return( pItem );
 		}
 	}
 
@@ -1409,9 +1448,15 @@ void CWKSP_Map::SaveAs_Image_To_KMZ(int nx, int ny)
 
 	if( !FileName.IsOk() )
 	{
-		DLG_Message_Show_Error(_TL("invalid file name"), _TL("Save Map to KMZ"));
+		FileName.AssignTempFileName("saga_map");
+		FileName.SetExt("kmz");
 
-		return;
+		if( !FileName.IsOk() )
+		{
+			DLG_Message_Show_Error(_TL("invalid file name"), _TL("Save Map to KMZ"));
+
+			return;
+		}
 	}
 
 	//-----------------------------------------------------
@@ -1452,8 +1497,6 @@ void CWKSP_Map::SaveAs_Image_To_KMZ(int nx, int ny)
 
 	if( bResult && P("LOAD")->asBool() )
 	{
-		FileName.SetExt("kmz");
-
 		Open_Application(FileName.GetFullPath());
 	}
 }
@@ -1772,6 +1815,17 @@ void CWKSP_Map::Draw_Map(wxDC &dc, const CSG_Rect &rWorld, double Zoom, const wx
 			}
 			break;
 
+		case WKSP_ITEM_Map_BaseMap:
+			{
+				CWKSP_Map_BaseMap	*pLayer	= (CWKSP_Map_BaseMap *)Get_Item(i);
+
+				if( pLayer->do_Show() )//&& pLayer->Get_Graticule(Get_Extent()) )
+				{
+					pLayer->Draw(dc_Map);
+				}
+			}
+			break;
+
 		default:
 			break;
 		}
diff --git a/src/saga_core/saga_gui/wksp_map.h b/src/saga_core/saga_gui/wksp_map.h
old mode 100644
new mode 100755
index 9082770..5955521
--- a/src/saga_core/saga_gui/wksp_map.h
+++ b/src/saga_core/saga_gui/wksp_map.h
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: wksp_map.h 2681 2015-11-06 12:31:05Z oconrad $
+ * Version $Id: wksp_map.h 2793 2016-02-16 16:51:24Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -158,6 +158,7 @@ public:
 	class CWKSP_Map_Layer *		Find_Layer				(class CWKSP_Layer *pLayer);
 	class CWKSP_Map_Layer *		Add_Layer				(class CWKSP_Layer *pLayer);
 	class CWKSP_Map_Graticule *	Add_Graticule			(CSG_MetaData *pEntry = NULL);
+	class CWKSP_Map_BaseMap *	Add_BaseMap				(CSG_MetaData *pEntry = NULL);
 	class CWKSP_Base_Item *		Add_Copy				(CWKSP_Base_Item *pItem);
 
     bool                        View_Opened             (class wxMDIChildFrame *pView);
diff --git a/src/saga_core/saga_gui/wksp_map_layer.cpp b/src/saga_core/saga_gui/wksp_map_basemap.cpp
old mode 100644
new mode 100755
similarity index 52%
copy from src/saga_core/saga_gui/wksp_map_layer.cpp
copy to src/saga_core/saga_gui/wksp_map_basemap.cpp
index 11fbf6f..fed8d1d
--- a/src/saga_core/saga_gui/wksp_map_layer.cpp
+++ b/src/saga_core/saga_gui/wksp_map_basemap.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: wksp_map_layer.cpp 2547 2015-08-10 13:53:29Z oconrad $
+ * Version $Id: wksp_map_basemap.cpp 1921 2014-01-09 10:24:11Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -14,9 +14,9 @@
 //                                                       //
 //-------------------------------------------------------//
 //                                                       //
-//                  WKSP_Map_Layer.cpp                   //
+//                  wksp_map_basemap.cpp                 //
 //                                                       //
-//          Copyright (C) 2005 by Olaf Conrad            //
+//          Copyright (C) 2016 by Olaf Conrad            //
 //                                                       //
 //-------------------------------------------------------//
 //                                                       //
@@ -42,9 +42,7 @@
 //                                                       //
 //    contact:    Olaf Conrad                            //
 //                Institute of Geography                 //
-//                University of Goettingen               //
-//                Goldschmidtstr. 5                      //
-//                37077 Goettingen                       //
+//                University of Hamburg                  //
 //                Germany                                //
 //                                                       //
 //    e-mail:     oconrad at saga-gis.org                   //
@@ -65,15 +63,14 @@
 
 #include <saga_api/saga_api.h>
 
+#include "helper.h"
+#include "dc_helper.h"
+
 #include "res_commands.h"
 
-#include "wksp_data_manager.h"
-#include "wksp_layer.h"
-#include "wksp_layer_classify.h"
 #include "wksp_map.h"
-#include "wksp_map_layer.h"
-
-#include "wksp_grid.h"
+#include "wksp_map_basemap.h"
+#include "wksp_map_dc.h"
 
 
 ///////////////////////////////////////////////////////////
@@ -83,40 +80,131 @@
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
-CWKSP_Map_Layer::CWKSP_Map_Layer(CWKSP_Layer *pLayer)
+CWKSP_Map_BaseMap::CWKSP_Map_BaseMap(CSG_MetaData *pEntry)
 {
-	m_pLayer		= pLayer;
+	m_bShow		= true;
+
+	//-----------------------------------------------------
+	CSG_Parameter	*pNode, *pNode_1;
+
+	m_Parameters.Set_Name      ("BASEMAP");
+	m_Parameters.Set_Identifier("BASEMAP");
+
+	//-----------------------------------------------------
+	pNode	= m_Parameters.Add_Node(NULL, "NODE_GENERAL"	,_TL("General")	, _TL(""));
+
+	m_Parameters.Add_String(
+		pNode	, "NAME"		, _TL("Name"),
+		_TL(""),
+		_TL("Base Map")
+	);
+
+	m_Parameters.Add_Choice(
+		pNode	, "SERVER"		, _TL("Server"),
+		_TL(""),
+		CSG_String::Format("%s|%s|",
+			_TL("Open Street Map"),
+			_TL("MapQuest")
+		), 0
+	);
+
+	//-----------------------------------------------------
+	pNode_1	= m_Parameters.Add_Value(
+		pNode	, "SHOW_ALWAYS"	, _TL("Show at all scales"),
+		_TL(""),
+		PARAMETER_TYPE_Bool, true
+	);
+
+	m_Parameters.Add_Range(
+		pNode_1	, "SHOW_RANGE"	, _TL("Scale Range"),
+		_TL("only show within scale range; values are given as extent measured in map units"),
+		100.0, 1000.0, 0.0, true
+	);
+
+	//-----------------------------------------------------
+	pNode	= m_Parameters.Add_Node(NULL, "NODE_DISPLAY"	,_TL("Display")	, _TL(""));
+
+	m_Parameters.Add_Value(
+		pNode	, "TRANSPARENCY", _TL("Transparency [%]"),
+		_TL(""),
+		PARAMETER_TYPE_Double, 0.0, 0.0, true, 100.0, true
+	);
+
+	m_Parameters.Add_Value(
+		pNode	, "GRAYSCALE"	, _TL("Gray Scale Image"),
+		_TL(""),
+		PARAMETER_TYPE_Bool, false
+	);
+
+	//-----------------------------------------------------
+	if( pEntry )
+	{
+		Load(*pEntry);
+	}
+}
+
+//---------------------------------------------------------
+CWKSP_Map_BaseMap::~CWKSP_Map_BaseMap(void)
+{}
+
 
-	m_bShow			= true;
+///////////////////////////////////////////////////////////
+//														 //
+///////////////////////////////////////////////////////////
 
-	m_bFitColors	= false;
+//---------------------------------------------------------
+bool CWKSP_Map_BaseMap::Load(CSG_MetaData &Entry)
+{
+	return( m_Parameters.Serialize(Entry, false) );
+}
+
+//---------------------------------------------------------
+bool CWKSP_Map_BaseMap::Save(CSG_MetaData &Entry)
+{
+	return( m_Parameters.Serialize(*Entry.Add_Child("BASEMAP"), true) );
 }
 
 
 ///////////////////////////////////////////////////////////
 //														 //
-//														 //
-//														 //
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
-wxString CWKSP_Map_Layer::Get_Name(void)
+wxString CWKSP_Map_BaseMap::Get_Name(void)
 {
-	return( m_bShow ? m_pLayer->Get_Name() : wxString::Format(wxT("[%s]"), m_pLayer->Get_Name().c_str()) );
+	wxString	Name(m_Parameters("NAME")->asString());
+
+	if( !m_bShow )
+	{
+		return( "[" + Name + "]" );
+	}
+
+	return( Name );
 }
 
 //---------------------------------------------------------
-wxString CWKSP_Map_Layer::Get_Description(void)
+wxString CWKSP_Map_BaseMap::Get_Description(void)
 {
-	return( m_pLayer->Get_Description() );
+	wxString	s;
+
+	//-----------------------------------------------------
+	s	+= wxString::Format("<h4>%s</h4>", _TL("Base Map"));
+
+	s	+= "<table border=\"0\">";
+
+	DESC_ADD_STR(_TL("Name"      ), m_Parameters("NAME")->asString());
+	DESC_ADD_STR(_TL("Projection"), Get_Map()->Get_Projection().Get_Description().c_str());
+
+	s	+= wxT("</table>");
+
+	//-----------------------------------------------------
+	return( s );
 }
 
 //---------------------------------------------------------
-wxMenu * CWKSP_Map_Layer::Get_Menu(void)
+wxMenu * CWKSP_Map_BaseMap::Get_Menu(void)
 {
-	wxMenu	*pMenu, *pMenu_Edit;
-
-	pMenu	= new wxMenu(m_pLayer->Get_Name());
+	wxMenu	*pMenu	= new wxMenu(m_Parameters("NAME")->asString());
 
 	CMD_Menu_Add_Item(pMenu, false, ID_CMD_WKSP_ITEM_CLOSE);
 	CMD_Menu_Add_Item(pMenu,  true, ID_CMD_MAPS_LAYER_SHOW);
@@ -126,51 +214,22 @@ wxMenu * CWKSP_Map_Layer::Get_Menu(void)
 	CMD_Menu_Add_Item(pMenu, false, ID_CMD_MAPS_MOVE_DOWN);
 	CMD_Menu_Add_Item(pMenu, false, ID_CMD_MAPS_MOVE_BOTTOM);
 
-	switch( m_pLayer->Get_Type() )
-	{
-	default:
-		break;
-
-	case WKSP_ITEM_Grid:
-		pMenu->AppendSeparator();
-		CMD_Menu_Add_Item(pMenu, true, ID_CMD_MAPS_GRID_FITCOLORS);
-		break;
-	}
-
-	if( (pMenu_Edit = m_pLayer->Edit_Get_Menu()) != NULL )
-	{
-		pMenu->AppendSeparator();
-		pMenu->Append(ID_CMD_WKSP_FIRST, _TL("Edit"), pMenu_Edit);
-	}
-
 	return( pMenu );
 }
 
 
 ///////////////////////////////////////////////////////////
 //														 //
-//														 //
-//														 //
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
-bool CWKSP_Map_Layer::On_Command(int Cmd_ID)
+bool CWKSP_Map_BaseMap::On_Command(int Cmd_ID)
 {
 	switch( Cmd_ID )
 	{
 	default:
 		return( CWKSP_Base_Item::On_Command(Cmd_ID) );
 
-	case ID_CMD_SHAPES_EDIT_SHAPE:
-	case ID_CMD_SHAPES_EDIT_ADD_SHAPE:
-	case ID_CMD_SHAPES_EDIT_DEL_SHAPE:
-	case ID_CMD_SHAPES_EDIT_ADD_PART:
-	case ID_CMD_SHAPES_EDIT_DEL_PART:
-	case ID_CMD_SHAPES_EDIT_DEL_POINT:
-	case ID_CMD_SHAPES_EDIT_SEL_CLEAR:
-	case ID_CMD_SHAPES_EDIT_SEL_INVERT:
-		return( m_pLayer->On_Command(Cmd_ID) );
-
 	case ID_CMD_WKSP_ITEM_RETURN:
 	case ID_CMD_MAPS_LAYER_SHOW:
 		m_bShow	= !m_bShow;
@@ -197,36 +256,19 @@ bool CWKSP_Map_Layer::On_Command(int Cmd_ID)
 		if( Get_Manager()->Move_Down(this) )
 			((CWKSP_Map *)Get_Manager())->View_Refresh(false);
 		break;
-
-	case ID_CMD_MAPS_GRID_FITCOLORS:
-		if( (m_bFitColors = !m_bFitColors) == true )
-		{
-			Fit_Colors(((CWKSP_Map *)Get_Manager())->Get_Extent());
-		}
-		break;
 	}
 
 	return( true );
 }
 
 //---------------------------------------------------------
-bool CWKSP_Map_Layer::On_Command_UI(wxUpdateUIEvent &event)
+bool CWKSP_Map_BaseMap::On_Command_UI(wxUpdateUIEvent &event)
 {
 	switch( event.GetId() )
 	{
 	default:
 		return( CWKSP_Base_Item::On_Command_UI(event) );
 
-	case ID_CMD_SHAPES_EDIT_SHAPE:
-	case ID_CMD_SHAPES_EDIT_ADD_SHAPE:
-	case ID_CMD_SHAPES_EDIT_DEL_SHAPE:
-	case ID_CMD_SHAPES_EDIT_ADD_PART:
-	case ID_CMD_SHAPES_EDIT_DEL_PART:
-	case ID_CMD_SHAPES_EDIT_DEL_POINT:
-	case ID_CMD_SHAPES_EDIT_SEL_CLEAR:
-	case ID_CMD_SHAPES_EDIT_SEL_INVERT:
-		return( m_pLayer->On_Command_UI(event) );
-
 	case ID_CMD_MAPS_LAYER_SHOW:
 		event.Check(m_bShow);
 		break;
@@ -240,10 +282,6 @@ bool CWKSP_Map_Layer::On_Command_UI(wxUpdateUIEvent &event)
 	case ID_CMD_MAPS_MOVE_BOTTOM:
 		event.Enable(Get_Index() < Get_Manager()->Get_Count() - 1);
 		break;
-
-	case ID_CMD_MAPS_GRID_FITCOLORS:
-		event.Check(m_bFitColors);
-		break;
 	}
 
 	return( true );
@@ -252,59 +290,116 @@ bool CWKSP_Map_Layer::On_Command_UI(wxUpdateUIEvent &event)
 
 ///////////////////////////////////////////////////////////
 //														 //
-//														 //
-//														 //
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
-CSG_Parameters * CWKSP_Map_Layer::Get_Parameters(void)
+int CWKSP_Map_BaseMap::On_Parameter_Changed(CSG_Parameters *pParameters, CSG_Parameter *pParameter, int Flags)
 {
-	return( m_pLayer->Get_Parameters() );
+	if( Flags & PARAMETER_CHECK_ENABLE )
+	{
+		if(	!SG_STR_CMP(pParameter->Get_Identifier(), "INTERVAL") )
+		{
+			pParameters->Set_Enabled("FIXED", pParameter->asInt() == 0);
+		}
+	}
+
+	return( CWKSP_Base_Item::On_Parameter_Changed(pParameters, pParameter, Flags) );
 }
 
 //---------------------------------------------------------
-void CWKSP_Map_Layer::Parameters_Changed(void)
+void CWKSP_Map_BaseMap::Parameters_Changed(void)
 {
-	m_pLayer->Parameters_Changed();
-
 	CWKSP_Base_Item::Parameters_Changed();
+
+	m_BaseMap.Destroy();	// forcing a base map refresh
+
+	Get_Map()->View_Refresh(true);
 }
 
 
 ///////////////////////////////////////////////////////////
 //														 //
-//														 //
-//														 //
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
-#define	FIT_OVERLAY_GRID_COLORS(band, extent)	{\
-	CWKSP_Grid	*pGrid	= (CWKSP_Grid *)g_pData->Get(m_pLayer->Get_Parameter(band)->asGrid());\
-	if( pGrid && m_pLayer->Get_Parameter(band)->is_Enabled() )\
-	{	pGrid->Fit_Color_Range(extent);	}\
+bool CWKSP_Map_BaseMap::Set_BaseMap(const CSG_Grid_System &System)
+{
+	m_BaseMap.Destroy();
+
+	CSG_Module	*pModule	= SG_Get_Module_Library_Manager().Get_Module("io_gdal", 9);
+
+	if(	pModule && Get_Map()->Get_Projection().is_Okay() )
+	{
+		SG_UI_Msg_Lock     (true);
+		SG_UI_Progress_Lock(true);
+
+		m_BaseMap.Create(System, SG_DATATYPE_Int);
+		m_BaseMap.Get_Projection()	= Get_Map()->Get_Projection();
+
+		pModule->Settings_Push();
+
+		if( pModule->Set_Parameter("TARGET"    , &m_BaseMap)
+		&&  pModule->Set_Parameter("TARGET_MAP", &m_BaseMap)
+		&&  pModule->Set_Parameter("SERVER"    , m_Parameters("SERVER"   ))
+		&&  pModule->Set_Parameter("GRAYSCALE" , m_Parameters("GRAYSCALE"))
+		&&  pModule->On_Before_Execution() && pModule->Execute() )
+		{
+		}
+		else
+		{
+			m_BaseMap.Destroy();
+		}
+
+		pModule->Settings_Pop();
+
+		SG_UI_Msg_Lock     (false);
+		SG_UI_Progress_Lock(false);
+	}
+
+	return( m_BaseMap.is_Valid() );
 }
 
+
+///////////////////////////////////////////////////////////
+//														 //
+///////////////////////////////////////////////////////////
+
 //---------------------------------------------------------
-bool CWKSP_Map_Layer::Fit_Colors(const CSG_Rect &rWorld)
+bool CWKSP_Map_BaseMap::Draw(CWKSP_Map_DC &dc_Map)
 {
-	if( m_bFitColors )
+	if( !m_Parameters("SHOW_ALWAYS")->asBool() )
 	{
-		if( m_pLayer->Get_Type() == WKSP_ITEM_Grid )
+		CSG_Parameter_Range	*pRange	= m_Parameters("SHOW_RANGE")->asRange();
+		double	dRange	= dc_Map.m_rWorld.Get_XRange() > dc_Map.m_rWorld.Get_YRange() ? dc_Map.m_rWorld.Get_XRange() : dc_Map.m_rWorld.Get_YRange();
+
+		if( dRange < pRange->Get_LoVal() || pRange->Get_HiVal() < dRange )
 		{
-			((CWKSP_Grid *)m_pLayer)->Fit_Color_Range(rWorld);
+			return( false );
+		}
+	}
 
-			if( m_pLayer->Get_Parameter("COLORS_TYPE")->asInt() == CLASSIFY_OVERLAY )
-			{
-				FIT_OVERLAY_GRID_COLORS("OVERLAY_R", rWorld);
-				FIT_OVERLAY_GRID_COLORS("OVERLAY_G", rWorld);
-				FIT_OVERLAY_GRID_COLORS("OVERLAY_B", rWorld);
-			}
+	//-----------------------------------------------------
+	CSG_Grid_System	System(dc_Map.m_DC2World, dc_Map.m_rWorld.Get_XMin(), dc_Map.m_rWorld.Get_YMin(), dc_Map.m_rDC.GetWidth(), dc_Map.m_rDC.GetHeight());
 
-			return( true );
+	if( !System.is_Equal(m_BaseMap.Get_System()) && !Set_BaseMap(System) )
+	{
+		return( false );
+	}
+
+	//-----------------------------------------------------
+	if( dc_Map.IMG_Draw_Begin(m_Parameters("TRANSPARENCY")->asDouble() / 100.0) )
+	{
+		#pragma omp parallel for
+		for(int y=0; y<m_BaseMap.Get_NY(); y++)	for(int x=0, yy=m_BaseMap.Get_NY()-y-1; x<m_BaseMap.Get_NX(); x++)
+		{
+			dc_Map.IMG_Set_Pixel(x, y, m_BaseMap.asInt(x, yy));
 		}
+
+		dc_Map.IMG_Draw_End();
 	}
 
-	return( false );
+	//-----------------------------------------------------
+	return( true );
 }
 
 
diff --git a/src/saga_core/saga_gui/wksp_map_graticule.h b/src/saga_core/saga_gui/wksp_map_basemap.h
old mode 100644
new mode 100755
similarity index 89%
copy from src/saga_core/saga_gui/wksp_map_graticule.h
copy to src/saga_core/saga_gui/wksp_map_basemap.h
index 3702993..76f5b2e
--- a/src/saga_core/saga_gui/wksp_map_graticule.h
+++ b/src/saga_core/saga_gui/wksp_map_basemap.h
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: wksp_map_graticule.h 1921 2014-01-09 10:24:11Z oconrad $
+ * Version $Id: wksp_map_basemap.h 1921 2014-01-09 10:24:11Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -14,7 +14,7 @@
 //                                                       //
 //-------------------------------------------------------//
 //                                                       //
-//                 wksp_map_graticule.h                  //
+//                 wksp_map_basemap.h                  //
 //                                                       //
 //          Copyright (C) 2014 by Olaf Conrad            //
 //                                                       //
@@ -59,8 +59,8 @@
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
-#ifndef _HEADER_INCLUDED__SAGA_GUI__wksp_map_graticule_H
-#define _HEADER_INCLUDED__SAGA_GUI__wksp_map_graticule_H
+#ifndef _HEADER_INCLUDED__SAGA_GUI__wksp_map_basemap_H
+#define _HEADER_INCLUDED__SAGA_GUI__wksp_map_basemap_H
 
 
 ///////////////////////////////////////////////////////////
@@ -80,13 +80,13 @@
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
-class CWKSP_Map_Graticule : public CWKSP_Base_Item
+class CWKSP_Map_BaseMap : public CWKSP_Base_Item
 {
 public:
-	CWKSP_Map_Graticule(CSG_MetaData *pEntry = NULL);
-	virtual ~CWKSP_Map_Graticule(void);
+	CWKSP_Map_BaseMap(CSG_MetaData *pEntry = NULL);
+	virtual ~CWKSP_Map_BaseMap(void);
 
-	virtual TWKSP_Item			Get_Type				(void)	{	return( WKSP_ITEM_Map_Graticule );	}
+	virtual TWKSP_Item			Get_Type				(void)	{	return( WKSP_ITEM_Map_BaseMap );	}
 
 	virtual wxString			Get_Name				(void);
 	virtual wxString			Get_Description			(void);
@@ -113,10 +113,10 @@ private:
 
 	bool						m_bShow;
 
-	CSG_Shapes					m_Graticule, m_Coordinates;
+	CSG_Grid					m_BaseMap;
 
 
-	bool						Get_Graticule			(const CSG_Rect &Extent);
+	bool						Set_BaseMap				(const CSG_Grid_System &System);
 
 };
 
@@ -128,4 +128,4 @@ private:
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
-#endif // #ifndef _HEADER_INCLUDED__SAGA_GUI__wksp_map_graticule_H
+#endif // #ifndef _HEADER_INCLUDED__SAGA_GUI__wksp_map_basemap_H
diff --git a/src/saga_core/saga_gui/wksp_map_buttons.cpp b/src/saga_core/saga_gui/wksp_map_buttons.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/wksp_map_buttons.h b/src/saga_core/saga_gui/wksp_map_buttons.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/wksp_map_control.cpp b/src/saga_core/saga_gui/wksp_map_control.cpp
old mode 100644
new mode 100755
index a1b2c00..1bfe123
--- a/src/saga_core/saga_gui/wksp_map_control.cpp
+++ b/src/saga_core/saga_gui/wksp_map_control.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: wksp_map_control.cpp 2068 2014-03-25 16:04:16Z oconrad $
+ * Version $Id: wksp_map_control.cpp 2793 2016-02-16 16:51:24Z oconrad $
  *********************************************************/
 	
 ///////////////////////////////////////////////////////////
@@ -92,6 +92,7 @@ enum
 	IMG_MAP_MANAGER		= 1,
 	IMG_MAP,
 	IMG_MAP_GRATICULE,
+	IMG_MAP_BASEMAP,
 	IMG_SHAPES_POINT,
 	IMG_SHAPES_POINTS,
 	IMG_SHAPES_LINE,
@@ -144,6 +145,7 @@ CWKSP_Map_Control::CWKSP_Map_Control(wxWindow *pParent)
 	IMG_ADD_TO_TREECTRL(ID_IMG_WKSP_MAP_MANAGER);
 	IMG_ADD_TO_TREECTRL(ID_IMG_WKSP_MAP);
 	IMG_ADD_TO_TREECTRL(ID_IMG_WKSP_MAP_GRATICULE);
+	IMG_ADD_TO_TREECTRL(ID_IMG_WKSP_MAP_BASEMAP);
 	IMG_ADD_TO_TREECTRL(ID_IMG_WKSP_SHAPES_POINT);
 	IMG_ADD_TO_TREECTRL(ID_IMG_WKSP_SHAPES_POINTS);
 	IMG_ADD_TO_TREECTRL(ID_IMG_WKSP_SHAPES_LINE);
@@ -176,8 +178,8 @@ int CWKSP_Map_Control::OnCompareItems(const wxTreeItemId &item1, const wxTreeIte
 {
 	CWKSP_Base_Item	*p1, *p2;
 
-	if(	(p1 = (CWKSP_Base_Item *)GetItemData(item1)) != NULL && (p1->Get_Type() == WKSP_ITEM_Map_Layer || p1->Get_Type() == WKSP_ITEM_Map_Graticule)
-	&&	(p2 = (CWKSP_Base_Item *)GetItemData(item2)) != NULL && (p2->Get_Type() == WKSP_ITEM_Map_Layer || p2->Get_Type() == WKSP_ITEM_Map_Graticule) )
+	if(	(p1 = (CWKSP_Base_Item *)GetItemData(item1)) != NULL && (p1->Get_Type() == WKSP_ITEM_Map_Layer || p1->Get_Type() == WKSP_ITEM_Map_Graticule || p1->Get_Type() == WKSP_ITEM_Map_BaseMap)
+	&&	(p2 = (CWKSP_Base_Item *)GetItemData(item2)) != NULL && (p2->Get_Type() == WKSP_ITEM_Map_Layer || p2->Get_Type() == WKSP_ITEM_Map_Graticule || p2->Get_Type() == WKSP_ITEM_Map_BaseMap) )
 	{
 		return( p1->Get_Index() - p2->Get_Index() );
 	}
@@ -202,6 +204,11 @@ inline int CWKSP_Map_Control::_Get_Image_ID(CWKSP_Base_Item *pItem)
 			return( IMG_MAP_GRATICULE );
 		}
 
+		if( pItem->Get_Type() == WKSP_ITEM_Map_BaseMap )
+		{
+			return( IMG_MAP_BASEMAP );
+		}
+
 		if( pItem->Get_Type() == WKSP_ITEM_Map_Layer )
 		{
 			pItem	= ((CWKSP_Map_Layer *)pItem)->Get_Layer();
@@ -288,7 +295,10 @@ void CWKSP_Map_Control::On_Drag_Begin(wxTreeEvent &event)
 {
 	CWKSP_Base_Item	*pItem	= (CWKSP_Base_Item *)GetItemData(event.GetItem());
 
-	if( pItem && (pItem->Get_Type() == WKSP_ITEM_Map_Layer || pItem->Get_Type() == WKSP_ITEM_Map_Graticule) )
+	if( pItem
+	&& (pItem->Get_Type() == WKSP_ITEM_Map_Layer
+	 || pItem->Get_Type() == WKSP_ITEM_Map_Graticule
+	 || pItem->Get_Type() == WKSP_ITEM_Map_BaseMap) )
 	{
 		m_draggedItem	= event.GetItem();
 
@@ -300,8 +310,9 @@ void CWKSP_Map_Control::On_Drag_Begin(wxTreeEvent &event)
 void CWKSP_Map_Control::On_Drag_End(wxTreeEvent &event)
 {
 	if( event.GetItem().IsOk()
-	&& (  ((CWKSP_Base_Item *)GetItemData(m_draggedItem))->Get_Type() == WKSP_ITEM_Map_Layer
-	   || ((CWKSP_Base_Item *)GetItemData(m_draggedItem))->Get_Type() == WKSP_ITEM_Map_Graticule ) )
+	&& (((CWKSP_Base_Item *)GetItemData(m_draggedItem))->Get_Type() == WKSP_ITEM_Map_Layer
+	 || ((CWKSP_Base_Item *)GetItemData(m_draggedItem))->Get_Type() == WKSP_ITEM_Map_Graticule
+	 || ((CWKSP_Base_Item *)GetItemData(m_draggedItem))->Get_Type() == WKSP_ITEM_Map_BaseMap ) )
 	{
 		CWKSP_Map		*pDst_Map, *pSrc_Map;
 		CWKSP_Base_Item	*pSrc, *pDst, *pCpy;
@@ -323,6 +334,7 @@ void CWKSP_Map_Control::On_Drag_End(wxTreeEvent &event)
 
 		case WKSP_ITEM_Map_Layer:
 		case WKSP_ITEM_Map_Graticule:
+		case WKSP_ITEM_Map_BaseMap:
 			pDst_Map	= (CWKSP_Map *)pDst->Get_Manager();
 			break;
 		}
diff --git a/src/saga_core/saga_gui/wksp_map_control.h b/src/saga_core/saga_gui/wksp_map_control.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/wksp_map_dc.cpp b/src/saga_core/saga_gui/wksp_map_dc.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/wksp_map_dc.h b/src/saga_core/saga_gui/wksp_map_dc.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/wksp_map_graticule.cpp b/src/saga_core/saga_gui/wksp_map_graticule.cpp
old mode 100644
new mode 100755
index fd31f01..7aef75e
--- a/src/saga_core/saga_gui/wksp_map_graticule.cpp
+++ b/src/saga_core/saga_gui/wksp_map_graticule.cpp
@@ -277,17 +277,17 @@ wxString CWKSP_Map_Graticule::Get_Description(void)
 {
 	wxString	s;
 
-	s	+= wxString::Format(wxT("<b>%s</b>"), _TL("Shapes"));
+	//-----------------------------------------------------
+	s	+= wxString::Format("<h4>%s</h4>", _TL("Graticule"));
 
-	s	+= wxT("<table border=\"0\">");
+	s	+= "<table border=\"0\">";
 
-	//-----------------------------------------------------
-	DESC_ADD_STR(_TL("Name")			, m_Parameters("NAME")->asString());
-	DESC_ADD_STR(_TL("Projection")		, Get_Map()->Get_Projection().Get_Description().c_str());
+	DESC_ADD_STR(_TL("Name"      ), m_Parameters("NAME")->asString());
+	DESC_ADD_STR(_TL("Projection"), Get_Map()->Get_Projection().Get_Description().c_str());
 
-	//-----------------------------------------------------
 	s	+= wxT("</table>");
 
+	//-----------------------------------------------------
 	return( s );
 }
 
@@ -391,23 +391,23 @@ int CWKSP_Map_Graticule::On_Parameter_Changed(CSG_Parameters *pParameters, CSG_P
 {
 	if( Flags & PARAMETER_CHECK_ENABLE )
 	{
-		if(	!SG_STR_CMP(pParameter->Get_Identifier(), SG_T("INTERVAL")) )
+		if(	!SG_STR_CMP(pParameter->Get_Identifier(), "INTERVAL") )
 		{
-			pParameters->Get_Parameter("FIXED" )->Set_Enabled(pParameter->asInt() == 0);
-			pParameters->Get_Parameter("FITTED")->Set_Enabled(pParameter->asInt() == 1);
+			pParameters->Set_Enabled("FIXED"       , pParameter->asInt() == 0);
+			pParameters->Set_Enabled("FITTED"      , pParameter->asInt() == 1);
 		}
 
-		if(	!SG_STR_CMP(pParameter->Get_Identifier(), SG_T("SHOW_ALWAYS")) )
+		if(	!SG_STR_CMP(pParameter->Get_Identifier(), "SHOW_ALWAYS") )
 		{
-			pParameters->Get_Parameter("SHOW_RANGE")->Set_Enabled(pParameter->asBool() == false);
+			pParameters->Set_Enabled("SHOW_RANGE"  , pParameter->asBool() == false);
 		}
 
-		if(	!SG_STR_CMP(pParameter->Get_Identifier(), SG_T("LABEL")) )
+		if(	!SG_STR_CMP(pParameter->Get_Identifier(), "LABEL") )
 		{
-			pParameters->Get_Parameter("LABEL_FONT"  )->Set_Enabled(pParameter->asBool());
-			pParameters->Get_Parameter("LABEL_SIZE"  )->Set_Enabled(pParameter->asBool());
-			pParameters->Get_Parameter("LABEL_EFFECT")->Set_Enabled(pParameter->asBool());
-			pParameters->Get_Parameter("LABEL_EFFCOL")->Set_Enabled(pParameter->asBool());
+			pParameters->Set_Enabled("LABEL_FONT"  , pParameter->asBool());
+			pParameters->Set_Enabled("LABEL_SIZE"  , pParameter->asBool());
+			pParameters->Set_Enabled("LABEL_EFFECT", pParameter->asBool());
+			pParameters->Set_Enabled("LABEL_EFFCOL", pParameter->asBool());
 		}
 	}
 
@@ -432,49 +432,43 @@ void CWKSP_Map_Graticule::Parameters_Changed(void)
 //---------------------------------------------------------
 bool CWKSP_Map_Graticule::Get_Graticule(const CSG_Rect &Extent)
 {
-	m_Graticule  .Create(SHAPE_TYPE_Line);
+	bool	bResult	= false;
+
+	m_Graticule  .Create(SHAPE_TYPE_Line );
 	m_Coordinates.Create(SHAPE_TYPE_Point);
 
-	CSG_Module	*pModule	= SG_Get_Module_Library_Manager().Get_Module(SG_T("pj_proj4"), 14);
+	CSG_Module	*pModule	= SG_Get_Module_Library_Manager().Get_Module("pj_proj4", 14);
 
 	if(	pModule && Get_Map()->Get_Projection().is_Okay() )
 	{
-		CSG_Parameters	P; P.Assign(pModule->Get_Parameters());
-
-		pModule->Set_Manager(NULL);
-
 		SG_UI_Msg_Lock     (true);
 		SG_UI_Progress_Lock(true);
 
-		if( pModule->Get_Parameters()->Set_Parameter("XMIN"      , Extent.Get_XMin())
-		&&  pModule->Get_Parameters()->Set_Parameter("XMAX"      , Extent.Get_XMax())
-		&&  pModule->Get_Parameters()->Set_Parameter("YMIN"      , Extent.Get_YMin())
-		&&  pModule->Get_Parameters()->Set_Parameter("YMAX"      , Extent.Get_YMax())
-		&&  pModule->Get_Parameters()->Set_Parameter("INTERVAL"  , m_Parameters("INTERVAL"))
-		&&  pModule->Get_Parameters()->Set_Parameter("FIXED"     , m_Parameters("FIXED"))
-		&&  pModule->Get_Parameters()->Set_Parameter("FITTED"    , m_Parameters("FITTED"))
-		&&  pModule->Get_Parameters()->Set_Parameter("RESOLUTION", m_Parameters("RESOLUTION"))
-		&&  pModule->Get_Parameters()->Set_Parameter("GRATICULE" , &m_Graticule)
-		&&  pModule->Get_Parameters()->Set_Parameter("COORDS"    , &m_Coordinates)
-		&&  pModule->Get_Parameters()->Set_Parameter("CRS_PROJ4" , Get_Map()->Get_Projection().Get_Proj4())
+		pModule->Settings_Push();
+
+		if( pModule->Set_Parameter("XMIN"      , Extent.Get_XMin())
+		&&  pModule->Set_Parameter("XMAX"      , Extent.Get_XMax())
+		&&  pModule->Set_Parameter("YMIN"      , Extent.Get_YMin())
+		&&  pModule->Set_Parameter("YMAX"      , Extent.Get_YMax())
+		&&  pModule->Set_Parameter("INTERVAL"  , m_Parameters("INTERVAL"))
+		&&  pModule->Set_Parameter("FIXED"     , m_Parameters("FIXED"))
+		&&  pModule->Set_Parameter("FITTED"    , m_Parameters("FITTED"))
+		&&  pModule->Set_Parameter("RESOLUTION", m_Parameters("RESOLUTION"))
+		&&  pModule->Set_Parameter("GRATICULE" , &m_Graticule)
+		&&  pModule->Set_Parameter("COORDS"    , &m_Coordinates)
+		&&  pModule->Set_Parameter("CRS_PROJ4" , Get_Map()->Get_Projection().Get_Proj4())
 		&&  pModule->On_Before_Execution() && pModule->Execute() )
 		{
-			SG_UI_Msg_Lock     (false);
-			SG_UI_Progress_Lock(false);
-
-			pModule->Get_Parameters()->Assign_Values(&P);
-			pModule->Set_Manager(P.Get_Manager());
-
-			return( true );
+			bResult	= true;
 		}
 
-		SG_UI_Progress_Lock(false);
+		pModule->Settings_Pop();
 
-		pModule->Get_Parameters()->Assign_Values(&P);
-		pModule->Set_Manager(P.Get_Manager());
+		SG_UI_Msg_Lock     (false);
+		SG_UI_Progress_Lock(false);
 	}
 
-	return( false );
+	return( bResult );
 }
 
 
diff --git a/src/saga_core/saga_gui/wksp_map_graticule.h b/src/saga_core/saga_gui/wksp_map_graticule.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/wksp_map_layer.cpp b/src/saga_core/saga_gui/wksp_map_layer.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/wksp_map_layer.h b/src/saga_core/saga_gui/wksp_map_layer.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/wksp_map_manager.cpp b/src/saga_core/saga_gui/wksp_map_manager.cpp
old mode 100644
new mode 100755
index 1dea1d9..67396ae
--- a/src/saga_core/saga_gui/wksp_map_manager.cpp
+++ b/src/saga_core/saga_gui/wksp_map_manager.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: wksp_map_manager.cpp 2006 2014-02-20 13:52:10Z oconrad $
+ * Version $Id: wksp_map_manager.cpp 2783 2016-02-11 17:14:34Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -220,8 +220,16 @@ wxString CWKSP_Map_Manager::Get_Description(void)
 {
 	wxString	s;
 
-	s.Printf(wxT("%d %s"), Get_Count(), Get_Count() == 1 ? _TL("Map") : _TL("Maps"));
+	//-----------------------------------------------------
+	s	+= wxString::Format("<h4>%s</h4>", _TL("Maps"));
+
+	s	+= "<table border=\"0\">";
+
+	DESC_ADD_INT(_TL("Number of Maps"), Get_Count());
 
+	s	+= "</table>";
+
+	//-----------------------------------------------------
 	return( s );
 }
 
diff --git a/src/saga_core/saga_gui/wksp_map_manager.h b/src/saga_core/saga_gui/wksp_map_manager.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/wksp_module.cpp b/src/saga_core/saga_gui/wksp_module.cpp
old mode 100644
new mode 100755
index 5cf0615..9af396d
--- a/src/saga_core/saga_gui/wksp_module.cpp
+++ b/src/saga_core/saga_gui/wksp_module.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: wksp_module.cpp 2686 2015-11-12 16:36:59Z oconrad $
+ * Version $Id: wksp_module.cpp 2762 2016-01-22 16:49:22Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -745,6 +745,9 @@ void CWKSP_Module::_Get_XML(CSG_MetaData &Tool, CSG_Parameters *pParameters)
 			break;
 
 		case PARAMETER_TYPE_Bool        :
+			pChild	= Tool.Add_Child("option", p->asBool() ? "true" : "false");
+			break;
+
 		case PARAMETER_TYPE_Int         :
 		case PARAMETER_TYPE_Double      :
 		case PARAMETER_TYPE_Degree      :
diff --git a/src/saga_core/saga_gui/wksp_module.h b/src/saga_core/saga_gui/wksp_module.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/wksp_module_control.cpp b/src/saga_core/saga_gui/wksp_module_control.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/wksp_module_control.h b/src/saga_core/saga_gui/wksp_module_control.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/wksp_module_library.cpp b/src/saga_core/saga_gui/wksp_module_library.cpp
old mode 100644
new mode 100755
index dc41995..cea95ce
--- a/src/saga_core/saga_gui/wksp_module_library.cpp
+++ b/src/saga_core/saga_gui/wksp_module_library.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: wksp_module_library.cpp 2408 2015-02-16 14:21:06Z oconrad $
+ * Version $Id: wksp_module_library.cpp 2772 2016-02-05 15:25:43Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -201,49 +201,17 @@ wxString CWKSP_Module_Library::Get_Name(void)
 //---------------------------------------------------------
 wxString CWKSP_Module_Library::Get_Description(void)
 {
-	wxString	s;
-
-	//-----------------------------------------------------
-	s	+= wxString::Format(wxT("<b>%s</b>"), _TL("Tool Library"));
-
-	s	+= wxT("<table border=\"0\">");
-
-	DESC_ADD_STR(_TL("Name")	, m_pLibrary->Get_Name     ().c_str());
-	DESC_ADD_STR(_TL("Author")	, m_pLibrary->Get_Author   ().c_str());
-	DESC_ADD_STR(_TL("Version")	, m_pLibrary->Get_Version  ().c_str());
-	DESC_ADD_STR(_TL("File")	, m_pLibrary->Get_File_Name().c_str());
-
-	s	+= wxT("</table><hr>");
-
-	//-----------------------------------------------------
-	s	+= wxString::Format(wxT("<b>%s</b><br>"), _TL("Description"));
-
-	wxString	sDesc;
-
 	if( g_pModules->Get_Parameter("HELP_SOURCE")->asInt() == 1 )
 	{
-		sDesc	= Get_Online_Module_Description(m_pLibrary->Get_File_Name().c_str());
-	}
+		wxString	Description	= Get_Online_Module_Description(m_pLibrary->Get_File_Name().c_str());
 
-	s	+= sDesc.Length() > 0 ? sDesc.c_str() : m_pLibrary->Get_Description().c_str();
-
-	//-----------------------------------------------------
-	s	+= wxString::Format(wxT("<hr><b>%s:<ul>"), _TL("Tools"));
-
-	for(int iModule=0; iModule<Get_Count(); iModule++)
-	{
-		s	+= wxString::Format(wxT("<li>[%s] %s</li>"),
-				Get_Module(iModule)->Get_Module()->Get_ID  ().c_str(),
-				Get_Module(iModule)->Get_Module()->Get_Name().c_str()
-			);
+		if( !Description.IsEmpty() )
+		{
+			return( Description );
+		}
 	}
 
-	s	+= wxT("</ul>");
-
-	//-----------------------------------------------------
-	s.Replace(wxT("\n"), wxT("<br>"));
-
-	return( s );
+	return( m_pLibrary->Get_Summary(SG_SUMMARY_FMT_HTML).c_str() );
 }
 
 //---------------------------------------------------------
diff --git a/src/saga_core/saga_gui/wksp_module_library.h b/src/saga_core/saga_gui/wksp_module_library.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/wksp_module_manager.cpp b/src/saga_core/saga_gui/wksp_module_manager.cpp
old mode 100644
new mode 100755
index 6a5d902..5416f25
--- a/src/saga_core/saga_gui/wksp_module_manager.cpp
+++ b/src/saga_core/saga_gui/wksp_module_manager.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: wksp_module_manager.cpp 2723 2015-12-11 10:18:03Z oconrad $
+ * Version $Id: wksp_module_manager.cpp 2821 2016-02-24 09:21:06Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -135,7 +135,7 @@ CWKSP_Module_Manager::CWKSP_Module_Manager(void)
 		_TW("Number of processors to use for parallelization. Should be set to the number "
 		    "of physical processors, and not to the total number of physical and logical processors "
 			"on systems supporting hyper-threading."),
-		PARAMETER_TYPE_Int	, SG_Get_Max_Num_Threads_Omp(), 1, true, SG_Get_Max_Num_Procs_Omp(), true
+		PARAMETER_TYPE_Int	, SG_OMP_Get_Max_Num_Threads(), 1, true, SG_OMP_Get_Max_Num_Procs(), true
 	);
 #endif
 
@@ -231,7 +231,7 @@ bool CWKSP_Module_Manager::Initialise(void)
 	g_pSAGA->Process_Set_Frequency(m_Parameters("PROCESS_UPDATE")->asInt());
 
 #ifdef _OPENMP
-	SG_Set_Max_Num_Threads_Omp(m_Parameters("OMP_THREADS_MAX")->asInt());
+	SG_OMP_Set_Max_Num_Threads(m_Parameters("OMP_THREADS_MAX")->asInt());
 #endif
 
 	//-----------------------------------------------------
@@ -252,7 +252,8 @@ bool CWKSP_Module_Manager::Initialise(void)
 	if( SG_Get_Module_Library_Manager().Get_Count() == 0 )
 	{
 #if defined(_SAGA_LINUX)
-	if( SG_Get_Module_Library_Manager().Add_Directory(wxT(MODULE_LIBRARY_PATH), false) == 0 )
+	if( (SG_Get_Module_Library_Manager().Add_Directory(CSG_String(MODULE_LIBRARY_PATH), false)
+	   + SG_Get_Module_Library_Manager().Add_Directory(SG_File_Make_Path(CSG_String(SHARE_PATH), SG_T("toolchains")), false)) == 0 )
 #endif
 		SG_Get_Module_Library_Manager().Add_Directory(g_pSAGA->Get_App_Path(), true);
 	}
@@ -458,7 +459,7 @@ void CWKSP_Module_Manager::Parameters_Changed(void)
 	g_pSAGA->Process_Set_Frequency(m_Parameters("PROCESS_UPDATE")->asInt());
 
 #ifdef _OPENMP
-	SG_Set_Max_Num_Threads_Omp(m_Parameters("OMP_THREADS_MAX")->asInt());
+	SG_OMP_Set_Max_Num_Threads(m_Parameters("OMP_THREADS_MAX")->asInt());
 #endif
 
 	m_pMenu_Modules->Update();
@@ -680,11 +681,42 @@ CWKSP_Module_Group::~CWKSP_Module_Group(void)
 ///////////////////////////////////////////////////////////
 
 //---------------------------------------------------------
+#define SUMMARY_ADD_STR(label, value)	wxString::Format("<tr><td valign=\"top\"><b>%s</b></td><td valign=\"top\">%s</td></tr>", label, value)
+#define SUMMARY_ADD_INT(label, value)	wxString::Format("<tr><td valign=\"top\"><b>%s</b></td><td valign=\"top\">%d</td></tr>", label, value)
+
+//---------------------------------------------------------
 wxString CWKSP_Module_Group::Get_Description(void)
 {
 	wxString	s;
 
-	s.Printf(wxT("<b>%s</b>: %d<br>"), _TL("Tool Libraries"), Get_Count());
+	s	+= wxString::Format("<h4>%s</h4>", _TL("Tool Libraries"));
+
+	s	+= "<table border=\"0\">";
+
+	s	+= SUMMARY_ADD_STR(_TL("Category" ), Get_Name().c_str());
+	s	+= SUMMARY_ADD_INT(_TL("Libraries"), Get_Count());
+
+	s	+= "</table>";
+
+	//-----------------------------------------------------
+	s	+= wxString::Format("<hr><h4>%s</h4><table border=\"0\">", _TL("Tool Libraries"));
+
+	s	+= wxString::Format("<tr align=\"left\"><th>%s</th><th>%s</th><th>%s</th></tr>",
+			_TL("Library"),
+			_TL("Name"   ),
+			_TL("Tools"  )
+		);
+
+	for(int i=0; i<Get_Count(); i++)
+	{
+		s	+= wxString::Format("<tr><td valign=\"top\"><i>%s</i></td><td valign=\"top\">%s</td><td valign=\"top\" align=\"right\">%d</td></tr>",
+				Get_Library(i)->Get_Library()->Get_Library_Name().c_str(),
+				Get_Library(i)->Get_Name().c_str(),
+				Get_Library(i)->Get_Count()
+			);
+	}
+
+	s	+= "</table>";
 
 	return( s );
 }
diff --git a/src/saga_core/saga_gui/wksp_module_manager.h b/src/saga_core/saga_gui/wksp_module_manager.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/wksp_module_menu.cpp b/src/saga_core/saga_gui/wksp_module_menu.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/wksp_module_menu.h b/src/saga_core/saga_gui/wksp_module_menu.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/wksp_pointcloud.cpp b/src/saga_core/saga_gui/wksp_pointcloud.cpp
old mode 100644
new mode 100755
index fd5a46e..51f499b
--- a/src/saga_core/saga_gui/wksp_pointcloud.cpp
+++ b/src/saga_core/saga_gui/wksp_pointcloud.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: wksp_pointcloud.cpp 2716 2015-12-04 11:55:42Z oconrad $
+ * Version $Id: wksp_pointcloud.cpp 2772 2016-02-05 15:25:43Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -125,9 +125,9 @@ wxString CWKSP_PointCloud::Get_Description(void)
 	wxString	s;
 
 	//-----------------------------------------------------
-	s	+= wxString::Format(wxT("<b>%s</b>"), _TL("Point Cloud"));
+	s	+= wxString::Format("<h4>%s</h4>", _TL("Point Cloud"));
 
-	s	+= wxT("<table border=\"0\">");
+	s	+= "<table border=\"0\">";
 
 	DESC_ADD_STR(_TL("Name"            ), m_pObject->Get_Name());
 	DESC_ADD_STR(_TL("Description"     ), m_pObject->Get_Description());
diff --git a/src/saga_core/saga_gui/wksp_pointcloud.h b/src/saga_core/saga_gui/wksp_pointcloud.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/wksp_pointcloud_manager.cpp b/src/saga_core/saga_gui/wksp_pointcloud_manager.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/wksp_pointcloud_manager.h b/src/saga_core/saga_gui/wksp_pointcloud_manager.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/wksp_shapes.cpp b/src/saga_core/saga_gui/wksp_shapes.cpp
old mode 100644
new mode 100755
index 8f97ad1..66345b5
--- a/src/saga_core/saga_gui/wksp_shapes.cpp
+++ b/src/saga_core/saga_gui/wksp_shapes.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: wksp_shapes.cpp 2668 2015-10-30 11:03:12Z oconrad $
+ * Version $Id: wksp_shapes.cpp 2772 2016-02-05 15:25:43Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -120,9 +120,9 @@ wxString CWKSP_Shapes::Get_Description(void)
 	wxString	s;
 
 	//-----------------------------------------------------
-	s	+= wxString::Format(wxT("<b>%s</b>"), _TL("Shapes"));
+	s	+= wxString::Format("<h4>%s</h4>", _TL("Shapes"));
 
-	s	+= wxT("<table border=\"0\">");
+	s	+= "<table border=\"0\">";
 
 	DESC_ADD_STR(_TL("Name"            ), m_pObject->Get_Name());
 	DESC_ADD_STR(_TL("Description"     ), m_pObject->Get_Description());
diff --git a/src/saga_core/saga_gui/wksp_shapes.h b/src/saga_core/saga_gui/wksp_shapes.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/wksp_shapes_edit.cpp b/src/saga_core/saga_gui/wksp_shapes_edit.cpp
old mode 100644
new mode 100755
index 09f872b..5c06791
--- a/src/saga_core/saga_gui/wksp_shapes_edit.cpp
+++ b/src/saga_core/saga_gui/wksp_shapes_edit.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: wksp_shapes_edit.cpp 2202 2014-08-26 13:24:07Z oconrad $
+ * Version $Id: wksp_shapes_edit.cpp 2809 2016-02-22 11:40:22Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -71,7 +71,6 @@
 
 #include "active.h"
 #include "active_attributes.h"
-#include "active_HTMLExtraInfo.h"
 
 #include "wksp_shapes.h"
 
diff --git a/src/saga_core/saga_gui/wksp_shapes_line.cpp b/src/saga_core/saga_gui/wksp_shapes_line.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/wksp_shapes_line.h b/src/saga_core/saga_gui/wksp_shapes_line.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/wksp_shapes_manager.cpp b/src/saga_core/saga_gui/wksp_shapes_manager.cpp
old mode 100644
new mode 100755
index 1c9cfcc..2db8fb3
--- a/src/saga_core/saga_gui/wksp_shapes_manager.cpp
+++ b/src/saga_core/saga_gui/wksp_shapes_manager.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: wksp_shapes_manager.cpp 1921 2014-01-09 10:24:11Z oconrad $
+ * Version $Id: wksp_shapes_manager.cpp 2791 2016-02-16 16:48:55Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -65,6 +65,8 @@
 
 #include "res_commands.h"
 
+#include "helper.h"
+
 #include "wksp_data_manager.h"
 
 #include "wksp_map_manager.h"
@@ -102,13 +104,20 @@ wxString CWKSP_Shapes_Manager::Get_Description(void)
 {
 	wxString	s;
 
-	s.Printf(wxT("<b>%s</b><br>"), _TL("Shapes"));
+	//-----------------------------------------------------
+	s	+= wxString::Format("<h4>%s</h4>", _TL("Shapes"));
+
+	s	+= "<table border=\"0\">";
+
+	DESC_ADD_INT(_TL("Shape Layers"), Get_Items_Count());
 
 	for(int i=0; i<Get_Count(); i++)
 	{
-		s.Append(wxString::Format(wxT("%s: %d<br>"), Get_Item(i)->Get_Name().c_str(), ((CWKSP_Base_Manager *)Get_Item(i))->Get_Count()));
+		DESC_ADD_INT(Get_Item(i)->Get_Name().c_str(), ((CWKSP_Base_Manager *)Get_Item(i))->Get_Count());
 	}
 
+	s	+= wxT("</table>");
+
 	return( s );
 }
 
diff --git a/src/saga_core/saga_gui/wksp_shapes_manager.h b/src/saga_core/saga_gui/wksp_shapes_manager.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/wksp_shapes_point.cpp b/src/saga_core/saga_gui/wksp_shapes_point.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/wksp_shapes_point.h b/src/saga_core/saga_gui/wksp_shapes_point.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/wksp_shapes_points.cpp b/src/saga_core/saga_gui/wksp_shapes_points.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/wksp_shapes_points.h b/src/saga_core/saga_gui/wksp_shapes_points.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/wksp_shapes_polygon.cpp b/src/saga_core/saga_gui/wksp_shapes_polygon.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/wksp_shapes_polygon.h b/src/saga_core/saga_gui/wksp_shapes_polygon.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/wksp_shapes_type.cpp b/src/saga_core/saga_gui/wksp_shapes_type.cpp
old mode 100644
new mode 100755
index 268761a..5f2fbbf
--- a/src/saga_core/saga_gui/wksp_shapes_type.cpp
+++ b/src/saga_core/saga_gui/wksp_shapes_type.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: wksp_shapes_type.cpp 1921 2014-01-09 10:24:11Z oconrad $
+ * Version $Id: wksp_shapes_type.cpp 2791 2016-02-16 16:48:55Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -65,6 +65,8 @@
 
 #include "res_commands.h"
 
+#include "helper.h"
+
 #include "wksp_shapes_type.h"
 
 #include "wksp_shapes_point.h"
@@ -104,7 +106,14 @@ wxString CWKSP_Shapes_Type::Get_Description(void)
 {
 	wxString	s;
 
-	s.Printf(wxT("<b>%s:</b>%d<br>"), Get_Name().c_str(), Get_Count());
+	//-----------------------------------------------------
+	s	+= wxString::Format("<h4>%s</h4>", Get_Name().c_str());
+
+	s	+= "<table border=\"0\">";
+
+	DESC_ADD_INT(Get_Name().c_str(), Get_Count());
+
+	s	+= wxT("</table>");
 
 	return( s );
 }
diff --git a/src/saga_core/saga_gui/wksp_shapes_type.h b/src/saga_core/saga_gui/wksp_shapes_type.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/wksp_table.cpp b/src/saga_core/saga_gui/wksp_table.cpp
old mode 100644
new mode 100755
index b476133..bca93ac
--- a/src/saga_core/saga_gui/wksp_table.cpp
+++ b/src/saga_core/saga_gui/wksp_table.cpp
@@ -1,5 +1,5 @@
 /**********************************************************
- * Version $Id: wksp_table.cpp 2650 2015-10-15 17:01:38Z oconrad $
+ * Version $Id: wksp_table.cpp 2772 2016-02-05 15:25:43Z oconrad $
  *********************************************************/
 
 ///////////////////////////////////////////////////////////
@@ -117,9 +117,9 @@ wxString CWKSP_Table::Get_Description(void)
 	wxString	s;
 
 	//-----------------------------------------------------
-	s	+= wxString::Format(wxT("<b>%s</b>"), _TL("Table"));
+	s	+= wxString::Format("<h4>%s</h4>", _TL("Table"));
 
-	s	+= wxT("<table border=\"0\">");
+	s	+= "<table border=\"0\">";
 
 	DESC_ADD_STR(_TL("Name"             ), m_pObject->Get_Name());
 	DESC_ADD_STR(_TL("Description"      ), m_pObject->Get_Description());
diff --git a/src/saga_core/saga_gui/wksp_table.h b/src/saga_core/saga_gui/wksp_table.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/wksp_table_manager.cpp b/src/saga_core/saga_gui/wksp_table_manager.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/wksp_table_manager.h b/src/saga_core/saga_gui/wksp_table_manager.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/wksp_tin.cpp b/src/saga_core/saga_gui/wksp_tin.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/wksp_tin.h b/src/saga_core/saga_gui/wksp_tin.h
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/wksp_tin_manager.cpp b/src/saga_core/saga_gui/wksp_tin_manager.cpp
old mode 100644
new mode 100755
diff --git a/src/saga_core/saga_gui/wksp_tin_manager.h b/src/saga_core/saga_gui/wksp_tin_manager.h
old mode 100644
new mode 100755
diff --git a/src/scripting/helper/make_arcsaga_toolboxes.bat b/src/scripting/helper/make_arcsaga_toolboxes.bat
old mode 100644
new mode 100755
diff --git a/src/scripting/helper/make_saga_release.bat b/src/scripting/helper/make_saga_release.bat
old mode 100644
new mode 100755
index 41b49e5..e9ccc36
--- a/src/scripting/helper/make_saga_release.bat
+++ b/src/scripting/helper/make_saga_release.bat
@@ -3,7 +3,7 @@
 REM ___________________________________
 SET SAGA_VER_MAJOR=2
 SET SAGA_VER_MINOR=2
-SET SAGA_VER_RELEASE=3
+SET SAGA_VER_RELEASE=4
 
 SET SAGA_VERSION=saga_%SAGA_VER_MAJOR%.%SAGA_VER_MINOR%.%SAGA_VER_RELEASE%
 SET SVN__VERSION=%SAGA_VER_MAJOR%-%SAGA_VER_MINOR%-%SAGA_VER_RELEASE%
diff --git a/src/scripting/helper/make_saga_snapshot.bat b/src/scripting/helper/make_saga_snapshot.bat
old mode 100644
new mode 100755
diff --git a/src/scripting/helper/make_tools_interface.bat b/src/scripting/helper/make_tools_interface.bat
old mode 100644
new mode 100755
diff --git a/src/scripting/helper/make_translation_files.bat b/src/scripting/helper/make_translation_files.bat
old mode 100644
new mode 100755
index 409c02f..0028f77
--- a/src/scripting/helper/make_translation_files.bat
+++ b/src/scripting/helper/make_translation_files.bat
@@ -20,6 +20,7 @@ REM ___________________________________
 %SAGA_CMD% dev_tools 0 -TARGET="%RESPATH%\saga.lng.txt" -DIRECTORY="%SAGA_SRC%"
 
 %SAGA_CMD% dev_tools 1 -MASTER="%RESPATH%\saga.lng.txt" -IMPORT="%RESPATH%\saga.ger.txt" -UNION="%RESPATH%\saga.ger.txt" -METHOD=1
+%SAGA_CMD% dev_tools 1 -MASTER="%RESPATH%\saga.lng.txt" -IMPORT="%RESPATH%\saga.bra.txt" -UNION="%RESPATH%\saga.bra.txt" -METHOD=1
 
 DEL "%RESPATH%\*.mtab"
 
diff --git a/src/scripting/python/examples/00_grid_create_dummy.py b/src/scripting/python/examples/00_grid_create_dummy.py
old mode 100644
new mode 100755
diff --git a/src/scripting/python/examples/01_grid_asc_to_saga.py b/src/scripting/python/examples/01_grid_asc_to_saga.py
old mode 100644
new mode 100755
diff --git a/src/scripting/python/examples/02_grid_morphometry.py b/src/scripting/python/examples/02_grid_morphometry.py
old mode 100644
new mode 100755
diff --git a/src/scripting/python/examples/03_grid_difference.py b/src/scripting/python/examples/03_grid_difference.py
old mode 100644
new mode 100755
diff --git a/src/scripting/python/examples/04_grid_contour.py b/src/scripting/python/examples/04_grid_contour.py
old mode 100644
new mode 100755
diff --git a/src/scripting/python/examples/05_shp2xyz.py b/src/scripting/python/examples/05_shp2xyz.py
old mode 100644
new mode 100755
diff --git a/src/scripting/python/examples/06_xyz2shp.py b/src/scripting/python/examples/06_xyz2shp.py
old mode 100644
new mode 100755
diff --git a/src/scripting/python/helpers/saga_cmd_param_interface/environment.py b/src/scripting/python/helpers/saga_cmd_param_interface/environment.py
old mode 100644
new mode 100755
diff --git a/src/scripting/python/helpers/saga_cmd_param_interface/param_interface.py b/src/scripting/python/helpers/saga_cmd_param_interface/param_interface.py
old mode 100644
new mode 100755
diff --git a/src/scripting/python/helpers/saga_cmd_param_interface/tools.py b/src/scripting/python/helpers/saga_cmd_param_interface/tools.py
old mode 100644
new mode 100755
index 9857e9a..20c5bc1
--- a/src/scripting/python/helpers/saga_cmd_param_interface/tools.py
+++ b/src/scripting/python/helpers/saga_cmd_param_interface/tools.py
@@ -98,7 +98,7 @@ tools = [
 ['garden_learn_to_program', 12, '13: Reprojecting a shapes layer'],
 ['garden_learn_to_program', 13, '14: Vectorising channel lines'],
 ['garden_webservices', 0, 'Import a Map via Web Map Service (WMS)'],
-['grid_analysis', 0, 'Accumulated Cost (Isotropic)'],
+['grid_analysis', 0, 'Accumulated Cost'],
 ['grid_analysis', 1, 'Accumulated Cost (Anisotropic)'],
 ['grid_analysis', 5, 'Least Cost Paths'],
 ['grid_analysis', 6, 'Change Vector Analysis'],
@@ -120,7 +120,7 @@ tools = [
 ['grid_calculus', 1, 'Grid Calculator'],
 ['grid_calculus', 2, 'Grid Volume'],
 ['grid_calculus', 3, 'Grid Difference'],
-['grid_calculus', 4, 'Function'],
+['grid_calculus', 4, 'Function Plotter'],
 ['grid_calculus', 5, 'Geometric Figures'],
 ['grid_calculus', 6, 'Random Terrain'],
 ['grid_calculus', 7, 'Random Field'],
@@ -207,7 +207,7 @@ tools = [
 ['grid_visualisation', 8, 'Terrain Map View'],
 ['grid_visualisation', 9, 'Split RGB Composite'],
 ['imagery_classification', 0, 'Supervised Classification for Grids'],
-['imagery_classification', 1, 'Cluster Analysis for Grids'],
+['imagery_classification', 1, 'K-Means Clustering for Grids'],
 ['imagery_classification', 2, 'Confusion Matrix (Two Grids)'],
 ['imagery_classification', 3, 'Decision Tree'],
 ['imagery_classification', 4, 'Supervised Classification for Shapes'],
@@ -441,7 +441,7 @@ tools = [
 ['shapes_tools', 24, 'Merge Tables'],
 ['shapes_tools', 25, 'Land Use Scenario Generator'],
 ['shapes_transect', 0, 'Transect through polygon shapefile'],
-['sim_cellular_automata', 0, 'Conway\'s Life'],
+['sim_cellular_automata', 0, 'Conway\'s Game of Life'],
 ['sim_cellular_automata', 1, 'Wa-Tor'],
 ['sim_ecosystems_hugget', 0, '01: A Simple Litter System'],
 ['sim_ecosystems_hugget', 1, '02: Carbon Cycle Simulation for Terrestrial Biomass'],
@@ -641,5 +641,14 @@ tools = [
 ['sim_qm_of_esp', 1, 'Fill Sinks (QM of ESP)'],
 ['sim_qm_of_esp', 2, 'Flow Accumulation (QM of ESP)'],
 ['sim_qm_of_esp', 3, 'Successive Flow Routing'],
-['sim_qm_of_esp', 4, 'Diffusive Hillslope Evolution (ADI)']
+['sim_qm_of_esp', 4, 'Diffusive Hillslope Evolution (ADI)'],
+['grid_filter', 18, 'Simple Filter within shapes'],
+['grid_tools', 33, 'Copy Grid'],
+['grid_tools', 34, 'Invert Grid'],
+['grid_tools', 35, 'Mirror Grid'],
+['imagery_classification', 7, 'ISODATA Clustering for Grids'],
+['io_gdal', 9, 'Import Open Street Map Image'],
+['sim_hydrology', 5, 'Surface and Gradient'],
+['sim_hydrology', 6, 'Concentration'],
+['sim_hydrology', 7, 'Surface, Gradient and Concentration']
 ]
diff --git a/src/scripting/python/saga_python_api.txt b/src/scripting/python/saga_python_api.txt
old mode 100644
new mode 100755
diff --git a/src/scripting/python/test_data/test.mgrd b/src/scripting/python/test_data/test.mgrd
old mode 100644
new mode 100755
diff --git a/src/scripting/python/test_data/test.sdat b/src/scripting/python/test_data/test.sdat
old mode 100644
new mode 100755
diff --git a/src/scripting/python/test_data/test.sgrd b/src/scripting/python/test_data/test.sgrd
old mode 100644
new mode 100755
diff --git a/src/scripting/python/test_data/test_ascii.asc b/src/scripting/python/test_data/test_ascii.asc
old mode 100644
new mode 100755
diff --git a/src/scripting/python/test_data/test_pts.dbf b/src/scripting/python/test_data/test_pts.dbf
old mode 100644
new mode 100755
diff --git a/src/scripting/python/test_data/test_pts.mshp b/src/scripting/python/test_data/test_pts.mshp
old mode 100644
new mode 100755
diff --git a/src/scripting/python/test_data/test_pts.shp b/src/scripting/python/test_data/test_pts.shp
old mode 100644
new mode 100755
diff --git a/src/scripting/python/test_data/test_pts.shx b/src/scripting/python/test_data/test_pts.shx
old mode 100644
new mode 100755
diff --git a/src/scripting/python/test_data/test_pts_xyz.xyz b/src/scripting/python/test_data/test_pts_xyz.xyz
old mode 100644
new mode 100755
diff --git a/src/scripting/toolchains/climate.xml b/src/scripting/toolchains/climate.xml
new file mode 100755
index 0000000..5c904f6
--- /dev/null
+++ b/src/scripting/toolchains/climate.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<toolchains version="1.0.0">
+  <group>climate</group>
+  <identifier>climate</identifier>
+  <name>Climate</name>
+	<menu>Climate|Tools</menu>
+	<description>
+		Tools for the processing and analysis of climate data.
+	</description>
+</toolchains>
diff --git a/src/scripting/toolchains/cluster_terrain.xml b/src/scripting/toolchains/cluster_terrain.xml
old mode 100644
new mode 100755
diff --git a/src/scripting/toolchains/gridding.xml b/src/scripting/toolchains/gridding.xml
old mode 100644
new mode 100755
diff --git a/src/scripting/toolchains/imagery.xml b/src/scripting/toolchains/imagery.xml
new file mode 100755
index 0000000..ed58fa9
--- /dev/null
+++ b/src/scripting/toolchains/imagery.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<toolchains version="1.0.0">
+  <group>imagery</group>
+  <identifier>imagery</identifier>
+  <name>Imagery</name>
+	<menu>Imagery|Tools</menu>
+	<description>
+		Tools for image processing and analysis.
+	</description>
+</toolchains>
diff --git a/src/scripting/toolchains/imagery_lczc.xml b/src/scripting/toolchains/imagery_lczc.xml
old mode 100644
new mode 100755
index 84727ac..865db75
--- a/src/scripting/toolchains/imagery_lczc.xml
+++ b/src/scripting/toolchains/imagery_lczc.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <toolchain saga-version="2.2.0">
-	<group>toolchains</group>
+	<group>imagery</group>
 	<identifier>lczc</identifier>
 	<menu absolute="true">Imagery|Classification</menu>
 	<name>Local Climate Zone Classification</name>
diff --git a/src/scripting/toolchains/obia.xml b/src/scripting/toolchains/obia.xml
old mode 100644
new mode 100755
index 39ee208..9305067
--- a/src/scripting/toolchains/obia.xml
+++ b/src/scripting/toolchains/obia.xml
@@ -1,113 +1,153 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<toolchain saga-version="2.1.3">
-  <group></group>
-  <identifier>obia</identifier>
-  <name>Object Based Image Segmentation</name>
-  <author>O.Conrad (c) 2014</author>
-  <description>created from history</description>
-  <menu absolute="true">Imagery|Segmentation</menu>
-  <parameters>
-    <option varname="GRID_SYSTEM" type="grid_system">
-      <name>Grid System</name>
-    </option>
-    <input varname="FEATURES" type="grid_list" parent="GRID_SYSTEM">
-      <name>Features</name>
-    </input>
-    <output varname="OBJECTS" type="shapes">
-      <name>Objects</name>
-    </output>
-    <option varname="SEEDS_BAND_WIDTH" type="double">
-      <name>Band Width</name>
-      <description>increase band width to get less seed points</description>
-      <value>2</value>
-    </option>
-    <option varname="MAJORITY_RADIUS" type="integer">
-      <name>Generalization</name>
-      <description>majority filter radius</description>
-      <value>1</value>
-    </option>
-    <option varname="NCLUSTER" type="integer">
-      <name>Number of Clusters</name>
-      <description>number of clusters</description>
-      <value>12</value>
-    </option>
-    <option varname="NORMALIZE" type="boolean">
-      <name>Normalize</name>
-      <description>number of clusters</description>
-      <value>false</value>
-    </option>
-  </parameters>
-  <tools>
-    <tool library="imagery_segmentation" module="2" name="Seed Generation">
-      <option id="SEED_TYPE">0</option>
-      <option id="METHOD">0</option>
-      <option id="BAND_WIDTH" varname="1">SEEDS_BAND_WIDTH</option>
-      <option id="NORMALIZE" varname="true">NORMALIZE</option>
-      <input  id="FEATURES">FEATURES</input>
-      <output id="SEED_GRID">SEED_GRID</output>
-    </tool>
-    <tool library="imagery_segmentation" module="3" name="Simple Region Growing">
-      <output id="SEGMENTS">SEGMENTS_GRID</output>
-      <option id="NORMALIZE" varname="true">NORMALIZE</option>
-      <option id="NEIGHBOUR">1</option>
-      <option id="METHOD">0</option>
-      <option id="SIG_1">1.000000</option>
-      <option id="SIG_2">1.000000</option>
-      <option id="THRESHOLD">0.000000</option>
-      <option id="REFRESH">FALSE</option>
-      <option id="LEAFSIZE">256</option>
-      <input id="SEEDS">SEED_GRID</input>
-      <input id="FEATURES">FEATURES</input>
-    </tool>
-    <tool library="grid_filter" module="6" name="Majority Filter">
-      <option id="MODE">1</option>
-      <option id="THRESHOLD">0.000000</option>
-      <option id="RADIUS" varname="1">MAJORITY_RADIUS</option>
-      <input  id="INPUT">SEGMENTS_GRID</input>
-      <output id="RESULT">SEGMENTS_GRID_B</output>
-    </tool>
-    <tool library="shapes_grid" module="6" name="Vectorising Grid Classes">
-      <output id="POLYGONS">SEGMENTS</output>
-      <option id="CLASS_ALL">1</option>
-      <option id="CLASS_ID">1.000000</option>
-      <option id="SPLIT">0</option>
-      <option id="ALLVERTICES">FALSE</option>
-      <input id="GRID">SEGMENTS_GRID_B</input>
-    </tool>
-    <tool library="shapes_grid" module="2" name="Grid Statistics for Polygons">
-      <output id="RESULT">CLUSTERS</output>
-      <option id="METHOD">0</option>
-      <option id="NAMING">1</option>
-      <option id="COUNT">FALSE</option>
-      <option id="MIN">FALSE</option>
-      <option id="MAX">FALSE</option>
-      <option id="RANGE">FALSE</option>
-      <option id="SUM">FALSE</option>
-      <option id="MEAN">TRUE</option>
-      <option id="VAR">FALSE</option>
-      <option id="STDDEV">FALSE</option>
-      <option id="QUANTILE">0</option>
-      <input id="GRIDS">FEATURES</input>
-      <input id="POLYGONS">SEGMENTS</input>
-    </tool>
-    <tool library="table_calculus" module="14" name="Cluster Analysis">
-      <option id="FIELDS">3,4,5,6,7,8,9,10,11,12,13,14</option>
-      <option id="METHOD">1</option>
-      <option id="NCLUSTER" varname="1">NCLUSTER</option>
-      <option id="NORMALISE">FALSE</option>
-      <input id="INPUT">CLUSTERS</input>
-    </tool>
-    <tool library="shapes_polygons" module="5" name="Polygon Dissolve">
-      <output id="DISSOLVED">DISSOLVED</output>
-      <option id="FIELD_1">CLUSTER</option>
-      <option id="BND_KEEP">FALSE</option>
-      <option id="STAT_FIELDS"><no attributes></option>
-      <input id="POLYGONS">CLUSTERS</input>
-    </tool>
-    <tool library="shapes_polygons" module="10" name="Polygon Parts to Separate Polygons">
-      <output id="PARTS">OBJECTS</output>
-      <option id="LAKES">FALSE</option>
-      <input id="POLYGONS">DISSOLVED</input>
-    </tool>
-  </tools>
+<toolchain saga-version="2.2.4">
+	<group>imagery</group>
+	<identifier>obia</identifier>
+	<name>Object Based Image Segmentation</name>
+	<author>O.Conrad (c) 2014</author>
+	<menu absolute="TRUE">Imagery|Segmentation</menu>
+	<description>
+		This [[i]]Object Based Image Segmentation[[/i]] tool chain combines a number of tools for an easy derivation of geo-objects as polygons and is typically applied to satellite imagery. Segmentation is done using a 'Seeded Region Growing Algorithm'. Optionally the resulting polygons can be grouped by an unsupervised classification (k-means cluster analysis), which is performed on the basis of zonal feature grid statistics for each polygon.[[br]]
+		References:[[ul]]
+		[[li]]Adams, R. & Bischof, L. (1994): Seeded Region Growing. IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol.16, No.6, p.641-647.[[/li]]
+		[[li]]Bechtel, B., Ringeler, A. & Boehner, J. (2008): Segmentation for Object Extraction of Trees using MATLAB and SAGA. In: Boehner, J., Blaschke, T., Montanarella, L. [Eds.]: SAGA - Seconds Out. Hamburger Beitraege zur Physischen Geographie und Landschaftsoekologie, 19:59-70. [[a href="http://sourceforge.net/projects/saga-gis/files/SAGA%20-%20Documentation/HBPL19/hbpl19_01.pdf/download?use_mirror=freefr"]]online[[/a]][[/li]]
+		[[/ul]]
+	</description>
+  
+	<parameters>
+		<option varname="GRID_SYSTEM" type="grid_system">
+			<name>Grid System</name>
+		</option>
+		<input varname="FEATURES" type="grid_list" parent="GRID_SYSTEM">
+			<name>Features</name>
+		</input>
+		<option varname="NORMALIZE" type="boolean" parent="FEATURES">
+			<name>Normalize</name>
+			<value>FALSE</value>
+		</option>
+		<output varname="OBJECTS" type="shapes">
+			<name>Segments</name>
+			<output_name>Segments</output_name>
+		</output>
+		<option varname="SEEDS_BAND_WIDTH" type="double">
+			<name>Band Width for Seed Point Generation</name>
+			<description>Increase band width to get less seed points.</description>
+			<value>2</value>
+		</option>
+		<option varname="MAJORITY_RADIUS" type="integer">
+			<name>Generalization</name>
+			<description>Applies a majority filter with given search radius to the segments grid. Is skipped if set to zero.</description>
+			<value>1</value>
+		</option>
+		<option varname="POSTPROCESSING" type="choice">
+			<name>Post-Processing</name>
+			<choices>none|unsupervised classification</choices>
+			<description>number of clusters</description>
+			<value>0</value>
+		</option>
+		<option varname="NCLUSTER" type="integer" parent="POSTPROCESSING">
+			<condition value="1" type="=">POSTPROCESSING</condition>
+			<name>Number of Clusters</name>
+			<description>number of clusters</description>
+			<value>12</value>
+		</option>
+		<option varname="SPLIT_CLUSTERS" type="boolean" parent="POSTPROCESSING">
+			<condition value="1" type="=">POSTPROCESSING</condition>
+			<name>Split Clusters</name>
+			<description>number of clusters</description>
+			<value>TRUE</value>
+		</option>
+	</parameters>
+
+	<tools>
+		<tool library="imagery_segmentation" module="2" name="Seed Generation">
+			<option id="SEED_TYPE">0</option>
+			<option id="METHOD">0</option>
+			<option id="BAND_WIDTH" varname="TRUE">SEEDS_BAND_WIDTH</option>
+			<option id="NORMALIZE" varname="TRUE">NORMALIZE</option>
+			<input  id="FEATURES">FEATURES</input>
+			<output id="SEED_GRID">SEED_GRID</output>
+		</tool>
+	
+		<tool library="imagery_segmentation" module="3" name="Simple Region Growing">
+			<option id="NORMALIZE" varname="TRUE">NORMALIZE</option>
+			<option id="NEIGHBOUR">1</option>
+			<option id="METHOD">0</option>
+			<option id="SIG_1">1.000000</option>
+			<option id="SIG_2">1.000000</option>
+			<option id="THRESHOLD">0.000000</option>
+			<option id="REFRESH">FALSE</option>
+			<option id="LEAFSIZE">256</option>
+			<input  id="SEEDS">SEED_GRID</input>
+			<input  id="FEATURES">FEATURES</input>
+			<output id="SEGMENTS">SEGMENTS_GRID</output>
+		</tool>
+	
+		<condition value="0" type="less" variable="MAJORITY_RADIUS">
+			<tool library="grid_filter" module="6" name="Majority Filter">
+				<option id="MODE">1</option>
+				<option id="THRESHOLD">0.000000</option>
+				<option id="RADIUS" varname="TRUE">MAJORITY_RADIUS</option>
+				<input  id="INPUT">SEGMENTS_GRID</input>
+				<output id="RESULT">SEGMENTS_GRID</output>
+			</tool>
+		</condition>
+
+		<tool library="shapes_grid" module="6" name="Vectorising Grid Classes">
+			<option id="CLASS_ALL">1</option>
+			<option id="CLASS_ID">1.000000</option>
+			<option id="SPLIT">0</option>
+			<option id="ALLVERTICES">FALSE</option>
+			<input  id="GRID">SEGMENTS_GRID</input>
+			<output id="POLYGONS">SEGMENTS</output>
+		</tool>
+		
+		<tool library="shapes_grid" module="2" name="Grid Statistics for Polygons">
+			<option id="METHOD"  >0</option>
+			<option id="NAMING"  >1</option>
+			<option id="COUNT"   >FALSE</option>
+			<option id="MIN"     >FALSE</option>
+			<option id="MAX"     >FALSE</option>
+			<option id="RANGE"   >FALSE</option>
+			<option id="SUM"     >FALSE</option>
+			<option id="MEAN"    >TRUE</option>
+			<option id="VAR"     >FALSE</option>
+			<option id="STDDEV"  >FALSE</option>
+			<option id="QUANTILE">0</option>
+			<input  id="GRIDS"   >FEATURES</input>
+			<input  id="POLYGONS">SEGMENTS</input>
+			<output id="RESULT"  >OBJECTS</output>
+		</tool>
+
+		<condition value="1" type="=" variable="POSTPROCESSING">
+			<tool library="table_calculus" module="14" name="Cluster Analysis (Shapes)">
+				<option id="FIELDS">3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32</option>
+				<option id="METHOD">1</option>
+				<option id="NCLUSTER"  varname="TRUE">NCLUSTER</option>
+				<option id="NORMALISE" varname="TRUE">NORMALIZE</option>
+				<input  id="INPUT" >OBJECTS</input>
+				<output id="RESULT">CLUSTERS</output>
+			</tool>
+			<condition value="FALSE" type="=" variable="SPLIT_CLUSTERS">
+				<tool library="shapes_polygons" module="5" name="Polygon Dissolve">
+					<option id="FIELD_1"  >CLUSTER</option>
+					<option id="BND_KEEP" >FALSE</option>
+					<input  id="POLYGONS" >CLUSTERS</input>
+					<output id="DISSOLVED">OBJECTS</output>
+				</tool>
+			</condition>
+			<condition value="TRUE" type="=" variable="SPLIT_CLUSTERS">
+				<tool library="shapes_polygons" module="5" name="Polygon Dissolve">
+					<option id="FIELD_1"  >CLUSTER</option>
+					<option id="BND_KEEP" >FALSE</option>
+					<input  id="POLYGONS" >CLUSTERS</input>
+					<output id="DISSOLVED">DISSOLVED</output>
+				</tool>
+				<tool library="shapes_polygons" module="10" name="Polygon Parts to Separate Polygons">
+					<option id="LAKES"   >FALSE</option>
+					<input  id="POLYGONS">DISSOLVED</input>
+					<output id="PARTS"   >OBJECTS</output>
+				</tool>
+			</condition>
+		</condition>
+	</tools>
 </toolchain>
diff --git a/src/scripting/toolchains/points_to_contour.xml b/src/scripting/toolchains/points_to_contour.xml
old mode 100644
new mode 100755
diff --git a/src/scripting/toolchains/sieve_and_clump.xml b/src/scripting/toolchains/sieve_and_clump.xml
old mode 100644
new mode 100755
diff --git a/src/scripting/toolchains/temperature_downscaling.xml b/src/scripting/toolchains/temperature_downscaling.xml
old mode 100644
new mode 100755
index bd70f0a..bfbf8a2
--- a/src/scripting/toolchains/temperature_downscaling.xml
+++ b/src/scripting/toolchains/temperature_downscaling.xml
@@ -4,16 +4,9 @@
 	<identifier>t_downscale</identifier>
 	<menu absolute="true">Climate|Tools</menu>
 	<name>Lapse Rate Based Temperature Downscaling</name>
-	<author>Conrad (c) 2015</author>
+	<author>O.Conrad (c) 2015</author>
 	<description>
-		The lapse rate based temperature downscaling is quite simple but
-		might perform well for mountainous regions, where a the altitudinal
-		gradient is the main driver for local temperature variation.
-		First, a given lapse rate is used to estimate a sea level temperature from
-		elevations and temperatures at a coarse resolution. Second, the same
-		lapse rate is used to estimate the terrain surface temperature using higher
-		resoluted elevation data with the spline interpolated sea level temperatures
-		from the previous step.
+		The [[i]]Lapse Rate Based Temperature Downscaling[[/i]] is quite simple, but might perform well for mountainous regions, where the altitudinal gradient is the main driver for local temperature variation. First, a given lapse rate is used to estimate sea level temperatures from elevation and temperature data at a coarse resolution. Second, the same lapse rate is used to estimate the terrain surface temperature using higher resoluted elevation data and the spline interpolated sea level t [...]
 	</description>
 	
 	<parameters>
@@ -27,8 +20,8 @@
 			<name>Temperature</name>
 		</input>
 		<input varname="LAPSE_RATES" type="grid" parent="LORES_GRID_SYSTEM" optional="true">
-			<name>Lapse Rate</name>
-			<description>lapse rate in degree of temperature per 100 meter</description>
+			<name>Lapse Rates</name>
+			<description>lapse rates in degree of temperature per 100 meter</description>
 		</input>
 		<output varname="LORES_SLT" type="grid" parent="LORES_GRID_SYSTEM" optional="true">
 			<name>Temperature at Sea Level</name>
@@ -45,9 +38,9 @@
 		</output>
 		
 		<option varname="LAPSE_RATE" type="double">
-			<name>Lapse Rate</name>
+			<name>Constant Lapse Rate</name>
 			<value min="0.0">0.6</value>
-			<description>lapse rate in degree of temperature per 100 meter</description>
+			<description>constant lapse rate in degree of temperature per 100 meter. used if no lapse rate grid is specified.</description>
 			<condition type="not_exists">LAPSE_RATES</condition>
 		</option>
 	</parameters>
@@ -55,37 +48,37 @@
 	<tools>
 		<condition type="exists" varname="LAPSE_RATES">
 			<tool library="grid_calculus" module="1" name="Grid Calculator">
-				<input id="GRIDS">LORES_DEM</input>
-				<input id="GRIDS">LORES_T</input>
-				<input id="GRIDS">LAPSE_RATES</input>
-				<output id="RESULT">LORES_SLT</output>
+				<input  id="GRIDS"  >LORES_DEM</input>
+				<input  id="GRIDS"  >LORES_T</input>
+				<input  id="GRIDS"  >LAPSE_RATES</input>
+				<output id="RESULT" >LORES_SLT</output>
 				<option id="FORMULA">g2 + g1 * g3 / 100</option>
-				<option id="NAME">Temperature at Sea Level</option>
+				<option id="NAME"   >Temperature at Sea Level</option>
 			</tool>
 			<tool library="grid_calculus" module="1" name="Grid Calculator">
-				<input id="GRIDS">HIRES_DEM</input>
-				<input id="XGRIDS">LORES_SLT</input>
-				<input id="XGRIDS">LAPSE_RATES</input>
-				<output id="RESULT">HIRES_T</output>
+				<input  id="GRIDS"  >HIRES_DEM</input>
+				<input  id="XGRIDS" >LORES_SLT</input>
+				<input  id="XGRIDS" >LAPSE_RATES</input>
+				<output id="RESULT" >HIRES_T</output>
 				<option id="FORMULA">h1 - g1 * h2 / 100</option>
-				<option id="NAME">Temperature</option>
+				<option id="NAME"   >Temperature</option>
 			</tool>
 		</condition>
 
 		<condition type="not_exists" varname="LAPSE_RATES">
 			<tool library="grid_calculus" module="1" name="Grid Calculator">
-				<input id="GRIDS">LORES_DEM</input>
-				<input id="GRIDS">LORES_T</input>
-				<output id="RESULT">LORES_SLT</output>
+				<input  id="GRIDS"  >LORES_DEM</input>
+				<input  id="GRIDS"  >LORES_T</input>
+				<output id="RESULT" >LORES_SLT</output>
 				<option id="FORMULA">g2 + g1 * $(LAPSE_RATE) / 100</option>
-				<option id="NAME">Temperature at Sea Level</option>
+				<option id="NAME"   >Temperature at Sea Level</option>
 			</tool>
 			<tool library="grid_calculus" module="1" name="Grid Calculator">
-				<input id="GRIDS">HIRES_DEM</input>
-				<input id="XGRIDS">LORES_SLT</input>
-				<output id="RESULT">HIRES_T</output>
+				<input  id="GRIDS"  >HIRES_DEM</input>
+				<input  id="XGRIDS" >LORES_SLT</input>
+				<output id="RESULT" >HIRES_T</output>
 				<option id="FORMULA">h1 - g1 * $(LAPSE_RATE) / 100</option>
-				<option id="NAME">Temperature</option>
+				<option id="NAME"   >Temperature</option>
 			</tool>
 		</condition>
 	</tools>
diff --git a/src/scripting/toolchains/terrain_analysis.xml b/src/scripting/toolchains/terrain_analysis.xml
old mode 100644
new mode 100755
diff --git a/src/scripting/toolchains/terrain_segmentation.xml b/src/scripting/toolchains/terrain_segmentation.xml
old mode 100644
new mode 100755
diff --git a/src/scripting/toolchains/tta_LandCover.xml b/src/scripting/toolchains/tta_LandCover.xml
new file mode 100755
index 0000000..44f0b59
--- /dev/null
+++ b/src/scripting/toolchains/tta_LandCover.xml
@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<toolchain saga-version="2.2.4">
+	<group>tta_tools</group>
+	<identifier>tta_LandCover</identifier>
+	<name>Land Cover Scenario Offset</name>
+	<author>R.Fisher (c) 2015</author>
+	<description>
+		Prepare your scenario for subsequent travel time analysis with information on topography, road network, and vegetation cover.
+		Topography is used for automated channel network delineation. Resulting channels are categorized by their Strahler order. In the final land cover map channels use numbers above 100 (i.e. '101, 102, 103, ...' representing increasing Strahler orders). Likewise roads use numbers above 200 with the exact number based on the attribute chosen to specify the road type (i.e. 201, 202, 203, ...). Vegetation cover takes the original numbers for the final map, so these should not intermingle with [...]
+
+		Find further information at Rohan Fisher's web page on <a href="http://rohanfisher.wordpress.com/travel-time-modelling-saga/">Travel Time Modelling with SAGA</a>.
+
+		References:
+		<ul>
+		<li>Myers, Bronwyn A., Rohan P. Fisher, Nelson Nelson, and Suzanne Belton. "Defining Remoteness from Health Care: Integrated Research on Accessing Emergency Maternal Care in Indonesia." (2015).</li>
+		<li>Ray, Nicolas, and Steeve Ebener. "AccessMod 3.0: computing geographic coverage and accessibility to health care services using anisotropic movement of patients." International Journal of Health Geographics 7.1 (2008): 63.</li>
+		</ul>
+	</description>
+	
+	<parameters>
+		<input varname="ROAD_LINES" type="shapes">
+			<name>Roads</name>
+		</input>
+		<option varname="ROAD_CLASS" type="table_field" parent="ROAD_LINES">
+			<name>Attribute</name>
+			<description>attribute specifying road's type with regard to travel time</description>
+		</option>
+
+		<input varname="CHANNEL_LINES" type="shapes" optional="true">
+			<name>Channel Network</name>
+		</input>
+		<option varname="CHANNEL_ORDER" type="table_field" parent="CHANNEL_LINES">
+			<name>Stream Order</name>
+		</option>
+		<option varname="DEM_SYSTEM" type="grid_system">
+			<condition type="not_exists">CHANNEL_LINES</condition>
+			<name>Grid System</name>
+		</option>
+		<input varname="DEM" type="grid" parent="DEM_SYSTEM">
+			<name>Elevation</name>
+		</input>
+
+		<option varname="VEG_SYSTEM" type="grid_system">
+			<name>Grid System</name>
+		</option>
+		<input varname="VEGETATION" type="grid" parent="VEG_SYSTEM">
+			<name>Vegetation</name>
+		</input>
+		<output varname="LANDCOVER" type="grid" parent="VEG_SYSTEM">
+			<output_name>Land Cover</output_name>
+			<name>Land Cover</name>
+			<colours>14</colours>
+		</output>
+	</parameters>
+	
+	<tools>
+		<comment> 1.) channel network</comment>
+		<tool library="grid_calculus" module="1" name="Grid Calculator">
+			<comment>create target grid using vegetation layer's grid system with type=4 (signed short integer)</comment>
+			<option id="FORMULA">0</option>
+			<option id="TYPE">4</option>
+			<input  id="GRIDS">VEGETATION</input>
+			<output id="RESULT">CHANNEL_GRID</output>
+		</tool>
+		<condition type="exists" variable="CHANNEL_LINES">
+			<tool library="grid_gridding" module="0" name="Shapes to Grid">
+				<option id="MULTIPLE">3</option>
+				<option id="TARGET_DEFINITION">1</option>
+				<input  id="INPUT">CHANNEL_LINES</input>
+				<option id="FIELD" varname="true">CHANNEL_ORDER</option>
+				<output id="GRID">CHANNEL_GRID</output>
+			</tool>
+		</condition>
+		<condition type="not_exists" variable="CHANNEL_LINES">
+			<tool library="ta_preprocessor" module="2" name="Sink Removal">
+				<input  id="DEM">DEM</input>
+				<output id="DEM_PREPROC">DEM_NOSINKS</output>
+			</tool>
+			<tool library="ta_channels" module="5" name="Channel Network and Drainage Basins">
+				<option id="THRESHOLD">5</option>
+				<input  id="DEM">DEM_NOSINKS</input>
+				<output id="SEGMENTS">DEM_CHANNEL_LINES</output>
+			</tool>
+			<tool library="grid_gridding" module="0" name="Shapes to Grid">
+				<option id="MULTIPLE">3</option>
+				<option id="TARGET_DEFINITION">1</option>
+				<input  id="INPUT">DEM_CHANNEL_LINES</input>
+				<option id="FIELD">ORDER</option>
+				<output id="GRID">CHANNEL_GRID</output>
+			</tool>
+		</condition>
+		<tool library="grid_calculus" module="1" name="Grid Calculator">
+			<comment>change no-data values from '-32767' to '0' and also all cells with order less than 5</comment>
+			<option id="FORMULA">ifelse(lt(g1,0), 0, g1)</option>
+			<option id="USE_NODATA">TRUE</option>
+			<option id="TYPE">4</option>
+			<input  id="GRIDS">CHANNEL_GRID</input>
+			<output id="RESULT">CHANNEL_GRID</output>
+		</tool>
+		
+		<comment> 2.) road network</comment>
+		<tool library="grid_calculus" module="1" name="Grid Calculator">
+			<comment>create target grid using vegetation layer's grid system with type=4 (signed short integer)</comment>
+			<option id="FORMULA">0</option>
+			<option id="TYPE">4</option>
+			<input  id="GRIDS">VEGETATION</input>
+			<output id="RESULT">ROADS_GRID</output>
+		</tool>
+		<tool library="grid_gridding" module="0" name="Shapes to Grid">
+			<option id="MULTIPLE">2</option>
+			<option id="TARGET_DEFINITION">1</option>
+			<input  id="INPUT">ROAD_LINES</input>
+			<option id="FIELD" varname="1">ROAD_CLASS</option>
+			<output id="GRID">ROADS_GRID</output>
+		</tool>
+		<tool library="grid_calculus" module="1" name="Grid Calculator">
+			<comment>change no-data values from '-32767' to '0'</comment>
+			<option id="FORMULA">ifelse(lt(g1,0), 0, g1)</option>
+			<option id="USE_NODATA">TRUE</option>
+			<option id="TYPE">4</option>
+			<input  id="GRIDS">ROADS_GRID</input>
+			<output id="RESULT">ROADS_GRID</output>
+		</tool>
+
+		<comment> 3.) combine roads, channels, vegetation</comment>
+		<tool library="grid_calculus" module="1" name="Grid Calculator">
+			<option id="FORMULA">ifelse(gt(g1,0), 200+g1, ifelse(gt(g2,0), 100+g2, g3))</option>
+			<option id="TYPE">4</option>
+			<input  id="GRIDS">ROADS_GRID</input>
+			<input  id="GRIDS">CHANNEL_GRID</input>
+			<input  id="GRIDS">VEGETATION</input>
+			<output id="RESULT">LANDCOVER</output>
+		</tool>
+	</tools>
+</toolchain>
diff --git a/src/scripting/toolchains/tta_TravelTime.xml b/src/scripting/toolchains/tta_TravelTime.xml
new file mode 100755
index 0000000..3d68404
--- /dev/null
+++ b/src/scripting/toolchains/tta_TravelTime.xml
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<toolchain saga-version="2.2.4">
+	<group>tta_tools</group>
+	<identifier>tta_TravelTime</identifier>
+	<name>Travel Time Calculation</name>
+	<author>R.Fisher (c) 2015</author>
+	<description>
+		Perform travel time calculation.
+
+		Find further information at Rohan Fisher's web page on <a href="http://rohanfisher.wordpress.com/travel-time-modelling-saga/">Travel Time Modelling with SAGA</a>.
+
+		References:
+		<ul>
+		<li>Myers, Bronwyn A., Rohan P. Fisher, Nelson Nelson, and Suzanne Belton. "Defining Remoteness from Health Care: Integrated Research on Accessing Emergency Maternal Care in Indonesia." (2015).</li>
+		<li>Ray, Nicolas, and Steeve Ebener. "AccessMod 3.0: computing geographic coverage and accessibility to health care services using anisotropic movement of patients." International Journal of Health Geographics 7.1 (2008): 63.</li>
+		</ul>
+	</description>
+
+	<parameters>
+		<input varname="DESTINATIONS" type="shapes">
+			<name>Destination Points</name>
+		</input>
+		<option varname="GRID_SYSTEM" type="grid_system">
+			<name>Grid System</name>
+		</option>
+		<input varname="LANDCOVER" type="grid" parent="GRID_SYSTEM">
+			<name>Land Cover</name>
+		</input>
+		<input varname="LANDCOVER_TO_TRAVELTIME" type="table">
+			<name>Travel Times</name>
+			<description>This table supplies average travel times through a cell (in seconds) for each land cover type</description>
+		</input>
+		<input varname="FIELD_LANDCOVER" type="table_field" parent="LANDCOVER_TO_TRAVELTIME">
+			<name>Land Cover ID</name>
+		</input>
+		<input varname="FIELD_TRAVELTIME" type="table_field" parent="LANDCOVER_TO_TRAVELTIME">
+			<name>Travel Time</name>
+		</input>
+		<output varname="TRAVELTIME_MINUTES" type="grid" parent="GRID_SYSTEM">
+			<output_name>Travel Time</output_name>
+			<name>Travel Time</name>
+			<unit>Minutes</unit>
+			<colours revert="TRUE">16</colours>
+		</output>
+		<input varname="TRAVELTIME_LUT" type="table" optional="true">
+			<name>Travel Time Zones Classification</name>
+			<description>Look-up table for classification of travel time zones.</description>
+		</input>
+	</parameters>
+
+	<tools>
+		<tool library="grid_tools" module="15" name="Reclassify Grid Values">
+			<option id="NODATAOPT">true</option>
+			<option id="NODATA">-99999.000000</option>
+			<option id="RESULT_NODATA_CHOICE">1</option>
+			<option id="RESULT_NODATA_VALUE">-99999.000000</option>
+			<option id="METHOD">3</option>
+			<option id="TOPERATOR">1</option>
+			<option id="F_MIN"  varname="TRUE">FIELD_LANDCOVER</option>
+			<option id="F_MAX"  varname="TRUE">FIELD_LANDCOVER</option>
+			<option id="F_CODE" varname="TRUE">FIELD_TRAVELTIME</option>
+			<input  id="INPUT">LANDCOVER</input>
+			<input  id="RETAB_2">LANDCOVER_TO_TRAVELTIME</input>
+			<output id="RESULT">TRAVELTIME_LOCAL</output>
+		</tool>
+		<tool library="grid_analysis" module="0" name="Accumulated Cost">
+			<option id="THRESHOLD">0.000000</option>
+			<option id="DEST_TYPE">0</option>
+			<input  id="COST">TRAVELTIME_LOCAL</input>
+			<input  id="DEST_POINTS">DESTINATIONS</input>
+			<output id="ACCUMULATED">TRAVELTIME_ACCUMULATED</output>
+		</tool>
+		<tool library="grid_calculus" module="1" name="Grid Calculator">
+			<option id="FORMULA">g1/60</option>
+			<option id="TYPE">7</option>
+			<input  id="GRIDS">TRAVELTIME_ACCUMULATED</input>
+			<output id="RESULT">TRAVELTIME_MINUTES</output>
+		</tool>
+		
+		<condition type="exists" variable="TRAVELTIME_LUT">
+			<tool library="grid_visualisation" module="10" name="Select Look-up Table for Grid Visualization">
+				<input id="GRID">TRAVELTIME_MINUTES</input>
+				<input id="LUT">TRAVELTIME_LUT</input>
+			</tool>
+		</condition>
+	</tools>
+</toolchain>
diff --git a/src/scripting/toolchains/tta_tools.xml b/src/scripting/toolchains/tta_tools.xml
new file mode 100755
index 0000000..b20a9f5
--- /dev/null
+++ b/src/scripting/toolchains/tta_tools.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<toolchains version="1.0.0">
+  <group>travel_time_analysis</group>
+  <identifier>travel_time_analysis</identifier>
+  <name>Travel Time Analysis</name>
+	<menu>Grid|Analysis|Travel Time Analysis</menu>
+	<description>
+		The travel time tools were created to join together and automate a number of processing steps in order to simplify service access modelling. The purpose of these tools is to create a simple open source way of calculating travel time to services to facilitate rapid testing of multiple travel scenarios.
+
+		Two tools have been created using  SAGA GIS Tool Chains. The SAGA Tool Chains capability uses a simple xml scripting code that allows the joining of multiple SAGA processes. The two tools produced are (1) for land cover grid creation and (2) travel time calculation, the latter requiring the output of the first. Separating the two tools allows for simpler and faster execution to test multiple scenarios  with the Travel Time Grid creation tool without having to recalculate the base land  [...]
+
+		Find further information at Rohan Fisher's web page on <a href="http://rohanfisher.wordpress.com/travel-time-modelling-saga/">Travel Time Modelling with SAGA</a>.
+
+		References:
+		<ul>
+		<li>Myers, Bronwyn A., Rohan P. Fisher, Nelson Nelson, and Suzanne Belton. "Defining Remoteness from Health Care: Integrated Research on Accessing Emergency Maternal Care in Indonesia." (2015).</li>
+		<li>Ray, Nicolas, and Steeve Ebener. "AccessMod 3.0: computing geographic coverage and accessibility to health care services using anisotropic movement of patients." International Journal of Health Geographics 7.1 (2008): 63.</li>
+		</ul>
+	</description>
+</toolchains>
diff --git a/src/scripting/toolchains/twi.xml b/src/scripting/toolchains/twi.xml
old mode 100644
new mode 100755
diff --git a/src/scripting/toolchains/upslope_height.xml b/src/scripting/toolchains/upslope_height.xml
old mode 100644
new mode 100755

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/saga.git



More information about the Pkg-grass-devel mailing list