From 895699ddb2a14933d8113ab50c5d6141fecc4a07 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 25 Nov 2024 19:30:04 +0000 Subject: [PATCH 01/36] CI(deps): Update mamba-org/setup-micromamba action to v2.0.2 (#4760) --- .github/workflows/macos.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index 466a61967b7..d966cc87dc9 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -50,7 +50,7 @@ jobs: # Year and week of year so cache key changes weekly run: echo "date=$(date +%Y-%U)" >> "${GITHUB_OUTPUT}" - name: Setup Mamba - uses: mamba-org/setup-micromamba@ab6bf8bf7403e8023a094abeec19d6753bdc143e # v2.0.1 + uses: mamba-org/setup-micromamba@06375d89d211a1232ef63355742e9e2e564bc7f7 # v2.0.2 with: init-shell: bash environment-file: .github/workflows/macos_dependencies.txt From 370a492900ccb7f04ec9e7da9d2766ce1a3d66b6 Mon Sep 17 00:00:00 2001 From: Markus Neteler Date: Mon, 25 Nov 2024 21:48:59 +0100 Subject: [PATCH 02/36] manual: HTML updates in lib/db and db manual pages and README files (#4751) This PR provides minor HTML fixes to `lib/db/` and `db/` manual related files: - convert several `README` to `README.md` - update selected broken URLs - partially sync `grass-mysql.html` and `grass-mesql.html` incl. section order - fix typo: statemets -> statements Extra: - avoid
tags within as not converted properly to Markdown --- db/db.connect/db.connect.html | 10 ++--- db/drivers/README | 28 ------------ db/drivers/README.md | 30 +++++++++++++ db/drivers/mysql/grass-mesql.html | 46 ++++--------------- db/drivers/mysql/grass-mysql.html | 52 +++++++++++----------- db/drivers/postgres/execute.c | 2 +- db/drivers/sqlite/grass-sqlite.html | 8 +++- doc/vector/TODO | 2 +- lib/db/README | 51 --------------------- lib/db/README.md | 59 +++++++++++++++++++++++++ lib/db/dbmi_client/c_update.c | 2 +- lib/db/dbmi_driver/d_update.c | 2 +- lib/db/sqlp/README | 18 -------- lib/db/sqlp/README.md | 24 ++++++++++ lib/db/sqlp/sql.html | 10 ++--- lib/db/sqlp/test/README | 6 --- lib/db/sqlp/test/README.md | 6 +++ lib/htmldriver/htmldriver.html | 4 +- lib/pngdriver/pngdriver.html | 4 +- lib/psdriver/psdriver.html | 4 +- raster/r.basins.fill/r.basins.fill.html | 1 - 21 files changed, 183 insertions(+), 186 deletions(-) delete mode 100644 db/drivers/README create mode 100644 db/drivers/README.md delete mode 100644 lib/db/README create mode 100644 lib/db/README.md delete mode 100644 lib/db/sqlp/README create mode 100644 lib/db/sqlp/README.md delete mode 100644 lib/db/sqlp/test/README create mode 100644 lib/db/sqlp/test/README.md diff --git a/db/db.connect/db.connect.html b/db/db.connect/db.connect.html index 48d6dbee02f..434124b4e65 100644 --- a/db/db.connect/db.connect.html +++ b/db/db.connect/db.connect.html @@ -36,7 +36,7 @@

SQLite (default backend)

PostgreSQL (local connection)

Local storage, database tables stored in database "mydb" -(may require the use of db.login): +(may require the use of db.login):
 db.connect driver=pg database=mydb
@@ -49,7 +49,7 @@ 

PostgreSQL (local connection)

PostgreSQL (network connection)

Network storage, database tables stored in database "mydb" -(may require the use of db.login): +(may require the use of db.login):
 db.connect driver=pg database=mydb
@@ -62,7 +62,7 @@ 

PostgreSQL (network connection)

MySQL (local connection)

Local storage, database tables stored in database "mydb" (may require -the use of db.login): +the use of db.login):
 db.connect driver=mysql database=mydb
@@ -75,7 +75,7 @@ 

MySQL (local connection)

MySQL (network connection)

Network storage, database tables stored in database "mydb" -(may require the use of db.login): +(may require the use of db.login):
 db.connect driver=mysql database=mydb
@@ -88,7 +88,7 @@ 

MySQL (network connection)

ODBC

Network storage, database tables stored in database "mydb" -(may require the use of db.login): +(may require the use of db.login):
 db.connect driver=odbc database=mydb
diff --git a/db/drivers/README b/db/drivers/README
deleted file mode 100644
index e2a2d435f2e..00000000000
--- a/db/drivers/README
+++ /dev/null
@@ -1,28 +0,0 @@
-This directory contains drivers for the DBMI library.
-The driver functions are for internal usage.
-
-The DBMI API to be used for module programming is available in:
-lib/db/
-
-
-NOTE:
-db__driver_* functions are implemented in a driver.  If some of them
-are not used or defined, the driver will use stub functions in
-lib/db/stubs/
-
-For some platforms like Cygwin, multiply defined symbols are not
-resolved in a way that UNIX does.  Even worse is that it is impossible
-to build shared libraries with undefined symbols.  For example,
-libgrass_dbmidriver.so cannot be built without any implementations
-of db__driver_* functions which should be specific to a db driver.
-
-To work around this problem, function pointers are defined to use
-driver's implementations instead of those of the db stubs library.
-To do this automatically, run '../mk_dbdriver_h.sh' in driver's
-directory, #include "dbdriver.h" from main.c, and execute init_dbdriver().
-
-Function pointers are defined in grass6/lib/db/dbmi_driver/dbstubs.h
-This header file can be generated with
-lib/db/dbmi_driver/mk_dbstubs_h.sh
-
-Please read lib/db/README
diff --git a/db/drivers/README.md b/db/drivers/README.md
new file mode 100644
index 00000000000..e98c617267c
--- /dev/null
+++ b/db/drivers/README.md
@@ -0,0 +1,30 @@
+This directory contains drivers for the DBMI library.
+The driver functions are for internal usage.
+
+The DBMI API to be used for module programming is available in:
+`lib/db/`
+
+NOTE:
+`db__driver_*` functions are implemented in a driver. If some of them
+are not used or defined, the driver will use stub functions in
+`lib/db/stubs/`.
+
+For some platforms like Cygwin, multiply defined symbols are not
+resolved in a way that UNIX does. Even worse is that it is impossible
+to build shared libraries with undefined symbols. For example,
+`libgrass*dbmidriver.so` cannot be built without any implementations
+of `db__driver*\*` functions which should be specific to a db driver.
+
+To work around this problem, function pointers are defined to use
+driver's implementations instead of those of the db stubs library.
+To do this automatically, run `../mk_dbdriver_h.sh` (GRASS GIS 6)
+in driver's directory, `#include "dbdriver.h"` from `main.c`, and
+execute `init_dbdriver()`.
+
+Function pointers are defined in `lib/db/dbmi_driver/dbstubs.h`
+This header file can be generated with
+`lib/db/dbmi_driver/mk_dbstubs_h.sh` (GRASS GIS 6).
+
+Please read lib/db/README.md and
+
+
diff --git a/db/drivers/mysql/grass-mesql.html b/db/drivers/mysql/grass-mesql.html
index e04b30a2a8f..1cbe952da41 100644
--- a/db/drivers/mysql/grass-mesql.html
+++ b/db/drivers/mysql/grass-mesql.html
@@ -1,28 +1,7 @@
-
-
-
-GRASS-MySQL embedded driver - GRASS GIS manual
- 
- 
- 
- 
-
-
-
-GRASS logo
- -

MySQL embedded driver in GRASS

- -

KEYWORDS

- -database, attribute table, driver - -

DESCRIPTION

-MySQL database driver in GRASS enables GRASS to store vector -attributes in MySQL embedded database without necessity -to run MySQL server. +MySQL database driver enables GRASS to store vector attributes +in MySQL embedded database without necessity to run MySQL server.

Driver and database name

@@ -68,14 +47,7 @@

Troubleshooting: SQL syntax error

Attempting to use a reserved SQL word as column or table name will result in a "SQL syntax" error. The list of reserved words for MySQL can be -found in the MySQL manual. - -

SEE ALSO

- - -db.connect, -SQL support in GRASS GIS - +found in the MySQL manual.

AUTHOR

@@ -84,11 +56,11 @@

AUTHOR

Credits: Development of the driver was sponsored by Faunalia (Italy) -as part of a project for ATAC. +as part of a project for ATAC. +

SEE ALSO

-
-

Main index - Database index - Topics index - Keywords Index - Full index

-

© 2003-2022 GRASS Development Team, GRASS GIS 8 Reference Manual

- - + +db.connect, +SQL support in GRASS GIS + diff --git a/db/drivers/mysql/grass-mysql.html b/db/drivers/mysql/grass-mysql.html index af8c0273d98..8fdbc831a31 100644 --- a/db/drivers/mysql/grass-mysql.html +++ b/db/drivers/mysql/grass-mysql.html @@ -1,7 +1,7 @@ -MySQL database driver enables GRASS to store vector attributes in -MySQL server. +MySQL database driver enables GRASS to store vector attributes +in MySQL server.

Because vector attribute tables @@ -36,30 +36,31 @@

Driver and database name

  • port - server port number +

    Examples of connection parameters:

    -  db.connect driver=mysql database=mytest
    -  db.connect driver=mysql database='dbname=mytest,host=test.grass.org'
    +db.connect driver=mysql database=mytest
    +db.connect driver=mysql database='dbname=mytest,host=test.grass.org'
     

    Data types

    GRASS supports almost all MySQL data types with following limitations:
      -
    • Binary columns (BINARY, VARBINARY, TINYBLOB, MEDIUMBLOB, - BLOB, LONGBLOB) are not not supported. - If a table with binary column(s) is used in GRASS - a warning is printed and only the supported columns are - returned in query results. +
    • Binary columns (BINARY, VARBINARY, TINYBLOB, MEDIUMBLOB, +BLOB, LONGBLOB) are not not supported. +If a table with binary column(s) is used in GRASS +a warning is printed and only the supported columns are +returned in query results. -
    • Columns of type SET and ENUM are represented as string (VARCHAR). +
    • Columns of type SET and ENUM are represented as string (VARCHAR). -
    • Very large integers in columns of type BIGINT can be lost - or corrupted because GRASS does not support 64 bin integeres - on most platforms. +
    • Very large integers in columns of type BIGINT can be lost +or corrupted because GRASS does not support 64 bin integeres +on most platforms. -
    • GRASS does not currently distinguish types TIMESTAMP and - DATETIME. Both types are in GRASS interpreted as TIMESTAMP. +
    • GRASS does not currently distinguish types TIMESTAMP and +DATETIME. Both types are in GRASS interpreted as TIMESTAMP.

    Indexes

    @@ -104,7 +105,16 @@

    Troubleshooting: SQL syntax error

    Attempting to use a reserved SQL word as column or table name will result in a "SQL syntax" error. The list of reserved words for MySQL can be -found in the MySQL manual. +found in the MySQL manual. + +

    AUTHOR

    + +Radim Blazek + +

    +Credits: Development of the driver was sponsored by +Faunalia (Italy) +as part of a project for ATAC.

    SEE ALSO

    @@ -112,13 +122,3 @@

    SEE ALSO

    db.connect, SQL support in GRASS GIS - -

    Credits

    - -Development of the driver was sponsored by -Faunalia (Italy) -as part of a project for ATAC. - -

    AUTHOR

    - -Radim Blazek diff --git a/db/drivers/postgres/execute.c b/db/drivers/postgres/execute.c index fa6dd556101..99a6c79df11 100644 --- a/db/drivers/postgres/execute.c +++ b/db/drivers/postgres/execute.c @@ -1,7 +1,7 @@ /*! \file db/driver/postgres/execute.c - \brief DBMI - Low Level PostgreSQL database driver - execute statemets + \brief DBMI - Low Level PostgreSQL database driver - execute statements This program is free software under the GNU General Public License (>=v2). Read the file COPYING that comes with GRASS for details. diff --git a/db/drivers/sqlite/grass-sqlite.html b/db/drivers/sqlite/grass-sqlite.html index ae59def1e52..ea2f9526506 100644 --- a/db/drivers/sqlite/grass-sqlite.html +++ b/db/drivers/sqlite/grass-sqlite.html @@ -69,9 +69,13 @@

    SEE ALSO

    db.connect, db.execute, db.select -

    +
    +

    + SQL support in GRASS GIS -

    +
    +

    + SQLite web site, SQLite manual, sqlite - Management Tools diff --git a/doc/vector/TODO b/doc/vector/TODO index 75671559263..d43bffca15d 100644 --- a/doc/vector/TODO +++ b/doc/vector/TODO @@ -205,7 +205,7 @@ implemented in all drivers. SQLite driver ------------- Current implementation is very slow with large updates/inserts. I -think that it is because all statemets are parsed and it should be +think that it is because all statements are parsed and it should be possible to improve by insert/update cursors (see above). DBF driver diff --git a/lib/db/README b/lib/db/README deleted file mode 100644 index 9dc8faf9ab6..00000000000 --- a/lib/db/README +++ /dev/null @@ -1,51 +0,0 @@ -/**************************************************************************** - * - * MODULE: DBMI library - * AUTHOR(S): Joel Jones (CERL/UIUC) - * Radim Blazek , - * Brad Douglas , - * Glynn Clements , - * Roberto Flor, Hamish Bowman , - * Markus Neteler , - * Huidae Cho , - * Paul Kelly , - * Martin Landa , - * Moritz Lennert , - * Daniel Calvelo Aros , - * Bernhard Reiter , - * Alex Shevlakov - * PURPOSE: database management functions for modules and drivers - * COPYRIGHT: (C) 2003-2006 by the GRASS Development Team - * - * This program is free software under the GNU General Public - * License (>=v2). Read the file COPYING that comes with GRASS - * for details. - * - *****************************************************************************/ - -DBMI Library - -Original author: Joel Jones (jjones * zorro.cecer.army.mil | jjones * uiuc.edu ) - Ref: https://lists.osgeo.org/pipermail/grass-dev/1995-February/002015.html - -Directory contents: - -dbmi: DataBase Management Interface (db_*() functions) - dbmi_base: contains functions for modules, drivers (../../db/drivers/) - dbmi_client: contains functions for modules - dbmi_driver: contains functions for drivers (../../db/drivers/) - -sqlp: SQL parser library -stubs: stubs for unimplemented DB functions - -The DBMI drivers are stored in -../../db/drivers/ - -The DBMI user modules are stored in -../../db/base/ - -NOTE: - Please read db/drivers/README - -To generate dbmi_driver/dbstubs.h automatically, run './mk_dbstubs_h.sh' in -dbmi_driver/ directory. diff --git a/lib/db/README.md b/lib/db/README.md new file mode 100644 index 00000000000..227d628fa48 --- /dev/null +++ b/lib/db/README.md @@ -0,0 +1,59 @@ +## DBMI library + +### Purpose + +Database management functions for modules and drivers. + +### Authors + +Original author: + +- Joel Jones (CERL/UIUC) (jjones zorro.cecer.army.mil) + +Ref: + +Further authors: + +- Radim Blazek (radim.blazek gmail.com) +- Brad Douglas (rez touchofmadness.com) +- Glynn Clements (glynn gclements.plus.com) +- Roberto Flor, Hamish Bowman (hamish_b yahoo.com) +- Markus Neteler (neteler itc.it) +- Huidae Cho (grass4u gmail.com) +- Paul Kelly (paul-grass stjohnspoint.co.uk) +- Martin Landa (landa.martin gmail.com) +- Moritz Lennert (mlennert club.worldonline.be) +- Daniel Calvelo Aros (dca.gis gmail.com) +- Bernhard Reiter (bernhard intevation.de) +- Alex Shevlakov (sixote yahoo.com) + +### Copyright + +(C) 2003-2024 by the GRASS Development Team + +### License + +This program is free software under the GNU General Public +License (>=v2). Read the file COPYING that comes with GRASS +for details. + +### Directory contents + +- `dbmi/`: DataBase Management Interface (`db_*()` functions) + - `dbmi_base/`: contains functions for modules, drivers (`../../db/drivers/`) + - `dbmi_client/`: contains functions for modules + - `dbmi_driver/`: contains functions for drivers (`../../db/drivers/`) +- `sqlp/`: SQL parser library +- `stubs/`: stubs for unimplemented DB functions + +The DBMI drivers are stored in +`../../db/drivers/` + +The DBMI user modules are stored in +`../../db/base/` + +NOTE: +Please read db/drivers/README.md + +To generate `dbmi_driver/dbstubs.h` automatically, run `./mk_dbstubs_h.sh` in +`dbmi_driver/` directory (GRASS GIS 6). diff --git a/lib/db/dbmi_client/c_update.c b/lib/db/dbmi_client/c_update.c index 9a8a0d6e4cd..399f19d8155 100644 --- a/lib/db/dbmi_client/c_update.c +++ b/lib/db/dbmi_client/c_update.c @@ -1,7 +1,7 @@ /*! * \file db/dbmi_client/c_update.c * - * \brief DBMI Library (client) - update statemets + * \brief DBMI Library (client) - update statements * * (C) 1999-2008 by the GRASS Development Team * diff --git a/lib/db/dbmi_driver/d_update.c b/lib/db/dbmi_driver/d_update.c index 5d601679082..ed7a501a7c4 100644 --- a/lib/db/dbmi_driver/d_update.c +++ b/lib/db/dbmi_driver/d_update.c @@ -1,7 +1,7 @@ /*! * \file db/dbmi_driver/d_update.c * - * \brief DBMI Library (driver) - update statemets + * \brief DBMI Library (driver) - update statements * * (C) 1999-2008 by the GRASS Development Team * diff --git a/lib/db/sqlp/README b/lib/db/sqlp/README deleted file mode 100644 index 9a23b0925e8..00000000000 --- a/lib/db/sqlp/README +++ /dev/null @@ -1,18 +0,0 @@ -sqlp is SQL parser library - -sqp is intended as library for simple dbmi drivers (like dbf, txt). -yac.y and lex.l was originally stolen from unixODBC 3/2001 and modified. - -An input may be subset of SQL statements. Currently supported: -SELECT FROM WHERE -INSERT INTO -UPDATE WHERE -DELETE FROM WHERE -CREATE TABLE -DROP TABLE -[...] - -New types have to be added in yac.y, lex.l, print.c and -../../../include/sqlp.h . -In ./test/ is a test program to the the SQL parser (see -README there). diff --git a/lib/db/sqlp/README.md b/lib/db/sqlp/README.md new file mode 100644 index 00000000000..852126fb157 --- /dev/null +++ b/lib/db/sqlp/README.md @@ -0,0 +1,24 @@ +## SQL parser library + +sqlp is the SQL parser library. + +sqp is intended as library for simple dbmi drivers (like dbf, txt). +`yac.y` and `lex.l` was originally stolen from unixODBC 3/2001 and modified. + +An input may be subset of SQL statements. Currently supported: + +```sql +SELECT FROM WHERE +INSERT INTO +UPDATE WHERE +DELETE FROM WHERE +CREATE TABLE +DROP TABLE +[...] +``` + +New types have to be added in `yac.y`, `lex.l`, `print.c` and +`../../../include/sqlp.h`. + +In `./test/` is a test program to the the SQL parser (see +README.md there). diff --git a/lib/db/sqlp/sql.html b/lib/db/sqlp/sql.html index eaed6a74b70..a2dc32da2a5 100644 --- a/lib/db/sqlp/sql.html +++ b/lib/db/sqlp/sql.html @@ -29,19 +29,19 @@

    Database drivers

    - + - + - + @@ -237,4 +237,4 @@

    SEE ALSO

    AUTHOR

    -Radmin Blazek +Radim Blazek diff --git a/lib/db/sqlp/test/README b/lib/db/sqlp/test/README deleted file mode 100644 index d703f03bd0c..00000000000 --- a/lib/db/sqlp/test/README +++ /dev/null @@ -1,6 +0,0 @@ -Test of sql parser library. - -sqlptest reads sql statements (one per row) from standard -input and writes results of parser to standard output. - -Some test statemets are in ./test diff --git a/lib/db/sqlp/test/README.md b/lib/db/sqlp/test/README.md new file mode 100644 index 00000000000..a6aae0fe947 --- /dev/null +++ b/lib/db/sqlp/test/README.md @@ -0,0 +1,6 @@ +## Test of SQL parser library + +`sqlptest` reads SQL statements (one per row) from standard +input and writes results of parser to standard output. + +Some test statements are in `./test`. diff --git a/lib/htmldriver/htmldriver.html b/lib/htmldriver/htmldriver.html index 3e14f240805..3ed24c7662d 100644 --- a/lib/htmldriver/htmldriver.html +++ b/lib/htmldriver/htmldriver.html @@ -185,7 +185,9 @@

    SEE ALSO

    PNG driver, HTML driver, variables -

    + +

    + d.rast, d.vect, d.mon, diff --git a/lib/pngdriver/pngdriver.html b/lib/pngdriver/pngdriver.html index d0eab9f4125..1b1f6b2a2cb 100644 --- a/lib/pngdriver/pngdriver.html +++ b/lib/pngdriver/pngdriver.html @@ -99,7 +99,9 @@

    SEE ALSO

    PS driver, HTML driver, variables -

    +
    +

    + d.rast, d.vect, d.mon, diff --git a/lib/psdriver/psdriver.html b/lib/psdriver/psdriver.html index 3cc9bf7404f..31af82fae88 100644 --- a/lib/psdriver/psdriver.html +++ b/lib/psdriver/psdriver.html @@ -85,7 +85,9 @@

    SEE ALSO

    PNG driver, HTML driver, variables -

    +
    +

    + d.rast, d.vect, d.mon, diff --git a/raster/r.basins.fill/r.basins.fill.html b/raster/r.basins.fill/r.basins.fill.html index a92e242d198..2e210b8298d 100644 --- a/raster/r.basins.fill/r.basins.fill.html +++ b/raster/r.basins.fill/r.basins.fill.html @@ -22,7 +22,6 @@

    DESCRIPTION

    If the resulting map layer from this program appears to have holes within a subbasin, the program should be rerun with a higher number of passes. -

    NOTES

    From 63fc743197105213415faedf833220037bad11aa Mon Sep 17 00:00:00 2001 From: Markus Neteler Date: Mon, 25 Nov 2024 21:51:48 +0100 Subject: [PATCH 03/36] manual: fix broken HTML tags (#4757) This PR fixes some broken HTML tags identified with a test run of the HTML validation with super-linter. See logs showing the errors at: https://github.com/echoix/grass/actions/runs/12001379426/job/33451802353?pr=303#step:4:8310 --- raster/r.texture/r.texture.html | 12 ++++++------ scripts/v.clip/v.clip.html | 2 +- temporal/t.rast.extract/t.rast.extract.html | 6 +++--- vector/v.surf.rst/v.surf.rst.html | 8 ++++---- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/raster/r.texture/r.texture.html b/raster/r.texture/r.texture.html index 93b089a86fe..3fc8f557770 100644 --- a/raster/r.texture/r.texture.html +++ b/raster/r.texture/r.texture.html @@ -200,7 +200,7 @@

    Performance


    Figure 1: Benchmark shows execution time for different number of cells (1M, 2M, 4M, and 8M) and - the fixed size of window (3×3). + the fixed size of window (3×3).
    Performance
    Figure 2: Benchmark shows efficiency for different numbers of cells (1M, 2M, 4M, and 8M) and - the fixed size of window (3×3). + the fixed size of window (3×3).
    Performance
    Figure 3: Benchmark shows execution time for different sizes of windows - (3×3, 9×9, - 15×15, and 27×27) + (3×3, 9×9, + 15×15, and 27×27) and the fixed number of cells (1M).
    @@ -225,8 +225,8 @@

    Performance

    alt="efficiency benchmark for r.texture with different window sizes" border="0">
    Figure 4: Benchmark shows efficiency for different - sizes of windows (3×3, 9×9, - 15×15, and 27×27) + sizes of windows (3×3, 9×9, + 15×15, and 27×27) and the fixed number of cells (1M).
    diff --git a/scripts/v.clip/v.clip.html b/scripts/v.clip/v.clip.html index b4d93121d9a..17d364d713c 100644 --- a/scripts/v.clip/v.clip.html +++ b/scripts/v.clip/v.clip.html @@ -22,7 +22,7 @@

    NOTES

    and/or lines can be achieved using v.overlay. Clipping of points can be performed -with v.select. +with v.select.

    EXAMPLES

    diff --git a/temporal/t.rast.extract/t.rast.extract.html b/temporal/t.rast.extract/t.rast.extract.html index bc3b0b30f7c..f8e366250e4 100644 --- a/temporal/t.rast.extract/t.rast.extract.html +++ b/temporal/t.rast.extract/t.rast.extract.html @@ -27,16 +27,16 @@

    NOTES

    -t.rast.extract input=tempmean_monthly where="start_time > '2010-01-05'" \
    +t.rast.extract input=tempmean_monthly where="start_time > '2010-01-05'" \
                    output=selected_tempmean_monthly basename=new_tmean_month \
    -               expression="if(tempmean_monthly < 0, null(), tempmean_monthly)"
    +               expression="if(tempmean_monthly < 0, null(), tempmean_monthly)"
     

    EXAMPLE

     t.rast.extract input=tempmean_monthly output=tempmean_monthly_later_2012 \
    -               where="start_time >= '2012-01-01'"
    +               where="start_time >= '2012-01-01'"
     
     t.rast.list tempmean_monthly_later_2012
     name|mapset|start_time|end_time
    diff --git a/vector/v.surf.rst/v.surf.rst.html b/vector/v.surf.rst/v.surf.rst.html
    index 199ca4fc3ca..8194aef36d9 100644
    --- a/vector/v.surf.rst/v.surf.rst.html
    +++ b/vector/v.surf.rst/v.surf.rst.html
    @@ -305,14 +305,14 @@ 

    Performance

    benchmark for v.surf.rst
    Figure 1: Benchmark shows execution time for different - number of cells (1M, 2M, 4M, and 8M). + number of cells (1M, 2M, 4M, and 8M).
    benchmark for cross-validation of
      v.surf.rst
    Figure 2: Benchmark shows execution time for running cross-validation on - different number of cells (100k, 200k, 400k, and 800k). + different number of cells (100k, 200k, 400k, and 800k).

    EXAMPLE

    @@ -355,10 +355,10 @@

    Usage of the where parameter

    v.db.univar -e elevrand column=value # interpolation based on subset of points (only those over 1st quartile) -v.surf.rst input=elevrand zcolumn=value elevation=elev_partial npmin=100 where="value > 94.9" +v.surf.rst input=elevrand zcolumn=value elevation=elev_partial npmin=100 where="value > 94.9" r.colors map=elev_partial raster=elevation d.rast elev_partial -d.vect elevrand where="value > 94.9" +d.vect elevrand where="value > 94.9"

    REFERENCES

    From 6366aade04f8f3add13ffe0c2ad6c79484247e33 Mon Sep 17 00:00:00 2001 From: Bas Couwenberg Date: Tue, 26 Nov 2024 02:29:05 +0100 Subject: [PATCH 04/36] doc: fix spelling errors (#3900) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fix spelling errors. * allows to -> allow ing * overlaping -> overlapping * refernce -> reference Co-authored-by: Markus Neteler Co-authored-by: Edouard Choinière <27212526+echoix@users.noreply.github.com> --- docker/ubuntu/README.md | 2 +- imagery/i.signatures/i.signatures.html | 2 +- locale/po/grassmods_ar.po | 6 +++--- locale/po/grassmods_bn.po | 6 +++--- locale/po/grassmods_cs.po | 6 +++--- locale/po/grassmods_de.po | 6 +++--- locale/po/grassmods_el.po | 6 +++--- locale/po/grassmods_es.po | 6 +++--- locale/po/grassmods_fi.po | 6 +++--- locale/po/grassmods_fr.po | 6 +++--- locale/po/grassmods_hu.po | 6 +++--- locale/po/grassmods_id_ID.po | 6 +++--- locale/po/grassmods_it.po | 6 +++--- locale/po/grassmods_ja.po | 6 +++--- locale/po/grassmods_ko.po | 6 +++--- locale/po/grassmods_lv.po | 6 +++--- locale/po/grassmods_ml.po | 6 +++--- locale/po/grassmods_pl.po | 6 +++--- locale/po/grassmods_pt.po | 6 +++--- locale/po/grassmods_pt_BR.po | 6 +++--- locale/po/grassmods_ro.po | 6 +++--- locale/po/grassmods_ru.po | 6 +++--- locale/po/grassmods_si.po | 6 +++--- locale/po/grassmods_sl.po | 6 +++--- locale/po/grassmods_ta.po | 6 +++--- locale/po/grassmods_th.po | 6 +++--- locale/po/grassmods_tr.po | 6 +++--- locale/po/grassmods_uk.po | 6 +++--- locale/po/grassmods_vi.po | 6 +++--- locale/po/grassmods_zh.po | 6 +++--- locale/po/grassmods_zh_CN.po | 6 +++--- locale/po/grasswxpy_ar.po | 2 +- locale/po/grasswxpy_bn.po | 2 +- locale/po/grasswxpy_cs.po | 2 +- locale/po/grasswxpy_el.po | 2 +- locale/po/grasswxpy_es.po | 2 +- locale/po/grasswxpy_fi.po | 2 +- locale/po/grasswxpy_fr.po | 2 +- locale/po/grasswxpy_hu.po | 2 +- locale/po/grasswxpy_id_ID.po | 2 +- locale/po/grasswxpy_it.po | 2 +- locale/po/grasswxpy_ja.po | 2 +- locale/po/grasswxpy_ko.po | 2 +- locale/po/grasswxpy_lv.po | 2 +- locale/po/grasswxpy_ml.po | 2 +- locale/po/grasswxpy_pl.po | 2 +- locale/po/grasswxpy_pt.po | 2 +- locale/po/grasswxpy_pt_BR.po | 2 +- locale/po/grasswxpy_ro.po | 2 +- locale/po/grasswxpy_ru.po | 2 +- locale/po/grasswxpy_si.po | 2 +- locale/po/grasswxpy_sl.po | 2 +- locale/po/grasswxpy_ta.po | 2 +- locale/po/grasswxpy_th.po | 2 +- locale/po/grasswxpy_tr.po | 2 +- locale/po/grasswxpy_uk.po | 2 +- locale/po/grasswxpy_vi.po | 2 +- locale/po/grasswxpy_zh.po | 2 +- locale/po/grasswxpy_zh_CN.po | 2 +- locale/templates/grassmods.pot | 6 +++--- locale/templates/grasswxpy.pot | 2 +- raster/r.horizon/r.horizon.html | 2 +- raster3d/r3.gwflow/r3.gwflow.html | 2 +- renovate.json5 | 4 ++-- scripts/v.dissolve/v.dissolve.py | 2 +- vector/v.db.select/v.db.select.html | 2 +- 66 files changed, 127 insertions(+), 127 deletions(-) diff --git a/docker/ubuntu/README.md b/docker/ubuntu/README.md index 9a45651504c..a8f2764a239 100644 --- a/docker/ubuntu/README.md +++ b/docker/ubuntu/README.md @@ -88,7 +88,7 @@ bash-5.0# __To build a latest version with wxgui__: -The `GUI` build argument allows to choose if the GUI should +The `GUI` build argument allows choosing if the GUI should be included in the build (`GUI=with`) or not (`GUI=without`). ```bash diff --git a/imagery/i.signatures/i.signatures.html b/imagery/i.signatures/i.signatures.html index 403269ec84c..7f3ba1920e7 100644 --- a/imagery/i.signatures/i.signatures.html +++ b/imagery/i.signatures/i.signatures.html @@ -1,6 +1,6 @@

    DESCRIPTION

    -i.signatures module allows to manage signature files: +i.signatures module allows managing signature files:
    • "sig" – generated by i.gensig for i.maxlik
    • diff --git a/locale/po/grassmods_ar.po b/locale/po/grassmods_ar.po index cbb43ec6e9e..3c4c68d45f8 100644 --- a/locale/po/grassmods_ar.po +++ b/locale/po/grassmods_ar.po @@ -35230,7 +35230,7 @@ msgstr "" #: ../locale/scriptstrings/v.what.spoly_to_translate.c:1 msgid "" -"Queries vector map with overlaping \"spaghetti\" polygons (e.g. Landsat " +"Queries vector map with overlapping \"spaghetti\" polygons (e.g. Landsat " "footprints) at given location. Polygons must have not intersected boundaries." msgstr "" @@ -40743,7 +40743,7 @@ msgstr "" #: ../locale/scriptstrings/v.dissolve_to_translate.c:1 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" @@ -51689,7 +51689,7 @@ msgstr "كتابة ملف جديد...\n" #: ../locale/scriptstrings/v.scatterplot_to_translate.c:85 msgid "" -"Colum with categories. If selected, a separate ellipse will be drawn for " +"Column with categories. If selected, a separate ellipse will be drawn for " "each group/category" msgstr "" diff --git a/locale/po/grassmods_bn.po b/locale/po/grassmods_bn.po index f3526d45180..53b06dd272f 100644 --- a/locale/po/grassmods_bn.po +++ b/locale/po/grassmods_bn.po @@ -32646,7 +32646,7 @@ msgstr "" #: ../locale/scriptstrings/v.what.spoly_to_translate.c:1 msgid "" -"Queries vector map with overlaping \"spaghetti\" polygons (e.g. Landsat " +"Queries vector map with overlapping \"spaghetti\" polygons (e.g. Landsat " "footprints) at given location. Polygons must have not intersected boundaries." msgstr "" @@ -37639,7 +37639,7 @@ msgstr "" #: ../locale/scriptstrings/v.dissolve_to_translate.c:1 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" @@ -47629,7 +47629,7 @@ msgstr "" #: ../locale/scriptstrings/v.scatterplot_to_translate.c:85 msgid "" -"Colum with categories. If selected, a separate ellipse will be drawn for " +"Column with categories. If selected, a separate ellipse will be drawn for " "each group/category" msgstr "" diff --git a/locale/po/grassmods_cs.po b/locale/po/grassmods_cs.po index 0d17c962990..0b4d04a2008 100644 --- a/locale/po/grassmods_cs.po +++ b/locale/po/grassmods_cs.po @@ -33469,7 +33469,7 @@ msgstr "" #: ../locale/scriptstrings/v.what.spoly_to_translate.c:1 msgid "" -"Queries vector map with overlaping \"spaghetti\" polygons (e.g. Landsat " +"Queries vector map with overlapping \"spaghetti\" polygons (e.g. Landsat " "footprints) at given location. Polygons must have not intersected boundaries." msgstr "" @@ -38799,7 +38799,7 @@ msgstr "" #: ../locale/scriptstrings/v.dissolve_to_translate.c:1 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" @@ -49461,7 +49461,7 @@ msgstr "Exportují se prvky s kategorií..." #: ../locale/scriptstrings/v.scatterplot_to_translate.c:85 msgid "" -"Colum with categories. If selected, a separate ellipse will be drawn for " +"Column with categories. If selected, a separate ellipse will be drawn for " "each group/category" msgstr "" diff --git a/locale/po/grassmods_de.po b/locale/po/grassmods_de.po index 7e994f4b379..2a168b388ca 100644 --- a/locale/po/grassmods_de.po +++ b/locale/po/grassmods_de.po @@ -33833,7 +33833,7 @@ msgstr "" #: ../locale/scriptstrings/v.what.spoly_to_translate.c:1 msgid "" -"Queries vector map with overlaping \"spaghetti\" polygons (e.g. Landsat " +"Queries vector map with overlapping \"spaghetti\" polygons (e.g. Landsat " "footprints) at given location. Polygons must have not intersected boundaries." msgstr "" @@ -39230,7 +39230,7 @@ msgstr "" #: ../locale/scriptstrings/v.dissolve_to_translate.c:1 #, fuzzy msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" "Löst Grenzen zwischen benachbarten Flächen mit gleicher Kategorienummer oder " @@ -50003,7 +50003,7 @@ msgstr "" #: ../locale/scriptstrings/v.scatterplot_to_translate.c:85 msgid "" -"Colum with categories. If selected, a separate ellipse will be drawn for " +"Column with categories. If selected, a separate ellipse will be drawn for " "each group/category" msgstr "" diff --git a/locale/po/grassmods_el.po b/locale/po/grassmods_el.po index e183723b634..c285d2d7d10 100644 --- a/locale/po/grassmods_el.po +++ b/locale/po/grassmods_el.po @@ -32820,7 +32820,7 @@ msgstr "" #: ../locale/scriptstrings/v.what.spoly_to_translate.c:1 msgid "" -"Queries vector map with overlaping \"spaghetti\" polygons (e.g. Landsat " +"Queries vector map with overlapping \"spaghetti\" polygons (e.g. Landsat " "footprints) at given location. Polygons must have not intersected boundaries." msgstr "" @@ -37938,7 +37938,7 @@ msgstr "" #: ../locale/scriptstrings/v.dissolve_to_translate.c:1 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" @@ -48176,7 +48176,7 @@ msgstr "" #: ../locale/scriptstrings/v.scatterplot_to_translate.c:85 msgid "" -"Colum with categories. If selected, a separate ellipse will be drawn for " +"Column with categories. If selected, a separate ellipse will be drawn for " "each group/category" msgstr "" diff --git a/locale/po/grassmods_es.po b/locale/po/grassmods_es.po index ca8a6727270..8a0188b6448 100644 --- a/locale/po/grassmods_es.po +++ b/locale/po/grassmods_es.po @@ -34627,7 +34627,7 @@ msgstr "" #: ../locale/scriptstrings/v.what.spoly_to_translate.c:1 msgid "" -"Queries vector map with overlaping \"spaghetti\" polygons (e.g. Landsat " +"Queries vector map with overlapping \"spaghetti\" polygons (e.g. Landsat " "footprints) at given location. Polygons must have not intersected boundaries." msgstr "" @@ -40162,7 +40162,7 @@ msgstr "" #: ../locale/scriptstrings/v.dissolve_to_translate.c:1 #, fuzzy msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" "Disuelve contornos entre áreas adyacentes que comparten un número de " @@ -51266,7 +51266,7 @@ msgstr "Conviritiendo reglas de color en categorías..." #: ../locale/scriptstrings/v.scatterplot_to_translate.c:85 msgid "" -"Colum with categories. If selected, a separate ellipse will be drawn for " +"Column with categories. If selected, a separate ellipse will be drawn for " "each group/category" msgstr "" diff --git a/locale/po/grassmods_fi.po b/locale/po/grassmods_fi.po index 692d9c0d9f2..be1a87cd456 100644 --- a/locale/po/grassmods_fi.po +++ b/locale/po/grassmods_fi.po @@ -32664,7 +32664,7 @@ msgstr "" #: ../locale/scriptstrings/v.what.spoly_to_translate.c:1 msgid "" -"Queries vector map with overlaping \"spaghetti\" polygons (e.g. Landsat " +"Queries vector map with overlapping \"spaghetti\" polygons (e.g. Landsat " "footprints) at given location. Polygons must have not intersected boundaries." msgstr "" @@ -37662,7 +37662,7 @@ msgstr "" #: ../locale/scriptstrings/v.dissolve_to_translate.c:1 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" @@ -47677,7 +47677,7 @@ msgstr "" #: ../locale/scriptstrings/v.scatterplot_to_translate.c:85 msgid "" -"Colum with categories. If selected, a separate ellipse will be drawn for " +"Column with categories. If selected, a separate ellipse will be drawn for " "each group/category" msgstr "" diff --git a/locale/po/grassmods_fr.po b/locale/po/grassmods_fr.po index e56cb236875..3225a9d712b 100644 --- a/locale/po/grassmods_fr.po +++ b/locale/po/grassmods_fr.po @@ -33949,7 +33949,7 @@ msgstr "" #: ../locale/scriptstrings/v.what.spoly_to_translate.c:1 msgid "" -"Queries vector map with overlaping \"spaghetti\" polygons (e.g. Landsat " +"Queries vector map with overlapping \"spaghetti\" polygons (e.g. Landsat " "footprints) at given location. Polygons must have not intersected boundaries." msgstr "" @@ -39447,7 +39447,7 @@ msgstr "" #: ../locale/scriptstrings/v.dissolve_to_translate.c:1 #, fuzzy msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" "Fusionne des contours entre surfaces adjacentes partageant un attribut ou " @@ -50333,7 +50333,7 @@ msgstr "" #: ../locale/scriptstrings/v.scatterplot_to_translate.c:85 msgid "" -"Colum with categories. If selected, a separate ellipse will be drawn for " +"Column with categories. If selected, a separate ellipse will be drawn for " "each group/category" msgstr "" diff --git a/locale/po/grassmods_hu.po b/locale/po/grassmods_hu.po index ee0f0929c11..0cad5773fea 100644 --- a/locale/po/grassmods_hu.po +++ b/locale/po/grassmods_hu.po @@ -32714,7 +32714,7 @@ msgstr "" #: ../locale/scriptstrings/v.what.spoly_to_translate.c:1 msgid "" -"Queries vector map with overlaping \"spaghetti\" polygons (e.g. Landsat " +"Queries vector map with overlapping \"spaghetti\" polygons (e.g. Landsat " "footprints) at given location. Polygons must have not intersected boundaries." msgstr "" @@ -37770,7 +37770,7 @@ msgstr "" #: ../locale/scriptstrings/v.dissolve_to_translate.c:1 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" @@ -47888,7 +47888,7 @@ msgstr "" #: ../locale/scriptstrings/v.scatterplot_to_translate.c:85 msgid "" -"Colum with categories. If selected, a separate ellipse will be drawn for " +"Column with categories. If selected, a separate ellipse will be drawn for " "each group/category" msgstr "" diff --git a/locale/po/grassmods_id_ID.po b/locale/po/grassmods_id_ID.po index d9a39bafe24..df950915b12 100644 --- a/locale/po/grassmods_id_ID.po +++ b/locale/po/grassmods_id_ID.po @@ -32626,7 +32626,7 @@ msgstr "" #: ../locale/scriptstrings/v.what.spoly_to_translate.c:1 msgid "" -"Queries vector map with overlaping \"spaghetti\" polygons (e.g. Landsat " +"Queries vector map with overlapping \"spaghetti\" polygons (e.g. Landsat " "footprints) at given location. Polygons must have not intersected boundaries." msgstr "" @@ -37619,7 +37619,7 @@ msgstr "" #: ../locale/scriptstrings/v.dissolve_to_translate.c:1 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" @@ -47609,7 +47609,7 @@ msgstr "" #: ../locale/scriptstrings/v.scatterplot_to_translate.c:85 msgid "" -"Colum with categories. If selected, a separate ellipse will be drawn for " +"Column with categories. If selected, a separate ellipse will be drawn for " "each group/category" msgstr "" diff --git a/locale/po/grassmods_it.po b/locale/po/grassmods_it.po index 94368222e52..53af5452a54 100644 --- a/locale/po/grassmods_it.po +++ b/locale/po/grassmods_it.po @@ -33636,7 +33636,7 @@ msgstr "" #: ../locale/scriptstrings/v.what.spoly_to_translate.c:1 msgid "" -"Queries vector map with overlaping \"spaghetti\" polygons (e.g. Landsat " +"Queries vector map with overlapping \"spaghetti\" polygons (e.g. Landsat " "footprints) at given location. Polygons must have not intersected boundaries." msgstr "" @@ -38964,7 +38964,7 @@ msgstr "" #: ../locale/scriptstrings/v.dissolve_to_translate.c:1 #, fuzzy msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" "Dissolve i confini tra aree adiacenti che condividono categorie o attributi " @@ -49678,7 +49678,7 @@ msgstr "" #: ../locale/scriptstrings/v.scatterplot_to_translate.c:85 msgid "" -"Colum with categories. If selected, a separate ellipse will be drawn for " +"Column with categories. If selected, a separate ellipse will be drawn for " "each group/category" msgstr "" diff --git a/locale/po/grassmods_ja.po b/locale/po/grassmods_ja.po index 0dd3735b064..c4aa7ebd561 100644 --- a/locale/po/grassmods_ja.po +++ b/locale/po/grassmods_ja.po @@ -33121,7 +33121,7 @@ msgstr "" #: ../locale/scriptstrings/v.what.spoly_to_translate.c:1 msgid "" -"Queries vector map with overlaping \"spaghetti\" polygons (e.g. Landsat " +"Queries vector map with overlapping \"spaghetti\" polygons (e.g. Landsat " "footprints) at given location. Polygons must have not intersected boundaries." msgstr "" @@ -38412,7 +38412,7 @@ msgstr "" #: ../locale/scriptstrings/v.dissolve_to_translate.c:1 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" @@ -49018,7 +49018,7 @@ msgstr "" #: ../locale/scriptstrings/v.scatterplot_to_translate.c:85 msgid "" -"Colum with categories. If selected, a separate ellipse will be drawn for " +"Column with categories. If selected, a separate ellipse will be drawn for " "each group/category" msgstr "" diff --git a/locale/po/grassmods_ko.po b/locale/po/grassmods_ko.po index 8d255c6f5ad..09064eb9df8 100644 --- a/locale/po/grassmods_ko.po +++ b/locale/po/grassmods_ko.po @@ -33006,7 +33006,7 @@ msgstr "" #: ../locale/scriptstrings/v.what.spoly_to_translate.c:1 msgid "" -"Queries vector map with overlaping \"spaghetti\" polygons (e.g. Landsat " +"Queries vector map with overlapping \"spaghetti\" polygons (e.g. Landsat " "footprints) at given location. Polygons must have not intersected boundaries." msgstr "" @@ -38236,7 +38236,7 @@ msgstr "" #: ../locale/scriptstrings/v.dissolve_to_translate.c:1 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" @@ -48700,7 +48700,7 @@ msgstr "" #: ../locale/scriptstrings/v.scatterplot_to_translate.c:85 msgid "" -"Colum with categories. If selected, a separate ellipse will be drawn for " +"Column with categories. If selected, a separate ellipse will be drawn for " "each group/category" msgstr "" diff --git a/locale/po/grassmods_lv.po b/locale/po/grassmods_lv.po index 43e408d8721..cd5cf65275a 100644 --- a/locale/po/grassmods_lv.po +++ b/locale/po/grassmods_lv.po @@ -33073,7 +33073,7 @@ msgstr "" #: ../locale/scriptstrings/v.what.spoly_to_translate.c:1 msgid "" -"Queries vector map with overlaping \"spaghetti\" polygons (e.g. Landsat " +"Queries vector map with overlapping \"spaghetti\" polygons (e.g. Landsat " "footprints) at given location. Polygons must have not intersected boundaries." msgstr "" @@ -38284,7 +38284,7 @@ msgstr "" #: ../locale/scriptstrings/v.dissolve_to_translate.c:1 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" @@ -48739,7 +48739,7 @@ msgstr "" #: ../locale/scriptstrings/v.scatterplot_to_translate.c:85 msgid "" -"Colum with categories. If selected, a separate ellipse will be drawn for " +"Column with categories. If selected, a separate ellipse will be drawn for " "each group/category" msgstr "" diff --git a/locale/po/grassmods_ml.po b/locale/po/grassmods_ml.po index a3693866979..cfe442a427e 100644 --- a/locale/po/grassmods_ml.po +++ b/locale/po/grassmods_ml.po @@ -32646,7 +32646,7 @@ msgstr "" #: ../locale/scriptstrings/v.what.spoly_to_translate.c:1 msgid "" -"Queries vector map with overlaping \"spaghetti\" polygons (e.g. Landsat " +"Queries vector map with overlapping \"spaghetti\" polygons (e.g. Landsat " "footprints) at given location. Polygons must have not intersected boundaries." msgstr "" @@ -37639,7 +37639,7 @@ msgstr "" #: ../locale/scriptstrings/v.dissolve_to_translate.c:1 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" @@ -47629,7 +47629,7 @@ msgstr "" #: ../locale/scriptstrings/v.scatterplot_to_translate.c:85 msgid "" -"Colum with categories. If selected, a separate ellipse will be drawn for " +"Column with categories. If selected, a separate ellipse will be drawn for " "each group/category" msgstr "" diff --git a/locale/po/grassmods_pl.po b/locale/po/grassmods_pl.po index dccca2f5d0f..ce0193ce676 100644 --- a/locale/po/grassmods_pl.po +++ b/locale/po/grassmods_pl.po @@ -33222,7 +33222,7 @@ msgstr "" #: ../locale/scriptstrings/v.what.spoly_to_translate.c:1 msgid "" -"Queries vector map with overlaping \"spaghetti\" polygons (e.g. Landsat " +"Queries vector map with overlapping \"spaghetti\" polygons (e.g. Landsat " "footprints) at given location. Polygons must have not intersected boundaries." msgstr "" @@ -38510,7 +38510,7 @@ msgstr "" #: ../locale/scriptstrings/v.dissolve_to_translate.c:1 #, fuzzy msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" "Usuwa granice pomiędzy sąsiadującymi obszarami o tej samej kategorii lub " @@ -49108,7 +49108,7 @@ msgstr "" #: ../locale/scriptstrings/v.scatterplot_to_translate.c:85 msgid "" -"Colum with categories. If selected, a separate ellipse will be drawn for " +"Column with categories. If selected, a separate ellipse will be drawn for " "each group/category" msgstr "" diff --git a/locale/po/grassmods_pt.po b/locale/po/grassmods_pt.po index 4a28f18ff64..a22f945601b 100644 --- a/locale/po/grassmods_pt.po +++ b/locale/po/grassmods_pt.po @@ -33030,7 +33030,7 @@ msgstr "" #: ../locale/scriptstrings/v.what.spoly_to_translate.c:1 msgid "" -"Queries vector map with overlaping \"spaghetti\" polygons (e.g. Landsat " +"Queries vector map with overlapping \"spaghetti\" polygons (e.g. Landsat " "footprints) at given location. Polygons must have not intersected boundaries." msgstr "" @@ -38260,7 +38260,7 @@ msgstr "" #: ../locale/scriptstrings/v.dissolve_to_translate.c:1 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" @@ -48676,7 +48676,7 @@ msgstr "" #: ../locale/scriptstrings/v.scatterplot_to_translate.c:85 msgid "" -"Colum with categories. If selected, a separate ellipse will be drawn for " +"Column with categories. If selected, a separate ellipse will be drawn for " "each group/category" msgstr "" diff --git a/locale/po/grassmods_pt_BR.po b/locale/po/grassmods_pt_BR.po index d7bcb3c7f41..a40e9100d63 100644 --- a/locale/po/grassmods_pt_BR.po +++ b/locale/po/grassmods_pt_BR.po @@ -33360,7 +33360,7 @@ msgstr "" #: ../locale/scriptstrings/v.what.spoly_to_translate.c:1 msgid "" -"Queries vector map with overlaping \"spaghetti\" polygons (e.g. Landsat " +"Queries vector map with overlapping \"spaghetti\" polygons (e.g. Landsat " "footprints) at given location. Polygons must have not intersected boundaries." msgstr "" @@ -38650,7 +38650,7 @@ msgstr "" #: ../locale/scriptstrings/v.dissolve_to_translate.c:1 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" @@ -49178,7 +49178,7 @@ msgstr "Convertendo regras de cores em categorias..." #: ../locale/scriptstrings/v.scatterplot_to_translate.c:85 msgid "" -"Colum with categories. If selected, a separate ellipse will be drawn for " +"Column with categories. If selected, a separate ellipse will be drawn for " "each group/category" msgstr "" diff --git a/locale/po/grassmods_ro.po b/locale/po/grassmods_ro.po index 3f4174329a4..4f49bec89f3 100644 --- a/locale/po/grassmods_ro.po +++ b/locale/po/grassmods_ro.po @@ -33065,7 +33065,7 @@ msgstr "" #: ../locale/scriptstrings/v.what.spoly_to_translate.c:1 msgid "" -"Queries vector map with overlaping \"spaghetti\" polygons (e.g. Landsat " +"Queries vector map with overlapping \"spaghetti\" polygons (e.g. Landsat " "footprints) at given location. Polygons must have not intersected boundaries." msgstr "" @@ -38269,7 +38269,7 @@ msgstr "" #: ../locale/scriptstrings/v.dissolve_to_translate.c:1 #, fuzzy msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" "Se dizolvă limitele dintre arealele adiacente un număr comun de categorii " @@ -48737,7 +48737,7 @@ msgstr "" #: ../locale/scriptstrings/v.scatterplot_to_translate.c:85 msgid "" -"Colum with categories. If selected, a separate ellipse will be drawn for " +"Column with categories. If selected, a separate ellipse will be drawn for " "each group/category" msgstr "" diff --git a/locale/po/grassmods_ru.po b/locale/po/grassmods_ru.po index 2630e39adcf..87d6bbad54e 100644 --- a/locale/po/grassmods_ru.po +++ b/locale/po/grassmods_ru.po @@ -32900,7 +32900,7 @@ msgstr "" #: ../locale/scriptstrings/v.what.spoly_to_translate.c:1 msgid "" -"Queries vector map with overlaping \"spaghetti\" polygons (e.g. Landsat " +"Queries vector map with overlapping \"spaghetti\" polygons (e.g. Landsat " "footprints) at given location. Polygons must have not intersected boundaries." msgstr "" @@ -38055,7 +38055,7 @@ msgstr "" #: ../locale/scriptstrings/v.dissolve_to_translate.c:1 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" @@ -48284,7 +48284,7 @@ msgstr "" #: ../locale/scriptstrings/v.scatterplot_to_translate.c:85 msgid "" -"Colum with categories. If selected, a separate ellipse will be drawn for " +"Column with categories. If selected, a separate ellipse will be drawn for " "each group/category" msgstr "" diff --git a/locale/po/grassmods_si.po b/locale/po/grassmods_si.po index b2f15092dbc..2acdb89fbfe 100644 --- a/locale/po/grassmods_si.po +++ b/locale/po/grassmods_si.po @@ -32646,7 +32646,7 @@ msgstr "" #: ../locale/scriptstrings/v.what.spoly_to_translate.c:1 msgid "" -"Queries vector map with overlaping \"spaghetti\" polygons (e.g. Landsat " +"Queries vector map with overlapping \"spaghetti\" polygons (e.g. Landsat " "footprints) at given location. Polygons must have not intersected boundaries." msgstr "" @@ -37639,7 +37639,7 @@ msgstr "" #: ../locale/scriptstrings/v.dissolve_to_translate.c:1 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" @@ -47629,7 +47629,7 @@ msgstr "" #: ../locale/scriptstrings/v.scatterplot_to_translate.c:85 msgid "" -"Colum with categories. If selected, a separate ellipse will be drawn for " +"Column with categories. If selected, a separate ellipse will be drawn for " "each group/category" msgstr "" diff --git a/locale/po/grassmods_sl.po b/locale/po/grassmods_sl.po index 56c5e73fd60..c1f78896be4 100644 --- a/locale/po/grassmods_sl.po +++ b/locale/po/grassmods_sl.po @@ -35453,7 +35453,7 @@ msgstr "" #: ../locale/scriptstrings/v.what.spoly_to_translate.c:1 msgid "" -"Queries vector map with overlaping \"spaghetti\" polygons (e.g. Landsat " +"Queries vector map with overlapping \"spaghetti\" polygons (e.g. Landsat " "footprints) at given location. Polygons must have not intersected boundaries." msgstr "" @@ -40975,7 +40975,7 @@ msgstr "" #: ../locale/scriptstrings/v.dissolve_to_translate.c:1 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" @@ -51966,7 +51966,7 @@ msgstr "Uporabljam koordinate središča sloja\n" #: ../locale/scriptstrings/v.scatterplot_to_translate.c:85 msgid "" -"Colum with categories. If selected, a separate ellipse will be drawn for " +"Column with categories. If selected, a separate ellipse will be drawn for " "each group/category" msgstr "" diff --git a/locale/po/grassmods_ta.po b/locale/po/grassmods_ta.po index 4bd45b751d5..05719977a92 100644 --- a/locale/po/grassmods_ta.po +++ b/locale/po/grassmods_ta.po @@ -32662,7 +32662,7 @@ msgstr "" #: ../locale/scriptstrings/v.what.spoly_to_translate.c:1 msgid "" -"Queries vector map with overlaping \"spaghetti\" polygons (e.g. Landsat " +"Queries vector map with overlapping \"spaghetti\" polygons (e.g. Landsat " "footprints) at given location. Polygons must have not intersected boundaries." msgstr "" @@ -37669,7 +37669,7 @@ msgstr "" #: ../locale/scriptstrings/v.dissolve_to_translate.c:1 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" @@ -47684,7 +47684,7 @@ msgstr "" #: ../locale/scriptstrings/v.scatterplot_to_translate.c:85 msgid "" -"Colum with categories. If selected, a separate ellipse will be drawn for " +"Column with categories. If selected, a separate ellipse will be drawn for " "each group/category" msgstr "" diff --git a/locale/po/grassmods_th.po b/locale/po/grassmods_th.po index a38947544d5..65e557c85d9 100644 --- a/locale/po/grassmods_th.po +++ b/locale/po/grassmods_th.po @@ -32774,7 +32774,7 @@ msgstr "" #: ../locale/scriptstrings/v.what.spoly_to_translate.c:1 msgid "" -"Queries vector map with overlaping \"spaghetti\" polygons (e.g. Landsat " +"Queries vector map with overlapping \"spaghetti\" polygons (e.g. Landsat " "footprints) at given location. Polygons must have not intersected boundaries." msgstr "" @@ -37894,7 +37894,7 @@ msgstr "" #: ../locale/scriptstrings/v.dissolve_to_translate.c:1 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" @@ -48103,7 +48103,7 @@ msgstr "" #: ../locale/scriptstrings/v.scatterplot_to_translate.c:85 msgid "" -"Colum with categories. If selected, a separate ellipse will be drawn for " +"Column with categories. If selected, a separate ellipse will be drawn for " "each group/category" msgstr "" diff --git a/locale/po/grassmods_tr.po b/locale/po/grassmods_tr.po index ef10aa29895..ecb42b13505 100644 --- a/locale/po/grassmods_tr.po +++ b/locale/po/grassmods_tr.po @@ -33009,7 +33009,7 @@ msgstr "" #: ../locale/scriptstrings/v.what.spoly_to_translate.c:1 msgid "" -"Queries vector map with overlaping \"spaghetti\" polygons (e.g. Landsat " +"Queries vector map with overlapping \"spaghetti\" polygons (e.g. Landsat " "footprints) at given location. Polygons must have not intersected boundaries." msgstr "" @@ -38276,7 +38276,7 @@ msgstr "" #: ../locale/scriptstrings/v.dissolve_to_translate.c:1 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" @@ -48802,7 +48802,7 @@ msgstr "" #: ../locale/scriptstrings/v.scatterplot_to_translate.c:85 msgid "" -"Colum with categories. If selected, a separate ellipse will be drawn for " +"Column with categories. If selected, a separate ellipse will be drawn for " "each group/category" msgstr "" diff --git a/locale/po/grassmods_uk.po b/locale/po/grassmods_uk.po index ded3fc09c7a..65b9178e653 100644 --- a/locale/po/grassmods_uk.po +++ b/locale/po/grassmods_uk.po @@ -32686,7 +32686,7 @@ msgstr "" #: ../locale/scriptstrings/v.what.spoly_to_translate.c:1 msgid "" -"Queries vector map with overlaping \"spaghetti\" polygons (e.g. Landsat " +"Queries vector map with overlapping \"spaghetti\" polygons (e.g. Landsat " "footprints) at given location. Polygons must have not intersected boundaries." msgstr "" @@ -37679,7 +37679,7 @@ msgstr "" #: ../locale/scriptstrings/v.dissolve_to_translate.c:1 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" @@ -47669,7 +47669,7 @@ msgstr "" #: ../locale/scriptstrings/v.scatterplot_to_translate.c:85 msgid "" -"Colum with categories. If selected, a separate ellipse will be drawn for " +"Column with categories. If selected, a separate ellipse will be drawn for " "each group/category" msgstr "" diff --git a/locale/po/grassmods_vi.po b/locale/po/grassmods_vi.po index cb4f0aa95a9..49b0683b187 100644 --- a/locale/po/grassmods_vi.po +++ b/locale/po/grassmods_vi.po @@ -32777,7 +32777,7 @@ msgstr "" #: ../locale/scriptstrings/v.what.spoly_to_translate.c:1 msgid "" -"Queries vector map with overlaping \"spaghetti\" polygons (e.g. Landsat " +"Queries vector map with overlapping \"spaghetti\" polygons (e.g. Landsat " "footprints) at given location. Polygons must have not intersected boundaries." msgstr "" @@ -37924,7 +37924,7 @@ msgstr "" #: ../locale/scriptstrings/v.dissolve_to_translate.c:1 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" @@ -48138,7 +48138,7 @@ msgstr "" #: ../locale/scriptstrings/v.scatterplot_to_translate.c:85 msgid "" -"Colum with categories. If selected, a separate ellipse will be drawn for " +"Column with categories. If selected, a separate ellipse will be drawn for " "each group/category" msgstr "" diff --git a/locale/po/grassmods_zh.po b/locale/po/grassmods_zh.po index 3ec8942025d..cccf638e84a 100644 --- a/locale/po/grassmods_zh.po +++ b/locale/po/grassmods_zh.po @@ -32927,7 +32927,7 @@ msgstr "" #: ../locale/scriptstrings/v.what.spoly_to_translate.c:1 msgid "" -"Queries vector map with overlaping \"spaghetti\" polygons (e.g. Landsat " +"Queries vector map with overlapping \"spaghetti\" polygons (e.g. Landsat " "footprints) at given location. Polygons must have not intersected boundaries." msgstr "" @@ -38146,7 +38146,7 @@ msgstr "" #: ../locale/scriptstrings/v.dissolve_to_translate.c:1 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" @@ -48560,7 +48560,7 @@ msgstr "" #: ../locale/scriptstrings/v.scatterplot_to_translate.c:85 msgid "" -"Colum with categories. If selected, a separate ellipse will be drawn for " +"Column with categories. If selected, a separate ellipse will be drawn for " "each group/category" msgstr "" diff --git a/locale/po/grassmods_zh_CN.po b/locale/po/grassmods_zh_CN.po index 476cc510193..455581b506d 100644 --- a/locale/po/grassmods_zh_CN.po +++ b/locale/po/grassmods_zh_CN.po @@ -32627,7 +32627,7 @@ msgstr "" #: ../locale/scriptstrings/v.what.spoly_to_translate.c:1 msgid "" -"Queries vector map with overlaping \"spaghetti\" polygons (e.g. Landsat " +"Queries vector map with overlapping \"spaghetti\" polygons (e.g. Landsat " "footprints) at given location. Polygons must have not intersected boundaries." msgstr "" @@ -37620,7 +37620,7 @@ msgstr "" #: ../locale/scriptstrings/v.dissolve_to_translate.c:1 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" @@ -47610,7 +47610,7 @@ msgstr "" #: ../locale/scriptstrings/v.scatterplot_to_translate.c:85 msgid "" -"Colum with categories. If selected, a separate ellipse will be drawn for " +"Column with categories. If selected, a separate ellipse will be drawn for " "each group/category" msgstr "" diff --git a/locale/po/grasswxpy_ar.po b/locale/po/grasswxpy_ar.po index d036766265d..0475f287e81 100644 --- a/locale/po/grasswxpy_ar.po +++ b/locale/po/grasswxpy_ar.po @@ -7568,7 +7568,7 @@ msgstr "" #: ../gui/wxpython/menustrings.py:572 ../gui/wxpython/menustrings.py:1537 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" diff --git a/locale/po/grasswxpy_bn.po b/locale/po/grasswxpy_bn.po index e02d0b5a3ba..76ade0c0e31 100644 --- a/locale/po/grasswxpy_bn.po +++ b/locale/po/grasswxpy_bn.po @@ -7576,7 +7576,7 @@ msgstr "" #: ../gui/wxpython/menustrings.py:572 ../gui/wxpython/menustrings.py:1537 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" diff --git a/locale/po/grasswxpy_cs.po b/locale/po/grasswxpy_cs.po index 2423deae915..24423cf5314 100644 --- a/locale/po/grasswxpy_cs.po +++ b/locale/po/grasswxpy_cs.po @@ -7757,7 +7757,7 @@ msgstr "Rozloží společné hranice " #: ../gui/wxpython/menustrings.py:572 ../gui/wxpython/menustrings.py:1537 #, fuzzy msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" "Rozloží hranice mezi sousedícími plochami, sdílejícími společné číslo " diff --git a/locale/po/grasswxpy_el.po b/locale/po/grasswxpy_el.po index 86bd0fc413c..582972aba2b 100644 --- a/locale/po/grasswxpy_el.po +++ b/locale/po/grasswxpy_el.po @@ -7647,7 +7647,7 @@ msgstr "" #: ../gui/wxpython/menustrings.py:572 ../gui/wxpython/menustrings.py:1537 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" diff --git a/locale/po/grasswxpy_es.po b/locale/po/grasswxpy_es.po index a1b7b5dc5ca..dd64f3e2ca1 100644 --- a/locale/po/grasswxpy_es.po +++ b/locale/po/grasswxpy_es.po @@ -8127,7 +8127,7 @@ msgstr "Disolver contornos" #: ../gui/wxpython/menustrings.py:572 ../gui/wxpython/menustrings.py:1537 #, fuzzy msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" "Disuelve contornos entre áreas adyacentes que comparten un número de " diff --git a/locale/po/grasswxpy_fi.po b/locale/po/grasswxpy_fi.po index f8bc8277c4c..72ce83830d8 100644 --- a/locale/po/grasswxpy_fi.po +++ b/locale/po/grasswxpy_fi.po @@ -7592,7 +7592,7 @@ msgstr "" #: ../gui/wxpython/menustrings.py:572 ../gui/wxpython/menustrings.py:1537 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" diff --git a/locale/po/grasswxpy_fr.po b/locale/po/grasswxpy_fr.po index cc9054a8c58..8879c526ca7 100644 --- a/locale/po/grasswxpy_fr.po +++ b/locale/po/grasswxpy_fr.po @@ -8108,7 +8108,7 @@ msgstr "Fusionner des contours" #: ../gui/wxpython/menustrings.py:572 ../gui/wxpython/menustrings.py:1537 #, fuzzy msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" "Fusionne des contours entre surfaces adjacentes partageant un attribut ou " diff --git a/locale/po/grasswxpy_hu.po b/locale/po/grasswxpy_hu.po index 31bfc368ed9..c461a875154 100644 --- a/locale/po/grasswxpy_hu.po +++ b/locale/po/grasswxpy_hu.po @@ -7715,7 +7715,7 @@ msgstr "" #: ../gui/wxpython/menustrings.py:572 ../gui/wxpython/menustrings.py:1537 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" diff --git a/locale/po/grasswxpy_id_ID.po b/locale/po/grasswxpy_id_ID.po index 214b014b5ca..e1983612035 100644 --- a/locale/po/grasswxpy_id_ID.po +++ b/locale/po/grasswxpy_id_ID.po @@ -7571,7 +7571,7 @@ msgstr "" #: ../gui/wxpython/menustrings.py:572 ../gui/wxpython/menustrings.py:1537 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" diff --git a/locale/po/grasswxpy_it.po b/locale/po/grasswxpy_it.po index 214a047df46..ddeb21e75d2 100644 --- a/locale/po/grasswxpy_it.po +++ b/locale/po/grasswxpy_it.po @@ -7922,7 +7922,7 @@ msgstr "Dissolvi confini" #: ../gui/wxpython/menustrings.py:572 ../gui/wxpython/menustrings.py:1537 #, fuzzy msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" "Dissolve i confini tra aree adiacenti che condividono categorie o attributi " diff --git a/locale/po/grasswxpy_ja.po b/locale/po/grasswxpy_ja.po index 3e5d57c2131..dce28745650 100644 --- a/locale/po/grasswxpy_ja.po +++ b/locale/po/grasswxpy_ja.po @@ -7723,7 +7723,7 @@ msgstr "境界の融合" #: ../gui/wxpython/menustrings.py:572 ../gui/wxpython/menustrings.py:1537 #, fuzzy msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "共通のカテゴリー番号や属性を共有するエリアを融合させる" diff --git a/locale/po/grasswxpy_ko.po b/locale/po/grasswxpy_ko.po index 8b4fb2b2df0..2562d99de06 100644 --- a/locale/po/grasswxpy_ko.po +++ b/locale/po/grasswxpy_ko.po @@ -7640,7 +7640,7 @@ msgstr "" #: ../gui/wxpython/menustrings.py:572 ../gui/wxpython/menustrings.py:1537 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" diff --git a/locale/po/grasswxpy_lv.po b/locale/po/grasswxpy_lv.po index b3b37154a29..e733c4449a3 100644 --- a/locale/po/grasswxpy_lv.po +++ b/locale/po/grasswxpy_lv.po @@ -7710,7 +7710,7 @@ msgstr "Izšķīdināt robežas" #: ../gui/wxpython/menustrings.py:572 ../gui/wxpython/menustrings.py:1537 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" diff --git a/locale/po/grasswxpy_ml.po b/locale/po/grasswxpy_ml.po index 662a6f8458f..f0cd245758a 100644 --- a/locale/po/grasswxpy_ml.po +++ b/locale/po/grasswxpy_ml.po @@ -7611,7 +7611,7 @@ msgstr "" #: ../gui/wxpython/menustrings.py:572 ../gui/wxpython/menustrings.py:1537 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" diff --git a/locale/po/grasswxpy_pl.po b/locale/po/grasswxpy_pl.po index ac254af9257..f399314c413 100644 --- a/locale/po/grasswxpy_pl.po +++ b/locale/po/grasswxpy_pl.po @@ -7768,7 +7768,7 @@ msgstr "Granice regionu" #: ../gui/wxpython/menustrings.py:572 ../gui/wxpython/menustrings.py:1537 #, fuzzy msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" "Usuwa granice pomiędzy sąsiadującymi obszarami o tej samej kategorii lub " diff --git a/locale/po/grasswxpy_pt.po b/locale/po/grasswxpy_pt.po index fba7c73d12c..9ac71057c8c 100644 --- a/locale/po/grasswxpy_pt.po +++ b/locale/po/grasswxpy_pt.po @@ -7628,7 +7628,7 @@ msgstr "Dissolver fronteiras/contornos" #: ../gui/wxpython/menustrings.py:572 ../gui/wxpython/menustrings.py:1537 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" diff --git a/locale/po/grasswxpy_pt_BR.po b/locale/po/grasswxpy_pt_BR.po index 25d6d633daf..bd7f33c244d 100644 --- a/locale/po/grasswxpy_pt_BR.po +++ b/locale/po/grasswxpy_pt_BR.po @@ -7995,7 +7995,7 @@ msgstr "Dissolver fronteiras" #: ../gui/wxpython/menustrings.py:572 ../gui/wxpython/menustrings.py:1537 #, fuzzy msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" "Dissolve fronteiras entre áreas adjacentes que compartilham um número de " diff --git a/locale/po/grasswxpy_ro.po b/locale/po/grasswxpy_ro.po index b6b46be3dcc..973569f6110 100644 --- a/locale/po/grasswxpy_ro.po +++ b/locale/po/grasswxpy_ro.po @@ -7799,7 +7799,7 @@ msgstr "Dizolvă limitele" #: ../gui/wxpython/menustrings.py:572 ../gui/wxpython/menustrings.py:1537 #, fuzzy msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" "Se dizolvă limitele dintre arealele adiacente un număr comun de categorii " diff --git a/locale/po/grasswxpy_ru.po b/locale/po/grasswxpy_ru.po index 0ba2b3f722c..67c026b0770 100644 --- a/locale/po/grasswxpy_ru.po +++ b/locale/po/grasswxpy_ru.po @@ -8225,7 +8225,7 @@ msgstr "Удаление границ" #: ../gui/wxpython/menustrings.py:572 ../gui/wxpython/menustrings.py:1537 #, fuzzy msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" "Удаляет границы между смежными полигонами с одинаковым номером категории или " diff --git a/locale/po/grasswxpy_si.po b/locale/po/grasswxpy_si.po index ffb2ef37ba9..f3d27cc8385 100644 --- a/locale/po/grasswxpy_si.po +++ b/locale/po/grasswxpy_si.po @@ -7570,7 +7570,7 @@ msgstr "" #: ../gui/wxpython/menustrings.py:572 ../gui/wxpython/menustrings.py:1537 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" diff --git a/locale/po/grasswxpy_sl.po b/locale/po/grasswxpy_sl.po index d4be9c40b20..d38b3ea58a5 100644 --- a/locale/po/grasswxpy_sl.po +++ b/locale/po/grasswxpy_sl.po @@ -7568,7 +7568,7 @@ msgstr "" #: ../gui/wxpython/menustrings.py:572 ../gui/wxpython/menustrings.py:1537 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" diff --git a/locale/po/grasswxpy_ta.po b/locale/po/grasswxpy_ta.po index 0ef7e90495b..7d752f435f6 100644 --- a/locale/po/grasswxpy_ta.po +++ b/locale/po/grasswxpy_ta.po @@ -7580,7 +7580,7 @@ msgstr "" #: ../gui/wxpython/menustrings.py:572 ../gui/wxpython/menustrings.py:1537 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" diff --git a/locale/po/grasswxpy_th.po b/locale/po/grasswxpy_th.po index 056f6c8805e..b65840cfe09 100644 --- a/locale/po/grasswxpy_th.po +++ b/locale/po/grasswxpy_th.po @@ -7598,7 +7598,7 @@ msgstr "ละลาย ขอบเขต" #: ../gui/wxpython/menustrings.py:572 ../gui/wxpython/menustrings.py:1537 #, fuzzy msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "Dissolves เขต ระหว่าง พื้นที่ที่อยู่ติดกันและมี ข้อมูลเหมือนกัน" diff --git a/locale/po/grasswxpy_tr.po b/locale/po/grasswxpy_tr.po index 726090ba1d6..760a131dcc6 100644 --- a/locale/po/grasswxpy_tr.po +++ b/locale/po/grasswxpy_tr.po @@ -7662,7 +7662,7 @@ msgstr "Sınırları çöz" #: ../gui/wxpython/menustrings.py:572 ../gui/wxpython/menustrings.py:1537 #, fuzzy msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" "Ortak kategori numarası veya özniteliği paylaşan komşu alanlar arasındaki " diff --git a/locale/po/grasswxpy_uk.po b/locale/po/grasswxpy_uk.po index 196ede55c72..4bf446da553 100644 --- a/locale/po/grasswxpy_uk.po +++ b/locale/po/grasswxpy_uk.po @@ -7571,7 +7571,7 @@ msgstr "" #: ../gui/wxpython/menustrings.py:572 ../gui/wxpython/menustrings.py:1537 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" diff --git a/locale/po/grasswxpy_vi.po b/locale/po/grasswxpy_vi.po index f4c61ca3ab2..364aed72ba1 100644 --- a/locale/po/grasswxpy_vi.po +++ b/locale/po/grasswxpy_vi.po @@ -7581,7 +7581,7 @@ msgstr "" #: ../gui/wxpython/menustrings.py:572 ../gui/wxpython/menustrings.py:1537 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" diff --git a/locale/po/grasswxpy_zh.po b/locale/po/grasswxpy_zh.po index 6d0ac28a768..4d2ab8dfd85 100644 --- a/locale/po/grasswxpy_zh.po +++ b/locale/po/grasswxpy_zh.po @@ -7684,7 +7684,7 @@ msgstr "边界融合" #: ../gui/wxpython/menustrings.py:572 ../gui/wxpython/menustrings.py:1537 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" diff --git a/locale/po/grasswxpy_zh_CN.po b/locale/po/grasswxpy_zh_CN.po index 1172a4af931..cbb050149b9 100644 --- a/locale/po/grasswxpy_zh_CN.po +++ b/locale/po/grasswxpy_zh_CN.po @@ -7571,7 +7571,7 @@ msgstr "" #: ../gui/wxpython/menustrings.py:572 ../gui/wxpython/menustrings.py:1537 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" diff --git a/locale/templates/grassmods.pot b/locale/templates/grassmods.pot index 3476f2faa63..30b09b22a2b 100644 --- a/locale/templates/grassmods.pot +++ b/locale/templates/grassmods.pot @@ -32646,7 +32646,7 @@ msgstr "" #: ../locale/scriptstrings/v.what.spoly_to_translate.c:1 msgid "" -"Queries vector map with overlaping \"spaghetti\" polygons (e.g. Landsat " +"Queries vector map with overlapping \"spaghetti\" polygons (e.g. Landsat " "footprints) at given location. Polygons must have not intersected boundaries." msgstr "" @@ -37639,7 +37639,7 @@ msgstr "" #: ../locale/scriptstrings/v.dissolve_to_translate.c:1 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" @@ -47629,7 +47629,7 @@ msgstr "" #: ../locale/scriptstrings/v.scatterplot_to_translate.c:85 msgid "" -"Colum with categories. If selected, a separate ellipse will be drawn for " +"Column with categories. If selected, a separate ellipse will be drawn for " "each group/category" msgstr "" diff --git a/locale/templates/grasswxpy.pot b/locale/templates/grasswxpy.pot index cc797b54db5..57126b7f1a1 100644 --- a/locale/templates/grasswxpy.pot +++ b/locale/templates/grasswxpy.pot @@ -7569,7 +7569,7 @@ msgstr "" #: ../gui/wxpython/menustrings.py:572 ../gui/wxpython/menustrings.py:1537 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" diff --git a/raster/r.horizon/r.horizon.html b/raster/r.horizon/r.horizon.html index 513af64b8c4..5adbf66a63f 100644 --- a/raster/r.horizon/r.horizon.html +++ b/raster/r.horizon/r.horizon.html @@ -31,7 +31,7 @@

      DESCRIPTION

      orientation (North=0, clockwise).

      -Activating the -l flag allows to additionally print the distance +Activating the -l flag allows additionally printing the distance to each horizon angle.

      Input parameters:

      diff --git a/raster3d/r3.gwflow/r3.gwflow.html b/raster3d/r3.gwflow/r3.gwflow.html index 7ced5f01ba8..82dca510162 100644 --- a/raster3d/r3.gwflow/r3.gwflow.html +++ b/raster3d/r3.gwflow/r3.gwflow.html @@ -4,7 +4,7 @@

      DESCRIPTION

      confined groundwater flow in three dimensions based on volume maps and the current 3D region settings. All initial- and boundary-conditions must be provided as volume maps. -The unit of the current coordinate refernce system must be meters. +The unit of the current coordinate reference system must be meters.

      This module is sensitive to mask settings. All cells which are outside the mask are ignored and handled as no flow boundaries.

      The module calculates the piezometric head and optionally the water diff --git a/renovate.json5 b/renovate.json5 index b5c0aeba9b8..12451b04103 100644 --- a/renovate.json5 +++ b/renovate.json5 @@ -5,11 +5,11 @@ ":semanticCommits", ":semanticCommitTypeAll(CI)", - // allows to use comments starting with + // allows using comments starting with // "# renovate: " to update _VERSION // environment variables in GitHub Action files. "customManagers:githubActionsVersions", - // allows to use comments starting with + // allows using comments starting with // "# renovate: " to update _VERSION // ENV or ARG in a Dockerfile. "customManagers:dockerfileVersions", diff --git a/scripts/v.dissolve/v.dissolve.py b/scripts/v.dissolve/v.dissolve.py index 7336833060a..cb03ae3591e 100755 --- a/scripts/v.dissolve/v.dissolve.py +++ b/scripts/v.dissolve/v.dissolve.py @@ -16,7 +16,7 @@ ############################################################################# # %module -# % description: Dissolves adjacent or overlaping features sharing a common category number or attribute. +# % description: Dissolves adjacent or overlapping features sharing a common category number or attribute. # % keyword: vector # % keyword: dissolve # % keyword: area diff --git a/vector/v.db.select/v.db.select.html b/vector/v.db.select/v.db.select.html index e75beb5336b..13bbbbb1b78 100644 --- a/vector/v.db.select/v.db.select.html +++ b/vector/v.db.select/v.db.select.html @@ -107,7 +107,7 @@

      JSON

      The JSON also contains information about columns stored under key info. Column names and types are under key columns. -Each colum has SQL data type under sql_type in all caps. +Each column has SQL data type under sql_type in all caps. A boolean is_number specifies whether the value is a number, i.e., integer or floating point number. The is_number value is aded for convenience and it is recommended to rely on the types derived From 9518106de82aeafb497c51cd5b8bfaffae98cd6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hern=C3=A1n=20De=20Angelis?= <51515911+dhdeangelis@users.noreply.github.com> Date: Tue, 26 Nov 2024 13:16:11 +0100 Subject: [PATCH 05/36] docs: v.class.html fix typo, plus minor edit (#4762) --- vector/v.class/v.class.html | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/vector/v.class/v.class.html b/vector/v.class/v.class.html index 026f81c7e73..d833975173e 100644 --- a/vector/v.class/v.class.html +++ b/vector/v.class/v.class.html @@ -35,19 +35,20 @@

      NOTES

      are those of the number of breaks asked for.

      The discont algorithm systematically searches discontinuities -in the slope of the cumulated frequencies curve, by approximating this +in the slope of the cumulative frequencies curve, by approximating this curve through straight line segments whose vertices define the class breaks. The first approximation is a straight line which links the two end nodes of the curve. This line is then replaced by a two-segmented polyline whose central node is the point on the curve which is farthest from the preceding straight line. The point on the curve furthest from this new polyline is then chosen as a new node to create break up one of -the two preceding segments, and so forth. The problem of the difference -in terms of units between the two axes is solved by rescaling both -amplitudes to an interval between 0 and 1. In the original algorithm, -the process is stopped when the difference between the slopes of the two -new segments is no longer significant (alpha = 0.05). As the slope is -the ratio between the frequency and the amplitude of the corresponding +the two preceding segments, and so forth. + +

      The problem of the difference in terms of units between the two axes +is solved by rescaling both amplitudes to an interval between 0 and 1. +In the original algorithm, the process is stopped when the difference between +the slopes of the two new segments is no longer significant (alpha = 0.05). As +the slope is the ratio between the frequency and the amplitude of the corresponding interval, i.e. its density, this effectively tests whether the frequencies of the two newly proposed classes are different from those obtained by simply distributing the sum of their frequencies amongst them in proportion From 7e29f98e86c644696e35f504c8ae4d287e1745d3 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 26 Nov 2024 12:46:50 +0000 Subject: [PATCH 06/36] CI(deps): Update docker/build-push-action action to v6.10.0 (#4763) --- .github/workflows/docker.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index e4369818fc6..577a9702011 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -76,7 +76,7 @@ jobs: password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Build and push id: docker_build - uses: docker/build-push-action@4f58ea79222b3b9dc2c8bbdd6debcef730109a75 # v6.9.0 + uses: docker/build-push-action@48aba3b46d1b1fec4febb7c5d0c644b249a11355 # v6.10.0 with: push: true pull: true From 5dffeec800c1bd65d4ffb5dc7ef7d7aecaadaff7 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 26 Nov 2024 23:42:42 -0500 Subject: [PATCH 07/36] CI(deps): Update docker/dockerfile Docker tag to v1.12 (#4768) --- Dockerfile | 2 +- docker/ubuntu/Dockerfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 66b15d5970e..6b18a841ad4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -# syntax=docker/dockerfile:1.11@sha256:10c699f1b6c8bdc8f6b4ce8974855dd8542f1768c26eb240237b8f1c9c6c9976 +# syntax=docker/dockerfile:1.12@sha256:db1ff77fb637a5955317c7a3a62540196396d565f3dd5742e76dddbb6d75c4c5 # Note: This file must be kept in sync in ./Dockerfile and ./docker/ubuntu/Dockerfile. # Changes to this file must be copied over to the other file. diff --git a/docker/ubuntu/Dockerfile b/docker/ubuntu/Dockerfile index 66b15d5970e..6b18a841ad4 100644 --- a/docker/ubuntu/Dockerfile +++ b/docker/ubuntu/Dockerfile @@ -1,4 +1,4 @@ -# syntax=docker/dockerfile:1.11@sha256:10c699f1b6c8bdc8f6b4ce8974855dd8542f1768c26eb240237b8f1c9c6c9976 +# syntax=docker/dockerfile:1.12@sha256:db1ff77fb637a5955317c7a3a62540196396d565f3dd5742e76dddbb6d75c4c5 # Note: This file must be kept in sync in ./Dockerfile and ./docker/ubuntu/Dockerfile. # Changes to this file must be copied over to the other file. From 9af255a3cc487d4fc24eb0c17e706b49b929f024 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 26 Nov 2024 23:43:37 -0500 Subject: [PATCH 08/36] CI(deps): Update dependency bandit to v1.8.0 (#4767) --- .github/workflows/python-code-quality.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/python-code-quality.yml b/.github/workflows/python-code-quality.yml index e0c7dfc4e85..feb6ba70c9d 100644 --- a/.github/workflows/python-code-quality.yml +++ b/.github/workflows/python-code-quality.yml @@ -34,7 +34,7 @@ jobs: # renovate: datasource=pypi depName=pylint PYLINT_VERSION: "2.12.2" # renovate: datasource=pypi depName=bandit - BANDIT_VERSION: "1.7.10" + BANDIT_VERSION: "1.8.0" # renovate: datasource=pypi depName=ruff RUFF_VERSION: "0.8.0" From fac39810d2e82823eb7b728696c713cc044ca716 Mon Sep 17 00:00:00 2001 From: Markus Metz <33666869+metzm@users.noreply.github.com> Date: Wed, 27 Nov 2024 22:52:09 +0100 Subject: [PATCH 09/36] v.out.ogr: faster export with many attributes (#4741) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * v.out.ogr: faster export with many attributes --------- Co-authored-by: Edouard Choinière <27212526+echoix@users.noreply.github.com> --- vector/v.out.ogr/args.c | 13 + vector/v.out.ogr/attrb_fast.c | 155 ++++++++ vector/v.out.ogr/export_areas.c | 4 +- vector/v.out.ogr/export_areas_fast.c | 539 ++++++++++++++++++++++++++ vector/v.out.ogr/export_lines_fast.c | 546 +++++++++++++++++++++++++++ vector/v.out.ogr/local_proto.h | 19 +- vector/v.out.ogr/main.c | 38 +- 7 files changed, 1301 insertions(+), 13 deletions(-) create mode 100644 vector/v.out.ogr/attrb_fast.c create mode 100644 vector/v.out.ogr/export_areas_fast.c create mode 100644 vector/v.out.ogr/export_lines_fast.c diff --git a/vector/v.out.ogr/args.c b/vector/v.out.ogr/args.c index 18841837e24..8310c302c50 100644 --- a/vector/v.out.ogr/args.c +++ b/vector/v.out.ogr/args.c @@ -77,6 +77,19 @@ void parse_args(int argc, char **argv, struct Options *options, _("OGR layer creation option (format specific, NAME=VALUE)"); options->lco->guisection = _("Creation"); + options->method = G_define_option(); + options->method->key = "method"; + options->method->type = TYPE_STRING; + options->method->required = NO; + options->method->options = "fast,slow"; + options->method->answer = "fast"; + options->method->label = _("Method to use for export, " + "default is fast export, " + "use slow export in case of problems with " + "the fast method"); + G_asprintf((char **)&options->method->descriptions, "fast;%s;slow;%s", + _("new, faster method"), _("old, slower method")); + flags->update = G_define_flag(); flags->update->key = 'u'; flags->update->description = diff --git a/vector/v.out.ogr/attrb_fast.c b/vector/v.out.ogr/attrb_fast.c new file mode 100644 index 00000000000..45ee832f076 --- /dev/null +++ b/vector/v.out.ogr/attrb_fast.c @@ -0,0 +1,155 @@ +#include + +#include "local_proto.h" + +int mk_att_fast(int cat, struct field_info *Fi, int ncol, int *colctype, + const char **colname, int doatt, int nocat, + OGRFeatureH Ogr_feature, int *noatt, dbCursor *cursor, + int *more, int *db_cat, int key_col_index) +{ + int j, ogrfieldnum; + dbTable *Table; + static int first = 1; + static dbString dbstring; + dbColumn *Column; + dbValue *Value; + + G_debug(2, "mk_att() cat = %d, doatt = %d", cat, doatt); + + /* init constants */ + if (first) { + db_init_string(&dbstring); + first = 0; + } + + /* Attributes */ + /* Reset */ + if (!doatt) { + ogrfieldnum = OGR_F_GetFieldIndex(Ogr_feature, GV_KEY_COLUMN); + if (ogrfieldnum > -1) + OGR_F_UnsetField(Ogr_feature, ogrfieldnum); + /* doatt reset moved into have cat loop as the table needs to be + open to know the OGR field ID. Hopefully this has no ill consequences + */ + } + + /* Read & set attributes */ + if (cat >= 0) { /* Line with category */ + if (doatt) { + /* get current entries from cursor, + * check cat value in attributes */ + + Table = db_get_cursor_table(cursor); + while (*more && cat > *db_cat) { + Column = db_get_table_column(Table, key_col_index); + Value = db_get_column_value(Column); + + /* yes, the key column is sometimes of type double */ + switch (colctype[key_col_index]) { + case DB_C_TYPE_INT: + *db_cat = db_get_value_int(Value); + break; + case DB_C_TYPE_DOUBLE: + *db_cat = (int)db_get_value_double(Value); + break; + } + + G_debug(2, "found db_cat %d for cat %d in column %s", *db_cat, + cat, db_get_column_name(Column)); + + if (cat > *db_cat) { + if (db_fetch(cursor, DB_NEXT, more) != DB_OK) { + G_fatal_error(_("Unable to fetch data from table")); + } + } + } + + if (!(*more) || cat != *db_cat) { + G_debug(1, "No database record for cat = %d", cat); + /* Set at least key column to category */ + if (!nocat) { + ogrfieldnum = OGR_F_GetFieldIndex(Ogr_feature, Fi->key); + OGR_F_SetFieldInteger(Ogr_feature, ogrfieldnum, cat); + (*noatt)++; + } + else { + G_fatal_error(_("No database record for cat = %d and " + "export of 'cat' disabled"), + cat); + } + } + else { + for (j = 0; j < ncol; j++) { + Column = db_get_table_column(Table, j); + Value = db_get_column_value(Column); + db_convert_column_value_to_string( + Column, &dbstring); /* for debug only */ + G_debug(2, "col %d : val = %s", j, + db_get_string(&dbstring)); + + G_debug(2, " colctype = %d", colctype[j]); + + if (nocat && strcmp(Fi->key, colname[j]) == 0) + continue; + + ogrfieldnum = OGR_F_GetFieldIndex(Ogr_feature, colname[j]); + G_debug(2, " column = %s -> fieldnum = %d", colname[j], + ogrfieldnum); + + if (ogrfieldnum < 0) { + G_debug(4, + "Could not get OGR field number for column %s", + colname[j]); + continue; + } + + /* Reset */ + if ((nocat && strcmp(Fi->key, colname[j]) == 0) == 0) { + /* if this is 'cat', then execute the following only if + * the '-s' flag was NOT given */ + OGR_F_SetFieldNull(Ogr_feature, ogrfieldnum); + } + + /* prevent writing NULL values */ + if (!db_test_value_isnull(Value)) { + if ((nocat && strcmp(Fi->key, colname[j]) == 0) == 0) { + /* if this is 'cat', then execute the following only + * if the '-s' flag was NOT given */ + + switch (colctype[j]) { + case DB_C_TYPE_INT: + OGR_F_SetFieldInteger(Ogr_feature, ogrfieldnum, + db_get_value_int(Value)); + break; + case DB_C_TYPE_DOUBLE: + OGR_F_SetFieldDouble( + Ogr_feature, ogrfieldnum, + db_get_value_double(Value)); + break; + case DB_C_TYPE_STRING: + OGR_F_SetFieldString( + Ogr_feature, ogrfieldnum, + db_get_value_string(Value)); + break; + case DB_C_TYPE_DATETIME: + db_convert_column_value_to_string(Column, + &dbstring); + OGR_F_SetFieldString(Ogr_feature, ogrfieldnum, + db_get_string(&dbstring)); + break; + } + } + } + else + OGR_F_SetFieldNull(Ogr_feature, ogrfieldnum); + } + } + } + else { /* Use cat only */ + ogrfieldnum = OGR_F_GetFieldIndex(Ogr_feature, GV_KEY_COLUMN); + OGR_F_SetFieldInteger(Ogr_feature, ogrfieldnum, cat); + } + } + + return 1; +} diff --git a/vector/v.out.ogr/export_areas.c b/vector/v.out.ogr/export_areas.c index acab7164a8d..5cbc78c408d 100644 --- a/vector/v.out.ogr/export_areas.c +++ b/vector/v.out.ogr/export_areas.c @@ -13,8 +13,9 @@ static int export_areas_multi(struct Map_info *, int, int, OGRFeatureDefnH, static OGRGeometryH create_polygon(struct Map_info *, int, struct line_pnts *, int); +#if 0 /* maybe useful */ -void reverse_points(struct line_pnts *Points) +static void reverse_points(struct line_pnts *Points) { int i, j, nhalf; double tmp; @@ -35,6 +36,7 @@ void reverse_points(struct line_pnts *Points) Points->z[j] = tmp; } } +#endif /* export areas as single/multi-polygons */ int export_areas(struct Map_info *In, int field, int multi, int donocat, diff --git a/vector/v.out.ogr/export_areas_fast.c b/vector/v.out.ogr/export_areas_fast.c new file mode 100644 index 00000000000..cad77b2279a --- /dev/null +++ b/vector/v.out.ogr/export_areas_fast.c @@ -0,0 +1,539 @@ +#include + +#include "local_proto.h" + +static int export_areas_single(struct Map_info *, int, int, OGRFeatureDefnH, + OGRLayerH, struct field_info *, dbDriver *, int, + int *, const char **, int, int, int *, int *, + int); +static int export_areas_multi(struct Map_info *, int, int, OGRFeatureDefnH, + OGRLayerH, struct field_info *, dbDriver *, int, + int *, const char **, int, int, int *, int *, + int); +static OGRGeometryH create_polygon(struct Map_info *, int, struct line_pnts *, + int); + +#if 0 +/* maybe useful */ +static void reverse_points(struct line_pnts *Points) +{ + int i, j, nhalf; + double tmp; + + nhalf = Points->n_points / 2; + + for (i = 0, j = Points->n_points - 1; i < nhalf; i++, j--) { + tmp = Points->x[i]; + Points->x[i] = Points->x[j]; + Points->x[j] = tmp; + + tmp = Points->y[i]; + Points->y[i] = Points->y[j]; + Points->y[j] = tmp; + + tmp = Points->z[i]; + Points->z[i] = Points->z[j]; + Points->z[j] = tmp; + } +} +#endif + +/* export areas as single/multi-polygons */ +int export_areas_fast(struct Map_info *In, int field, int multi, int donocat, + OGRFeatureDefnH Ogr_featuredefn, OGRLayerH Ogr_layer, + struct field_info *Fi, dbDriver *driver, int ncol, + int *colctype, const char **colname, int doatt, int nocat, + int *noatt, int *fout, int outer_ring_ccw) +{ + if (multi) + /* export as multi-polygons */ + return export_areas_multi( + In, field, donocat, Ogr_featuredefn, Ogr_layer, Fi, driver, ncol, + colctype, colname, doatt, nocat, noatt, fout, outer_ring_ccw); + + /* export as polygons */ + return export_areas_single(In, field, donocat, Ogr_featuredefn, Ogr_layer, + Fi, driver, ncol, colctype, colname, doatt, + nocat, noatt, fout, outer_ring_ccw); +} + +int export_areas_single(struct Map_info *In, int field, int donocat, + OGRFeatureDefnH Ogr_featuredefn, OGRLayerH Ogr_layer, + struct field_info *Fi, dbDriver *driver, int ncol, + int *colctype, const char **colname, int doatt, + int nocat, int *n_noatt, int *n_nocat, + int outer_ring_ccw) +{ + int i; + int cat, last_cat, db_cat, centroid, area; + int n_exported; + + struct line_pnts *Points; + struct line_cats *Cats; + + int findex; + struct Cat_index *ci; + int cat_index, n_cats; + + dbString dbstring; + char buf[SQL_BUFFER_SIZE]; + dbCursor cursor; + int more; + int key_col_index; + + OGRGeometryH Ogr_geometry; + OGRFeatureH Ogr_feature; + + Points = Vect_new_line_struct(); + Cats = Vect_new_cats_struct(); + + n_exported = 0; + + /* get category index for given field */ + findex = Vect_cidx_get_field_index(In, field); + if (findex == -1) { + G_fatal_error(_("Unable to export multi-features. No category index " + "for layer %d."), + field); + } + + ci = &(In->plus.cidx[findex]); + n_cats = ci->n_cats; + + if (donocat) + G_message(_("Exporting features with category...")); + + /* select attributes ordered by category value */ + db_init_string(&dbstring); + sprintf(buf, "SELECT * FROM %s ORDER BY %s ASC", Fi->table, Fi->key); + G_debug(2, "SQL: %s", buf); + db_set_string(&dbstring, buf); + if (db_open_select_cursor(driver, &dbstring, &cursor, DB_SEQUENTIAL) != + DB_OK) { + G_fatal_error(_("Cannot select attributes sorted by %s"), Fi->key); + } + + if (db_fetch(&cursor, DB_NEXT, &more) != DB_OK) + G_fatal_error(_("Unable to fetch data from table")); + + /* get index of key column */ + key_col_index = -1; + for (i = 0; i < ncol; i++) { + if (strcmp(Fi->key, colname[i]) == 0) { + key_col_index = i; + break; + } + } + + last_cat = -1; + db_cat = -1; + for (cat_index = 0; cat_index < n_cats; cat_index++) { + + G_percent(cat_index, n_cats, 5); + + /* get area's category */ + if (!(ci->cat[cat_index][1] & GV_CENTROID)) + continue; + + cat = ci->cat[cat_index][0]; + /* make sure the cidx is ordered by cat */ + if (cat < last_cat) + G_fatal_error(_("Category index is not sorted ascending by cat!")); + last_cat = cat; + + centroid = ci->cat[cat_index][2]; + + area = Vect_get_centroid_area(In, centroid); + + if (area < 1) { + /* centroid not in area or duplicate centroid */ + continue; + } + + /* create polygon from area */ + Ogr_geometry = create_polygon(In, area, Points, outer_ring_ccw); + + /* add feature */ + Ogr_feature = OGR_F_Create(Ogr_featuredefn); + OGR_F_SetGeometry(Ogr_feature, Ogr_geometry); + /* get attributes */ + mk_att_fast(cat, Fi, ncol, colctype, colname, doatt, nocat, Ogr_feature, + n_noatt, &cursor, &more, &db_cat, key_col_index); + if (OGR_L_CreateFeature(Ogr_layer, Ogr_feature) != OGRERR_NONE) { + G_fatal_error(_("Failed to create OGR feature")); + } + else + n_exported++; + + OGR_F_Destroy(Ogr_feature); + OGR_G_DestroyGeometry(Ogr_geometry); + } + + if (donocat) + G_message(_("Exporting features without category...")); + + if (doatt) { + db_close_cursor(&cursor); + if (donocat) { + cat = -1; + if (db_open_select_cursor(driver, &dbstring, &cursor, + DB_SEQUENTIAL) != DB_OK) { + G_fatal_error(_("Cannot select attributes for cat = %d"), cat); + } + if (db_fetch(&cursor, DB_NEXT, &more) != DB_OK) + G_fatal_error(_("Unable to fetch data from table")); + } + } + + for (area = 1; area <= Vect_get_num_areas(In); area++) { + centroid = Vect_get_area_centroid(In, area); + /* skip areas without centroid */ + if (centroid == 0) + continue; + + /* get areas's category */ + Vect_get_area_cats(In, area, Cats); + Vect_cat_get(Cats, field, &cat); + /* skip areas with category */ + if (cat >= 0) + continue; + /* skip areas without category, do not export not labeled */ + if (cat < 0 && !donocat) { + (*n_nocat)++; + continue; + } + + (*n_nocat)++; + + /* create polygon from area */ + Ogr_geometry = create_polygon(In, area, Points, outer_ring_ccw); + + /* add feature */ + Ogr_feature = OGR_F_Create(Ogr_featuredefn); + OGR_F_SetGeometry(Ogr_feature, Ogr_geometry); + /* no attributes for features without category */ + cat = -1; + db_cat = -2; + mk_att_fast(cat, Fi, ncol, colctype, colname, doatt, nocat, Ogr_feature, + n_noatt, &cursor, &more, &db_cat, key_col_index); + if (OGR_L_CreateFeature(Ogr_layer, Ogr_feature) != OGRERR_NONE) { + G_fatal_error(_("Failed to create OGR feature")); + } + else + n_exported++; + + OGR_F_Destroy(Ogr_feature); + OGR_G_DestroyGeometry(Ogr_geometry); + } + + if (donocat && doatt) + db_close_cursor(&cursor); + + Vect_destroy_line_struct(Points); + + return n_exported; +} + +int export_areas_multi(struct Map_info *In, int field, int donocat, + OGRFeatureDefnH Ogr_featuredefn, OGRLayerH Ogr_layer, + struct field_info *Fi, dbDriver *driver, int ncol, + int *colctype, const char **colname, int doatt, + int nocat, int *n_noatt, int *n_nocat, + int outer_ring_ccw) +{ + int i, n_exported, area, centroid; + int cat, last_cat, db_cat, line, findex, ipart; + + struct line_pnts *Points; + struct line_cats *Cats; + struct ilist *line_list, *lcats; + + struct Cat_index *ci; + int cat_index, n_cats; + + dbString dbstring; + char buf[SQL_BUFFER_SIZE]; + dbCursor cursor; + int more; + int key_col_index; + + OGRGeometryH Ogr_geometry, Ogr_geometry_part; + OGRFeatureH Ogr_feature; + OGRwkbGeometryType wkbtype, wkbtype_part; + + Points = Vect_new_line_struct(); + Cats = Vect_new_cats_struct(); + line_list = Vect_new_list(); + lcats = Vect_new_list(); + + n_exported = 0; + + /* check if category index is available for given field */ + findex = Vect_cidx_get_field_index(In, field); + if (findex == -1) { + G_fatal_error(_("Unable to export multi-features. No category index " + "for layer %d."), + field); + } + + ci = &(In->plus.cidx[findex]); + n_cats = ci->n_cats; + + /* determine type */ + wkbtype_part = wkbPolygon; + wkbtype = get_multi_wkbtype(wkbtype_part); + + if (donocat) + G_message(_("Exporting features with category...")); + + key_col_index = -1; + more = 1; + if (doatt) { + /* select attributes ordered by category value */ + db_init_string(&dbstring); + sprintf(buf, "SELECT * FROM %s ORDER BY %s ASC", Fi->table, Fi->key); + G_debug(2, "SQL: %s", buf); + db_set_string(&dbstring, buf); + if (db_open_select_cursor(driver, &dbstring, &cursor, DB_SEQUENTIAL) != + DB_OK) { + G_fatal_error(_("Cannot select attributes sorted by %s"), Fi->key); + } + + if (db_fetch(&cursor, DB_NEXT, &more) != DB_OK) + G_fatal_error(_("Unable to fetch data from table")); + + /* get index of key column */ + key_col_index = -1; + for (i = 0; i < ncol; i++) { + if (strcmp(Fi->key, colname[i]) == 0) { + key_col_index = i; + break; + } + } + } + + last_cat = -1; + db_cat = -1; + cat_index = 0; + while (cat_index < n_cats) { + + G_percent(cat_index, n_cats, 5); + + cat = ci->cat[cat_index][0]; + + /* make sure the cidx is ordered by cat */ + if (cat < last_cat) + G_fatal_error(_("Category index is not sorted ascending by cat!")); + last_cat = cat; + + /* collect all features with current cat */ + Vect_reset_list(line_list); + while (cat_index < n_cats && ci->cat[cat_index][0] == cat) { + if (ci->cat[cat_index][1] & GV_CENTROID) { + Vect_list_append(line_list, ci->cat[cat_index][2]); + } + cat_index++; + } + + /* create multi-feature */ + Ogr_geometry = OGR_G_CreateGeometry(wkbtype); + + /* build simple features geometry, go through all parts */ + for (ipart = 0; ipart < line_list->n_values; ipart++) { + line = line_list->value[ipart]; + G_debug(3, "cat=%d, line=%d -> part=%d", cat, line, ipart); + + /* get centroid's category */ + Vect_read_line(In, NULL, Cats, line); + /* check for category consistency */ + Vect_field_cat_get(Cats, field, lcats); + if (!Vect_val_in_list(lcats, cat)) + G_fatal_error(_("Unable to create multi-feature. " + "Category %d not found in line %d, field %d"), + cat, line, field); + + /* find corresponding area */ + area = Vect_get_centroid_area(In, line); + if (area <= 0) + continue; + + /* create polygon from area */ + Ogr_geometry_part = + create_polygon(In, area, Points, outer_ring_ccw); + + /* add part */ + OGR_G_AddGeometryDirectly(Ogr_geometry, Ogr_geometry_part); + } + + if (!OGR_G_IsEmpty(Ogr_geometry)) { + /* write multi-feature */ + Ogr_feature = OGR_F_Create(Ogr_featuredefn); + OGR_F_SetGeometry(Ogr_feature, Ogr_geometry); + /* get attributes */ + mk_att_fast(cat, Fi, ncol, colctype, colname, doatt, nocat, + Ogr_feature, n_noatt, &cursor, &more, &db_cat, + key_col_index); + if (OGR_L_CreateFeature(Ogr_layer, Ogr_feature) != OGRERR_NONE) { + G_fatal_error(_("Failed to create OGR feature")); + } + else + n_exported++; + + OGR_F_Destroy(Ogr_feature); + } + else { + /* skip empty features */ + G_debug(3, "multi-feature is empty -> skipped"); + } + + OGR_G_DestroyGeometry(Ogr_geometry); + } + + if (donocat) + G_message(_("Exporting features without category...")); + + /* check areas without category, if -c flag is given write them as + * one multi-feature */ + Ogr_geometry = OGR_G_CreateGeometry(wkbtype); + + if (doatt) { + db_close_cursor(&cursor); + if (donocat) { + cat = -1; + if (db_open_select_cursor(driver, &dbstring, &cursor, + DB_SEQUENTIAL) != DB_OK) { + G_fatal_error(_("Cannot select attributes for cat = %d"), cat); + } + if (db_fetch(&cursor, DB_NEXT, &more) != DB_OK) + G_fatal_error(_("Unable to fetch data from table")); + } + } + + for (area = 1; area <= Vect_get_num_areas(In); area++) { + centroid = Vect_get_area_centroid(In, area); + /* skip areas without centroid */ + if (centroid == 0) + continue; + + /* get areas's category */ + Vect_get_area_cats(In, area, Cats); + Vect_cat_get(Cats, field, &cat); + /* skip areas with category */ + if (cat >= 0) + continue; + /* skip areas without category, do not export not labeled */ + if (cat < 0 && !donocat) { + (*n_nocat)++; + continue; + } + + /* create polygon from area */ + Ogr_geometry_part = create_polygon(In, area, Points, outer_ring_ccw); + + /* add part */ + OGR_G_AddGeometryDirectly(Ogr_geometry, Ogr_geometry_part); + + (*n_nocat)++; + } + + if (!OGR_G_IsEmpty(Ogr_geometry)) { + /* write multi-feature */ + Ogr_feature = OGR_F_Create(Ogr_featuredefn); + OGR_F_SetGeometry(Ogr_feature, Ogr_geometry); + /* no attributes for features without category */ + cat = -1; + db_cat = -2; + mk_att_fast(cat, Fi, ncol, colctype, colname, doatt, nocat, Ogr_feature, + n_noatt, &cursor, &more, &db_cat, key_col_index); + if (OGR_L_CreateFeature(Ogr_layer, Ogr_feature) != OGRERR_NONE) { + G_fatal_error(_("Failed to create OGR feature")); + } + else + n_exported++; + + OGR_F_Destroy(Ogr_feature); + } + else { + /* skip empty features */ + G_debug(3, "multi-feature is empty -> skipped"); + } + + OGR_G_DestroyGeometry(Ogr_geometry); + + if (donocat && doatt) + db_close_cursor(&cursor); + + Vect_destroy_line_struct(Points); + Vect_destroy_cats_struct(Cats); + Vect_destroy_list(line_list); + Vect_destroy_list(lcats); + + return n_exported; +} + +OGRGeometryH create_polygon(struct Map_info *In, int area, + struct line_pnts *Points, int outer_ring_ccw) +{ + int j, k; + OGRGeometryH Ogr_geometry, ring; + + Vect_get_area_points(In, area, Points); + + Ogr_geometry = OGR_G_CreateGeometry(wkbPolygon); + ring = OGR_G_CreateGeometry(wkbLinearRing); + + /* Area */ + if (Vect_is_3d(In)) { + if (outer_ring_ccw) { + for (j = Points->n_points - 1; j >= 0; j--) + OGR_G_AddPoint(ring, Points->x[j], Points->y[j], Points->z[j]); + } + else { + for (j = 0; j < Points->n_points; j++) + OGR_G_AddPoint(ring, Points->x[j], Points->y[j], Points->z[j]); + } + } + else { + if (outer_ring_ccw) { + for (j = Points->n_points - 1; j >= 0; j--) + OGR_G_AddPoint_2D(ring, Points->x[j], Points->y[j]); + } + else { + for (j = 0; j < Points->n_points; j++) + OGR_G_AddPoint_2D(ring, Points->x[j], Points->y[j]); + } + } + + OGR_G_AddGeometryDirectly(Ogr_geometry, ring); + + /* Isles */ + for (k = 0; k < Vect_get_area_num_isles(In, area); k++) { + Vect_get_isle_points(In, Vect_get_area_isle(In, area, k), Points); + ring = OGR_G_CreateGeometry(wkbLinearRing); + if (Vect_is_3d(In)) { + if (outer_ring_ccw) { + for (j = Points->n_points - 1; j >= 0; j--) + OGR_G_AddPoint(ring, Points->x[j], Points->y[j], + Points->z[j]); + } + else { + for (j = 0; j < Points->n_points; j++) + OGR_G_AddPoint(ring, Points->x[j], Points->y[j], + Points->z[j]); + } + } + else { + if (outer_ring_ccw) { + for (j = Points->n_points - 1; j >= 0; j--) + OGR_G_AddPoint_2D(ring, Points->x[j], Points->y[j]); + } + else { + for (j = 0; j < Points->n_points; j++) + OGR_G_AddPoint_2D(ring, Points->x[j], Points->y[j]); + } + } + OGR_G_AddGeometryDirectly(Ogr_geometry, ring); + } + + return Ogr_geometry; +} diff --git a/vector/v.out.ogr/export_lines_fast.c b/vector/v.out.ogr/export_lines_fast.c new file mode 100644 index 00000000000..e9509c8d972 --- /dev/null +++ b/vector/v.out.ogr/export_lines_fast.c @@ -0,0 +1,546 @@ +#include + +#include "local_proto.h" + +static int export_lines_single(struct Map_info *, int, int, int, int, + OGRFeatureDefnH, OGRLayerH, struct field_info *, + dbDriver *, int, int *, const char **, int, int, + int *, int *); +static int export_lines_multi(struct Map_info *, int, int, int, int, + OGRFeatureDefnH, OGRLayerH, struct field_info *, + dbDriver *, int, int *, const char **, int, int, + int *, int *); + +static void line_to_polygon(OGRGeometryH, const struct line_pnts *); + +static void add_part(OGRGeometryH, OGRwkbGeometryType, int, struct line_pnts *); + +static OGRGeometryH build_geometry(struct Map_info *, struct line_pnts *, int, + int, int); + +/* export primitives as single/multi-features */ +int export_lines_fast(struct Map_info *In, int field, int otype, int multi, + int donocat, int force_poly, + OGRFeatureDefnH Ogr_featuredefn, OGRLayerH Ogr_layer, + struct field_info *Fi, dbDriver *driver, int ncol, + int *colctype, const char **colname, int doatt, int nocat, + int *n_noatt, int *n_nocat) +{ + if (multi) + /* export as multi-features */ + return export_lines_multi(In, field, otype, donocat, force_poly, + Ogr_featuredefn, Ogr_layer, Fi, driver, ncol, + colctype, colname, doatt, nocat, n_noatt, + n_nocat); + + /* export as single features */ + return export_lines_single( + In, field, otype, donocat, force_poly, Ogr_featuredefn, Ogr_layer, Fi, + driver, ncol, colctype, colname, doatt, nocat, n_noatt, n_nocat); +} + +/* export line as single feature */ +int export_lines_single(struct Map_info *In, int field, int otype, int donocat, + int force_poly, OGRFeatureDefnH Ogr_featuredefn, + OGRLayerH Ogr_layer, struct field_info *Fi, + dbDriver *driver, int ncol, int *colctype, + const char **colname, int doatt, int nocat, + int *n_noatt, int *n_nocat) +{ + int i, n_exported; + int cat, last_cat, db_cat, type; + + struct line_pnts *Points; + struct line_cats *Cats; + + int findex; + struct Cat_index *ci; + int cat_index, n_cats; + + dbString dbstring; + char buf[SQL_BUFFER_SIZE]; + dbCursor cursor; + int more; + int key_col_index; + + OGRGeometryH Ogr_geometry; + OGRFeatureH Ogr_feature; + + Points = Vect_new_line_struct(); + Cats = Vect_new_cats_struct(); + + n_exported = 0; + + /* get category index for given field */ + findex = Vect_cidx_get_field_index(In, field); + if (findex == -1) { + G_fatal_error(_("Unable to export multi-features. No category index " + "for layer %d."), + field); + } + + ci = &(In->plus.cidx[findex]); + n_cats = ci->n_cats; + + if (donocat) + G_message(_("Exporting features with category...")); + + key_col_index = -1; + more = 1; + if (doatt) { + /* select attributes ordered by category value */ + db_init_string(&dbstring); + sprintf(buf, "SELECT * FROM %s ORDER BY %s ASC", Fi->table, Fi->key); + G_debug(2, "SQL: %s", buf); + db_set_string(&dbstring, buf); + if (db_open_select_cursor(driver, &dbstring, &cursor, DB_SEQUENTIAL) != + DB_OK) { + G_fatal_error(_("Cannot select attributes sorted by %s"), Fi->key); + } + + if (db_fetch(&cursor, DB_NEXT, &more) != DB_OK) + G_fatal_error(_("Unable to fetch data from table")); + + /* get index of key column */ + for (i = 0; i < ncol; i++) { + if (strcmp(Fi->key, colname[i]) == 0) { + key_col_index = i; + break; + } + } + } + + last_cat = -1; + db_cat = -1; + for (cat_index = 0; cat_index < n_cats; cat_index++) { + + G_percent(cat_index, n_cats, 5); + + if (!(ci->cat[cat_index][1] & otype)) + continue; + + cat = ci->cat[cat_index][0]; + /* make sure the cidx is ordered by cat */ + if (cat < last_cat) + G_fatal_error(_("Category index is not sorted ascending by cat!")); + last_cat = cat; + + i = ci->cat[cat_index][2]; + + /* read line */ + type = Vect_read_line(In, Points, Cats, i); + G_debug(2, "line = %d type = %d", i, type); + if (!(otype & type)) { + /* skip lines with different type */ + G_debug(2, "type %d not specified -> skipping", type); + continue; + } + + Ogr_geometry = build_geometry(In, Points, type, otype, force_poly); + + /* add feature */ + Ogr_feature = OGR_F_Create(Ogr_featuredefn); + OGR_F_SetGeometry(Ogr_feature, Ogr_geometry); + /* get attributes */ + mk_att_fast(cat, Fi, ncol, colctype, colname, doatt, nocat, Ogr_feature, + n_noatt, &cursor, &more, &db_cat, key_col_index); + if (OGR_L_CreateFeature(Ogr_layer, Ogr_feature) != OGRERR_NONE) { + G_fatal_error(_("Failed to create OGR feature")); + } + else + n_exported++; + + OGR_F_Destroy(Ogr_feature); + OGR_G_DestroyGeometry(Ogr_geometry); + } + + if (donocat) + G_message(_("Exporting features without category...")); + + if (doatt) { + db_close_cursor(&cursor); + if (donocat) { + cat = -1; + if (db_open_select_cursor(driver, &dbstring, &cursor, + DB_SEQUENTIAL) != DB_OK) { + G_fatal_error(_("Cannot select attributes for cat = %d"), cat); + } + if (db_fetch(&cursor, DB_NEXT, &more) != DB_OK) + G_fatal_error(_("Unable to fetch data from table")); + } + } + + /* this loop is needed to count features without category in the layer + * to be exported */ + Vect_rewind(In); + while (TRUE) { + type = Vect_read_next_line(In, Points, Cats); + if (type < 0) + break; + + Vect_cat_get(Cats, field, &cat); + if (cat >= 0) + continue; /* skip features with category */ + if (cat < 0 && !donocat) { + (*n_nocat)++; + continue; /* skip lines without category, do not export + * not labeled */ + } + + (*n_nocat)++; + + db_cat = -2; + cat = -1; + + /* code duplicated from above --> */ + Ogr_geometry = build_geometry(In, Points, type, otype, force_poly); + + /* add feature */ + Ogr_feature = OGR_F_Create(Ogr_featuredefn); + OGR_F_SetGeometry(Ogr_feature, Ogr_geometry); + /* no attributes for features without category */ + cat = -1; + db_cat = -2; + mk_att_fast(cat, Fi, ncol, colctype, colname, doatt, nocat, Ogr_feature, + n_noatt, &cursor, &more, &db_cat, key_col_index); + if (OGR_L_CreateFeature(Ogr_layer, Ogr_feature) != OGRERR_NONE) { + G_fatal_error(_("Failed to create OGR feature")); + } + else + n_exported++; + + OGR_F_Destroy(Ogr_feature); + OGR_G_DestroyGeometry(Ogr_geometry); + /* <-- code duplicated from above */ + } + if (doatt && donocat) + db_close_cursor(&cursor); + + Vect_destroy_line_struct(Points); + Vect_destroy_cats_struct(Cats); + + return n_exported; +} + +/* export line as multi-feature */ +int export_lines_multi(struct Map_info *In, int field, int otype, int donocat, + int force_poly, OGRFeatureDefnH Ogr_featuredefn, + OGRLayerH Ogr_layer, struct field_info *Fi, + dbDriver *driver, int ncol, int *colctype, + const char **colname, int doatt, int nocat, int *n_noatt, + int *n_nocat) +{ + int i, n_exported; + int cat, last_cat, db_cat, type; + int line, findex, ipart; + + struct line_pnts *Points; + struct line_cats *Cats; + struct ilist *line_list, *lcats; + + struct Cat_index *ci; + int cat_index, n_cats; + + dbString dbstring; + char buf[SQL_BUFFER_SIZE]; + dbCursor cursor; + int more; + int key_col_index; + + OGRGeometryH Ogr_geometry; + OGRFeatureH Ogr_feature; + OGRwkbGeometryType wkbtype, wkbtype_part; + + Points = Vect_new_line_struct(); + Cats = Vect_new_cats_struct(); + line_list = Vect_new_list(); + lcats = Vect_new_list(); + + n_exported = 0; + + /* check if category index is available for given field */ + findex = Vect_cidx_get_field_index(In, field); + if (findex == -1) { + G_fatal_error(_("Unable to export multi-features. No category index " + "for layer %d."), + field); + } + + ci = &(In->plus.cidx[findex]); + n_cats = ci->n_cats; + + if (donocat) + G_message(_("Exporting features with category...")); + + /* determine type */ + type = -1; /* unknown -> GeometryCollection */ + if (Vect_cidx_get_num_types_by_index(In, findex) == 1) + Vect_cidx_get_type_count_by_index(In, findex, 0, &type, NULL); + if (force_poly) + wkbtype_part = wkbPolygon; + else + wkbtype_part = get_wkbtype(type, otype); + wkbtype = get_multi_wkbtype(wkbtype_part); + + key_col_index = -1; + more = 1; + if (doatt) { + /* select attributes ordered by category value */ + db_init_string(&dbstring); + sprintf(buf, "SELECT * FROM %s ORDER BY %s ASC", Fi->table, Fi->key); + G_debug(2, "SQL: %s", buf); + db_set_string(&dbstring, buf); + if (db_open_select_cursor(driver, &dbstring, &cursor, DB_SEQUENTIAL) != + DB_OK) { + G_fatal_error(_("Cannot select attributes sorted by %s"), Fi->key); + } + + if (db_fetch(&cursor, DB_NEXT, &more) != DB_OK) + G_fatal_error(_("Unable to fetch data from table")); + + /* get index of key column */ + key_col_index = -1; + for (i = 0; i < ncol; i++) { + if (strcmp(Fi->key, colname[i]) == 0) { + key_col_index = i; + break; + } + } + } + + last_cat = -1; + db_cat = -1; + cat_index = 0; + while (cat_index < n_cats) { + + G_percent(cat_index, n_cats, 5); + + cat = ci->cat[cat_index][0]; + /* make sure the cidx is ordered by cat */ + if (cat < last_cat) + G_fatal_error(_("Category index is not sorted ascending by cat!")); + last_cat = cat; + + /* collect all features with current cat */ + Vect_reset_list(line_list); + while (cat_index < n_cats && ci->cat[cat_index][0] == cat) { + if (ci->cat[cat_index][1] & otype) { + Vect_list_append(line_list, ci->cat[cat_index][2]); + } + cat_index++; + } + + /* create multi-feature */ + Ogr_geometry = OGR_G_CreateGeometry(wkbtype); + + /* build simple features geometry, go through all parts */ + for (ipart = 0; ipart < line_list->n_values; ipart++) { + line = line_list->value[ipart]; + G_debug(3, "cat=%d, line=%d -> part=%d", cat, line, ipart); + + /* read line */ + type = Vect_read_line(In, Points, Cats, line); + + /* check for category consistency */ + Vect_field_cat_get(Cats, field, lcats); + if (!Vect_val_in_list(lcats, cat)) + G_fatal_error(_("Unable to create multi-feature. " + "Category %d not found in line %d, field %d"), + cat, line, field); + + /* add part */ + add_part(Ogr_geometry, wkbtype_part, type == GV_LINE && force_poly, + Points); + } + + if (!OGR_G_IsEmpty(Ogr_geometry)) { + /* write multi-feature */ + Ogr_feature = OGR_F_Create(Ogr_featuredefn); + OGR_F_SetGeometry(Ogr_feature, Ogr_geometry); + /* get attributes */ + mk_att_fast(cat, Fi, ncol, colctype, colname, doatt, nocat, + Ogr_feature, n_noatt, &cursor, &more, &db_cat, + key_col_index); + if (OGR_L_CreateFeature(Ogr_layer, Ogr_feature) != OGRERR_NONE) { + G_fatal_error(_("Failed to create OGR feature")); + } + else + n_exported++; + + OGR_F_Destroy(Ogr_feature); + } + else { + /* skip empty features */ + G_debug(3, "multi-feature is empty -> skipped"); + } + + OGR_G_DestroyGeometry(Ogr_geometry); + } + + if (donocat) + G_message(_("Exporting features without category...")); + + /* check lines without category, if -c flag is given write them as + * one multi-feature */ + Ogr_geometry = OGR_G_CreateGeometry(wkbtype); + + if (doatt) { + db_close_cursor(&cursor); + if (donocat) { + cat = -1; + if (db_open_select_cursor(driver, &dbstring, &cursor, + DB_SEQUENTIAL) != DB_OK) { + G_fatal_error(_("Cannot select attributes for cat = %d"), cat); + } + if (db_fetch(&cursor, DB_NEXT, &more) != DB_OK) + G_fatal_error(_("Unable to fetch data from table")); + } + } + + /* this loop is needed to count features without category in the layer + * to be exported */ + Vect_rewind(In); + while (TRUE) { + type = Vect_read_next_line(In, Points, Cats); + if (type < 0) + break; + + Vect_cat_get(Cats, field, &cat); + if (cat >= 0) + continue; /* skip features with category */ + if (cat < 0 && !donocat) { + (*n_nocat)++; + continue; /* skip lines without category, do not export + * not labeled */ + } + + (*n_nocat)++; + + /* add part */ + add_part(Ogr_geometry, wkbtype_part, type == GV_LINE && force_poly, + Points); + } + + if (!OGR_G_IsEmpty(Ogr_geometry)) { + /* write multi-feature */ + Ogr_feature = OGR_F_Create(Ogr_featuredefn); + OGR_F_SetGeometry(Ogr_feature, Ogr_geometry); + + /* no attributes for features without category */ + cat = -1; + db_cat = -2; + mk_att_fast(cat, Fi, ncol, colctype, colname, doatt, nocat, Ogr_feature, + n_noatt, &cursor, &more, &db_cat, key_col_index); + if (OGR_L_CreateFeature(Ogr_layer, Ogr_feature) != OGRERR_NONE) { + G_fatal_error(_("Failed to create OGR feature")); + } + else + n_exported++; + + OGR_F_Destroy(Ogr_feature); + } + else { + /* skip empty features */ + G_debug(3, "multi-feature is empty -> skipped"); + } + + OGR_G_DestroyGeometry(Ogr_geometry); + + if (donocat && doatt) + db_close_cursor(&cursor); + + Vect_destroy_line_struct(Points); + Vect_destroy_cats_struct(Cats); + Vect_destroy_list(line_list); + Vect_destroy_list(lcats); + + return n_exported; +} + +/* build polygon for closed line */ +void line_to_polygon(OGRGeometryH Ogr_geometry, const struct line_pnts *Points) +{ + int j; + OGRGeometryH ring; + + ring = OGR_G_CreateGeometry(wkbLinearRing); + + /* create a ring */ + for (j = 0; j < Points->n_points; j++) { + OGR_G_AddPoint(ring, Points->x[j], Points->y[j], Points->z[j]); + } + + /* close ring */ + if (Points->x[Points->n_points - 1] != Points->x[0] || + Points->y[Points->n_points - 1] != Points->y[0] || + Points->z[Points->n_points - 1] != Points->z[0]) { + OGR_G_AddPoint(ring, Points->x[0], Points->y[0], Points->z[0]); + } + + OGR_G_AddGeometryDirectly(Ogr_geometry, ring); +} + +void add_part(OGRGeometryH Ogr_geometry, OGRwkbGeometryType wkbtype_part, + int force_poly, struct line_pnts *Points) +{ + int j; + OGRGeometryH Ogr_geometry_part; + + Ogr_geometry_part = OGR_G_CreateGeometry(wkbtype_part); + if (force_poly) { + line_to_polygon(Ogr_geometry_part, Points); + } + else { + if (OGR_G_GetGeometryType(Ogr_geometry_part) == wkbPoint) { + /* GV_POINTS -> wkbPoint */ + OGR_G_AddPoint(Ogr_geometry_part, Points->x[0], Points->y[0], + Points->z[0]); + } + else { /* GV_LINES -> wkbLinestring */ + for (j = 0; j < Points->n_points; j++) { + OGR_G_AddPoint(Ogr_geometry_part, Points->x[j], Points->y[j], + Points->z[j]); + } + } + } + OGR_G_AddGeometryDirectly(Ogr_geometry, Ogr_geometry_part); +} + +static OGRGeometryH build_geometry(struct Map_info *In, + struct line_pnts *Points, int type, + int otype, int force_poly) +{ + OGRGeometryH Ogr_geometry; + + /* build simple features geometry */ + if ((type == GV_LINE && force_poly) || type == GV_FACE) { + /* lines to polygons + faces to 2.5D polygons */ + Ogr_geometry = OGR_G_CreateGeometry(wkbPolygon); + line_to_polygon(Ogr_geometry, Points); + } + else { + Ogr_geometry = OGR_G_CreateGeometry(get_wkbtype(type, otype)); + if (OGR_G_GetGeometryType(Ogr_geometry) == wkbPoint) { + /* GV_POINTS -> wkbPoint */ + if (Vect_is_3d(In)) + OGR_G_AddPoint(Ogr_geometry, Points->x[0], Points->y[0], + Points->z[0]); + else + OGR_G_AddPoint_2D(Ogr_geometry, Points->x[0], Points->y[0]); + } + else { + /* GV_LINES -> wkbLinestring */ + int j; + for (j = 0; j < Points->n_points; j++) { + if (Vect_is_3d(In)) + OGR_G_AddPoint(Ogr_geometry, Points->x[j], Points->y[j], + Points->z[j]); + else + OGR_G_AddPoint_2D(Ogr_geometry, Points->x[j], Points->y[j]); + } + } + } + + return Ogr_geometry; +} diff --git a/vector/v.out.ogr/local_proto.h b/vector/v.out.ogr/local_proto.h index a0406a350a1..07921ece8f3 100644 --- a/vector/v.out.ogr/local_proto.h +++ b/vector/v.out.ogr/local_proto.h @@ -12,7 +12,7 @@ struct Options { struct Option *input, *dsn, *layer, *type, *format, *field, *dsco, *lco, - *otype; + *otype, *method; }; struct Flags { @@ -23,10 +23,14 @@ struct Flags { /* args.c */ void parse_args(int, char **, struct Options *, struct Flags *); -/* attributes.c */ +/* attrb.c */ int mk_att(int, struct field_info *, dbDriver *, int, int *, const char **, int, int, OGRFeatureH, int *); +/* attrb_fast.c */ +int mk_att_fast(int, struct field_info *, int, int *, const char **, int, int, + OGRFeatureH, int *, dbCursor *, int *, int *, int); + /* dsn.c */ char *get_datasource_name(const char *, int); @@ -46,7 +50,18 @@ int export_lines(struct Map_info *, int, int, int, int, int, OGRFeatureDefnH, OGRLayerH, struct field_info *, dbDriver *, int, int *, const char **, int, int, int *, int *); +/* export_lines_fast.c */ +int export_lines_fast(struct Map_info *, int, int, int, int, int, + OGRFeatureDefnH, OGRLayerH, struct field_info *, + dbDriver *, int, int *, const char **, int, int, int *, + int *); + /* export_areas.c */ int export_areas(struct Map_info *, int, int, int, OGRFeatureDefnH, OGRLayerH, struct field_info *, dbDriver *, int, int *, const char **, int, int, int *, int *, int); + +/* export_areas_fast.c */ +int export_areas_fast(struct Map_info *, int, int, int, OGRFeatureDefnH, + OGRLayerH, struct field_info *, dbDriver *, int, int *, + const char **, int, int, int *, int *, int); diff --git a/vector/v.out.ogr/main.c b/vector/v.out.ogr/main.c index 788d27a3665..b0c2b34419d 100644 --- a/vector/v.out.ogr/main.c +++ b/vector/v.out.ogr/main.c @@ -820,11 +820,20 @@ int main(int argc, char *argv[]) Vect_get_num_primitives(&In, otype)), Vect_get_num_primitives(&In, otype)); - n_feat += export_lines( - &In, field, otype, flags.multi->answer ? TRUE : FALSE, donocat, - ftype == GV_BOUNDARY ? TRUE : FALSE, Ogr_featuredefn, Ogr_layer, Fi, - Driver, ncol, colctype, colname, doatt, - flags.nocat->answer ? TRUE : FALSE, &n_noatt, &n_nocat); + if (strcmp(options.method->answer, "slow") == 0) { + n_feat += export_lines( + &In, field, otype, flags.multi->answer ? TRUE : FALSE, donocat, + ftype == GV_BOUNDARY ? TRUE : FALSE, Ogr_featuredefn, Ogr_layer, + Fi, Driver, ncol, colctype, colname, doatt, + flags.nocat->answer ? TRUE : FALSE, &n_noatt, &n_nocat); + } + else { + n_feat += export_lines_fast( + &In, field, otype, flags.multi->answer ? TRUE : FALSE, donocat, + ftype == GV_BOUNDARY ? TRUE : FALSE, Ogr_featuredefn, Ogr_layer, + Fi, Driver, ncol, colctype, colname, doatt, + flags.nocat->answer ? TRUE : FALSE, &n_noatt, &n_nocat); + } } /* Areas (run always to count features of different type) */ @@ -834,11 +843,20 @@ int main(int argc, char *argv[]) Vect_get_num_areas(&In)), Vect_get_num_areas(&In)); - n_feat += export_areas(&In, field, flags.multi->answer ? TRUE : FALSE, - donocat, Ogr_featuredefn, Ogr_layer, Fi, Driver, - ncol, colctype, colname, doatt, - flags.nocat->answer ? TRUE : FALSE, &n_noatt, - &n_nocat, outer_ring_ccw); + if (strcmp(options.method->answer, "slow") == 0) { + n_feat += export_areas( + &In, field, flags.multi->answer ? TRUE : FALSE, donocat, + Ogr_featuredefn, Ogr_layer, Fi, Driver, ncol, colctype, colname, + doatt, flags.nocat->answer ? TRUE : FALSE, &n_noatt, &n_nocat, + outer_ring_ccw); + } + else { + n_feat += export_areas_fast( + &In, field, flags.multi->answer ? TRUE : FALSE, donocat, + Ogr_featuredefn, Ogr_layer, Fi, Driver, ncol, colctype, colname, + doatt, flags.nocat->answer ? TRUE : FALSE, &n_noatt, &n_nocat, + outer_ring_ccw); + } } /* From 3b5486c0463a7103ab2109e28bf860fe34539868 Mon Sep 17 00:00:00 2001 From: Markus Neteler Date: Wed, 27 Nov 2024 22:53:26 +0100 Subject: [PATCH 10/36] manual: fix more broken HTML tags (#4765) In order to obtain a good result when converting the HTML manual pages files to markdown, ideally clean HTML code is used. This PR fixes numerous broken HTML tags identified during a test run of [adding HTML validation with super-linter](https://github.com/echoix/grass/pull/303). For reference, see logs showing the errors at https://github.com/echoix/grass/actions/runs/12001379426/job/33451802353?pr=303#step:4:8310 Fixes: - incomplete tag pairs - tabs replaced with white space - fix missing .html extension in URLs --- db/databaseintro.html | 2 +- db/db.select/db.select.html | 2 +- db/drivers/mysql/grass-mesql.html | 6 +- db/drivers/mysql/grass-mysql.html | 35 +- db/drivers/postgres/grass-pg.html | 2 +- display/d.geodesic/d.geodesic.html | 2 +- display/d.graph/d.graph.html | 2 +- display/d.legend/d.legend.html | 6 +- display/d.rast.num/d.rast.num.html | 2 +- display/d.rhumbline/d.rhumbline.html | 2 +- display/d.text/d.text.html | 2 +- display/d.vect.chart/d.vect.chart.html | 6 +- display/displaydrivers.html | 8 +- doc/gui/wxpython/example/g.gui.example.html | 2 +- doc/projectionintro.html | 14 +- general/g.findfile/g.findfile.html | 2 +- general/g.gisenv/g.gisenv.html | 8 +- general/g.message/g.message.html | 33 +- general/g.parser/g.parser.html | 2 +- general/g.proj/g.proj.html | 7 +- general/g.setproj/g.setproj.html | 22 +- gui/wxpython/animation/g.gui.animation.html | 2 +- .../datacatalog/g.gui.datacatalog.html | 2 +- gui/wxpython/dbmgr/g.gui.dbmgr.html | 2 +- gui/wxpython/docs/wxGUI.html | 136 ++-- gui/wxpython/docs/wxGUI.iscatt.html | 2 +- gui/wxpython/docs/wxGUI.modules.html | 2 +- gui/wxpython/docs/wxGUI.nviz.html | 4 +- gui/wxpython/docs/wxGUI.toolboxes.html | 12 +- gui/wxpython/docs/wxGUI.vnet.html | 2 +- gui/wxpython/gcp/g.gui.gcp.html | 6 +- gui/wxpython/gmodeler/g.gui.gmodeler.html | 2 +- gui/wxpython/iclass/g.gui.iclass.html | 2 +- .../image2target/g.gui.image2target.html | 6 +- gui/wxpython/mapswipe/g.gui.mapswipe.html | 2 +- .../photo2image/g.gui.photo2image.html | 4 +- gui/wxpython/psmap/g.gui.psmap.html | 42 +- gui/wxpython/rdigit/g.gui.rdigit.html | 6 +- gui/wxpython/rlisetup/g.gui.rlisetup.html | 124 ++-- gui/wxpython/timeline/g.gui.timeline.html | 4 +- gui/wxpython/tplot/g.gui.tplot.html | 6 +- gui/wxpython/vdigit/g.gui.vdigit.html | 82 +-- imagery/i.aster.toar/i.aster.toar.html | 6 +- imagery/i.atcorr/i.atcorr.html | 40 +- imagery/i.biomass/i.biomass.html | 12 +- imagery/i.cluster/i.cluster.html | 6 +- imagery/i.eb.eta/i.eb.eta.html | 8 +- imagery/i.eb.hsebal01/i.eb.hsebal01.html | 18 +- imagery/i.emissivity/i.emissivity.html | 2 +- imagery/i.evapo.pm/i.evapo.pm.html | 13 +- imagery/i.evapo.pt/i.evapo.pt.html | 6 +- imagery/i.evapo.time/i.evapo.time.html | 18 +- imagery/i.fft/i.fft.html | 6 +- imagery/i.gensig/i.gensig.html | 16 +- imagery/i.gensigset/i.gensigset.html | 6 +- imagery/i.modis.qc/i.modis.qc.html | 4 +- .../i.ortho.camera/i.ortho.camera.html | 40 +- .../i.ortho.init/i.ortho.init.html | 41 +- .../i.ortho.photo/i.ortho.photo.html | 8 +- .../i.ortho.rectify/i.ortho.rectify.html | 18 +- .../i.ortho.target/i.ortho.target.html | 21 +- imagery/i.rectify/i.rectify.html | 10 +- imagery/i.smap/i.smap.html | 6 +- imagery/i.vi/i.vi.html | 6 +- imagery/i.zc/i.zc.html | 10 +- imagery/imageryintro.html | 2 +- lib/htmldriver/htmldriver.html | 12 +- lib/init/grass.html | 8 +- lib/init/variables.html | 25 +- lib/vector/vectorascii.html | 12 +- misc/m.measure/m.measure.html | 2 +- misc/m.nviz.script/m.nviz.script.html | 12 +- ps/ps.map/ps.map.html | 691 +++++++++--------- raster/r.buffer/r.buffer.html | 2 +- raster/r.carve/r.carve.html | 12 +- raster/r.category/r.category.html | 4 +- raster/r.contour/r.contour.html | 2 +- raster/r.external.out/r.external.out.html | 2 +- raster/r.fill.dir/r.fill.dir.html | 16 +- raster/r.fill.stats/r.fill.stats.html | 4 +- raster/r.flow/r.flow.html | 16 +- raster/r.geomorphon/r.geomorphon.html | 96 +-- raster/r.grow.distance/r.grow.distance.html | 6 +- raster/r.horizon/r.horizon.html | 4 +- raster/r.in.lidar/r.in.lidar.html | 12 +- raster/r.in.mat/r.in.mat.html | 14 +- raster/r.in.pdal/r.in.pdal.html | 12 +- raster/r.in.xyz/r.in.xyz.html | 8 +- raster/r.kappa/r.kappa.html | 2 +- raster/r.lake/r.lake.html | 26 +- raster/r.li/r.li.cwed/r.li.cwed.html | 8 +- raster/r.li/r.li.daemon/r.li.daemon.html | 52 +- .../r.li/r.li.dominance/r.li.dominance.html | 4 +- .../r.li.edgedensity/r.li.edgedensity.html | 4 +- raster/r.li/r.li.html | 42 +- raster/r.li/r.li.mpa/r.li.mpa.html | 4 +- raster/r.li/r.li.mps/r.li.mps.html | 4 +- raster/r.li/r.li.padcv/r.li.padcv.html | 4 +- raster/r.li/r.li.padrange/r.li.padrange.html | 4 +- raster/r.li/r.li.padsd/r.li.padsd.html | 4 +- .../r.li.patchdensity/r.li.patchdensity.html | 2 +- raster/r.li/r.li.patchnum/r.li.patchnum.html | 6 +- raster/r.li/r.li.pielou/r.li.pielou.html | 4 +- raster/r.li/r.li.renyi/r.li.renyi.html | 4 +- raster/r.li/r.li.richness/r.li.richness.html | 4 +- raster/r.li/r.li.shannon/r.li.shannon.html | 4 +- raster/r.li/r.li.shape/r.li.shape.html | 4 +- raster/r.li/r.li.simpson/r.li.simpson.html | 4 +- raster/r.mapcalc/r.mapcalc.html | 72 +- raster/r.mapcalc/r3.mapcalc.html | 80 +- raster/r.neighbors/r.neighbors.html | 39 +- .../r.object.geometry/r.object.geometry.html | 2 +- raster/r.out.gdal/r.out.gdal.html | 8 +- raster/r.out.mat/r.out.mat.html | 14 +- raster/r.out.pov/r.out.pov.html | 12 +- raster/r.out.ppm/r.out.ppm.html | 2 +- raster/r.out.vrml/r.out.vrml.html | 4 +- raster/r.out.vtk/r.out.vtk.html | 6 +- raster/r.param.scale/r.param.scale.html | 2 +- raster/r.patch/r.patch.html | 2 +- raster/r.profile/r.profile.html | 4 +- raster/r.proj/r.proj.html | 14 +- raster/r.reclass/r.reclass.html | 4 +- raster/r.recode/r.recode.html | 8 +- raster/r.relief/r.relief.html | 14 +- raster/r.resamp.stats/r.resamp.stats.html | 2 +- raster/r.ros/r.ros.html | 14 +- raster/r.series.interp/r.series.interp.html | 2 +- raster/r.series/r.series.html | 50 +- raster/r.sim/r.sim.water/r.sim.water.html | 14 +- raster/r.slope.aspect/r.slope.aspect.html | 22 +- raster/r.spread/r.spread.html | 4 +- raster/r.stats.quantile/r.stats.quantile.html | 2 +- raster/r.stats.zonal/r.stats.zonal.html | 2 +- raster/r.sun/r.sun.html | 36 +- raster/r.sunmask/r.sunmask.html | 2 +- raster/r.terraflow/r.terraflow.html | 40 +- raster/r.texture/r.texture.html | 15 +- raster/r.thin/r.thin.html | 2 +- raster/r.timestamp/r.timestamp.html | 50 +- raster/r.topmodel/r.topmodel.html | 12 +- raster/r.univar/r.univar.html | 4 +- raster/r.viewshed/r.viewshed.html | 18 +- raster/r.walk/r.walk.html | 6 +- raster/r.water.outlet/r.water.outlet.html | 2 +- raster/r.watershed/front/r.watershed.html | 27 +- raster/r.what.color/r.what.color.html | 4 +- raster/rasterintro.html | 8 +- raster3d/r3.gwflow/r3.gwflow.html | 20 +- raster3d/r3.in.ascii/r3.in.ascii.html | 8 +- raster3d/r3.in.bin/r3.in.bin.html | 4 +- raster3d/r3.in.lidar/r3.in.lidar.html | 16 +- raster3d/r3.mkdspf/r3.mkdspf.html | 10 +- raster3d/r3.out.ascii/r3.out.ascii.html | 4 +- raster3d/r3.out.bin/r3.out.bin.html | 4 +- raster3d/r3.showdspf/r3.showdspf.html | 2 +- .../r3.showdspf/r3.showdspf_opengl_mods.html | 2 +- raster3d/r3.stats/r3.stats.html | 4 +- raster3d/raster3dintro.html | 2 +- scripts/d.correlate/d.correlate.html | 2 +- scripts/d.rast.edit/d.rast.edit.html | 4 +- scripts/db.out.ogr/db.out.ogr.html | 2 +- scripts/i.pansharpen/i.pansharpen.html | 18 +- scripts/i.spectral/i.spectral.html | 2 +- scripts/i.tasscap/i.tasscap.html | 10 +- scripts/r.fillnulls/r.fillnulls.html | 10 +- .../r.mapcalc.simple/r.mapcalc.simple.html | 18 +- scripts/v.dissolve/v.dissolve.html | 10 +- .../t.rast.accumulate/t.rast.accumulate.html | 4 +- .../t.rast.aggregate.ds.html | 10 +- temporal/t.rast.algebra/t.rast.algebra.html | 50 +- temporal/t.rast.extract/t.rast.extract.html | 9 +- temporal/t.rast.mapcalc/t.rast.mapcalc.html | 2 +- temporal/t.rast.series/t.rast.series.html | 2 +- temporal/t.rast.to.rast3/t.rast.to.rast3.html | 2 +- temporal/t.rast.what/t.rast.what.html | 2 +- temporal/t.sample/t.sample.html | 4 +- temporal/t.select/t.select.html | 34 +- temporal/t.vect.algebra/t.vect.algebra.html | 40 +- .../t.vect.db.select/t.vect.db.select.html | 2 +- temporal/t.vect.extract/t.vect.extract.html | 4 +- temporal/temporalintro.html | 10 +- vector/v.clean/v.clean.html | 4 +- vector/v.decimate/v.decimate.html | 14 +- vector/v.edit/v.edit.html | 8 +- vector/v.hull/v.hull.html | 4 +- vector/v.in.db/v.in.db.html | 2 +- vector/v.in.ogr/v.in.ogr.html | 12 +- vector/v.in.pdal/v.in.pdal.html | 14 +- vector/v.info/v.info.html | 2 +- vector/v.kcv/v.kcv.html | 4 +- vector/v.kernel/v.kernel.html | 4 +- vector/v.label/v.label.html | 22 +- vector/v.lrs/lrs.html | 24 +- vector/v.net.alloc/v.net.alloc.html | 4 +- vector/v.net.bridge/v.net.bridge.html | 6 - vector/v.net.iso/v.net.iso.html | 4 +- vector/v.net.path/v.net.path.html | 6 +- vector/v.out.ascii/v.out.ascii.html | 4 +- vector/v.out.postgis/v.out.postgis.html | 2 +- vector/v.out.vtk/v.out.vtk.html | 12 +- vector/v.overlay/v.overlay.html | 12 +- vector/v.proj/v.proj.html | 14 +- vector/v.random/v.random.html | 12 +- vector/v.reclass/v.reclass.html | 4 +- vector/v.rectify/v.rectify.html | 12 +- vector/v.support/v.support.html | 4 +- vector/v.to.rast/v.to.rast.html | 20 +- vector/v.univar/v.univar.html | 4 +- vector/v.vol.rst/v.vol.rst.html | 2 +- vector/v.voronoi/v.voronoi.html | 2 +- vector/vectorintro.html | 2 +- 212 files changed, 1646 insertions(+), 1648 deletions(-) diff --git a/db/databaseintro.html b/db/databaseintro.html index 3569dd34983..c400ab6e0ed 100644 --- a/db/databaseintro.html +++ b/db/databaseintro.html @@ -36,7 +36,7 @@

      Attribute data import and export

      Further conversion tools: diff --git a/db/db.select/db.select.html b/db/db.select/db.select.html index 175151cbe55..58ceba5443d 100644 --- a/db/db.select/db.select.html +++ b/db/db.select/db.select.html @@ -62,7 +62,7 @@

      Execute multiple SQL statements

       cat file.sql
       SELECT * FROM busstopsall WHERE cat = 1
      -SELECT cat FROM busstopsall WHERE cat > 4 AND cat < 8
      +SELECT cat FROM busstopsall WHERE cat > 4 AND cat < 8
       
       db.select input=file.sql
       
      diff --git a/db/drivers/mysql/grass-mesql.html b/db/drivers/mysql/grass-mesql.html index 1cbe952da41..3e2299b0d88 100644 --- a/db/drivers/mysql/grass-mesql.html +++ b/db/drivers/mysql/grass-mesql.html @@ -14,9 +14,9 @@

      Driver and database name

      before use of the driver. In the name of database it is possible to use 3 variables:
        -
      • $GISDBASE - path to current GISBASE -
      • $LOCATION_NAME - name of current location -
      • $MAPSET - name of current mapset +
      • $GISDBASE - path to current GISBASE
      • +
      • $LOCATION_NAME - name of current location
      • +
      • $MAPSET - name of current mapset

      diff --git a/db/drivers/mysql/grass-mysql.html b/db/drivers/mysql/grass-mysql.html index 8fdbc831a31..c49c58407d9 100644 --- a/db/drivers/mysql/grass-mysql.html +++ b/db/drivers/mysql/grass-mysql.html @@ -14,7 +14,7 @@

      Creating a MySQL database

      A new database is created within MySQL:
      -mysql> CREATE DATABASE mydb;
      +mysql> CREATE DATABASE mydb;
       
      See the MySQL manual for details. @@ -27,21 +27,21 @@

      Driver and database name

      The parameter 'database' can be given in two formats:
        -
      • Database name - in case of connection from localhost +
      • Database name - in case of connection from localhost
      • String of comma separated list of kye=value options. - Supported options are: -
          -
        • dbname - database name -
        • host - host name or IP address -
        • port - server port number -
        + Supported options are:
      • +
          +
        • dbname - database name
        • +
        • host - host name or IP address
        • +
        • port - server port number
        • +

      Examples of connection parameters: -

      +
       db.connect driver=mysql database=mytest
       db.connect driver=mysql database='dbname=mytest,host=test.grass.org'
      -
      +

      Data types

      @@ -51,16 +51,16 @@

      Data types

      BLOB, LONGBLOB) are not not supported. If a table with binary column(s) is used in GRASS a warning is printed and only the supported columns are -returned in query results. +returned in query results. -
    • Columns of type SET and ENUM are represented as string (VARCHAR). +
    • Columns of type SET and ENUM are represented as string (VARCHAR).
    • Very large integers in columns of type BIGINT can be lost or corrupted because GRASS does not support 64 bin integeres -on most platforms. +on most platforms.
    • GRASS does not currently distinguish types TIMESTAMP and -DATETIME. Both types are in GRASS interpreted as TIMESTAMP. +DATETIME. Both types are in GRASS interpreted as TIMESTAMP.

    Indexes

    @@ -81,11 +81,12 @@

    Privileges

    to other users you have to ask your MySQL server administrator to grant select privilege to them on the MySQL database used for that mapset. For example, to allow everybody to read data -in from your database 'mydb':
    -
    +in from your database 'mydb':
    +
    +
     shell> mysql --user=root mysql
     mysql> GRANT SELECT ON mydb.* TO ''@'%';
    -
    +

    Schemas

    diff --git a/db/drivers/postgres/grass-pg.html b/db/drivers/postgres/grass-pg.html index cb707fa9314..3950c0dd315 100644 --- a/db/drivers/postgres/grass-pg.html +++ b/db/drivers/postgres/grass-pg.html @@ -115,7 +115,7 @@

    Example: Import from PostGIS

    Geometry Converters

    • PostGIS with shp2pgsql:
      - shp2pgsql -D lakespy2 lakespy2 test > lakespy2.sql + shp2pgsql -D lakespy2 lakespy2 test > lakespy2.sql
    • e00pg: E00 to PostGIS filter, see also v.in.e00. diff --git a/display/d.geodesic/d.geodesic.html b/display/d.geodesic/d.geodesic.html index d419b099c53..91c0497ef82 100644 --- a/display/d.geodesic/d.geodesic.html +++ b/display/d.geodesic/d.geodesic.html @@ -33,7 +33,7 @@

      EXAMPLE

      -
      +Geodesic line (great circle line)
      Geodesic line (great circle line)
      diff --git a/display/d.graph/d.graph.html b/display/d.graph/d.graph.html index cd046bdf0e6..d70530f5da1 100644 --- a/display/d.graph/d.graph.html +++ b/display/d.graph/d.graph.html @@ -207,7 +207,7 @@

      LIMITATIONS

      There are no automated ways of generating graphic images. It is anticipated that GRASS user sites will write programs to convert output from a resident graphics editor into GRASS d.graph format. -(e.g. EPS -> d.graph, perhaps with the help of a +(e.g. EPS -> d.graph, perhaps with the help of a pstoedit plugin)

      SEE ALSO

      diff --git a/display/d.legend/d.legend.html b/display/d.legend/d.legend.html index 9ac86a51a36..66706b390b5 100644 --- a/display/d.legend/d.legend.html +++ b/display/d.legend/d.legend.html @@ -104,7 +104,7 @@

      EXAMPLE

      -Elevation map with legend +Elevation map with legend
      Displaying the legend with custom labels and background: @@ -116,7 +116,7 @@

      EXAMPLE

      -Elevation map with custom legend +Elevation map with custom legend
      Displaying the legend with logarithmic scale: @@ -129,7 +129,7 @@

      EXAMPLE

      -Flow accumulation map with logarithmic legend +Flow accumulation map with logarithmic legend
      diff --git a/display/d.rast.num/d.rast.num.html b/display/d.rast.num/d.rast.num.html index 6566c940b7d..28d30b75bfc 100644 --- a/display/d.rast.num/d.rast.num.html +++ b/display/d.rast.num/d.rast.num.html @@ -32,7 +32,7 @@

      EXAMPLE

      -
      +Euclidean distance from the streams network in meters
      Euclidean distance from the streams network in meters (detail, numbers shown with d.rast.num)
      diff --git a/display/d.rhumbline/d.rhumbline.html b/display/d.rhumbline/d.rhumbline.html index e0c6abd6974..ed6fb7a2b10 100644 --- a/display/d.rhumbline/d.rhumbline.html +++ b/display/d.rhumbline/d.rhumbline.html @@ -34,7 +34,7 @@

      EXAMPLE

      -
      +
      Rhumbline (loxodrome)
      diff --git a/display/d.text/d.text.html b/display/d.text/d.text.html index 3679f7e0d94..46f257ddfdb 100644 --- a/display/d.text/d.text.html +++ b/display/d.text/d.text.html @@ -89,7 +89,7 @@

      EXAMPLE

      - +
      Displayed Text
      diff --git a/display/d.vect.chart/d.vect.chart.html b/display/d.vect.chart/d.vect.chart.html index f109e49208d..58f1cd5c1bf 100644 --- a/display/d.vect.chart/d.vect.chart.html +++ b/display/d.vect.chart/d.vect.chart.html @@ -7,9 +7,9 @@

      NOTES

      The charts are positioned as follows:
        -
      • vector points: on point position, -
      • vector lines: on line centers, -
      • vector areas: on area centroids. +
      • vector points: on point position,
      • +
      • vector lines: on line centers,
      • +
      • vector areas: on area centroids.
      Bar charts are placed with their lower edge starting from the y-coordinate diff --git a/display/displaydrivers.html b/display/displaydrivers.html index e44fe723a47..2a8f4f71213 100644 --- a/display/displaydrivers.html +++ b/display/displaydrivers.html @@ -9,10 +9,10 @@

      List of available display drivers:

      NOTES

      diff --git a/doc/gui/wxpython/example/g.gui.example.html b/doc/gui/wxpython/example/g.gui.example.html index ab24a531dfa..c11ec5b2b8b 100644 --- a/doc/gui/wxpython/example/g.gui.example.html +++ b/doc/gui/wxpython/example/g.gui.example.html @@ -48,7 +48,7 @@

      EXAMPLE TOOL TOOLBAR

      SEE ALSO

      - wxGUI
      + wxGUI, wxGUI components
      diff --git a/doc/projectionintro.html b/doc/projectionintro.html index 3998d367453..33bc964e3d7 100644 --- a/doc/projectionintro.html +++ b/doc/projectionintro.html @@ -12,7 +12,7 @@

      Projection management in general

      Reprojecting raster maps

      Rasters are reprojected using the raster projection tool -r.proj. +r.proj. The tool is used in the target project to "pull" a map from its source project. Both projects need to have a projection defined, i.e., they cannot be XY (unprojected). @@ -37,7 +37,7 @@

      Raster map transformation

      Vector map projections

      Vectors are reprojected using the vector projection tool -v.proj. +v.proj. The tool is used in the target project to "pull" a map from its source project. Both projects need to have a projection defined, i.e., they cannot be XY (unprojected). @@ -60,11 +60,11 @@

      Vector map transformation

      References

      See also

      diff --git a/general/g.findfile/g.findfile.html b/general/g.findfile/g.findfile.html index 9831f8cc29d..140495691d9 100644 --- a/general/g.findfile/g.findfile.html +++ b/general/g.findfile/g.findfile.html @@ -68,7 +68,7 @@

      SHELL

       eval `g.findfile element=vector file="$G_OPT_V_INPUT"`
       if [ ! "$file" ] ; then
      -   g.message -e "Vector map <$G_OPT_V_INPUT> not found"
      +   g.message -e "Vector map <$G_OPT_V_INPUT> not found"
          exit 1
       fi
       
      diff --git a/general/g.gisenv/g.gisenv.html b/general/g.gisenv/g.gisenv.html index 4f5d9e165b3..4eb2a88ed13 100644 --- a/general/g.gisenv/g.gisenv.html +++ b/general/g.gisenv/g.gisenv.html @@ -186,10 +186,10 @@

      GRASS Debugging

      Levels: (recommended levels)
        -
      • 0 - silence -
      • 1 - message is printed once or few times per module -
      • 3 - each row (raster) or line (vector) -
      • 5 - each cell (raster) or point (vector) +
      • 0 - silence
      • +
      • 1 - message is printed once or few times per module
      • +
      • 3 - each row (raster) or line (vector)
      • +
      • 5 - each cell (raster) or point (vector)
      To disable debugging messages: diff --git a/general/g.message/g.message.html b/general/g.message/g.message.html index 71ce75854db..07bf643c97b 100644 --- a/general/g.message/g.message.html +++ b/general/g.message/g.message.html @@ -51,13 +51,13 @@

      Usage in Python scripts

      for g.message.
        -
      • debug() for g.message -d -
      • error() for g.message -e -
      • fatal() for g.message -e + exit() -
      • info() for g.message -i -
      • message() for g.message -
      • verbose() for g.message -v -
      • warning() for g.message -w +
      • debug() for g.message -d
      • +
      • error() for g.message -e
      • +
      • fatal() for g.message -e + exit()
      • +
      • info() for g.message -i
      • +
      • message() for g.message
      • +
      • verbose() for g.message -v
      • +
      • warning() for g.message -w

      @@ -81,10 +81,10 @@

      VERBOSITY LEVELS

      Controlled by the "GRASS_VERBOSE" environment variable. Typically this is set using the --quiet or --verbose command line options.
        -
      • 0 - only errors and warnings are printed -
      • 1 - progress messages are printed -
      • 2 - all module messages are printed -
      • 3 - additional verbose messages are printed +
      • 0 - only errors and warnings are printed
      • +
      • 1 - progress messages are printed
      • +
      • 2 - all module messages are printed
      • +
      • 3 - additional verbose messages are printed

      DEBUG LEVELS

      @@ -93,9 +93,9 @@

      DEBUG LEVELS


      Recommended levels:
        -
      • 1 - message is printed once or few times per module -
      • 3 - each row (raster) or line (vector) -
      • 5 - each cell (raster) or point (vector) +
      • 1 - message is printed once or few times per module
      • +
      • 3 - each row (raster) or line (vector)
      • +
      • 5 - each cell (raster) or point (vector)

      EXAMPLES

      @@ -138,7 +138,10 @@

      EXAMPLES

      SEE ALSO

      -GRASS variables and environment variables
      +GRASS variables and environment variables +
      +
      + g.gisenv, g.parser diff --git a/general/g.parser/g.parser.html b/general/g.parser/g.parser.html index b1de89a3a08..aad91b22ec8 100644 --- a/general/g.parser/g.parser.html +++ b/general/g.parser/g.parser.html @@ -645,7 +645,7 @@

      Easy creation of a script

      # % multiple: no # % key_desc: sql_query # % label: WHERE conditions of SQL statement without 'where' keyword -# % description: Example: income < 1000 and population >= 10000 +# % description: Example: income < 1000 and population >= 10000 # %end import sys diff --git a/general/g.proj/g.proj.html b/general/g.proj/g.proj.html index d24927d8761..310ff2f1d10 100644 --- a/general/g.proj/g.proj.html +++ b/general/g.proj/g.proj.html @@ -228,14 +228,13 @@

      REFERENCES

      Further reading

      SEE ALSO

      - m.proj, r.proj, diff --git a/general/g.setproj/g.setproj.html b/general/g.setproj/g.setproj.html index 8adde5637aa..f59d8331ced 100644 --- a/general/g.setproj/g.setproj.html +++ b/general/g.setproj/g.setproj.html @@ -9,7 +9,7 @@ -GRASS logo
      +GRASS logo

      NAME

      @@ -64,18 +64,20 @@

      NOTES

      SEE ALSO

      -g.proj, -m.proj, -r.proj, -v.proj, -PROJ site + +g.proj, +m.proj, +r.proj, +v.proj, +PROJ site +

      Further reading

      AUTHORS

      diff --git a/gui/wxpython/animation/g.gui.animation.html b/gui/wxpython/animation/g.gui.animation.html index 09a9630a54c..cf22e6b3cd1 100644 --- a/gui/wxpython/animation/g.gui.animation.html +++ b/gui/wxpython/animation/g.gui.animation.html @@ -81,7 +81,7 @@

      EXAMPLES

      SEE ALSO

      - wxGUI
      + wxGUI, wxGUI components
      diff --git a/gui/wxpython/datacatalog/g.gui.datacatalog.html b/gui/wxpython/datacatalog/g.gui.datacatalog.html index 23b450be772..8fe684349ba 100644 --- a/gui/wxpython/datacatalog/g.gui.datacatalog.html +++ b/gui/wxpython/datacatalog/g.gui.datacatalog.html @@ -38,7 +38,7 @@

      WARNING

      SEE ALSO

      - wxGUI
      + wxGUI, wxGUI components
      diff --git a/gui/wxpython/dbmgr/g.gui.dbmgr.html b/gui/wxpython/dbmgr/g.gui.dbmgr.html index 9ea595a754e..0416843d43b 100644 --- a/gui/wxpython/dbmgr/g.gui.dbmgr.html +++ b/gui/wxpython/dbmgr/g.gui.dbmgr.html @@ -41,7 +41,7 @@

      SQL Builder

      SEE ALSO

      - wxGUI
      + wxGUI, wxGUI components
      diff --git a/gui/wxpython/docs/wxGUI.html b/gui/wxpython/docs/wxGUI.html index ebf4680e6eb..fec5ced8c22 100644 --- a/gui/wxpython/docs/wxGUI.html +++ b/gui/wxpython/docs/wxGUI.html @@ -110,38 +110,38 @@

      Layer Manager Toolbar

      icon  - Add 3D raster map layer
      + Add 3D raster map layer
      Adds 3D raster map to layer tree.
      icon  - Add RGB raster layer
      + Add RGB raster layer
      Combines and displays three raster maps defined as red, green, - and blue channels to create an RGB color map, - see d.rgb.
      + and blue channels to create an RGB color map, + see d.rgb.
      icon  - Add HIS raster layer
      + Add HIS raster layer
      Combines and displays two or three raster maps defined as hue, - intensity, and (optionally) saturation channels to create a color map, - see d.his.
      + intensity, and (optionally) saturation channels to create a color map, + see d.his.
      icon  - Add shaded relief raster map layer
      + Add shaded relief raster map layer
      Adds shaded relief raster map layer, see r.relief and d.shade.
      icon  - Add raster arrows layer
      + Add raster arrows layer
      Adds map of raster cells with directional arrows drawn. Arrow - direction and length are determined by separate aspect/directional map - and (optional) slope/intensity map, - see d.rast.arrow.
      + direction and length are determined by separate aspect/directional map + and (optional) slope/intensity map, + see d.rast.arrow.
      icon  - Add raster numbers layer
      + Add raster numbers layer
      Adds map of raster cells with numbers representing the cell values, - see d.rast.num.
      + see d.rast.num.
      icon  @@ -155,26 +155,26 @@

      Layer Manager Toolbar

      icon  - Add thematic area (choropleth) map layer - (for all vector types)
      + Add thematic area (choropleth) map layer + (for all vector types)
      Adds layer for thematic display values from a numeric attribute - column associated with a vector map. Options include: thematic display - type (graduated colors or point sizes), methods for creating display - intervals, SQL query of attribute column to limit vector objects to - display, control of point icon types and sizes, control of thematic - color schemes, creation of legend for thematic map, and saving the - results of thematic mapping to a ps.map instructions file for later - printing, - see d.vect.thematic.
      + column associated with a vector map. Options include: thematic display + type (graduated colors or point sizes), methods for creating display + intervals, SQL query of attribute column to limit vector objects to + display, control of point icon types and sizes, control of thematic + color schemes, creation of legend for thematic map, and saving the + results of thematic mapping to a ps.map instructions file for later + printing, + see d.vect.thematic.
      icon  - Add thematic chart layer (for vector points)
      + Add thematic chart layer (for vector points)
      Adds layer in which pie or bar charts can be automatically created - at vector point locations. Charts display values from selected columns - in the associated attribute table. Options include: chart type, layer - and attributes to chart, chart colors, and chart size (fixed or based - on attribute column), - see d.vect.chart.
      + at vector point locations. Charts display values from selected columns + in the associated attribute table. Options include: chart type, layer + and attributes to chart, chart colors, and chart size (fixed or based + on attribute column), + see d.vect.chart.
      icon  @@ -186,32 +186,32 @@

      Layer Manager Toolbar

      Opens a dropdown menu that allows user to select to:
      icon  - Add overlay grids and lines
      + Add overlay grids and lines
      Adds layer to display regular grid - see d.grid
      + see d.grid
      icon  - Add labels layer for vector objects (from existing labels file)
      + Add labels layer for vector objects (from existing labels file)
      Add a layer of text from a labels file for vector objects - created with the v.label module. - A labels file can also be created with a text editor, - see d.labels.
      + created with the v.label module. + A labels file can also be created with a text editor, + see d.labels.
      icon  - Add geodesic line layer
      + Add geodesic line layer
      Add layer to display geodesic line for latitude/longitude projects only, - see d.geodesic
      + see d.geodesic
      icon  - Add rhumbline layer -
      Add layer to display rhumblines (for latitude/longitude projects only), + Add rhumbline layer +
      Add layer to display rhumblines (for latitude/longitude projects only), see d.rhumbline.
      icon  - Add command layer
      + Add command layer
      Adds a layer in which a GRASS GIS command or command list can be entered. - For a command list use the semi-colon (";") symbol as a separator. - For example: + For a command list use the semi-colon (";") symbol as a separator. + For example:
       d.rast soils;d.rast -o roads;d.vect streams col=blue
      @@ -241,37 +241,37 @@ 

      Layer Manager Toolbar

      icon  - Import raster data
      + Import raster data
      Import selected raster data into GRASS using r.in.gdal and load them into current layer tree.
      icon  - Link external raster data
      + Link external raster data
      Link selected external raster data as GRASS raster maps (using r.external) and load them into current layer tree.
      icon  - Set raster output format
      + Set raster output format
      Define external format for newly created raster maps (see r.external.out for details)
      icon  - Import vector data
      + Import vector data
      Import selected vector data into GRASS using v.in.ogr and load them into current layer tree.
      icon  - Link external vector data
      + Link external vector data
      Link selected external vector data as GRASS vector maps (using v.external) and load them into current layer tree.
      icon  - Set vector output format
      + Set vector output format
      Define external format for newly created vector maps (see v.external.out for details)
      @@ -375,10 +375,10 @@

      Map Display Toolbar

      icon  Query raster/vector maps
      Query selected raster, RGB raster (all three map channels will be - queried), or vector map(s) using the mouse. Map(s) must be selected - before query. Vector charts and thematic vector maps cannot be - queried. The results of the query will be displayed in a dialog. - See r.what, v.what. + queried), or vector map(s) using the mouse. Map(s) must be selected + before query. Vector charts and thematic vector maps cannot be + queried. The results of the query will be displayed in a dialog. + See r.what, v.what.
      icon  @@ -473,9 +473,9 @@

      Map Display Toolbar

      icon  Profile surface map
      Interactively create profile of a raster map. Profile transect is - drawn with the mouse in map display. The profile may be of the - displayed map or a different map. Up to three maps can be profiled - simultaneously.
      + drawn with the mouse in map display. The profile may be of the + displayed map or a different map. Up to three maps can be profiled + simultaneously.
      icon  Create bivariate scatterplot of raster maps
      @@ -546,25 +546,25 @@

      Map Display Toolbar

      2D view
      Normal GIS display. All active layers are composited and displayed - in 2D mode.
      + in 2D mode.
      3D view
      Experimental replacement for NVIZ. Displays all active layers in - 3D perspective using OpenGL. A new control panel opens to manage the - 3D view. 3D view can be zoomed, panned, rotated, and tilted. The - vertical exaggeration of rasters and 3D vectors can be set. Various - color and lighten settings are possible. Not yet functional for - Windows platforms
      + 3D perspective using OpenGL. A new control panel opens to manage the + 3D view. 3D view can be zoomed, panned, rotated, and tilted. The + vertical exaggeration of rasters and 3D vectors can be set. Various + color and lighten settings are possible. Not yet functional for + Windows platforms
      Vector digitizer
      Puts display into vector digitizing mode and opens a new digitizing - toolbar. The user can digitize a new vector map or edit an existing - map.
      + toolbar. The user can digitize a new vector map or edit an existing + map.
      Raster digitizer
      Puts display into raster digitizing mode and opens a new digitizing - toolbar. The user can digitize a new raster map or edit an existing - map.
      + toolbar. The user can digitize a new raster map or edit an existing + map. @@ -692,8 +692,8 @@

      Background information

      SEE ALSO

      - wxGUI components
      - wxGUI module dialogs
      + wxGUI components, + wxGUI module dialogs, wxGUI toolboxes (menu customization)
      diff --git a/gui/wxpython/docs/wxGUI.iscatt.html b/gui/wxpython/docs/wxGUI.iscatt.html index 85ef25d164d..d1601eb1c0d 100644 --- a/gui/wxpython/docs/wxGUI.iscatt.html +++ b/gui/wxpython/docs/wxGUI.iscatt.html @@ -69,7 +69,7 @@

      KNOWN ISSUES

      SEE ALSO

      - wxGUI
      + wxGUI, wxGUI components, r.rescale
      diff --git a/gui/wxpython/docs/wxGUI.modules.html b/gui/wxpython/docs/wxGUI.modules.html index dd9d3e2b34f..44aeedace61 100644 --- a/gui/wxpython/docs/wxGUI.modules.html +++ b/gui/wxpython/docs/wxGUI.modules.html @@ -174,7 +174,7 @@

      NOTES

      SEE ALSO

      - wxGUI
      + wxGUI, wxGUI components
      diff --git a/gui/wxpython/docs/wxGUI.nviz.html b/gui/wxpython/docs/wxGUI.nviz.html index aed1c0b0a8e..3c0767f9598 100644 --- a/gui/wxpython/docs/wxGUI.nviz.html +++ b/gui/wxpython/docs/wxGUI.nviz.html @@ -319,7 +319,7 @@

      Appearance

      • Lighting for adjusting light source
      • -
      • Fringe for drawing fringes +
      • Fringe for drawing fringes
      • Decorations to display north arrow and scale bar

      @@ -386,7 +386,7 @@

      NOTE

      SEE ALSO

      - wxGUI
      + wxGUI, wxGUI components
      diff --git a/gui/wxpython/docs/wxGUI.toolboxes.html b/gui/wxpython/docs/wxGUI.toolboxes.html index 4920fe07c3f..ccbf4f6415c 100644 --- a/gui/wxpython/docs/wxGUI.toolboxes.html +++ b/gui/wxpython/docs/wxGUI.toolboxes.html @@ -7,11 +7,11 @@

      DESCRIPTION

        -
      • hide unused menu items in menu (e.g. Imagery, Database) or submenu (e.g. Wildfire modeling) -
      • change order of menu items and subitems -
      • add new menu items (e.g. Temporal) -
      • add addons modules -
      • add your own modules +
      • hide unused menu items in menu (e.g. Imagery, Database) or submenu (e.g. Wildfire modeling)
      • +
      • change order of menu items and subitems
      • +
      • add new menu items (e.g. Temporal)
      • +
      • add addons modules
      • +
      • add your own modules

      @@ -194,7 +194,7 @@

      NOTES

      SEE ALSO

      - wxGUI
      + wxGUI, wxGUI components
      diff --git a/gui/wxpython/docs/wxGUI.vnet.html b/gui/wxpython/docs/wxGUI.vnet.html index cad3fe0b9cc..c1b8a51831b 100644 --- a/gui/wxpython/docs/wxGUI.vnet.html +++ b/gui/wxpython/docs/wxGUI.vnet.html @@ -89,7 +89,7 @@

      KNOWN ISSUES

      SEE ALSO

      - wxGUI
      + wxGUI, wxGUI components
      diff --git a/gui/wxpython/gcp/g.gui.gcp.html b/gui/wxpython/gcp/g.gui.gcp.html index d7ddfd403e4..97713d9a763 100644 --- a/gui/wxpython/gcp/g.gui.gcp.html +++ b/gui/wxpython/gcp/g.gui.gcp.html @@ -26,11 +26,11 @@

      DESCRIPTION

      manipulate and analyze GCPs are provided in the toolbar. This panel can be moved out of the GCP manager window by either dragging with the caption or by clicking on the pin button on the right in the caption. - This panel can also be placed below the map displays by dragging. + This panel can also be placed below the map displays by dragging.
    • The two panels in the lower part are used for map and GCP display, the left pane showing a map from the source project and the right pane showing a reference map from the target project. Numbered Ground - Control Points are shown on both map displays. + Control Points are shown on both map displays.
    @@ -292,7 +292,7 @@

    GCP Map Display Statusbar

    SEE ALSO

    - wxGUI
    + wxGUI, wxGUI components
    diff --git a/gui/wxpython/gmodeler/g.gui.gmodeler.html b/gui/wxpython/gmodeler/g.gui.gmodeler.html index a840768abeb..0bf5fa743b0 100644 --- a/gui/wxpython/gmodeler/g.gui.gmodeler.html +++ b/gui/wxpython/gmodeler/g.gui.gmodeler.html @@ -460,7 +460,7 @@

    Defining loops

    SEE ALSO

    - wxGUI
    + wxGUI, wxGUI components
    diff --git a/gui/wxpython/iclass/g.gui.iclass.html b/gui/wxpython/iclass/g.gui.iclass.html index f1cf34ba897..3ce1bd580e6 100644 --- a/gui/wxpython/iclass/g.gui.iclass.html +++ b/gui/wxpython/iclass/g.gui.iclass.html @@ -82,7 +82,7 @@

    DESCRIPTION

    SEE ALSO

    - wxGUI
    + wxGUI, wxGUI components, Interactive Scatter Plot Tool
    diff --git a/gui/wxpython/image2target/g.gui.image2target.html b/gui/wxpython/image2target/g.gui.image2target.html index f24c6fa2a0d..35b9c7023dd 100644 --- a/gui/wxpython/image2target/g.gui.image2target.html +++ b/gui/wxpython/image2target/g.gui.image2target.html @@ -26,11 +26,11 @@

    DESCRIPTION

    manipulate and analyze GCPs are provided in the toolbar. This panel can be moved out of the GCP manager window by either dragging with the caption or by clicking on the pin button on the right in the caption. - This panel can also be placed below the map displays by dragging. + This panel can also be placed below the map displays by dragging.
  • The two panels in the lower part are used for map and GCP display, the left pane showing a map from the source project and the right pane showing a reference map from the target project. Numbered Ground - Control Points are shown on both map displays. + Control Points are shown on both map displays.
  • Components of the GCP Manager

    @@ -291,7 +291,7 @@

    GCP Map Display Statusbar

    SEE ALSO

    - wxGUI
    + wxGUI, wxGUI components
    diff --git a/gui/wxpython/mapswipe/g.gui.mapswipe.html b/gui/wxpython/mapswipe/g.gui.mapswipe.html index 58c2e28d264..ae4fe135a0f 100644 --- a/gui/wxpython/mapswipe/g.gui.mapswipe.html +++ b/gui/wxpython/mapswipe/g.gui.mapswipe.html @@ -39,7 +39,7 @@

    DESCRIPTION

    SEE ALSO

    - wxGUI
    + wxGUI, wxGUI components
    diff --git a/gui/wxpython/photo2image/g.gui.photo2image.html b/gui/wxpython/photo2image/g.gui.photo2image.html index f958f9baf7e..af113100511 100644 --- a/gui/wxpython/photo2image/g.gui.photo2image.html +++ b/gui/wxpython/photo2image/g.gui.photo2image.html @@ -32,7 +32,7 @@

    Screenshot of g.gui.photo2image

    -Screenshot of g.gui.photo2image +Screenshot of g.gui.photo2image
    Figure: Screenshot of g.gui.photo2image
    @@ -40,7 +40,7 @@

    Screenshot of g.gui.photo2image

    For a detailed operation manual please read

    -wxGUI
    +wxGUI, wxGUI components
    diff --git a/gui/wxpython/psmap/g.gui.psmap.html b/gui/wxpython/psmap/g.gui.psmap.html index 02fc0d9960f..068b2ae6724 100644 --- a/gui/wxpython/psmap/g.gui.psmap.html +++ b/gui/wxpython/psmap/g.gui.psmap.html @@ -18,9 +18,9 @@

    DESCRIPTION

    Possible output files:

      -
    • ps.map instructions file -
    • PostScript/EPS file -
    • PDF (using ps2pdf) +
    • ps.map instructions file
    • +
    • PostScript/EPS file
    • +
    • PDF (using ps2pdf)
    @@ -38,23 +38,23 @@

    DESCRIPTION

    Currently supported ps.map instructions:
      -
    • paper -
    • maploc -
    • scale -
    • border -
    • raster -
    • colortable -
    • vpoints -
    • vlines -
    • vareas -
    • vlegend -
    • text -
    • scalebar -
    • mapinfo -
    • point -
    • line -
    • rectangle -
    • labels +
    • paper
    • +
    • maploc
    • +
    • scale
    • +
    • border
    • +
    • raster
    • +
    • colortable
    • +
    • vpoints
    • +
    • vlines
    • +
    • vareas
    • +
    • vlegend
    • +
    • text
    • +
    • scalebar
    • +
    • mapinfo
    • +
    • point
    • +
    • line
    • +
    • rectangle
    • +
    • labels

    CARTOGRAPHIC COMPOSER TOOLBAR

    @@ -203,7 +203,7 @@

    CARTOGRAPHIC COMPOSER TOOLBAR

    SEE ALSO

    - wxGUI
    + wxGUI, wxGUI components
    diff --git a/gui/wxpython/rdigit/g.gui.rdigit.html b/gui/wxpython/rdigit/g.gui.rdigit.html index becb12affd7..7705ef8c7be 100644 --- a/gui/wxpython/rdigit/g.gui.rdigit.html +++ b/gui/wxpython/rdigit/g.gui.rdigit.html @@ -74,9 +74,9 @@

    EXAMPLES

    SEE ALSO

    - wxGUI
    - wxGUI components,
    - r.in.poly (backend of digitizer),
    + wxGUI, + wxGUI components, + r.in.poly (backend of digitizer), g.gui.vdigit
    diff --git a/gui/wxpython/rlisetup/g.gui.rlisetup.html b/gui/wxpython/rlisetup/g.gui.rlisetup.html index 1dc786e0b10..7539eeb739f 100644 --- a/gui/wxpython/rlisetup/g.gui.rlisetup.html +++ b/gui/wxpython/rlisetup/g.gui.rlisetup.html @@ -78,76 +78,76 @@

    Usage details

    1. Choose file name and maps to use for setting: -
        -
      • Name for new configuration file(required): the name - of new configuration file
      • -
      • Raster map name to use to select areas (required): +
          +
        • Name for new configuration file(required): the name + of new configuration file
        • +
        • Raster map name to use to select areas (required): the name of raster map used for selecting sampling areas
        • -
        • Vector map to overlay (optional): name of a +
        • Vector map to overlay (optional): name of a vector map used for selecting sampling areas
        • -
        +
    2. Set the sampling frame. The sample frame is a rectangular area which contains all the areas to analyze. It can be defined in three ways: -
        -
      • Whole map layer: the sample frame is the whole map
      • -
      • Keyboard setting: the user enters the coordinates in - cells of upper left corner of sampling frame and its length in - rows and columns.
      • -
      • Draw the sample frame: the user draws the sample frame - on map using mouse.
      • -
      +
        +
      • Whole map layer: the sample frame is the whole map
      • +
      • Keyboard setting: the user enters the coordinates in + cells of upper left corner of sampling frame and its length in + rows and columns.
      • +
      • Draw the sample frame: the user draws the sample frame + on map using mouse.
      • +
    3. Set the sample areas. The sample areas are simply the areas to analyze. They can be defined in five ways (see the picture below): -
        -
      • Whole map layer: the sample area is the whole sample - frame
      • -
      • Regions: the user enters the number of areas and then - draws them using mouse.
      • -
      • Sample units: they are areas of rectangular or circular - shape. The user can define them using keyboard or mouse. -
          -
        • keyboard: the user define the shape of sample unists and - their disposition: -
            -
          • Random non overlapping: the user specifies - the number of sample units and they are placed in a - random way at runtime. It is guaranteed that the - areas do not intersect themselves.
          • -
          • Systematic contiguous: the defined sample - is placed covering the sample frame, side by side - across rows.
          • -
          • Systematic non contiguous: the same as above, - but here ever rectangle is spaced from another by - a specified number of cells.
          • -
          • Stratified random: the sample frame is - divided in n strats of rows and m strats of columns - (n and m are given by user), then the specified - number of sample areas are placed in a random way, - one for every m*n areas defined by strats.
          • -
          • Centered over sites: the sample areas - are placed into sample frame centering them on points - in site file.
          • -
          -
        • -
        • mouse: the user chooses the shape and then draws the - specified number of sample areas on map.
        • -
        +
          +
        • Whole map layer: the sample area is the whole sample + frame
        • +
        • Regions: the user enters the number of areas and then + draws them using mouse.
        • +
        • Sample units: they are areas of rectangular or circular + shape. The user can define them using keyboard or mouse. +
            +
          • keyboard: the user define the shape of sample unists and + their disposition: +
              +
            • Random non overlapping: the user specifies + the number of sample units and they are placed in a + random way at runtime. It is guaranteed that the + areas do not intersect themselves.
            • +
            • Systematic contiguous: the defined sample + is placed covering the sample frame, side by side + across rows.
            • +
            • Systematic non contiguous: the same as above, + but here ever rectangle is spaced from another by + a specified number of cells.
            • +
            • Stratified random: the sample frame is + divided in n strats of rows and m strats of columns + (n and m are given by user), then the specified + number of sample areas are placed in a random way, + one for every m*n areas defined by strats.
            • +
            • Centered over sites: the sample areas + are placed into sample frame centering them on points + in site file.
            • +
            +
          • +
          • mouse: the user chooses the shape and then draws the + specified number of sample areas on map.
          • +
        • -
        • Moving Window: the user defines a rectangular or - circular area, it is moved over all the raster increasing only - of a cell for every move(in columns if possible, if not in rows). - It produces a new raster containing the result of all analysis.
        • -
        • Select areas from the overlaid vector map: - the sample areas are defined by the vector map selected above. - For every cat in vector map, the procedure prompts the - user if they want to include it as sample area. - The resulting configuration file can be used only with the - specified raster map, and the procedure can be used only if - whole map layer is selected as sampling frame.
        • -
        +
      • Moving Window: the user defines a rectangular or + circular area, it is moved over all the raster increasing only + of a cell for every move(in columns if possible, if not in rows). + It produces a new raster containing the result of all analysis.
      • +
      • Select areas from the overlaid vector map: + the sample areas are defined by the vector map selected above. + For every cat in vector map, the procedure prompts the + user if they want to include it as sample area. + The resulting configuration file can be used only with the + specified raster map, and the procedure can be used only if + whole map layer is selected as sampling frame.
      • +
    @@ -165,7 +165,7 @@

    NOTES

    Screenshots of the wizard window frames:
    -
    sqliteData storage in SQLite database files (default DB backend)http://sqlite.org/
    https://sqlite.org/
    dbfData storage in DBF files http://shapelib.maptools.org/dbf_api.html
    pgData storage in PostgreSQL RDBMShttp://postgresql.org/
    https://postgresql.org/
    mysqlData storage in MySQL RDBMShttp://mysql.org/
    https://www.mysql.org/
    odbcData storage via UnixODBC (PostgreSQL, Oracle, etc.) https://www.unixodbc.org/
    +
     g.gui.rlisetup: First frame of wizard for selecting existing configuration files or creating a new one @@ -328,7 +328,7 @@

    REFERENCES

    SEE ALSO

    -r.li - package overview
    +r.li - package overview, r.li.daemon

    diff --git a/gui/wxpython/timeline/g.gui.timeline.html b/gui/wxpython/timeline/g.gui.timeline.html index a9d07affdf5..443e07417b4 100644 --- a/gui/wxpython/timeline/g.gui.timeline.html +++ b/gui/wxpython/timeline/g.gui.timeline.html @@ -26,8 +26,8 @@

    NOTES

    SEE ALSO

    - Temporal data processing
    - wxGUI
    + Temporal data processing, + wxGUI, wxGUI components
    diff --git a/gui/wxpython/tplot/g.gui.tplot.html b/gui/wxpython/tplot/g.gui.tplot.html index f5293668ba9..10ddafa6245 100644 --- a/gui/wxpython/tplot/g.gui.tplot.html +++ b/gui/wxpython/tplot/g.gui.tplot.html @@ -20,7 +20,7 @@

    DESCRIPTION

  • add title to the plot, and
  • export the time series values to a CSV file (x axis data has date time string format, if you want to use for calculating simple regression model in the - R environment, + R environment, LibreOffice etc., you will obtain a different calculated formula
    y = a + b*x
    because these software packages use a reference date other than @@ -65,8 +65,8 @@

    NOTES

    SEE ALSO

    - Temporal data processing
    - wxGUI
    + Temporal data processing, + wxGUI, wxGUI components
    diff --git a/gui/wxpython/vdigit/g.gui.vdigit.html b/gui/wxpython/vdigit/g.gui.vdigit.html index 7b0c7165063..d02064b997f 100644 --- a/gui/wxpython/vdigit/g.gui.vdigit.html +++ b/gui/wxpython/vdigit/g.gui.vdigit.html @@ -159,57 +159,57 @@

    DIGITIZER TOOLBAR

    • Break selected lines/boundaries at intersection
      Split - given vector line or boundary into two lines on given position - (based on v.clean, - tool=break).
    • + given vector line or boundary into two lines on given position + (based on v.clean, + tool=break).
    • Connect two selected lines/boundaries
      Connect selected - lines or boundaries, the first given line is connected to the - second one. The second line is broken if necessary on each intersection. - The lines are connected only if distance between them is not greater - than snapping threshold value.
    • + lines or boundaries, the first given line is connected to the + second one. The second line is broken if necessary on each intersection. + The lines are connected only if distance between them is not greater + than snapping threshold value.
    • Copy categories
      Copy category settings of - selected vector feature to other vector - features. Layer/category pairs of source vector features are - appended to the target feature category settings. Existing - layer/category pairs are not removed from category settings of - the target features.
    • + selected vector feature to other vector + features. Layer/category pairs of source vector features are + appended to the target feature category settings. Existing + layer/category pairs are not removed from category settings of + the target features.
    • Copy features from (background) vector map
      Make identical copy of - selected vector features. If a background vector map has been - selected from the Layer Manager, copy features from background - vector map, not from the currently modified vector map.
    • + selected vector features. If a background vector map has been + selected from the Layer Manager, copy features from background + vector map, not from the currently modified vector map.
    • Copy attributes
      Duplicate attributes settings of - selected vector feature to other vector features. New - category(ies) is appended to the target feature category - settings and attributes duplicated based on category settings - of source vector features. Existing layer/category pairs are - not removed from category settings of the target - features.
    • + selected vector feature to other vector features. New + category(ies) is appended to the target feature category + settings and attributes duplicated based on category settings + of source vector features. Existing layer/category pairs are + not removed from category settings of the target + features.
    • Feature type conversion
      Change feature type of selected - geometry features. Points are converted to centroids, - centroids to points, lines to boundaries and boundaries to - lines.
    • + geometry features. Points are converted to centroids, + centroids to points, lines to boundaries and boundaries to + lines.
    • Flip selected lines/boundaries
      Flip direction of - selected linear features (lines or boundaries).
    • + selected linear features (lines or boundaries).
    • Merge selected lines/boundaries
      Merge (at least two) - selected vector lines or boundaries. The geometry of the - merged vector lines can be changed. If the second line from - two selected lines is in opposite direction to the first, it - will be flipped. See also - module v.build.polylines.
    • + selected vector lines or boundaries. The geometry of the + merged vector lines can be changed. If the second line from + two selected lines is in opposite direction to the first, it + will be flipped. See also + module v.build.polylines.
    • Snap selected lines/boundaries (only to nodes)
      Snap - vector features in given threshold. See also - module v.clean. Note that - this tool supports only snapping to nodes. Snapping to vector - features from background vector map is not currently - supported.
    • + vector features in given threshold. See also + module v.clean. Note that + this tool supports only snapping to nodes. Snapping to vector + features from background vector map is not currently + supported.
    • Split line/boundary
      Split selected line or boundary on given position.
    • @@ -218,7 +218,7 @@

      DIGITIZER TOOLBAR

      min/max length value (linear features or dangles).
    • Z-bulk labeling of 3D lines
      Assign z coordinate values to 3D - vector lines in bounding box. This is useful for labeling contour lines.
    • + vector lines in bounding box. This is useful for labeling contour lines.
    @@ -248,9 +248,9 @@

    DIGITIZER TOOLBAR

    NOTES

    Mouse button functions:
    -
    Left - select or deselect features
    -
    Control+Left - cancel action or undo vertex when digitizing lines
    -
    Right - confirm action
    +
    Left - select or deselect features
    +
    Control+Left - cancel action or undo vertex when digitizing lines
    +
    Right - confirm action

    @@ -288,8 +288,8 @@

    REFERENCES

    SEE ALSO

    -wxGUI
    -wxGUI components + wxGUI, + wxGUI components

    diff --git a/imagery/i.aster.toar/i.aster.toar.html b/imagery/i.aster.toar/i.aster.toar.html index 7442ce91766..793d0834447 100644 --- a/imagery/i.aster.toar/i.aster.toar.html +++ b/imagery/i.aster.toar/i.aster.toar.html @@ -9,9 +9,9 @@

    DESCRIPTION

    The order of input bands is

      -
    • VNIR: 1,2,3N,3B -
    • SWIR: 4,5,6,7,8,9 -
    • TIR: 10,11,12,13,14 +
    • VNIR: 1,2,3N,3B
    • +
    • SWIR: 4,5,6,7,8,9
    • +
    • TIR: 10,11,12,13,14
    in one comma-separated list. diff --git a/imagery/i.atcorr/i.atcorr.html b/imagery/i.atcorr/i.atcorr.html index 0b905d87aad..bf122963aba 100644 --- a/imagery/i.atcorr/i.atcorr.html +++ b/imagery/i.atcorr/i.atcorr.html @@ -837,14 +837,14 @@

    Atmospheric correction of a Sentinel-2 band

    particular scene and band. To create a 6S file, we need to obtain the following information:
      -
    • geometrical conditions, -
    • moth, day, decimal hours in GMT, decimal longitude and latitude of measurement, -
    • atmospheric model, -
    • aerosol model, -
    • visibility or aerosol optical depth, -
    • mean target elevation above sea level, -
    • sensor height and, -
    • sensor band. +
    • geometrical conditions,
    • +
    • moth, day, decimal hours in GMT, decimal longitude and latitude of measurement,
    • +
    • atmospheric model,
    • +
    • aerosol model,
    • +
    • visibility or aerosol optical depth,
    • +
    • mean target elevation above sea level,
    • +
    • sensor height and,
    • +
    • sensor band.
      @@ -944,17 +944,17 @@

      Atmospheric correction of a Sentinel-2 band

      B02 of our Sentinel 2 scene. We have to specify the following parameters:
        -
      • input = raster band to be processed, -
      • parameters = path to 6S file created in the previous step (we could also enter the values directly), -
      • output = name for the output corrected raster band, -
      • range = from 1 to the QUANTIFICATION_VALUE stored in the metadata file. It is 10000 for both Sentinel-2A and Sentinel-2B. -
      • rescale = the output range of values for the corrected bands. This is up to the user to choose, for example: 0-255, 0-1, 1-10000. +
      • input = raster band to be processed,
      • +
      • parameters = path to 6S file created in the previous step (we could also enter the values directly),
      • +
      • output = name for the output corrected raster band,
      • +
      • range = from 1 to the QUANTIFICATION_VALUE stored in the metadata file. It is 10000 for both Sentinel-2A and Sentinel-2B.
      • +
      • rescale = the output range of values for the corrected bands. This is up to the user to choose, for example: 0-255, 0-1, 1-10000.

      If the data is available, the following parameters can be specified as well:

        -
      • elevation = raster of digital elevation model, -
      • visibility = raster of visibility model. +
      • elevation = raster of digital elevation model,
      • +
      • visibility = raster of visibility model.

      Finally, this is how the command would look like to apply atmospheric @@ -1115,20 +1115,20 @@

      REFERENCES

      • Vermote, E.F., Tanre, D., Deuze, J.L., Herman, M., and Morcrette, J.J., 1997, Second simulation of the satellite signal in the solar spectrum, 6S: An -overview., IEEE Trans. Geosc. and Remote Sens. 35(3):675-686. +overview., IEEE Trans. Geosc. and Remote Sens. 35(3):675-686.
      • 6S Manual: PDF1, PDF2, - and PDF3 -
      • RapidEye sensors have been provided by RapidEye AG, Germany + and PDF3
      • +
      • RapidEye sensors have been provided by RapidEye AG, Germany
      • Barsi, J.A., Markham, B.L. and Pedelty, J.A., 2011, The operational land imager: spectral response and spectral uniformity., Proc. SPIE 8153, -81530G; doi:10.1117/12.895438 +81530G; doi:10.1117/12.895438

      SEE ALSO

      diff --git a/imagery/i.biomass/i.biomass.html b/imagery/i.biomass/i.biomass.html index 563fffa4f8f..152ec3131aa 100644 --- a/imagery/i.biomass/i.biomass.html +++ b/imagery/i.biomass/i.biomass.html @@ -4,12 +4,12 @@

      DESCRIPTION

      Input:
        -
      • fPAR, the modified Photosynthetic Active Radiation for crops. -
      • Light Use Efficiency [0.0-1.0], in Uzbekistan cotton is at 1.9 most of the time. -
      • Latitude [0.0-90.0], from r.latlong. -
      • DOY [1-366]. -
      • Transmissivity of the atmosphere single-way [0.0-1.0], mostly around 0.7+ in clear sky. -
      • Water availability [0.0-1.0], possibly using direct output from i.eb.evapfr. +
      • fPAR, the modified Photosynthetic Active Radiation for crops.
      • +
      • Light Use Efficiency [0.0-1.0], in Uzbekistan cotton is at 1.9 most of the time.
      • +
      • Latitude [0.0-90.0], from r.latlong.
      • +
      • DOY [1-366].
      • +
      • Transmissivity of the atmosphere single-way [0.0-1.0], mostly around 0.7+ in clear sky.
      • +
      • Water availability [0.0-1.0], possibly using direct output from i.eb.evapfr.

      NOTES

      diff --git a/imagery/i.cluster/i.cluster.html b/imagery/i.cluster/i.cluster.html index 8b775c54d80..e7cff674606 100644 --- a/imagery/i.cluster/i.cluster.html +++ b/imagery/i.cluster/i.cluster.html @@ -18,8 +18,8 @@

      DESCRIPTION

      -
      - +
      +
      @@ -207,7 +207,7 @@

      Parameters:


      Default: 17 - +
      reportfile=name
      The reportfile is an optional parameter which contains diff --git a/imagery/i.eb.eta/i.eb.eta.html b/imagery/i.eb.eta/i.eb.eta.html index 7915c7eba1a..0cfc9841801 100644 --- a/imagery/i.eb.eta/i.eb.eta.html +++ b/imagery/i.eb.eta/i.eb.eta.html @@ -9,10 +9,10 @@

      NOTES

      Full ETa processing will need those:
        -
      • i.vi, i.albedo, r.latlong, i.emissivity -
      • i.evapo.potrad (GRASS Addon) -
      • i.eb.netrad, i.eb.soilheatflux, i.eb.hsebal01 -
      • i.eb.evapfr, i.eb.eta +
      • i.vi, i.albedo, r.latlong, i.emissivity
      • +
      • i.evapo.potrad (GRASS Addon)
      • +
      • i.eb.netrad, i.eb.soilheatflux, i.eb.hsebal01
      • +
      • i.eb.evapfr, i.eb.eta
      (for time integration: i.evapo.time_integration) diff --git a/imagery/i.eb.hsebal01/i.eb.hsebal01.html b/imagery/i.eb.hsebal01/i.eb.hsebal01.html index 4501af13c3c..962c6273f67 100644 --- a/imagery/i.eb.hsebal01/i.eb.hsebal01.html +++ b/imagery/i.eb.hsebal01/i.eb.hsebal01.html @@ -8,10 +8,10 @@

      DESCRIPTION

      Full process will need those:
        -
      • i.vi, i.albedo, r.latlong, i.emissivity -
      • i.evapo.potrad (GRASS Addon) -
      • i.eb.netrad, i.eb.soilheatflux, i.eb.hsebal01 -
      • i.eb.evapfr, i.eb.eta +
      • i.vi, i.albedo, r.latlong, i.emissivity
      • +
      • i.evapo.potrad (GRASS Addon)
      • +
      • i.eb.netrad, i.eb.soilheatflux, i.eb.hsebal01
      • +
      • i.eb.evapfr, i.eb.eta
      (for time integration: i.evapo.time_integration) @@ -24,12 +24,12 @@

      DESCRIPTION

      NOTES

        -
      • z0m can be alculated by i.eb.z0m or i.eb.z0m0 (GRASS Addons). +
      • z0m can be alculated by i.eb.z0m or i.eb.z0m0 (GRASS Addons).
      • ea can be calculated with standard meteorological data.
        - eoTmin=0.6108*EXP(17.27*Tmin/(Tmin+237.3))
        - eoTmax=0.6108*EXP(17.27*Tmax/(Tmax+237.3))
        - ea=(RH/100)/((eoTmin+eoTmax)/2) -
      • t0dem = surface temperature + (altitude * 0.627 / 100) + eoTmin=0.6108*EXP(17.27*Tmin/(Tmin+237.3))
        + eoTmax=0.6108*EXP(17.27*Tmax/(Tmax+237.3))
        + ea=(RH/100)/((eoTmin+eoTmax)/2)
      • +
      • t0dem = surface temperature + (altitude * 0.627 / 100)

      REFERENCES

      diff --git a/imagery/i.emissivity/i.emissivity.html b/imagery/i.emissivity/i.emissivity.html index e6419e8f776..0b44b664442 100644 --- a/imagery/i.emissivity/i.emissivity.html +++ b/imagery/i.emissivity/i.emissivity.html @@ -29,7 +29,7 @@

      REFERENCES

    1. Rubio, E., V. Caselles, and C. Badenas, 1997. Emissivity measurements of several soils and vegetation types in the 8-14 µm wave band: Analysis of two field methods. Remote Sensing of - Environment 59(3): 490-521. + Environment 59(3): 490-521.
    2. SEE ALSO

      diff --git a/imagery/i.evapo.pm/i.evapo.pm.html b/imagery/i.evapo.pm/i.evapo.pm.html index b9f5f66d8e9..542fe02263f 100644 --- a/imagery/i.evapo.pm/i.evapo.pm.html +++ b/imagery/i.evapo.pm/i.evapo.pm.html @@ -18,9 +18,9 @@

      DESCRIPTION

      Land and water surfaces are idenfyied by Vh:

        -
      • where Vh gt 0 vegetation is present and evapotranspiration is calculated; -
      • where Vh = 0 bare ground is present and evapotranspiration is calculated; -
      • where Vh lt 0 water surface is present and evaporation is calculated. +
      • where Vh gt 0 vegetation is present and evapotranspiration is calculated;
      • +
      • where Vh = 0 bare ground is present and evapotranspiration is calculated;
      • +
      • where Vh lt 0 water surface is present and evaporation is calculated.

      For more details on the algorithms see [1,2,3]. @@ -73,9 +73,8 @@

      AUTHORS

      Original version of program: The HydroFOSS project, 2006, IST-SUPSI. (http://istgis.ist.supsi.ch:8001/geomatica/index.php?id=1) - -
      Massimiliano Cannata, Scuola Universitaria Professionale della Svizzera Italiana - Istituto Scienze della Terra -
      Maria A. Brovelli, Politecnico di Milano - Polo regionale di Como -
      +Massimiliano Cannata, Scuola Universitaria Professionale della Svizzera Italiana - Istituto Scienze della Terra +
      +Maria A. Brovelli, Politecnico di Milano - Polo regionale di Como

      Contact: Massimiliano Cannata diff --git a/imagery/i.evapo.pt/i.evapo.pt.html b/imagery/i.evapo.pt/i.evapo.pt.html index cd890e425ee..10887a5bb50 100644 --- a/imagery/i.evapo.pt/i.evapo.pt.html +++ b/imagery/i.evapo.pt/i.evapo.pt.html @@ -12,13 +12,13 @@

      NOTES

      Alpha values:

      • 1.32 for estimates from vegetated areas as a result of the increase in -surface roughness (Morton, 1983; Brutsaert and Stricker, 1979) +surface roughness (Morton, 1983; Brutsaert and Stricker, 1979)
      • 1.26 is applicable in humid climates (De Bruin and Keijman, 1979; Stewart and Rouse, 1976; Shuttleworth and Calder, 1979), and temperate -hardwood swamps (Munro, 1979) +hardwood swamps (Munro, 1979)
      • 1.74 has been recommended for estimating potential evapotranspiration in more arid regions (ASCE, 1990). This worked well in Greece with University -of Thessaloniki. +of Thessaloniki.
      Alpha values extracted from: diff --git a/imagery/i.evapo.time/i.evapo.time.html b/imagery/i.evapo.time/i.evapo.time.html index c0aa1bdac15..15b5bb17b34 100644 --- a/imagery/i.evapo.time/i.evapo.time.html +++ b/imagery/i.evapo.time/i.evapo.time.html @@ -5,17 +5,17 @@

      DESCRIPTION

      Inputs:
        -
      • ETa images -
      • ETa images DOY (Day of Year) -
      • ETo images -
      • ETo DOYmin as a single value +
      • ETa images
      • +
      • ETa images DOY (Day of Year)
      • +
      • ETo images
      • +
      • ETo DOYmin as a single value
      Method:
        -
      1. each ETa pixel is divided by the same day ETo and become ETrF -
      2. each ETrF pixel is multiplied by the ETo sum for the representative days -
      3. Sum all n temporal [ETrF*ETo_sum] pixels to make a summed(ET) in [DOYmin;DOYmax] +
      4. each ETa pixel is divided by the same day ETo and become ETrF
      5. +
      6. each ETrF pixel is multiplied by the ETo sum for the representative days
      7. +
      8. Sum all n temporal [ETrF*ETo_sum] pixels to make a summed(ET) in [DOYmin;DOYmax]
      representative days calculation: @@ -35,8 +35,8 @@

      NOTES

      n=0 for ETo_val in Eto[1] Eto[2] ... do - r.mapcalc "eto$n = $ETo_val" - `expr n = n + 1` + r.mapcalc "eto$n = $ETo_val" + `expr n = n + 1` done diff --git a/imagery/i.fft/i.fft.html b/imagery/i.fft/i.fft.html index 8eb63a9c8ae..26782835c5c 100644 --- a/imagery/i.fft/i.fft.html +++ b/imagery/i.fft/i.fft.html @@ -42,10 +42,10 @@

      REFERENCES

    3. M. Frigo and S. G. Johnson (1998): "FFTW: An Adaptive Software Architecture for the FFT". See www.FFTW.org: FFTW is a C subroutine library for computing the Discrete Fourier Transform (DFT) in one or more -dimensions, of both real and complex data, and of arbitrary input size. -
    4. John A. Richards, 1986. Remote Sensing Digital Image Analysis, Springer-Verlag. +dimensions, of both real and complex data, and of arbitrary input size.
    5. +
    6. John A. Richards, 1986. Remote Sensing Digital Image Analysis, Springer-Verlag.
    7. Personal communication, between program author and Ali R. Vali, -Space Research Center, University of Texas, Austin, 1990. +Space Research Center, University of Texas, Austin, 1990.
    8. SEE ALSO

      diff --git a/imagery/i.gensig/i.gensig.html b/imagery/i.gensig/i.gensig.html index 97db7777447..b878fc41f73 100644 --- a/imagery/i.gensig/i.gensig.html +++ b/imagery/i.gensig/i.gensig.html @@ -60,7 +60,7 @@

      Parameters

      image.

      -

      subgroup=name +
      subgroup=name
      subgroup containing image files

      @@ -108,13 +108,13 @@

      NOTES

        -
      • Line 1: version number (currently always 1) -
      • Line 2: text label -
      • Line 3: Space separated list of semantic labels -
      • Line 4: text label of class -
      • Line 5: number of points in class -
      • Line 6: mean values per band of the class -
      • Line 7-12: (semi)-matrix of band-band covariance +
      • Line 1: version number (currently always 1)
      • +
      • Line 2: text label
      • +
      • Line 3: Space separated list of semantic labels
      • +
      • Line 4: text label of class
      • +
      • Line 5: number of points in class
      • +
      • Line 6: mean values per band of the class
      • +
      • Line 7-12: (semi)-matrix of band-band covariance

      SEE ALSO

      diff --git a/imagery/i.gensigset/i.gensigset.html b/imagery/i.gensigset/i.gensigset.html index 3c5c170dceb..5db3efa5802 100644 --- a/imagery/i.gensigset/i.gensigset.html +++ b/imagery/i.gensigset/i.gensigset.html @@ -206,13 +206,13 @@

      WARNINGS

      REFERENCES

      diff --git a/imagery/i.modis.qc/i.modis.qc.html b/imagery/i.modis.qc/i.modis.qc.html index 64553966a27..3147a006bd1 100644 --- a/imagery/i.modis.qc/i.modis.qc.html +++ b/imagery/i.modis.qc/i.modis.qc.html @@ -514,10 +514,10 @@

      TODO

      REFERENCES

        -
      • MODIS Products +
      • MODIS Products
      • Vermote E.F., Kotchenova S.Y., Ray J.P. MODIS Surface Reflectance User's Guide. Version 1.2. June 2008. MODIS Land Surface Reflectance Science Computing Facility. - Homepage + Homepage

      SEE ALSO

      diff --git a/imagery/i.ortho.photo/i.ortho.camera/i.ortho.camera.html b/imagery/i.ortho.photo/i.ortho.camera/i.ortho.camera.html index 535ef8e03a7..3159e4812b2 100644 --- a/imagery/i.ortho.photo/i.ortho.camera/i.ortho.camera.html +++ b/imagery/i.ortho.photo/i.ortho.camera/i.ortho.camera.html @@ -24,12 +24,12 @@

      DESCRIPTION

       
      -	CAMERA NAME:               camera name______
      -	CAMERA IDENTIFICATION:     identification___
      -	CALIBRATED FOCAL LENGTH mm.:_________________
      -	POINT OF SYMMETRY (X)   mm.:_________________
      -	POINT OF SYMMETRY (Y)   mm.:_________________
      -	MAXIMUM NUMBER OF FIDUCIALS:_________________
      +    CAMERA NAME:               camera name______
      +    CAMERA IDENTIFICATION:     identification___
      +    CALIBRATED FOCAL LENGTH mm.:_________________
      +    POINT OF SYMMETRY (X)   mm.:_________________
      +    POINT OF SYMMETRY (Y)   mm.:_________________
      +    MAXIMUM NUMBER OF FIDUCIALS:_________________
       
          AFTER COMPLETING ALL ANSWERS, HIT <ESC> TO CONTINUE
                      (OR <Ctrl-C> TO CANCEL)
      @@ -73,20 +73,20 @@ 

      DESCRIPTION

      Please provide the following information

      -	Fid#	FID ID		  X          Y
      -
      -	1__	_____		0.0___	0.0___
      -	2__	_____		0.0___	0.0___
      -	3__	_____		0.0___	0.0___
      -	4__	_____		0.0___	0.0___
      -	5__	_____		0.0___	0.0___
      -	6__	_____		0.0___	0.0___
      -	7__	_____		0.0___	0.0___
      -	8__	_____		0.0___	0.0___
      -	9__	_____		0.0___	0.0___
      -	10_	_____		0.0___	0.0___
      -
      -		     next:  end__
      +    Fid#    FID ID          X          Y
      +
      +    1__    _____        0.0___    0.0___
      +    2__    _____        0.0___    0.0___
      +    3__    _____        0.0___    0.0___
      +    4__    _____        0.0___    0.0___
      +    5__    _____        0.0___    0.0___
      +    6__    _____        0.0___    0.0___
      +    7__    _____        0.0___    0.0___
      +    8__    _____        0.0___    0.0___
      +    9__    _____        0.0___    0.0___
      +    10_    _____        0.0___    0.0___
      +
      +             next:  end__
       
            AFTER COMPLETING ALL ANSWERS, HIT <ESC> TO CONTINUE
                           (OR <Ctrl-C> TO CANCEL)
      diff --git a/imagery/i.ortho.photo/i.ortho.init/i.ortho.init.html b/imagery/i.ortho.photo/i.ortho.init/i.ortho.init.html
      index 5da40c86344..a9e86ab2a0b 100644
      --- a/imagery/i.ortho.photo/i.ortho.init/i.ortho.init.html
      +++ b/imagery/i.ortho.photo/i.ortho.init/i.ortho.init.html
      @@ -19,9 +19,8 @@ 

      DESCRIPTION

      parameters. During the imagery program, i.photo.rectify, the initial camera exposure station file is used for computation of the ortho-rectification parameters. If no initial camera exposure station file exist, the default -values are computed from the control points file created in g.gui.image2target. - +values are computed from the control points file created in +g.gui.image2target.

      @@ -29,19 +28,19 @@

      DESCRIPTION

               Please provide the following information
       
      -	INITIAL XC: Meters                __________
      -	INITIAL YC: Meters                __________
      -	INITIAL ZC: Meters                __________
      -	INITIAL omega (pitch) degrees:    __________
      -	INITIAL phi  (roll) degrees:      __________
      -	INITIAL kappa  (yaw) degrees:     __________
      +    INITIAL XC: Meters                __________
      +    INITIAL YC: Meters                __________
      +    INITIAL ZC: Meters                __________
      +    INITIAL omega (pitch) degrees:    __________
      +    INITIAL phi  (roll) degrees:      __________
      +    INITIAL kappa  (yaw) degrees:     __________
       
      -	Standard Deviation XC: Meters     __________
      -	Standard Deviation YC: Meters     __________
      -	Standard Deviation ZC: Meters     __________
      -	Std. Dev. omega (pitch) degrees:  __________
      -	Std. Dev. phi  (roll) degrees:    __________
      -	Std. Dev. kappa  (yaw) degrees:   __________
      +    Standard Deviation XC: Meters     __________
      +    Standard Deviation YC: Meters     __________
      +    Standard Deviation ZC: Meters     __________
      +    Std. Dev. omega (pitch) degrees:  __________
      +    Std. Dev. phi  (roll) degrees:    __________
      +    Std. Dev. kappa  (yaw) degrees:   __________
       
               Use these values at run time? (1=yes, 0=no)
       
      @@ -55,9 +54,9 @@ 

      DESCRIPTION

      exposure.
        -
      • X: East aircraft position; -
      • Y: North aircraft position; -
      • Z: Flight altitude above sea level +
      • X: East aircraft position;
      • +
      • Y: North aircraft position;
      • +
      • Z: Flight altitude above sea level

      @@ -68,12 +67,12 @@

      DESCRIPTION

      • Omega (pitch): Raising or lowering of the aircraft's front (turning - around the wings' axis); + around the wings' axis);
      • Phi (roll): Raising or lowering of the wings (turning around the - aircraft's axis); + aircraft's axis);
      • Kappa (yaw): Rotation needed to align the aerial photo to true north: needs to be denoted as +90 degree for clockwise turn and -90 degree for - a counterclockwise turn. + a counterclockwise turn.

      diff --git a/imagery/i.ortho.photo/i.ortho.photo/i.ortho.photo.html b/imagery/i.ortho.photo/i.ortho.photo/i.ortho.photo.html index c7ce061b01d..4e64c5a2b5e 100644 --- a/imagery/i.ortho.photo/i.ortho.photo/i.ortho.photo.html +++ b/imagery/i.ortho.photo/i.ortho.photo/i.ortho.photo.html @@ -11,7 +11,7 @@

      DESCRIPTION

      • Initialization Options
          -
        1. Create/Modify imagery group to be orthorectified: +
        2. Create/Modify imagery group to be orthorectified: i.group
        3. Select/Modify target project (formerly known as location) and mapset for orthorectification: i.ortho.target
        4. @@ -23,7 +23,7 @@

          DESCRIPTION

        5. Transformation Parameters Computation
            -
          1. Compute image-to-photo transformation: +
          2. Compute image-to-photo transformation: g.gui.photo2image
          3. Initialize parameters of camera: i.ortho.init
          4. @@ -34,7 +34,7 @@

            DESCRIPTION

          5. Ortho-rectification
              -
            1. Ortho-rectify imagery group: +
            2. Ortho-rectify imagery group: i.ortho.rectify
          6. @@ -229,7 +229,7 @@

            EXAMPLE

          7. Y: North aircraft position;
          8. Z: Flight height above surface;
          9. Omega (pitch): Raising or lowering of the aircraft's front - (turning around the wings' axis);
          10. + (turning around the wings' axis);
          11. Phi (roll): Raising or lowering of the wings (turning around the aircraft's axis);
          12. Kappa (yaw): Rotation needed to align the aerial photo to diff --git a/imagery/i.ortho.photo/i.ortho.rectify/i.ortho.rectify.html b/imagery/i.ortho.photo/i.ortho.rectify/i.ortho.rectify.html index 96a649d8b8e..607e53f70bc 100644 --- a/imagery/i.ortho.photo/i.ortho.rectify/i.ortho.rectify.html +++ b/imagery/i.ortho.photo/i.ortho.rectify/i.ortho.rectify.html @@ -1,4 +1,4 @@ -

            DESCRIPTION

            +

            DESCRIPTION

            i.photo.rectify rectifies an image by using the image to photo coordinate transformation matrix created by g.gui.photo2image @@ -44,7 +44,7 @@

            DESCRIPTION

            i.ortho.photo, an interactive terminal is used to determine the options. -

            Interactive mode

            +

            Interactive mode

            You are first asked if all images within the imagery group should be rectified. If this option is not chosen, you are asked to specify for each image within the imagery group whether it should be rectified or not. @@ -89,19 +89,19 @@

            Interactive mode

            The last prompt will ask you about the amount of memory to be used by i.photo.rectify. -

            SEE ALSO

            +

            SEE ALSO

            -i.ortho.photo
            -i.ortho.camera
            -g.gui.photo2image
            -g.gui.image2target
            -i.ortho.init
            +i.ortho.photo, +i.ortho.camera, +g.gui.photo2image, +g.gui.image2target, +i.ortho.init, i.rectify
            -

            AUTHORS

            +

            AUTHORS

            Mike Baba, DBA Systems, Inc.
            Updated rectification and elevation map to FP 1/2002 Markus Neteler
            diff --git a/imagery/i.ortho.photo/i.ortho.target/i.ortho.target.html b/imagery/i.ortho.photo/i.ortho.target/i.ortho.target.html index 312cff5599d..07a4c5c6a2e 100644 --- a/imagery/i.ortho.photo/i.ortho.target/i.ortho.target.html +++ b/imagery/i.ortho.photo/i.ortho.target/i.ortho.target.html @@ -1,22 +1,21 @@ -

            DESCRIPTION

            +

            DESCRIPTION

            -i.ortho.target sets the image group target project (location) and mapset -

            +i.ortho.target sets the image group target project (location) and mapset. -

            SEE ALSO

            +

            SEE ALSO

            -i.ortho.photo
            -i.ortho.elev
            -i.ortho.camera
            -g.gui.photo2image
            -g.gui.image2target
            -i.ortho.init
            +i.ortho.photo, +i.ortho.elev, +i.ortho.camera, +g.gui.photo2image, +g.gui.image2target, +i.ortho.init, i.ortho.rectify
            -

            AUTHOR

            +

            AUTHOR

            Mike Baba, DBA Systems, Inc.
            GRASS development team, 2017 diff --git a/imagery/i.rectify/i.rectify.html b/imagery/i.rectify/i.rectify.html index 7ef374b948e..75ee5b794ee 100644 --- a/imagery/i.rectify/i.rectify.html +++ b/imagery/i.rectify/i.rectify.html @@ -66,11 +66,11 @@

            Coordinate transformation

            Linear affine transformation (1st order transformation)

            -
            x' = ax + by + c -
            y' = Ax + By + C +
            x' = ax + by + c +
            y' = Ax + By + C
            -The a,b,c,A,B,C are determined by least squares regression +The a, b, c, A, B, C are determined by least squares regression based on the control points entered. This transformation applies scaling, translation and rotation. It is NOT a general purpose rubber-sheeting like TPS, nor is it ortho-photo @@ -179,7 +179,9 @@

            SEE ALSO

            v.proj, i.group, i.target -
            + +
            + Ground Control Points Manager diff --git a/imagery/i.smap/i.smap.html b/imagery/i.smap/i.smap.html index 14a883efc28..2fe4f9ccee2 100644 --- a/imagery/i.smap/i.smap.html +++ b/imagery/i.smap/i.smap.html @@ -198,16 +198,16 @@

            REFERENCES

          13. C. Bouman and M. Shapiro, "Multispectral Image Segmentation using a Multiscale Image Model", Proc. of IEEE Int'l Conf. on Acoust., Speech and Sig. Proc., -pp. III-565 - III-568, San Francisco, California, March 23-26, 1992. +pp. III-565 - III-568, San Francisco, California, March 23-26, 1992.
          14. C. Bouman and M. Shapiro 1994, "A Multiscale Random Field Model for Bayesian Image Segmentation", IEEE Trans. on Image Processing., 3(2), 162-177" -(PDF) +(PDF)
          15. McCauley, J.D. and B.A. Engel 1995, "Comparison of Scene Segmentations: SMAP, ECHO and Maximum Likelihood", -IEEE Trans. on Geoscience and Remote Sensing, 33(6): 1313-1316. +IEEE Trans. on Geoscience and Remote Sensing, 33(6): 1313-1316.

      SEE ALSO

      diff --git a/imagery/i.vi/i.vi.html b/imagery/i.vi/i.vi.html index 3597dc5f500..38786a22abc 100644 --- a/imagery/i.vi/i.vi.html +++ b/imagery/i.vi/i.vi.html @@ -584,9 +584,9 @@

      NOTES

      Written by Terrill W. Ray, Div. of Geological and Planetary Sciences, California Institute of Technology, email: terrill@mars1.gps.caltech.edu

      Snail Mail: Terrill Ray
      - Division of Geological and Planetary Sciences
      - Caltech, Mail Code 170-25
      - Pasadena, CA 91125 + Division of Geological and Planetary Sciences
      + Caltech, Mail Code 170-25
      + Pasadena, CA 91125

      REFERENCES

      diff --git a/imagery/i.zc/i.zc.html b/imagery/i.zc/i.zc.html index b962c9b7b8d..f3dec69e4a1 100644 --- a/imagery/i.zc/i.zc.html +++ b/imagery/i.zc/i.zc.html @@ -13,16 +13,16 @@

      NOTES

      The procedure to find the "edges" in the image is as follows:
        -
      1. The Fourier transform of the image is taken, +
      2. The Fourier transform of the image is taken,
      3. The Fourier transform of the Laplacian of a two-dimensional -Gaussian function is used to filter the transformed image, -
      4. The result is run through an inverse Fourier transform, +Gaussian function is used to filter the transformed image,
      5. +
      6. The result is run through an inverse Fourier transform,
      7. The resulting image is traversed in search of places where the image -changes from positive to negative or from negative to positive, +changes from positive to negative or from negative to positive,
      8. Each cell in the map where the value crosses zero (with a change in value greater than the threshold value) is marked as an edge and an orientation is assigned to it. -The resulting raster map layer is output. +The resulting raster map layer is output.
      The width= parameter determines the x-y extent of the diff --git a/imagery/imageryintro.html b/imagery/imageryintro.html index 69a189be758..bb5cf97ac0e 100644 --- a/imagery/imageryintro.html +++ b/imagery/imageryintro.html @@ -114,7 +114,7 @@

      Semantic label information

      a different group with identical semantic labels.
      -
      +
      New enhanced classification workflow involving semantic labels. diff --git a/lib/htmldriver/htmldriver.html b/lib/htmldriver/htmldriver.html index 3ed24c7662d..81036978dc2 100644 --- a/lib/htmldriver/htmldriver.html +++ b/lib/htmldriver/htmldriver.html @@ -54,14 +54,14 @@

      Environment variables

      (default is CLIENT):
      CLIENT    Netscape/IE client-side - image map (NAME="map").
      + image map (NAME="map").
      APACHE    Apache/NCSA server-side image - map.
      + map.
      RAW -         Raw url and polygon - vertices (url  x1  y1  x2  y2  - .....), suitable for conversion to CERN server format, or - any other format with user supplied conversion program.
      +         Raw url and polygon + vertices (url  x1  y1  x2  y2  + .....), suitable for conversion to CERN server format, or + any other format with user supplied conversion program.
    9. GRASS_RENDER_FILE=filename
      diff --git a/lib/init/grass.html b/lib/init/grass.html index 5b2d918fb12..736be547716 100644 --- a/lib/init/grass.html +++ b/lib/init/grass.html @@ -183,10 +183,10 @@

      User Interface Environment Variable

      determines the user interface to use. The following is the hierarchy from highest precedence to lowest.
        -
      1. Command line argument -
      2. Environment variable GRASS_GUI -
      3. Value set in $HOME/.grass8/rc (GUI) -
      4. Default value - gui +
      5. Command line argument
      6. +
      7. Environment variable GRASS_GUI
      8. +
      9. Value set in $HOME/.grass8/rc (GUI)
      10. +
      11. Default value - gui

      Python Environment Variables

      diff --git a/lib/init/variables.html b/lib/init/variables.html index 5dfd113dd85..b7704c5537b 100644 --- a/lib/init/variables.html +++ b/lib/init/variables.html @@ -222,14 +222,14 @@

      List of selected (GRASS related) shell environment variables

      it may be set to either
      • standard - sets percentage output and message - formatting style to standard formatting,
      • + formatting style to standard formatting,
      • gui - sets percentage output and message formatting - style to GUI formatting,
      • + style to GUI formatting,
      • silent - disables percentage output and error - messages,
      • + messages,
      • plain - sets percentage output and message - formatting style to ASCII output without rewinding control - characters.
      • + formatting style to ASCII output without rewinding control + characters.
      GRASS_MOUSE_BUTTON
      @@ -316,12 +316,11 @@

      List of selected (GRASS related) shell environment variables

      may be set to either:
      • keep - the temporary vector map is not deleted when - closing the map. + closing the map.
      • move - the temporary vector map is moved to the current mapset when closing the map.
      • delete - the temporary vector map is deleted when - closing the map. -
      • + closing the map.
      Default value is keep. @@ -393,11 +392,11 @@

      List of selected (GRASS related) shell environment variables

      TMPDIR, TEMP, TMP
      [Various GRASS GIS commands and wxGUI]
      - The default wxGUI temporary directory is chosen from a - platform-dependent list, but the user can control the selection of - this directory by setting one of the TMPDIR, TEMP or TMP - environment variables Hence the wxGUI uses $TMPDIR if it is set, - then $TEMP, otherwise /tmp.
      + The default wxGUI temporary directory is chosen from a + platform-dependent list, but the user can control the selection of + this directory by setting one of the TMPDIR, TEMP or TMP + environment variables Hence the wxGUI uses $TMPDIR if it is set, + then $TEMP, otherwise /tmp.

      List of selected GRASS environment variables for rendering

      diff --git a/lib/vector/vectorascii.html b/lib/vector/vectorascii.html index 0fd6fbf5444..cae0ecef5a6 100644 --- a/lib/vector/vectorascii.html +++ b/lib/vector/vectorascii.html @@ -82,12 +82,12 @@ Acceptable formats:
      key: D=Degrees; M=Minutes; S=Seconds; h=Hemisphere (N,S,E,W)
        -
      • (+/-)DDD.DDDDD -
      • DDDh -
      • DDD:MMh -
      • DDD:MM.MMMMMh -
      • DDD:MM:SSh -
      • DDD:MM:SS.SSSSSh +
      • (+/-)DDD.DDDDD
      • +
      • DDDh
      • +
      • DDD:MMh
      • +
      • DDD:MM.MMMMMh
      • +
      • DDD:MM:SSh
      • +
      • DDD:MM:SS.SSSSSh

      EXAMPLES

      diff --git a/misc/m.measure/m.measure.html b/misc/m.measure/m.measure.html index 97c7b44ff63..388c3d81b23 100644 --- a/misc/m.measure/m.measure.html +++ b/misc/m.measure/m.measure.html @@ -19,7 +19,7 @@

      EXAMPLES

      -Visualization (with d.geodesic) of m.measure distance example
      +Visualization (with d.geodesic) of m.measure distance example
      Visualization (with d.geodesic) of m.measure distance example
      diff --git a/misc/m.nviz.script/m.nviz.script.html b/misc/m.nviz.script/m.nviz.script.html index d5c4997ed86..f7cddaf1d82 100644 --- a/misc/m.nviz.script/m.nviz.script.html +++ b/misc/m.nviz.script/m.nviz.script.html @@ -11,7 +11,7 @@

      DESCRIPTION

      The script generated by m.nviz.script can be run from the NVIZ command line (nviz script=script_name) or after NVIZ is started by -selecting Scripting->Play Script. +selecting Scripting->Play Script.

      OPTIONS

      @@ -23,14 +23,14 @@

      Flags:

      -c
      Flay at constant elevation
      With this flag the camera will be set to an elevation given by the - ht= parameter. The default is to fly at ht= - above the topography (i.e. camera height = elevation + ht) + ht= parameter. The default is to fly at ht= + above the topography (i.e. camera height = elevation + ht)
      -k
      Output KeyFrame file
      Generate a KeyFrame file that can be loaded from the NVIZ - Keyframe Animation panel. The KeyFrame file is - automatically assigned the script name with a - .kanimator extension. + Keyframe Animation panel. The KeyFrame file is + automatically assigned the script name with a + .kanimator extension.
      -o
      Render the animation in an off-screen context
      -e diff --git a/ps/ps.map/ps.map.html b/ps/ps.map/ps.map.html index 23fd71a8116..6b64fb2ca28 100644 --- a/ps/ps.map/ps.map.html +++ b/ps/ps.map/ps.map.html @@ -188,9 +188,9 @@

      border

      Controls the border which is drawn around the map area.
       USAGE:  border [y|n]
      -	color color
      -	width #
      -	end
      +    color color
      +    width #
      +    end
       
      The color may be either a standard GRASS color, a R:G:B triplet, or "none". The width is specified in points, unless followed by an "i" @@ -204,10 +204,10 @@

      border

      This example would create a grey border 0.1" wide.
       EXAMPLE:
      -	border
      -	color grey
      -	width 0.1i
      -	end
      +    border
      +    color grey
      +    width 0.1i
      +    end
       

      @@ -216,20 +216,20 @@

      colortable

      Prints the color table legend for the raster map layer anywhere on the page.
      -USAGE:	colortable [y|n]
      -	where x y
      -	raster raster map
      -	range minimum maximum
      -	width table width
      -	height table height (FP legend only)
      -	cols table columns
      -	font font name
      -	fontsize font size
      -	color text color
      -	nodata [Y|n]
      -	tickbar [y|N]
      -	discrete [y|n]
      -	end
      +USAGE:    colortable [y|n]
      +    where x y
      +    raster raster map
      +    range minimum maximum
      +    width table width
      +    height table height (FP legend only)
      +    cols table columns
      +    font font name
      +    fontsize font size
      +    color text color
      +    nodata [Y|n]
      +    tickbar [y|N]
      +    discrete [y|n]
      +    end
       
      For a categorical (CELL) map the color table will create a legend displaying @@ -298,7 +298,7 @@

      Floating point (FCELL and DCELL) Maps

      information, starting at the left margin, with 4 columns:
       EXAMPLE:
      -	colortable y
      +    colortable y
               cols 4
               width 4
               end
      @@ -310,12 +310,12 @@ 

      comments

      Prints comments anywhere on the page.
      -USAGE:	comments commentfile
      -	where x y
      -	font font name
      -	fontsize font size
      -	color text color
      -	end
      +USAGE:    comments commentfile
      +    where x y
      +    font font name
      +    fontsize font size
      +    color text color
      +    end
       
      The default location is immediately below the last item item printed, starting at the left margin. The default text color is black. @@ -330,13 +330,13 @@

      comments

      the page, using a 15/72 inch Helvetica Bold font.
       EXAMPLE:
      -	raster vegetation
      -	comments veg.comments
      -	where 1.5 7.25
      -	font Helvetica Bold
      -	fontsize 15
      -	color blue
      -	end
      +    raster vegetation
      +    comments veg.comments
      +    where 1.5 7.25
      +    font Helvetica Bold
      +    fontsize 15
      +    color blue
      +    end
       
      Presumably, the file veg.comments @@ -350,7 +350,7 @@

      copies

      Specifies the number of copies to be printed.
      -USAGE:	copies n
      +USAGE:    copies n
       
      Each page will be printed n times.

      This instruction is identical to the copies command line parameter. @@ -361,13 +361,13 @@

      eps

      Places EPS (Encapsulated PostScript) pictures on the output map.
      -USAGE:	eps east north
      -	eps x% y%
      -	epsfile EPS file
      -	scale #
      -	rotate #
      -	masked [y|n]
      -	end
      +USAGE:    eps east north
      +    eps x% y%
      +    epsfile EPS file
      +    scale #
      +    rotate #
      +    masked [y|n]
      +    end
       
      The EPS picture location is entered in the main instruction line by giving either the map @@ -388,12 +388,12 @@

      eps

      in original file and would not be masked by the current mask.
       EXAMPLE:
      -	eps 456000 7890000
      -	epsfile ./epsf/logo.eps
      -	scale 3
      -	rotate 20
      -	masked n
      -	end
      +    eps 456000 7890000
      +    epsfile ./epsf/logo.eps
      +    scale 3
      +    rotate 20
      +    masked n
      +    end
       
      Of course, multiple EPS pictures may be drawn with multiple eps @@ -405,13 +405,13 @@

      geogrid

      Overlays a geographic grid onto the output map.
      -USAGE:	geogrid spacing unit
      -	color color
      -	numbers # [color]
      -	font font name
      -	fontsize font size
      -	width #
      -	end
      +USAGE:    geogrid spacing unit
      +    color color
      +    numbers # [color]
      +    font font name
      +    fontsize font size
      +    width #
      +    end
       
      The spacing and spacing unit of the geographic grid is given on the main instruction line. The spacing unit is given as one of d for @@ -435,10 +435,10 @@

      geogrid

      lines would be numbered with yellow numbers.
       EXAMPLE:
      -	geogrid 30 m
      -	color blue
      -	numbers 2 yellow
      -	end
      +    geogrid 30 m
      +    color blue
      +    numbers 2 yellow
      +    end
       

      @@ -447,7 +447,7 @@

      greyrast

      Selects a raster map layer for output in shades of grey.
      -USAGE:	greyrast mapname
      +USAGE:    greyrast mapname
       
      For each ps.map @@ -460,14 +460,14 @@

      grid

      Overlays a coordinate grid onto the output map.
      -USAGE:	grid spacing
      -	color color
      -	numbers # [color]
      -	cross cross size
      -	font font name
      -	fontsize font size
      -	width #
      -	end
      +USAGE:    grid spacing
      +    color color
      +    numbers # [color]
      +    cross cross size
      +    font font name
      +    fontsize font size
      +    width #
      +    end
       
      The spacing of the grid is given (in the geographic coordinate system units) on the main instruction line. The subsection instructions @@ -487,10 +487,10 @@

      grid

      lines would be numbered with red numbers.
       EXAMPLE:
      -	grid 10000
      -	color green
      -	numbers 2 red
      -	end
      +    grid 10000
      +    color green
      +    numbers 2 red
      +    end
       

      @@ -499,7 +499,7 @@

      group

      Selects an RGB imagery group for output.
      -USAGE:	group groupname
      +USAGE:    group groupname
       
      This is similar to raster, except that it uses an imagery group instead of a raster map layer. The group must contain three raster map @@ -511,12 +511,12 @@

      header

      Prints the map header above the map.
      -USAGE:	header
      -	file header file
      -	font font name
      -	fontsize font size
      -	color text color
      -	end
      +USAGE:    header
      +    file header file
      +    font font name
      +    fontsize font size
      +    color text color
      +    end
       
      If the file sub-instruction is absent the header will consist of the map's title @@ -527,18 +527,17 @@

      header

      of the text in the text file specified, with some special formatting keys:
        -
      • %% - a literal % -
      • %n - ? newline ? -
      • %_ - horizontal bar -
      • %c - "<raster name> in mapset <mapset name>" -
      • %d - today's date -
      • %l - project name -
      • %L - project's text description -
      • %m - mapset name -
      • %u - user name -
      • %x - mask info -
      • %- - advance to this character column number (see example below) - +
      • %% - a literal %
      • +
      • %n - ? newline ?
      • +
      • %_ - horizontal bar
      • +
      • %c - "<raster name> in mapset <mapset name>"
      • +
      • %d - today's date
      • +
      • %l - project name
      • +
      • %L - project's text description
      • +
      • %m - mapset name
      • +
      • %u - user name
      • +
      • %x - mask info
      • +
      • %- - advance to this character column number (see example below)
      Example header file: @@ -560,12 +559,12 @@

      header

      the map, using a 20/72 inch Courier font.
       EXAMPLE:
      -	header
      -	file soils.hdr
      -	font Courier
      -	fontsize 20
      -	color red
      -	end
      +    header
      +    file soils.hdr
      +    font Courier
      +    fontsize 20
      +    color red
      +    end
       

      @@ -577,9 +576,9 @@

      labels

      v.label ).
      -USAGE:	labels  labelfile
      -	font font name
      -	end
      +USAGE:    labels  labelfile
      +    font font name
      +    end
       

      NOTE: ps.map can read new option 'ROTATE:' from labels file, which specifies counter clockwise rotation in degrees. @@ -588,8 +587,8 @@

      labels

      towns on the map.
       EXAMPLE:
      -	labels town.names
      -	end
      +    labels town.names
      +    end
       

      @@ -598,12 +597,12 @@

      line

      Draws lines on the output map.
      -USAGE:	line east north east north
      -	line x% y% x% y%
      -	color color
      -	width #
      -	masked [y|n]
      -	end
      +USAGE:    line east north east north
      +    line x% y% x% y%
      +    color color
      +    width #
      +    masked [y|n]
      +    end
       
      The beginning and ending points of the line are entered on the main instruction. These points can be defined either by map coordinates or @@ -623,11 +622,11 @@

      line

      there is a mask.
       EXAMPLE:
      -	line 10% 80% 30% 70%
      -	color yellow
      -	width 2
      -	masked n
      -	end
      +    line 10% 80% 30% 70%
      +    color yellow
      +    width 2
      +    masked n
      +    end
       
      Of course, multiple lines may be drawn with multiple line @@ -640,14 +639,14 @@

      mapinfo

      Prints the portion of the map legend containing the scale, grid and region information, on or below the map.
      -USAGE:	mapinfo
      -	where x y
      -	font font name
      -	fontsize font size
      -	color text color
      -	background box color|none
      -	border color|none
      -	end
      +USAGE:    mapinfo
      +    where x y
      +    font font name
      +    fontsize font size
      +    color text color
      +    background box color|none
      +    border color|none
      +    end
       
      The default location is immediately below the map, starting at the left edge of the map. @@ -662,12 +661,12 @@

      mapinfo

       EXAMPLE:
      -	mapinfo
      -	where 1.5 0
      -	font Courier
      -	fontsize 12
      -	color brown
      -	end
      +    mapinfo
      +    where 1.5 0
      +    font Courier
      +    fontsize 12
      +    color brown
      +    end
       

      @@ -676,7 +675,7 @@

      maploc

      Positions the map on the page.
      -USAGE:	maploc  x y [width height]
      +USAGE:    maploc  x y [width height]
       
      The upper left corner of the map will be positioned x inches from the left edge of the page and y inches from the top of the page. @@ -688,7 +687,7 @@

      maploc

      the left edge and 3.5 inches from the top edge of the map.
       EXAMPLE:
      -	maploc 2.0 3.5
      +    maploc 2.0 3.5
       

      @@ -697,7 +696,7 @@

      maskcolor

      Color to be used for mask.
      -USAGE:	maskcolor  color
      +USAGE:    maskcolor  color
       
      @@ -706,10 +705,10 @@

      outline

      Outlines the areas of a raster map layer with a specified color.
      -USAGE:	outline
      -	color  color
      -	width  width of line in points
      -	end
      +USAGE:    outline
      +    color  color
      +    width  width of line in points
      +    end
       
      Distinct areas of the raster map will be separated from each other visually by drawing a border (or outline) in the specified @@ -730,11 +729,11 @@

      outline

      in grey.
       EXAMPLE:
      -	raster soils
      -	outline
      -	color grey
      -	width 2
      -	end
      +    raster soils
      +    outline
      +    color grey
      +    width 2
      +    end
       

      @@ -743,14 +742,14 @@

      paper

      Specifies paper size and margins.
      -USAGE:	paper paper name
      -	height #
      -	width #
      -	left #
      -	right #
      -	bottom #
      -	top #
      -	end
      +USAGE:    paper paper name
      +    height #
      +    width #
      +    left #
      +    right #
      +    bottom #
      +    top #
      +    end
       
      paper may select predefined paper name (a4,a3,a2,a1,a0,us-legal,us-letter,us-tabloid). @@ -761,20 +760,20 @@

      paper

       EXAMPLE:
      -	paper a3
      -	end
      +    paper a3
      +    end
       

       EXAMPLE:
      -	paper
      -	width 10
      -	height 10
      -	left 2
      -	right 2
      -	bottom 2
      -	top 2
      -	end
      +    paper
      +    width 10
      +    height 10
      +    left 2
      +    right 2
      +    bottom 2
      +    top 2
      +    end
       

      @@ -783,16 +782,16 @@

      point

      Places additional points or icons on the output map.
      -USAGE:	point east north
      -	point x% y%
      -	color color
      -	fcolor color
      -	symbol symbol group/name
      -	size #
      -	width #
      -	rotate #
      -	masked [y|n]
      -	end
      +USAGE:    point east north
      +    point x% y%
      +    color color
      +    fcolor color
      +    symbol symbol group/name
      +    size #
      +    width #
      +    rotate #
      +    masked [y|n]
      +    end
       
      The point location is entered in the main instruction line by giving either the map coordinates or by using percentages of the geographic region. @@ -811,13 +810,13 @@

      point

      the size of a 15 points and would not be masked by the current mask.
       EXAMPLE:
      -	point 456000 7890000
      -	fcolor purple
      -	color black
      -	symbol basic/diamond
      -	size 15
      -	masked n
      -	end
      +    point 456000 7890000
      +    fcolor purple
      +    color black
      +    symbol basic/diamond
      +    size 15
      +    masked n
      +    end
       
      Of course, multiple points may be drawn with multiple point @@ -836,12 +835,12 @@

      psfile

      correct directory or specify the full path on the psfile instruction. (Note to /bin/csh users: ~ won't work with this instruction).
      -USAGE:	psfile filename
      +USAGE:    psfile filename
       
      This example copies the file "logo.ps" into the output file.
       EXAMPLE:
      -	psfile logo.ps
      +    psfile logo.ps
       

      @@ -850,7 +849,7 @@

      raster

      Selects a raster map layer for output.
      -USAGE:	raster mapname
      +USAGE:    raster mapname
       
      For each ps.map run, only one raster map layer (or set of layers or imagery group; see below) can be requested. If no @@ -867,7 +866,7 @@

      raster

       EXAMPLE:
      -	raster soils
      +    raster soils
       

      @@ -876,7 +875,7 @@

      read

      Provides ps.map with a previously prepared input stream.
      -USAGE:	read previously prepared UNIX file
      +USAGE:    read previously prepared UNIX file
       
      Mapping instructions can be placed into a file and read into ps.map. @@ -894,7 +893,7 @@

      read

      the vector map layer roads onto the output map.
       EXAMPLE:
      -	read pmap.roads
      +    read pmap.roads
       
      The user may have created this file because this vector map layer is particularly useful for many ps.map @@ -908,13 +907,13 @@

      rectangle

      Draws rectangle on the output map.
      -USAGE:	rectangle east north east north
      -	rectangle x% y% x% y%
      -	color color
      -	fcolor fill color
      -	width #
      -	masked [y|n]
      -	end
      +USAGE:    rectangle east north east north
      +    rectangle x% y% x% y%
      +    color color
      +    fcolor fill color
      +    width #
      +    masked [y|n]
      +    end
       
      The two corners of the rectangle are entered on the main instruction. These points can be defined either by map coordinates or @@ -936,12 +935,12 @@

      rectangle

      The border line would be 1/16" wide and would appear even if there is a mask.
       EXAMPLE:
      -	rectangle 10% 80% 30% 70%
      -	color yellow
      -	fcolor green
      -	width 0.0625i
      -	masked n
      -	end
      +    rectangle 10% 80% 30% 70%
      +    color yellow
      +    fcolor green
      +    width 0.0625i
      +    masked n
      +    end
       

      @@ -951,10 +950,10 @@

      region

      Places the outline of a smaller geographic region on the output.
      -USAGE:	region regionfile
      -	color color
      -	width #
      -	end
      +USAGE:    region regionfile
      +    color color
      +    width #
      +    end
       
      Geographic region settings are created and saved using the g.region module. @@ -971,10 +970,10 @@

      region

      g.region.
       EXAMPLE:
      -	region fire.zones
      -	color white
      -	width 2
      -	end
      +    region fire.zones
      +    color white
      +    width 2
      +    end
       

      @@ -983,7 +982,7 @@

      rgb

      Selects three raster map layers for output as an RGB color image.
      -USAGE:	rgb red green blue
      +USAGE:    rgb red green blue
       
      This is similar to raster, except that it uses three raster map layers instead of a single layer. The three layers @@ -1001,7 +1000,7 @@

      scale

      Selects a scale for the output map.
      -USAGE:	scale scale
      +USAGE:    scale scale
       
      The scale can be selected either as:
      @@ -1022,7 +1021,7 @@

      scale

      units.
       EXAMPLE:
      -	scale 1:25000
      +    scale 1:25000
       

      @@ -1031,16 +1030,16 @@

      scalebar

      Draws a scalebar on the map.
      -USAGE:	scalebar [f|s]
      -	where x y
      -	length overall distance in map units
      -	units [auto|meters|kilometers|feet|miles|nautmiles]
      -	height scale height in inches
      -	segment number of segments
      -	numbers #
      -	fontsize font size
      -	background [Y|n]
      -	end
      +USAGE:    scalebar [f|s]
      +    where x y
      +    length overall distance in map units
      +    units [auto|meters|kilometers|feet|miles|nautmiles]
      +    height scale height in inches
      +    segment number of segments
      +    numbers #
      +    fontsize font size
      +    background [Y|n]
      +    end
       
      Draw one of two types of scale bar. Fancy (f) draws alternating black and white scale boxes. @@ -1067,13 +1066,13 @@

      scalebar

      and is 0.25 inches high.
       EXAMPLE:
      -	scalebar s
      -	where 4 5
      -	length 1000
      -	height 0.25
      -	segment 5
      -	numbers 2
      -	end
      +    scalebar s
      +    where 4 5
      +    length 1000
      +    height 0.25
      +    segment 5
      +    numbers 2
      +    end
       
      @@ -1083,16 +1082,16 @@

      setcolor

      Overrides the color assigned to one or more categories of the raster map layer.
      -USAGE:	setcolor cat(s) color
      +USAGE:    setcolor cat(s) color
       
      This example would set the color for categories 2,5 and 8 of the raster map layer watersheds to white and category 10 to green. (NOTE: no spaces are inserted between the category values.)
       EXAMPLE:
      -	raster watersheds
      -	setcolor 2,5,8 white
      -	setcolor 10 green
      +    raster watersheds
      +    setcolor 2,5,8 white
      +    setcolor 10 green
       
      Of course, setcolor can be requested more than once to override the default color for additional @@ -1107,23 +1106,23 @@

      text

      Places text on the map.
      -USAGE:	text  east north text
      -	text  x% y% text
      -	font fontname
      -	color color|none
      -	width #
      -	hcolor color|none
      -	hwidth #
      -	background color|none
      -	border color|none
      -	fontsize font size
      -	size #
      -	ref reference point
      -	rotate degrees CCW
      -	xoffset #
      -	yoffset #
      -	opaque [y|n]
      -	end
      +USAGE:    text  east north text
      +    text  x% y% text
      +    font fontname
      +    color color|none
      +    width #
      +    hcolor color|none
      +    hwidth #
      +    background color|none
      +    border color|none
      +    fontsize font size
      +    size #
      +    ref reference point
      +    rotate degrees CCW
      +    xoffset #
      +    yoffset #
      +    opaque [y|n]
      +    end
       
      The user specifies where the text will be placed by providing map coordinates or percentages of the geographic region. @@ -1180,18 +1179,18 @@

      text

      vectors on the map would stop at the border of this text.
       EXAMPLE:
      -	text 650000 7365000 SPEARFISH LAND COVER
      -	font romand
      -	color red
      -	width 2
      -	hcolor black
      -	hwidth 1
      -	background white
      -	border red
      -	size 500
      -	ref lower left
      -	opaque y
      -	end
      +    text 650000 7365000 SPEARFISH LAND COVER
      +    font romand
      +    color red
      +    width 2
      +    hcolor black
      +    hwidth 1
      +    background white
      +    border red
      +    size 500
      +    ref lower left
      +    opaque y
      +    end
       

      @@ -1200,21 +1199,21 @@

      vareas

      Selects a vector map layer for output and plots areas.
      -USAGE:	vareas vectormap
      -	layer # (layer number used with cats/where option)
      -	cats list of categories (e.g. 1,3,5-7)
      -	where SQL where statement
      -	masked [y|n]
      -	color color
      -	fcolor color
      -	rgbcolumn column
      -	width #
      -	label label to use in legend
      -	lpos position in legend
      -	pat pattern file
      -	pwidth #
      -	scale #
      -	end
      +USAGE:    vareas vectormap
      +    layer # (layer number used with cats/where option)
      +    cats list of categories (e.g. 1,3,5-7)
      +    where SQL where statement
      +    masked [y|n]
      +    color color
      +    fcolor color
      +    rgbcolumn column
      +    width #
      +    label label to use in legend
      +    lpos position in legend
      +    pat pattern file
      +    pwidth #
      +    scale #
      +    end
       
      The user can specify:

      color - color of the vector lines or area boundaries; @@ -1266,12 +1265,12 @@

      vareas

       EXAMPLE:
      -	vareas forest
      -	color blue
      -	width 1
      -	masked y
      -	cats 2,5-7
      -	end
      +    vareas forest
      +    color blue
      +    width 1
      +    masked y
      +    cats 2,5-7
      +    end
       

      @@ -1280,26 +1279,26 @@

      vlines

      Selects a vector map layer for output and plots lines.
      -USAGE:	vlines vectormap
      -	type line and/or boundary
      -	layer # (layer number used with cats/where option)
      -	cats list of categories (e.g. 1,3,5-7)
      -	where SQL where statement like: vlastnik = 'Cimrman'
      -	masked [y|n]
      -	color color
      -	rgbcolumn column
      -	width #
      -	cwidth #
      -	hcolor color
      -	hwidth #
      -	offset #
      -	coffset #
      -	ref left|right
      -	style 00001111
      -	linecap style
      -	label label
      -	lpos #
      -	end
      +USAGE:    vlines vectormap
      +    type line and/or boundary
      +    layer # (layer number used with cats/where option)
      +    cats list of categories (e.g. 1,3,5-7)
      +    where SQL where statement like: vlastnik = 'Cimrman'
      +    masked [y|n]
      +    color color
      +    rgbcolumn column
      +    width #
      +    cwidth #
      +    hcolor color
      +    hwidth #
      +    offset #
      +    coffset #
      +    ref left|right
      +    style 00001111
      +    linecap style
      +    label label
      +    lpos #
      +    end
       
      The user can specify:

      type - the default is lines only; @@ -1348,15 +1347,15 @@

      vlines

       EXAMPLE:
      -	vlines streams
      -	color blue
      -	width 2
      -	hcolor white
      -	hwidth 1
      -	masked y
      -	cats 2
      -	label Streams - category 2
      -	end
      +    vlines streams
      +    color blue
      +    width 2
      +    hcolor white
      +    hwidth 1
      +    masked y
      +    cats 2
      +    label Streams - category 2
      +    end
       

      @@ -1365,26 +1364,26 @@

      vpoints

      Selects vector point data to be placed on the output map
      -USAGE:	vpoints vectormap
      -	type point and/or centroid
      -	layer # (layer number used with cats/where/sizecol options)
      -	cats list of categories (e.g. 1,3,5-7)
      -	where SQL where statement like: vlastnik = 'Cimrman'
      -	masked [y|n]
      -	color color
      -	fcolor color
      -	rgbcolumn column
      -	width #
      -	eps epsfile
      -	symbol symbol group/name
      -	size #
      -	sizecolumn attribute column used for symbol sizing
      -	scale scaling factor for sizecolumn values
      -	rotate #
      -	rotatecolumn column
      -	label legend label
      -	lpos position in legend
      -	end
      +USAGE:    vpoints vectormap
      +    type point and/or centroid
      +    layer # (layer number used with cats/where/sizecol options)
      +    cats list of categories (e.g. 1,3,5-7)
      +    where SQL where statement like: vlastnik = 'Cimrman'
      +    masked [y|n]
      +    color color
      +    fcolor color
      +    rgbcolumn column
      +    width #
      +    eps epsfile
      +    symbol symbol group/name
      +    size #
      +    sizecolumn attribute column used for symbol sizing
      +    scale scaling factor for sizecolumn values
      +    rotate #
      +    rotatecolumn column
      +    label legend label
      +    lpos position in legend
      +    end
       
      The user may specify the the color of the sites (see section on NAMED COLORS); @@ -1403,11 +1402,11 @@

      vpoints

       EXAMPLE:
      -	vpoints windmills
      -	color blue
      -	symbol mills/windmill
      -	size 10
      -	end
      +    vpoints windmills
      +    color blue
      +    symbol mills/windmill
      +    size 10
      +    end
       

      @@ -1417,15 +1416,15 @@

      vlegend

      vector information, on or below the map.
      -USAGE:	vlegend
      -	where x y
      -	font font name
      -	fontsize font size
      -	width width of color symbol
      -	cols number of columns to print
      -	span column separation
      -	border color|none
      -	end
      +USAGE:    vlegend
      +    where x y
      +    font font name
      +    fontsize font size
      +    width width of color symbol
      +    cols number of columns to print
      +    span column separation
      +    border color|none
      +    end
       
      The default location is immediately below the legend containing the scale, grid and region information, starting at the left edge of the map. @@ -1454,11 +1453,11 @@

      vlegend

       EXAMPLE:
      -	vlegend
      -	where 4.5 0
      -	font Courier
      -	fontsize 12
      -	end
      +    vlegend
      +    where 4.5 0
      +    font Courier
      +    fontsize 12
      +    end
       

      @@ -1468,7 +1467,7 @@

      end

      Terminates input and begin painting the map.
      -USAGE:	end
      +USAGE:    end
       

      @@ -1585,7 +1584,7 @@

      More complicated example

      - +

      Figure: Result of for the more complicated Wake county, NC example

      diff --git a/raster/r.buffer/r.buffer.html b/raster/r.buffer/r.buffer.html index e9f9fbd6ffc..e0033f0345c 100644 --- a/raster/r.buffer/r.buffer.html +++ b/raster/r.buffer/r.buffer.html @@ -97,7 +97,7 @@

      EXAMPLE

      -
      +
      Distances to road
      diff --git a/raster/r.carve/r.carve.html b/raster/r.carve/r.carve.html index f8d82200013..f10fdcb6312 100644 --- a/raster/r.carve/r.carve.html +++ b/raster/r.carve/r.carve.html @@ -65,13 +65,13 @@

      EXAMPLE

    10. Fig.: Land use/land cover clustering of LANDSAT scene (simplified)
      - - - - - -
      + r.carve example: original DEM
      Fig: Original 1m LiDAR based DEM with vector streams map on top
      + r.carve example: original DEM shaded
      @@ -79,13 +79,13 @@

      EXAMPLE

      + r.carve example: carved DEM
      Fig: Carved 1m LiDAR based DEM
      + r.carve example: carved DEM shaded
      @@ -93,13 +93,13 @@

      EXAMPLE

      + r.carve example: original DEM flow accumulated
      Fig: Flow accumulation in original 1m LiDAR based DEM
      + r.carve example: carved DEM flow accumulation
      diff --git a/raster/r.category/r.category.html b/raster/r.category/r.category.html index 4dba832a98c..b0d5dc7c9bb 100644 --- a/raster/r.category/r.category.html +++ b/raster/r.category/r.category.html @@ -68,8 +68,8 @@

      Default and dynamic category labels

      In the format line

        -
      • $1 refers to the value num*5.0+1000 (ie, using the first 2 coefficients) -
      • $2 refers to the value num*5.0+1005 (ie, using the last 2 coefficients) +
      • $1 refers to the value num*5.0+1000 (ie, using the first 2 coefficients)
      • +
      • $2 refers to the value num*5.0+1005 (ie, using the last 2 coefficients)
      $1.2 will print $1 with 2 decimal places.

      Also, the form $?xxx$yyy$ translates into yyy if the category is 1, xxx diff --git a/raster/r.contour/r.contour.html b/raster/r.contour/r.contour.html index 722f8494cb9..4023410ea94 100644 --- a/raster/r.contour/r.contour.html +++ b/raster/r.contour/r.contour.html @@ -50,7 +50,7 @@

      EXAMPLES

      -r.contours example
      +r.contours example
      Contour lines shown on shaded terrain map
      diff --git a/raster/r.external.out/r.external.out.html b/raster/r.external.out/r.external.out.html index c4b3bc65af1..86c490587d4 100644 --- a/raster/r.external.out/r.external.out.html +++ b/raster/r.external.out/r.external.out.html @@ -31,7 +31,7 @@

      Storing results from raster data analysis directly as GeoTIFF

      # prepare sample analysis g.region raster=elevation -p -# perform GRASS calculation (here: filter by height, write > 120m, NULL otherwise) +# perform GRASS calculation (here: filter by height, write > 120m, NULL otherwise) # this will store the output map directly as GeoTIFF, so we use .tif extension: r.mapcalc "elev_filt.tif = if(elevation > 120.0, elevation, null() )" diff --git a/raster/r.fill.dir/r.fill.dir.html b/raster/r.fill.dir/r.fill.dir.html index 17173ea3dd3..94968a972c1 100644 --- a/raster/r.fill.dir/r.fill.dir.html +++ b/raster/r.fill.dir/r.fill.dir.html @@ -82,24 +82,24 @@

      NOTES

    11. The r.fill.dir module can be used not only to fill depression, but also to detect water bodies or potential water bodies based on -the nature of the terrain and the digital elevation model used. +the nature of the terrain and the digital elevation model used.
    12. Not all depressions are errors in digital elevation models. In fact, many are wetlands and as Jenkins and McCauley (2006) note careless use of depression filling may lead to unintended consequences such -as loss of wetlands. +as loss of wetlands.
    13. Although many hydrological algorithms require depression filling, advanced algorithms such as those implemented in r.watershed and r.sim.water do not require -depressionless digital elevation model to work. +depressionless digital elevation model to work.
    14. The flow direction map can be visualized with -d.rast.arrow. +d.rast.arrow.
    15. @@ -154,18 +154,18 @@

      REFERENCES

      • Beasley, D.B. and L.F. Huggins. 1982. ANSWERS (areal nonpoint source watershed environmental -response simulation): User's manual. U.S. EPA-905/9-82-001, Chicago, IL, 54 p. +response simulation): User's manual. U.S. EPA-905/9-82-001, Chicago, IL, 54 p.
      • Jenkins, D. G., and McCauley, L. A. 2006. GIS, SINKS, FILL, and disappearing wetlands: unintended consequences in algorithm development and use. In Proceedings of the 2006 ACM symposium on applied computing - (pp. 277-282). + (pp. 277-282).
      • Jenson, S.K., and J.O. Domingue. 1988. Extracting topographic structure from digital elevation model data for geographic information system analysis. Photogram. -Engr. and Remote Sens. 54: 1593-1600. +Engr. and Remote Sens. 54: 1593-1600.
      • Young, R.A., C.A. Onstad, D.D. Bosch and W.P. Anderson. 1985. Agricultural nonpoint surface pollution models (AGNPS) I and II model documentation. St. Paul: Minn. Pollution -control Agency and Washington D.C., USDA-Agricultural Research Service. +control Agency and Washington D.C., USDA-Agricultural Research Service.

      SEE ALSO

      diff --git a/raster/r.fill.stats/r.fill.stats.html b/raster/r.fill.stats/r.fill.stats.html index fdc60119243..bd966fa3f05 100644 --- a/raster/r.fill.stats/r.fill.stats.html +++ b/raster/r.fill.stats/r.fill.stats.html @@ -433,7 +433,7 @@

      Lidar point cloud example

      -Point density and ground surface +Point density and ground surface

      Binning of Lidar and resulting ground surface with filled gaps. Note the remaining NULL cells (white) in the resulting ground surface. @@ -476,7 +476,7 @@

      Outlier removal and gap-filling of SRTM elevation data

      d.histogram elev_srtm_30m # remove SRTM outliers, i.e. SRTM below 50m (esp. lakes), leading to no data areas -r.mapcalc "elev_srtm_30m_filt = if(elev_srtm_30m < 50.0, null(), elev_srtm_30m)" +r.mapcalc "elev_srtm_30m_filt = if(elev_srtm_30m < 50.0, null(), elev_srtm_30m)" d.histogram elev_srtm_30m_filt d.rast elev_srtm_30m_filt diff --git a/raster/r.flow/r.flow.html b/raster/r.flow/r.flow.html index 79f0e7ab4b7..28ea66a6c23 100644 --- a/raster/r.flow/r.flow.html +++ b/raster/r.flow/r.flow.html @@ -128,11 +128,11 @@

      Algorithm background

    16. r.flow has an option to compute slope and aspect internally thus making the program capable to process much larger data sets than r.flowmd. It has also 2 additional options for handling of large data sets but it is not -known that they work properly. +known that they work properly.
    17. the programs handle the special cases when the flowline passes exactly -(or very close) through the grid vertices differently. +(or very close) through the grid vertices differently.
    18. r.flowmd has the simplified multiple flow addition so the results are -smoother. +smoother.
    19. In conclusion, r.flowmd produces nicer results but is slower and it does not @@ -189,26 +189,26 @@

      REFERENCES

      • Mitasova, H., L. Mitas, 1993, Interpolation by regularized spline with tension : I. Theory and implementation. Mathematical Geology 25, p. 641-655. -(online) +(online)
      • Mitasova and Hofierka 1993 : Interpolation by Regularized Spline with Tension: II. Application to Terrain Modeling and Surface Geometry Analysis. Mathematical Geology 25(6), 657-669 -(online). +(online).
      • Mitasova, H., Mitas, L., Brown, W.M., Gerdes, D.P., Kosinovsky, I., Baker, T., 1995: Modeling spatially and temporally distributed phenomena: New methods and tools for GRASS GIS. International Journal of Geographical -Information Systems 9(4), 433-446. +Information Systems 9(4), 433-446.
      • Mitasova, H., J. Hofierka, M. Zlocha, L.R. Iverson, 1996, Modeling topographic potential for erosion and deposition using GIS. Int. Journal of Geographical Information Science, 10(5), 629-641. (reply to a comment to this paper appears in 1997 in Int. Journal of Geographical Information -Science, Vol. 11, No. 6) +Science, Vol. 11, No. 6)
      • Mitasova, H.(1993): Surfaces and modeling. Grassclippings (winter and -spring) p.18-19. +spring) p.18-19.

      SEE ALSO

      diff --git a/raster/r.geomorphon/r.geomorphon.html b/raster/r.geomorphon/r.geomorphon.html index 54af307b007..ac23aa85edc 100644 --- a/raster/r.geomorphon/r.geomorphon.html +++ b/raster/r.geomorphon/r.geomorphon.html @@ -54,39 +54,39 @@

      What is geomorphon:

      OPTIONS

      -
      -
      -m
      -
      All distance parameters (search, skip, flat distances) are supplied as meters instead of cells (default). To avoid situation when supplied distances is smaller than one cell program first check if supplied distance is longer than one cell in both NS and WE directions. For LatLong projection only NS distance checked, because in latitude angular unit comprise always bigger or equal distance than longitude one. If distance is supplied in cells, For all projections is recalculated into meters according formula: number_of_cells*resolution_along_NS_direction. It is important if geomorphons are calculated for large areas in LatLong projection.
      -
      elevation
      -
      Digital elevation model. Data can be of any type and any projection. During calculation DEM is stored as floating point raster.
      -
      search
      -
      Determines length on the geodesic distances in all eight directions where line-of-sight is calculated. To speed up calculation is determines only these cells which centers falls into the distance.
      -
      skip
      -
      Determines length on the geodesic distances at the beginning of calculation all eight directions where line-of-sight is yet calculated. To speed up calculation this distance is always recalculated into number of cell which are skipped at the beginning of every line-of-sight and is equal in all direction. This parameter eliminates forms of very small extend, smaller than skip parameter.
      -
      flat
      -
      The difference (in degrees) between zenith and nadir line-of-sight which indicate flat direction. If higher threshold produce more flat maps. If resolution of the map is low (more than 1 km per cell) threshold should be very small (much smaller than 1 degree) because on such distance 1 degree of difference means several meters of high difference.
      -
      dist
      -
      >Flat distance. This is additional parameter defining the distance above which the threshold starts to decrease to avoid problems with pseudo-flat line-of-sights if real elevation difference appears on the distance where its value is higher (TO BE CORRECTED).
      -
      comparison
      -
      Comparison mode for zenith/nadir line-of-sight search. "anglev1" is +
      +
      -m
      +
      All distance parameters (search, skip, flat distances) are supplied as meters instead of cells (default). To avoid situation when supplied distances is smaller than one cell program first check if supplied distance is longer than one cell in both NS and WE directions. For LatLong projection only NS distance checked, because in latitude angular unit comprise always bigger or equal distance than longitude one. If distance is supplied in cells, For all projections is recalculated into meters according formula: number_of_cells*resolution_along_NS_direction. It is important if geomorphons are calculated for large areas in LatLong projection.
      +
      elevation
      +
      Digital elevation model. Data can be of any type and any projection. During calculation DEM is stored as floating point raster.
      +
      search
      +
      Determines length on the geodesic distances in all eight directions where line-of-sight is calculated. To speed up calculation is determines only these cells which centers falls into the distance.
      +
      skip
      +
      Determines length on the geodesic distances at the beginning of calculation all eight directions where line-of-sight is yet calculated. To speed up calculation this distance is always recalculated into number of cell which are skipped at the beginning of every line-of-sight and is equal in all direction. This parameter eliminates forms of very small extend, smaller than skip parameter.
      +
      flat
      +
      The difference (in degrees) between zenith and nadir line-of-sight which indicate flat direction. If higher threshold produce more flat maps. If resolution of the map is low (more than 1 km per cell) threshold should be very small (much smaller than 1 degree) because on such distance 1 degree of difference means several meters of high difference.
      +
      dist
      +
      Flat distance. This is additional parameter defining the distance above which the threshold starts to decrease to avoid problems with pseudo-flat line-of-sights if real elevation difference appears on the distance where its value is higher (TO BE CORRECTED).
      +
      comparison
      +
      Comparison mode for zenith/nadir line-of-sight search. "anglev1" is the original r.geomorphon comparison mode. "anglev2" is an improved mode, which better handles angle thresholds and zenith/nadir angles that are exactly equal. "anglev2_distance" in addition to that takes the zenith/nadir distances into account when the angles are exactly -equal.
      -
      forms
      -
      Returns geomorphic map with 10 most popular terrestrial forms. Legend for forms, its definition by the number of + and - and its idealized visualisation are presented at the image. +equal.
      +
      forms
      +
      Returns geomorphic map with 10 most popular terrestrial forms. Legend for forms, its definition by the number of + and - and its idealized visualisation are presented at the image.

      Forms represented by geomorphons:

      forms legend
      -
      -
      ternary
      -
      returns code of one of 498 unique ternary patterns for every cell. The code is a decimal representation of 8-tuple minimalised patterns written in ternary system. Full list of patterns is available in source code directory as patterns.txt. This map can be used to create alternative form classification using supervised approach.
      -
      positive and negative
      -
      returns codes binary patterns for zenith (positive) and nadir (negative) line of sights. The code is a decimal representation of 8-tuple minimalised patterns written in binary system. Full list of patterns is available in source code directory as patterns.txt.
      -
      coordinates
      -
      The central point of a single geomorphon to profile. The central +
      +
      ternary
      +
      returns code of one of 498 unique ternary patterns for every cell. The code is a decimal representation of 8-tuple minimalised patterns written in ternary system. Full list of patterns is available in source code directory as patterns.txt. This map can be used to create alternative form classification using supervised approach.
      +
      positive and negative
      +
      returns codes binary patterns for zenith (positive) and nadir (negative) line of sights. The code is a decimal representation of 8-tuple minimalised patterns written in binary system. Full list of patterns is available in source code directory as patterns.txt.
      +
      coordinates
      +
      The central point of a single geomorphon to profile. The central point must be within the computational region, which should be large enough to accommodate the search radius. Setting the region larger than that will not produce more accurate data, but in the current @@ -94,32 +94,32 @@

      Forms represented by geomorphons:

      remember to align the region to the raster cells. Profiling is mutually exclusive with any raster outputs, but other parameters and flags (such as elevation, search, comparison, -m and --e) work as usual.
      -
      profiledata
      -
      The output file name for the complete profile data, "-" means to +-e) work as usual.
      +
      profiledata
      +
      The output file name for the complete profile data, "-" means to write to the standard output. The data is in a machine-readable format and it includes assorted values describing the computation context and -parameters, as well as its intermediate and final results.
      -
      profileformat
      -
      Format of the profile data: "json", "yaml" or "xml".
      - +parameters, as well as its intermediate and final results. +
      profileformat
      +
      Format of the profile data: "json", "yaml" or "xml".
      +

      NOTE: parameters below are experimental. The usefulness of these parameters are currently under investigation.

      -
      -
      intensity
      -
      returns average difference between central cell of geomorphon and eight cells in visibility neighbourhood. This parameter shows local (as is visible) exposition/abasement of the form in the terrain.
      -
      range
      -
      returns difference between minimum and maximum values of visibility neighbourhood.
      -
      variance
      -
      returns variance (difference between particular values and mean value) of visibility neighbourhood.
      -
      extend
      -
      returns area of the polygon created by the 8 points where line-of-sight cuts the terrain (see image in description section).
      -
      azimuth
      -
      returns orientation of the polygon constituting geomorphon. This orientation is currently calculated as a orientation of least square fit line to the eight verticles of this polygon.
      -
      elongation
      -
      returns proportion between sides of the bounding box rectangle calculated for geomorphon rotated to fit least square line.
      -
      width
      -
      returns length of the shorter side of the bounding box rectangle calculated for geomorphon rotated to fit least square line.
      -
      +
      +
      intensity
      +
      returns average difference between central cell of geomorphon and eight cells in visibility neighbourhood. This parameter shows local (as is visible) exposition/abasement of the form in the terrain.
      +
      range
      +
      returns difference between minimum and maximum values of visibility neighbourhood.
      +
      variance
      +
      returns variance (difference between particular values and mean value) of visibility neighbourhood.
      +
      extend
      +
      returns area of the polygon created by the 8 points where line-of-sight cuts the terrain (see image in description section).
      +
      azimuth
      +
      returns orientation of the polygon constituting geomorphon. This orientation is currently calculated as a orientation of least square fit line to the eight verticles of this polygon.
      +
      elongation
      +
      returns proportion between sides of the bounding box rectangle calculated for geomorphon rotated to fit least square line.
      +
      width
      +
      returns length of the shorter side of the bounding box rectangle calculated for geomorphon rotated to fit least square line.
      +

      NOTES

      diff --git a/raster/r.grow.distance/r.grow.distance.html b/raster/r.grow.distance/r.grow.distance.html index ee5e276a550..0b6866be1e6 100644 --- a/raster/r.grow.distance/r.grow.distance.html +++ b/raster/r.grow.distance/r.grow.distance.html @@ -91,12 +91,12 @@

      Distance from the streams network

      -
      +
      Euclidean distance from the streams network in meters (map subset)
      -
      +
      Euclidean distance from the streams network in meters (detail, numbers shown with d.rast.num)
      @@ -111,7 +111,7 @@

      Distance from sea in meters in latitude-longitude CRS

      -
      +
      Geodesic distances to sea in meters
      diff --git a/raster/r.horizon/r.horizon.html b/raster/r.horizon/r.horizon.html index 5adbf66a63f..71f8599dd70 100644 --- a/raster/r.horizon/r.horizon.html +++ b/raster/r.horizon/r.horizon.html @@ -7,10 +7,10 @@

      DESCRIPTION

      • point: as a series of horizon heights in the specified directions from the given point(s). The results are -written to the stdout. +written to the stdout.
      • raster: in this case the output is one or more raster maps, with each point in a raster giving the horizon -height in a specific direction. One raster is created for each direction. +height in a specific direction. One raster is created for each direction.

      diff --git a/raster/r.in.lidar/r.in.lidar.html b/raster/r.in.lidar/r.in.lidar.html index 6cff187c089..bc68bf10410 100644 --- a/raster/r.in.lidar/r.in.lidar.html +++ b/raster/r.in.lidar/r.in.lidar.html @@ -517,11 +517,11 @@

      Multiple file input

      On Linux and OSX, this file can be automatically generated with the command:
      -ls /home/user/data/*.laz > /home/user/data/filelist.txt
      +ls /home/user/data/*.laz > /home/user/data/filelist.txt
       
      On Windows:
      -dir /b c:\users\user\data\*.laz > c:\users\user\data\filelist.txt
      +dir /b c:\users\user\data\*.laz > c:\users\user\data\filelist.txt
       
      The mean height above ground example above would then be: @@ -597,14 +597,14 @@

      REFERENCES

    20. V. Petras, A. Petrasova, J. Jeziorska, H. Mitasova (2016): Processing UAV and lidar point clouds in GRASS GIS. -XXIII ISPRS Congress 2016 [ISPRS Archives, ResearchGate] +XXIII ISPRS Congress 2016 [ISPRS Archives, ResearchGate]
    21. -ASPRS LAS format +ASPRS LAS format
    22. -LAS library +LAS library
    23. -LAS library C API documentation +LAS library C API documentation
    24. AUTHORS

      diff --git a/raster/r.in.mat/r.in.mat.html b/raster/r.in.mat/r.in.mat.html index b0bba2cb478..be0f521dca2 100644 --- a/raster/r.in.mat/r.in.mat.html +++ b/raster/r.in.mat/r.in.mat.html @@ -7,13 +7,13 @@

      DESCRIPTION


      Specifically, the following array variables will be read:
        -
      • map_data -
      • map_name -
      • map_title -
      • map_northern_edge -
      • map_southern_edge -
      • map_eastern_edge -
      • map_western_edge +
      • map_data
      • +
      • map_name
      • +
      • map_title
      • +
      • map_northern_edge
      • +
      • map_southern_edge
      • +
      • map_eastern_edge
      • +
      • map_western_edge
      Any other variables in the MAT-file will be simply skipped over.
      diff --git a/raster/r.in.pdal/r.in.pdal.html b/raster/r.in.pdal/r.in.pdal.html index 92cd25205e8..cefc1984bef 100644 --- a/raster/r.in.pdal/r.in.pdal.html +++ b/raster/r.in.pdal/r.in.pdal.html @@ -575,11 +575,11 @@

      Multiple file input

      On Linux and OSX, this file can be automatically generated with the command:
      -ls /home/user/data/*.laz > /home/user/data/filelist.txt
      +ls /home/user/data/*.laz > /home/user/data/filelist.txt
       
      On Windows:
      -dir /b c:\users\user\data\*.laz > c:\users\user\data\filelist.txt
      +dir /b c:\users\user\data\*.laz > c:\users\user\data\filelist.txt
       
      The mean height above ground example above would then be: @@ -612,7 +612,7 @@

      KNOWN ISSUES

    25. Only one method can be applied for a single run and multiple map output from a single run (e.g. method=string[,string,...] output=name[,name,...] - or n=string mean=string) is no supported. + or n=string mean=string) is no supported.
    26. If you encounter any problems (or solutions!) please contact the GRASS @@ -647,12 +647,12 @@

      REFERENCES

    27. V. Petras, A. Petrasova, J. Jeziorska, H. Mitasova (2016): Processing UAV and lidar point clouds in GRASS GIS. -XXIII ISPRS Congress 2016 [ISPRS Archives, ResearchGate] +XXIII ISPRS Congress 2016 [ISPRS Archives, ResearchGate]
    28. -ASPRS LAS format +ASPRS LAS format
    29. -PDAL - Point Data Abstraction Library +PDAL - Point Data Abstraction Library
    30. AUTHORS

      diff --git a/raster/r.in.xyz/r.in.xyz.html b/raster/r.in.xyz/r.in.xyz.html index 42e5e1ee7f8..bf20fffce88 100644 --- a/raster/r.in.xyz/r.in.xyz.html +++ b/raster/r.in.xyz/r.in.xyz.html @@ -41,9 +41,9 @@

      DESCRIPTION

        -
      • Variance and derivatives use the biased estimator (n). [subject to change] +
      • Variance and derivatives use the biased estimator (n). [subject to change]
      • Coefficient of variance is given in percentage and defined as -(stddev/mean)*100. +(stddev/mean)*100.

      @@ -289,14 +289,14 @@

      TODO

    31. Support for multiple map output from a single run.
      method=string[,string,...] output=name[,name,...]
      This can be easily handled by a wrapper script, with the added - benefit of it being very simple to parallelize that way. + benefit of it being very simple to parallelize that way.
    32. KNOWN ISSUES

      • "nan" can leak into coeff_var maps. -
        Cause unknown. Possible work-around: "r.null setnull=nan" +
        Cause unknown. Possible work-around: "r.null setnull=nan"
      diff --git a/raster/r.kappa/r.kappa.html b/raster/r.kappa/r.kappa.html index b9a57ec0915..ad7c77a2b65 100644 --- a/raster/r.kappa/r.kappa.html +++ b/raster/r.kappa/r.kappa.html @@ -116,7 +116,7 @@

      NOTES

      "On the performance of Matthews correlation coefficient (MCC) for imbalanced dataset". -

      EXAMPLE

      +

      EXAMPLE

      Example for North Carolina sample dataset: diff --git a/raster/r.lake/r.lake.html b/raster/r.lake/r.lake.html index ee18eb6d8cc..4d12be899c6 100644 --- a/raster/r.lake/r.lake.html +++ b/raster/r.lake/r.lake.html @@ -1,7 +1,7 @@

      DESCRIPTION

      The module fills a lake to a target water level from a given start point. The user -can think of it as r.grow with additional +can think of it as r.grow with additional checks for elevation. The resulting raster map contains cells with values representing lake depth and NULL for all other cells beyond the lake. Lake depth is reported relative to specified water level @@ -44,24 +44,24 @@

      NOTES

      r.mapcalc equivalent - for GRASS hackers

      This module was initially created as a script using -r.mapcalc. +r.mapcalc. This had some limitations - it was slow and no checks where done to find out required iteration count. The shell script -code (using r.mapcalc) used +code (using r.mapcalc) used in the original script is shown below:
       ${seedmap} = if( ${dem}, \
      -if( if( isnull(${seedmap}),0,${seedmap}>0), ${wlevel}-${dem}, \
      +if( if( isnull(${seedmap}),0,${seedmap} > 0), ${wlevel}-${dem}, \
        if( \
      -  if(isnull(${seedmap}[-1,0]),0, ${seedmap}[-1,0]>0 && ${wlevel}>${dem}) ||\
      -  if(isnull(${seedmap}[-1,1]),0, ${seedmap}[-1,1]>0 && ${wlevel}>${dem}) ||\
      -  if(isnull(${seedmap}[0,1]), 0, ${seedmap}[0,1]>0  && ${wlevel}>${dem}) ||\
      -  if(isnull(${seedmap}[1,1]), 0, ${seedmap}[1,1]>0  && ${wlevel}>${dem}) ||\
      -  if(isnull(${seedmap}[1,0]), 0, ${seedmap}[1,0]>0  && ${wlevel}>${dem}) ||\
      -  if(isnull(${seedmap}[1,-1]),0, ${seedmap}[1,-1]>0 && ${wlevel}>${dem}) ||\
      -  if(isnull(${seedmap}[0,-1]),0, ${seedmap}[0,-1]>0 && ${wlevel}>${dem}) ||\
      -  if(isnull(${seedmap}[-1,-1]),0, ${seedmap}[-1,-1]>0 && ${wlevel}>${dem}),\
      +  if(isnull(${seedmap}[-1,0]),0, ${seedmap}[-1,0] > 0 && ${wlevel} > ${dem}) ||\
      +  if(isnull(${seedmap}[-1,1]),0, ${seedmap}[-1,1] > 0 && ${wlevel} > ${dem}) ||\
      +  if(isnull(${seedmap}[0,1]), 0, ${seedmap}[0,1] > 0  && ${wlevel} > ${dem}) ||\
      +  if(isnull(${seedmap}[1,1]), 0, ${seedmap}[1,1] > 0  && ${wlevel} > ${dem}) ||\
      +  if(isnull(${seedmap}[1,0]), 0, ${seedmap}[1,0] > 0  && ${wlevel} > ${dem}) ||\
      +  if(isnull(${seedmap}[1,-1]),0, ${seedmap}[1,-1] > 0 && ${wlevel} > ${dem}) ||\
      +  if(isnull(${seedmap}[0,-1]),0, ${seedmap}[0,-1] > 0 && ${wlevel} > ${dem}) ||\
      +  if(isnull(${seedmap}[-1,-1]),0, ${seedmap}[-1,-1] > 0 && ${wlevel} > ${dem}),\
        ${wlevel}-${dem}, null() )))
       
      @@ -100,7 +100,7 @@

      EXAMPLE

      -
      +
      Small flooding along a street (r.lake, using Lidar 1m DEM)
      diff --git a/raster/r.li/r.li.cwed/r.li.cwed.html b/raster/r.li/r.li.cwed/r.li.cwed.html index 0fe92bd560e..f59e18d547e 100644 --- a/raster/r.li/r.li.cwed/r.li.cwed.html +++ b/raster/r.li/r.li.cwed/r.li.cwed.html @@ -12,12 +12,12 @@

      DESCRIPTION

      landscape between patch types i and k
    33. dik: dissimilarity (edge contrast weight) between patch types i and k
    34. -
    35. Area: total landscape area
      -
      +
    36. Area: total landscape area
    37. + The input file contains a row for each couple of patch type that we want to consider in the calculation. Each row must be saved using this syntax:
      -patchType1,patchType2,dissimilarityBetweenPatchType1andPatchType2
      +patchType1,patchType2,dissimilarityBetweenPatchType1andPatchType2

      NOTES

      @@ -60,7 +60,7 @@

      EXAMPLES

      SEE ALSO

      -r.li - package overview
      +r.li - package overview, g.gui.rlisetup
      diff --git a/raster/r.li/r.li.daemon/r.li.daemon.html b/raster/r.li/r.li.daemon/r.li.daemon.html index d2640a03fba..2d3cc5c4901 100644 --- a/raster/r.li/r.li.daemon/r.li.daemon.html +++ b/raster/r.li/r.li.daemon/r.li.daemon.html @@ -24,35 +24,35 @@

      DESCRIPTION

      To write a new index only two steps are needed:

        -
      1. - Define a function and insert its declaration on file index.h in r.li.daemon - folder, which contains all index declarations. This function must be of this kind: -
        +    
      2. + Define a function and insert its declaration on file index.h in r.li.daemon + folder, which contains all index declarations. This function must be of this kind: +
                 int index(int fd, char ** par, area_des ad, double * result)
        -	
        - where:
          -
        • fd is the raster map descriptor -
        • par is a matrix for special parameter (like argv in main) -
        • ad is the area descriptor -
        • result is where to put the index calculation result -
        - This function has to return 1 on success and 0 otherwise. - This function type is defined using typedef named rli_func. -
      3. - Create a main for command line arguments parsing, and call the function -
        +    
        + where:
          +
        • fd is the raster map descriptor
        • +
        • par is a matrix for special parameter (like argv in main)
        • +
        • ad is the area descriptor
        • +
        • result is where to put the index calculation result
        • +
        + This function has to return 1 on success and 0 otherwise. + This function type is defined using typedef named rli_func.
      4. +
      5. + Create a main for command line arguments parsing, and call the function +
                 int calculateIndex(char *file, rli_func *f,
                                    char **parameters, char *raster, char *output);
        -	
        - from the r.li library, for starting raster analysis.
        - It follows the meaning of parameters: -
          -
        • file name of configuration file created using g.gui.rlisetup -
        • f pointer to index function defined above -
        • parameters pointer to index special parameters -
        • raster name of raster to use -
        • output output file name -
        +
      6. + from the r.li library, for starting raster analysis.
        + It follows the meaning of parameters: +
          +
        • file name of configuration file created using g.gui.rlisetup
        • +
        • f pointer to index function defined above
        • +
        • parameters pointer to index special parameters
        • +
        • raster name of raster to use
        • +
        • output output file name
        • +
      Compile it using a changed Makefile based on the file for r.li.patchdensity. diff --git a/raster/r.li/r.li.dominance/r.li.dominance.html b/raster/r.li/r.li.dominance/r.li.dominance.html index 13bef4620f4..753caa87ff5 100644 --- a/raster/r.li/r.li.dominance/r.li.dominance.html +++ b/raster/r.li/r.li.dominance/r.li.dominance.html @@ -37,7 +37,7 @@

      EXAMPLES

      Forest map (Spearfish sample dataset) example:
       g.region raster=landcover.30m -p
      -r.mapcalc "forests = if(landcover.30m >= 41 && landcover.30m <= 43,1,null())"
      +r.mapcalc "forests = if(landcover.30m >= 41 && landcover.30m <= 43,1,null())"
       r.li.dominance input=forests conf=movwindow7 out=forests_dominance_mov7
       r.univar forests_dominance_mov7
       
      @@ -60,7 +60,7 @@

      EXAMPLES

      SEE ALSO

      -r.li - package overview
      +r.li - package overview, g.gui.rlisetup
      diff --git a/raster/r.li/r.li.edgedensity/r.li.edgedensity.html b/raster/r.li/r.li.edgedensity/r.li.edgedensity.html index 229a3e28686..0bcdbd06ef8 100644 --- a/raster/r.li/r.li.edgedensity/r.li.edgedensity.html +++ b/raster/r.li/r.li.edgedensity/r.li.edgedensity.html @@ -58,7 +58,7 @@

      EXAMPLES

      Forest map (Spearfish sample dataset) example:
       g.region raster=landcover.30m -p
      -r.mapcalc "forests = if(landcover.30m >= 41 && landcover.30m <= 43,1,null())"
      +r.mapcalc "forests = if(landcover.30m >= 41 && landcover.30m <= 43,1,null())"
       r.li.edgedensity input=forests conf=movwindow7 out=forests_edgedens_mov7
       r.univar forests_edgedens_mov7
       
      @@ -81,7 +81,7 @@

      EXAMPLES

      SEE ALSO

      -r.li - package overview
      +r.li - package overview, g.gui.rlisetup
      diff --git a/raster/r.li/r.li.html b/raster/r.li/r.li.html index bfe7c3498d0..9786cba5bd1 100644 --- a/raster/r.li/r.li.html +++ b/raster/r.li/r.li.html @@ -39,11 +39,11 @@

      NOTES

    38. run g.gui.rlisetup: create a configuration file selecting the parts of raster map to be analyzed. This file allows re-running an analysis easily. It is stored on Windows in the directory C:\Users\userxy\AppData\Roaming\GRASS8\r.li\, on GNU/Linux in - $HOME/.grass8/r.li/. + $HOME/.grass8/r.li/.
    39. run one or more of the r.li.[index] modules (e.g., r.li.patchdensity) to calculate the selected index - using on the areas selected on configuration file. + using on the areas selected on configuration file.
    40. As far as the user just use r.ros together with r.spread, there is no need to - concern about these output units. + concern about these output units.

      REFERENCES

      diff --git a/raster/r.series.interp/r.series.interp.html b/raster/r.series.interp/r.series.interp.html index a05b792afbf..77df2a89d91 100644 --- a/raster/r.series.interp/r.series.interp.html +++ b/raster/r.series.interp/r.series.interp.html @@ -7,7 +7,7 @@

      DESCRIPTION

      The following interpolation methods are supported.
        -
      • linear: Linear interpolation. At least two input maps and data positions are required. +
      • linear: Linear interpolation. At least two input maps and data positions are required.

      EXAMPLES

      diff --git a/raster/r.series/r.series.html b/raster/r.series/r.series.html index 0d1c12b5bb9..1a743a5a49a 100644 --- a/raster/r.series/r.series.html +++ b/raster/r.series/r.series.html @@ -12,29 +12,29 @@

      DESCRIPTION

      Following methods are available:
        -
      • average: average value -
      • count: count of non-NULL cells -
      • median: median value -
      • mode: most frequently occurring value -
      • minimum: lowest value -
      • min_raster: raster map number with the minimum time-series value -
      • maximum: highest value -
      • max_raster: raster map number with the maximum time-series value -
      • stddev: standard deviation -
      • range: range of values (max - min) -
      • sum: sum of values -
      • variance: statistical variance -
      • diversity: number of different values -
      • slope: linear regression slope -
      • offset: linear regression offset -
      • detcoeff: linear regression coefficient of determination -
      • tvalue: linear regression t-value -
      • quart1: first quartile -
      • quart3: third quartile -
      • perc90: ninetieth percentile -
      • quantile: arbitrary quantile -
      • skewness: skewness -
      • kurtosis: kurtosis +
      • average: average value
      • +
      • count: count of non-NULL cells
      • +
      • median: median value
      • +
      • mode: most frequently occurring value
      • +
      • minimum: lowest value
      • +
      • min_raster: raster map number with the minimum time-series value
      • +
      • maximum: highest value
      • +
      • max_raster: raster map number with the maximum time-series value
      • +
      • stddev: standard deviation
      • +
      • range: range of values (max - min)
      • +
      • sum: sum of values
      • +
      • variance: statistical variance
      • +
      • diversity: number of different values
      • +
      • slope: linear regression slope
      • +
      • offset: linear regression offset
      • +
      • detcoeff: linear regression coefficient of determination
      • +
      • tvalue: linear regression t-value
      • +
      • quart1: first quartile
      • +
      • quart3: third quartile
      • +
      • perc90: ninetieth percentile
      • +
      • quantile: arbitrary quantile
      • +
      • skewness: skewness
      • +
      • kurtosis: kurtosis
      Note that most parameters accept multiple answers, allowing multiple @@ -196,7 +196,7 @@

      EXAMPLES

      Example to use the file option of r.series:

      -cat > input.txt << EOF
      +cat > input.txt << EOF
       map1
       map2
       map3
      @@ -211,7 +211,7 @@ 

      EXAMPLES

      weights we can leave it out:
      -cat > input.txt << EOF
      +cat > input.txt << EOF
       map1
       map2|0.75
       map3
      diff --git a/raster/r.sim/r.sim.water/r.sim.water.html b/raster/r.sim/r.sim.water/r.sim.water.html
      index 79cef1bfadc..af54dea4490 100644
      --- a/raster/r.sim/r.sim.water/r.sim.water.html
      +++ b/raster/r.sim/r.sim.water/r.sim.water.html
      @@ -208,37 +208,37 @@ 

      REFERENCES

      and short term terrain evolution in Open Source GIS. In: C.T. Miller, M.W. Farthing, V.G. Gray, G.F. Pinder eds., Proceedings of the XVth International Conference on Computational Methods in Water -Resources (CMWR XV), June 13-17 2004, Chapel Hill, NC, USA, Elsevier, pp. 1479-1490. +Resources (CMWR XV), June 13-17 2004, Chapel Hill, NC, USA, Elsevier, pp. 1479-1490.
    41. Mitasova H, Mitas, L., 2000, Modeling spatial processes in multiscale framework: exploring duality between particles and fields, -plenary talk at GIScience2000 conference, Savannah, GA. +plenary talk at GIScience2000 conference, Savannah, GA.
    42. Mitas, L., and Mitasova, H., 1998, Distributed soil erosion simulation -for effective erosion prevention. Water Resources Research, 34(3), 505-516. +for effective erosion prevention. Water Resources Research, 34(3), 505-516.
    43. Mitasova, H., Mitas, L., 2001, Multiscale soil erosion simulations for land use management, In: Landscape erosion and landscape evolution modeling, Harmon R. and Doe W. eds., -Kluwer Academic/Plenum Publishers, pp. 321-347. +Kluwer Academic/Plenum Publishers, pp. 321-347.
    44. Hofierka, J, Mitasova, H., Mitas, L., 2002. GRASS and modeling landscape processes using duality between particles and fields. Proceedings of the Open source GIS - GRASS users conference 2002 - Trento, Italy, 11-13 September 2002. -PDF +PDF
    45. Hofierka, J., Knutova, M., 2015, Simulating aspects of a flash flood using the Monte Carlo method and GRASS GIS: a case study of the Malá Svinka Basin (Slovakia), Open Geosciences. Volume 7, Issue 1, ISSN (Online) 2391-5447, DOI: 10.1515/geo-2015-0013, -April 2015 +April 2015
    46. Neteler, M. and Mitasova, H., 2008, Open Source GIS: A GRASS GIS Approach. Third Edition. -The International Series in Engineering and Computer Science: Volume 773. Springer New York Inc, p. 406. +The International Series in Engineering and Computer Science: Volume 773. Springer New York Inc, p. 406.
    47. SEE ALSO

      diff --git a/raster/r.slope.aspect/r.slope.aspect.html b/raster/r.slope.aspect/r.slope.aspect.html index a76bd33e477..eb737fb968d 100644 --- a/raster/r.slope.aspect/r.slope.aspect.html +++ b/raster/r.slope.aspect/r.slope.aspect.html @@ -30,7 +30,7 @@

      DESCRIPTION

      # convert angles from CCW from East to CW from North # modulus (%) can not be used with floating point aspect values r.mapcalc "azimuth_aspect = if(ccw_aspect == 0, 0, \ - if(ccw_aspect < 90, 90 - ccw_aspect, \ + if(ccw_aspect < 90, 90 - ccw_aspect, \ 450 - ccw_aspect)))"
      @@ -240,15 +240,15 @@

      Classification of major aspect directions in compass orientation

      # generate compass orientation and classify four major directions (N, E, S, W) r.mapcalc "aspect_4_directions = eval( \\ compass=(450 - myaspect ) % 360, \\ - if(compass >=0. && compass < 45., 1) \\ - + if(compass >=45. && compass < 135., 2) \\ - + if(compass >=135. && compass < 225., 3) \\ - + if(compass >=225. && compass < 315., 4) \\ - + if(compass >=315., 1) \\ + if(compass >=0. && compass < 45., 1) \\ + + if(compass >=45. && compass < 135., 2) \\ + + if(compass >=135. && compass < 225., 3) \\ + + if(compass >=225. && compass < 315., 4) \\ + + if(compass >=315., 1) \\ )" # assign text labels -r.category aspect_4_directions separator=comma rules=- << EOF +r.category aspect_4_directions separator=comma rules=- << EOF 1,north 2,east 3,south @@ -256,7 +256,7 @@

      Classification of major aspect directions in compass orientation

      EOF # assign color table -r.colors aspect_4_directions rules=- << EOF +r.colors aspect_4_directions rules=- << EOF 1 253,184,99 2 178,171,210 3 230,97,1 @@ -273,13 +273,13 @@

      REFERENCES

      • Horn, B. K. P. (1981). Hill Shading and the Reflectance Map, Proceedings -of the IEEE, 69(1):14-47. +of the IEEE, 69(1):14-47.
      • Mitasova, H. (1985). Cartographic aspects of computer surface modeling. PhD thesis. -Slovak Technical University , Bratislava +Slovak Technical University , Bratislava
      • Hofierka, J., Mitasova, H., Neteler, M., 2009. Geomorphometry in GRASS GIS. In: Hengl, T. and Reuter, H.I. (Eds), Geomorphometry: Concepts, Software, Applications. Developments in Soil Science, vol. 33, Elsevier, 387-410 pp, -http://www.geomorphometry.org +http://www.geomorphometry.org

      SEE ALSO

      diff --git a/raster/r.spread/r.spread.html b/raster/r.spread/r.spread.html index 1980e61aae5..68c32171270 100644 --- a/raster/r.spread/r.spread.html +++ b/raster/r.spread/r.spread.html @@ -12,9 +12,9 @@

      DESCRIPTION

      1. the uneven conditions from location to location, which can be called -spatial heterogeneity, and +spatial heterogeneity, and
      2. the uneven conditions in different directions, which can be called -anisotropy. +anisotropy.

      The anisotropy of spread occurs when any of the determining factors diff --git a/raster/r.stats.quantile/r.stats.quantile.html b/raster/r.stats.quantile/r.stats.quantile.html index 4c387281b7b..85c296691cc 100644 --- a/raster/r.stats.quantile/r.stats.quantile.html +++ b/raster/r.stats.quantile/r.stats.quantile.html @@ -5,7 +5,7 @@

      DESCRIPTION

      in a "base layer". It provides quantile calculations as selected "zonal statistics". -

      NOTES

      +

      NOTES

      r.stats.quantile is intended to be a partial replacement for r.statistics, with support diff --git a/raster/r.stats.zonal/r.stats.zonal.html b/raster/r.stats.zonal/r.stats.zonal.html index 9e5d83bef01..b611e531c2b 100644 --- a/raster/r.stats.zonal/r.stats.zonal.html +++ b/raster/r.stats.zonal/r.stats.zonal.html @@ -9,7 +9,7 @@

      DESCRIPTION

      Notably, the output of this module is spatial: The resulting values are recorded as cell values in the output raster map. -

      NOTES

      +

      NOTES

      r.stats.zonal is intended to be a partial replacement for r.statistics, with support diff --git a/raster/r.sun/r.sun.html b/raster/r.sun/r.sun.html index ec43813d51c..677748dae6a 100644 --- a/raster/r.sun/r.sun.html +++ b/raster/r.sun/r.sun.html @@ -13,8 +13,8 @@

      DESCRIPTION

      For latitude-longitude coordinates it requires that the elevation map is in meters. The rules are:

        -
      • lat/lon coordinates: elevation in meters; -
      • Other coordinates: elevation in the same unit as the easting-northing coordinates. +
      • lat/lon coordinates: elevation in meters;
      • +
      • Other coordinates: elevation in the same unit as the easting-northing coordinates.
      The solar geometry of the model is based on the works of Krcho (1990), later @@ -294,8 +294,8 @@

      EXAMPLES

      We can compute the day of year from a specific date in Python:
      ->>> import datetime
      ->>> datetime.datetime(2014, 6, 21).timetuple().tm_yday
      +>>> import datetime
      +>>> datetime.datetime(2014, 6, 21).timetuple().tm_yday
       172
       
      @@ -317,53 +317,53 @@

      REFERENCES

    48. Hofierka, J., Suri, M. (2002): The solar radiation model for Open source GIS: implementation and applications. International GRASS users conference in Trento, Italy, September 2002. -(PDF) +(PDF)
    49. Hofierka, J. (1997). Direct solar radiation modelling within an open GIS environment. Proceedings of JEC-GI'97 conference in Vienna, Austria, IOS -Press Amsterdam, 575-584. +Press Amsterdam, 575-584.
    50. Jenco, M. (1992). Distribution of direct solar radiation on georelief and its modelling by means of complex digital model of terrain (in Slovak). Geograficky -casopis, 44, 342-355. +casopis, 44, 342-355.
    51. Kasten, F. (1996). The Linke turbidity factor based on improved values of -the integral Rayleigh optical thickness. Solar Energy, 56 (3), 239-244. +the integral Rayleigh optical thickness. Solar Energy, 56 (3), 239-244.
    52. Kasten, F., Young, A. T. (1989). Revised optical air mass tables and approximation -formula. Applied Optics, 28, 4735-4738. +formula. Applied Optics, 28, 4735-4738.
    53. Kittler, R., Mikler, J. (1986): Basis of the utilization of solar radiation -(in Slovak). VEDA, Bratislava, p. 150. +(in Slovak). VEDA, Bratislava, p. 150.
    54. Krcho, J. (1990). Morfometrická analza a digitálne modely georeliéfu (Morphometric analysis and digital models of georelief, in Slovak). -VEDA, Bratislava. +VEDA, Bratislava.
    55. Muneer, T. (1990). Solar radiation model for Europe. Building services engineering -research and technology, 11, 4, 153-163. +research and technology, 11, 4, 153-163.
    56. Neteler, M., Mitasova, H. (2002): Open Source GIS: A GRASS GIS Approach, Kluwer Academic Publishers. (Appendix explains formula; -r.sun script download) +r.sun script download)
    57. Page, J. ed. (1986). Prediction of solar radiation on inclined surfaces. Solar energy R&D in the European Community, series F - Solar radiation data, -Dordrecht (D. Reidel), 3, 71, 81-83. +Dordrecht (D. Reidel), 3, 71, 81-83.
    58. Page, J., Albuisson, M., Wald, L. (2001). The European solar radiation atlas: -a valuable digital tool. Solar Energy, 71, 81-83. +a valuable digital tool. Solar Energy, 71, 81-83.
    59. Rigollier, Ch., Bauer, O., Wald, L. (2000). On the clear sky model of the ESRA - European Solar radiation Atlas - with respect to the Heliosat method. -Solar energy, 68, 33-48. +Solar energy, 68, 33-48.
    60. Scharmer, K., Greif, J., eds., (2000). The European solar radiation atlas, Vol. 2: Database and exploitation software. Paris (Les Presses de l'École -des Mines). +des Mines).
    61. Joint Research Centre: GIS solar radiation database for Europe and -Solar radiation and GIS +Solar radiation and GIS
    62. AUTHORS

      diff --git a/raster/r.sunmask/r.sunmask.html b/raster/r.sunmask/r.sunmask.html index 27a2ee35f7a..7b43ac502ef 100644 --- a/raster/r.sunmask/r.sunmask.html +++ b/raster/r.sunmask/r.sunmask.html @@ -80,7 +80,7 @@

      NOTES

      correction for atmosphere refraction. The output without -g flag contains related indications. -

      EXAMPLE

      +

      EXAMPLE

      Example for North Carolina sample data set for the calculation of sun position angles and more: diff --git a/raster/r.terraflow/r.terraflow.html b/raster/r.terraflow/r.terraflow.html index 29fa310c5dc..80f7e5463dd 100644 --- a/raster/r.terraflow/r.terraflow.html +++ b/raster/r.terraflow/r.terraflow.html @@ -44,12 +44,12 @@

      DESCRIPTION

      • On plateaus (flat areas that spill out) r.terraflow routes flow so that globally the flow goes towards the spill cells of -the plateaus. +the plateaus.
      • On sinks (flat areas that do not spill out, including one-cell pits) r.terraflow assigns flow by flooding the terrain until all the sinks are filled and assigning flow directions on the filled -terrain. +terrain.

      In order to flood the terrain, r.terraflow identifies all @@ -163,7 +163,7 @@

      EXAMPLES

      -
      +
      Flow accumulation
        -
      • no-data (null), if the respective point in the elevation map is no-data (null) -
      • -1, if the point is not visible -
      • the difference in elevation between the point and the viewpoint, if the point is visible. +
      • no-data (null), if the respective point in the elevation map is no-data (null)
      • +
      • -1, if the point is not visible
      • +
      • the difference in elevation between the point and the viewpoint, if the point is visible.

      @@ -58,8 +58,6 @@

      NOTES

      r.mapcalc can be used to create a negative of the viewshed map. - -

      By default the elevations are not adjusted for the curvature of the earth. The user can turn this on with flag @@ -165,8 +163,8 @@

      The algorithm

      - - + + @@ -187,7 +185,7 @@

      EXAMPLES

      -r.viewshed example
      +r.viewshed example
      Viewshed shown on shaded terrain (observer position in the north-east quadrant with white dot; 5m above ground)
      diff --git a/raster/r.walk/r.walk.html b/raster/r.walk/r.walk.html index 2523b7fc0b6..ed964d94082 100644 --- a/raster/r.walk/r.walk.html +++ b/raster/r.walk/r.walk.html @@ -166,13 +166,13 @@

      REFERENCES

      • Aitken, R. 1977. Wilderness areas in Scotland. Unpublished Ph.D. thesis. - University of Aberdeen. + University of Aberdeen.
      • Steno Fontanari, University of Trento, Italy, Ingegneria per l'Ambiente e - il Territorio, 2000-2001. + il Territorio, 2000-2001.
      • Svilluppo di metodologie GIS per la determinazione dell'accessibilità territoriale come supporto alle decisioni nella gestione ambientale.
      • Langmuir, E. 1984. Mountaincraft and leadership. The Scottish - Sports Council/MLTB. Cordee, Leicester. + Sports Council/MLTB. Cordee, Leicester.

      SEE ALSO

      diff --git a/raster/r.water.outlet/r.water.outlet.html b/raster/r.water.outlet/r.water.outlet.html index 7504ec1e722..2ce1c848e89 100644 --- a/raster/r.water.outlet/r.water.outlet.html +++ b/raster/r.water.outlet/r.water.outlet.html @@ -52,7 +52,7 @@

      EXAMPLE

      -
      +
      Figure: Watershed draped over flow accumulation
      diff --git a/raster/r.watershed/front/r.watershed.html b/raster/r.watershed/front/r.watershed.html index d9a226412af..8e9babef09d 100644 --- a/raster/r.watershed/front/r.watershed.html +++ b/raster/r.watershed/front/r.watershed.html @@ -360,11 +360,11 @@

      Further processing of output layers

    63. Use a resample of the basins catchment raster map as a MASK.
      The equivalent vector map method is similar using v.select or - v.overlay. + v.overlay.
    64. Use the r.cost module with a - point in the river as a starting point. + point in the river as a starting point.
    65. Use the v.net.iso module - with a node in the river as a starting point. + with a node in the river as a starting point.
    66. All individual river networks in the stream segments output can be @@ -408,7 +408,7 @@

      Further processing of output layers

      The following command performs these replacements:
      -r.mapcalc "drainage_degrees = if(drainage > 0, 45. * drainage, null())"
      +r.mapcalc "drainage_degrees = if(drainage > 0, 45. * drainage, null())"
       
      Alternatively, the user can use the -a flag or later the @@ -471,7 +471,7 @@

      Convert r.watershed streams map output to a vector map

      r.mapcalc 'MASK = if(!isnull(elevation.dem))' r.mapcalc "rwater.course = \ - if( abs(rwater.accum) > $mean_of_abs, \ + if( abs(rwater.accum) > $mean_of_abs, \ abs(rwater.accum), \ null() )" r.colors -g rwater.course col=bcyr @@ -515,45 +515,44 @@

      REFERENCES

      Proceedings of International Geographic Information Systems (IGIS) Symposium '89, pp 275-281 (Baltimore, MD, 18-19 March 1989).
      URL: -http://chuck.ehlschlaeger.info/older/IGIS/paper.html +http://chuck.ehlschlaeger.info/older/IGIS/paper.html
    67. Holmgren P. (1994). Multiple flow direction algorithms for runoff modelling in grid based elevation models: An empirical evaluation. Hydrological Processes Vol 8(4), 327-334.
      -DOI: 10.1002/hyp.3360080405 +DOI: 10.1002/hyp.3360080405
    68. Kinner D., Mitasova H., Harmon R., Toma L., Stallard R. (2005). GIS-based Stream Network Analysis for The Chagres River Basin, Republic of Panama. The Rio Chagres: A Multidisciplinary Profile of a Tropical Watershed, R. Harmon (Ed.), Springer/Kluwer, p.83-95.
      URL: -http://fatra.cnr.ncsu.edu/~hmitaso/measwork/panama/panama.html +http://fatra.cnr.ncsu.edu/~hmitaso/measwork/panama/panama.html
    69. McCool et al. (1987). Revised Slope Steepness Factor for the Universal -Soil Loss Equation, Transactions of the ASAE Vol 30(5). +Soil Loss Equation, Transactions of the ASAE Vol 30(5).
    70. Metz M., Mitasova H., Harmon R. (2011). Efficient extraction of drainage networks from massive, radar-based elevation models with least cost path search, Hydrol. Earth Syst. Sci. Vol 15, 667-678.
      -DOI: 10.5194/hess-15-667-2011 +DOI: 10.5194/hess-15-667-2011
    71. Moore I.D., Grayson R.B., Ladson A.R. (1991). Digital terrain modelling: a review of hydrogical, geomorphological, and biological applications, Hydrological Processes, Vol 5(1), 3-30
      -DOI: 10.1002/hyp.3360050103 +DOI: 10.1002/hyp.3360050103
    72. Quinn P., K. Beven K., Chevallier P., Planchon O. (1991). The prediction of hillslope flow paths for distributed hydrological modelling using Digital Elevation Models, Hydrological Processes Vol 5(1), p.59-79.
      -DOI: 10.1002/hyp.3360050106 +DOI: 10.1002/hyp.3360050106
    73. Weltz M. A., Renard K.G., Simanton J. R. (1987). Revised Universal Soil Loss Equation for Western Rangelands, U.S.A./Mexico Symposium of Strategies for Classification and Management of Native Vegetation for -Food Production In Arid Zones (Tucson, AZ, 12-16 Oct. 1987). -
    74. +Food Production In Arid Zones (Tucson, AZ, 12-16 Oct. 1987).

      SEE ALSO

      diff --git a/raster/r.what.color/r.what.color.html b/raster/r.what.color/r.what.color.html index 607c0732613..34eeb560af1 100644 --- a/raster/r.what.color/r.what.color.html +++ b/raster/r.what.color/r.what.color.html @@ -53,8 +53,8 @@

      DESCRIPTION

      Common formats:

        -
      • Tcl/Tk: format="#%02x%02x%02x" -
      • WxPython: format='"#%02x%02x%02x"' or format='"(%d,%d,%d)"' +
      • Tcl/Tk: format="#%02x%02x%02x"
      • +
      • WxPython: format='"#%02x%02x%02x"' or format='"(%d,%d,%d)"'

      SEE ALSO

      diff --git a/raster/rasterintro.html b/raster/rasterintro.html index 519cb03ea39..e4193d74bad 100644 --- a/raster/rasterintro.html +++ b/raster/rasterintro.html @@ -18,12 +18,12 @@

      Raster maps in general

      As a general rule in GRASS GIS:
      1. Raster output maps have their bounds and resolution equal to those -of the current computational region. +of the current computational region.
      2. Raster input maps are automatically cropped/padded and rescaled -(using nearest-neighbour resampling) to match the current region. +(using nearest-neighbour resampling) to match the current region.
      3. Raster input maps are automatically masked if a raster map named MASK exists. The MASK is only applied when reading maps - from the disk. + from the disk.
      There are a few exceptions to this: @@ -267,7 +267,7 @@

      2D raster maps

      • 32bit signed integer (CELL),
      • single-precision floating-point (FCELL), and
      • -
      • double-precision floating-point (DCELL). +
      • double-precision floating-point (DCELL).
      In most GRASS GIS resources, 2D raster maps are usually called "raster" maps. diff --git a/raster3d/r3.gwflow/r3.gwflow.html b/raster3d/r3.gwflow/r3.gwflow.html index 82dca510162..8df4a38140c 100644 --- a/raster3d/r3.gwflow/r3.gwflow.html +++ b/raster3d/r3.gwflow/r3.gwflow.html @@ -78,9 +78,9 @@

      EXAMPLE 1

      g.region res=25 res3=25 t=100 b=0 n=1000 s=0 w=0 e=1000 -p3 #now create the input raster maps for a confined aquifer -r3.mapcalc expression="phead = if(row() == 1 && depth() == 4, 50, 40)" -r3.mapcalc expression="status = if(row() == 1 && depth() == 4, 2, 1)" -r3.mapcalc expression="well = if(row() == 20 && col() == 20 && depth() == 2, -0.25, 0)" +r3.mapcalc expression="phead = if(row() == 1 && depth() == 4, 50, 40)" +r3.mapcalc expression="status = if(row() == 1 && depth() == 4, 2, 1)" +r3.mapcalc expression="well = if(row() == 20 && col() == 20 && depth() == 2, -0.25, 0)" r3.mapcalc expression="hydcond = 0.00025" r3.mapcalc expression="syield = 0.0001" r.mapcalc expression="recharge = 0.0" @@ -105,14 +105,14 @@

      EXAMPLE 2

      g.region res=15 res3=15 t=500 b=0 n=1000 s=0 w=0 e=1000 #now create the input raster maps for a confined aquifer -r3.mapcalc expression="phead = if(col() == 1 && depth() == 33, 50, 40)" -r3.mapcalc expression="status = if(col() == 1 && depth() == 33, 2, 1)" -r3.mapcalc expression="well = if(row() == 20 && col() == 20 && depth() == 3, -0.25, 0)" -r3.mapcalc expression="well = if(row() == 50 && col() == 50 && depth() == 3, -0.25, well)" +r3.mapcalc expression="phead = if(col() == 1 && depth() == 33, 50, 40)" +r3.mapcalc expression="status = if(col() == 1 && depth() == 33, 2, 1)" +r3.mapcalc expression="well = if(row() == 20 && col() == 20 && depth() == 3, -0.25, 0)" +r3.mapcalc expression="well = if(row() == 50 && col() == 50 && depth() == 3, -0.25, well)" r3.mapcalc expression="hydcond = 0.0025" -r3.mapcalc expression="hydcond = if(depth() < 30 && depth() > 23 && col() < 60, 0.000025, hydcond)" -r3.mapcalc expression="hydcond = if(depth() < 20 && depth() > 13 && col() > 7, 0.000025, hydcond)" -r3.mapcalc expression="hydcond = if(depth() < 10 && depth() > 7 && col() < 60, 0.000025, hydcond)" +r3.mapcalc expression="hydcond = if(depth() < 30 && depth() > 23 && col() < 60, 0.000025, hydcond)" +r3.mapcalc expression="hydcond = if(depth() < 20 && depth() > 13 && col() > 7, 0.000025, hydcond)" +r3.mapcalc expression="hydcond = if(depth() < 10 && depth() > 7 && col() < 60, 0.000025, hydcond)" r3.mapcalc expression="syield = 0.0001" r3.gwflow solver=cg phead=phead statuyield=status hc_x=hydcond hc_y=hydcond \ diff --git a/raster3d/r3.in.ascii/r3.in.ascii.html b/raster3d/r3.in.ascii/r3.in.ascii.html index 0316fa76029..5154feb36d6 100644 --- a/raster3d/r3.in.ascii/r3.in.ascii.html +++ b/raster3d/r3.in.ascii/r3.in.ascii.html @@ -16,8 +16,8 @@

      NOTES

      that is visualized in the following picture, independently from the specified ordering in the ASCII input file:
      -
      -
      [SDF][SDF][SDF][SDF]
      The sweep-line.
      +
      +
      @@ -47,7 +47,7 @@

      Format

      The supported row/depth ordering is documented in the r3.out.ascii manual page. The order of the data in the input file does not specify the data order in the generated output 3D raster map which is in any case -north -> south, west -> east, bottom -> top order. +north -> south, west -> east, bottom -> top order. So dependent on the order information the data is automatically imported into the correct internal coordinate system.

      The version and order options are not mandatory. In case no version and @@ -61,7 +61,7 @@

      EXAMPLES

      4x3x2 sample. Note in case no specific ordering is specified in the input file the upper-left (NW) corner of the bottom level comes first. The according -order option is: nsbt for north -> south, bottom -> top ordering. This is +order option is: nsbt for north -> south, bottom -> top ordering. This is identical with r.in.ascii for single level data. So the y coordinate is 0 at the northern edge. diff --git a/raster3d/r3.in.bin/r3.in.bin.html b/raster3d/r3.in.bin/r3.in.bin.html index a1735a49d6f..e3c58afc5e0 100644 --- a/raster3d/r3.in.bin/r3.in.bin.html +++ b/raster3d/r3.in.bin/r3.in.bin.html @@ -12,8 +12,8 @@

      DESCRIPTION

      NOTES

      -The write order of the rows (north->south to south->north) and -the write order of the depths (bottom->top to top->bottom) can be switched. +The write order of the rows (north->south to south->north) and +the write order of the depths (bottom->top to top->bottom) can be switched.

      Have a look at r3.out.ascii to manual page that describes the internal layout of the 3D raster maps and the supported diff --git a/raster3d/r3.in.lidar/r3.in.lidar.html b/raster3d/r3.in.lidar/r3.in.lidar.html index 2edddfceb9e..902893b84e5 100644 --- a/raster3d/r3.in.lidar/r3.in.lidar.html +++ b/raster3d/r3.in.lidar/r3.in.lidar.html @@ -26,17 +26,17 @@

      NOTES

    75. This module is new and partially experimental. Please don't rely on its interface and be critical towards its outputs. - Please report issues on the mailing list or in the bug tracker. + Please report issues on the mailing list or in the bug tracker
    76. .
    77. No reprojection is performed, you need to reproject ahead or - use a GRASS project with the coordinate system that matches that of the data. + use a GRASS project with the coordinate system that matches that of the data.
    78. Some temporary maps are created but not cleaned up. Use of - --overwrite might be necessary even when not desired. + --overwrite might be necessary even when not desired.
    79. Expects points to have intensity and causing random (undefined) result for related outputs (sum, mean, proportional_sum) - when the intensity is not present but the outputs were requested. + when the intensity is not present but the outputs were requested.
    80. EXAMPLES

      @@ -174,14 +174,14 @@

      REFERENCES

      Processing UAV and lidar point clouds in GRASS GIS. XXIII ISPRS Congress 2016 [ISPRS Archives, -ResearchGate] +ResearchGate]
    81. -ASPRS LAS format +ASPRS LAS format
    82. -LAS library +LAS library
    83. -LAS library C API documentation +LAS library C API documentation
    84. SEE ALSO

      diff --git a/raster3d/r3.mkdspf/r3.mkdspf.html b/raster3d/r3.mkdspf/r3.mkdspf.html index e73217df618..b8a4f584f60 100644 --- a/raster3d/r3.mkdspf/r3.mkdspf.html +++ b/raster3d/r3.mkdspf/r3.mkdspf.html @@ -3,10 +3,10 @@

      DESCRIPTION

      Creates a display file from an existing grid3 file according to specified threshold levels. The display file is a display list of polygons that represent isosurfaces of the data volume. If -specific levels are given, additional optional parameters -are ignored. Min or max may be used alone or together -to specify a sub-range of the data. The step -parameter is given precedence over tnum. +specific levels are given, additional optional parameters +are ignored. Min or max may be used alone or together +to specify a sub-range of the data. The step +parameter is given precedence over tnum.

      Flags:

      @@ -53,7 +53,7 @@

      NOTES

      EXAMPLES

      -With grid3 data (phdata) in the range 3-7, +With grid3 data (phdata) in the range 3-7, we only want to see isosurface values for the range 4-6. Any of these commands will produce the same results:
      diff --git a/raster3d/r3.out.ascii/r3.out.ascii.html b/raster3d/r3.out.ascii/r3.out.ascii.html
      index 8f5f0ed0f11..5cb54e7fef9 100644
      --- a/raster3d/r3.out.ascii/r3.out.ascii.html
      +++ b/raster3d/r3.out.ascii/r3.out.ascii.html
      @@ -72,8 +72,8 @@ 

      NOTES

      The internal storage scheme of 3D raster maps is visualized in the following picture:

      -
      -
      The volume coordinate system and tile layout of the imported voxel map
      +
      +
      diff --git a/raster3d/r3.out.bin/r3.out.bin.html b/raster3d/r3.out.bin/r3.out.bin.html index e2c2ee3621c..16af9096bc2 100644 --- a/raster3d/r3.out.bin/r3.out.bin.html +++ b/raster3d/r3.out.bin/r3.out.bin.html @@ -7,8 +7,8 @@

      DESCRIPTION

      NOTES

      -The write order of the rows (north->south to south->north) and -the write order of the depths (bottom->top to top->bottom) can be switched. +The write order of the rows (north->south to south->north) and +the write order of the depths (bottom->top to top->bottom) can be switched.

      The region parameters are printed to stderr when setting the verbose flag. Export of little and big endian byte order is supported. diff --git a/raster3d/r3.showdspf/r3.showdspf.html b/raster3d/r3.showdspf/r3.showdspf.html index 97f1322a882..cd2b91ecf65 100644 --- a/raster3d/r3.showdspf/r3.showdspf.html +++ b/raster3d/r3.showdspf/r3.showdspf.html @@ -42,7 +42,7 @@

      DESCRIPTION

      E(x,y,z)int# end display along (x,y,z)axis # S int# specular highlight control R resets display along axis to show all data - F grid3name colortablename load new color file + F grid3name colortablename load new color file C toggles the clear flag c clears the display (no thresholds) diff --git a/raster3d/r3.showdspf/r3.showdspf_opengl_mods.html b/raster3d/r3.showdspf/r3.showdspf_opengl_mods.html index 09f15f9b2ed..74fb1338ba8 100644 --- a/raster3d/r3.showdspf/r3.showdspf_opengl_mods.html +++ b/raster3d/r3.showdspf/r3.showdspf_opengl_mods.html @@ -2,7 +2,7 @@ - modifications made to <em>r3.showdspf</em> + modifications made to r3.showdspf diff --git a/raster3d/r3.stats/r3.stats.html b/raster3d/r3.stats/r3.stats.html index dd9978f67d2..1e68ab3af65 100644 --- a/raster3d/r3.stats/r3.stats.html +++ b/raster3d/r3.stats/r3.stats.html @@ -17,7 +17,7 @@

      NOTES

      equal value groups effect the memory consumption and the calculation time. The user can expect a huge time consumption to calculate the equal value groups (flag -e) if large region settings occur for maps which -have many equal value groups (> 100000). +have many equal value groups (> 100000).

      EXAMPLES

      @@ -61,7 +61,7 @@

      Generic example

      r3.stats input=volmap nsteps=10 #the result should look like this - num | minimum <= value | value < maximum | volume | perc | cell count + num | minimum <= value | value < maximum | volume | perc | cell count 1 1.000000000 1.900000000 60000000.000 10.00000 60 2 1.900000000 2.800000000 60000000.000 10.00000 60 3 2.800000000 3.700000000 60000000.000 10.00000 60 diff --git a/raster3d/raster3dintro.html b/raster3d/raster3dintro.html index 1e45022227c..c56e1cfcc33 100644 --- a/raster3d/raster3dintro.html +++ b/raster3d/raster3dintro.html @@ -21,7 +21,7 @@

      3D raster maps in general

      r3.retile after import or creation.
      -
      +
      The 3D raster map coordinate system and the internal tile layout of the RASTER3D library diff --git a/scripts/d.correlate/d.correlate.html b/scripts/d.correlate/d.correlate.html index bf6add70fca..f669cc24687 100644 --- a/scripts/d.correlate/d.correlate.html +++ b/scripts/d.correlate/d.correlate.html @@ -24,7 +24,7 @@

      EXAMPLE

      -Scatterplot of two LANDSAT TM7 channels
      +Scatterplot of two LANDSAT TM7 channels
      Scatterplot of two LANDSAT TM7 channels
      diff --git a/scripts/d.rast.edit/d.rast.edit.html b/scripts/d.rast.edit/d.rast.edit.html index 75233316e38..cde4f96947a 100644 --- a/scripts/d.rast.edit/d.rast.edit.html +++ b/scripts/d.rast.edit/d.rast.edit.html @@ -77,8 +77,8 @@

      EXAMPLE

      g.region raster=elev_lid792_1m -p # pan to area of interest and edit raster cells (I used "102" as value to modify cells -# Use: File > Save to save -# then: File > Exit +# Use: File > Save to save +# then: File > Exit d.rast.edit input=elev_lid792_1m output=elev_lid792_1m_modified # comparison of raster statistics diff --git a/scripts/db.out.ogr/db.out.ogr.html b/scripts/db.out.ogr/db.out.ogr.html index 5a2727dd566..cf07de25e96 100644 --- a/scripts/db.out.ogr/db.out.ogr.html +++ b/scripts/db.out.ogr/db.out.ogr.html @@ -30,7 +30,7 @@

      Export of GRASS GIS attribute table into a PostgreSQL table

       db.out.ogr input=precip_30ynormals \
      -	   output="PG:host=localhost dbname=meteo user=neteler" \
      +           output="PG:host=localhost dbname=meteo user=neteler" \
                  format=PostgreSQL
       # verify
       echo "SELECT * FROM precip_30ynormals" | psql meteo
      diff --git a/scripts/i.pansharpen/i.pansharpen.html b/scripts/i.pansharpen/i.pansharpen.html
      index 0db14283be9..6fd17725e86 100644
      --- a/scripts/i.pansharpen/i.pansharpen.html
      +++ b/scripts/i.pansharpen/i.pansharpen.html
      @@ -19,7 +19,7 @@ 

      DESCRIPTION

      panchromatic band is then substituted for the intensity channel (I), combined with the original hue (H) and saturation (S) channels, and transformed back to RGB color space at the higher resolution of the panchromatic band. The -algorithm for this can be represented as: RGB -> IHS -> [pan]HS -> RGB. +algorithm for this can be represented as: RGB -> IHS -> [pan]HS -> RGB.

      With a Brovey pan sharpening, each of the 3 lower resolution bands and panchromatic band are combined using the following algorithm to calculate @@ -172,7 +172,7 @@

      Pan sharpening comparison example

      Results:

      -
      The coordinate system and tile layout of a voxel map in GRASS
      +
       R, G, B composite of Landsat at 30m @@ -216,29 +216,29 @@

      REFERENCES

      Roller, N.E.G. and Cox, S., (1980). Comparison of Landsat MSS and merged MSS/RBV data for analysis of natural vegetation. Proc. of the 14th International Symposium on Remote Sensing - of Environment, San Jose, Costa Rica, 23-30 April, pp. 1001-1007 + of Environment, San Jose, Costa Rica, 23-30 April, pp. 1001-1007
    85. Amarsaikhan, D., Douglas, T. (2004). Data fusion and multisource image - classification. International Journal of Remote Sensing, 25(17), 3529-3539. + classification. International Journal of Remote Sensing, 25(17), 3529-3539.
    86. Behnia, P. (2005). Comparison between four methods for data fusion of ETM+ - multispectral and pan images. Geo-spatial Information Science, 8(2), 98-103. + multispectral and pan images. Geo-spatial Information Science, 8(2), 98-103.
    87. Du, Q., Younan, N. H., King, R., Shah, V. P. (2007). On the Performance Evaluation of Pan-Sharpening Techniques. Geoscience and Remote Sensing - Letters, IEEE, 4(4), 518-522. + Letters, IEEE, 4(4), 518-522.
    88. Karathanassi, V., Kolokousis, P., Ioannidou, S. (2007). A comparison study on fusion methods using evaluation indicators. International Journal - of Remote Sensing, 28(10), 2309-2341. + of Remote Sensing, 28(10), 2309-2341.
    89. Neteler, M, D. Grasso, I. Michelazzi, L. Miori, S. Merler, and C. Furlanello (2005). An integrated toolbox for image registration, fusion and classification. International Journal of Geoinformatics, 1(1):51-61 - (PDF) + (PDF)
    90. Pohl, C, and J.L van Genderen (1998). Multisensor image fusion in remote - sensing: concepts, methods and application. Int. J. of Rem. Sens., 19, 823-854. + sensing: concepts, methods and application. Int. J. of Rem. Sens., 19, 823-854.
    91. SEE ALSO

      diff --git a/scripts/i.spectral/i.spectral.html b/scripts/i.spectral/i.spectral.html index 128a0679ec9..01d747e3836 100644 --- a/scripts/i.spectral/i.spectral.html +++ b/scripts/i.spectral/i.spectral.html @@ -18,7 +18,7 @@

      EXAMPLE

      -
      +
      Spectral plot of 3 different land cover types: (1) water, (2) green vegetation, and (3) highway
      diff --git a/scripts/i.tasscap/i.tasscap.html b/scripts/i.tasscap/i.tasscap.html index d197df7faf0..2bb244e32d8 100644 --- a/scripts/i.tasscap/i.tasscap.html +++ b/scripts/i.tasscap/i.tasscap.html @@ -15,10 +15,10 @@

      DESCRIPTION

      The following tasseled cap components are generated:
        -
      • tasscap.1: corresponds to brightness, -
      • tasscap.2: corresponds to greenness, -
      • tasscap.3: corresponds to wetness, -
      • tasscap.4: corresponds to atmospheric haze (only selected sensors: Landsat 5,7,8). +
      • tasscap.1: corresponds to brightness,
      • +
      • tasscap.2: corresponds to greenness,
      • +
      • tasscap.3: corresponds to wetness,
      • +
      • tasscap.4: corresponds to atmospheric haze (only selected sensors: Landsat 5,7,8).

      EXAMPLE

      @@ -39,7 +39,7 @@

      EXAMPLE

      - +
       'Brightness' Tasseled Cap component 1 diff --git a/scripts/r.fillnulls/r.fillnulls.html b/scripts/r.fillnulls/r.fillnulls.html index 269b07631b2..29c5e42480e 100644 --- a/scripts/r.fillnulls/r.fillnulls.html +++ b/scripts/r.fillnulls/r.fillnulls.html @@ -71,7 +71,7 @@

      EXAMPLE

      d.histogram elev_srtm_30m # remove SRTM outliers, i.e. SRTM below 50m (esp. lakes), leading to no data areas -r.mapcalc "elev_srtm_30m_filt = if(elev_srtm_30m < 50.0, null(), elev_srtm_30m)" +r.mapcalc "elev_srtm_30m_filt = if(elev_srtm_30m < 50.0, null(), elev_srtm_30m)" d.histogram elev_srtm_30m_filt d.rast elev_srtm_30m_filt @@ -103,22 +103,22 @@

      REFERENCES

    92. Mitas, L., Mitasova, H., 1999, Spatial Interpolation. In: P.Longley, M.F. Goodchild, D.J. Maguire, D.W.Rhind (Eds.), Geographical Information Systems: Principles, Techniques, Management and Applications, Wiley, -pp.481-492 +pp.481-492
    93. Mitasova H., Mitas L.,  Brown W.M.,  D.P. Gerdes, I. Kosinovsky, Baker, T.1995, Modeling spatially and temporally distributed phenomena: New methods and tools for GRASS GIS. International Journal of GIS, 9 (4), special issue on Integrating GIS and Environmental modeling, -433-446. +433-446.
    94. Mitasova H. and Mitas L. 1993: Interpolation by Regularized Spline with Tension: I. -Theory and Implementation, Mathematical Geology 25, 641-655. +Theory and Implementation, Mathematical Geology 25, 641-655.
    95. Mitasova H. and Hofierka L. 1993: Interpolation by Regularized Spline with Tension: II. Application to Terrain Modeling and Surface Geometry Analysis, -Mathematical Geology 25, 657-667. +Mathematical Geology 25, 657-667.
    96. SEE ALSO

      diff --git a/scripts/r.mapcalc.simple/r.mapcalc.simple.html b/scripts/r.mapcalc.simple/r.mapcalc.simple.html index 84d2aeeb0a9..81463659120 100644 --- a/scripts/r.mapcalc.simple/r.mapcalc.simple.html +++ b/scripts/r.mapcalc.simple/r.mapcalc.simple.html @@ -27,10 +27,10 @@

      NOTES

      • The input raster map names and the output map raster name are separate from the expression (formula) which uses generic - variable names (A, B, C, ...). + variable names (A, B, C, ...).
      • The output raster name is not included in the expression.
      • The expression is expected to be a single short one liner - without the function eval(). + without the function eval().
      Differences to r.mapcalc.simple module in GRASS GIS 5 and 6: @@ -38,23 +38,23 @@

      NOTES

      • The primary purpose is not being a GUI front end to r.mapcalc, but a wrapper which allows easy building of - interfaces to r.mapcalc (including GUIs). + interfaces to r.mapcalc (including GUIs).
      • Whitespace (most notably spaces) are allowed - (in the same way as for r.mapcalc). + (in the same way as for r.mapcalc).
      • The variable names are case-insensitive to allow the original uppercase as well as lowercase as in option names - (unless the -c flag is used). + (unless the -c flag is used).
      • Option names for each map are just one letter (not amap, etc.).
      • Output option name is output as for other modules - (not outfile). + (not outfile).
      • Raster map names can be optionally quoted (the -q flag).
      • There is no expert mode - (which was just running r.mapcalc). + (which was just running r.mapcalc).
      • The expression option is first, so it is possible to omit its name in the command line - (just like with r.mapcalc). + (just like with r.mapcalc).
      • Overwriting of outputs is done in the same way as with other - modules, so there is no flag to not overwrite outputs. + modules, so there is no flag to not overwrite outputs.

      EXAMPLES

      diff --git a/scripts/v.dissolve/v.dissolve.html b/scripts/v.dissolve/v.dissolve.html index 54044a1bcf4..171362b7875 100644 --- a/scripts/v.dissolve/v.dissolve.html +++ b/scripts/v.dissolve/v.dissolve.html @@ -276,8 +276,8 @@

      Aggregating multiple attributes

       v.dissolve input=boundary_municp column=DOTURBAN_N output=municipalities_4 \
      -	aggregate_columns=ACRES,NEW_PERC_G aggregate_methods=sum,avg \
      -	result_columns=acres,new_perc_g
      +    aggregate_columns=ACRES,NEW_PERC_G aggregate_methods=sum,avg \
      +    result_columns=acres,new_perc_g
       

      @@ -336,9 +336,9 @@

      Aggregating using SQL syntax

      used with group_concat:
      -    v.dissolve input=boundary_municp column=DOTURBAN_N output=municipalities_7 \
      -        aggregate_columns="group_concat(MB_NAME, ';')" \
      -        result_columns="names TEXT"
      +v.dissolve input=boundary_municp column=DOTURBAN_N output=municipalities_7 \
      +    aggregate_columns="group_concat(MB_NAME, ';')" \
      +    result_columns="names TEXT"
       

      diff --git a/temporal/t.rast.accumulate/t.rast.accumulate.html b/temporal/t.rast.accumulate/t.rast.accumulate.html index e36d6a79c57..09eef592a81 100644 --- a/temporal/t.rast.accumulate/t.rast.accumulate.html +++ b/temporal/t.rast.accumulate/t.rast.accumulate.html @@ -153,7 +153,7 @@

      EXAMPLE

      if(isnull(leafhopper_cycle_1_1990_2000_yearly_clean), \ null() ,1),2),3)" -cat > color.table << EOF +cat > color.table << EOF 3 yellow 2 blue 1 red @@ -240,7 +240,7 @@

      EXAMPLE

      output=leafhopper_monthly_indicator_c3_1990_2000 \ expression="if(leafhopper_indi_min_month_c3_1990_2000 == 1, 1, if(leafhopper_indi_max_month_c3_1990_2000 == 3, 3, 2))" -cat > color.table << EOF +cat > color.table << EOF 3 red 2 yellow 1 green diff --git a/temporal/t.rast.aggregate.ds/t.rast.aggregate.ds.html b/temporal/t.rast.aggregate.ds/t.rast.aggregate.ds.html index d7efc4a5bf0..b76274c76d3 100644 --- a/temporal/t.rast.aggregate.ds/t.rast.aggregate.ds.html +++ b/temporal/t.rast.aggregate.ds/t.rast.aggregate.ds.html @@ -42,7 +42,7 @@

      Precipitation aggregation

      for map in ${MAPS} ; do r.mapcalc expression="${map} = 1" - echo ${map} >> map_list.txt + echo ${map} >> map_list.txt done t.create type=strds temporaltype=absolute \ @@ -262,7 +262,7 @@

      MODIS satellite sensor daily data aggregation to 8 days

      # to a YYYY-MM-DD date for start and end, and create a file with # mapnames, start date and end date -g.list type=raster pattern=8day_20??_* > names_list +g.list type=raster pattern=8day_20??_* > names_list for NAME in `cat names_list` ; do @@ -277,10 +277,10 @@

      MODIS satellite sensor daily data aggregation to 8 days

      if [ $DOY -le "353" ] ; then doy_end=$(( $DOY + 8 )) elif [ $DOY -eq "361" ] ; then - if [ $[$YEAR % 4] -eq 0 ] && [ $[$YEAR % 100] -ne 0 ] || [ $[$YEAR % 400] -eq 0 ] ; then + if [ $[$YEAR % 4] -eq 0 ] && [ $[$YEAR % 100] -ne 0 ] || [ $[$YEAR % 400] -eq 0 ] ; then doy_end=$(( $DOY + 6 )) else - doy_end=$(( $DOY + 5 )) + doy_end=$(( $DOY + 5 )) fi fi @@ -288,7 +288,7 @@

      MODIS satellite sensor daily data aggregation to 8 days

      DATE_END=`date -d "${YEAR}-01-01 +$(( ${doy_end} -1 ))days" +%Y-%m-%d` # text file with mapnames, start date and end date - echo "$NAME|$DATE_START|$DATE_END" >> list_map_start_end_time.txt + echo "$NAME|$DATE_START|$DATE_END" >> list_map_start_end_time.txt done diff --git a/temporal/t.rast.algebra/t.rast.algebra.html b/temporal/t.rast.algebra/t.rast.algebra.html index b7fda851224..27d9489b7dc 100644 --- a/temporal/t.rast.algebra/t.rast.algebra.html +++ b/temporal/t.rast.algebra/t.rast.algebra.html @@ -230,11 +230,11 @@

      Logical operators

      == equal != not equal - > greater than - >= greater than or equal - < less than - <= less than or equal - && and + > greater than + >= greater than or equal + < less than + <= less than or equal + && and || or @@ -291,26 +291,26 @@

      Comparison operator

      aggregation operator: {"comparison operator", "topological relations", aggregation operator, "temporal operator"}
      -This aggregation operator (| or &) defines the behaviour when a map is +This aggregation operator (| or &) defines the behaviour when a map is related to more than one map, e.g. for the topological relation 'contains'. -Should all (&) conditions for the related maps be true or is it sufficient +Should all (&) conditions for the related maps be true or is it sufficient to have any (|) condition that is true. The resulting boolean value is -then compared to the first condition by the comparison operator (|| or &&). +then compared to the first condition by the comparison operator (|| or &&). By default, the aggregation operator is related to the comparison operator:
      -comparison operator -> aggregation operator: +comparison operator -> aggregation operator:
      -|| -> | and && -> &
      +|| -> | and && -> &
       
      Examples:
       Condition 1 {||, equal, r} Condition 2
      -Condition 1 {&&, equal|during, l} Condition 2
      -Condition 1 {&&, equal|contains, |, l} Condition 2
      -Condition 1 {&&, equal|during, l} Condition 2 && Condition 3
      -Condition 1 {&&, equal|during, l} Condition 2 {&&,contains, |, r} Condition 3
      +Condition 1 {&&, equal|during, l} Condition 2
      +Condition 1 {&&, equal|contains, |, l} Condition 2
      +Condition 1 {&&, equal|during, l} Condition 2 && Condition 3
      +Condition 1 {&&, equal|during, l} Condition 2 {&&,contains, |, r} Condition 3
       

      Hash operator

      @@ -328,7 +328,7 @@

      Hash operator

      maps from B will be returned.
      -C = if({equal}, A {#, contains} B > 2, A {:, contains} B)
      +C = if({equal}, A {#, contains} B > 2, A {:, contains} B)
       
      This expression selects all maps from A that temporally contain at least 2 @@ -434,13 +434,13 @@

      Combinations of temporal, raster and select operators

      a1 of A:
      - C = A {+, contains} B --> c1 = a1 + b1 + b2 + b3
      + C = A {+, contains} B --> c1 = a1 + b1 + b2 + b3
       

      Important: the aggregation behaviour is not symmetric

      - C = B {+, during} A --> c1 = b1 + a1
      + C = B {+, during} A --> c1 = b1 + a1
                                c2 = b2 + a1
                                c3 = b3 + a1
       
      @@ -520,7 +520,7 @@

      Selection of raster cells

      the cells of A are in the range [100.0, 1600] of time intervals that have more than 30 days (Jan, Mar, May, Jul, Aug, Oct, Dec):
      -C = if(A > 100 && A < 1600 && td(A) > 30, B)
      +C = if(A > 100 && A < 1600 && td(A) > 30, B)
       

      Selection of raster cells with temporal topology relation

      @@ -528,7 +528,7 @@

      Selection of raster cells with temporal topology relation

      Same expression with explicit definition of the temporal topology relation and temporal operators:
      -C = if({equal}, A > 100 && A < 1600 {&&,equal} td(A) > 30, B)
      +C = if({equal}, A > 100 && A < 1600 {&&,equal} td(A) > 30, B)
       

      Conditional computation

      @@ -539,7 +539,7 @@

      Conditional computation

      equal time stamps. The number of days or fraction of days per interval is computed using the td() function that has as argument the STRDS "Prec":
      -C = if(Temp > 10.0, Prec / 3600.0 / 24.0 / td(Prec))
      +C = if(Temp > 10.0, Prec / 3600.0 / 24.0 / td(Prec))
       

      Conditional computation with temporal topology relation

      @@ -547,7 +547,7 @@

      Conditional computation with temporal topology relation

      Same expression with explicit definition of the temporal topology relation and temporal operators:
      -C = if({equal}, Temp > 10.0, Prec / 3600.0 / 24.0 {/,equal,l} td(Prec))
      +C = if({equal}, Temp > 10.0, Prec / 3600.0 / 24.0 {/,equal,l} td(Prec))
       

      Computation with time intervals

      @@ -555,7 +555,7 @@

      Computation with time intervals

      intervals of STRDS B if more than one map of A is contained in an interval of B, use A otherwise. The resulting time intervals are either from B or A:
      -C = if(B {#,contain} A > 1, (B {+,contain,l} A - B) / (B {#,contain} A), A)
      +C = if(B {#,contain} A > 1, (B {+,contain,l} A - B) / (B {#,contain} A), A)
       

      Computation with time intervals with temporal topology relation

      @@ -563,14 +563,14 @@

      Computation with time intervals with temporal topology relation

      Same expression with explicit definition of the temporal topology relation and temporal operators:
      -C = if({equal}, B {#,contain} A > 1, (B {+,contain,l} A {-,equal,l} B) {equal,=/} (B {#,contain} A), A)
      +C = if({equal}, B {#,contain} A > 1, (B {+,contain,l} A {-,equal,l} B) {equal,=/} (B {#,contain} A), A)
       

      Compute DOY for spatio-temporal conditions

      Compute the DOY for all maps from STRDS A where conditions are met at three -consecutive time intervals (e.g. temperature > 0): +consecutive time intervals (e.g. temperature > 0):
      -B = if(A > 0.0 && A[-1] > 0.0 && A[-2] > 0.0, start_doy(A, -1), 0)"
      +B = if(A > 0.0 && A[-1] > 0.0 && A[-2] > 0.0, start_doy(A, -1), 0)"
       
      diff --git a/temporal/t.rast.extract/t.rast.extract.html b/temporal/t.rast.extract/t.rast.extract.html index f8e366250e4..1a3b6d84e5e 100644 --- a/temporal/t.rast.extract/t.rast.extract.html +++ b/temporal/t.rast.extract/t.rast.extract.html @@ -27,16 +27,13 @@

      NOTES

      -t.rast.extract input=tempmean_monthly where="start_time > '2010-01-05'" \
      -               output=selected_tempmean_monthly basename=new_tmean_month \
      -               expression="if(tempmean_monthly < 0, null(), tempmean_monthly)"
      -
      +t.rast.extract input=tempmean_monthly where="start_time > '2010-01-05'" output=selected_tempmean_monthly basename=new_tmean_month expression="if(tempmean_monthly < 0, null(), tempmean_monthly)" +

      EXAMPLE

      -t.rast.extract input=tempmean_monthly output=tempmean_monthly_later_2012 \
      -               where="start_time >= '2012-01-01'"
      +t.rast.extract input=tempmean_monthly output=tempmean_monthly_later_2012 where="start_time >= '2012-01-01'"
       
       t.rast.list tempmean_monthly_later_2012
       name|mapset|start_time|end_time
      diff --git a/temporal/t.rast.mapcalc/t.rast.mapcalc.html b/temporal/t.rast.mapcalc/t.rast.mapcalc.html
      index c26f2e9c95a..afbe1d04422 100644
      --- a/temporal/t.rast.mapcalc/t.rast.mapcalc.html
      +++ b/temporal/t.rast.mapcalc/t.rast.mapcalc.html
      @@ -136,7 +136,7 @@ 

      EXAMPLES

       t.rast.mapcalc input=tempmean_monthly output=january_under_0 basename=january_under_0 \
      -    expression="if(start_month() == 1 && tempmean_monthly > 0, null(), tempmean_monthly)"
      +    expression="if(start_month() == 1 && tempmean_monthly > 0, null(), tempmean_monthly)"
       
       # print minimum and maximum only for January in the new strds
       t.rast.list january_under_0 columns=name,start_time,min,max | grep 01-01
      diff --git a/temporal/t.rast.series/t.rast.series.html b/temporal/t.rast.series/t.rast.series.html
      index 494605cb294..316f3635908 100644
      --- a/temporal/t.rast.series/t.rast.series.html
      +++ b/temporal/t.rast.series/t.rast.series.html
      @@ -49,7 +49,7 @@ 

      Estimate the average temperature for a subset of the time series

       t.rast.series input=tempmean_daily output=tempmean_season method=average \
      -  where="start_time >= '2012-06' and start_time <= '2012-08'"
      +  where="start_time >= '2012-06' and start_time <= '2012-08'"
       

      Climatology: single month in a multi-annual time series

      diff --git a/temporal/t.rast.to.rast3/t.rast.to.rast3.html b/temporal/t.rast.to.rast3/t.rast.to.rast3.html index 778e4869c68..3ece18d6ef2 100644 --- a/temporal/t.rast.to.rast3/t.rast.to.rast3.html +++ b/temporal/t.rast.to.rast3/t.rast.to.rast3.html @@ -54,7 +54,7 @@

      EXAMPLE

       # create the subset for 2012 data
       t.rast.extract input=tempmean_monthly output=tempmean_monthly_later_2012 \
      -               where="start_time >= '2012-01-01'"
      +               where="start_time >= '2012-01-01'"
       
       # set the right 3D region
       g.region -p3 res3=500
      diff --git a/temporal/t.rast.what/t.rast.what.html b/temporal/t.rast.what/t.rast.what.html
      index a6c112ebbb0..3bd5a6ebd8e 100644
      --- a/temporal/t.rast.what/t.rast.what.html
      +++ b/temporal/t.rast.what/t.rast.what.html
      @@ -109,7 +109,7 @@ 

      Example 2

      # using the where statement to select a subset of the STRDS # and stdout as output t.rast.what strds=A points=points \ - where="start_time >= '1990-03-01'" layout=timerow -n + where="start_time >= '1990-03-01'" layout=timerow -n x|y|1990-03-01 00:00:00;1990-04-01 00:00:00|1990-04-01 00:00:00;1990-05-01 00:00:00 115.004358627375|36.3593955782903|3|4 diff --git a/temporal/t.sample/t.sample.html b/temporal/t.sample/t.sample.html index 58cac201de9..14003800c15 100644 --- a/temporal/t.sample/t.sample.html +++ b/temporal/t.sample/t.sample.html @@ -57,7 +57,7 @@

      EXAMPLE

      n1=`g.tempfile pid=1 -d` n2=`g.tempfile pid=2 -d` -cat > "${n1}" << EOF +cat > "${n1}" << EOF a1 a2 a3 @@ -66,7 +66,7 @@

      EXAMPLE

      a6 EOF -cat > "${n2}" << EOF +cat > "${n2}" << EOF pnts1|2001-01-01|2001-03-01 pnts2|2001-05-01|2001-07-01 EOF diff --git a/temporal/t.select/t.select.html b/temporal/t.select/t.select.html index 0d64ce40a6e..04b74ff2b72 100644 --- a/temporal/t.select/t.select.html +++ b/temporal/t.select/t.select.html @@ -218,11 +218,11 @@

      Logical operators

      == equal != not equal - > greater than - >= greater than or equal - < less than - <= less than or equal - && and + > greater than + >= greater than or equal + < less than + <= less than or equal + && and || or
      @@ -272,23 +272,23 @@

      Comparison operator

      The structure is similar to the select operator with the extension of an aggregation operator: {"comparison operator", "topological relations", aggregation operator, "temporal operator"}
      -This aggregation operator (| or &) define the behaviour if a map is related the more +This aggregation operator (| or &) define the behaviour if a map is related the more than one map, e.g for the topological relations 'contains'. -Should all (&) conditions for the related maps be true or is it sufficient to +Should all (&) conditions for the related maps be true or is it sufficient to have any (|) condition that is true. The resulting boolean value is then compared -to the first condition by the comparison operator (|| or &&). +to the first condition by the comparison operator (|| or &&). As default the aggregation operator is related to the comparison operator:
      -Comparison operator -> aggregation operator: +Comparison operator -> aggregation operator:
      -|| -> | and && -> &
      +|| -> | and && -> &
       
      Examples:
       Condition 1 {||, equal, r} Condition 2
      -Condition 1 {&&, equal|during, l} Condition 2
      -Condition 1 {&&, equal|contains, |, l} Condition 2
      -Condition 1 {&&, equal|during, l} Condition 2 && Condition 3
      -Condition 1 {&&, equal|during, l} Condition 2 {&&,contains, |, r} Condition 3
      +Condition 1 {&&, equal|during, l} Condition 2
      +Condition 1 {&&, equal|contains, |, l} Condition 2
      +Condition 1 {&&, equal|during, l} Condition 2 && Condition 3
      +Condition 1 {&&, equal|during, l} Condition 2 {&&,contains, |, r} Condition 3
       

      Hash operator

      @@ -303,7 +303,7 @@

      Hash operator

      A list of integers (scalars) corresponding to the maps of A that contain maps from B will be returned.

      -C = if({equal}, A {#, contains} B > 2, A {:, contains} B)
      +C = if({equal}, A {#, contains} B > 2, A {:, contains} B)
       
      This expression selects all maps from A that temporally contains at least 2 maps from B and stores them in space time dataset C. The leading equal statement @@ -340,14 +340,14 @@

      EXAMPLES

      with space time dataset B and C and are earlier that Jan. 1. 2005 and store them in space time dataset D.
      -D = if(start_date(A) < "2005-01-01", A : B : C)
      +D = if(start_date(A) < "2005-01-01", A : B : C)
       
      Select all maps from space time dataset A which contains more than three maps of space time dataset B, else select maps from C with time stamps that are not equal to A and store them in space time dataset D.
      -D = if(A {#, contains} B > 3, A {:, contains} B, C)
      +D = if(A {#, contains} B > 3, A {:, contains} B, C)
       
      Select all maps from space time dataset B which are during the temporal diff --git a/temporal/t.vect.algebra/t.vect.algebra.html b/temporal/t.vect.algebra/t.vect.algebra.html index 48931efa302..3e47fc043e4 100644 --- a/temporal/t.vect.algebra/t.vect.algebra.html +++ b/temporal/t.vect.algebra/t.vect.algebra.html @@ -221,11 +221,11 @@

      Logical operators

      == equal != not equal - > greater than - >= greater than or equal - < less than - <= less than or equal - && and + > greater than + >= greater than or equal + < less than + <= less than or equal + && and || or
      @@ -280,27 +280,27 @@

      Comparison operator


      -This aggregation operator (| or &) define the behaviour if a map is related the more +This aggregation operator (| or &) define the behaviour if a map is related the more than one map, e.g for the topological relations 'contains'. -Should all (&) conditions for the related maps be true or is it sufficient to +Should all (&) conditions for the related maps be true or is it sufficient to have any (|) condition that is true. The resulting boolean value is then compared -to the first condition by the comparison operator (|| or &&). +to the first condition by the comparison operator (|| or &&). As default the aggregation operator is related to the comparison operator:
      Comparison operator -> aggregation operator:
      -|| -> | and && -> &
      +|| -> | and && -> &
       
      Examples:
       Condition 1 {||, equal, r} Condition 2
      -Condition 1 {&&, equal|during, l} Condition 2
      -Condition 1 {&&, equal|contains, |, l} Condition 2
      -Condition 1 {&&, equal|during, l} Condition 2 && Condition 3
      -Condition 1 {&&, equal|during, l} Condition 2 {&&,contains, |, r} Condition 3
      +Condition 1 {&&, equal|during, l} Condition 2
      +Condition 1 {&&, equal|contains, |, l} Condition 2
      +Condition 1 {&&, equal|during, l} Condition 2 && Condition 3
      +Condition 1 {&&, equal|during, l} Condition 2 {&&,contains, |, r} Condition 3
       

      Hash operator

      @@ -320,7 +320,7 @@

      Hash operator

      -C = if({equal}, A {#, contains} B > 2, A {:, contains} B)
      +C = if({equal}, A {#, contains} B > 2, A {:, contains} B)
       
      This expression selects all maps from A that temporally contains at least 2 @@ -365,7 +365,7 @@

      Spatial vector operators

        Boolean Name   Operator Meaning         Precedence   Correspondent function
       ----------------------------------------------------------------------------------
      - AND            &        Intersection          1      (v.overlay operator=and)
      + AND            &        Intersection          1      (v.overlay operator=and)
        OR             |        Union                 1      (v.overlay operator=or)
        DISJOINT OR    +        Disjoint union        1      (v.patch)
        XOR            ^        Symmetric difference  1      (v.overlay operator=xor)
      @@ -402,15 +402,15 @@ 

      Combinations of temporal, vector and select operators

      a1 of A:
      -C = A {&, contains} B --> c1 = a1 & b1 & b2 & b3
      +C = A {&, contains} B --> c1 = a1 & b1 & b2 & b3
       
      Keep attention that the aggregation behaviour is not symmetric:
      -C = B {&, during} A --> c1 = b1 & a1
      -                        c2 = b2 & a1
      -                        c3 = b3 & a1
      +C = B {&, during} A --> c1 = b1 & a1
      +                        c2 = b2 & a1
      +                        c3 = b3 & a1
       

      Examples:

      @@ -429,7 +429,7 @@

      Examples:

      vector dataset D with intersected time stamps.
      -D = buff_p(A, 1) {&,overlaps|overlapped|equal|during|contains,i} buff_p(B, 1)
      +D = buff_p(A, 1) {&,overlaps|overlapped|equal|during|contains,i} buff_p(B, 1)
       
      Select all maps from space time dataset B which are during the temporal diff --git a/temporal/t.vect.db.select/t.vect.db.select.html b/temporal/t.vect.db.select/t.vect.db.select.html index 939c0d49c41..17b12b861e7 100644 --- a/temporal/t.vect.db.select/t.vect.db.select.html +++ b/temporal/t.vect.db.select/t.vect.db.select.html @@ -26,7 +26,7 @@

      EXAMPLE

      before 1900-01-01.
      -t.vect.db.select input=shoreline column=DATE,SOURCE t_where="start_time < 1900"
      +t.vect.db.select input=shoreline column=DATE,SOURCE t_where="start_time < 1900"
       start_time|end_time|DATE|SOURCE
       1849|1873|01/01/1858|NOAA/USGS
       1849|1873|01/01/1857|NOAA/USGS
      diff --git a/temporal/t.vect.extract/t.vect.extract.html b/temporal/t.vect.extract/t.vect.extract.html
      index 6de3552d67d..c6b7716cf02 100644
      --- a/temporal/t.vect.extract/t.vect.extract.html
      +++ b/temporal/t.vect.extract/t.vect.extract.html
      @@ -10,7 +10,7 @@ 

      EXAMPLE

      with all the data later than 2000:
      -t.vect.extract input=shoreline where="start_time > 2000" \
      +t.vect.extract input=shoreline where="start_time > 2000" \
                      output=shoreline_later_2000 basename=new_shoreline
       
       t.info shoreline_later_2000@shoreline type=stvds
      @@ -61,7 +61,7 @@ 

      EXAMPLE

      | Command history: | # 2014-11-29 08:43:50 | t.vect.extract input="shoreline" - | where="start_time > 2000" output="shoreline_later_2000" + | where="start_time > 2000" output="shoreline_later_2000" | basename="new_shoreline" | # 2014-11-29 08:44:14 | t.support type="stvds" diff --git a/temporal/temporalintro.html b/temporal/temporalintro.html index e63dbf32c87..f19294b112a 100644 --- a/temporal/temporalintro.html +++ b/temporal/temporalintro.html @@ -6,13 +6,13 @@
      • Space time raster datasets (strds) are designed to manage raster map time series. Modules that process strds have the - naming prefix t.rast. + naming prefix t.rast.
      • Space time 3D raster datasets (str3ds) are designed to manage 3D raster map time series. Modules that process str3ds have - the naming prefix t.rast3d. + the naming prefix t.rast3d.
      • Space time vector datasets (stvds) are designed to manage vector map time series. Modules that process stvds have the - naming prefix t.vect. + naming prefix t.vect.
      These new data types can be managed, analyzed and processed with @@ -35,9 +35,9 @@

      Temporal data management in general

      map. This is critical if:
      • The user has no write access to the maps from other mapsets - he/she wants to register
      • + he/she wants to register
      • If registered maps are removed from other mapsets, the temporal - database will not be updated and will contain ghost maps
      • + database will not be updated and will contain ghost maps
      SQLite3 or PostgreSQL are supported as temporal database backends. diff --git a/vector/v.clean/v.clean.html b/vector/v.clean/v.clean.html index 6da10283703..f004731bbc8 100644 --- a/vector/v.clean/v.clean.html +++ b/vector/v.clean/v.clean.html @@ -184,10 +184,10 @@

      Remove small angles between lines at nodes

      run with several tools.

      - +
      -tool=rmsa +tool=rmsa

      diff --git a/vector/v.decimate/v.decimate.html b/vector/v.decimate/v.decimate.html index ceaae540ff1..e1bad03acbf 100644 --- a/vector/v.decimate/v.decimate.html +++ b/vector/v.decimate/v.decimate.html @@ -8,16 +8,16 @@

      DESCRIPTION

      Two main decimation techniques are:
      • count-based decimation (skip, preserve, offset - and limit options) -
      • grid-based decimation (-g flag) + and limit options)
      • +
      • grid-based decimation (-g flag)

      The grid-based decimation will remove points based on:

        -
      • similar z coordinates (-z flag and zdiff option) -
      • same categories (-c flag) -
      • count of points (-f flag and cell_limit option) +
      • similar z coordinates (-z flag and zdiff option)
      • +
      • same categories (-c flag)
      • +
      • count of points (-f flag and cell_limit option)

      @@ -49,8 +49,8 @@

      DESCRIPTION

      Besides decimation, point count can be reduced by applying different selections or filters, these are:
        -
      • selection by category (cats option) -
      • selection by z values (zrange option) +
      • selection by category (cats option)
      • +
      • selection by z values (zrange option)

      NOTES

      diff --git a/vector/v.edit/v.edit.html b/vector/v.edit/v.edit.html index 081deadf29c..3768e65ad4d 100644 --- a/vector/v.edit/v.edit.html +++ b/vector/v.edit/v.edit.html @@ -46,8 +46,8 @@

      Feature selection

      box, size defined by threshold)
    97. bbox - using bounding box
    98. polygon - using polygon (at least 3 coordinate pairs have to be set)
    99. -
    100. where - using where statement (attribute data) -
    101. query - special query (e.g. minimal vector line length) +
    102. where - using where statement (attribute data)
    103. +
    104. query - special query (e.g. minimal vector line length)
    105. Additional parameters for vector feature specification are: @@ -165,7 +165,7 @@

      Tool description

      and zbulk parameter. Also input vector map must be 3D.
    106. select - Print comma separated list of selected line - id's. No editing is done. + id's. No editing is done.
    107. EXAMPLES

      @@ -181,7 +181,7 @@

      Create new vector map

      Create new vector map and read data from file 'roads.txt':
      -v.out.ascii in=roads format=standard > roads.txt;
      +v.out.ascii in=roads format=standard > roads.txt;
       v.edit tool=create map=vectmap input=roads.txt
       
      diff --git a/vector/v.hull/v.hull.html b/vector/v.hull/v.hull.html index e77a028e905..68a85a8ab15 100644 --- a/vector/v.hull/v.hull.html +++ b/vector/v.hull/v.hull.html @@ -54,9 +54,9 @@

      REFERENCES

      • M. de Berg, M. van Kreveld, M. Overmars, O. Schwarzkopf, - (2000). Computational geometry, chapter 1.1, 2-8. + (2000). Computational geometry, chapter 1.1, 2-8.
      • J. O'Rourke, (1998). Computational Geometry in C (Second - Edition), chapter 4. + Edition), chapter 4.

      SEE ALSO

      diff --git a/vector/v.in.db/v.in.db.html b/vector/v.in.db/v.in.db.html index a51fd936f93..00a81365acc 100644 --- a/vector/v.in.db/v.in.db.html +++ b/vector/v.in.db/v.in.db.html @@ -114,7 +114,7 @@

      Creating a point map from DBF table for selected records only

       v.in.db driver=dbf  database=/home/user/tables/ table=pointsfile x=x y=y z=z \
      -        key=idcol out=dtmpoints where="x NOT NULL and z > 100"
      +        key=idcol out=dtmpoints where="x NOT NULL and z > 100"
       

      Creating a map from SQLite table

      diff --git a/vector/v.in.ogr/v.in.ogr.html b/vector/v.in.ogr/v.in.ogr.html index 3a461969663..2ab3ca938a6 100644 --- a/vector/v.in.ogr/v.in.ogr.html +++ b/vector/v.in.ogr/v.in.ogr.html @@ -306,22 +306,22 @@

      OpenStreetMap (OSM)

      is recommended because file sizes are smaller. The OSM driver will categorize features into 5 layers :
        -
      • points: "node" features that have significant tags attached. -
      • lines: "way" features that are recognized as non-area. +
      • points: "node" features that have significant tags attached.
      • +
      • lines: "way" features that are recognized as non-area.
      • multilinestrings: "relation" features that form a -multilinestring(type = 'multilinestring' or type = 'route'). +multilinestring(type = 'multilinestring' or type = 'route').
      • multipolygons: "relation" features that form a multipolygon (type = 'multipolygon' or type = 'boundary'), and "way" features that are -recognized as area. +recognized as area.
      • other_relations: "relation" features that do -not belong to any of the above layers. +not belong to any of the above layers.
      It is recommended to import one layer at a time, and to select features with the where option, e.g. to import roads, use
      -v.in.ogr where="highway <> ''"
      +v.in.ogr where="highway >< ''"
       
      i.e. the OSM tag highway must be set. diff --git a/vector/v.in.pdal/v.in.pdal.html b/vector/v.in.pdal/v.in.pdal.html index 51fc849a184..1042f8415bf 100644 --- a/vector/v.in.pdal/v.in.pdal.html +++ b/vector/v.in.pdal/v.in.pdal.html @@ -5,10 +5,10 @@

      DESCRIPTION

      v.in.pdal supports the following filters:
        -
      • 2D region filter -
      • Z coordinates filter -
      • return filter -
      • class filter +
      • 2D region filter
      • +
      • Z coordinates filter
      • +
      • return filter
      • +
      • class filter

      EXAMPLES

      @@ -28,7 +28,7 @@

      REFERENCES

      Processing UAV and lidar point clouds in GRASS GIS. XXIII ISPRS Congress 2016 [ISPRS Archives, - ResearchGate] + ResearchGate]

      SEE ALSO

      @@ -36,8 +36,8 @@

      SEE ALSO

      r.in.pdal, g.region, -v.vect.stats -v.in.ogr, +v.vect.stats, +v.in.ogr

      AUTHOR

      diff --git a/vector/v.info/v.info.html b/vector/v.info/v.info.html index 05e7903ac2d..19549d2744b 100644 --- a/vector/v.info/v.info.html +++ b/vector/v.info/v.info.html @@ -77,7 +77,7 @@

      Attribute columns for given layer

       v.info -c map=geology
       
      -Displaying column types/names for database connection of layer <1>:
      +Displaying column types/names for database connection of layer <1>:
       INTEGER|cat
       DOUBLE PRECISION|onemap_pro
       DOUBLE PRECISION|PERIMETER
      diff --git a/vector/v.kcv/v.kcv.html b/vector/v.kcv/v.kcv.html
      index 3e5b1b8a663..b82ae2d5bb7 100644
      --- a/vector/v.kcv/v.kcv.html
      +++ b/vector/v.kcv/v.kcv.html
      @@ -47,8 +47,8 @@ 

      EXAMPLES

      SEE ALSO

      -v.random, -g.region +v.random, +g.region

      AUTHORS

      diff --git a/vector/v.kernel/v.kernel.html b/vector/v.kernel/v.kernel.html index 3a5a0162129..b3a7ac51527 100644 --- a/vector/v.kernel/v.kernel.html +++ b/vector/v.kernel/v.kernel.html @@ -38,7 +38,7 @@

      EXAMPLES

      -Density of schools
      +Density of schools
      School density
      @@ -54,7 +54,7 @@

      REFERENCES

      method for networks, its computational method and a GIS-based tool. International Journal of Geographical Information Science, Vol 23(1), pp. 7-32.
      -DOI: 10.1080/13658810802475491 +DOI: 10.1080/13658810802475491

      SEE ALSO

      diff --git a/vector/v.label/v.label.html b/vector/v.label/v.label.html index 1f05cf845ff..3b42c98bd40 100644 --- a/vector/v.label/v.label.html +++ b/vector/v.label/v.label.html @@ -56,15 +56,15 @@

      Caution: The following information may be incomplete, out of date, and wrong may be specified as:
      -	lower left	(lower left corner of the text)
      -	lower right	(lower right corner of the text)
      -	lower center	(bottom center of the text)
      +    lower left    (lower left corner of the text)
      +    lower right    (lower right corner of the text)
      +    lower center    (bottom center of the text)
       
      -	upper left	(upper left corner of the text)
      -	upper right	(upper right corner of the text)
      -	upper center	(top center of the text)
      +    upper left    (upper left corner of the text)
      +    upper right    (upper right corner of the text)
      +    upper center    (top center of the text)
       
      -	center	(center of the text)
      +    center    (center of the text)
       
       
      @@ -97,7 +97,7 @@

      Caution: The following information may be incomplete, out of date, and wrong Alternatively fontsize can set the font size in normal font points. -
      TEXT COLOR: +
      TEXT COLOR:
      This selects the text color. If unspecified, the label's text is drawn in black, by default. The @@ -111,7 +111,7 @@

      Caution: The following information may be incomplete, out of date, and wrong magenta orange purple red violet white yellow
    108. As red, green, blue component values. (0-255)
      -for example: 128:100:200 +for example: 128:100:200
    109. -
    110. Specify "none" to suppress the lettering. +
    111. Specify "none" to suppress the lettering.
    112. @@ -203,7 +203,7 @@

      EXAMPLE

       cd $MAPSET/paint/labels/
      -cat file1 file2 file3 file4 > file_all
      +cat file1 file2 file3 file4 > file_all
       

      SEE ALSO

      diff --git a/vector/v.lrs/lrs.html b/vector/v.lrs/lrs.html index 027f72d44ce..edc517788cd 100644 --- a/vector/v.lrs/lrs.html +++ b/vector/v.lrs/lrs.html @@ -70,8 +70,8 @@

      Double referenced system

      must be entered to the system and it is done by optional MP attributes:
        -
      • end_mp - end MP -
      • end_off - end offset +
      • end_mp - end MP
      • +
      • end_off - end offset
      In this case original MP on km 4 will have these attributes:
      @@ -100,7 +100,7 @@ 

      Double referenced system

      LRS table structure

      - +
      @@ -116,12 +116,12 @@

      LRS table structure

      Available commands

        -
      • v.lrs.create to create a linear referencing system, -
      • v.lrs.label to create stationing on the LRS, +
      • v.lrs.create to create a linear referencing system,
      • +
      • v.lrs.label to create stationing on the LRS,
      • v.lrs.segment to create points/segments on LRS, - and + and
      • v.lrs.where to find line id and real km+offset -for given points in vector map using linear referencing system. +for given points in vector map using linear referencing system.

      Input lines for v.lrs.segment and v.lrs.label

      @@ -157,12 +157,12 @@

      NOTES

      Explanations of selected options:
      • llayer: vector layer in line map (usually 1; see vectorintro - for "layer" concept) + for "layer" concept)
      • player: vector layer in point map (usually 1; see vectorintro - for "layer" concept) -
      • rsdriver: Driver name for LRS table - DBMI SQL driver (dbf, pg, mysql, sqlite, etc) -
      • rsdatabase: Database name for LRS table - DBMI SQL database name (e.g., "lrsdb") -
      • rstable: Name of the LRS table - DBMI SQL table name (e.g., "streamslrs") + for "layer" concept)
      • +
      • rsdriver: Driver name for LRS table - DBMI SQL driver (dbf, pg, mysql, sqlite, etc)
      • +
      • rsdatabase: Database name for LRS table - DBMI SQL database name (e.g., "lrsdb")
      • +
      • rstable: Name of the LRS table - DBMI SQL table name (e.g., "streamslrs")

      SEE ALSO

      diff --git a/vector/v.net.alloc/v.net.alloc.html b/vector/v.net.alloc/v.net.alloc.html index 2a1f0efd1cb..81dcd45a9d4 100644 --- a/vector/v.net.alloc/v.net.alloc.html +++ b/vector/v.net.alloc/v.net.alloc.html @@ -190,8 +190,8 @@

      EXAMPLES

      v.db.update map=streets_hospitals column=FT_COST value=-1 where="ONE_WAY = 'TF'" # add costs to newly created lines -v.db.update map=streets_hospitals column=TF_COST value=0 where="cat > 49746" -v.db.update map=streets_hospitals column=FT_COST value=0 where="cat > 49746" +v.db.update map=streets_hospitals column=TF_COST value=0 where="cat > 49746" +v.db.update map=streets_hospitals column=FT_COST value=0 where="cat > 49746" # from centers v.net.alloc in=streets_hospitals out=streets_hospitals_alloc_from center_cats=1-10000 arc_column=FT_COST arc_backward_column=TF_COST diff --git a/vector/v.net.bridge/v.net.bridge.html b/vector/v.net.bridge/v.net.bridge.html index accd2484a33..7f871ae8a1a 100644 --- a/vector/v.net.bridge/v.net.bridge.html +++ b/vector/v.net.bridge/v.net.bridge.html @@ -26,12 +26,6 @@

      NOTES

      An articulation point in graph theory is an articulation node in GRASS terminology. -

      EXAMPLES

      - -
      -	TBD
      -
      -

      SEE ALSO

      diff --git a/vector/v.net.iso/v.net.iso.html b/vector/v.net.iso/v.net.iso.html index 28c92571cbb..edc3450e173 100644 --- a/vector/v.net.iso/v.net.iso.html +++ b/vector/v.net.iso/v.net.iso.html @@ -89,7 +89,7 @@

      Subdivision of a network using distance:

      #1 0 - < 1000 #2 1000 - < 2000 #3 2000 - < 5000 -#4 >= 5000 +#4 >= 5000 To display the result, run for example: @@ -162,7 +162,7 @@

      Subdivision of a network using traveling time:

      v.db.update map=myroads_net_iso_time layer=1 column=trav_time value="0 - 1" where="cat = 1" v.db.update map=myroads_net_iso_time layer=1 column=trav_time value="1 - 2" where="cat = 2" v.db.update map=myroads_net_iso_time layer=1 column=trav_time value="2 - 5" where="cat = 3" -v.db.update map=myroads_net_iso_time layer=1 column=trav_time value="> 5" where="cat = 4" +v.db.update map=myroads_net_iso_time layer=1 column=trav_time value="> 5" where="cat = 4" # colors # cats=1: blue v.db.update map=myroads_net_iso_time layer=1 column=GRASSRGB value="000:000:255" where="cat = 1" diff --git a/vector/v.net.path/v.net.path.html b/vector/v.net.path/v.net.path.html index 9af5842495a..60b26f3a591 100644 --- a/vector/v.net.path/v.net.path.html +++ b/vector/v.net.path/v.net.path.html @@ -24,8 +24,8 @@

      DESCRIPTION

      attached attribute table.

      Nodes can be

        -
      • piped into the program from file or from stdin, or -
      • defined in the graphical user interface ("enter values interactively"). +
      • piped into the program from file or from stdin, or
      • +
      • defined in the graphical user interface ("enter values interactively").
      The syntax is as follows: @@ -61,7 +61,7 @@

      DESCRIPTION

    113. 0 - OK, path found
    114. 1 - node is not reachable
    115. 2 - point of given category does not exist
    116. - +
    117. cost - travelling costs (on the network, not to/from network)
    118. fdist - the distance from first point to the network
    119. tdist - the distance from the network to second point
    120. diff --git a/vector/v.out.ascii/v.out.ascii.html b/vector/v.out.ascii/v.out.ascii.html index d8b6440b1c7..964df04b084 100644 --- a/vector/v.out.ascii/v.out.ascii.html +++ b/vector/v.out.ascii/v.out.ascii.html @@ -90,7 +90,7 @@

      Point mode

      Print also selected attributes:
      -v.out.ascii input=geodetic_pts format=point where="cat > 5 and cat <= 8" columns=GEOD_NAME
      +v.out.ascii input=geodetic_pts format=point where="cat > 5 and cat <= 8" columns=GEOD_NAME
       
       573638.06289275|271623.25042595|6|27 WC 6
       574416.81289275|274116.65542595|7|27 WC 7
      @@ -100,7 +100,7 @@ 

      Point mode

      To print all attributes type columns=*:
      -v.out.ascii input=geodetic_pts format=point where="cat > 5 and cat <= 8" columns=*
      +v.out.ascii input=geodetic_pts format=point where="cat > 5 and cat <= 8" columns=*
       573638.06289275|271623.25042595|6|6|0.00000000|0.00000000|6|6|27 WC 6|573638.09200000|271623.24100000|0.00|0|1.00000000|1.00000000
       574416.81289275|274116.65542595|7|7|0.00000000|0.00000000|7|7|27 WC 7|574416.84100000|274116.64900000|0.00|0|1.00000000|1.00000000
       575301.31189275|275303.81342595|8|8|0.00000000|0.00000000|8|8|27 WC 8|575301.30600000|275303.82600000|0.00|0|1.00000000|1.00000000
      diff --git a/vector/v.out.postgis/v.out.postgis.html b/vector/v.out.postgis/v.out.postgis.html
      index a95a7d3f21e..2307ce6a394 100644
      --- a/vector/v.out.postgis/v.out.postgis.html
      +++ b/vector/v.out.postgis/v.out.postgis.html
      @@ -258,7 +258,7 @@ 

      TODO

      REQUIREMENTS

        -
      • PostGIS 2.x or later for topological export (flag -l) +
      • PostGIS 2.x or later for topological export (flag -l)

      REFERENCES

      diff --git a/vector/v.out.vtk/v.out.vtk.html b/vector/v.out.vtk/v.out.vtk.html index 47bae357546..97d8c82c0e7 100644 --- a/vector/v.out.vtk/v.out.vtk.html +++ b/vector/v.out.vtk/v.out.vtk.html @@ -9,12 +9,12 @@

      NOTES

      The following vector types can be exported together in one VTK ascii file:
        -
      • point
      • -
      • line
      • -
      • centroid
      • -
      • boundary
      • -
      • area
      • -
      • face
      • +
      • point
      • +
      • line
      • +
      • centroid
      • +
      • boundary
      • +
      • area
      • +
      • face
      Category data (cat) for the selected vector type and layer will be written as scalar diff --git a/vector/v.overlay/v.overlay.html b/vector/v.overlay/v.overlay.html index 0077f2915f5..1066e8a1145 100644 --- a/vector/v.overlay/v.overlay.html +++ b/vector/v.overlay/v.overlay.html @@ -164,13 +164,13 @@

      Overlay operations: AND, OR, NOT, XOR

      -GRASS v.overlay: input polygons (1 and 2) +GRASS v.overlay: input polygons (1 and 2)
      Figure: v.overlay operations: original input polygons

      -GRASS v.overlay results: AND, OR, NOT, XOR operations +GRASS v.overlay results: AND, OR, NOT, XOR operations
      Figure: v.overlay results of AND, OR, NOT, XOR operations
      @@ -219,9 +219,9 @@

      Polygons overlaid with polygons

      -GRASS v.overlay: polygon to polygon union (input 1) -GRASS v.overlay: polygon to polygon union (input 2) -GRASS v.overlay: polygon to polygon union (result) +GRASS v.overlay: polygon to polygon union (input 1) +GRASS v.overlay: polygon to polygon union (input 2) +GRASS v.overlay: polygon to polygon union (result)
      Figure: v.overlay: Polygon union (right) of urban area (left) and Census 2000 (middle) areas (North Carolina dataset)
      @@ -247,7 +247,7 @@

      Lines overlaid with polygons

      GRASS v.overlay: Line to polygon clipping
      -
      AttributeTypeDescription
      rsid integer reference segment ID, unique in the table
      lcat integer category of the line in the LRS map
      +
      diff --git a/vector/v.proj/v.proj.html b/vector/v.proj/v.proj.html index 62d32bbd958..9910b7258b4 100644 --- a/vector/v.proj/v.proj.html +++ b/vector/v.proj/v.proj.html @@ -66,9 +66,9 @@

      REFERENCES

    121. Evenden, G.I. (1990) Cartographic projection procedures for the UNIX environment - a user's manual. USGS Open-File Report 90-284 (OF90-284.pdf) - See also there: Interim Report and 2nd Interim Report on Release 4, Evenden 1994). + See also there: Interim Report and 2nd Interim Report on Release 4, Evenden 1994).
    122. Richards, John A. (1993), Remote Sensing Digital Image Analysis, - Springer-Verlag, Berlin, 2nd edition. + Springer-Verlag, Berlin, 2nd edition.
    123. PROJ: Projection/datum support library. @@ -76,12 +76,12 @@

      REFERENCES

      Further reading

      SEE ALSO

      diff --git a/vector/v.random/v.random.html b/vector/v.random/v.random.html index f663a924cfe..5a9ce903d40 100644 --- a/vector/v.random/v.random.html +++ b/vector/v.random/v.random.html @@ -29,13 +29,13 @@

      Restriction to vector areas

      Attributes attached to restrict vector map are also transferred -if the layer parameter is defined > 0, +if the layer parameter is defined > 0, see example below.

      NOTES

      -Importantly, attributes will only be transferred if layer > 0 +Importantly, attributes will only be transferred if layer > 0 (e.g., layer=1).

      EXAMPLES

      @@ -110,7 +110,7 @@

      Generating random points in 3D

      -
      +
      Random points with different X, Y, and Z coordinates
      @@ -153,7 +153,7 @@

      Generating random adjacent areas

      -
      +
      Random adjacent areas from random points (here: used as centroids)
      @@ -227,7 +227,7 @@

      Stratified random sampling: Random sampling from vector map by attribute

      -
      +
      Random points only sampled in forested areas (stratified random sampling)
      @@ -250,7 +250,7 @@

      Stratified random sampling: Random sampling from vector map with spatial con -->

      -
      +
      Two random points sampled in each individual water body (stratified random sampling)
      diff --git a/vector/v.reclass/v.reclass.html b/vector/v.reclass/v.reclass.html index 4b206db4065..4fc3e1b81cd 100644 --- a/vector/v.reclass/v.reclass.html +++ b/vector/v.reclass/v.reclass.html @@ -10,9 +10,9 @@

      DESCRIPTION

      keyword value (separated by space) or comment beginning with '#' (hash). -Definition of new category begins with keyword cat followed +Definition of new category begins with keyword cat followed by the new category value. -Keyword where specifies SQL where condition. +Keyword where specifies SQL where condition.

      NOTES

      diff --git a/vector/v.rectify/v.rectify.html b/vector/v.rectify/v.rectify.html index 5f6ac718fd7..e2cd9d936bf 100644 --- a/vector/v.rectify/v.rectify.html +++ b/vector/v.rectify/v.rectify.html @@ -56,16 +56,16 @@

      Coordinate transformation and RMSE

      2D linear affine transformation (1st order transformation)

      -
      x' = a1 + b1 * x + c1 * y -
      y' = a2 + b2 * x + c2 * y +
      x' = a1 + b1 * x + c1 * y +
      y' = a2 + b2 * x + c2 * y

      3D linear affine transformation (1st order transformation)

      -
      x' = a1 + b1 * x + c1 * y + d1 * z -
      y' = a2 + b2 * x + c2 * y + d2 * z -
      z' = a3 + b3 * x + c3 * y + d3 * z +
      x' = a1 + b1 * x + c1 * y + d1 * z +
      y' = a2 + b2 * x + c2 * y + d2 * z +
      z' = a3 + b3 * x + c3 * y + d3 * z
      The a,b,c,d coefficients are determined by least squares regression @@ -111,7 +111,7 @@

      SEE ALSO

      m.transform, r.proj, v.proj, -v.transform, +v.transform

      diff --git a/vector/v.support/v.support.html b/vector/v.support/v.support.html index 706a04a12a7..1c81680e1ef 100644 --- a/vector/v.support/v.support.html +++ b/vector/v.support/v.support.html @@ -16,8 +16,8 @@

      EXAMPLE

      SEE ALSO

      - v.build, - v.info +v.build, +v.info

      AUTHOR

      diff --git a/vector/v.to.rast/v.to.rast.html b/vector/v.to.rast/v.to.rast.html index c5c4e7a54d2..4ebe8bf4922 100644 --- a/vector/v.to.rast/v.to.rast.html +++ b/vector/v.to.rast/v.to.rast.html @@ -27,15 +27,15 @@

      NOTES

      use options are:

      • -attr - read values from attribute table (default) +attr - read values from attribute table (default)
      • -cat - read values from category +cat - read values from category
      • -value - use value specified by value option +value - use value specified by value option
      • -z - use z coordinate (points or contours only) +z - use z coordinate (points or contours only)
      • -dir - line direction in degrees counterclockwise from east (lines only) +dir - line direction in degrees counterclockwise from east (lines only)

      The column parameter uses an existing column from the vector map database table as the category value in the output raster map. Existing table @@ -49,13 +49,13 @@

      NOTES

      Labeled areas and/or centroids will produce filled raster coverages with edges that straddle the original area boundary as long as the boundary is NOT labeled. -
      (Use v.category option=del type=boundary to remove.) +
      (Use v.category option=del type=boundary to remove.)
    124. Labeled lines and boundaries will produce lines of raster cells which touch the -original vector line. This tends to be more aggressive than area-only conversions. +original vector line. This tends to be more aggressive than area-only conversions.
    125. Points and orphaned centroids will be converted into single cells on the -resultant raster map. +resultant raster map.
    126. Line directions are given in degrees counterclockwise from east.

      Raster category labels are supported for all of use= except use=z. @@ -106,7 +106,7 @@

      Calculate slope along path

      -Slope along path
      +Slope along path
      Slope in degrees along bus route
      @@ -153,7 +153,7 @@

      Convert vector points to raster with raster cell binning

      -Number of schools per raster cell
      +Number of schools per raster cell
      Number of schools per raster cell
      diff --git a/vector/v.univar/v.univar.html b/vector/v.univar/v.univar.html index ee9c6f77582..3d886864421 100644 --- a/vector/v.univar/v.univar.html +++ b/vector/v.univar/v.univar.html @@ -27,8 +27,8 @@

      NOTES

    127. type=point: point distances are considered;
    128. type=line: line to line distances are considered;
    129. type=area: not supported, use type=centroid instead (and see - v.distance for calculating distances - between areas)
    130. + v.distance for calculating distances + between areas)

      EXAMPLES

      diff --git a/vector/v.vol.rst/v.vol.rst.html b/vector/v.vol.rst/v.vol.rst.html index 571a162162c..34699390602 100644 --- a/vector/v.vol.rst/v.vol.rst.html +++ b/vector/v.vol.rst/v.vol.rst.html @@ -68,7 +68,7 @@

      SQL support

       # preparation as in above example
      -v.vol.rst elevrand_3d wcol=soilrange elevation=soilrange zscale=100 where="soilrange > 3"
      +v.vol.rst elevrand_3d wcol=soilrange elevation=soilrange zscale=100 where="soilrange > 3"
       

      Cross validation procedure

      diff --git a/vector/v.voronoi/v.voronoi.html b/vector/v.voronoi/v.voronoi.html index e719c2c0038..c058a0587fd 100644 --- a/vector/v.voronoi/v.voronoi.html +++ b/vector/v.voronoi/v.voronoi.html @@ -10,7 +10,7 @@

      DESCRIPTION

      The -s flag can be used to extract the center line of areas or -skeletons of areas with thin >= 0. Smaller values for the +skeletons of areas with thin >= 0. Smaller values for the thin option will preserve more detail, while negative values will extract only the center line. diff --git a/vector/vectorintro.html b/vector/vectorintro.html index f19b9507f0d..90057d95e77 100644 --- a/vector/vectorintro.html +++ b/vector/vectorintro.html @@ -322,7 +322,7 @@

      Vector network analysis

    131. Network preparation and maintenance: v.net
    132. Shortest path: d.path and v.net.path
    133. -
    134. Shortest path between all pairs of nodes v.net.allpairs +
    135. Shortest path between all pairs of nodes v.net.allpairs
    136. Allocation of sources (create subnetworks, e.g. police station zones): v.net.alloc
    137. Iso-distances (from centers): v.net.iso
    138. From 115a3c4a2fa147eb5a9ff20390d4fb6c07d4ffa8 Mon Sep 17 00:00:00 2001 From: Arohan Ajit Date: Wed, 27 Nov 2024 17:11:49 -0500 Subject: [PATCH 11/36] raster: Fixed PEP8 - E721 for category.py (#4758) --- .flake8 | 1 - python/grass/pygrass/raster/category.py | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/.flake8 b/.flake8 index 1e8a6f880d7..55be053fc71 100644 --- a/.flake8 +++ b/.flake8 @@ -52,7 +52,6 @@ per-file-ignores = python/grass/pygrass/vector/__init__.py: E402 python/grass/pygrass/raster/__init__.py: E402 python/grass/pygrass/vector/__init__.py: E402 - python/grass/pygrass/raster/category.py: E721 python/grass/pygrass/utils.py: E402 python/grass/temporal/abstract_space_time_dataset.py: E722 python/grass/temporal/c_libraries_interface.py: E722 diff --git a/python/grass/pygrass/raster/category.py b/python/grass/pygrass/raster/category.py index 9c34bb8390f..9ace632d136 100644 --- a/python/grass/pygrass/raster/category.py +++ b/python/grass/pygrass/raster/category.py @@ -107,7 +107,7 @@ def __repr__(self): return "[{0}]".format(",\n ".join(cats)) def _chk_index(self, index): - if type(index) == str: + if isinstance(index, str): try: index = self.labels().index(index) except ValueError: @@ -115,7 +115,7 @@ def _chk_index(self, index): return index def _chk_value(self, value): - if type(value) == tuple: + if isinstance(value, tuple): length = len(value) if length == 2: label, min_cat = value From 796d14de7cdf2c462b0d84d14bcbe3f13437dd52 Mon Sep 17 00:00:00 2001 From: Arohan Ajit Date: Wed, 27 Nov 2024 20:14:40 -0500 Subject: [PATCH 12/36] wxGUI: Removed unused variable in location_wizard/dialogs.py (#4773) --- .flake8 | 1 - gui/wxpython/location_wizard/dialogs.py | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/.flake8 b/.flake8 index 55be053fc71..64200ff21e6 100644 --- a/.flake8 +++ b/.flake8 @@ -31,7 +31,6 @@ per-file-ignores = gui/wxpython/iclass/frame.py: F405, F403 gui/wxpython/iclass/g.gui.iclass.py: E501 gui/wxpython/iclass/statistics.py: F841, F405, F403 - gui/wxpython/location_wizard/dialogs.py: F841 gui/wxpython/location_wizard/wizard.py: E722 gui/wxpython/mapdisp/main.py: E722 gui/wxpython/mapdisp/test_mapdisp.py: E501 diff --git a/gui/wxpython/location_wizard/dialogs.py b/gui/wxpython/location_wizard/dialogs.py index 079fca1f6d4..74a59cca525 100644 --- a/gui/wxpython/location_wizard/dialogs.py +++ b/gui/wxpython/location_wizard/dialogs.py @@ -550,7 +550,7 @@ def OnValue(self, event): except ValueError as e: if len(event.GetString()) > 0 and event.GetString() != "-": - dlg = wx.MessageBox( + wx.MessageBox( parent=self, message=_("Invalid value: %s") % e, caption=_("Error"), From 231bb51e5e20e9ea9f631a6089f9baa99cdcd699 Mon Sep 17 00:00:00 2001 From: Arohan Ajit Date: Wed, 27 Nov 2024 20:14:56 -0500 Subject: [PATCH 13/36] wxGUI: Removed unused variable in mapdisp/statusbar.py (#4774) --- .flake8 | 1 - gui/wxpython/mapdisp/statusbar.py | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/.flake8 b/.flake8 index 64200ff21e6..4dc9e3a815b 100644 --- a/.flake8 +++ b/.flake8 @@ -34,7 +34,6 @@ per-file-ignores = gui/wxpython/location_wizard/wizard.py: E722 gui/wxpython/mapdisp/main.py: E722 gui/wxpython/mapdisp/test_mapdisp.py: E501 - gui/wxpython/mapdisp/statusbar.py: F841 gui/wxpython/mapswipe/g.gui.mapswipe.py: E501 gui/wxpython/mapwin/base.py: E722 gui/wxpython/mapwin/buffered.py: E722 diff --git a/gui/wxpython/mapdisp/statusbar.py b/gui/wxpython/mapdisp/statusbar.py index 8cf5c3b6ff7..ca69416af85 100644 --- a/gui/wxpython/mapdisp/statusbar.py +++ b/gui/wxpython/mapdisp/statusbar.py @@ -756,7 +756,7 @@ def Show(self): self.SetValue(e.message) # TODO: remove these excepts, they just hide errors, solve problems # differently - except TypeError as e: + except TypeError: self.SetValue("") except AttributeError: # during initialization MapFrame has no MapWindow From 26cf8cf479b2ca3e272383aa8da971152c3a53b3 Mon Sep 17 00:00:00 2001 From: ShubhamDesai <42180509+ShubhamDesai@users.noreply.github.com> Date: Thu, 28 Nov 2024 08:33:51 -0500 Subject: [PATCH 14/36] v.external.out: Fix Resource Leak issue in link.c (#4771) Fix Resource Leak issue --- vector/v.external.out/link.c | 1 + 1 file changed, 1 insertion(+) diff --git a/vector/v.external.out/link.c b/vector/v.external.out/link.c index 58e01b035f5..da5ab52a56b 100644 --- a/vector/v.external.out/link.c +++ b/vector/v.external.out/link.c @@ -100,6 +100,7 @@ void make_link(const char *dsn_opt, const char *format, char *option_str, G_verbose_message(_("Switched to PostGIS format")); G_free_key_value(key_val); + G_free(dsn); } int parse_option_pg(const char *option, char **key, char **value) From 378834b8c90bb770f8a40dd2ac6c371b4e083b03 Mon Sep 17 00:00:00 2001 From: Tomas Zigo <50632337+tmszi@users.noreply.github.com> Date: Thu, 28 Nov 2024 14:37:23 +0100 Subject: [PATCH 15/36] db/MySQL: fix HTML manual nested
        element position (#4778) * db/MySQL: fix HTML manual nested `
          ` element position Fix `HTMLParser()` class instance find nested `
            ` end element `
          ` error during compilation GRASS GIS source code: ``` Error (IndexError('pop from empty list')) ``` Problematic is nested `
            ` HTML element inside parent `
              ` element: ```
              ``` Expected nested `
                ` HTML element inside parent `
                  ` is nested position inside `
                • ` element. ```
                  ``` * Fix typo of key word --- db/drivers/mysql/grass-mysql.html | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/db/drivers/mysql/grass-mysql.html b/db/drivers/mysql/grass-mysql.html index c49c58407d9..f86dab367d3 100644 --- a/db/drivers/mysql/grass-mysql.html +++ b/db/drivers/mysql/grass-mysql.html @@ -28,13 +28,14 @@

                  Driver and database name

                  • Database name - in case of connection from localhost
                  • -
                  • String of comma separated list of kye=value options. - Supported options are:
                  • -
                      -
                    • dbname - database name
                    • -
                    • host - host name or IP address
                    • -
                    • port - server port number
                    • -
                    +
                  • String of comma separated list of key=value options. + Supported options are: +
                      +
                    • dbname - database name
                    • +
                    • host - host name or IP address
                    • +
                    • port - server port number
                    • +
                    +

                  Examples of connection parameters: From ede9e99392b527ea911d52a73834c6a1455779e2 Mon Sep 17 00:00:00 2001 From: ShubhamDesai <42180509+ShubhamDesai@users.noreply.github.com> Date: Thu, 28 Nov 2024 08:37:57 -0500 Subject: [PATCH 16/36] r.water.outlet: Fix Copy into buffer size issue (#4752) Fix Copy into buffer size issue --- raster/r.water.outlet/main.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/raster/r.water.outlet/main.c b/raster/r.water.outlet/main.c index 12135f500b7..ad060205d2f 100644 --- a/raster/r.water.outlet/main.c +++ b/raster/r.water.outlet/main.c @@ -75,8 +75,14 @@ int main(int argc, char *argv[]) G_get_window(&window); - strcpy(drain_name, opt.input->answer); - strcpy(basin_name, opt.output->answer); + if (G_strlcpy(drain_name, opt.input->answer, sizeof(drain_name)) >= + sizeof(drain_name)) { + G_fatal_error(_("Drain name <%s> is too long"), opt.input->answer); + } + if (G_strlcpy(basin_name, opt.output->answer, sizeof(basin_name)) >= + sizeof(basin_name)) { + G_fatal_error(_("Basin name <%s> is too long"), opt.output->answer); + } if (!G_scan_easting(opt.coords->answers[0], &E, G_projection())) G_fatal_error(_("Illegal east coordinate '%s'"), From fe71ce71edbdb29bbe031b9f8f33bfd1fa55c813 Mon Sep 17 00:00:00 2001 From: Nicklas Larsson Date: Thu, 28 Nov 2024 18:13:50 +0100 Subject: [PATCH 17/36] docs: RFC 10 on C++17 minimum standard support (#4566) --- doc/development/rfc/README.md | 2 ++ .../RFC10_cpp_language_standards_support.md | 35 +++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 doc/development/rfc/RFC10_cpp_language_standards_support.md diff --git a/doc/development/rfc/README.md b/doc/development/rfc/README.md index 590be34e169..5ee9ff1d805 100644 --- a/doc/development/rfc/README.md +++ b/doc/development/rfc/README.md @@ -16,6 +16,8 @@ A list of all GRASS GIS RFC documents, with status: - [RFC 7: Language Standards Support](language_standards_support.md) (Adopted) - [RFC 8: Python Language Support](python_language_support.md) (Adopted) - [RFC 9: Version Numbering](version_numbering.md) (Adopted) +- [RFC 10: C++17 Language Standard Support](RFC10_cpp17_language_standards_support.md) + (Adopted) - [RFC X: Release Policy](https://github.com/OSGeo/grass/pull/3673) (Draft) Status values: diff --git a/doc/development/rfc/RFC10_cpp_language_standards_support.md b/doc/development/rfc/RFC10_cpp_language_standards_support.md new file mode 100644 index 00000000000..f913c72b396 --- /dev/null +++ b/doc/development/rfc/RFC10_cpp_language_standards_support.md @@ -0,0 +1,35 @@ +# RFC 10: C++17 Standard Support for GRASS GIS 8.5 + +Author of the first draft: Nicklas Larsson + +Status: Motion passed, 28 November 2024 + +## Summary + +Set a new minimum build requirement for C++ code to support the C++17 standard. This +supersedes the [RFC 7: Language Standards Support](language_standards_support.md) +with respect to C++ standard support. + +## Background + +The RFC 7, which set the minimum supported C++ standard to C++11, was adopted 3.5 +years ago. At that time, although the latest versions of common compilers had +full support for C++17, neither the GRASS GIS code itself nor its dependencies +needed or required it. Now, compilers with full C++17 support are available also +in what may be considered stable or long-term-support systems. +Moreover, important dependencies such as PDAL 2.4 (released in March 2022) and +GDAL 3.9 (May 2024) require C++17 support, and so will the future release of +GEOS 3.14. + +## C++17 standard for GRASS GIS + +The time has come to increase the minimal C++ standard support for GRASS GIS +code to the C++17 standard. This enables the use of new C++17 features, if and when +so is needed or recommended. There is, however, no need to make any immediate +changes to current code. Continuous integration runners already compile in +C++17 mode, making sure nothing will be broken. + +## References on C++17 features and support + +- [Wikipedia](https://en.wikipedia.org/wiki/C%2B%2B17) +- [cppreference.com](https://en.cppreference.com/w/cpp/17) From 10f227853fa2faa03b7991e83b20ae9f2acee630 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hern=C3=A1n=20De=20Angelis?= <51515911+dhdeangelis@users.noreply.github.com> Date: Thu, 28 Nov 2024 19:28:29 +0100 Subject: [PATCH 18/36] docs: v.surf.bspline.html fix typo and minor touches (#4776) --- vector/v.surf.bspline/v.surf.bspline.html | 79 +++++++++++------------ 1 file changed, 38 insertions(+), 41 deletions(-) diff --git a/vector/v.surf.bspline/v.surf.bspline.html b/vector/v.surf.bspline/v.surf.bspline.html index 1d6199d189e..b2ed87a9573 100644 --- a/vector/v.surf.bspline/v.surf.bspline.html +++ b/vector/v.surf.bspline/v.surf.bspline.html @@ -2,79 +2,78 @@

                  DESCRIPTION

                  v.surf.bspline performs a bilinear/bicubic spline interpolation with Tykhonov regularization. The input is a 2D -or 3D vector points map. Values to interpolate can be the z +or 3D vector point layer. Values to interpolate can be the z values of 3D points or the values in a user-specified attribute column -in a 2D or 3D vector map. Output can be a raster -(raster_output) or vector (output) map. Optionally, a -"sparse point" vector map can be input which indicates the location +in a 2D or 3D vector layer. Output can be a raster +(raster_output) or vector (output) layer. Optionally, a +"sparse point" vector layer can be input which indicates the location of output vector points.

                  NOTES

                  From a theoretical perspective, the interpolating procedure takes place in two parts: the first is an estimate of the linear coefficients -of a spline function is derived from the observation points using a -least squares regression; the second is the computation of the -interpolated surface (or interpolated vector points). As used here, the +of a spline function, which is derived from the observation points using a +least squares regression. The second is the computation of the +interpolated surface or interpolated vector points. As used here, the splines are 2D piece-wise non-zero polynomial functions calculated -within a limited, 2D area. The length (in mapping units) of each spline +within a limited, 2D area. The length, in mapping units, of each spline step is defined by ew_step for the east-west direction and ns_step for the north-south direction. For optimal performance, the length of spline step should be no less than the distance between observation points. Each vector point observation is modeled as a linear function of the non-zero splines in the area around the observation. The least squares regression predicts the the coefficients -of these linear functions. Regularization, avoids the need to have one +of these linear functions. Regularization avoids the need to have one observation and one coefficient for each spline (in order to avoid instability).

                  With regularly distributed data points, a spline step corresponding to the maximum distance between two points in both the east and north -directions is sufficient. But often data points are not regularly -distributed and require statistial regularization or estimation. In +directions is sufficient. However, data points are often not regularly +distributed and require statistical regularization or estimation. In such cases, v.surf.bspline will attempt to minimize the gradient of bilinear splines or the curvature of bicubic splines in areas lacking -point observations. As a general rule, spline step length should be +point observations. As a general rule, the spline step length should be greater than the mean distance between observation points (twice the distance between points is a good starting point). Separate east-west and north-south spline step length arguments allows the user to account for some degree of anisotropy in the distribution of -observation points. Short spline step lengths - especially spline step -lengths that are less than the distance between observation points - +observation points. Short spline step lengths, especially spline step +lengths that are less than the distance between observation points, can greatly increase the processing time. -

                  Moreover, the maximum number of splines for each direction at each +

                  The maximum number of splines for each direction at each time is fixed, regardless of the spline step length. As the total -number of splines used increases (i.e., with small spline step +number of splines increases (i.e., with small spline step lengths), the region is automatically split into subregions for interpolation. Each subregion can contain no more than 150x150 splines. To avoid subregion boundary problems, subregions are created to partially overlap each other. A weighted mean of observations, based on point locations, is calculated within each subregion. -

                  The Tykhonov regularization parameter (lambda_i) acts to +

                  The Tykhonov regularization parameter, lambda_i, acts to smooth the interpolation. With a small lambda_i, the interpolated surface closely follows observation points; a larger value will produce a smoother interpolation. -

                  The input can be a 2D or 3D vector points map. If input is 3D +

                  The input can be a 2D or 3D point vector layer. If input is 3D and column is not given than z-coordinates are used for interpolation. Parameter column is required when input is 2D -vector map. - -

                  v.surf.bspline can produce a raster_output OR -a output (but NOT simultaneously). Note that topology is not -build for output vector point map. The topology can be built if -required by v.build. - -

                  If output is a vector points map and a sparse vector points -map is not specified, the output vector map will contain points at the -same locations as observation points in the input map, but the values -of the output points are interpolated values. If instead -a sparse vector points map is specified, the output vector map -will contain points at the same locations as the sparse vector map -points, and values will be those of the interpolated raster surface at -those points. +vector layer. + +

                  v.surf.bspline can produce raster (raster_output) OR +vector output but NOT simultaneously. Note that topology is not +built for output point vector layer. If required, the topology can be built +using v.build. + +

                  If output is a point vector layer and sparse is not specified, +the output vector layer will contain points at the +same locations as observation points in the input layer but the values +of the output points will be interpolated values. If a sparse +point vector layer is specified, the output vector layer will contain points +at the same locations as the sparse vector layer points. The values will be +those of the interpolated raster surface at those points.

                  A cross validation "leave-one-out" analysis is available to help to determine the optimal lambda_i value that produces an @@ -96,7 +95,7 @@

                  Basic interpolation

                  v.surf.bspline input=point_vector output=interpolate_surface method=bicubic -A bicubic spline interpolation will be done and a vector points map +A bicubic spline interpolation will be done and a point vector layer with estimated (i.e., interpolated) values will be created.

                  Basic interpolation and raster output with a longer spline step

                  @@ -106,7 +105,7 @@

                  Basic interpolation and raster output with a longer spline step

                  A bilinear spline interpolation will be done with a spline step length -of 25 map units. An interpolated raster map will be created at the +of 25 map units. An interpolated raster layer will be created at the current region resolution.

                  Estimation of lambda_i parameter with a cross validation process

                  @@ -121,8 +120,8 @@

                  Estimation on sparse points

                  v.surf.bspline input=point_vector sparse=sparse_points output=interpolate_surface -An output map of vector points will be created, corresponding to the -sparse vector map, with interpolated values. +An output layer of vector points will be created, corresponding to the +sparse vector layer, with interpolated values.

                  Using attribute values instead z-coordinates

                  @@ -144,13 +143,11 @@

                  North Carolina dataset example using z-coordinates for interpolation

                  KNOWN ISSUES

                  -Known issues: -

                  In order to avoid RAM memory problems, an auxiliary table is needed for recording some intermediate calculations. This requires -the GROUP BY SQL function is used, which is not supported by -the DBF driver. For this reason, vector map output +the GROUP BY SQL function is used. This function is not +supported by the DBF driver. For this reason, vector output (output) is not permitted with the DBF driver. There are no problems with the raster map output from the DBF driver. From 0122ff5a3183dfcc99ef8e74243b22e9d1a4e3a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C4=81ris=20Narti=C5=A1s?= Date: Thu, 28 Nov 2024 22:36:32 +0200 Subject: [PATCH 19/36] r.in.pdal: use different variable name to avoid confusion (#4782) --- raster/r.in.pdal/info.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/raster/r.in.pdal/info.cpp b/raster/r.in.pdal/info.cpp index 47ebd01fe28..cd8fd6483ff 100644 --- a/raster/r.in.pdal/info.cpp +++ b/raster/r.in.pdal/info.cpp @@ -115,9 +115,9 @@ void print_lasinfo(struct StringList *infiles) std::cout << "Point format: " << (int)h.pointFormat() << "\n"; std::cout << "Point offset: " << h.pointOffset() << "\n"; std::cout << "Point count: " << h.pointCount() << "\n"; - for (size_t i = 0; i < pdal::LasHeader::RETURN_COUNT; ++i) - std::cout << "Point count by return[" << i + 1 << "]: " - << const_cast(h).pointCountByReturn(i) + for (size_t k = 0; k < pdal::LasHeader::RETURN_COUNT; ++k) + std::cout << "Point count by return[" << k + 1 << "]: " + << const_cast(h).pointCountByReturn(k) << "\n"; std::cout << "Scales X/Y/Z: " << h.scaleX() << "/" << h.scaleY() << "/" << h.scaleZ() << "\n"; From b8fc5a21d099218488d903245078864c33a77198 Mon Sep 17 00:00:00 2001 From: Markus Neteler Date: Fri, 29 Nov 2024 00:12:28 +0100 Subject: [PATCH 20/36] manual: fix more broken HTML tags (#4781) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * manual: fix more broken HTML tags In order to obtain a good result when converting the HTML manual pages files to markdown, ideally clean HTML code is used (continuation of #4765). This PR fixes numerous broken HTML tags identified during a test run of [adding HTML validation with super-linter](https://github.com/echoix/grass/pull/303). For reference, see logs showing the errors at https://github.com/echoix/grass/actions/runs/12067630007/job/33651008404?pr=303 Fixes include: - complete selected ncomplete tag pairs (esp. `

                • `) - tabs replaced with white space - `<`, `>`, `&` replaced with their HTML representations * Apply suggestions from code review --------- Co-authored-by: Edouard Choinière <27212526+echoix@users.noreply.github.com> --- db/db.execute/db.execute.html | 2 +- db/drivers/ogr/grass-ogr.html | 2 +- general/g.parser/g.parser.html | 2 +- general/g.proj/g.proj.html | 2 +- gui/wxpython/gmodeler/g.gui.gmodeler.html | 18 +-- imagery/i.evapo.pm/i.evapo.pm.html | 2 +- imagery/imageryintro.html | 8 +- mswindows/external/rbatch/README.html | 2 +- ps/ps.map/ps.map.html | 4 +- .../grass/docs/_templates/oholosidebar.html | 6 +- raster/r.fill.dir/r.fill.dir.html | 2 +- raster/r.geomorphon/r.geomorphon.html | 2 +- raster/r.gwflow/r.gwflow.html | 2 +- raster/r.in.gdal/r.in.gdal.html | 2 +- raster/r.in.lidar/r.in.lidar.html | 4 +- raster/r.in.xyz/r.in.xyz.html | 2 +- .../r.li.edgedensity/r.li.edgedensity.html | 12 +- raster/r.li/r.li.html | 64 +++++----- .../r.li.patchdensity/r.li.patchdensity.html | 2 +- raster/r.profile/r.profile.html | 2 +- .../r.solute.transport.html | 2 +- raster/r.texture/r.texture.html | 2 +- raster/r.thin/r.thin.html | 2 +- raster/r.timestamp/r.timestamp.html | 4 +- raster/r.viewshed/r.viewshed.html | 6 +- raster3d/r3.flow/r3.flow.html | 6 +- raster3d/r3.in.ascii/r3.in.ascii.html | 2 +- raster3d/r3.showdspf/r3.showdspf.html | 6 +- .../r.mapcalc.simple/r.mapcalc.simple.html | 4 +- .../t.rast.accumulate/t.rast.accumulate.html | 110 +++++++++--------- temporal/t.rast.algebra/t.rast.algebra.html | 4 +- temporal/t.vect.algebra/t.vect.algebra.html | 2 +- temporal/temporalintro.html | 16 +-- vector/v.clean/v.clean.html | 2 +- vector/v.label/v.label.html | 6 +- vector/v.normal/v.normal.html | 30 ++--- vector/v.overlay/v.overlay.html | 2 +- vector/v.select/v.select.html | 2 +- vector/v.vect.stats/v.vect.stats.html | 6 +- 39 files changed, 178 insertions(+), 178 deletions(-) diff --git a/db/db.execute/db.execute.html b/db/db.execute/db.execute.html index 8700258b404..b8fcce41d7b 100644 --- a/db/db.execute/db.execute.html +++ b/db/db.execute/db.execute.html @@ -104,7 +104,7 @@

                  SEE ALSO

                  GRASS SQL interface - +

                  AUTHOR

                  diff --git a/db/drivers/ogr/grass-ogr.html b/db/drivers/ogr/grass-ogr.html index dbeca085ecf..c573f882288 100644 --- a/db/drivers/ogr/grass-ogr.html +++ b/db/drivers/ogr/grass-ogr.html @@ -7,7 +7,7 @@

                  SEE ALSO

                  SQL support in GRASS GIS - +

                  diff --git a/general/g.parser/g.parser.html b/general/g.parser/g.parser.html index aad91b22ec8..224049b46bb 100644 --- a/general/g.parser/g.parser.html +++ b/general/g.parser/g.parser.html @@ -523,7 +523,7 @@

                  Example code for Perl

                  if( $ARGV[0] ne '@ARGS_PARSED@' ){ my $arg = ""; - for (my $i=0; $i < @ARGV;$i++) { + for (my $i=0; $i < @ARGV;$i++) { $arg .= " $ARGV[$i] "; } system("$ENV{GISBASE}/bin/g.parser $0 $arg"); diff --git a/general/g.proj/g.proj.html b/general/g.proj/g.proj.html index 310ff2f1d10..b7f4f185af3 100644 --- a/general/g.proj/g.proj.html +++ b/general/g.proj/g.proj.html @@ -137,7 +137,7 @@

                  Create projection (PRJ) file

                  Create a '.prj' file in ESRI format corresponding to the current project:
                  -g.proj -wef > irish_grid.prj
                  +g.proj -wef > irish_grid.prj
                   

                  Read CRS from file

                  diff --git a/gui/wxpython/gmodeler/g.gui.gmodeler.html b/gui/wxpython/gmodeler/g.gui.gmodeler.html index 0bf5fa743b0..dae5aefea52 100644 --- a/gui/wxpython/gmodeler/g.gui.gmodeler.html +++ b/gui/wxpython/gmodeler/g.gui.gmodeler.html @@ -107,15 +107,15 @@

                  Components of models

                  Different model elements are shown in the figures below.
                    -
                  • (A) raster data: raster -
                  • (B) relation: relation -
                  • (C) GRASS module: module -
                  • (D) loop: loop -
                  • (E) database table: db -
                  • (F) 3D raster data: raster3D -
                  • (G) vector data: vector -
                  • (H) disabled GRASS module: module -
                  • (I) comment: comment +
                  • (A) raster data: raster
                  • +
                  • (B) relation: relation
                  • +
                  • (C) GRASS module: module
                  • +
                  • (D) loop: loop
                  • +
                  • (E) database table: db
                  • +
                  • (F) 3D raster data: raster3D
                  • +
                  • (G) vector data: vector
                  • +
                  • (H) disabled GRASS module: module
                  • +
                  • (I) comment: comment
                  diff --git a/imagery/i.evapo.pm/i.evapo.pm.html b/imagery/i.evapo.pm/i.evapo.pm.html index 542fe02263f..efa25bfed44 100644 --- a/imagery/i.evapo.pm/i.evapo.pm.html +++ b/imagery/i.evapo.pm/i.evapo.pm.html @@ -46,7 +46,7 @@

                  NOTES

                  REFERENCES

                  [1] Cannata M., 2006. - GIS embedded approach for Free & Open Source Hydrological Modelling. PhD thesis, Department of Geodesy and Geomatics, Polytechnic of Milan, Italy. + GIS embedded approach for Free & Open Source Hydrological Modelling. PhD thesis, Department of Geodesy and Geomatics, Polytechnic of Milan, Italy.

                  [2] Allen, R.G., L.S. Pereira, D. Raes, and M. Smith. 1998. Crop Evapotranspiration: Guidelines for computing crop water requirements. diff --git a/imagery/imageryintro.html b/imagery/imageryintro.html index bb5cf97ac0e..a2c11193033 100644 --- a/imagery/imageryintro.html +++ b/imagery/imageryintro.html @@ -76,10 +76,10 @@

                  Image processing in general

                  As a general rule in GRASS:
                  1. Raster/imagery output maps have their bounds and resolution equal - to those of the current region. + to those of the current region.
                  2. Raster/imagery input maps are automatically cropped/padded and rescaled (using nearest-neighbor resampling) to match the current - region. + region.
                  @@ -207,12 +207,12 @@

                  Image classification

                • Combined radiometric/geometric (segmentation based) classification:
                • Object-oriented classification: diff --git a/mswindows/external/rbatch/README.html b/mswindows/external/rbatch/README.html index 104405115b2..71335b5915a 100644 --- a/mswindows/external/rbatch/README.html +++ b/mswindows/external/rbatch/README.html @@ -2,7 +2,7 @@

                  Batchfiles

                  -Home Page: batchfiles home page. +Home Page: batchfiles home page.

                  Discuss: sqldf dicussion group is being used for discussion of this software too.

                  diff --git a/ps/ps.map/ps.map.html b/ps/ps.map/ps.map.html index 6b64fb2ca28..8245e909c21 100644 --- a/ps/ps.map/ps.map.html +++ b/ps/ps.map/ps.map.html @@ -48,7 +48,7 @@

                  NOTES

                  encoding, for example by using the iconv utility:
                  -iconv -f UTF-8 -t ISO_8859-1 utf_file > iso_file
                  +iconv -f UTF-8 -t ISO_8859-1 utf_file > iso_file
                   
                  @@ -1498,7 +1498,7 @@

                  EXAMPLES

                  - +

                  Figure: Result of for the a simple Wake county terrain and roads example

                  diff --git a/python/grass/docs/_templates/oholosidebar.html b/python/grass/docs/_templates/oholosidebar.html index 06dd9dc7540..bebce37732f 100644 --- a/python/grass/docs/_templates/oholosidebar.html +++ b/python/grass/docs/_templates/oholosidebar.html @@ -1,9 +1,9 @@

                  - +

                  - +

                  - +

                  diff --git a/raster/r.fill.dir/r.fill.dir.html b/raster/r.fill.dir/r.fill.dir.html index 94968a972c1..4e802ea28b7 100644 --- a/raster/r.fill.dir/r.fill.dir.html +++ b/raster/r.fill.dir/r.fill.dir.html @@ -133,7 +133,7 @@

                  EXAMPLES

                  r.univar -e elev_lid792_1m_diff # vectorize filled areas (here all fills are of positive value, see r.univar output) -r.mapcalc "elev_lid792_1m_fill_area = if(elev_lid792_1m_diff > 0.0, 1, null() )" +r.mapcalc "elev_lid792_1m_fill_area = if(elev_lid792_1m_diff > 0.0, 1, null() )" r.to.vect input=elev_lid792_1m_fill_area output=elev_lid792_1m_fill_area type=area # generate shaded terrain for better visibility of results diff --git a/raster/r.geomorphon/r.geomorphon.html b/raster/r.geomorphon/r.geomorphon.html index ac23aa85edc..57f744392bd 100644 --- a/raster/r.geomorphon/r.geomorphon.html +++ b/raster/r.geomorphon/r.geomorphon.html @@ -103,7 +103,7 @@

                  Forms represented by geomorphons:

                  profileformat
                  Format of the profile data: "json", "yaml" or "xml".
                  -

                  NOTE: parameters below are experimental. The usefulness of these parameters are currently under investigation.

                  +

                  NOTE: parameters below are experimental. The usefulness of these parameters are currently under investigation.

                  intensity
                  returns average difference between central cell of geomorphon and eight cells in visibility neighbourhood. This parameter shows local (as is visible) exposition/abasement of the form in the terrain.
                  diff --git a/raster/r.gwflow/r.gwflow.html b/raster/r.gwflow/r.gwflow.html index 2dbef39f74a..05dbe88d878 100644 --- a/raster/r.gwflow/r.gwflow.html +++ b/raster/r.gwflow/r.gwflow.html @@ -95,7 +95,7 @@

                  EXAMPLE

                  #now create the input raster maps for confined and unconfined aquifers r.mapcalc expression="phead = if(row() == 1 , 50, 40)" r.mapcalc expression="status = if(row() == 1 , 2, 1)" -r.mapcalc expression="well = if(row() == 20 && col() == 20 , -0.01, 0)" +r.mapcalc expression="well = if(row() == 20 && col() == 20 , -0.01, 0)" r.mapcalc expression="hydcond = 0.00025" r.mapcalc expression="recharge = 0" r.mapcalc expression="top_conf = 20.0" diff --git a/raster/r.in.gdal/r.in.gdal.html b/raster/r.in.gdal/r.in.gdal.html index 5af167a78e0..76de4e4eec5 100644 --- a/raster/r.in.gdal/r.in.gdal.html +++ b/raster/r.in.gdal/r.in.gdal.html @@ -162,7 +162,7 @@

                  Support for Ground Control Points

                  If the target project does not exist, a new project will be created matching the CRS definition of the GCPs. The target of the output group will be set to the new project, and -i.rectify can now be used without any further +i.rectify can now be used without any further preparation.

                  Some satellite images (e.g. NOAA/AVHRR, ENVISAT) can contain hundreds diff --git a/raster/r.in.lidar/r.in.lidar.html b/raster/r.in.lidar/r.in.lidar.html index bc68bf10410..f92ad0485a8 100644 --- a/raster/r.in.lidar/r.in.lidar.html +++ b/raster/r.in.lidar/r.in.lidar.html @@ -554,11 +554,11 @@

                  KNOWN ISSUES

                • The "nan" value (as defined in C language) can leak into coeff_var raster maps. Cause is unknown. Possible work-around is: r.null setnull=nan or - r.mapcalc 'no_nan = if(map == map, map, null())'. + r.mapcalc 'no_nan = if(map == map, map, null())'.
                • Only one method can be applied for a single run and multiple map output from a single run (e.g. method=string[,string,...] output=name[,name,...] - or n=string mean=string) is no supported. + or n=string mean=string) is no supported.
                • diff --git a/raster/r.in.xyz/r.in.xyz.html b/raster/r.in.xyz/r.in.xyz.html index bf20fffce88..70103d8e778 100644 --- a/raster/r.in.xyz/r.in.xyz.html +++ b/raster/r.in.xyz/r.in.xyz.html @@ -212,7 +212,7 @@

                  Import of x,y,z ASCII into DEM

                  diff --git a/raster/r.li/r.li.edgedensity/r.li.edgedensity.html b/raster/r.li/r.li.edgedensity/r.li.edgedensity.html
                  index 0bcdbd06ef8..a6d55592096 100644
                  --- a/raster/r.li/r.li.edgedensity/r.li.edgedensity.html
                  +++ b/raster/r.li/r.li.edgedensity/r.li.edgedensity.html
                  @@ -3,12 +3,12 @@ 

                  DESCRIPTION

                  r.li.edgedensity calculates:

                    -
                  • the density of all edges of patch type k - r.li.edgedensity formula 1 - , or -
                  • the density of all edges in the sampling area if k is - not specified, - r.li.edgedensity formula 2 +
                  • the density of all edges of patch type k +r.li.edgedensity formula 1 +, or
                  • +
                  • the density of all edges in the sampling area if k is +not specified, +r.li.edgedensity formula 2

                  with:

                    diff --git a/raster/r.li/r.li.html b/raster/r.li/r.li.html index 9786cba5bd1..a7685ca55ec 100644 --- a/raster/r.li/r.li.html +++ b/raster/r.li/r.li.html @@ -61,48 +61,50 @@

                    EXAMPLES

                    1. CREATE A NEW CONFIGURATION FILE -
                        -
                      1. run +
                          +
                        1. run
                          -  g.gui.rlisetup
                          -
                        2. -
                        3. The main g.gui.rlisetup window is displayed, click on "New"
                        4. -
                        5. The new configuration window is now displayed, enter the
                          - configuration file name (e.g., "my_conf", do not use absolute paths)

                          - - Now the new configuration window is displayed.
                          - Enter the configuration file name (e.g., "my_conf", do not use absolute paths)
                          - and the name of raster map (e.g., "geology").
                          - The other fields are not needed for this configuration.
                        6. -
                        7. Click on "Setup sampling frame", select "Whole map layer" and click "OK"
                        8. -
                        9. Click on "Setup sampling areas", select "Moving window" and click "OK"
                        10. -
                        11. Click on "Use keyboard to enter moving window dimension"
                        12. -
                        13. Select "Rectangle" and enter 5 in the "height" and "width" fields
                        14. -
                        15. Click on "Save settings"
                        16. -
                        17. Close the g.gui.rlisetup window
                        18. -
                        +g.gui.rlisetup +
                  +
                • +
                • The main g.gui.rlisetup window is displayed, click on "New"
                • +
                • The new configuration window is now displayed, enter the
                  +configuration file name (e.g., "my_conf", do not use absolute paths) +

                  +Now the new configuration window is displayed.
                  +Enter the configuration file name (e.g., "my_conf", do not use absolute paths)
                  +and the name of raster map (e.g., "geology").
                  +The other fields are not needed for this configuration.
                • +
                • Click on "Setup sampling frame", select "Whole map layer" and click "OK"
                • +
                • Click on "Setup sampling areas", select "Moving window" and click "OK"
                • +
                • Click on "Use keyboard to enter moving window dimension"
                • +
                • Select "Rectangle" and enter 5 in the "height" and "width" fields
                • +
                • Click on "Save settings"
                • +
                • Close the g.gui.rlisetup window
                • +
                • CALCULATE PATCHDENSITY INDEX -
                    -
                  1. set the region settings to the "geology" raster map: +
                      +
                    1. set the region settings to the "geology" raster map:
                      -  g.region raster=geology -p
                      -
                    2. - -
                    3. run r.li.patchdensity: +g.region raster=geology -p + +
                    4. +
                    5. run r.li.patchdensity:
                      -  r.li.patchdensity input=geology conf=my_conf out=patchdens
                      -
                    6. -
                    +r.li.patchdensity input=geology conf=my_conf out=patchdens + +
                  2. +
                • The resulting patch density is stored in "patchdens" raster map. You can verify the result for example with contour lines:
                  -  r.contour in=patchdens out=patchdens step=5
                  -  d.rast patchdens
                  -  d.vect -c patchdens
                  +r.contour in=patchdens out=patchdens step=5
                  +d.rast patchdens
                  +d.vect -c patchdens
                   
                  Note that if you want to run another index with the same area diff --git a/raster/r.li/r.li.patchdensity/r.li.patchdensity.html b/raster/r.li/r.li.patchdensity/r.li.patchdensity.html index 845617ee3e1..6b69f096131 100644 --- a/raster/r.li/r.li.patchdensity/r.li.patchdensity.html +++ b/raster/r.li/r.li.patchdensity/r.li.patchdensity.html @@ -44,7 +44,7 @@

                  EXAMPLES

                  g.region raster=landcover.30m -p # extract forested areas: r.category landcover.30m -r.mapcalc "forests = if(landcover.30m >= 41 && landcover.30m <= 43, 1, null())" +r.mapcalc "forests = if(landcover.30m >= 41 && landcover.30m <= 43, 1, null())" # patch density (7x7 moving window defined in g.gui.rlisetup): r.li.patchdensity forests conf=movwindow7 out=forests_p_dens7 diff --git a/raster/r.profile/r.profile.html b/raster/r.profile/r.profile.html index 42b15794838..8d413f9e930 100644 --- a/raster/r.profile/r.profile.html +++ b/raster/r.profile/r.profile.html @@ -88,7 +88,7 @@

                  Extraction of values along profile defined by coordinates (variant 1)

                  First create a points file with d.where

                  -d.where > saved.points
                  +d.where > saved.points
                   
                  Then pipe the points file into r.profile diff --git a/raster/r.solute.transport/r.solute.transport.html b/raster/r.solute.transport/r.solute.transport.html index 0046ac48f9f..ff77a35f419 100644 --- a/raster/r.solute.transport/r.solute.transport.html +++ b/raster/r.solute.transport/r.solute.transport.html @@ -108,7 +108,7 @@

                  EXAMPLE

                  gs.run_command("r.mapcalc", expression="phead = if(col() == 1 , 50, 40)") gs.run_command("r.mapcalc", expression="phead = if(col() ==200 , 45 + row()/40, phead)") gs.run_command("r.mapcalc", expression="status = if(col() == 1 || col() == 200 , 2, 1)") -gs.run_command("r.mapcalc", expression="well = if((row() == 50 && col() == 175) || (row() == 10 && col() == 135) , -0.001, 0)") +gs.run_command("r.mapcalc", expression="well = if((row() == 50 && col() == 175) || (row() == 10 && col() == 135) , -0.001, 0)") gs.run_command("r.mapcalc", expression="hydcond = 0.00005") gs.run_command("r.mapcalc", expression="recharge = 0") gs.run_command("r.mapcalc", expression="top_conf = 20") diff --git a/raster/r.texture/r.texture.html b/raster/r.texture/r.texture.html index d5f4c7bfbb9..c8034a0ed79 100644 --- a/raster/r.texture/r.texture.html +++ b/raster/r.texture/r.texture.html @@ -330,7 +330,7 @@

                  REFERENCES

                • Haralick, R. (May 1979). Statistical and structural approaches to texture, Proceedings of the IEEE, vol. 67, No.5, pp. 786-804
                • Hall-Beyer, M. (2007). The GLCM Tutorial Home Page - (Grey-Level Co-occurrence Matrix texture measurements). University of Calgary, Canada + (Grey-Level Co-occurrence Matrix texture measurements). University of Calgary, Canada
                • SEE ALSO

                  diff --git a/raster/r.thin/r.thin.html b/raster/r.thin/r.thin.html index b36ad3c5887..d62a5308a91 100644 --- a/raster/r.thin/r.thin.html +++ b/raster/r.thin/r.thin.html @@ -71,7 +71,7 @@

                  EXAMPLE

                  # create flow accumulation map r.watershed elevation=elevation accumulation=accum_50K thresh=50000 # extract streams from flow accumulation map -r.mapcalc "streams_from_flow = if(abs(accum_50K) >> 1000, 1, null())" +r.mapcalc "streams_from_flow = if(abs(accum_50K) > 1000, 1, null())" # skeletonize map r.thin streams_from_flow out=streams_thin diff --git a/raster/r.timestamp/r.timestamp.html b/raster/r.timestamp/r.timestamp.html index 59a73e3edb1..89ba6ea569a 100644 --- a/raster/r.timestamp/r.timestamp.html +++ b/raster/r.timestamp/r.timestamp.html @@ -21,8 +21,8 @@

                  TIMESTAMP FORMAT

                  There are two types of datetime values:

                    -
                  • absolute and -
                  • relative. +
                  • absolute and
                  • +
                  • relative.
                  Absolute values specify exact dates and/or times. Relative values diff --git a/raster/r.viewshed/r.viewshed.html b/raster/r.viewshed/r.viewshed.html index ab8e782122b..cc371b781cf 100644 --- a/raster/r.viewshed/r.viewshed.html +++ b/raster/r.viewshed/r.viewshed.html @@ -161,10 +161,10 @@

                  The algorithm

                  -

                  Figure: v.overlay: Line to polygon clipping
                  +
                  - - + + diff --git a/raster3d/r3.flow/r3.flow.html b/raster3d/r3.flow/r3.flow.html index 7a7c60fd21d..5b1fcf26a3f 100644 --- a/raster3d/r3.flow/r3.flow.html +++ b/raster3d/r3.flow/r3.flow.html @@ -54,9 +54,9 @@

                  EXAMPLES

                  g.region res=25 res3=25 t=100 b=0 n=1000 s=0 w=0 e=1000 -p3 # now create the input raster maps for a confined aquifer -r3.mapcalc expression="phead = if(row() == 1 && depth() == 4, 50, 40)" -r3.mapcalc expression="status = if(row() == 1 && depth() == 4, 2, 1)" -r3.mapcalc expression="well = if(row() == 20 && col() == 20 && depth() == 2, -0.25, 0)" +r3.mapcalc expression="phead = if(row() == 1 && depth() == 4, 50, 40)" +r3.mapcalc expression="status = if(row() == 1 && depth() == 4, 2, 1)" +r3.mapcalc expression="well = if(row() == 20 && col() == 20 && depth() == 2, -0.25, 0)" r3.mapcalc expression="hydcond = 0.00025" r3.mapcalc expression="syield = 0.0001" r.mapcalc expression="recharge = 0.0" diff --git a/raster3d/r3.in.ascii/r3.in.ascii.html b/raster3d/r3.in.ascii/r3.in.ascii.html index 5154feb36d6..6d20844e70c 100644 --- a/raster3d/r3.in.ascii/r3.in.ascii.html +++ b/raster3d/r3.in.ascii/r3.in.ascii.html @@ -17,7 +17,7 @@

                  NOTES

                  ordering in the ASCII input file:

                  -
                  [SDF][SDF][SDF][SDF]
                  The sweep-line.
                  +
                  diff --git a/raster3d/r3.showdspf/r3.showdspf.html b/raster3d/r3.showdspf/r3.showdspf.html index cd2b91ecf65..d42bd61494f 100644 --- a/raster3d/r3.showdspf/r3.showdspf.html +++ b/raster3d/r3.showdspf/r3.showdspf.html @@ -72,14 +72,14 @@

                  Hints:

                  the mouse pointer in the graphics window and drag with the left mouse to rotate the bounding box. To zoom in and out, drag right or left with the middle mouse. When satisfied with the new viewing -position, click with the right mouse. +position, click with the right mouse.
                • To quickly view a series of isosurfaces, enter a series of + or - -characters, i.e. +++++++ +characters, i.e. +++++++
                • Scripts using above commands on separate lines may be directed to r3.showdspf as standard input. -Use the # sign as the first character on a line to indicate a comment. +Use the # sign as the first character on a line to indicate a comment.
                • EXAMPLES

                  diff --git a/scripts/r.mapcalc.simple/r.mapcalc.simple.html b/scripts/r.mapcalc.simple/r.mapcalc.simple.html index 81463659120..47481b58836 100644 --- a/scripts/r.mapcalc.simple/r.mapcalc.simple.html +++ b/scripts/r.mapcalc.simple/r.mapcalc.simple.html @@ -28,7 +28,7 @@

                  NOTES

                • The input raster map names and the output map raster name are separate from the expression (formula) which uses generic variable names (A, B, C, ...).
                • -
                • The output raster name is not included in the expression. +
                • The output raster name is not included in the expression.
                • The expression is expected to be a single short one liner without the function eval().
                • @@ -47,7 +47,7 @@

                  NOTES

                • Option names for each map are just one letter (not amap, etc.).
                • Output option name is output as for other modules (not outfile).
                • -
                • Raster map names can be optionally quoted (the -q flag). +
                • Raster map names can be optionally quoted (the -q flag).
                • There is no expert mode (which was just running r.mapcalc).
                • The expression option is first, so it is possible to diff --git a/temporal/t.rast.accumulate/t.rast.accumulate.html b/temporal/t.rast.accumulate/t.rast.accumulate.html index 09eef592a81..52c37b5e9f0 100644 --- a/temporal/t.rast.accumulate/t.rast.accumulate.html +++ b/temporal/t.rast.accumulate/t.rast.accumulate.html @@ -70,7 +70,7 @@

                  EXAMPLE

                  # Import the temperature data t.rast.import input=temperature_mean_1990_2000_daily_celsius.tar.gz \ - output=temperature_mean_1990_2000_daily_celsius directory=/tmp + output=temperature_mean_1990_2000_daily_celsius directory=/tmp # We need to set the region correctly g.region -p raster=`t.rast.list input=temperature_mean_1990_2000_daily_celsius column=name | tail -1` @@ -93,9 +93,9 @@

                  EXAMPLE

                  # a granularity of one day. Base temperature is 10°C, upper limit is 30°C. # Hence the accumulation starts at 10°C and does not accumulate values above 30°C. t.rast.accumulate input="temperature_mean_1990_2000_daily_celsius" \ - output="temperature_mean_1990_2000_daily_celsius_accumulated_10_30" \ - limits="10,30" start="1990-01-01" stop="2000-01-01" cycle="12 months" \ - basename="temp_acc_daily_10_30" method="bedd" + output="temperature_mean_1990_2000_daily_celsius_accumulated_10_30" \ + limits="10,30" start="1990-01-01" stop="2000-01-01" cycle="12 months" \ + basename="temp_acc_daily_10_30" method="bedd" ############################################################################# #### ACCUMULATION PATTERN DETECTION ######################################### @@ -104,18 +104,18 @@

                  EXAMPLE

                  # First cycle at 325°C - 427°C GDD t.rast.accdetect input=temperature_mean_1990_2000_daily_celsius_accumulated_10_30@PERMANENT \ - occ=leafhopper_occurrence_c1_1990_2000 start="1990-01-01" stop="2000-01-01" \ - cycle="12 months" range=325,427 basename=lh_c1 indicator=leafhopper_indicator_c1_1990_2000 + occ=leafhopper_occurrence_c1_1990_2000 start="1990-01-01" stop="2000-01-01" \ + cycle="12 months" range=325,427 basename=lh_c1 indicator=leafhopper_indicator_c1_1990_2000 # Second cycle at 685°C - 813°C GDD t.rast.accdetect input=temperature_mean_1990_2000_daily_celsius_accumulated_10_30@PERMANENT \ - occ=leafhopper_occurrence_c2_1990_2000 start="1990-01-01" stop="2000-01-01" \ - cycle="12 months" range=685,813 basename=lh_c2 indicator=leafhopper_indicator_c2_1990_2000 + occ=leafhopper_occurrence_c2_1990_2000 start="1990-01-01" stop="2000-01-01" \ + cycle="12 months" range=685,813 basename=lh_c2 indicator=leafhopper_indicator_c2_1990_2000 # Third cycle at 1047°C - 1179°C GDD t.rast.accdetect input=temperature_mean_1990_2000_daily_celsius_accumulated_10_30@PERMANENT \ - occ=leafhopper_occurrence_c3_1990_2000 start="1990-01-01" stop="2000-01-01" \ - cycle="12 months" range=1047,1179 basename=lh_c3 indicator=leafhopper_indicator_c3_1990_2000 + occ=leafhopper_occurrence_c3_1990_2000 start="1990-01-01" stop="2000-01-01" \ + cycle="12 months" range=1047,1179 basename=lh_c3 indicator=leafhopper_indicator_c3_1990_2000 ############################################################################# @@ -124,34 +124,34 @@

                  EXAMPLE

                  # Extract the areas that have full cycles t.rast.aggregate input=leafhopper_indicator_c1_1990_2000 gran="1 year" \ - output=leafhopper_cycle_1_1990_2000_yearly method=maximum basename=li_c1 + output=leafhopper_cycle_1_1990_2000_yearly method=maximum basename=li_c1 t.rast.mapcalc input=leafhopper_cycle_1_1990_2000_yearly basename=lh_clean_c1 \ - output=leafhopper_cycle_1_1990_2000_yearly_clean \ - expression="if(leafhopper_cycle_1_1990_2000_yearly == 3, 1, null())" + output=leafhopper_cycle_1_1990_2000_yearly_clean \ + expression="if(leafhopper_cycle_1_1990_2000_yearly == 3, 1, null())" t.rast.aggregate input=leafhopper_indicator_c2_1990_2000 gran="1 year" \ - output=leafhopper_cycle_2_1990_2000_yearly method=maximum basename=li_c2 + output=leafhopper_cycle_2_1990_2000_yearly method=maximum basename=li_c2 t.rast.mapcalc input=leafhopper_cycle_2_1990_2000_yearly basename=lh_clean_c2 \ - output=leafhopper_cycle_2_1990_2000_yearly_clean \ - expression="if(leafhopper_cycle_2_1990_2000_yearly == 3, 2, null())" + output=leafhopper_cycle_2_1990_2000_yearly_clean \ + expression="if(leafhopper_cycle_2_1990_2000_yearly == 3, 2, null())" t.rast.aggregate input=leafhopper_indicator_c3_1990_2000 gran="1 year" \ - output=leafhopper_cycle_3_1990_2000_yearly method=maximum basename=li_c3 + output=leafhopper_cycle_3_1990_2000_yearly method=maximum basename=li_c3 t.rast.mapcalc input=leafhopper_cycle_3_1990_2000_yearly basename=lh_clean_c3 \ - output=leafhopper_cycle_3_1990_2000_yearly_clean \ - expression="if(leafhopper_cycle_3_1990_2000_yearly == 3, 3, null())" + output=leafhopper_cycle_3_1990_2000_yearly_clean \ + expression="if(leafhopper_cycle_3_1990_2000_yearly == 3, 3, null())" t.rast.mapcalc input=leafhopper_cycle_1_1990_2000_yearly_clean,leafhopper_cycle_2_1990_2000_yearly_clean,leafhopper_cycle_3_1990_2000_yearly_clean \ - basename=lh_cleann_all_cycles \ - output=leafhopper_all_cycles_1990_2000_yearly_clean \ - expression="if(isnull(leafhopper_cycle_3_1990_2000_yearly_clean), \ - if(isnull(leafhopper_cycle_2_1990_2000_yearly_clean), \ - if(isnull(leafhopper_cycle_1_1990_2000_yearly_clean), \ - null() ,1),2),3)" + basename=lh_cleann_all_cycles \ + output=leafhopper_all_cycles_1990_2000_yearly_clean \ + expression="if(isnull(leafhopper_cycle_3_1990_2000_yearly_clean), \ + if(isnull(leafhopper_cycle_2_1990_2000_yearly_clean), \ + if(isnull(leafhopper_cycle_1_1990_2000_yearly_clean), \ + null() ,1),2),3)" cat > color.table << EOF 3 yellow @@ -170,35 +170,35 @@

                  EXAMPLE

                  # Extract the duration in days of the first cycle t.rast.aggregate input=leafhopper_occurrence_c1_1990_2000 gran="1 year" \ - output=leafhopper_min_day_c1_1990_2000 method=minimum basename=occ_min_day_c1 + output=leafhopper_min_day_c1_1990_2000 method=minimum basename=occ_min_day_c1 t.rast.aggregate input=leafhopper_occurrence_c1_1990_2000 gran="1 year" \ - output=leafhopper_max_day_c1_1990_2000 method=maximum basename=occ_max_day_c1 + output=leafhopper_max_day_c1_1990_2000 method=maximum basename=occ_max_day_c1 t.rast.mapcalc input=leafhopper_min_day_c1_1990_2000,leafhopper_max_day_c1_1990_2000 \ - basename=occ_duration_c1 \ - output=leafhopper_duration_c1_1990_2000 \ - expression="leafhopper_max_day_c1_1990_2000 - leafhopper_min_day_c1_1990_2000" + basename=occ_duration_c1 \ + output=leafhopper_duration_c1_1990_2000 \ + expression="leafhopper_max_day_c1_1990_2000 - leafhopper_min_day_c1_1990_2000" # Extract the duration in days of the second cycle t.rast.aggregate input=leafhopper_occurrence_c2_1990_2000 gran="1 year" \ - output=leafhopper_min_day_c2_1990_2000 method=minimum basename=occ_min_day_c2 + output=leafhopper_min_day_c2_1990_2000 method=minimum basename=occ_min_day_c2 t.rast.aggregate input=leafhopper_occurrence_c2_1990_2000 gran="1 year" \ - output=leafhopper_max_day_c2_1990_2000 method=maximum basename=occ_max_day_c2 + output=leafhopper_max_day_c2_1990_2000 method=maximum basename=occ_max_day_c2 t.rast.mapcalc input=leafhopper_min_day_c2_1990_2000,leafhopper_max_day_c2_1990_2000 \ - basename=occ_duration_c2 \ - output=leafhopper_duration_c2_1990_2000 \ - expression="leafhopper_max_day_c2_1990_2000 - leafhopper_min_day_c2_1990_2000" + basename=occ_duration_c2 \ + output=leafhopper_duration_c2_1990_2000 \ + expression="leafhopper_max_day_c2_1990_2000 - leafhopper_min_day_c2_1990_2000" # Extract the duration in days of the third cycle t.rast.aggregate input=leafhopper_occurrence_c3_1990_2000 gran="1 year" \ - output=leafhopper_min_day_c3_1990_2000 method=minimum basename=occ_min_day_c3 + output=leafhopper_min_day_c3_1990_2000 method=minimum basename=occ_min_day_c3 t.rast.aggregate input=leafhopper_occurrence_c3_1990_2000 gran="1 year" \ - output=leafhopper_max_day_c3_1990_2000 method=maximum basename=occ_max_day_c3 + output=leafhopper_max_day_c3_1990_2000 method=maximum basename=occ_max_day_c3 t.rast.mapcalc input=leafhopper_min_day_c3_1990_2000,leafhopper_max_day_c3_1990_2000 \ - basename=occ_duration_c3 \ - output=leafhopper_duration_c3_1990_2000 \ - expression="leafhopper_max_day_c3_1990_2000 - leafhopper_min_day_c3_1990_2000" + basename=occ_duration_c3 \ + output=leafhopper_duration_c3_1990_2000 \ + expression="leafhopper_max_day_c3_1990_2000 - leafhopper_min_day_c3_1990_2000" t.rast.colors input=leafhopper_duration_c1_1990_2000 color=rainbow t.rast.colors input=leafhopper_duration_c2_1990_2000 color=rainbow @@ -212,33 +212,33 @@

                  EXAMPLE

                  # First cycle t.rast.aggregate input=leafhopper_indicator_c1_1990_2000 gran="1 month" \ - output=leafhopper_indi_min_month_c1_1990_2000 method=minimum basename=occ_indi_min_month_c1 + output=leafhopper_indi_min_month_c1_1990_2000 method=minimum basename=occ_indi_min_month_c1 t.rast.aggregate input=leafhopper_indicator_c1_1990_2000 gran="1 month" \ - output=leafhopper_indi_max_month_c1_1990_2000 method=maximum basename=occ_indi_max_month_c1 + output=leafhopper_indi_max_month_c1_1990_2000 method=maximum basename=occ_indi_max_month_c1 t.rast.mapcalc input=leafhopper_indi_min_month_c1_1990_2000,leafhopper_indi_max_month_c1_1990_2000 \ - basename=indicator_monthly_c1 \ - output=leafhopper_monthly_indicator_c1_1990_2000 \ - expression="if(leafhopper_indi_min_month_c1_1990_2000 == 1, 1, if(leafhopper_indi_max_month_c1_1990_2000 == 3, 3, 2))" + basename=indicator_monthly_c1 \ + output=leafhopper_monthly_indicator_c1_1990_2000 \ + expression="if(leafhopper_indi_min_month_c1_1990_2000 == 1, 1, if(leafhopper_indi_max_month_c1_1990_2000 == 3, 3, 2))" # Second cycle t.rast.aggregate input=leafhopper_indicator_c2_1990_2000 gran="1 month" \ - output=leafhopper_indi_min_month_c2_1990_2000 method=minimum basename=occ_indi_min_month_c2 + output=leafhopper_indi_min_month_c2_1990_2000 method=minimum basename=occ_indi_min_month_c2 t.rast.aggregate input=leafhopper_indicator_c2_1990_2000 gran="1 month" \ - output=leafhopper_indi_max_month_c2_1990_2000 method=maximum basename=occ_indi_max_month_c2 + output=leafhopper_indi_max_month_c2_1990_2000 method=maximum basename=occ_indi_max_month_c2 t.rast.mapcalc input=leafhopper_indi_min_month_c2_1990_2000,leafhopper_indi_max_month_c2_1990_2000 \ - basename=indicator_monthly_c2 \ - output=leafhopper_monthly_indicator_c2_1990_2000 \ - expression="if(leafhopper_indi_min_month_c2_1990_2000 == 1, 1, if(leafhopper_indi_max_month_c2_1990_2000 == 3, 3, 2))" + basename=indicator_monthly_c2 \ + output=leafhopper_monthly_indicator_c2_1990_2000 \ + expression="if(leafhopper_indi_min_month_c2_1990_2000 == 1, 1, if(leafhopper_indi_max_month_c2_1990_2000 == 3, 3, 2))" # Third cycle t.rast.aggregate input=leafhopper_indicator_c3_1990_2000 gran="1 month" \ - output=leafhopper_indi_min_month_c3_1990_2000 method=minimum basename=occ_indi_min_month_c3 + output=leafhopper_indi_min_month_c3_1990_2000 method=minimum basename=occ_indi_min_month_c3 t.rast.aggregate input=leafhopper_indicator_c3_1990_2000 gran="1 month" \ - output=leafhopper_indi_max_month_c3_1990_2000 method=maximum basename=occ_indi_max_month_c3 + output=leafhopper_indi_max_month_c3_1990_2000 method=maximum basename=occ_indi_max_month_c3 t.rast.mapcalc input=leafhopper_indi_min_month_c3_1990_2000,leafhopper_indi_max_month_c3_1990_2000 \ - basename=indicator_monthly_c3 \ - output=leafhopper_monthly_indicator_c3_1990_2000 \ - expression="if(leafhopper_indi_min_month_c3_1990_2000 == 1, 1, if(leafhopper_indi_max_month_c3_1990_2000 == 3, 3, 2))" + basename=indicator_monthly_c3 \ + output=leafhopper_monthly_indicator_c3_1990_2000 \ + expression="if(leafhopper_indi_min_month_c3_1990_2000 == 1, 1, if(leafhopper_indi_max_month_c3_1990_2000 == 3, 3, 2))" cat > color.table << EOF 3 red diff --git a/temporal/t.rast.algebra/t.rast.algebra.html b/temporal/t.rast.algebra/t.rast.algebra.html index 27d9489b7dc..1944d63baa3 100644 --- a/temporal/t.rast.algebra/t.rast.algebra.html +++ b/temporal/t.rast.algebra/t.rast.algebra.html @@ -497,7 +497,7 @@

                  Sum of space-time raster datasets

                  Sum maps from STRDS A with maps from STRDS B which have equal time stamps and are temporally before Jan. 1. 2005 and store them in STRDS D:
                  -D = if(start_date(A) < "2005-01-01", A + B)
                  +D = if(start_date(A) < "2005-01-01", A + B)
                   
                  Create the sum of all maps from STRDS A and B that have equal time stamps @@ -528,7 +528,7 @@

                  Selection of raster cells with temporal topology relation

                  Same expression with explicit definition of the temporal topology relation and temporal operators:
                  -C = if({equal}, A > 100 && A < 1600 {&&,equal} td(A) > 30, B)
                  +C = if({equal}, A > 100 && A < 1600 {&&,equal} td(A) > 30, B)
                   

                  Conditional computation

                  diff --git a/temporal/t.vect.algebra/t.vect.algebra.html b/temporal/t.vect.algebra/t.vect.algebra.html index 3e47fc043e4..89453068a61 100644 --- a/temporal/t.vect.algebra/t.vect.algebra.html +++ b/temporal/t.vect.algebra/t.vect.algebra.html @@ -420,7 +420,7 @@

                  Examples:

                  temporary before Jan. 1. 2005 and store them in space time dataset D.
                  -D = if(start_date(A) < "2005-01-01", A & B)
                  +D = if(start_date(A) < "2005-01-01", A & B)
                   
                  Buffer all vector points from space time vector dataset A and B with a diff --git a/temporal/temporalintro.html b/temporal/temporalintro.html index f19294b112a..c52b4e2057e 100644 --- a/temporal/temporalintro.html +++ b/temporal/temporalintro.html @@ -262,22 +262,22 @@

                  See also

                  diff --git a/vector/v.clean/v.clean.html b/vector/v.clean/v.clean.html index f004731bbc8..fcaa9d212c4 100644 --- a/vector/v.clean/v.clean.html +++ b/vector/v.clean/v.clean.html @@ -186,7 +186,7 @@

                  Remove small angles between lines at nodes

                • The volume coordinate system and tile layout of the imported voxel map
                  -
                  +
                  tool=rmsa
                  diff --git a/vector/v.label/v.label.html b/vector/v.label/v.label.html index 3b42c98bd40..0331e6ff8a9 100644 --- a/vector/v.label/v.label.html +++ b/vector/v.label/v.label.html @@ -104,11 +104,9 @@

                  Caution: The following information may be incomplete, out of date, and wrong text color can be specified in one of several ways:
                    -
                  1. By color name: - -
                    +
                  2. By color name:
                    aqua black blue brown cyan gray green grey indigo -magenta orange purple red violet white yellow +magenta orange purple red violet white yellow
                  3. As red, green, blue component values. (0-255)
                    for example: 128:100:200
                  4. diff --git a/vector/v.normal/v.normal.html b/vector/v.normal/v.normal.html index 327fcdcd5d1..2f40d6171e6 100644 --- a/vector/v.normal/v.normal.html +++ b/vector/v.normal/v.normal.html @@ -9,22 +9,22 @@

                    NOTES

                    giving an index, ranges of indices, or multiple thereof.
                      -
                    1. Sample skewness and kurtosis -
                    2. Geary's a-statistic and an approximate normal transformation -
                    3. Extreme normal deviates -
                    4. D'Agostino's D-statistic -
                    5. Modified Kuiper V-statistic -
                    6. Modified Watson U^2-statistic -
                    7. Durbin's Exact Test (modified Kolmogorov) -
                    8. Modified Anderson-Darling statistic -
                    9. Modified Cramer-Von Mises W^2-statistic -
                    10. Kolmogorov-Smirnov D-statistic (modified for normality testing) +
                    11. Sample skewness and kurtosis
                    12. +
                    13. Geary's a-statistic and an approximate normal transformation
                    14. +
                    15. Extreme normal deviates
                    16. +
                    17. D'Agostino's D-statistic
                    18. +
                    19. Modified Kuiper V-statistic
                    20. +
                    21. Modified Watson U^2-statistic
                    22. +
                    23. Durbin's Exact Test (modified Kolmogorov)
                    24. +
                    25. Modified Anderson-Darling statistic
                    26. +
                    27. Modified Cramer-Von Mises W^2-statistic
                    28. +
                    29. Kolmogorov-Smirnov D-statistic (modified for normality testing)
                    30. Chi-Square test statistic (equal probability classes) and - the number of degrees of freedom -
                    31. Shapiro-Wilk W Test -
                    32. Weisberg-Binghams W'' (similar to Shapiro-Francia's W') -
                    33. Royston's extension of W for large samples -
                    34. Kotz Separate-Families Test for Lognormality vs. Normality + the number of degrees of freedom
                    35. +
                    36. Shapiro-Wilk W Test
                    37. +
                    38. Weisberg-Binghams W'' (similar to Shapiro-Francia's W')
                    39. +
                    40. Royston's extension of W for large samples
                    41. +
                    42. Kotz Separate-Families Test for Lognormality vs. Normality

                    EXAMPLE

                    diff --git a/vector/v.overlay/v.overlay.html b/vector/v.overlay/v.overlay.html index 1066e8a1145..7069ad58b23 100644 --- a/vector/v.overlay/v.overlay.html +++ b/vector/v.overlay/v.overlay.html @@ -247,7 +247,7 @@

                    Lines overlaid with polygons

                    GRASS v.overlay: Line to polygon clipping
                    - +
                    diff --git a/vector/v.select/v.select.html b/vector/v.select/v.select.html index 5d32e2fe2e4..cf799cfe21e 100644 --- a/vector/v.select/v.select.html +++ b/vector/v.select/v.select.html @@ -5,7 +5,7 @@

                    DESCRIPTION

                    Supported operators (without GEOS; using GRASS' own algorithm):

                      -
                    • overlap - features partially or completely overlap (GEOS equivalent: intersects) +
                    • overlap - features partially or completely overlap (GEOS equivalent: intersects)
                    Supported operators (internally using diff --git a/vector/v.vect.stats/v.vect.stats.html b/vector/v.vect.stats/v.vect.stats.html index adc8ee54f77..109519154c5 100644 --- a/vector/v.vect.stats/v.vect.stats.html +++ b/vector/v.vect.stats/v.vect.stats.html @@ -213,17 +213,17 @@

                    Point statistics in a hexagonal grid

                    d.frame frame=f2 at=50,100,50,100 -c v.colors map=hexagons use=attr column=count color=viridis -d.vect map=hexagons where="count > 0" +d.vect map=hexagons where="count > 0" d.text text="count" at=60,5 size=10 color=black d.frame frame=f3 at=0,50,0,50 -c v.colors map=hexagons use=attr column=average color=viridis -d.vect map=hexagons where="count > 0" +d.vect map=hexagons where="count > 0" d.text text="average" at=60,5 size=10 color=black d.frame frame=f4 at=0,50,50,100 -c v.colors map=hexagons use=attr column=stddev color=viridis -d.vect map=hexagons where="count > 0" +d.vect map=hexagons where="count > 0" d.text text="stddev" at=60,5 size=10 color=black d.mon stop=cairo From 5c1ea4afc6b7921ea510fcf07dcc44411fe13df1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C4=81ris=20Narti=C5=A1s?= Date: Fri, 29 Nov 2024 12:01:48 +0200 Subject: [PATCH 21/36] r.in.pdal: replace HAVE_PDAL_NOFILENAMEWRITER configure definition (#4783) with a simple version check in the code to speed up configure process --- configure | 32 ---------------------------- configure.ac | 10 --------- include/grass/config.h.in | 3 --- raster/r.in.pdal/grassrasterwriter.h | 2 +- 4 files changed, 1 insertion(+), 46 deletions(-) diff --git a/configure b/configure index 56b203e0c13..335f79ecf08 100755 --- a/configure +++ b/configure @@ -10411,38 +10411,6 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam \ printf "%s\n" "#define HAVE_PDAL 1" >>confdefs.h - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to use PDAL NoFilenameWriter" >&5 -printf %s "checking whether to use PDAL NoFilenameWriter... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - class St:public pdal::NoFilenameWriter {}; -int -main (void) -{ - - class NFWTest : public pdal::NoFilenameWriter {}; - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_link "$LINENO" -then : - - -printf "%s\n" "#define HAVE_PDAL_NOFILENAMEWRITER 1" >>confdefs.h - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - LIBS=${ac_save_libs} CFLAGS=${ac_save_cflags} fi diff --git a/configure.ac b/configure.ac index fc3403163da..0aeef9efc05 100644 --- a/configure.ac +++ b/configure.ac @@ -1092,16 +1092,6 @@ else AC_DEFINE(HAVE_PDAL, 1, [Define to 1 if PDAL exists.]) - AC_MSG_CHECKING(whether to use PDAL NoFilenameWriter) - AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include - class St:public pdal::NoFilenameWriter {};]], [[ - class NFWTest : public pdal::NoFilenameWriter {}; - ]])], - [ - AC_DEFINE(HAVE_PDAL_NOFILENAMEWRITER, 1, [Define to 1 if PDAL NoFilenameWriter is present.]) - AC_MSG_RESULT(yes) - ],[AC_MSG_RESULT(no)]) - LIBS=${ac_save_libs} CFLAGS=${ac_save_cflags} fi diff --git a/include/grass/config.h.in b/include/grass/config.h.in index 2451d8cc2b8..8e5eb161a45 100644 --- a/include/grass/config.h.in +++ b/include/grass/config.h.in @@ -152,9 +152,6 @@ /* Define to 1 if PDAL exists. */ #undef HAVE_PDAL -/* Define to 1 if PDAL NoFilenameWriter is present. */ -#undef HAVE_PDAL_NOFILENAMEWRITER - /* Define to 1 if glXCreateGLXPixmap exists. */ #undef HAVE_PIXMAPS diff --git a/raster/r.in.pdal/grassrasterwriter.h b/raster/r.in.pdal/grassrasterwriter.h index 4db8852aa8a..0ec1da774a3 100644 --- a/raster/r.in.pdal/grassrasterwriter.h +++ b/raster/r.in.pdal/grassrasterwriter.h @@ -32,7 +32,7 @@ extern "C" { #include /* Binning code wrapped as a PDAL Writer class */ -#ifdef HAVE_PDAL_NOFILENAMEWRITER +#if PDAL_VERSION_MAJOR >= 2 && PDAL_VERSION_MINOR >= 7 class GrassRasterWriter : public pdal::NoFilenameWriter, public pdal::Streamable { #else From ca5261d63f2b8b7a8b53f9282e4cc91862a7a68f Mon Sep 17 00:00:00 2001 From: ShubhamDesai <42180509+ShubhamDesai@users.noreply.github.com> Date: Fri, 29 Nov 2024 07:04:06 -0500 Subject: [PATCH 22/36] v.build.polylines: Fix Resource Leak issue in walk.c (#4734) * Resource Leak * Suggested changes --- vector/v.build.polylines/walk.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/vector/v.build.polylines/walk.c b/vector/v.build.polylines/walk.c index 9507c587319..2d168fb6662 100644 --- a/vector/v.build.polylines/walk.c +++ b/vector/v.build.polylines/walk.c @@ -166,6 +166,8 @@ int walk_forward_and_pick_up_coords(struct Map_info *map, int start_line, next_node = n2; /* continue at end node */ } else { + if (cats_tmp) + Vect_destroy_cats_struct(cats_tmp); return 1; /* no other line */ } } From 27bf5f8265161b177c1b0634b89737a0dfa178c9 Mon Sep 17 00:00:00 2001 From: Arohan Ajit Date: Fri, 29 Nov 2024 07:04:58 -0500 Subject: [PATCH 23/36] wxGUI: Fixed PEP8 error in startup/ (#4770) --- .flake8 | 1 - gui/wxpython/startup/locdownload.py | 5 ++++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.flake8 b/.flake8 index 4dc9e3a815b..c9da26c037e 100644 --- a/.flake8 +++ b/.flake8 @@ -38,7 +38,6 @@ per-file-ignores = gui/wxpython/mapwin/base.py: E722 gui/wxpython/mapwin/buffered.py: E722 gui/wxpython/mapwin/graphics.py: E722 - gui/wxpython/startup/locdownload.py: E722, E402 gui/wxpython/timeline/g.gui.timeline.py: E501 # Generated file gui/wxpython/menustrings.py: E501 diff --git a/gui/wxpython/startup/locdownload.py b/gui/wxpython/startup/locdownload.py index ccbeaa8fb0c..7e24724d862 100644 --- a/gui/wxpython/startup/locdownload.py +++ b/gui/wxpython/startup/locdownload.py @@ -32,10 +32,13 @@ set_gui_path() +# flake8: noqa: E402 from core.debug import Debug from core.gthread import gThread from gui_core.wrap import Button, StaticText +# flakes8: qa + # TODO: labels (and descriptions) translatable? LOCATIONS = [ @@ -93,7 +96,7 @@ def write(self, string): heigth = self._get_heigth(string) wx.CallAfter(self.out.SetLabel, string) self._resize(heigth) - except: + except wx.PyDeadObjectError: # window closed -> PyDeadObjectError pass From 85eb51aa44f90064fbe457c2b677fe96e869b4fa Mon Sep 17 00:00:00 2001 From: ShubhamDesai <42180509+ShubhamDesai@users.noreply.github.com> Date: Fri, 29 Nov 2024 07:05:55 -0500 Subject: [PATCH 24/36] v.out.dxf: Fix Resource Leak issue in main.c (#4753) Fix Resource Leak --- vector/v.out.dxf/main.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/vector/v.out.dxf/main.c b/vector/v.out.dxf/main.c index d00a15e1378..2e30172dd10 100644 --- a/vector/v.out.dxf/main.c +++ b/vector/v.out.dxf/main.c @@ -195,6 +195,8 @@ int add_plines(struct Map_info *Map, int field, double textsize) } nlines_dxf++; } + Vect_destroy_line_struct(Points); + Vect_destroy_cats_struct(Cats); return nlines_dxf; } From a9a4cec4c6bdc4baf5f0e6b579266a37740d21af Mon Sep 17 00:00:00 2001 From: Mohan Yelugoti Date: Fri, 29 Nov 2024 07:47:25 -0500 Subject: [PATCH 25/36] check: Add supression file for false positives and pending fixes for cppcheck tool (#4766) --- .cppcheck-suppressions | 173 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 173 insertions(+) create mode 100644 .cppcheck-suppressions diff --git a/.cppcheck-suppressions b/.cppcheck-suppressions new file mode 100644 index 00000000000..d2df344bb3a --- /dev/null +++ b/.cppcheck-suppressions @@ -0,0 +1,173 @@ +# True positives +# imagery +invalidFunctionArg:imagery/i.gensigset/subcluster.c:369 +invalidFunctionArg:imagery/i.smap/model.c:158 + +# lib +memleakOnRealloc:lib/external/shapelib/dbfopen.c:448 +va_end_missing:lib/gis/debug.c:82 +nullPointer:lib/vector/Vlib/cats.c:513 +nullPointer:lib/vector/Vlib/cats.c:517 + +# False positives +# binder +syntaxError:binder/postBuild:7 + +# config.guess, config.log, config.status, config.sub, configure, configure.ac +syntaxError:config* + +# db +syntaxError:db/databaseintro.html + +# demolocation +syntaxError:demolocation/Makefile +syntaxError:demolocation/grassrc.tmpl + +# display +syntaxError:display/displaydrivers.html + +# dist.x86_64-pc-linux-gnu +syntaxError:dist.x86_64-pc-linux-gnu/* + +# doc +syntaxError:doc/* + +# docker +syntaxError:docker/README.md + +# general/g.version +internalAstError:general/g.version/main.c:49 +syntaxError:general/g.version/Makefile:8 +syntaxError:general/g.version/g.version.html:72 + +# imagery/ +syntaxError:imagery/imageryintro.html +## We are erroring out early if index is negative, so we won't be hitting this case! +negativeIndex:imagery/i.atcorr/computations.cpp:459 +negativeIndex:imagery/i.atcorr/computations.cpp:1025 + + +# include/ +syntaxError:include/Makefile +syntaxError:include/VERSION:1 + +# text files +syntaxError:INSTALL.md +syntaxError:install-sh +syntaxError:GPL.TXT +syntaxError:aclocal.m4 +syntaxError:AUTHORS +syntaxError:CITATION.cff +syntaxError:CITING +syntaxError:codecov.yaml +syntaxError:CODE_OF_CONDUCT.md +syntaxError:config.log +syntaxError:configure.ac +syntaxError:CONTRIBUTING.md +syntaxError:contributors.csv +syntaxError:contributors_extra.csv +syntaxError:COPYING +syntaxError:Dockerfile +syntaxError:error.log +syntaxError:flake.lock +syntaxError:flake.nix +syntaxError:grasslib.dox +syntaxError:grass.pc* +syntaxError:Makefile +syntaxError:package.nix +syntaxError:pyproject.toml +syntaxError:README.md +syntaxError:renovate.json5 +syntaxError:REQUIREMENTS.md +syntaxError:SECURITY.md +syntaxError:test_keyvalue_result.txt +syntaxError:TODO +syntaxError:translators.csv +syntaxError:Vagrantfile +syntaxError:binaryInstall.src +syntaxError:codecov.yml:19 + +# lib/ +syntaxError:lib/README:3 +# Internally generated file while compiling +nullPointer:lib/db/sqlp/sqlp.yy.c +nullPointer: +syntaxError:lib/db/sqlp/README +syntaxError:lib/db/sqlp/sql* +## va_copy() was used and it doesn't require va_start. +va_list_usedBeforeStarted:lib/gis/aprintf.c:293 +va_list_usedBeforeStarted:lib/gis/aprintf.c:301 +va_list_usedBeforeStarted:lib/gis/aprintf.c:348 +## Though it's not explicity initialized, the loop next will initialize it. So, it's alright to ignore this. +uninitvar:lib/vector/dglib/tavl.c:380 +missingReturn:lib/vector/dglib/nodemgmt-template.c:437 +## Though it's not explicity initialized, the loop next will initialize it. So, it's alright to ignore this. +uninitvar:lib/vector/dglib/avl.c:291 +unknownMacro:lib/bitmap/Makefile:13 +## I feel we can just avoid syntaxError issues, as code can't be compiled unless it's syntax is correct! +## And these usually have a tendency to pop up in the non-C or non-C++ programs!! +syntaxError:lib/* +unknownMacro:lib/gmath/Makefile +unknownMacro:lib/lidar/Makefile + + +# locale +syntaxError:locale/README.md +syntaxError:locale/Makefile +syntaxError:locale/grass_po_stats.py +unknownMacro:locale/* + +# macosx +syntaxError:macosx/* + +# man +syntaxError:man/* + +# mswindows +syntaxError:mswindows/* + +# raster +## FP error, as while loop before ensures that log argument is never equal to 1. +invalidFunctionArg:raster/r.sim/simlib/random.c:36 +invalidFunctionArg:raster/r.sim/simlib/random.c:57 + +## Different rules under different ifdef. +ctuOneDefinitionRuleViolation:raster/r.in.pdal/grassrasterwriter.h:39 +syntaxError:raster/rasterintro.html +syntaxError:raster/Makefile:155 + +# raster3d + +## 'missingReturn` error is mostly from blocks for local computations +missingReturn:raster3d/r3.showdspf/draw_cap_ogl.c:68 +missingReturn:raster3d/r3.showdspf/make_header.c:32 + +syntaxError:raster3d/raster3dintro.html:194 + +# rpm +syntaxError:rpm/grass.spec:244 +syntaxError:rpm/grass-pkgconfig.patch:9 + +# scripts +syntaxError:scripts/windows_sh_launch.bat:11 +syntaxError:scripts/windows_launch.bat:1 + +# temporal +syntaxError:temporal/benchmark.sh:19 +syntaxError:temporal/run_all_tests.sh +syntaxError:temporal/temporalintro.html + +# testsuite +syntaxError:testsuite/raster_md5test.sh:11 +syntaxError:testsuite/README.md:38 + +# utils +syntaxError:utils/* +unknownMacro:utils/coverage_mapper.py:13 +unknownMacro:utils/Makefile:8 + +# vector + +## We are expected to use the memory allocated some other place, so it's FP. +memleak:vector/v.lidar.growing/ConvexHull.c:246 +syntaxError:vector/vectorintro.html:11 From 0c3a9c74d52c0c9efb9ba62832dfea203294041b Mon Sep 17 00:00:00 2001 From: Mohan Yelugoti Date: Fri, 29 Nov 2024 11:51:03 -0500 Subject: [PATCH 26/36] lib/gis: Refactor va_list usage in debug module (#4702) va_list() macro initializes va_list structure before it's usage, and each va_list() call has to be accompanied by corresponding va_end() macro call on the same va_list structure. By having these macros directly before and after the va_list structure usage, reduces the number of places we need to keep track of whether the va_list structure was properly inintialized or closed. Signed-off-by: Mohan Yelugoti --- lib/gis/debug.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/lib/gis/debug.c b/lib/gis/debug.c index 034ab8dc690..b0d42260528 100644 --- a/lib/gis/debug.c +++ b/lib/gis/debug.c @@ -72,8 +72,6 @@ int G_debug(int level, const char *msg, ...) G_init_debug(); if (grass_debug_level >= level) { - va_start(ap, msg); - filen = getenv("GRASS_DEBUG_FILE"); if (filen != NULL) { fd = fopen(filen, "a"); @@ -87,14 +85,14 @@ int G_debug(int level, const char *msg, ...) } fprintf(fd, "D%d/%d: ", level, grass_debug_level); + va_start(ap, msg); vfprintf(fd, msg, ap); + va_end(ap); fprintf(fd, "\n"); fflush(fd); if (filen != NULL) fclose(fd); - - va_end(ap); } return 1; From a6e03d3976d402422627fd426a8e016210a47c32 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 30 Nov 2024 15:45:58 +0000 Subject: [PATCH 27/36] CI(deps): Update ruff to v0.8.1 (#4785) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * CI(deps): Update ruff to v0.8.1 * style: Fix RUF055 [*] Plain string pattern passed to `re` function * style: Fix or ignore os-listdir (PTH208) Use `pathlib.Path.iterdir()` instead. Ruff rule: https://docs.astral.sh/ruff/rules/os-listdir/ --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Edouard Choinière <27212526+echoix@users.noreply.github.com> --- .github/workflows/python-code-quality.yml | 2 +- .pre-commit-config.yaml | 2 +- gui/wxpython/photo2image/ip2i_manager.py | 3 +- man/build_manual_gallery.py | 13 +++- pyproject.toml | 31 ++++++-- python/grass/grassdb/checks.py | 91 ++++++++++++----------- scripts/r.pack/r.pack.py | 6 +- 7 files changed, 88 insertions(+), 60 deletions(-) diff --git a/.github/workflows/python-code-quality.yml b/.github/workflows/python-code-quality.yml index feb6ba70c9d..c3d877a3df1 100644 --- a/.github/workflows/python-code-quality.yml +++ b/.github/workflows/python-code-quality.yml @@ -36,7 +36,7 @@ jobs: # renovate: datasource=pypi depName=bandit BANDIT_VERSION: "1.8.0" # renovate: datasource=pypi depName=ruff - RUFF_VERSION: "0.8.0" + RUFF_VERSION: "0.8.1" runs-on: ${{ matrix.os }} permissions: diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index a486f2ee0da..39d38f17008 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -37,7 +37,7 @@ repos: ) - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: v0.8.0 + rev: v0.8.1 hooks: # Run the linter. - id: ruff diff --git a/gui/wxpython/photo2image/ip2i_manager.py b/gui/wxpython/photo2image/ip2i_manager.py index e3832c681b4..d720e0a5adc 100644 --- a/gui/wxpython/photo2image/ip2i_manager.py +++ b/gui/wxpython/photo2image/ip2i_manager.py @@ -426,14 +426,13 @@ def __init__( GMessage(_("A POINTS file exists, renaming it to POINTS_BAK")) # """Make a POINTS file """ - import re try: fc = open(self.file["camera"]) fc_count = 0 for line in fc: fc_count += 1 - if re.search(r"NUM", line): + if "NUM" in line: storeLine = fc_count numberOfFiducial = int(line.split()[-1]) dataFiducialX = [] diff --git a/man/build_manual_gallery.py b/man/build_manual_gallery.py index 2fa6ace609d..a0f8176a246 100755 --- a/man/build_manual_gallery.py +++ b/man/build_manual_gallery.py @@ -12,11 +12,16 @@ # for details. # ############################################################################# +from __future__ import annotations import os from pathlib import Path import fnmatch import re +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from collections.abc import Iterable img_extensions = ["png", "jpg", "gif"] img_patterns = ["*." + extension for extension in img_extensions] @@ -88,7 +93,7 @@ """ -def img_in_file(filename, imagename, ext) -> bool: +def img_in_file(filename: str | os.PathLike[str], imagename: str, ext: str) -> bool: # for some reason, calling search just once is much faster # than calling it on every line (time is spent in _compile) if ext == "html": @@ -99,7 +104,7 @@ def img_in_file(filename, imagename, ext) -> bool: return bool(re.search(pattern, Path(filename).read_text())) -def file_matches(filename, patterns): +def file_matches(filename: str, patterns: Iterable[str]): return any(fnmatch.fnmatch(filename, pattern) for pattern in patterns) @@ -163,11 +168,11 @@ def main(ext): continue if file_matches(filename, img_patterns): for man_filename in man_files: - if img_in_file(os.path.join(man_dir, man_filename), filename, ext): + if img_in_file(Path(man_dir, man_filename), filename, ext): img_files[filename] = man_filename # for now suppose one image per manual filename - with open(os.path.join(man_dir, output_name), "w") as output: + with open(Path(man_dir, output_name), "w") as output: output.write( header1_tmpl.substitute( title="GRASS GIS %s Reference Manual: Manual gallery" % grass_version diff --git a/pyproject.toml b/pyproject.toml index 85ad3e1283e..f14ec703ce2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -268,14 +268,20 @@ ignore = [ "gui/**" = ["PLW0108"] # See https://github.com/OSGeo/grass/issues/4124 "gui/wxpython/animation/temporal_manager.py" = ["SIM115"] "gui/wxpython/core/*.py" = ["SIM115"] +"gui/wxpython/core/globalvar.py" = ["PTH208"] +"gui/wxpython/core/settings.py" = ["PTH208"] +"gui/wxpython/datacatalog/catalog.py" = ["PTH208"] "gui/wxpython/dbmgr/base.py" = ["SIM115"] -"gui/wxpython/gcp/manager.py" = ["SIM115"] +"gui/wxpython/gcp/manager.py" = ["PTH208", "SIM115"] "gui/wxpython/gmodeler/*.py" = ["SIM115"] "gui/wxpython/gui_core/*.py" = ["SIM115"] +"gui/wxpython/gui_core/dialogs.py" = ["PTH208"] "gui/wxpython/iclass/frame*.py" = ["SIM115"] "gui/wxpython/iclass/frame.py" = ["FLY002"] "gui/wxpython/iclass/statistics.py" = ["A005"] +"gui/wxpython/icons/grass_icons.py" = ["PTH208"] "gui/wxpython/image2target/*.py" = ["SIM115"] +"gui/wxpython/image2target/ii2t_manager.py" = ["PTH208"] "gui/wxpython/iscatt/plots.py" = ["PLW0108"] "gui/wxpython/lmgr/workspace.py" = ["SIM115"] "gui/wxpython/location_wizard/wizard.py" = ["SIM115"] @@ -284,9 +290,11 @@ ignore = [ "gui/wxpython/modules/mcalc_builder.py" = ["SIM115"] "gui/wxpython/photo2image/*.py" = ["SIM115"] "gui/wxpython/psmap/*.py" = ["SIM115"] +"gui/wxpython/psmap/dialogs.py" = ["PTH208"] "gui/wxpython/psmap/utils.py" = ["PGH004"] "gui/wxpython/rdigit/controller.py" = ["SIM115"] "gui/wxpython/rlisetup/*.py" = ["SIM115"] +"gui/wxpython/rlisetup/frame.py" = ["PTH208"] "gui/wxpython/timeline/frame.py" = ["FLY002"] "gui/wxpython/tools/update_menudata.py" = ["SIM115"] "gui/wxpython/tplot/frame.py" = ["FLY002"] @@ -299,31 +307,39 @@ ignore = [ "lib/imagery/testsuite/test_imagery_signature_management.py" = ["SIM115"] "lib/imagery/testsuite/test_imagery_sigsetfile.py" = ["FURB152"] "lib/init/grass.py" = ["SIM115"] +"lib/init/testsuite/test_grass_tmp_mapset.py" = ["PTH208"] "locale/grass_po_stats.py" = ["SIM115"] +"man/build.py" = ["PTH208"] +"man/build_class_graphical.py" = ["PTH208"] +"man/build_manual_gallery.py" = ["PTH208"] +"man/build_rest.py" = ["PTH208"] "python/grass/__init__.py" = ["PYI056"] "python/grass/exp*/tests/grass_script_mapset_session_test.py" = ["SIM117"] "python/grass/exp*/tests/grass_script_tmp_mapset_session_test.py" = ["SIM117"] "python/grass/gunittest/case.py" = ["PT009"] -"python/grass/gunittest/loader.py" = ["PYI024"] +"python/grass/gunittest/loader.py" = ["PTH208", "PYI024"] "python/grass/gunittest/multireport.py" = ["PYI024"] "python/grass/gunittest/testsu*/d*/s*/s*/subsub*/t*/test_segfaut.py" = ["B018"] "python/grass/gunittest/testsuite/test_assertions_rast3d.py" = ["FLY002"] "python/grass/imaging/images2*.py" = ["SIM115"] +"python/grass/imaging/images2ims.py" = ["PTH208"] "python/grass/jupyter/testsuite/interactivemap_test.py" = ["PGH004"] "python/grass/jupyter/testsuite/map_test.py" = ["PGH004"] "python/grass/pydispatch/signal.py" = ["A005"] -"python/grass/pygrass/modules/grid/grid.py" = ["SIM115"] +"python/grass/pygrass/gis/__init__.py" = ["PTH208"] +"python/grass/pygrass/modules/grid/grid.py" = ["PTH208", "SIM115"] "python/grass/pygrass/modules/grid/testsuite/test_*_modules_grid_doctests.py" = ["F401"] "python/grass/pygrass/modules/interface/env.py" = ["SIM115"] "python/grass/pygrass/modules/testsuite/test_pygrass_modules_doctests.py" = ["F401"] "python/grass/pygrass/raster/category.py" = ["FURB189"] "python/grass/pygrass/raster/segment.py" = ["SIM115"] "python/grass/pygrass/tests/*.py" = ["SIM115"] +"python/grass/pygrass/utils.py" = ["PTH208"] "python/grass/pygrass/vector/geometry.py" = ["PYI024"] "python/grass/pygrass/vector/sql.py" = ["FLY002"] "python/grass/pygrass/vector/testsuite/test_table.py" = ["PLW0108"] "python/grass/script/array.py" = ["A005"] -"python/grass/script/core.py" = ["SIM115"] +"python/grass/script/core.py" = ["PTH208", "SIM115"] "python/grass/script/db.py" = ["SIM115"] "python/grass/script/raster.py" = ["SIM115"] "python/grass/script/utils.py" = ["FURB189", "SIM115"] @@ -332,7 +348,7 @@ ignore = [ "python/grass/temporal/stds_export.py" = ["SIM115"] "python/grass/temporal/stds_import.py" = ["SIM115"] "python/grass/temporal/univar_statistics.py" = ["SIM115"] -"python/grass/utils/download.py" = ["SIM115"] +"python/grass/utils/download.py" = ["PTH208", "SIM115"] "raster/r.*/testsuite/*.py" = ["SIM115"] "raster/r.topidx/*.py" = ["SIM115"] "raster3d/r3.flow/testsuite/r3flow_test.py" = ["FLY002"] @@ -343,8 +359,10 @@ ignore = [ "scripts/db.in.ogr/db.in.ogr.py" = ["SIM115"] "scripts/db.test/db.test.py" = ["SIM115"] "scripts/db.univar/db.univar.py" = ["SIM115"] +"scripts/g.download.project/g.download.project.py" = ["PTH208"] "scripts/g.extension.all/g.extension.all.py" = ["SIM115"] -"scripts/g.extension/g.extension.py" = ["SIM115"] +"scripts/g.extension/g.extension.py" = ["PTH208", "SIM115"] +"scripts/g.extension/testsuite/test_addons_modules.py" = ["PTH208"] "scripts/g.search.modules/g.search.modules.py" = ["SIM115"] "scripts/i.in.spotvgt/i.in.spotvgt.py" = ["SIM115"] "scripts/i.oif/i.oif*.py" = ["SIM115"] @@ -370,6 +388,7 @@ ignore = [ "temporal/t.unregister/t.unregister.py" = ["SIM115"] "utils/**.py" = ["SIM115"] "utils/generate_release_notes.py" = ["PGH004"] +"utils/thumbnails.py" = ["PTH208"] "vector/v.fill.holes/examples.ipynb" = ["PTH201"] [tool.ruff.lint.flake8-import-conventions.extend-aliases] diff --git a/python/grass/grassdb/checks.py b/python/grass/grassdb/checks.py index 369cdf60e62..9024ac33517 100644 --- a/python/grass/grassdb/checks.py +++ b/python/grass/grassdb/checks.py @@ -9,6 +9,8 @@ .. sectionauthor:: Vaclav Petras """ +from __future__ import annotations + import datetime import glob import os @@ -20,7 +22,7 @@ from grass.script import gisenv -def mapset_exists(path, location=None, mapset=None): +def mapset_exists(path: str | os.PathLike[str], location=None, mapset=None) -> bool: """Returns True whether mapset path exists. Either only *path* is provided or all three parameters need to be provided. @@ -30,27 +32,27 @@ def mapset_exists(path, location=None, mapset=None): :param mapset: name of a Mapset if not part of *path* """ if location and mapset: - path = os.path.join(path, location, mapset) + path = Path(path, location, mapset) elif location or mapset: raise ValueError(_("Provide only path or all three parameters, not two")) - return os.path.exists(path) + return Path(path).exists() -def location_exists(path, location=None): +def location_exists(path: str | os.PathLike[str], location=None) -> bool: """Returns True whether location path exists. :param path: Path to a Location or to a GRASS GIS database directory :param location: name of a Location if not part of *path* """ if location: - path = os.path.join(path, location) - return os.path.exists(path) + path = Path(path, location) + return Path(path).exists() # TODO: distinguish between valid for getting maps and usable as current # https://lists.osgeo.org/pipermail/grass-dev/2016-September/082317.html # interface created according to the current usage -def is_mapset_valid(path, location=None, mapset=None): +def is_mapset_valid(path: str | os.PathLike[str], location=None, mapset=None) -> bool: """Return True if GRASS Mapset is valid Either only *path* is provided or all three parameters need to be provided. @@ -64,13 +66,13 @@ def is_mapset_valid(path, location=None, mapset=None): # WIND doesn't exist (assuming that neither GRASS_REGION nor # WIND_OVERRIDE environmental variables are set). if location and mapset: - path = os.path.join(path, location, mapset) + path = Path(path, location, mapset) elif location or mapset: raise ValueError(_("Provide only path or all three parameters, not two")) - return os.access(os.path.join(path, "WIND"), os.R_OK) + return os.access(Path(path, "WIND"), os.R_OK) -def is_location_valid(path, location=None): +def is_location_valid(path: str | os.PathLike[str], location=None) -> bool: """Return True if GRASS Location is valid :param path: Path to a Location or to a GRASS GIS database directory @@ -81,8 +83,8 @@ def is_location_valid(path, location=None): # containing a PERMANENT/DEFAULT_WIND file is probably a GRASS # location, while a directory lacking it probably isn't. if location: - path = os.path.join(path, location) - return os.access(os.path.join(path, "PERMANENT", "DEFAULT_WIND"), os.F_OK) + path = Path(path, location) + return os.access(Path(path, "PERMANENT", "DEFAULT_WIND"), os.F_OK) def is_mapset_current(database, location, mapset) -> bool: @@ -101,7 +103,7 @@ def is_location_current(database, location) -> bool: return bool(database == genv["GISDBASE"] and location == genv["LOCATION_NAME"]) -def is_current_user_mapset_owner(mapset_path): +def is_current_user_mapset_owner(mapset_path: str | os.PathLike[str]) -> bool: """Returns True if mapset owner is the current user. On Windows it always returns True.""" # Note that this does account for libgis built with SKIP_MAPSET_OWN_CHK @@ -118,12 +120,12 @@ def is_current_user_mapset_owner(mapset_path): return mapset_uid == os.getuid() -def is_different_mapset_owner(mapset_path): +def is_different_mapset_owner(mapset_path: str | os.PathLike[str]) -> bool: """Returns True if mapset owner is different from the current user""" return not is_current_user_mapset_owner(mapset_path) -def get_mapset_owner(mapset_path): +def get_mapset_owner(mapset_path: str | os.PathLike[str]) -> str | None: """Returns mapset owner name or None if owner name unknown. On Windows it always returns None.""" if sys.platform == "win32": @@ -164,27 +166,27 @@ def is_first_time_user(): return False -def is_mapset_locked(mapset_path): +def is_mapset_locked(mapset_path: str | os.PathLike[str]) -> bool: """Check if the mapset is locked""" lock_name = ".gislock" - lockfile = os.path.join(mapset_path, lock_name) - return os.path.exists(lockfile) + lockfile = Path(mapset_path, lock_name) + return lockfile.exists() -def get_lockfile_if_present(database, location, mapset): +def get_lockfile_if_present(database, location, mapset) -> str | None: """Return path to lock if present, None otherwise Returns the path as a string or None if nothing was found, so the return value can be used to test if the lock is present. """ lock_name = ".gislock" - lockfile = os.path.join(database, location, mapset, lock_name) - if os.path.isfile(lockfile): - return lockfile + lockfile = Path(database, location, mapset, lock_name) + if lockfile.is_file(): + return str(lockfile) return None -def get_mapset_lock_info(mapset_path): +def get_mapset_lock_info(mapset_path: str | os.PathLike[str]): """Get information about .gislock file. Assumes lock file exists, use is_mapset_locked to find out. Returns information as a dictionary with keys @@ -233,13 +235,14 @@ def get_reason_id_mapset_not_usable(mapset_path): return None -def dir_contains_location(path): +def dir_contains_location(path: str | os.PathLike[str]) -> bool: """Return True if directory *path* contains a valid location""" - if not os.path.isdir(path): + p = Path(path) + if not p.is_dir(): return False - for name in os.listdir(path): - if os.path.isdir(os.path.join(path, name)): - if is_location_valid(path, name): + for name in p.iterdir(): + if name.is_dir(): + if is_location_valid(name): return True return False @@ -260,8 +263,8 @@ def get_mapset_invalid_reason(database, location, mapset, none_for_no_reason=Fal # Since we are trying to get the one most likely message, we need all # those return statements here. # pylint: disable=too-many-return-statements - location_path = os.path.join(database, location) - mapset_path = os.path.join(location_path, mapset) + location_path = Path(database, location) + mapset_path = location_path / mapset # first checking the location validity # perhaps a special set of checks with different messages mentioning mapset # will be needed instead of the same set of messages used for location @@ -271,14 +274,14 @@ def get_mapset_invalid_reason(database, location, mapset, none_for_no_reason=Fal if location_msg: return location_msg # if location is valid, check mapset - if mapset not in os.listdir(location_path): + if not mapset_path.exists(): # TODO: remove the grass.py specific wording return _( "Mapset <{mapset}> doesn't exist in GRASS Location <{location}>" ).format(mapset=mapset, location=location) - if not os.path.isdir(mapset_path): + if not mapset_path.is_dir(): return _("<%s> is not a GRASS Mapset because it is not a directory") % mapset - if not os.path.isfile(os.path.join(mapset_path, "WIND")): + if not (mapset_path / "WIND").is_file(): return ( _( "<%s> is not a valid GRASS Mapset" @@ -287,7 +290,7 @@ def get_mapset_invalid_reason(database, location, mapset, none_for_no_reason=Fal % mapset ) # based on the is_mapset_valid() function - if not os.access(os.path.join(mapset_path, "WIND"), os.R_OK): + if not os.access(mapset_path / "WIND", os.R_OK): return ( _( "<%s> is not a valid GRASS Mapset" @@ -303,7 +306,9 @@ def get_mapset_invalid_reason(database, location, mapset, none_for_no_reason=Fal ).format(mapset=mapset, location=location) -def get_location_invalid_reason(database, location, none_for_no_reason=False): +def get_location_invalid_reason( + database, location, none_for_no_reason=False +) -> str | None: """Returns a message describing what is wrong with the Location The goal is to provide the most suitable error message @@ -321,14 +326,14 @@ def get_location_invalid_reason(database, location, none_for_no_reason=False): :param none_for_no_reason: When True, return None when reason is unknown :returns: translated message or None """ - location_path = os.path.join(database, location) - permanent_path = os.path.join(location_path, "PERMANENT") + location_path = Path(database, location) + permanent_path = location_path / "PERMANENT" # directory - if not os.path.exists(location_path): + if not location_path.exists(): return _("Location <%s> doesn't exist") % location_path # permanent mapset - if "PERMANENT" not in os.listdir(location_path): + if not permanent_path.exists(): return ( _( "<%s> is not a valid GRASS Location" @@ -336,7 +341,7 @@ def get_location_invalid_reason(database, location, none_for_no_reason=False): ) % location_path ) - if not os.path.isdir(permanent_path): + if not permanent_path.is_dir(): return ( _( "<%s> is not a valid GRASS Location" @@ -345,7 +350,7 @@ def get_location_invalid_reason(database, location, none_for_no_reason=False): % location_path ) # partially based on the is_location_valid() function - if not os.path.isfile(os.path.join(permanent_path, "DEFAULT_WIND")): + if not (permanent_path / "DEFAULT_WIND").is_file(): return ( _( "<%s> is not a valid GRASS Location" @@ -362,14 +367,14 @@ def get_location_invalid_reason(database, location, none_for_no_reason=False): ) -def get_location_invalid_suggestion(database, location): +def get_location_invalid_suggestion(database, location) -> str | None: """Return suggestion what to do when specified location is not valid It gives suggestion when: * A mapset was specified instead of a location. * A GRASS database was specified instead of a location. """ - location_path = os.path.join(database, location) + location_path = Path(database, location) # a common error is to use mapset instead of location, # if that's the case, include that info into the message if is_mapset_valid(location_path): diff --git a/scripts/r.pack/r.pack.py b/scripts/r.pack/r.pack.py index 5029f93c6d2..1f517a427af 100644 --- a/scripts/r.pack/r.pack.py +++ b/scripts/r.pack/r.pack.py @@ -63,8 +63,8 @@ def main(): global tmp tmp = grass.tempdir() - tmp_dir = os.path.join(tmp, infile) - os.mkdir(tmp_dir) + tmp_dir = Path(tmp, infile) + tmp_dir.mkdir(exist_ok=True) grass.debug("tmp_dir = %s" % tmp_dir) gfile = grass.find_file(name=infile, element="cell", mapset=mapset) @@ -150,7 +150,7 @@ def main(): os.path.join(f_tmp_dir, element), ) - if not os.listdir(tmp_dir): + if not any(tmp_dir.iterdir()): grass.fatal(_("No raster map components found")) # copy projection info From 0f2ac801067226fc32ce206cb58d9221acc69167 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hern=C3=A1n=20De=20Angelis?= <51515911+dhdeangelis@users.noreply.github.com> Date: Sat, 30 Nov 2024 18:03:42 +0100 Subject: [PATCH 28/36] docs: v.to.3d.html minor edits (#4787) --- vector/v.to.3d/v.to.3d.html | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/vector/v.to.3d/v.to.3d.html b/vector/v.to.3d/v.to.3d.html index 6053b746a88..1c02859e7b6 100644 --- a/vector/v.to.3d/v.to.3d.html +++ b/vector/v.to.3d/v.to.3d.html @@ -6,17 +6,19 @@

                    DESCRIPTION

                    parameter.

                    -Flag -r enables to perform reverse transformation, i.e., -transform 3D vector to 2D by omitting z-coordinate. Height of input 3D +The flag -r enables to perform reverse transformation, i.e., +transform 3D vector to 2D by omitting z-coordinate. The height of input 3D features can be optionally stored in column.

                    NOTES

                    +

                    When transforming 2D vector features to 3D based on attribute, all NULL values are silently converted to height 0.0. +

                    -Reverse transformation is possible for points and lines. -In case of lines, the reverse transformation should be used +The reverse transformation, 2D to 3D, is possible for points and lines. +In the case of lines, the reverse transformation should be used only when all vertices of a line have the same z-coordinate (for example contours). From 7192592378c6b8ce60680f86d39b858561944e74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hern=C3=A1n=20De=20Angelis?= <51515911+dhdeangelis@users.noreply.github.com> Date: Sat, 30 Nov 2024 18:49:54 +0100 Subject: [PATCH 29/36] docs: v.kernel.html minor edits (#4788) --- vector/v.kernel/v.kernel.html | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/vector/v.kernel/v.kernel.html b/vector/v.kernel/v.kernel.html index b3a7ac51527..9ef78fb20bd 100644 --- a/vector/v.kernel/v.kernel.html +++ b/vector/v.kernel/v.kernel.html @@ -1,11 +1,10 @@

                    DESCRIPTION

                    v.kernel generates a raster density map from vector points -data using a moving -kernel. Available kernel +data using a moving kernel. Available kernel density functions are uniform, triangular, epanechnikov, -quartic, triweight, gaussian, cosine, default -is gaussian. +quartic, triweight, gaussian, cosine. The default function is gaussian. +

                    The module can also generate a vector density map on a vector network. Conventional kernel functions produce biased estimates by overestimating the densities around network nodes, whereas the equal split method of From 6bf82877c96c23a5656ca2e1744a8fb02f69fdc8 Mon Sep 17 00:00:00 2001 From: Markus Neteler Date: Mon, 2 Dec 2024 15:26:39 +0100 Subject: [PATCH 30/36] docs: enable btree2/kdtree lib doxygen file for Programmer's manual (#4786) Enable btree2/kdtree library doxygen documentation for Programmer's manual. (fixes b5a8683301514d420dd4becde29e4bc73165bd8f) --- lib/btree2/Makefile | 3 +++ lib/btree2/{btree2.dox => btree2lib.dox} | 0 2 files changed, 3 insertions(+) rename lib/btree2/{btree2.dox => btree2lib.dox} (100%) diff --git a/lib/btree2/Makefile b/lib/btree2/Makefile index 84dda646327..627fc259bce 100644 --- a/lib/btree2/Makefile +++ b/lib/btree2/Makefile @@ -7,6 +7,7 @@ MOD_OBJS := $(filter-out try.o,$(AUTO_OBJS)) LIB = BTREE2 include $(MODULE_TOPDIR)/include/Make/Lib.make +include $(MODULE_TOPDIR)/include/Make/Doxygen.make HEADERS := $(ARCH_INCDIR)/kdtree.h @@ -17,3 +18,5 @@ headers: $(HEADERS) $(ARCH_INCDIR)/kdtree.h: kdtree.h $(INSTALL_DATA) $< $@ + +DOXNAME = btree2 diff --git a/lib/btree2/btree2.dox b/lib/btree2/btree2lib.dox similarity index 100% rename from lib/btree2/btree2.dox rename to lib/btree2/btree2lib.dox From 43b9d8d4a3d7278e7cf2e7d2986c00b3e47019bb Mon Sep 17 00:00:00 2001 From: ShubhamDesai <42180509+ShubhamDesai@users.noreply.github.com> Date: Mon, 2 Dec 2024 17:01:45 -0500 Subject: [PATCH 31/36] i.pca: Fix Resource Leak issues (#4664) --- imagery/i.pca/main.c | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/imagery/i.pca/main.c b/imagery/i.pca/main.c index 427cf5f8730..8cc6c4f58fe 100644 --- a/imagery/i.pca/main.c +++ b/imagery/i.pca/main.c @@ -314,6 +314,7 @@ static int calc_mu_cov(int *fds, double **covar, double *mu, double *stddev, DCELL **rowbuf = (DCELL **)G_malloc(bands * sizeof(DCELL *)); double **sum2 = (double **)G_calloc(bands, sizeof(double *)); double *sumsq, *sd, *sum; + int ret = 1; if (stddev) { sumsq = (double *)G_calloc(bands, sizeof(double)); @@ -358,8 +359,10 @@ static int calc_mu_cov(int *fds, double **covar, double *mu, double *stddev, } G_percent(1, 1, 1); - if (count < 2) - return 0; + if (count < 2) { + ret = 0; + goto free_exit; + } for (i = 0; i < bands; i++) { if (stddev) { @@ -378,22 +381,21 @@ static int calc_mu_cov(int *fds, double **covar, double *mu, double *stddev, if (j != i) covar[j][i] = covar[i][j]; } - - G_free(sum2[i]); - G_free(rowbuf[i]); } for (i = 0; i < bands; i++) mu[i] = sum[i] / count; +free_exit: + for (i = 0; i < bands; i++) { + G_free(sum2[i]); + G_free(rowbuf[i]); + } G_free(rowbuf); - G_free(sum2); - if (sd) - G_free(sd); - if (sumsq) - G_free(sumsq); + G_free(sd); + G_free(sumsq); - return 1; + return ret; } static int write_pca(double **eigmat, double *mu, double *stddev, int *inp_fd, @@ -571,6 +573,8 @@ static int write_pca(double **eigmat, double *mu, double *stddev, int *inp_fd, G_free(min); G_free(max); G_free(old_range); + G_free(pcs); + G_free(out_fd); return 0; } From 6d884a54ba13bd5039e143786eeb55e1f5b784c3 Mon Sep 17 00:00:00 2001 From: ShubhamDesai <42180509+ShubhamDesai@users.noreply.github.com> Date: Mon, 2 Dec 2024 17:08:51 -0500 Subject: [PATCH 32/36] lib/raster3d: Fix Resource Leak issues in index.c (#4754) --- lib/raster3d/index.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/raster3d/index.c b/lib/raster3d/index.c index a73e12219c0..6ddbbb083a6 100644 --- a/lib/raster3d/index.c +++ b/lib/raster3d/index.c @@ -37,6 +37,7 @@ static int Rast3d_readIndex(RASTER3D_Map *map) if (indexLength == map->indexLongNbytes * map->nTiles) { if (read(map->data_fd, tmp, indexLength) != indexLength) { Rast3d_error("Rast3d_readIndex: can't read file"); + Rast3d_free(tmp); return 0; } } @@ -52,6 +53,7 @@ static int Rast3d_readIndex(RASTER3D_Map *map) tmp2 = Rast3d_malloc(indexLength); if (tmp2 == NULL) { Rast3d_error("Rast3d_readIndex: error in Rast3d_malloc"); + Rast3d_free(tmp); return 0; } } @@ -60,6 +62,8 @@ static int Rast3d_readIndex(RASTER3D_Map *map) if (read(map->data_fd, tmp2, indexLength) != indexLength) { Rast3d_error("Rast3d_readIndex: can't read file"); + Rast3d_free(tmp); + Rast3d_free(tmp2); return 0; } @@ -117,6 +121,7 @@ int Rast3d_flush_index(RASTER3D_Map *map) indexLength = map->nTiles * sizeof(long); if (write(map->data_fd, tmp, indexLength) != indexLength) { Rast3d_error("Rast3d_flush_index: can't write file"); + Rast3d_free(tmp); return 0; } From 80a574dc26a78a6097ef5962ee2bd352de62f0d5 Mon Sep 17 00:00:00 2001 From: ShubhamDesai <42180509+ShubhamDesai@users.noreply.github.com> Date: Mon, 2 Dec 2024 17:10:55 -0500 Subject: [PATCH 33/36] lib/gpde: Fix Resource Leak issue in n_arrays_io.c (#4775) --- lib/gpde/n_arrays_io.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/gpde/n_arrays_io.c b/lib/gpde/n_arrays_io.c index eae8a9065c6..5836df00754 100644 --- a/lib/gpde/n_arrays_io.c +++ b/lib/gpde/n_arrays_io.c @@ -150,6 +150,7 @@ N_array_2d *N_read_rast_to_array_2d(char *name, N_array_2d *array) /* Close file */ Rast_close(map); + G_free(rast); return data; } @@ -219,6 +220,9 @@ void N_write_array_2d_to_rast(N_array_2d *array, char *name) /* Close file */ Rast_close(map); + G_free(rast); + G_free(frast); + G_free(drast); } /* ******************** 3D ARRAY FUNCTIONS *********************** */ From 856a5141ea392b620e23dbe486e595564e2fb629 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C4=81ris=20Narti=C5=A1s?= Date: Tue, 3 Dec 2024 01:23:33 +0200 Subject: [PATCH 34/36] r.in.pdal: Improve PDAL error handling (#4750) * r.in.pdal: Improve PDAL error handling Some non-conformant LAS files trigger an error in PDAL library that results in an unhandled exit from r.in.pdal module. This code catches all PDAL errors and reports them in a GRASS way. One of error sources is lack of SRS information in the imported LAS file. This code propogates SRS check override from GRASS to PDAL library thus eliminating an error observed by non-conformant 1.4 LAS files. Fixes: https://github.com/OSGeo/grass/issues/4157 * r.in.pdal: update copyright notice * r.in.pdal: enable reader.las "nosrs" option only in PDAL >= 2.4.3 * r.in.pdal: use PDAL defined macros to determine its version Reduces overhead of the configure stage * r.in.pdal: remove debugging pritnout left by accident * r.in.pdal: do not pass unused parameter to functions if "nosrs" is not available --- raster/r.in.pdal/info.cpp | 52 +++++++- raster/r.in.pdal/info.h | 14 +++ raster/r.in.pdal/main.cpp | 38 +++++- .../testsuite/test_r_in_pdal_print.py | 113 ++++++++++++++++++ 4 files changed, 206 insertions(+), 11 deletions(-) create mode 100644 raster/r.in.pdal/testsuite/test_r_in_pdal_print.py diff --git a/raster/r.in.pdal/info.cpp b/raster/r.in.pdal/info.cpp index cd8fd6483ff..d9f506a9ace 100644 --- a/raster/r.in.pdal/info.cpp +++ b/raster/r.in.pdal/info.cpp @@ -1,7 +1,7 @@ /* * r.in.pdal Functions printing out various information on input LAS files * - * Copyright 2021 by Maris Nartiss, and The GRASS Development Team + * Copyright 2021-2024 by Maris Nartiss, and The GRASS Development Team * Author: Maris Nartiss * * This program is free software licensed under the GPL (>=v2). @@ -12,8 +12,14 @@ #include "info.h" #include +#ifdef PDAL_USE_NOSRS +void get_extent(struct StringList *infiles, double *min_x, double *max_x, + double *min_y, double *max_y, double *min_z, double *max_z, + bool nosrs) +#else void get_extent(struct StringList *infiles, double *min_x, double *max_x, double *min_y, double *max_y, double *min_z, double *max_z) +#endif { pdal::StageFactory factory; bool first = 1; @@ -25,15 +31,27 @@ void get_extent(struct StringList *infiles, double *min_x, double *max_x, std::string pdal_read_driver = factory.inferReaderDriver(infile); if (pdal_read_driver.empty()) - G_fatal_error("Cannot determine input file type of <%s>", infile); + G_fatal_error(_("Cannot determine input file type of <%s>"), + infile); pdal::PointTable table; pdal::Options las_opts; pdal::Option las_opt("filename", infile); las_opts.add(las_opt); +#ifdef PDAL_USE_NOSRS + if (nosrs) { + pdal::Option nosrs_opt("nosrs", true); + las_opts.add(nosrs_opt); + } +#endif pdal::LasReader las_reader; las_reader.setOptions(las_opts); - las_reader.prepare(table); + try { + las_reader.prepare(table); + } + catch (const std::exception &err) { + G_fatal_error(_("PDAL error: %s"), err.what()); + } const pdal::LasHeader &las_header = las_reader.header(); if (first) { *min_x = las_header.minX(); @@ -62,16 +80,28 @@ void get_extent(struct StringList *infiles, double *min_x, double *max_x, } } +#ifdef PDAL_USE_NOSRS +void print_extent(struct StringList *infiles, bool nosrs) +#else void print_extent(struct StringList *infiles) +#endif { double min_x, max_x, min_y, max_y, min_z, max_z; +#ifdef PDAL_USE_NOSRS + get_extent(infiles, &min_x, &max_x, &min_y, &max_y, &min_z, &max_z, nosrs); +#else get_extent(infiles, &min_x, &max_x, &min_y, &max_y, &min_z, &max_z); +#endif fprintf(stdout, "n=%f s=%f e=%f w=%f b=%f t=%f\n", max_y, min_y, max_x, min_x, min_z, max_z); } +#ifdef PDAL_USE_NOSRS +void print_lasinfo(struct StringList *infiles, bool nosrs) +#else void print_lasinfo(struct StringList *infiles) +#endif { pdal::StageFactory factory; pdal::MetadataNode meta_node; @@ -86,15 +116,27 @@ void print_lasinfo(struct StringList *infiles) std::string pdal_read_driver = factory.inferReaderDriver(infile); if (pdal_read_driver.empty()) - G_fatal_error("Cannot determine input file type of <%s>", infile); + G_fatal_error(_("Cannot determine input file type of <%s>"), + infile); pdal::PointTable table; pdal::Options las_opts; pdal::Option las_opt("filename", infile); las_opts.add(las_opt); +#ifdef PDAL_USE_NOSRS + if (nosrs) { + pdal::Option nosrs_opt("nosrs", true); + las_opts.add(nosrs_opt); + } +#endif pdal::LasReader las_reader; las_reader.setOptions(las_opts); - las_reader.prepare(table); + try { + las_reader.prepare(table); + } + catch (const std::exception &err) { + G_fatal_error(_("PDAL error: %s"), err.what()); + } const pdal::LasHeader &h = las_reader.header(); pdal::PointLayoutPtr point_layout = table.layout(); const pdal::Dimension::IdList &dims = point_layout->dims(); diff --git a/raster/r.in.pdal/info.h b/raster/r.in.pdal/info.h index 7f8d0138ab1..387efd21ef0 100644 --- a/raster/r.in.pdal/info.h +++ b/raster/r.in.pdal/info.h @@ -27,15 +27,29 @@ #pragma clang diagnostic pop #endif +#include +#if (PDAL_VERSION_MAJOR >= 2 && PDAL_VERSION_MINOR > 4) || \ + (PDAL_VERSION_MAJOR == 2 && PDAL_VERSION_MINOR == 4 && \ + PDAL_VERSION_PATCH == 3) +#define PDAL_USE_NOSRS 1 +#endif + extern "C" { #include #include #include "string_list.h" } +#ifdef PDAL_USE_NOSRS +void get_extent(struct StringList *, double *, double *, double *, double *, + double *, double *, bool); +void print_extent(struct StringList *, bool); +void print_lasinfo(struct StringList *, bool); +#else void get_extent(struct StringList *, double *, double *, double *, double *, double *, double *); void print_extent(struct StringList *); void print_lasinfo(struct StringList *); +#endif #endif // INFO_H diff --git a/raster/r.in.pdal/main.cpp b/raster/r.in.pdal/main.cpp index 36d09558eea..fe17e80cb08 100644 --- a/raster/r.in.pdal/main.cpp +++ b/raster/r.in.pdal/main.cpp @@ -4,12 +4,12 @@ * * AUTHOR(S): Vaclav Petras * Based on r.in.xyz and r.in.lidar by Markus Metz, - * Hamish Bowman, Volker Wichmann + * Hamish Bowman, Volker Wichmann, Maris Nartiss * * PURPOSE: Imports LAS LiDAR point clouds to a raster map using * aggregate statistics. * - * COPYRIGHT: (C) 2019-2021 by Vaclav Petras and the GRASS Development Team + * COPYRIGHT: (C) 2019-2024 by Vaclav Petras and the GRASS Development Team * * This program is free software under the GNU General Public * License (>=v2). Read the file COPYING that comes with @@ -446,12 +446,20 @@ int main(int argc, char *argv[]) /* If we print extent, there is no need to validate rest of the input */ if (print_extent_flag->answer) { +#ifdef PDAL_USE_NOSRS + print_extent(&infiles, over_flag->answer); +#else print_extent(&infiles); +#endif exit(EXIT_SUCCESS); } if (print_info_flag->answer) { +#ifdef PDAL_USE_NOSRS + print_lasinfo(&infiles, over_flag->answer); +#else print_lasinfo(&infiles); +#endif exit(EXIT_SUCCESS); } @@ -507,7 +515,12 @@ int main(int argc, char *argv[]) if (extents_flag->answer) { double min_x, max_x, min_y, max_y, min_z, max_z; +#ifdef PDAL_USE_NOSRS + get_extent(&infiles, &min_x, &max_x, &min_y, &max_y, &min_z, &max_z, + over_flag->answer); +#else get_extent(&infiles, &min_x, &max_x, &min_y, &max_y, &min_z, &max_z); +#endif region.east = xmax = max_x; region.west = xmin = min_x; @@ -711,16 +724,24 @@ int main(int argc, char *argv[]) std::string pdal_read_driver = factory.inferReaderDriver(infile); if (pdal_read_driver.empty()) - G_fatal_error("Cannot determine input file type of <%s>", infile); + G_fatal_error(_("Cannot determine input file type of <%s>"), + infile); pdal::Options las_opts; pdal::Option las_opt("filename", infile); las_opts.add(las_opt); +#ifdef PDAL_USE_NOSRS + if (over_flag->answer) { + pdal::Option nosrs_opt("nosrs", true); + las_opts.add(nosrs_opt); + } +#endif // stages created by factory are destroyed with the factory pdal::Stage *reader = factory.createStage(pdal_read_driver); if (!reader) - G_fatal_error("PDAL reader creation failed, a wrong format of <%s>", - infile); + G_fatal_error( + _("PDAL reader creation failed, a wrong format of <%s>"), + infile); reader->setOptions(las_opts); readers.push_back(reader); merge_filter.setInput(*reader); @@ -779,7 +800,12 @@ int main(int argc, char *argv[]) // consumption, so using 10k in case it is faster for some cases pdal::point_count_t point_table_capacity = 10000; pdal::FixedPointTable point_table(point_table_capacity); - binning_writer.prepare(point_table); + try { + binning_writer.prepare(point_table); + } + catch (const std::exception &err) { + G_fatal_error(_("PDAL error: %s"), err.what()); + } // getting projection is possible only after prepare if (over_flag->answer) { diff --git a/raster/r.in.pdal/testsuite/test_r_in_pdal_print.py b/raster/r.in.pdal/testsuite/test_r_in_pdal_print.py new file mode 100644 index 00000000000..2c613ab88e2 --- /dev/null +++ b/raster/r.in.pdal/testsuite/test_r_in_pdal_print.py @@ -0,0 +1,113 @@ +""" +Name: r.in.pdal info printing and error handling tests +Purpose: Validates output of LAS file property printing and handling + of broken LAS files + +Author: Maris Nartiss +Copyright: (C) 2024 by Maris Nartiss and the GRASS Development Team +Licence: This program is free software under the GNU General Public + License (>=v2). Read the file COPYING that comes with GRASS + for details. +""" + +import os +import pathlib +import shutil +import unittest +from tempfile import TemporaryDirectory + +from grass.script import core as grass +from grass.script import read_command +from grass.gunittest.case import TestCase +from grass.gunittest.main import test + + +class InfoTest(TestCase): + """ + Test printing of extent and metadata + + This test requires pdal CLI util to be available. + """ + + @classmethod + @unittest.skipIf(shutil.which("pdal") is None, "Cannot find pdal utility") + def setUpClass(cls): + """Ensures expected computational region and generated data""" + cls.use_temp_region() + cls.runModule("g.region", n=18, s=0, e=18, w=0, res=6) + + cls.data_dir = os.path.join(pathlib.Path(__file__).parent.absolute(), "data") + cls.point_file = os.path.join(cls.data_dir, "points.csv") + cls.tmp_dir = TemporaryDirectory() + cls.las_file = os.path.join(cls.tmp_dir.name, "points.las") + grass.call( + [ + "pdal", + "translate", + "-i", + cls.point_file, + "-o", + cls.las_file, + "-r", + "text", + "-w", + "las", + "--writers.las.format=0", + "--writers.las.extra_dims=all", + "--writers.las.minor_version=4", + ] + ) + cls.broken_las = os.path.join(cls.tmp_dir.name, "broken.las") + pathlib.Path(cls.broken_las).write_bytes(b"LASF") + + @classmethod + def tearDownClass(cls): + """Remove the temporary region and generated data""" + cls.tmp_dir.cleanup() + cls.del_temp_region() + + @unittest.skipIf(shutil.which("r.in.pdal") is None, "Cannot find r.in.pdal") + def test_extent_bad(self): + """A broken LAS file should result in an error""" + self.assertModuleFail("r.in.pdal", input=self.broken_las, flags="g", quiet=True) + + @unittest.skipIf(shutil.which("r.in.pdal") is None, "Cannot find r.in.pdal") + def test_info_bad(self): + """A broken LAS file should result in an error""" + self.assertModuleFail("r.in.pdal", input=self.broken_las, flags="p", quiet=True) + + @unittest.skipIf(shutil.which("r.in.pdal") is None, "Cannot find r.in.pdal") + def test_extent_good(self): + """Reported extent should match provided data""" + out = read_command("r.in.pdal", input=self.las_file, flags="g", quiet=True) + for kvp in out.strip().split(" "): + key, value = kvp.split("=") + if key == "n": + self.assertAlmostEqual(float(value), 17, places=6) + continue + if key == "s": + self.assertAlmostEqual(float(value), 1, places=6) + continue + if key == "e": + self.assertAlmostEqual(float(value), 17, places=6) + continue + if key == "w": + self.assertAlmostEqual(float(value), 1, places=6) + continue + if key == "t": + self.assertAlmostEqual(float(value), 28, places=6) + continue + if key == "b": + self.assertAlmostEqual(float(value), 1, places=6) + + @unittest.skipIf(shutil.which("r.in.pdal") is None, "Cannot find r.in.pdal") + def test_info_good(self): + """Validate successful file info printing""" + out = read_command("r.in.pdal", input=self.las_file, flags="p", quiet=True) + self.assertIn("File version = 1.4", out) + self.assertIn("File signature: LASF", out) + self.assertIn("Point count: 53", out) + + +if __name__ == "__main__": + test() From cf81aadc39bfa048a4d215dde1878e384e51acb4 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 3 Dec 2024 03:07:15 +0000 Subject: [PATCH 35/36] CI(deps): Lock file maintenance (#4794) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index cf41a34db41..cad86ad61c3 100644 --- a/flake.lock +++ b/flake.lock @@ -19,11 +19,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1732238832, - "narHash": "sha256-sQxuJm8rHY20xq6Ah+GwIUkF95tWjGRd1X8xF+Pkk38=", + "lastModified": 1733064805, + "narHash": "sha256-7NbtSLfZO0q7MXPl5hzA0sbVJt6pWxxtGWbaVUDDmjs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "8edf06bea5bcbee082df1b7369ff973b91618b8d", + "rev": "31d66ae40417bb13765b0ad75dd200400e98de84", "type": "github" }, "original": { From cc82d8e102304d98a3119f493c46321649b2cf69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Edouard=20Choini=C3=A8re?= <27212526+echoix@users.noreply.github.com> Date: Tue, 3 Dec 2024 05:44:16 -0500 Subject: [PATCH 36/36] utils(dep_tree2sql): Update to valid syntax, address shellcheck warnings (#3547) * utils(dep_tree2sql): Exit with exit code 1 when changing directory fails * utils(dep_tree2sql): Use $(...) notation instead of legacy backticked command substitution * utils(dep_tree2sql): Double quoting some variables * utils(dep_tree2sql): Drop database only if exists, supported on postgres 9.2 and up (released september 2012) * utils(dep_tree2sql): Replace fgrep with grep -F * utils(dep_tree2sql): Double quoting some variables * utils(dep_tree2sql): Replace egrep with grep -E * utils(dep_tree2sql): Use read -r to prevent backslash interpretation * utils(dep_tree2sql): Use 'find .. -print0 | xargs -0 ..' to allow non-alphanumeric filenames * utils(dep_tree2sql): Replace `find *` with `find ./*` This has a change in the paths returned, as they start with ./ instead * utils(dep_tree2sql): Replace find -perm +111 with find -perm /a+x -perm +mode was deprecated in favor of -perm /mode. It checks if any of the permissions bits in mode is set. It is thus replaced by the equivalent check of "any file that has the executable bit set for anybody" * utils(dep_tree2sql): Use mapfile to assign libs variable with an array, that can be properly quoted in the call below * utils(dep_tree2sql): Uniformize shell script formatting Using `shfmt -w -s -i 4 -ci -bn -sr` * Convert mixed tab/spaces indentation to spaces only * utils(dep_tree2sql): Remove temporary directory at end of script --- utils/dep_tree2sql.sh | 501 +++++++++++++++++++++--------------------- 1 file changed, 252 insertions(+), 249 deletions(-) diff --git a/utils/dep_tree2sql.sh b/utils/dep_tree2sql.sh index 176924fc382..99f061f86f4 100755 --- a/utils/dep_tree2sql.sh +++ b/utils/dep_tree2sql.sh @@ -36,28 +36,28 @@ # # You can then use simple queries such as: # -# grass=> SELECT object FROM obj_imp WHERE symbol = 'I_get_target' ; -# object -# -------------------------------------------------------------------- -# imagery/i.ortho.photo/photo.2image/OBJ.i686-pc-linux-gnu/target.o -# imagery/i.ortho.photo/photo.2target/OBJ.i686-pc-linux-gnu/target.o -# imagery/i.ortho.photo/photo.elev/OBJ.i686-pc-linux-gnu/main.o -# imagery/i.ortho.photo/photo.rectify/OBJ.i686-pc-linux-gnu/target.o -# imagery/i.ortho.photo/photo.target/OBJ.i686-pc-linux-gnu/main.o -# imagery/i.rectify/OBJ.i686-pc-linux-gnu/target.o +# grass=> SELECT object FROM obj_imp WHERE symbol = 'I_get_target' ; +# object +# -------------------------------------------------------------------- +# imagery/i.ortho.photo/photo.2image/OBJ.i686-pc-linux-gnu/target.o +# imagery/i.ortho.photo/photo.2target/OBJ.i686-pc-linux-gnu/target.o +# imagery/i.ortho.photo/photo.elev/OBJ.i686-pc-linux-gnu/main.o +# imagery/i.ortho.photo/photo.rectify/OBJ.i686-pc-linux-gnu/target.o +# imagery/i.ortho.photo/photo.target/OBJ.i686-pc-linux-gnu/main.o +# imagery/i.rectify/OBJ.i686-pc-linux-gnu/target.o # # to discover which files import a given symbol, or more complex queries # such as: # -# grass=> SELECT DISTINCT b.object FROM lib_exp a, obj_imp b -# grass-> WHERE a.library = 'libgrass_form.6.1.cvs.so' AND a.symbol = b.symbol ; -# object -# ----------------------------------------------------------- -# vector/v.digit/OBJ.i686-pc-linux-gnu/attr.o -# vector/v.digit/OBJ.i686-pc-linux-gnu/line.o -# vector/v.what/OBJ.i686-pc-linux-gnu/what.o -# visualization/nviz/src/OBJ.i686-pc-linux-gnu/query_vect.o -# (5 rows) +# grass=> SELECT DISTINCT b.object FROM lib_exp a, obj_imp b +# grass-> WHERE a.library = 'libgrass_form.6.1.cvs.so' AND a.symbol = b.symbol ; +# object +# ----------------------------------------------------------- +# vector/v.digit/OBJ.i686-pc-linux-gnu/attr.o +# vector/v.digit/OBJ.i686-pc-linux-gnu/line.o +# vector/v.what/OBJ.i686-pc-linux-gnu/what.o +# visualization/nviz/src/OBJ.i686-pc-linux-gnu/query_vect.o +# (5 rows) # # to discover which files import any symbol defined in a specific # library. And so on. @@ -71,111 +71,112 @@ # easiest way to figure out what is in a given table (apart from looking # at the name) is to just sample it, e.g.: # -# grass=> SELECT * FROM stlib_exp LIMIT 5 ; -# library | object | symbol -# -------------------+------------+--------------- -# libgrass_manage.a | add_elem.o | add_element -# libgrass_manage.a | ask.o | ask_in_mapset -# libgrass_manage.a | ask.o | ask_new -# libgrass_manage.a | ask.o | ask_old -# libgrass_manage.a | copyfile.o | copyfile -# (5 rows) +# grass=> SELECT * FROM stlib_exp LIMIT 5 ; +# library | object | symbol +# -------------------+------------+--------------- +# libgrass_manage.a | add_elem.o | add_element +# libgrass_manage.a | ask.o | ask_in_mapset +# libgrass_manage.a | ask.o | ask_new +# libgrass_manage.a | ask.o | ask_old +# libgrass_manage.a | copyfile.o | copyfile +# (5 rows) # tmpdir=/tmp/sql-grass dbname=grass if [ -n "$1" ]; then - builddir="$1" + builddir="$1" else - echo "Usage: del_tree2sql.sh " >&2 - exit 1 + echo "Usage: del_tree2sql.sh " >&2 + exit 1 fi rm -rf "$tmpdir" mkdir -m 711 "$tmpdir" || exit 1 -cd $builddir +cd "$builddir" || exit 1 -( cd dist.* +( + cd dist.* || exit 1 -#LD_LIBRARY_PATH=`pwd`/lib -#export LD_LIBRARY_PATH + #LD_LIBRARY_PATH=`pwd`/lib + #export LD_LIBRARY_PATH -find . -type f -perm +111 \! -name '*.so.*' \ - | while read file ; do ldd $file | sed 's!^!'$file'!' ; done 2>/dev/null \ - | sed -e 's/^\.\///' -e 's/ (0x.*)$//' -e 's/ => \(.*\)$/ \1/' -e 's/ => .*$//' \ - | fgrep -v 'not a dynamic executable' \ - | awk -vOFS='\t' '{print $1,$2,$3 ? $3 : $2}' \ - > "$tmpdir/ldd.lst" + find . -type f -perm /a+x \! -name '*.so.*' \ + | while read -r file; do ldd "$file" | sed 's!^!'"$file"'!'; done 2> /dev/null \ + | sed -e 's/^\.\///' -e 's/ (0x.*)$//' -e 's/ => \(.*\)$/ \1/' -e 's/ => .*$//' \ + | grep -F -v 'not a dynamic executable' \ + | awk -vOFS='\t' '{print $1,$2,$3 ? $3 : $2}' \ + > "$tmpdir/ldd.lst" -find . -type f -perm +111 \! -name '*.so' \ - | xargs nm -AD 2>/dev/null \ - | egrep ': {8}{1,2} U ' \ - | sed -e 's/:/ /g' -e 's/\.\///' \ - | awk -vOFS='\t' '{print $1,$3}' \ - > "$tmpdir/prog_imp.lst" + find . -type f -perm /a+x \! -name '*.so' -print0 \ + | xargs -0 nm -AD 2> /dev/null \ + | grep -E ': {8}{1,2} U ' \ + | sed -e 's/:/ /g' -e 's/\.\///' \ + | awk -vOFS='\t' '{print $1,$3}' \ + > "$tmpdir/prog_imp.lst" -find . -type f -perm +111 \! -name '*.so' \ - | xargs nm -AD 2>/dev/null \ - | egrep ':[0-9a-f]{8}{1,2} [BCDGRSTW] ' \ - | sed -e 's/:/ /g' -e 's/\.\///' \ - | awk -vOFS='\t' '{print $1,$4}' \ - > "$tmpdir/prog_exp.lst" + find . -type f -perm /a+x \! -name '*.so' -print0 \ + | xargs -0 nm -AD 2> /dev/null \ + | grep -E ':[0-9a-f]{8}{1,2} [BCDGRSTW] ' \ + | sed -e 's/:/ /g' -e 's/\.\///' \ + | awk -vOFS='\t' '{print $1,$4}' \ + > "$tmpdir/prog_exp.lst" ) -find * -type f -name 'lib?*.a' \ - | xargs nm -A \ - | egrep ':[0-9a-f]{8}{1,2} [BCDGRSTW] ' \ - | sed 's/:/ /g' \ - | awk -vOFS='\t' '{print gensub("^[^ ]*/","",1,$1),$2,$5}' \ - > "$tmpdir/stlib_exp.lst" - -find * -type f -name 'lib?*.so' \ - | xargs nm -AD \ - | egrep ':[0-9a-f]{8}{1,2} [BCDGRSTW] ' \ - | sed 's/:/ /g' \ - | awk -vOFS='\t' '{print gensub("^[^ ]*/","",1,$1),$4}' \ - > "$tmpdir/shlib_exp.lst" - -find * -type f -name '*.o' \ - | xargs nm -A \ - | egrep ':[0-9a-f]{8}{1,2} [BCDGRSTW] ' \ - | sed 's/:/ /g' \ - | awk -vOFS='\t' '{print $1,$4}' \ - > "$tmpdir/obj_exp.lst" - -find * -type f -name 'lib?*.a' \ - | xargs nm -A \ - | egrep ': {8}{1,2} U ' \ - | sed 's/:/ /g' \ - | awk -vOFS='\t' '{print gensub("^[^ ]*/","",1,$1),$2,$4}' \ - > "$tmpdir/stlib_imp.lst" - -find * -type f -name 'lib?*.so' \ - | xargs nm -AD \ - | egrep ': {8}{1,2} U ' \ - | sed 's/:/ /g' \ - | awk -vOFS='\t' '{print gensub("^[^ ]*/","",1,$1),$3}' \ - > "$tmpdir/shlib_imp.lst" - -find * -type f -name '*.o' \ - | xargs nm -A \ - | egrep ': {8}{1,2} U ' \ - | sed 's/:/ /g' \ - | awk -vOFS='\t' '{print $1,$3}' \ - > "$tmpdir/obj_imp.lst" - -libs=`awk '{print $3}' "$tmpdir/ldd.lst" | uniq | sort | uniq` - -nm -AD $libs \ - | egrep ':[0-9a-f]{8}{1,2} [TWDRC] ' \ - | sed 's/:/ /g' \ - | awk -vOFS='\t' '{print gensub("^[^ ]*/","",1,$1),$4}' \ - > "$tmpdir/libs.lst" - -cat > "$tmpdir/ansi.lst" < "$tmpdir/stlib_exp.lst" + +find ./* -type f -name 'lib?*.so' -print0 \ + | xargs -0 nm -AD \ + | grep -E ':[0-9a-f]{8}{1,2} [BCDGRSTW] ' \ + | sed 's/:/ /g' \ + | awk -vOFS='\t' '{print gensub("^[^ ]*/","",1,$1),$4}' \ + > "$tmpdir/shlib_exp.lst" + +find ./* -type f -name '*.o' -print0 \ + | xargs -0 nm -A \ + | grep -E ':[0-9a-f]{8}{1,2} [BCDGRSTW] ' \ + | sed 's/:/ /g' \ + | awk -vOFS='\t' '{print $1,$4}' \ + > "$tmpdir/obj_exp.lst" + +find ./* -type f -name 'lib?*.a' -print0 \ + | xargs -0 nm -A \ + | grep -E ': {8}{1,2} U ' \ + | sed 's/:/ /g' \ + | awk -vOFS='\t' '{print gensub("^[^ ]*/","",1,$1),$2,$4}' \ + > "$tmpdir/stlib_imp.lst" + +find ./* -type f -name 'lib?*.so' -print0 \ + | xargs -0 nm -AD \ + | grep -E ': {8}{1,2} U ' \ + | sed 's/:/ /g' \ + | awk -vOFS='\t' '{print gensub("^[^ ]*/","",1,$1),$3}' \ + > "$tmpdir/shlib_imp.lst" + +find ./* -type f -name '*.o' -print0 \ + | xargs -0 nm -A \ + | grep -E ': {8}{1,2} U ' \ + | sed 's/:/ /g' \ + | awk -vOFS='\t' '{print $1,$3}' \ + > "$tmpdir/obj_imp.lst" + +mapfile -t libs < <(awk '{print $3}' "$tmpdir/ldd.lst" | uniq | sort | uniq) + +nm -AD "${libs[@]}" \ + | grep -E ':[0-9a-f]{8}{1,2} [TWDRC] ' \ + | sed 's/:/ /g' \ + | awk -vOFS='\t' '{print gensub("^[^ ]*/","",1,$1),$4}' \ + > "$tmpdir/libs.lst" + +cat > "$tmpdir/ansi.lst" << EOF abort asctime atexit @@ -278,199 +279,199 @@ fsetpos64 tmpfile64 EOF -dropdb "$dbname" +dropdb --if-exists "$dbname" createdb "$dbname" -psql -n -q -d "$dbname" < 1 ; + SELECT DISTINCT symbol + FROM lib_exp + GROUP BY symbol + HAVING COUNT(*) > 1 ; CREATE TABLE duplicates2 AS - SELECT * - FROM lib_exp - WHERE symbol IN ( - SELECT symbol - FROM duplicates - ) ; + SELECT * + FROM lib_exp + WHERE symbol IN ( + SELECT symbol + FROM duplicates + ) ; SELECT DISTINCT library, symbol - INTO TABLE lib_imp - FROM stlib_imp + INTO TABLE lib_imp + FROM stlib_imp UNION SELECT DISTINCT library, symbol - FROM shlib_imp ; + FROM shlib_imp ; CREATE TABLE imports AS - SELECT a.library, a.symbol - FROM lib_imp a - WHERE NOT EXISTS ( - SELECT b.library, b.symbol - FROM lib_exp b - WHERE b.symbol = a.symbol - AND b.library = a.library - ) ; + SELECT a.library, a.symbol + FROM lib_imp a + WHERE NOT EXISTS ( + SELECT b.library, b.symbol + FROM lib_exp b + WHERE b.symbol = a.symbol + AND b.library = a.library + ) ; CREATE TABLE defined AS - SELECT DISTINCT symbol - FROM lib_exp ; + SELECT DISTINCT symbol + FROM lib_exp ; CREATE TABLE used AS - SELECT DISTINCT symbol - FROM imports ; + SELECT DISTINCT symbol + FROM imports ; CREATE TABLE undefined AS - SELECT symbol - FROM used u - WHERE NOT EXISTS ( - SELECT * - FROM defined d - WHERE d.symbol = u.symbol - ) ; + SELECT symbol + FROM used u + WHERE NOT EXISTS ( + SELECT * + FROM defined d + WHERE d.symbol = u.symbol + ) ; SELECT symbol INTO TABLE undefined_1 - FROM undefined + FROM undefined EXCEPT SELECT b.symbol - FROM undefined a, libs b - WHERE a.symbol = b.symbol ; + FROM undefined a, libs b + WHERE a.symbol = b.symbol ; CREATE TABLE undefined_2 AS - SELECT i.symbol, i.object, i.library - FROM stlib_imp i, undefined_1 u - WHERE i.symbol = u.symbol ; + SELECT i.symbol, i.object, i.library + FROM stlib_imp i, undefined_1 u + WHERE i.symbol = u.symbol ; CREATE TABLE depends AS - SELECT i.library AS im_lib, - i.symbol AS symbol, - e.library AS ex_lib - FROM imports i, lib_exp e - WHERE i.symbol = e.symbol ; + SELECT i.library AS im_lib, + i.symbol AS symbol, + e.library AS ex_lib + FROM imports i, lib_exp e + WHERE i.symbol = e.symbol ; CREATE TABLE lib_deps AS - SELECT DISTINCT im_lib, ex_lib - FROM depends - WHERE im_lib <> ex_lib ; + SELECT DISTINCT im_lib, ex_lib + FROM depends + WHERE im_lib <> ex_lib ; CREATE TABLE lib_deps_1 AS - SELECT a.im_lib, - a.ex_lib AS in_lib, - b.ex_lib - FROM lib_deps a, lib_deps b - WHERE a.ex_lib = b.im_lib ; + SELECT a.im_lib, + a.ex_lib AS in_lib, + b.ex_lib + FROM lib_deps a, lib_deps b + WHERE a.ex_lib = b.im_lib ; CREATE TABLE lib_deps_2 AS - SELECT a.im_lib, - a.in_lib AS in1_lib, - a.ex_lib AS in2_lib, - b.ex_lib - FROM lib_deps_1 a, lib_deps b - WHERE a.ex_lib = b.im_lib - AND a.im_lib <> a.ex_lib ; + SELECT a.im_lib, + a.in_lib AS in1_lib, + a.ex_lib AS in2_lib, + b.ex_lib + FROM lib_deps_1 a, lib_deps b + WHERE a.ex_lib = b.im_lib + AND a.im_lib <> a.ex_lib ; SELECT im_lib, ex_lib INTO TABLE lib_deps_trans - FROM lib_deps + FROM lib_deps UNION SELECT im_lib, ex_lib - FROM lib_deps_1 + FROM lib_deps_1 UNION SELECT im_lib, ex_lib - FROM lib_deps_2 ; + FROM lib_deps_2 ; CREATE TABLE prog_libs AS SELECT DISTINCT a.program, b.library @@ -479,92 +480,92 @@ WHERE a.symbol = b.symbol ; SELECT DISTINCT a.symbol INTO TABLE libc - FROM prog_imp a, libs b - WHERE a.symbol = b.symbol - AND b.library = 'libc.so.6' + FROM prog_imp a, libs b + WHERE a.symbol = b.symbol + AND b.library = 'libc.so.6' UNION - SELECT DISTINCT a.symbol - FROM imports a, libs b - WHERE a.symbol = b.symbol - AND b.library = 'libc.so.6' ; + SELECT DISTINCT a.symbol + FROM imports a, libs b + WHERE a.symbol = b.symbol + AND b.library = 'libc.so.6' ; SELECT symbol INTO nonansi - FROM libc - WHERE symbol !~ '_.*' + FROM libc + WHERE symbol !~ '_.*' EXCEPT SELECT symbol - FROM ansi ; + FROM ansi ; CREATE TABLE nonansi_progs AS - SELECT a.program, a.symbol - FROM prog_imp a, nonansi b - WHERE a.symbol = b.symbol ; + SELECT a.program, a.symbol + FROM prog_imp a, nonansi b + WHERE a.symbol = b.symbol ; CREATE TABLE nonansi_libs AS - SELECT a.library, a.symbol - FROM imports a, nonansi b - WHERE a.symbol = b.symbol ; + SELECT a.library, a.symbol + FROM imports a, nonansi b + WHERE a.symbol = b.symbol ; CREATE TABLE nonansi_prog_counts AS - SELECT symbol, COUNT(*) - FROM nonansi_progs - GROUP BY symbol ; + SELECT symbol, COUNT(*) + FROM nonansi_progs + GROUP BY symbol ; CREATE TABLE nonansi_lib_counts AS - SELECT symbol, COUNT(*) - FROM nonansi_libs - GROUP BY symbol ; + SELECT symbol, COUNT(*) + FROM nonansi_libs + GROUP BY symbol ; SELECT symbol INTO TABLE nonansi_counts - FROM nonansi_prog_counts + FROM nonansi_prog_counts UNION SELECT symbol - FROM nonansi_lib_counts ; + FROM nonansi_lib_counts ; ALTER TABLE nonansi_counts - ADD COLUMN progs INTEGER ; + ADD COLUMN progs INTEGER ; ALTER TABLE nonansi_counts - ADD COLUMN libs INTEGER ; + ADD COLUMN libs INTEGER ; UPDATE nonansi_counts - SET progs = 0, libs = 0 ; + SET progs = 0, libs = 0 ; UPDATE nonansi_counts - SET progs = b.count - FROM nonansi_prog_counts b - WHERE nonansi_counts.symbol = b.symbol ; + SET progs = b.count + FROM nonansi_prog_counts b + WHERE nonansi_counts.symbol = b.symbol ; UPDATE nonansi_counts - SET libs = c.count - FROM nonansi_lib_counts c - WHERE nonansi_counts.symbol = c.symbol; + SET libs = c.count + FROM nonansi_lib_counts c + WHERE nonansi_counts.symbol = c.symbol; -- SELECT a.symbol, a.program --- FROM prog_imp a, nonansi_prog_counts b --- WHERE a.symbol = b.symbol --- AND a.program NOT LIKE 'bin/%' --- ORDER BY b.count DESC, b.symbol ; +-- FROM prog_imp a, nonansi_prog_counts b +-- WHERE a.symbol = b.symbol +-- AND a.program NOT LIKE 'bin/%' +-- ORDER BY b.count DESC, b.symbol ; -- SELECT symbol, library --- FROM duplicates2 --- ORDER BY symbol ; +-- FROM duplicates2 +-- ORDER BY symbol ; -- SELECT a.im_lib, a.ex_lib --- FROM lib_deps a, lib_deps b --- WHERE a.ex_lib = b.im_lib --- AND b.ex_lib = a.im_lib ; +-- FROM lib_deps a, lib_deps b +-- WHERE a.ex_lib = b.im_lib +-- AND b.ex_lib = a.im_lib ; -- SELECT * FROM lib_deps_2 --- WHERE im_lib = ex_lib ; +-- WHERE im_lib = ex_lib ; -- SELECT * FROM lib_deps_1 --- WHERE im_lib = ex_lib ; +-- WHERE im_lib = ex_lib ; -- SELECT im_lib FROM lib_deps_trans --- WHERE im_lib = ex_lib ; +-- WHERE im_lib = ex_lib ; -- SELECT a.program, a.library -- FROM ldd a @@ -578,3 +579,5 @@ UPDATE nonansi_counts -- ---------------------------------------------------------------------- EOF + +rm -rf "$tmpdir"

                    Figure: v.overlay: Line to polygon clipping