From f130b43e6c68d08bd7e839a22dbc65456baae757 Mon Sep 17 00:00:00 2001 From: Alexandre Barreto Date: Tue, 31 Jan 2023 13:21:51 -0500 Subject: [PATCH] r.horizon manual - fix typo (#2794) --- AUTHORS | 38 +- COPYING | 2 +- INSTALL.md | 14 + Makefile | 6 +- README.md | 34 + REQUIREMENTS.md | 145 ++ TODO | 2 +- Vagrantfile | 24 +- aclocal.m4 | 122 +- binaryInstall.src | 34 +- binder/postBuild | 1 - configure | 213 +- configure.ac | 51 + db/Makefile | 1 - db/databaseintro.html | 12 +- db/db.columns/Makefile | 1 - db/db.columns/db.columns.html | 4 +- db/db.connect/Makefile | 1 - db/db.connect/db.connect.html | 8 +- db/db.copy/Makefile | 1 - db/db.copy/db.copy.html | 8 +- db/db.createdb/Makefile | 1 - db/db.databases/Makefile | 1 - db/db.databases/db.databases.html | 2 +- db/db.describe/Makefile | 1 - db/db.describe/db.describe.html | 6 +- db/db.drivers/Makefile | 1 - db/db.dropdb/Makefile | 1 - db/db.execute/Makefile | 1 - db/db.execute/db.execute.html | 8 +- db/db.select/Makefile | 1 - db/db.select/db.select.html | 4 +- db/db.tables/Makefile | 1 - db/db.tables/db.tables.html | 4 +- db/drivers/dbf/cursor.c | 4 + db/drivers/dbf/db.c | 2 +- db/drivers/dbf/driver.c | 2 +- db/drivers/dbf/grass-dbf.html | 16 +- db/drivers/dbf/proto.h | 2 +- db/drivers/dbf/table.c | 4 + db/drivers/mysql/Makefile | 2 +- db/drivers/mysql/cursor.c | 4 + db/drivers/mysql/driver.c | 2 +- db/drivers/mysql/grass-mesql.html | 16 +- db/drivers/mysql/grass-mysql.html | 54 +- db/drivers/mysql/proto.h | 2 +- db/drivers/odbc/TODO | 6 +- db/drivers/odbc/cursor.c | 4 + db/drivers/odbc/driver.c | 2 +- db/drivers/odbc/grass-odbc.html | 4 +- db/drivers/odbc/proto.h | 4 + db/drivers/ogr/README | 1 - db/drivers/ogr/cursor.c | 4 + db/drivers/ogr/db.c | 4 + db/drivers/ogr/driver.c | 4 + db/drivers/ogr/proto.h | 2 +- db/drivers/postgres/README | 3 +- db/drivers/postgres/db.c | 4 +- db/drivers/postgres/driver.c | 2 +- db/drivers/postgres/grass-pg.html | 16 +- db/drivers/sqlite/Makefile | 2 +- db/drivers/sqlite/README | 22 +- db/drivers/sqlite/cursor.c | 4 + db/drivers/sqlite/driver.c | 2 +- db/drivers/sqlite/proto.h | 2 +- .../PERMANENT/vector/country_boundaries/head | 4 +- display/d.colorlist/d.colorlist.html | 2 +- display/d.colortable/d.colortable.html | 32 +- display/d.erase/Makefile | 4 - display/d.font/d.font.html | 78 +- display/d.geodesic/d.geodesic.html | 20 +- display/d.graph/d.graph.html | 122 +- display/d.grid/d.grid.html | 10 +- display/d.grid/plot.c | 10 +- display/d.his/d.his.html | 6 +- display/d.histogram/bar.h | 4 + display/d.histogram/d.histogram.html | 12 +- display/d.histogram/pie.h | 4 + display/d.labels/d.labels.html | 26 +- display/d.legend.vect/Makefile | 2 +- display/d.legend.vect/d.legend.vect.html | 4 +- display/d.legend/README | 1 - display/d.legend/d.legend.html | 14 +- display/d.legend/draw.c | 4 + display/d.linegraph/main.c | 8 +- display/d.mon/d.mon.html | 10 +- display/d.mon/proto.h | 2 +- display/d.mon/start.c | 38 + display/d.path/d.path.html | 4 +- display/d.rast.num/d.rast.num.html | 4 +- display/d.rast/Makefile | 4 - display/d.rhumbline/d.rhumbline.html | 4 +- display/d.text/d.text.html | 37 +- display/d.title/d.title.html | 35 +- display/d.vect.chart/d.vect.chart.html | 6 +- display/d.vect.thematic/d.vect.thematic.html | 14 +- .../d.vect.thematic/d_vect_thematic_leg.txt | 2 +- display/d.vect/d.vect.html | 4 +- display/d.vect/local_proto.h | 2 +- display/d.vect/shape.c | 2 +- display/d.where/d.where.html | 10 +- display/displaydrivers.html | 2 +- doc/README | 2 +- doc/debugging.txt | 39 +- doc/development/rfc/PSC_guidelines.md | 17 + doc/development/rfc/PSC_voting_procedures.md | 46 + .../rfc/language_standards_support.md | 67 + .../legal_aspects_of_code_contributions.md | 9 + doc/development/rfc/migration_github.md | 116 + doc/development/submitting/docs.md | 213 ++ doc/development/submitting/general.md | 261 +++ .../submitting/message_standardization.md | 610 ++++++ doc/development/submitting/python.md | 419 ++++ doc/development/submitting/submitting.md | 72 + doc/development/submitting/submitting_c.md | 427 ++++ doc/development/submitting/wxGUI.md | 137 ++ doc/gui/wxpython/example/README | 4 +- doc/howto_release.md | 99 + doc/html_documentation.txt | 5 +- doc/infrastructure.md | 145 +- doc/notebooks/README.md | 9 + doc/parms_flags.txt | 26 +- doc/projectionintro.html | 10 +- doc/python/README | 2 - doc/raster/r.example/COMMENTS | 30 +- doc/vector/TODO | 2 +- doc/vector/grass51atts.fig | 2 +- doc/vector/grass51concept.fig | 2 +- docker/README.md | 32 + docker/alpine/Dockerfile | 11 + docker/debian/Dockerfile | 50 + docker/ubuntu/Dockerfile | 28 + docker/ubuntu_wxgui/Dockerfile | 263 +++ docker/ubuntu_wxgui/README.md | 88 + general/Makefile | 1 - general/g.access/g.access.html | 8 +- general/g.access/set_perms.c | 2 - general/g.copy/Makefile | 1 - general/g.copy/g.copy.html | 4 +- general/g.dirseps/Makefile | 1 - general/g.filename/g.filename.html | 8 +- general/g.findfile/element.c | 2 +- general/g.findfile/g.findfile.html | 2 +- general/g.findfile/local_proto.h | 4 + general/g.gisenv/Makefile | 4 - general/g.gisenv/g.gisenv.html | 4 + general/g.gui/g.gui.html | 10 +- general/g.mapset/g.mapset.html | 2 +- general/g.message/g.message.html | 2 +- general/g.mkfontcap/g.mkfontcap.html | 10 +- general/g.mkfontcap/stroke_fonts.c | 6 +- general/g.parser/g.parser.html | 4 +- general/g.parser/test.pl | 1 - general/g.parser/test.sh | 1 - general/g.ppmtopng/Makefile | 1 - general/g.proj/create.c | 2 +- general/g.proj/g.proj.html | 46 +- general/g.proj/local_proto.h | 2 +- general/g.region/Makefile | 4 - general/g.region/g.region.html | 12 +- general/g.region/printwindow.c | 4 + general/g.rename/Makefile | 1 - general/g.rename/g.rename.html | 2 +- general/g.setproj/README | 3 +- general/g.setproj/g.setproj.html | 32 +- general/g.tempfile/g.tempfile.html | 32 +- general/g.version/g.version.html | 6 +- general/manage/Makefile | 2 - general/manage/lister/README | 8 +- general/manage/lister/cell.c | 6 +- general/manage/lister/vector.c | 6 +- grasslib.dox | 10 +- gui/icons/grass.appdata.xml | 22 +- gui/icons/grass/LICENSE.TXT | 6 +- .../data/test_toolboxes_user_toolboxes.xml | 1 - gui/wxpython/docs/wxGUI.html | 158 +- gui/wxpython/docs/wxGUI.iscatt.html | 28 +- gui/wxpython/docs/wxGUI.modules.html | 6 +- gui/wxpython/docs/wxGUI.nviz.html | 33 +- gui/wxpython/docs/wxGUI.vnet.html | 2 +- .../_templates/layout.html.template | 2 +- gui/wxpython/docs/wxgui_sphinx/src/index.rst | 1 - .../docs/wxgui_sphinx/src/wxgui_libraries.rst | 2 +- .../docs/wxgui_sphinx/src/wxgui_tools.rst | 2 +- gui/wxpython/gcp/g.gui.gcp.html | 12 +- gui/wxpython/gui_core/goutput.py | 87 +- gui/wxpython/gui_core/prompt.py | 53 +- gui/wxpython/iclass/g.gui.iclass.html | 2 +- .../image2target/g.gui.image2target.html | 15 +- gui/wxpython/lmgr/frame.py | 4 - gui/wxpython/main_window/frame.py | 4 - gui/wxpython/mapdisp/frame.py | 5 + gui/wxpython/mapdisp/toolbars.py | 7 +- .../photo2image/g.gui.photo2image.html | 10 +- gui/wxpython/psmap/g.gui.psmap.html | 51 +- gui/wxpython/rlisetup/g.gui.rlisetup.html | 78 +- gui/wxpython/timeline/g.gui.timeline.html | 2 +- gui/wxpython/vdigit/g.gui.vdigit.html | 26 +- gui/wxpython/xml/grass-gxm.dtd | 2 +- gui/wxpython/xml/grass-gxw.dtd | 4 +- gui/wxpython/xml/main_menu.dtd | 1 - gui/wxpython/xml/main_menu.xml | 1 - gui/wxpython/xml/menudata.README | 2 +- gui/wxpython/xml/module_items.dtd | 1 - gui/wxpython/xml/module_tree.xml | 1 - gui/wxpython/xml/toolboxes.dtd | 1 - gui/wxpython/xml/wxgui_items.dtd | 1 - gui/xml/Makefile | 2 +- gui/xml/README | 3 +- gui/xml/grass-interface.dtd | 10 +- imagery/Makefile | 1 - imagery/i.albedo/i.albedo.html | 6 +- imagery/i.atcorr/BUGS | 6 +- imagery/i.atcorr/Makefile | 3 +- imagery/i.atcorr/README | 11 +- imagery/i.atcorr/create_iwave.py | 2 +- imagery/i.atcorr/i.atcorr.html | 145 +- imagery/i.atcorr/sensors_csv/README | 1 - .../i.atcorr/sensors_csv/sentinel_2B_msi.csv | 2 +- imagery/i.atcorr/test_suite/ETM4.res | 6 +- imagery/i.biomass/i.biomass.html | 14 +- imagery/i.cca/i.cca.html | 16 +- imagery/i.cluster/i.cluster.html | 40 +- .../i_cluster_landsat_clustering.fig | 2 +- imagery/i.cluster/print5.c | 1 - imagery/i.eb.eta/i.eb.eta.html | 10 +- imagery/i.eb.evapfr/i.eb.evapfr.html | 8 +- imagery/i.eb.hsebal01/i.eb.hsebal01.html | 8 +- imagery/i.eb.netrad/i.eb.netrad.html | 11 + .../i.eb.soilheatflux/i.eb.soilheatflux.html | 23 +- imagery/i.emissivity/i.emissivity.html | 2 +- imagery/i.evapo.mh/i.evapo.mh.html | 4 + imagery/i.evapo.pm/i.evapo.pm.html | 47 +- imagery/i.evapo.time/i.evapo.time.html | 4 +- imagery/i.fft/i.fft.html | 2 +- imagery/i.find/Makefile | 1 - imagery/i.gensig/eigen.c | 4 + imagery/i.gensig/i.gensig.html | 24 +- imagery/i.gensigset/i.gensigset.html | 20 +- imagery/i.gensigset/subcluster.c | 22 +- imagery/i.group/i.group.html | 8 +- imagery/i.his.rgb/i.his.rgb.html | 4 +- imagery/i.ifft/i.ifft.html | 47 +- imagery/i.landsat.acca/i.landsat.acca.html | 2 +- imagery/i.landsat.toar/i.landsat.toar.html | 45 +- imagery/i.maxlik/i.maxlik.html | 12 +- imagery/i.modis.qc/i.modis.qc.html | 42 +- imagery/i.ortho.photo/Makefile | 2 - imagery/i.ortho.photo/README | 12 +- imagery/i.ortho.photo/alg_camera_position.txt | 160 +- imagery/i.ortho.photo/alg_photo_rectify.txt | 278 +-- .../i.ortho.camera/i.ortho.camera.html | 21 +- imagery/i.ortho.photo/i.ortho.init/Makefile | 1 - .../i.ortho.init/i.ortho.init.html | 20 +- .../i.ortho.photo/i.ortho.photo.html | 110 +- .../i.ortho.photo/i.ortho.rectify/Makefile | 1 - imagery/i.ortho.photo/i.ortho.rectify/README | 6 +- .../i.ortho.rectify/i.ortho.rectify.html | 36 +- .../i.ortho.transform/i.ortho.transform.html | 20 +- imagery/i.ortho.photo/lib/TODO | 2 +- imagery/i.ortho.photo/lib/georef.c | 4 + imagery/i.ortho.photo/lib/init_info.c | 5 + imagery/i.ortho.photo/lib/orthophoto.h | 7 +- imagery/i.pca/i.pca.html | 34 +- imagery/i.rectify/README | 2 +- imagery/i.rectify/i.rectify.html | 48 +- imagery/i.rgb.his/i.rgb.his.html | 8 +- imagery/i.segment/README | 2 +- imagery/i.segment/i.segment.html | 145 +- imagery/i.segment/iseg.h | 11 +- imagery/i.segment/outline | 18 +- imagery/i.segment/testsuite/test_isegment.py | 2 +- imagery/i.smap/Makefile | 4 - imagery/i.smap/i.smap.html | 28 +- imagery/i.smap/solve.c | 2 +- imagery/i.target/i.target.html | 4 +- imagery/i.topo.corr/Makefile | 1 - imagery/i.topo.corr/i.topo.corr.html | 2 +- imagery/i.topo.corr/i_topo_corr_angles.fig | 2 +- .../test_i.topo.corr_synthetic_DEM_NC.sh | 2 +- imagery/i.vi/i.vi.html | 134 +- imagery/i.zc/i.zc.html | 10 +- imagery/i.zc/main.c | 8 + imagery/imageryintro.html | 70 +- include/Make/Dir.make | 2 +- include/Make/Doxygen.make | 2 +- include/Make/Grass.make | 12 +- include/Make/Install.make | 2 +- include/Make/Other.make | 1 - include/Make/Platform.make.in | 17 +- include/Make/Rules.make | 2 +- include/Make/Stlib.make | 1 - include/Make/Vars.make | 1 - include/grass/defs/cluster.h | 5 + include/grass/defs/gis.h | 18 +- include/grass/defs/nviz.h | 10 +- include/grass/defs/ogsf.h | 8 +- include/grass/defs/raster3d.h | 10 +- include/grass/defs/sqlp.h | 4 +- include/grass/iostream/ami_sort_impl.h | 6 + include/grass/iostream/ami_stream.h | 5 + include/grass/iostream/embuffer.h | 27 + include/grass/iostream/empq_impl.h | 29 + include/grass/iostream/imbuffer.h | 5 + include/grass/iostream/mem_stream.h | 4 + include/grass/iostream/minmaxheap.h | 5 + include/grass/ogsf.h | 24 + include/grass/raster3d.h | 13 + include/grass/segment.h | 9 + include/grass/temporal.h | 8 + include/grass/vect/dig_externs.h | 10 +- lib/Makefile | 1 - lib/arraystats/arraystatslib.dox | 2 +- lib/btree/update.c | 4 + lib/btree2/btree2.dox | 16 +- lib/btree2/kdtree.c | 2 +- lib/cairodriver/Makefile | 1 - lib/cairodriver/cairodriver.dox | 4 +- lib/cairodriver/cairodriver.html | 6 +- lib/cairodriver/read_bmp.c | 19 + lib/calc/xrand.c | 4 + lib/cdhc/README | 4 +- lib/cdhc/cdhclib.dox | 1 - lib/cdhc/doc/goodness.bib | 18 +- lib/cdhc/doc/goodness.tex | 498 ++--- lib/cluster/Makefile | 1 - lib/cluster/c_exec.c | 4 + lib/datetime/README | 46 +- lib/datetime/change.c | 4 + lib/datetime/local.c | 3 + lib/db/README | 4 +- lib/db/dbmi_base/Makefile | 6 +- lib/db/dbmi_base/README | 9 +- lib/db/dbmi_base/dirent.c | 55 +- lib/db/dbmi_base/table.c | 10 + lib/db/dbmi_base/whoami.c | 4 + lib/db/dbmi_client/Makefile | 6 +- lib/db/dbmi_driver/Makefile | 3 +- lib/db/dbmi_driver/d_error.c | 6 +- lib/db/dbmi_driver/driver.c | 2 - lib/db/dbmi_driver/procs.h | 64 +- lib/db/dbmilib.dox | 40 +- lib/db/sqlp/README | 1 - lib/db/sqlp/sql.html | 10 +- lib/db/sqlp/sqlp.l | 29 +- lib/db/sqlp/sqlp.y | 52 +- lib/db/sqlp/test/README | 1 - lib/db/sqlp/test/test | 6 +- lib/db/stubs/Makefile | 1 - lib/driver/Makefile | 1 - lib/driver/font2.c | 5 + lib/dspf/Makefile | 1 - lib/dspf/README | 12 +- lib/dspf/dspf_header.c | 5 + lib/external/Makefile | 2 - lib/external/ccmath/C01-matrix | 12 +- lib/external/ccmath/ccmathlib.dox | 2 +- lib/external/ccmath/ortho.c | 2 +- lib/external/ccmath/ruinv.c | 2 +- lib/external/ccmath/solvru.c | 2 +- lib/external/ccmath/unfl.c | 4 + lib/external/ccmath/unitary.c | 2 +- lib/external/shapelib/README.md | 58 + lib/external/shapelib/dbfopen.c | 1537 ++++++++++++-- lib/external/shapelib/safileio.c | 71 +- lib/external/shapelib/shapefil.h | 108 +- lib/external/shapelib/shpopen.c | 1888 ++++++++++++++--- lib/fonts/Makefile | 2 - lib/gis/README.TYPE | 3 +- lib/gis/asprintf.c | 4 + lib/gis/basename.c | 2 +- lib/gis/cmprbzip.c | 8 +- lib/gis/cmprzlib.c | 15 +- lib/gis/colors/inferno | 1 - lib/gis/colors/magma | 1 - lib/gis/colors/plasma | 1 - lib/gis/colors/population | 2 +- lib/gis/copy_dir.c | 4 + lib/gis/datum.table | 16 +- lib/gis/datumtransform.table | 8 +- lib/gis/ellipse.table | 18 +- lib/gis/ellipse.table.solar.system | 4 +- lib/gis/get_window.c | 4 + lib/gis/gislib.dox | 62 +- lib/gis/gislib_cmdline_parsing.dox | 56 +- lib/gis/ilist.c | 4 + lib/gis/list.c | 12 + lib/gis/ls.c | 4 + lib/gis/new_des | 43 +- lib/gis/parser.c | 4 + lib/gis/parser_dependencies.c | 10 +- lib/gis/parser_interface.c | 6 + lib/gis/parser_wps.c | 8 +- lib/gis/plot.c | 3 +- lib/gis/proj3.c | 8 +- lib/gis/renamed_options | 4 +- lib/gis/snprintf.c | 4 + lib/gis/spawn.c | 6 +- lib/gis/user_config.c | 7 + lib/gmath/Makefile | 6 +- lib/gmath/README | 40 +- lib/gmath/TODO | 1 - lib/gmath/blas_level_1.c | 8 +- lib/gmath/brent.c | 9 + lib/gmath/la.c | 4 + lib/gmath/solvers_classic_iter.c | 37 +- lib/gmath/solvers_krylov.c | 13 +- lib/gmath/sparse_matrix.c | 22 +- lib/gmath/test/Makefile | 5 +- lib/gpde/Makefile | 6 +- lib/gpde/N_pde.h | 16 + lib/gpde/gpdelib.dox | 126 +- lib/gpde/n_les.c | 5 + lib/gpde/n_les_assemble.c | 33 + lib/gpde/test/Makefile | 6 +- lib/htmldriver/README | 40 +- lib/htmldriver/htmldriver.html | 10 +- lib/imagery/imagerylib.dox | 22 +- lib/imagery/iscatt_core.c | 4 + lib/imagery/sig.c | 12 + lib/imagery/sigset.c | 16 + lib/init/README | 1 - lib/init/grass-xterm-mac | 2 +- lib/init/grass.html | 6 +- lib/init/html_browser_mac.sh | 12 +- lib/init/license.txt | 2 +- lib/init/variables.html | 101 +- lib/iostream/ami_stream.cpp | 4 + lib/iostream/rtimer.cpp | 22 + lib/lidar/README | 2 +- lib/lidar/zones.c | 7 + lib/linkm/README | 19 +- lib/linkm/init.c | 3 +- lib/manage/Makefile | 2 +- lib/manage/do_list.c | 8 + lib/manage/element_list | 2 +- lib/manage/sighold.c | 4 + lib/nviz/exag.c | 2 +- lib/nviz/map_obj.c | 2 +- lib/ogsf/README | 26 +- lib/ogsf/TODO | 29 +- lib/ogsf/gpd.c | 4 +- lib/ogsf/gs2.c | 4 + lib/ogsf/gsd_fringe.c | 5 +- lib/ogsf/gsd_surf.c | 99 +- lib/ogsf/gsd_wire.c | 4 + lib/ogsf/gsx.c | 4 + lib/ogsf/gvl2.c | 2 +- lib/ogsf/ogsflib.dox | 2 +- lib/pngdriver/draw_bitmap.c | 4 + lib/pngdriver/pngdriver.html | 4 +- lib/pngdriver/read_bmp.c | 14 + lib/proj/Makefile | 2 +- lib/proj/README.txt | 3 +- lib/proj/datum.c | 4 +- lib/proj/ellipse.c | 5 +- lib/proj/get_proj.c | 23 + lib/proj/projlib.dox | 21 +- lib/psdriver/draw_bitmap.c | 4 + lib/psdriver/psdriver.html | 2 +- lib/raster/Makefile | 2 +- lib/raster/color_look.c | 2 +- lib/raster/format.c | 20 +- lib/raster/get_row.c | 113 + lib/raster/open.c | 4 + lib/raster/put_row.c | 20 +- lib/raster/quant.c | 4 + lib/raster/range.c | 6 +- lib/raster/rasterlib.dox | 28 +- lib/raster3d/cache.c | 22 + lib/raster3d/cache1.c | 19 +- lib/raster3d/cachehash.h | 4 + lib/raster3d/doubleio.c | 18 + lib/raster3d/fpcompress.c | 16 + lib/raster3d/fpxdr.c | 16 + lib/raster3d/index.c | 8 + lib/raster3d/intio.c | 16 + lib/raster3d/long.c | 8 + lib/raster3d/open.c | 4 + lib/raster3d/raster3dlib.dox | 162 +- lib/raster3d/resample.c | 18 + lib/raster3d/rle.c | 2 +- lib/raster3d/test/Makefile | 2 +- lib/raster3d/test/test.raster3d.lib.html | 2 +- lib/raster3d/tilemath.c | 4 + lib/raster3d/tileread.c | 11 +- lib/rst/Makefile | 1 - lib/rst/interp_float/Makefile | 6 +- lib/rst/interp_float/output2d.c | 24 + lib/rst/interp_float/print_tree | 2 - lib/rst/interp_float/resout2d.c | 24 + lib/rst/qtree/qtree.h | 9 + lib/rst/rstlib.dox | 4 +- lib/segment/format.c | 6 +- lib/segment/segmentlib.dox | 106 +- lib/symbol/README | 23 +- lib/symbol/symbol/basic/pushpin | 2 +- lib/symbol/symbol/demo/smrk | 8 +- lib/symbol/symbol/extra/4pt_star | 2 +- lib/symbol/symbol/extra/airport | 4 +- lib/symbol/symbol/extra/alpha_flag | 2 +- lib/symbol/symbol/extra/bridge | 4 +- lib/symbol/symbol/geology/circle_cross | 1 - lib/symbol/symbol/legend/area | 1 - lib/symbol/symbol/legend/area_curved | 1 - lib/symbol/symbol/n_arrows/fancy_compass | 2 +- lib/temporal/Makefile | 1 - lib/temporal/SQL/Makefile | 4 +- lib/temporal/SQL/map_tables_template.sql | 6 +- .../SQL/postgresql_delete_trigger.sql | 1 - lib/temporal/SQL/raster3d_metadata_table.sql | 6 +- lib/temporal/SQL/raster3d_views.sql | 20 +- lib/temporal/SQL/raster_metadata_table.sql | 6 +- lib/temporal/SQL/raster_views.sql | 26 +- lib/temporal/SQL/sqlite3_delete_trigger.sql | 2 - lib/temporal/SQL/sqlite3_indexes.sql | 6 +- .../SQL/stds_map_register_table_template.sql | 2 +- lib/temporal/SQL/stds_tables_template.sql | 13 +- lib/temporal/SQL/str3ds_metadata_table.sql | 2 - lib/temporal/SQL/str3ds_views.sql | 37 +- lib/temporal/SQL/strds_metadata_table.sql | 2 - lib/temporal/SQL/strds_views.sql | 35 +- lib/temporal/SQL/stvds_metadata_table.sql | 3 +- lib/temporal/SQL/stvds_views.sql | 20 +- ..._stds_spatial_temporal_extent_template.sql | 41 +- .../SQL/update_str3ds_metadata_template.sql | 41 +- .../SQL/update_strds_metadata_template.sql | 33 +- .../SQL/update_stvds_metadata_template.sql | 50 +- lib/temporal/SQL/vector_metadata_table.sql | 9 +- lib/temporal/SQL/vector_views.sql | 20 +- lib/temporal/lib/Makefile | 1 - lib/temporal/lib/map_list.c | 4 + lib/vector/Vlib/Makefile | 1 - lib/vector/Vlib/README | 6 +- lib/vector/Vlib/box.c | 12 + lib/vector/Vlib/break_polygons.c | 44 +- lib/vector/Vlib/build.c | 36 +- lib/vector/Vlib/close.c | 23 +- lib/vector/Vlib/open.c | 53 +- lib/vector/Vlib/poly.c | 6 +- lib/vector/Vlib/rewind.c | 8 +- lib/vector/Vlib/snap.c | 55 +- lib/vector/Vlib/write.c | 83 +- lib/vector/Vlib/write_pg.c | 8 + lib/vector/dglib/BUGS | 2 +- lib/vector/dglib/COPYING | 10 +- lib/vector/dglib/README | 12 +- lib/vector/dglib/dglib.dox | 25 +- lib/vector/dglib/examples/README | 1 - lib/vector/dglib/tree.c | 16 +- lib/vector/dglib/tree.h | 18 +- lib/vector/diglib/plus_struct.c | 4 + lib/vector/diglib/portable.c | 48 + lib/vector/diglib/spindex_rw.c | 19 +- lib/vector/diglib/struct_alloc.c | 16 + lib/vector/diglib/test.c | 2 +- lib/vector/neta/Makefile | 2 +- lib/vector/neta/netalib.dox | 2 +- lib/vector/rtree/Makefile.alone | 5 +- lib/vector/rtree/docs/MAILS | 2 - lib/vector/rtree/docs/README.grass | 4 +- lib/vector/rtree/docs/README.txt | 6 +- lib/vector/rtree/gammavol.c | 2 +- lib/vector/vectorascii.html | 6 +- lib/vector/vectorlib.dox | 54 +- lib/vector/vectorlib_ascii.dox | 20 +- lib/vector/vectorlib_faq.dox | 14 +- lib/vector/vectorlib_files.dox | 8 +- lib/vector/vectorlib_indices.dox | 6 +- lib/vector/vectorlib_lists.dox | 4 +- lib/vector/vectorlib_pg.dox | 2 +- lib/vector/vectorlib_tin.dox | 2 +- lib/vector/vectorlib_topology.dox | 2 +- lib/vector/vedit/render.c | 6 +- lib/vector/vedit/veditlib.dox | 2 +- lib/vector/vedit/vertex.c | 12 +- locale/README | 74 +- locale/po/README | 1 - locale/templates/README | 1 - macosx/Makefile | 4 +- macosx/ReadMe.md | 14 +- .../English.lproj/MainMenu.nib/classes.nib | 6 +- macosx/app/GRASS.applescript | 6 +- macosx/app/Makefile | 6 +- macosx/app/PkgInfo | 2 +- macosx/app/build_html_user_index.sh | 8 +- macosx/app/main.m | 3 +- macosx/bundle.make | 8 +- macosx/pkg/resources/ReadMe.rtf | 2 +- man/parser_standard_options.js | 5 +- misc/Makefile | 1 - misc/m.cogo/TODO | 2 +- misc/m.cogo/m.cogo.html | 4 +- misc/m.measure/m.measure.html | 2 +- misc/m.nviz.script/m.nviz.script.html | 2 +- misc/m.transform/m.transform.html | 20 +- mswindows/external/rbatch/clip2r.js | 5 +- mswindows/external/rbatch/el.js | 4 +- ps/Makefile | 2 - ps/ps.map/README | 46 +- ps/ps.map/do_geogrid.c | 10 +- ps/ps.map/do_grid.c | 6 +- ps/ps.map/do_labels.c | 1 - ps/ps.map/outl_io.c | 2 +- ps/ps.map/ps.map.html | 168 +- ps/ps.map/ps_outline.c | 1 - ps/ps.map/r_text.c | 3 + ps/ps.map/scan_gis.c | 4 + python/grass/docs/Makefile | 2 +- python/grass/docs/_static/pygrass.css | 2 +- .../docs/_templates/layout.html.template | 2 +- .../grass/docs/_templates/oholosidebar.html | 2 +- .../docs/src/gunittest_running_tests.rst | 4 +- python/grass/docs/src/gunittest_testing.rst | 14 +- python/grass/docs/src/index.rst | 16 +- python/grass/docs/src/pygrass_gis.rst | 2 +- python/grass/docs/src/pygrass_index.rst | 1 - python/grass/docs/src/pygrass_modules.rst | 2 +- python/grass/docs/src/temporal_framework.rst | 57 +- ...mple_vector_map_ascii_4p_2l_2c_3b_dp14.txt | 30 +- ...map_ascii_4p_2l_2c_3b_dp14_diff_header.txt | 24 +- ...or_map_ascii_4p_2l_2c_3b_dp14_modified.txt | 30 +- python/grass/imaging/README | 13 +- python/grass/pydispatch/PKG-INFO | 6 +- python/grass/pydispatch/license.txt | 15 +- python/grass/pygrass/gis/Makefile | 2 +- python/grass/pygrass/messages/Makefile | 2 +- python/grass/pygrass/modules/grid/Makefile | 2 +- python/grass/pygrass/raster/Makefile | 2 +- python/grass/pygrass/tests/Makefile | 2 +- .../temporal/abstract_space_time_dataset.py | 183 +- python/libgrass_interface_generator/Makefile | 4 + python/libgrass_interface_generator/README.md | 20 + raster/Makefile | 2 +- raster/r.basins.fill/r.basins.fill.html | 48 +- raster/r.basins.fill/testsuite/testrbf.py | 2 +- raster/r.buffer/r.buffer.html | 38 +- raster/r.buildvrt/r.buildvrt.html | 28 +- raster/r.carve/Makefile | 5 +- raster/r.carve/README | 18 +- raster/r.carve/r.carve.html | 7 +- raster/r.category/r.category.html | 6 +- raster/r.circle/main.c | 2 +- raster/r.circle/r.circle.html | 14 +- raster/r.clump/minsize.c | 6 +- raster/r.clump/r.clump.html | 42 +- raster/r.coin/format.c | 4 + raster/r.coin/r.coin.html | 40 +- raster/r.colors/r.colors.html | 8 +- raster/r.colors/tests/example1 | 2 +- raster/r.colors/tests/example3 | 2 +- raster/r.compress/r.compress.html | 144 +- raster/r.contour/Makefile | 5 +- raster/r.contour/README | 2 +- raster/r.contour/r.contour.html | 4 +- raster/r.contour/testsuite/testrc.py | 2 +- raster/r.cost/r.cost.html | 98 +- raster/r.covar/r.covar.html | 50 +- raster/r.cross/r.cross.html | 48 +- raster/r.describe/r.describe.html | 26 +- raster/r.distance/distance.c | 3 - raster/r.distance/edges.c | 4 - raster/r.distance/main.c | 4 - raster/r.distance/r.distance.html | 4 +- raster/r.distance/report.c | 3 - raster/r.drain/README | 4 +- raster/r.drain/r.drain.html | 44 +- raster/r.external.out/r.external.out.html | 2 +- raster/r.external/r.external.html | 16 +- .../testsuite/data/generate_data.sh | 3 + raster/r.fill.dir/README | 8 +- raster/r.fill.dir/r.fill.dir.html | 4 +- raster/r.fill.dir/tinf.c | 14 +- raster/r.fill.dir/tinf.h | 14 +- raster/r.fill.stats/cell_funcs.c | 2 +- raster/r.fill.stats/cell_funcs.h | 2 +- raster/r.fill.stats/main.c | 6 +- raster/r.fill.stats/r.fill.stats.html | 9 +- .../testsuite/data/input_ascii.txt | 14 +- .../testsuite/data/output_mean.txt | 14 +- .../testsuite/data/output_median.txt | 14 +- .../testsuite/data/output_mode.txt | 14 +- .../testsuite/data/output_wmean.txt | 14 +- raster/r.flow/Makefile | 5 +- raster/r.flow/aspect.h | 4 + raster/r.flow/io.h | 8 +- raster/r.flow/mem.h | 8 +- raster/r.flow/precomp.h | 2 +- raster/r.flow/r.flow.html | 4 +- raster/r.geomorphon/geom.c | 16 +- raster/r.geomorphon/local_proto.h | 8 +- raster/r.geomorphon/profile.c | 6 +- raster/r.geomorphon/r.geomorphon.html | 2 +- raster/r.grow.distance/r.grow.distance.html | 26 +- raster/r.gwflow/r.gwflow.html | 18 +- raster/r.his/r.his.html | 6 +- raster/r.horizon/TODO | 2 +- raster/r.horizon/main.c | 28 +- raster/r.horizon/r.horizon.html | 48 +- raster/r.in.ascii/gethead.c | 20 +- raster/r.in.ascii/main.c | 5 +- raster/r.in.ascii/r.in.ascii.html | 40 +- .../r.in.ascii/testsuite/data/input_ascii.txt | 2 +- .../r.in.ascii/testsuite/test_r_in_ascii.py | 2 +- raster/r.in.bin/README | 6 +- raster/r.in.bin/main.c | 8 + raster/r.in.bin/r.in.bin.html | 42 +- raster/r.in.gdal/r.in.gdal.html | 52 +- raster/r.in.gdal/testsuite/data/elevation.prj | 2 +- .../r.in.gdal/testsuite/data/generate_data.sh | 1 - raster/r.in.gridatb/README | 1 - raster/r.in.lidar/info.c | 6 +- raster/r.in.lidar/r.in.lidar.html | 38 +- raster/r.in.mat/main.c | 30 + raster/r.in.mat/r.in.mat.html | 36 +- raster/r.in.pdal/Makefile | 3 + raster/r.in.pdal/info.cpp | 8 + raster/r.in.pdal/main.cpp | 21 + raster/r.in.pdal/r.in.pdal.html | 4 + raster/r.in.png/main.c | 11 + raster/r.in.poly/raster.c | 4 + raster/r.in.xyz/main.c | 5 + raster/r.in.xyz/r.in.xyz.html | 14 +- raster/r.info/r.info.html | 26 +- raster/r.info/testsuite/test_r_info.py | 2 +- raster/r.lake/r.lake.html | 16 +- raster/r.latlong/r.latlong.html | 2 +- raster/r.li/Makefile | 1 - raster/r.li/TODO | 2 - raster/r.li/r.li.cwed/Makefile | 1 - raster/r.li/r.li.cwed/r.li.cwed.html | 4 +- raster/r.li/r.li.cwed/utility.c | 5 + raster/r.li/r.li.daemon/daemon.c | 4 + raster/r.li/r.li.daemon/r.li.daemon.html | 12 +- raster/r.li/r.li.dominance/Makefile | 1 - .../r.li/r.li.dominance/r.li.dominance.html | 4 +- raster/r.li/r.li.edgedensity/Makefile | 2 - .../r.li.edgedensity/r.li.edgedensity.html | 4 +- raster/r.li/r.li.html | 18 +- raster/r.li/r.li.mpa/Makefile | 1 - raster/r.li/r.li.mps/Makefile | 1 - raster/r.li/r.li.mps/r.li.mps.html | 4 +- raster/r.li/r.li.padcv/Makefile | 1 - raster/r.li/r.li.padcv/r.li.padcv.html | 2 +- raster/r.li/r.li.padrange/padrange.c | 177 +- raster/r.li/r.li.padrange/r.li.padrange.html | 4 +- raster/r.li/r.li.padsd/Makefile | 1 - raster/r.li/r.li.padsd/r.li.padsd.html | 4 +- raster/r.li/r.li.patchdensity/Makefile | 1 - .../r.li.patchdensity/r.li.patchdensity.html | 6 +- raster/r.li/r.li.patchnum/main.c | 172 +- raster/r.li/r.li.patchnum/r.li.patchnum.html | 4 +- raster/r.li/r.li.renyi/r.li.renyi.html | 2 +- raster/r.li/r.li.richness/Makefile | 1 - raster/r.li/r.li.shannon/Makefile | 1 - raster/r.li/r.li.shannon/r.li.shannon.html | 2 +- raster/r.li/r.li.shape/Makefile | 1 - raster/r.li/r.li.shape/r.li.shape.html | 4 + raster/r.li/r.li.simpson/Makefile | 1 - raster/r.li/r.li.simpson/r.li.simpson.html | 2 +- raster/r.li/r.li.testing_sp_mov.sh | 2 +- raster/r.mapcalc/map.c | 5 +- raster/r.mapcalc/mapcalc.l | 7 +- raster/r.mapcalc/mapcalc.y | 1 - raster/r.mapcalc/r3.mapcalc.html | 60 +- raster/r.mapcalc/test_suite/README | 4 +- raster/r.mapcalc/testsuite/const_map_test.sh | 1 - raster/r.mfilter/Makefile | 7 + raster/r.mfilter/execute.c | 5 + raster/r.mfilter/filter | 1 - raster/r.mfilter/r.mfilter.html | 8 +- raster/r.mfilter/testsuite/test_r_mfilter.py | 6 + raster/r.mode/r.mode.html | 4 +- raster/r.neighbors/Makefile | 8 + raster/r.neighbors/r.neighbors.html | 58 +- raster/r.null/r.null.html | 12 +- .../r.object.geometry/r.object.geometry.html | 21 + raster/r.out.bin/README | 18 +- raster/r.out.bin/main.c | 4 + raster/r.out.bin/r.out.bin.html | 4 +- raster/r.out.gdal/main.c | 8 + raster/r.out.gdal/r.out.gdal.html | 34 +- raster/r.out.gridatb/README | 1 - raster/r.out.mat/r.out.mat.html | 26 +- raster/r.out.mpeg/README | 8 +- raster/r.out.mpeg/r.out.mpeg.html | 10 +- raster/r.out.mpeg/rom_proto.h | 8 +- raster/r.out.pov/r.out.pov.html | 4 +- raster/r.out.ppm/r.out.ppm.html | 20 +- raster/r.out.vrml/r.out.vrml.html | 4 +- raster/r.out.vtk/r.out.vtk.html | 60 +- raster/r.param.scale/README | 5 +- raster/r.param.scale/cols.sh | 3 - raster/r.param.scale/disp_matrix.c | 7 + raster/r.patch/Makefile | 8 + raster/r.patch/r.patch.html | 28 +- raster/r.path/main.c | 36 + raster/r.path/r.path.html | 58 +- raster/r.profile/r.profile.html | 8 +- raster/r.proj/Makefile | 6 +- raster/r.proj/r.proj.html | 18 +- raster/r.quant/r.quant.html | 2 +- raster/r.quant/read_rules.c | 6 +- raster/r.quantile/r.quantile.html | 9 + raster/r.random.cells/README | 9 +- raster/r.random.cells/init.c | 2 +- raster/r.random.cells/local_proto.h | 2 +- raster/r.random.cells/r.random.cells.html | 10 +- raster/r.random.surface/r.random.surface.html | 10 +- raster/r.reclass/r.reclass.html | 12 +- raster/r.reclass/testsuite/test_r_reclass.py | 2 +- raster/r.recode/r.recode.html | 4 +- raster/r.recode/read_rules.c | 6 +- raster/r.recode/recode.c | 4 + .../r.regression.line/r.regression.line.html | 9 +- raster/r.regression.multi/main.c | 4 + raster/r.relief/r.relief.html | 24 +- raster/r.report/format.c | 4 + raster/r.report/global.h | 1 - raster/r.report/main.c | 1 - raster/r.resamp.bspline/Makefile | 1 - raster/r.resamp.bspline/r.resamp.bspline.html | 10 +- raster/r.resamp.bspline/resamp.c | 4 +- raster/r.resamp.filter/Makefile | 4 +- .../benchmark/benchmark_r_resamp_filter.py | 59 + raster/r.resamp.filter/main.c | 157 +- raster/r.resamp.filter/r.resamp.filter.html | 20 +- .../r_resamp_filter_benchmark_size.png | Bin 0 -> 35068 bytes .../testsuite/test_r_resamp_filter.py | 289 +++ raster/r.resamp.interp/Makefile | 7 + raster/r.resamp.interp/r.resamp.interp.html | 2 +- raster/r.resamp.rst/BUGS | 3 +- raster/r.resamp.rst/DESCRIPTION | 43 +- raster/r.resamp.rst/HISTORY | 4 +- raster/r.resamp.rst/Makefile | 2 +- raster/r.resamp.rst/README | 20 +- raster/r.resamp.rst/main.c | 5 + raster/r.resamp.rst/r.resamp.rst.html | 54 +- raster/r.resample/r.resample.html | 2 +- raster/r.rescale.eq/r.rescale.eq.html | 4 +- raster/r.rescale/r.rescale.html | 4 +- raster/r.series.accumulate/Makefile | 5 +- raster/r.series.accumulate/main.c | 5 + .../r.series.accumulate.html | 78 +- .../test_suite/test.r.series.accumulate.sh | 20 +- raster/r.series.interp/r.series.interp.html | 14 +- .../testsuite/data/outfile_1.txt | 2 - raster/r.series/Makefile | 8 + raster/r.series/main.c | 25 + raster/r.series/r.series.html | 82 +- raster/r.series/test_suite/test.r.series.sh | 10 +- raster/r.sim/Makefile | 1 - raster/r.sim/r.sim.sediment/Makefile | 8 +- .../r.sim/r.sim.sediment/r.sim.sediment.html | 40 +- raster/r.sim/r.sim.water/Makefile | 8 +- raster/r.sim/r.sim.water/r.sim.water.html | 74 +- raster/r.sim/simlib/Makefile | 6 +- raster/r.sim/simlib/hydro.c | 12 + raster/r.sim/simlib/input.c | 6 +- raster/r.sim/simlib/observation_points.c | 2 +- raster/r.sim/simlib/output.c | 2 +- raster/r.sim/simlib/simlib.h | 8 +- raster/r.sim/simlib/waterglobs.h | 2 +- raster/r.slope.aspect/Makefile | 8 + raster/r.slope.aspect/r.slope.aspect.html | 50 +- .../testsuite/data/gdal_aspect.grd | 21 +- .../testsuite/data/gdal_slope.grd | 21 +- raster/r.solute.transport/main.c | 6 +- .../r.solute.transport.html | 15 +- raster/r.spread/ram2out.c | 1 - raster/r.spreadpath/r.spreadpath.html | 10 +- raster/r.statistics/gauss.dat | 1004 ++++----- raster/r.statistics/o_adev.c | 3 +- raster/r.statistics/o_kurt.c | 3 +- raster/r.statistics/o_sdev.c | 3 +- raster/r.statistics/o_skew.c | 3 +- raster/r.statistics/o_var.c | 3 +- raster/r.statistics/r.statistics.html | 6 +- raster/r.stats.quantile/r.stats.quantile.html | 13 +- raster/r.stats.zonal/r.stats.zonal.html | 6 +- raster/r.stats/cell_stats.c | 1 - raster/r.stats/r.stats.html | 4 +- raster/r.stats/raw_stats.c | 1 - raster/r.stream.extract/r.stream.extract.html | 34 +- raster/r.sun/Makefile | 6 +- raster/r.sun/README | 62 +- raster/r.sun/TODO | 5 +- raster/r.sun/local_proto.h | 18 +- raster/r.sun/r.sun.html | 84 +- raster/r.sun/rsunlib.c | 12 +- raster/r.sunhours/r.sunhours.html | 12 +- raster/r.sunmask/README | 4 +- raster/r.sunmask/TODO | 1 - raster/r.sunmask/r.sunmask.html | 4 +- raster/r.support.stats/r.support.stats.html | 2 +- raster/r.support/Makefile | 2 - raster/r.support/main.c | 15 + raster/r.support/r.support.html | 10 +- raster/r.surf.area/local_proto.h | 4 +- raster/r.surf.area/r.surf.area.html | 2 +- raster/r.surf.contour/addpts.c | 2 - raster/r.surf.contour/r.surf.contour.html | 8 +- raster/r.surf.fractal/README | 3 +- raster/r.surf.fractal/r.surf.fractal.html | 2 +- raster/r.surf.gauss/README | 5 +- raster/r.surf.idw/r.surf.idw.html | 18 +- raster/r.surf.random/r.surf.random.html | 2 +- raster/r.terraflow/ccforest.h | 12 + raster/r.terraflow/common.cpp | 10 + raster/r.terraflow/fill.cpp | 36 + raster/r.terraflow/genericWindow.h | 37 + raster/r.terraflow/main.cpp | 16 + raster/r.terraflow/nodata.h | 4 + raster/r.terraflow/plateau.h | 4 + raster/r.terraflow/r.terraflow.html | 12 +- raster/r.terraflow/stats.cpp | 36 + raster/r.terraflow/sweep.cpp | 9 + raster/r.terraflow/sweep.h | 102 + raster/r.terraflow/types.h | 5 + raster/r.terraflow/water.cpp | 8 + raster/r.texture/r.texture.html | 66 +- raster/r.texture/testsuite/test_texture.py | 2 +- raster/r.thin/r.thin.html | 14 +- raster/r.thin/thin_lines.c | 2 +- raster/r.tile/r.tile.html | 2 +- raster/r.tile/testsuite/testrt.py | 2 +- raster/r.timestamp/r.timestamp.html | 2 +- .../test_suite/test.r.timestamp.sh | 35 +- raster/r.to.rast3/main.c | 6 +- raster/r.to.rast3/r.to.rast3.html | 4 +- .../r.to.rast3/test_suite/test.r.to.rast3.sh | 6 +- raster/r.to.rast3elev/main.c | 6 +- raster/r.to.rast3elev/r.to.rast3elev.html | 21 +- raster/r.to.rast3elev/test.r.to.rast3elev.sh | 6 +- raster/r.to.vect/Makefile | 3 +- raster/r.to.vect/areas.c | 14 +- raster/r.to.vect/r.to.vect.html | 20 +- raster/r.topidx/README | 1 - raster/r.topidx/topidx.c | 6 +- raster/r.transect/r.transect.html | 2 +- raster/r.univar/Makefile | 8 + raster/r.univar/r.univar.html | 62 +- raster/r.univar/r.univar_main.c | 7 +- raster/r.univar/r3.univar_main.c | 13 +- raster/r.univar/stats.c | 25 + raster/r.uslek/prct2tex.c | 26 + raster/r.uslek/r.uslek.html | 3 + raster/r.viewshed/BUGS | 2 +- raster/r.viewshed/Makefile | 1 - raster/r.viewshed/grass.cpp | 63 +- raster/r.viewshed/main.cpp | 7 +- raster/r.viewshed/r.viewshed.html | 38 +- raster/r.volume/r.volume.html | 4 +- raster/r.walk/r.walk.html | 46 +- raster/r.watershed/Makefile | 2 - raster/r.watershed/front/main.c | 7 +- raster/r.watershed/front/r.watershed.html | 40 +- raster/r.watershed/shed/com_line.c | 32 +- raster/r.watershed/shed/print.c | 24 + raster/r.what/r.what.html | 10 +- raster/r.what/testsuite/testrw.py | 2 +- raster/rasterintro.html | 106 +- raster3d/Makefile | 1 - raster3d/r3.cross.rast/main.c | 6 +- raster3d/r3.cross.rast/test.r3.cross.rast.sh | 10 +- raster3d/r3.flow/Makefile | 2 +- raster3d/r3.flow/r3.flow.html | 2 +- raster3d/r3.gradient/r3.gradient.html | 4 +- .../r3.gradient/testsuite/data/test_map_1 | 100 +- .../r3.gradient/testsuite/data/test_map_2 | 50 +- raster3d/r3.gwflow/r3.gwflow.html | 2 +- raster3d/r3.in.ascii/main.c | 6 +- raster3d/r3.in.ascii/r3.in.ascii.html | 12 +- raster3d/r3.in.bin/r3.in.bin.html | 20 +- .../r3.in.bin/test_suite/test.r3.in.bin.sh | 10 +- raster3d/r3.in.lidar/info.c | 3 +- raster3d/r3.in.lidar/r3.in.lidar.html | 2 +- raster3d/r3.in.v5d/main.c | 6 +- raster3d/r3.info/r3.info.html | 4 + raster3d/r3.mask/r3.mask.html | 4 + raster3d/r3.mkdspf/r3.mkdspf.html | 7 +- raster3d/r3.neighbors/main.c | 2 +- raster3d/r3.neighbors/r3.neighbors.html | 30 +- .../test_suite/test.r3.neighbors.sh | 12 +- raster3d/r3.null/r3.null.html | 4 + raster3d/r3.null/testsuite/test.r3.null.sh | 8 +- raster3d/r3.out.ascii/main.c | 4 +- raster3d/r3.out.ascii/r3.out.ascii.html | 64 +- raster3d/r3.out.ascii/test.r3.out.ascii.sh | 12 +- raster3d/r3.out.netcdf/main.c | 14 +- raster3d/r3.out.netcdf/r3.out.netcdf.html | 50 +- .../test_suite/test.r3.out.netcdf.sh | 6 +- raster3d/r3.out.v5d/BUG | 5 +- raster3d/r3.out.v5d/main.c | 4 +- raster3d/r3.out.v5d/r3.out.v5d.html | 4 +- raster3d/r3.out.vtk/r3.out.vtk.html | 20 +- raster3d/r3.out.vtk/test.r3.out.vtk.sh | 6 +- raster3d/r3.retile/main.c | 6 +- raster3d/r3.retile/r3.retile.html | 4 +- raster3d/r3.retile/test.r3.retile.sh | 18 +- raster3d/r3.showdspf/README | 2 +- raster3d/r3.showdspf/TODO | 2 +- raster3d/r3.showdspf/r3.showdspf.html | 22 +- raster3d/r3.stats/r3.stats.html | 8 +- raster3d/r3.stats/test.r3.stats.sh | 10 +- raster3d/r3.support/Makefile | 2 - raster3d/r3.support/main.c | 15 + raster3d/r3.support/r3.support.html | 4 +- raster3d/r3.timestamp/r3.timestamp.html | 2 +- .../test_suite/test.r3.timestamp.sh | 35 +- raster3d/r3.to.rast/main.c | 6 +- raster3d/r3.to.rast/r3.to.rast.html | 12 +- raster3d/r3.to.rast/test.r3.to.rast.sh | 12 +- raster3d/raster3dintro.html | 6 +- renovate.json | 7 + rpm/grass-pkgconfig.patch | 8 + scripts/Makefile | 1 - scripts/d.frame/d.frame.html | 14 +- scripts/d.out.file/d.out.file.html | 4 + scripts/d.polar/d.polar.html | 2 +- scripts/d.rast.edit/d.rast.edit.html | 2 +- scripts/d.rast.leg/d.rast.leg.html | 8 +- scripts/d.redraw/d.redraw.html | 4 + scripts/d.to.rast/d.to.rast.html | 4 + scripts/d.what.rast/d.what.rast.html | 4 + scripts/d.what.vect/d.what.vect.html | 4 + scripts/db.in.ogr/db.in.ogr.html | 2 +- scripts/db.test/README | 2 +- scripts/db.test/db.test.html | 2 +- scripts/db.test/test1 | 2 +- scripts/g.extension/g.extension.html | 8 +- scripts/i.band.library/landsat.json | 4 + scripts/i.band.library/sentinel.json | 104 + .../i.colors.enhance/i.colors.enhance.html | 2 +- scripts/i.in.spotvgt/i.in.spotvgt.html | 2 +- scripts/i.oif/i.oif.html | 36 +- scripts/i.pansharpen/i.pansharpen.html | 2 +- scripts/i.spectral/README | 9 +- scripts/i.tasscap/i.tasscap.html | 2 +- scripts/m.proj/m.proj.html | 8 +- scripts/r.buffer.lowmem/r.buffer.lowmem.html | 4 +- scripts/r.drain/Makefile | 2 +- scripts/r.drain/README | 4 +- scripts/r.drain/r.drain.html | 44 +- scripts/r.fillnulls/r.fillnulls.html | 6 +- scripts/r.grow/r.grow.html | 34 +- scripts/r.import/testsuite/data/data2.prj | 2 +- scripts/r.in.aster/r.in.aster.html | 18 +- scripts/r.in.srtm/r.in.srtm.html | 4 +- scripts/r.in.wms/r.in.wms.html | 4 +- .../testsuite/test_rmapcalcsimple.py | 2 +- scripts/r.mask/r.mask.html | 67 + scripts/r.out.xyz/r.out.xyz.html | 2 +- scripts/r.plane/r.plane.html | 2 +- scripts/r.reclass.area/r.reclass.area.html | 2 +- scripts/r.reclass.area/testsuite/testrra.py | 2 +- scripts/r.unpack/test_suite/test.r.unpack.sh | 2 +- scripts/v.centroids/v.centroids.html | 2 +- scripts/v.clip/v.clip.html | 4 +- scripts/v.db.addtable/v.db.addtable.html | 8 +- scripts/v.db.droprow/v.db.droprow.html | 4 +- scripts/v.db.droptable/v.db.droptable.html | 2 +- .../v.db.reconnect.all.html | 26 +- .../v.db.renamecolumn/v.db.renamecolumn.html | 2 +- scripts/v.db.univar/v.db.univar.html | 6 +- scripts/v.import/v.import.html | 11 +- scripts/v.in.geonames/v.in.geonames.html | 4 +- scripts/v.in.mapgen/v.in.mapgen.html | 4 +- scripts/v.in.wfs/v.in.wfs.html | 2 +- scripts/v.report/v.report.html | 4 +- scripts/v.unpack/testsuite/test.v.unpack.sh | 8 +- scripts/v.what.vect/v.what.vect.html | 6 +- temporal/Makefile | 1 - temporal/benchmark.sh | 3 +- temporal/run_all_tests.sh | 2 +- temporal/t.connect/Makefile | 1 - temporal/t.copy/t.copy.html | 3 + temporal/t.info/testsuite/test.t.info.sh | 1 - temporal/t.list/t.list.html | 12 +- temporal/t.merge/t.merge.html | 34 +- temporal/t.merge/testsuite/test.t.merge.sh | 6 +- .../t.rast.accdetect/t.rast.accdetect.html | 88 +- .../t.rast.accumulate/t.rast.accumulate.html | 76 +- .../t.rast.aggregate.ds.html | 86 +- .../testsuite/test.t.rast.aggregate.ds.sh | 4 +- temporal/t.rast.algebra/t.rast.algebra.html | 58 +- temporal/t.rast.colors/test.t.rast.colors.sh | 2 +- temporal/t.rast.contour/t.rast.contour.html | 20 +- temporal/t.rast.export/test.t.rast.export.sh | 4 +- temporal/t.rast.gapfill/t.rast.gapfill.html | 12 +- temporal/t.rast.import/t.rast.import.html | 2 +- .../test.t.rast.import.relative.sh | 6 +- temporal/t.rast.import/test.t.rast.import.sh | 4 +- .../test.t.rast.import_locations.sh | 2 +- .../t.rast.list/testsuite/test_t_rast_list.sh | 4 + temporal/t.rast.mapcalc/example.sh | 1 - temporal/t.rast.mapcalc/t.rast.mapcalc.html | 2 +- .../test.t.rast.mapcalc.operators.sh | 2 +- .../t.rast.mapcalc/test.t.rast.mapcalc.sh | 2 +- .../t.rast.neighbors/test.t.rast.neighbors.sh | 2 +- temporal/t.rast.out.vtk/t.rast.out.vtk.html | 14 +- .../t.rast.out.vtk/test.t.rast.out.vtk.sh | 12 +- temporal/t.rast.series/t.rast.series.html | 21 + temporal/t.rast.series/test.t.rast.series.sh | 2 +- .../t.rast.series/test_t.sereis_bug_3223.sh | 1 - temporal/t.rast.to.rast3/t.rast.to.rast3.html | 8 +- temporal/t.rast.to.vect/t.rast.to.vect.html | 16 +- temporal/t.rast.what/t.rast.what.html | 10 +- .../t.rast3d.algebra/t.rast3d.algebra.html | 4 +- .../t.rast3d.extract/t.rast3d.extract.html | 6 +- .../testsuite/test.t.rast3d.list.sh | 4 +- .../t.rast3d.mapcalc/t.rast3d.mapcalc.html | 8 +- .../t.rast3d.mapcalc/test.t.rast3d.mapcalc.sh | 2 +- temporal/t.rast3d.univar/t.rast3d.univar.html | 2 +- temporal/t.register/t.register.html | 4 +- .../t.register/test.t.register.raster.file.sh | 2 +- .../test.t.register.vector.file.layer.sh | 8 +- temporal/t.register/test.t.register.vector.sh | 2 - temporal/t.rename/test.t.rename.sh | 4 +- temporal/t.sample/t.sample.html | 36 +- temporal/t.sample/testsuite/test.t.sample.sh | 8 +- temporal/t.select/t.select.html | 76 +- temporal/t.shift/t.shift.html | 42 +- temporal/t.snap/test.t.snap.absolute.sh | 8 +- temporal/t.snap/test.t.snap.relative.sh | 4 +- temporal/t.support/test.t.support.sh | 4 +- .../t.topology/test.t.topology.abstime.sh | 6 +- .../t.topology/test.t.topology.reltime.sh | 6 +- temporal/t.vect.algebra/t.vect.algebra.html | 136 +- .../t.vect.db.select/test.t.vect.db.select.sh | 3 +- temporal/t.vect.export/test.t.vect.export.sh | 4 +- temporal/t.vect.extract/t.vect.extract.html | 8 +- .../test.t.vect.extract.layer.sh | 6 +- .../t.vect.extract/test.t.vect.extract.sh | 2 +- temporal/t.vect.import/t.vect.import.html | 2 +- .../testsuite/test.t.vect.import.sh | 3 +- .../testsuite/test.t.vect.list.layer.sh | 14 +- .../t.vect.list/testsuite/test.t.vect.list.sh | 4 +- .../t.vect.observe.strds.html | 22 +- .../test.t.vect.observe.strds.layer_bug.sh | 2 +- .../test.t.vect.observe.strds.relative.sh | 2 +- .../testsuite/test.t.vect.observe.strds.sh | 4 +- .../testsuite/test.t.vect.univar.sh | 7 +- .../t.vect.what.strds/t.vect.what.strds.html | 2 +- .../test.t.vect.what.strds.layer.sh | 14 +- .../test.t.vect.what.strds.sh | 6 +- .../test.t.vect.what.strds_relative.sh | 4 +- testsuite/Makefile | 1 - testsuite/README.md | 3 + .../test_framework_GRASS_GIS_with_NC.sh | 1 - testsuite/raster/README | 1 - testsuite/raster/rhemisphere.sh | 1 - translators.csv | 2 +- utils/copywrite.pl | 1 - utils/dep_tree2sql.sh | 2 +- utils/fix_typos.sh | 1 - utils/grass_indent.sh | 4 + utils/module_synopsis.sh | 2 +- utils/pep8config.txt | 1 - utils/pylintrc.txt | 1 - utils/release.yml | 4 + utils/symbol_to_img.sh | 2 +- utils/timer/main.c | 2 +- vector/Makefile | 1 - vector/v.buffer/main.c | 4 + vector/v.buffer/v.buffer.html | 12 +- vector/v.build.polylines/Makefile | 1 - vector/v.build.polylines/README | 26 +- .../v.build.polylines/v.build.polylines.html | 14 +- vector/v.build/Makefile | 5 +- vector/v.category/Makefile | 1 - vector/v.category/v.category.html | 50 +- vector/v.class/Makefile | 5 +- vector/v.class/v.class.html | 4 +- vector/v.clean/Makefile | 3 +- vector/v.clean/test/v.clean.test | 47 +- vector/v.clean/test/v.rand.poly | 1 - vector/v.clean/v.clean.html | 140 +- vector/v.cluster/main.c | 8 + vector/v.cluster/v.cluster.html | 110 +- vector/v.db.connect/Makefile | 5 +- vector/v.db.connect/v.db.connect.html | 6 +- vector/v.db.select/Makefile | 5 +- vector/v.decimate/main.c | 2 +- vector/v.delaunay/Makefile | 4 +- vector/v.delaunay/memory.c | 10 +- vector/v.delaunay/memory.h | 4 +- vector/v.delaunay/v.delaunay.html | 8 +- vector/v.distance/Makefile | 5 +- vector/v.distance/distance.c | 4 + vector/v.distance/v.distance.html | 2 +- vector/v.drape/Makefile | 1 - vector/v.drape/spearfish.pov | 29 +- vector/v.edit/v.edit.html | 10 +- vector/v.external.out/list.c | 2 +- vector/v.external.out/v.external.out.html | 2 +- vector/v.external/Makefile | 2 +- vector/v.external/local_proto.h | 2 +- vector/v.external/main.c | 2 +- vector/v.external/v.external.html | 4 +- vector/v.extract/Makefile | 5 +- vector/v.extract/testsuite/test_v_extract.py | 2 +- vector/v.extract/v.extract.html | 18 +- vector/v.generalize/Makefile | 5 +- vector/v.generalize/displacement.c | 68 + vector/v.generalize/v.generalize.html | 280 +-- vector/v.hull/README | 1 - vector/v.hull/v.hull.html | 2 +- vector/v.in.ascii/v.in.ascii.html | 12 +- vector/v.in.db/v.in.db.html | 2 +- vector/v.in.dwg/README | 4 +- vector/v.in.dwg/WARNING | 2 +- vector/v.in.dxf/Makefile | 1 - vector/v.in.lidar/Makefile | 1 - vector/v.in.lidar/v.in.lidar.html | 38 +- vector/v.in.ogr/Makefile | 1 - vector/v.in.ogr/main.c | 5 + .../testsuite/data/precip_30ynormals_3d.prj | 6 +- vector/v.in.ogr/v.in.ogr.html | 92 +- vector/v.in.pdal/Makefile | 2 - vector/v.in.region/Makefile | 1 - vector/v.in.region/v.in.region.html | 2 +- vector/v.info/v.info.html | 4 +- vector/v.kcv/v.kcv.html | 6 +- vector/v.kernel/Makefile | 5 +- vector/v.kernel/global.h | 4 + vector/v.kernel/v.kernel.html | 28 +- vector/v.label.sa/annealing.c | 14 +- vector/v.label.sa/labels.c | 3 +- vector/v.label/Makefile | 1 - vector/v.label/v.label.html | 22 +- vector/v.lidar.correction/Makefile | 1 - .../v.lidar.correction.html | 64 +- vector/v.lidar.edgedetection/Makefile | 3 +- .../v.lidar.edgedetection.html | 76 +- vector/v.lidar.growing/Makefile | 1 - vector/v.lidar.growing/growing.c | 31 +- vector/v.lidar.growing/main.c | 14 +- vector/v.lidar.growing/v.lidar.growing.html | 59 +- vector/v.lrs/MAIL | 44 +- vector/v.lrs/Makefile | 1 - vector/v.lrs/lib/Makefile | 2 - vector/v.lrs/lrs.html | 46 +- vector/v.lrs/v.lrs.create/Makefile | 6 +- vector/v.lrs/v.lrs.create/v.lrs.create.html | 2 +- vector/v.lrs/v.lrs.label/Makefile | 1 - vector/v.lrs/v.lrs.segment/Makefile | 1 - vector/v.lrs/v.lrs.where/Makefile | 1 - vector/v.mkgrid/v.mkgrid.html | 28 +- vector/v.neighbors/Makefile | 2 +- vector/v.neighbors/v.neighbors.html | 10 +- vector/v.net.alloc/Makefile | 4 - vector/v.net.alloc/v.net.alloc.html | 66 +- vector/v.net.allpairs/Makefile | 2 +- vector/v.net.allpairs/v.net.allpairs.html | 24 +- vector/v.net.bridge/Makefile | 2 +- vector/v.net.bridge/v.net.bridge.html | 28 +- vector/v.net.centrality/Makefile | 2 +- vector/v.net.centrality/v.net.centrality.html | 31 +- vector/v.net.components/Makefile | 2 +- vector/v.net.components/v.net.components.html | 37 +- vector/v.net.connectivity/Makefile | 2 +- .../v.net.connectivity.html | 8 +- vector/v.net.distance/Makefile | 2 +- vector/v.net.distance/v.net.distance.html | 62 +- vector/v.net.flow/Makefile | 2 +- vector/v.net.flow/v.net.flow.html | 29 +- vector/v.net.iso/Makefile | 4 - vector/v.net.iso/v.net.iso.html | 68 +- vector/v.net.path/Makefile | 4 - vector/v.net.path/v.net.path.html | 56 +- vector/v.net.salesman/Makefile | 4 - vector/v.net.salesman/v.net.salesman.html | 44 +- vector/v.net.spanningtree/Makefile | 2 +- .../v.net.spanningtree.html | 18 +- vector/v.net.steiner/Makefile | 4 - vector/v.net.steiner/main.c | 12 +- vector/v.net.steiner/v.net.steiner.html | 14 +- vector/v.net.timetable/Makefile | 2 +- vector/v.net.timetable/v.net.timetable.html | 124 +- vector/v.net.visibility/Makefile | 4 - vector/v.net.visibility/data_structures.c | 6 +- vector/v.net.visibility/data_structures.h | 8 +- vector/v.net.visibility/v.net.visibility.html | 30 +- vector/v.net/Makefile | 5 +- vector/v.net/v.net.html | 139 +- vector/v.normal/v.normal.html | 12 +- vector/v.out.ascii/v.out.ascii.html | 10 +- vector/v.out.dxf/Makefile | 1 - vector/v.out.lidar/Makefile | 1 - vector/v.out.ogr/local_proto.h | 2 +- vector/v.out.ogr/v.out.ogr.html | 6 +- vector/v.out.pov/Makefile | 1 - vector/v.out.svg/v.out.svg.html | 2 +- vector/v.out.vtk/v.out.vtk.html | 18 +- vector/v.out.vtk/writeVTK.c | 6 +- vector/v.outlier/Makefile | 1 - vector/v.overlay/Makefile | 3 +- vector/v.overlay/line_area.c | 5 +- vector/v.overlay/v.overlay.html | 54 +- vector/v.parallel/Makefile | 1 - vector/v.patch/Makefile | 3 +- vector/v.patch/v.patch.html | 14 +- vector/v.perturb/main.c | 4 + vector/v.perturb/perturb.h | 2 +- vector/v.perturb/v.perturb.html | 2 +- vector/v.perturb/zufall.c.README | 10 +- vector/v.perturb/zufall.f77.README | 58 +- vector/v.proj/Makefile | 3 +- vector/v.proj/v.proj.html | 12 +- vector/v.qcount/cressie.vm | 9 +- vector/v.qcount/findquads.c | 9 +- vector/v.qcount/v.qcount.html | 2 +- vector/v.random/main.c | 8 + vector/v.random/test.v.random.sh | 2 +- vector/v.random/v.random.html | 16 +- vector/v.reclass/Makefile | 1 - vector/v.reclass/v.reclass.html | 6 +- vector/v.rectify/v.rectify.html | 64 +- vector/v.sample/README | 2 +- vector/v.sample/v.sample.html | 8 +- vector/v.segment/Makefile | 1 - vector/v.segment/v.segment.html | 2 +- vector/v.select/Makefile | 3 +- vector/v.select/v.select.html | 6 +- vector/v.split/Makefile | 1 - vector/v.split/main.c | 4 + vector/v.split/v.split.html | 4 +- vector/v.surf.bspline/Makefile | 1 - vector/v.surf.bspline/resamp.c | 4 +- .../v.surf.bspline/test_suite/profile_cmd.sh | 1 - vector/v.surf.bspline/v.surf.bspline.html | 36 +- vector/v.surf.idw/v.surf.idw.html | 12 +- vector/v.surf.rst/BUGS | 2 - vector/v.surf.rst/DESCRIPTION | 43 +- vector/v.surf.rst/HISTORY | 4 +- vector/v.surf.rst/Makefile | 9 +- vector/v.surf.rst/README | 20 +- vector/v.surf.rst/main.c | 5 + vector/v.surf.rst/test_suite/profile.sh | 2 - vector/v.surf.rst/v.surf.rst.html | 10 +- .../test_suite/test.v.timestamp.sh | 17 +- vector/v.to.3d/Makefile | 2 +- vector/v.to.db/Makefile | 5 +- vector/v.to.db/parse.c | 6 +- vector/v.to.db/update.c | 2 +- vector/v.to.db/v.to.db.html | 4 +- vector/v.to.points/Makefile | 1 - vector/v.to.points/v.to.points.html | 2 +- vector/v.to.rast/Makefile | 5 +- vector/v.to.rast/do_lines.c | 2 +- vector/v.to.rast/v.to.rast.html | 26 +- vector/v.to.rast3/Makefile | 5 +- vector/v.to.rast3/test.v.to.rast3.sh | 2 +- vector/v.transform/Makefile | 1 - vector/v.transform/v.transform.html | 6 +- vector/v.type/Makefile | 1 - vector/v.univar/Makefile | 5 +- vector/v.univar/main.c | 5 + vector/v.univar/testsuite/v_univar_test.py | 2 +- vector/v.univar/v.univar.html | 28 +- vector/v.vect.stats/Makefile | 3 +- .../v.vect.stats/testsuite/test_vect_stats.py | 2 +- vector/v.vect.stats/v.vect.stats.html | 2 +- vector/v.vol.rst/README | 2 - vector/v.vol.rst/dataoct.h | 14 +- vector/v.vol.rst/main.c | 13 - vector/v.vol.rst/oct.c | 18 +- vector/v.vol.rst/oct.h | 35 +- vector/v.vol.rst/user.h | 39 +- vector/v.vol.rst/user1.c | 48 +- vector/v.vol.rst/user3.c | 4 +- vector/v.vol.rst/user4.c | 2 +- vector/v.vol.rst/v.vol.rst.html | 78 +- vector/v.voronoi/README | 10 +- vector/v.voronoi/skeleton.c | 4 + vector/v.voronoi/sw_main.c | 9 +- vector/v.voronoi/v.voronoi.html | 30 +- vector/v.what.rast/Makefile | 5 +- vector/v.what.rast3/Makefile | 5 +- .../v.what.rast3/test_suite/random_points.txt | 48 +- vector/v.what.rast3/v.what.rast3.html | 4 +- vector/v.what/Makefile | 4 - vector/v.what/v.what.html | 10 +- vector/vectorintro.html | 102 +- visualization/ximgview/main.c | 8 + 1386 files changed, 19634 insertions(+), 8768 deletions(-) create mode 100644 REQUIREMENTS.md create mode 100644 doc/development/submitting/docs.md create mode 100644 doc/development/submitting/general.md create mode 100644 doc/development/submitting/message_standardization.md create mode 100644 doc/development/submitting/python.md create mode 100644 doc/development/submitting/submitting.md create mode 100644 doc/development/submitting/submitting_c.md create mode 100644 doc/development/submitting/wxGUI.md create mode 100644 docker/ubuntu_wxgui/Dockerfile create mode 100644 docker/ubuntu_wxgui/README.md create mode 100644 lib/external/shapelib/README.md create mode 100644 raster/r.resamp.filter/benchmark/benchmark_r_resamp_filter.py create mode 100644 raster/r.resamp.filter/r_resamp_filter_benchmark_size.png create mode 100644 raster/r.resamp.filter/testsuite/test_r_resamp_filter.py create mode 100644 renovate.json diff --git a/AUTHORS b/AUTHORS index e6bd7268db4..c2fe35635e5 100644 --- a/AUTHORS +++ b/AUTHORS @@ -152,7 +152,7 @@ DOCUMENTATION GUI - Radim Blazek : primary author of d.m and v.digit - - Michael Barton : tcltkgrass menu system + - Michael Barton : tcltkgrass menu system partial rewrite and integration into d.m - Multibyte FreeType Font Support: www.FOSS4G.org team @@ -168,7 +168,7 @@ INTERNATIONALIZATION - Arabic: Dr. Alaa Masoud - Chinese: Zhang Jun - Czech: Martin Landa, Jachym Cepicky, Michal Bil, Radim Blazek - - German: Stephan Holl + - German: Stephan Holl - French: Emmanuel Saracco, Daniel Calvelo, Laurent Courty - Italian: Maurizio Napolitano, Luciano Montanaro, Lorenzo Moretti - Japanese: Susumu Nonogaki @@ -221,7 +221,7 @@ VECTOR - Radim Blazek : vector engine core developer - David D Gray: vector engine contributions - modules: see individual authors and ./contributors.csv - + DBMI - based on original code from GRASS 5.0 (developer unknown, CERL?) - Radim Blazek : core developer of 5.7 enhancements @@ -233,7 +233,7 @@ DGLib: vector networking network analysis FORMS library - - Radim Blazek : core developer + - Radim Blazek : core developer RASTER - Modules: see 5.4 authors below + individual modules @@ -273,8 +273,8 @@ GRASS GIS 5.4 Author List Please check additionally the GRASS 1.x-5.0 credits list at: https://grass.osgeo.org/about/credits/ -While it is impossible for us to give credit to everyone (past -and present) who has contributed to GRASS, the following is the +While it is impossible for us to give credit to everyone (past +and present) who has contributed to GRASS, the following is the incomplete official list for GRASS 5.0-5.4: Institutions: @@ -285,31 +285,31 @@ Institutions: GRASS 5 Core Team (most have CVS write access): Michael Barton (tcltkgrass menus) - Roger Bivand ("R" statistical language + Roger Bivand ("R" statistical language support) Radim Blazek (DBMS support, ps.map, d.dm) Hamish Bowman (ps.map,display,rasters, ...) Huidae Cho (FreeType,r.topmodel,r.topidx, ..) Glynn Clements (Code portability, ...) - Bob Covill (NVIZ export formats, + Bob Covill (NVIZ export formats, r.in|out.bin) Jaro Hofierka (NVIZ port, grid3D and related) Paul Kelly (PROJ4, datum trafo, IRIX ...) Lubos Mitas (multivariate spline - interpolation (RST) + interpolation (RST) and erosion modeling) Helena Mitasova (interpolation modules, NVIZ, RASTER3D, erosion modelling) - Eric G. Miller (sites format, new autoconf + Eric G. Miller (sites format, new autoconf system, bugfixes etc.) Roger S. Miller (raster modules, r.drain etc.) Markus Neteler (GRASS 5 coordination, this&that ...) Bernhard Reiter (License, CVS, Bugfixes, RT) Alexander Shevlakov (PostgreSQL/GRASS interface) Mike Thomas (generic Windows driver) - Jan-Oliver Wagner (XML-support, + Jan-Oliver Wagner (XML-support, Module descriptions) - Frank Warmerdam (GDAL, SHAPE implementation, + Frank Warmerdam (GDAL, SHAPE implementation, new GRASS I/O library) Michel Wurtz (ESRI E00 support) @@ -320,11 +320,11 @@ Former programmers (GRASS 5.0): Malcolm Blue (Windows NT/Cygnus port) Jacques Bouchard (tcltkgrass, bugfixes) David D. Gray (Vector, SQL support) - Justin Hickey (GRASS initialization, + Justin Hickey (GRASS initialization, new env var handling, SGI) John Huddleston (Windows NT/Cygnus port) Bill Hughes (64bit compliance) - Andreas Lange (SGI/Irix compliance, + Andreas Lange (SGI/Irix compliance, Proj/Datum support) Brook Milligan (initial autoconf implementation) Phisan Santitamnont (initial Linux compilation @@ -364,12 +364,12 @@ Former GRASS 4 development (1984 to 1995): Former Institutions - University of Illinois at Urbana-Champaign, USA Helena Mitasova (interpolation modules, NVIZ, RASTER3D) - William Brown (libraries, interpolation modules, + William Brown (libraries, interpolation modules, NVIZ, RASTER3D) - National Center for Supercomputing Applications, USA Lubos Mitas (multivariate spline interpolation (RST) and erosion modeling) - + - High Performance Computing Center, Thailand National Electronics and Computer Technology Center Bangkok, Thailand @@ -386,9 +386,9 @@ development team, listed below, as many are still active in the project and GRASS GIS owes much of itself to the generosity of their bright minds. -GRASS 6.0 was made up of entirely new code for much of the vector and -database management subsystems. The raster, display, and projection -subsystems are largely directly inherited from GRASS 5.4 without change. +GRASS 6.0 was made up of entirely new code for much of the vector and +database management subsystems. The raster, display, and projection +subsystems are largely directly inherited from GRASS 5.4 without change. The core GIS, GUI, and build subsystems are a hybrid of old and new code. diff --git a/COPYING b/COPYING index 4ef68133d93..21779528e32 100644 --- a/COPYING +++ b/COPYING @@ -32,7 +32,7 @@ GRASS Development Team at the following address: GRASS Development Team c/o Markus Neteler mundialis GmbH & Co. KG - Kölnstrasse 99 + Kölnstrasse 99 53111 Bonn, Germany neteler AT osgeo.org diff --git a/INSTALL.md b/INSTALL.md index ca7badd398b..fb565ff62d2 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -25,8 +25,13 @@ Please read _all_ text below. The install order matters. GRASS needs at least two libraries which have to be installed before installing/compiling GRASS: +<<<<<<< HEAD For links to the software, see ./REQUIREMENTS.html in this directory: +======= +For links to the software, see [REQUIREMENTS.md](REQUIREMENTS.md) in this +directory. +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) Installation order: @@ -70,7 +75,11 @@ The command, ``` explains the options used to disable the compilation of non-mandatory +<<<<<<< HEAD GRASS modules. See REQUIREMENTS.html for details on dependencies. +======= +GRASS modules. See [REQUIREMENTS.md](REQUIREMENTS.md) for details on dependencies. +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) Detailed Wiki notes for various operating systems (MS-Windows, GNU/Linux distributions, FreeBSD, AIX, etc) are available at: @@ -282,7 +291,12 @@ better settings to us): CFLAGS="-mcpu=athlon -O2" # AMD Athlon processor with code optimisations CFLAGS="-mcpu=pentium" # Intel Pentium processor CFLAGS="-mcpu=pentium4" # Intel Pentium4 processor +<<<<<<< HEAD CFLAGS="-O2 -msse -msse2 -mfpmath=sse -minline-all-stringops" # Intel XEON 64bit processor +======= +CFLAGS="-O2 -msse -msse2 -mfpmath=sse \ + -minline-all-stringops" # Intel XEON 64bit processor +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) CFLAGS="-mtune=nocona -m64 -minline-all-stringops" # Intel Pentium 64bit processor ``` diff --git a/Makefile b/Makefile index 5d060f4dfb3..44846f45446 100644 --- a/Makefile +++ b/Makefile @@ -51,7 +51,11 @@ DIRS = \ SUBDIRS = $(DIRS) +<<<<<<< HEAD FILES = AUTHORS CHANGES CITING COPYING GPL.TXT INSTALL.md REQUIREMENTS.html contributors.csv contributors_extra.csv translators.csv +======= +FILES = AUTHORS CHANGES CITING COPYING GPL.TXT INSTALL.md REQUIREMENTS.md contributors.csv contributors_extra.csv translators.csv +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) FILES_DST = $(patsubst %,$(ARCH_DISTDIR)/%,$(FILES)) default: @@ -106,7 +110,7 @@ libs: $(MAKE) subdirs SUBDIRS=$(LIBDIRS) $(MAKE) $(FILES_DST) -cleandistdirs: +cleandistdirs: -rm -rf $(ARCH_DISTDIR) -rm -rf $(ARCH_BINDIR) diff --git a/README.md b/README.md index 9777dd1ff7b..1829d89a245 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,12 @@ a Geographic Information System used for geospatial data management and analysis, image processing, graphics/map production, spatial modeling, and visualization. +<<<<<<< HEAD Launch this repository in Binder and experiment with GRASS's Python API in Jupyter Notebooks by clicking the button below: +======= +Launch this repository in Binder and experiment with GRASS's Python API in +Jupyter Notebooks by clicking the button below: +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) [![Binder](https://camo.githubusercontent.com/581c077bdbc6ca6899c86d0acc6145ae85e9d80e6f805a1071793dbe48917982/68747470733a2f2f6d7962696e6465722e6f72672f62616467655f6c6f676f2e737667)](https://mybinder.org/v2/gh/OSGeo/grass/main?urlpath=lab%2Ftree%2Fdoc%2Fnotebooks%2Fjupyter_example.ipynb) @@ -36,13 +41,24 @@ Want to become a core developer? See > See the INSTALL.md file. +<<<<<<< HEAD Yes, you should really read [INSTALL.md](INSTALL.md). In addition, there are detailed [compile instructions](https://grasswiki.osgeo.org/wiki/Compile_and_Install) in the Wiki. +======= +Yes, you should really read [INSTALL.md](INSTALL.md). In addition, there are +detailed [compile instructions](https://grasswiki.osgeo.org/wiki/Compile_and_Install) +in the Wiki. +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) ## Docker Build a docker image using the downloaded source code (run this in the directory containing the source code): +<<<<<<< HEAD +======= +A. Docker image **without graphical user interface - wxGUI**. + +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) ```bash docker build -t grassgis . ``` @@ -76,6 +92,24 @@ docker run -it --rm --user=$(id -u):$(id -g) \ --location nc_basic_spm_grass7 --location-type nc ``` +B. Docker image **with graphical user interface - wxGUI**. + +```bash +docker build -t grassgis -f docker/ubuntu_wxgui/Dockerfile . +``` + +Note that the first `grassgis` is the name of the image while the second +`grass` is the name of the executable. + +```bash +xhost local:$(id -u) +docker run -it --privileged --user=$(id -u):$(id -g) --rm \ + --volume="$(pwd)/:/data" --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" \ + --env HOME=/data/ --env DISPLAY=$DISPLAY \ + --device="/dev/dri/card0:/dev/dri/card0" \ + grassgis grass --gui +``` + Note: If you compiled locally before building the Docker image, you may encounter problems as the local configuration and the locally compiled files are copied to and used in the Docker image. To make sure you don't have diff --git a/REQUIREMENTS.md b/REQUIREMENTS.md new file mode 100644 index 00000000000..b9fd04e7456 --- /dev/null +++ b/REQUIREMENTS.md @@ -0,0 +1,145 @@ +# Requirements to compile GRASS GIS 8 + +A workstation running some flavor of UNIX including +GNU/Linux, Solaris, IRIX, BSD, Mac OSX, Cygwin or MinGW (on Win32/Win64). +Ideally, you should have at least 800 MB of free disk space. +The source code package needs disk space of around +26 MB compressed and 440MB uncompressed. +The resulting binaries may need between 20 MB and 180 MB +depending on your platform and compiler flags. +During a full compilation you may need temporarily up to +550MB including the source code. + +To enable and disable features please read the [INSTALL.md](INSTALL.md) file. + +## General requirements + +Most tools are standard tools on GNU/Linux, +for other platforms you may have to install some of them. + +- **C-compiler** (cc, gcc, egcs, ...) + gcc: [https://www.gnu.org/software/gcc/gcc.html](https://www.gnu.org/software/gcc/gcc.html) +- **GNU make** is recommended (at least version 3.81) + [https://www.gnu.org/software/make/make.html](https://www.gnu.org/software/make/make.html) +- **zlib** compression library (already installed on most modern systems) + It is used to internally compress GRASS raster maps. + libz: [https://www.zlib.net](https://www.zlib.net) +- **flex** lexical analyzer generator (flex) + _Note: lex is no longer supported, please use flex instead._\ + flex: [https://github.com/westes/flex](https://github.com/westes/flex) +- **parser generator** (yacc, bison) + bison: [https://www.gnu.org/software/bison/bison.html](https://www.gnu.org/software/bison/bison.html) +- **PROJ** - Cartographic Projection Library + PROJ: [https://proj.org/](https://proj.org/) +- **GDAL/OGR** for import and export of most external raster and vector map formats + GDAL: [https://gdal.org](https://gdal.org) +- **Python >= 3.7** (for temporal framework, scripts, wxGUI, and ctypes interface) + [https://www.python.org](https://www.python.org) + +## Optional packages + +Note: also the respective development packages (commonly named `xxx-dev` or +`xxx-devel`) need to be installed. + +- **C++ Compiler** (required for various C++ GRASS modules) + gcc: [https://www.gnu.org/software/gcc/gcc.html](https://www.gnu.org/software/gcc/gcc.html) +- **bzip2**, needed for raster compression with bzip2 + [https://www.bzip.org](https://www.bzip.org) +- **zstd** (Zstandard), needed for raster compression with zstd + [https://facebook.github.io/zstd](https://facebook.github.io/zstd) +- **FFTW 2.x or 3.x** (library for computing the Discrete Fourier Transform), + required for `i.fft` and `i.ifft` and other modules + [http://www.fftw.org](http://www.fftw.org) +- **GEOS** (Geometry Engine library), + needed for `v.buffer` and adds extended options to the `v.select` module + [https://libgeos.org/](https://libgeos.org/) +- **LAPACK / BLAS** (libraries for numerical computing) for GMATH library + (GRASS Numerical Library) + [https://www.netlib.org/lapack](https://www.netlib.org/lapack) (usually + available on Linux distros) + _Note: LAPACK/BLAS support is at time only needed for selected Addons._ +- **NetCDF** (for 3D raster netcdf export) + [https://www.unidata.ucar.edu/software/netcdf/](https://www.unidata.ucar.edu/software/netcdf/) +- **Mesa-3.x**, if hardware OpenGL support is missing in the X Server (OpenGL + clone) may be required for wxNVIZ + [https://mesa3d.org/](https://mesa3d.org/) +- **libpng** (for `r.out.png` and the PNG driver), usually already installed. + [http://www.libpng.org/pub/png/libpng.html](http://www.libpng.org/pub/png/libpng.html) +- **libtiff** (for `r.out.tiff`), usually already installed. + [https://gitlab.com/libtiff/libtiff](https://gitlab.com/libtiff/libtiff) +- **readline** for extra command prompt functionality + [https://tiswww.case.edu/~chet/readline/rltop.html](https://tiswww.case.edu/~chet/readline/rltop.html) + [ftp://ftp.gnu.org/gnu/readline](ftp://ftp.gnu.org/gnu/readline) +- **PostgreSQL libraries** (for the PostgreSQL database interface and PostGIS support) + [https://www.postgresql.org](https://www.postgresql.org) +- **MariaDB/MySQL libraries** (for the MySQL database interface) + [https://mariadb.org/](https://mariadb.org/) +- **SQLite libraries** (for the SQLite database interface) + [https://www.sqlite.org](https://www.sqlite.org) +- **unixODBC** (for the ODBC database interface) + [http://www.unixodbc.org](http://www.unixodbc.org) +- **R Statistics** (for the R statistical language interface) + [https://cran.r-project.org](https://cran.r-project.org) +- **FreeType2** (for TrueType font support and `d.text.freetype`) + [https://freetype.org/](https://freetype.org/) +- **Ctypes** (for ctypes interface) + Ctypes can be added as a third-party module in Python 2.3 and + 2.4 - [https://pypi.org/project/ctypes/1.0.2/](https://pypi.org/project/ctypes/1.0.2/) + [https://docs.python.org/library/ctypes.html](https://docs.python.org/library/ctypes.html) +- **wxPython >= 2.8.10.1** (for wxGUI) + [https://www.wxpython.org](https://www.wxpython.org) +- **NumPy >= 1.0.4** (for various wxGUI components and pyGRASS) + [https://numpy.org](https://numpy.org) +- **Python dateutil Library** (`python-dateutil`, needed for the tgrass modules `t.*`) + [https://pypi.org/project/python-dateutil/](https://pypi.org/project/python-dateutil/) + [https://github.com/dateutil/dateutil](https://github.com/dateutil/dateutil) +- **Python PLY Library (Python Lex-Yacc)** (`python-ply`, needed for the + temporal algebra in tgis) + [https://www.dabeaz.com/ply](https://www.dabeaz.com/ply/) +- **Pillow (Python Imaging Library)** (highly recommended for wxGUI and + necessary for wxGUI Cartographic Composer) + [https://python-pillow.org/](https://python-pillow.org/) +- **Python matplotlib > 1.2** (`python-matplotlib`, needed for the several wxGUI + tools) + [https://matplotlib.org/](https://matplotlib.org/) +- **Python wxPython backend for python-matplotlib** + ("python-matplotlib-wx", needed for e.g. `g.gui.timeline`) + [https://matplotlib.org/](https://matplotlib.org/) +- **python-termcolor** (recommended for `g.search.modules`) + [https://pypi.org/project/termcolor/](https://pypi.org/project/termcolor/) +- **six** (`python-six`, needed for Python API and for cross-version Python + compatibility) + [https://pypi.python.org/pypi/six](https://pypi.python.org/pypi/six) + [https://github.com/benjaminp/six](https://github.com/benjaminp/six) +- **FFMPEG or alternative** (for wxGUI Animation tool - `g.gui.module`), + specifically ffmpeg tool + [https://ffmpeg.org](https://ffmpeg.org) +- **mpeg_encode or ppmtompeg tool** (for `r.out.mpeg` module) + [https://ffmpeg.org](https://ffmpeg.org) +- **Cairo >= 1.5.8** (for Cairo driver) + [https://cairographics.org](https://cairographics.org) +- **AVCE00 and E00Compr Libraries** (avcimport) + [http://avce00.maptools.org](http://avce00.maptools.org) +- **git** (git for `g.extension`) + [https://git-scm.com](https://git-scm.com) +- **Subversion** (svn in `g.extension` to fetch code selectively from grass-addons + on GitHub) + [https://subversion.apache.org/](https://subversion.apache.org/) + +## Note + +SUN Solaris users may go here to download precompiled libraries etc.: +[https://www.sunfreeware.com](https://www.sunfreeware.com) + +SGI IRIX users may go here to download precompiled libraries etc.: +[https://freeware.sgi.com](https://freeware.sgi.com) + +MacOSX users may go here to download precompiled libraries etc.: +[https://fink.sourceforge.net](https://fink.sourceforge.net) + +--- + +© _GRASS Development Team 1997-2023_ + +Please report bugs here: +[https://grass.osgeo.org/contribute/](https://grass.osgeo.org/contribute/) diff --git a/TODO b/TODO index a637c93667a..510d38dfa6b 100644 --- a/TODO +++ b/TODO @@ -8,7 +8,7 @@ - i18n translations -> 6.1.0 +> 6.1.0 ------- Vector TODO: see doc/vector/TODO diff --git a/Vagrantfile b/Vagrantfile index 16499ba3f8b..e3e2f5d8fe3 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -9,24 +9,24 @@ require 'socket' VAGRANTFILE_API_VERSION = "2" Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| - + vm_ram = ENV['VAGRANT_VM_RAM'] || 1024 vm_cpu = ENV['VAGRANT_VM_CPU'] || 1 - + config.vm.box = "bionic64" - + config.vm.hostname = "grass-gis-vagrant" config.vm.box_url = "https://cloud-images.ubuntu.com/bionic/current/bionic-server-cloudimg-amd64-vagrant.box" config.vm.define "grass-gis-vagrant" do |host| - + config.vm.network :forwarded_port, guest: 80, host: 8080 - + host.vm.provider :virtualbox do |vb| vb.customize ["modifyvm", :id, "--memory", vm_ram] vb.customize ["modifyvm", :id, "--cpus", vm_cpu] vb.customize ["modifyvm", :id, "--ioapic", "on"] vb.name = "grass-gis-vagrant" - end + end config.ssh.forward_agent = true config.ssh.forward_x11 = true @@ -34,11 +34,11 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| ### Define your GRASS data directory to be synce'd on virtual machine # grassdata_dir = "/opt/grassdata" # host.vm.synced_folder grassdata_dir, "/home/vagrant/grassdata" - + ppaRepos = [ "ppa:ubuntugis/ubuntugis-unstable" ] - + packageList = [ "autoconf2.13", "autotools-dev", @@ -80,22 +80,22 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| "zlib1g-dev", "liblas-c-dev" ] - + unless File.exists?(".no_apt_cache") cache_dir = "apt-cache/#{config.vm.box}" FileUtils.mkdir_p(cache_dir) unless Dir.exists?(cache_dir) host.vm.synced_folder cache_dir, "/var/cache/apt/archives" end - + if Dir.glob("#{File.dirname(__FILE__)}/.vagrant/machines/grass-gis-vagrant/*/id").empty? pkg_cmd = "sed -i 's#deb http://archive.ubuntu.com/ubuntu#deb mirror://mirrors.ubuntu.com/mirrors.txt#' /etc/apt/sources.list; " pkg_cmd << "apt-get update -qq; apt-get install -q -y python-software-properties; " - + if ppaRepos.length > 0 ppaRepos.each { |repo| pkg_cmd << "add-apt-repository -y " << repo << " ; " } pkg_cmd << "apt-get update -qq; " end - + # install packages we need we need pkg_cmd << "apt-get install -q -y " + packageList.join(" ") << " ; " host.vm.provision :shell, :inline => pkg_cmd diff --git a/aclocal.m4 b/aclocal.m4 index f28665ef75b..59b3b014787 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -215,7 +215,11 @@ AC_MSG_CHECKING($3 version) ac_save_cppflags="$CPPFLAGS" CPPFLAGS="$5 $CPPFLAGS" AC_RUN_IFELSE([AC_LANG_SOURCE([[ +<<<<<<< HEAD #include +======= +#include +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) #include <$1> int main(void) { FILE *fp = fopen("conftestdata","w"); @@ -376,7 +380,7 @@ AC_SUBST(EXEEXT)]) # # Arguments: # none -# +# # Results: # # Adds the following arguments to configure: @@ -538,8 +542,8 @@ AC_DEFUN([SC_CONFIG_CFLAGS], [ ;; *-solaris2*) # Note: Solaris is as of 2010 Oracle Solaris, not Sun Solaris - # Oracle Solaris derives from Solaris 2 - # derives from SunOS 5 + # Oracle Solaris derives from Solaris 2 + # derives from SunOS 5 # derives from UNIX System V Release 4 # Note: If _REENTRANT isn't defined, then Solaris # won't define thread-safe library routines. @@ -571,7 +575,11 @@ AC_DEFUN([SC_CONFIG_CFLAGS], [ LDFLAGS="-Wl,--export-dynamic" #LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS='-Wl,-rpath-link,${LIB_RUNTIME_DIR} -Wl,-rpath,${INST_DIR}/lib' +<<<<<<< HEAD # TODO: add optional pthread support with any combination of: +======= + # TODO: add optional pthread support with any combination of: +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) # CFLAGS="$CFLAGS -pthread" # LDFLAGS="$LDFLAGS -lpthread" # AC_DEFINE(_REENTRANT, 1, [define _REENTRANT flag (for SunOS)]) @@ -593,7 +601,7 @@ AC_DEFUN([SC_CONFIG_CFLAGS], [ # NetBSD 6 does handle version numbers with dots. STLIB_SUFFIX=".a" SHLIB_SUFFIX=".so" - # TODO: add optional pthread support with any combination of: + # TODO: add optional pthread support with any combination of: # CFLAGS="$CFLAGS -pthread" # LDFLAGS="$LDFLAGS -lpthread" # AC_DEFINE(_REENTRANT, 1, [define _REENTRANT flag (for SunOS)]) @@ -638,8 +646,111 @@ AC_DEFUN([SC_CONFIG_CFLAGS], [ AC_SUBST(STLIB_SUFFIX) ]) +dnl -------------------- OpenMP ----------------------------------------------- +dnl OpenMP code borrowed and modified from Autoconf 2.69 (AC_OPENMP) +dnl to enable Clang detection + +# _LOC_LANG_OPENMP +# --------------- +# Expands to some language dependent source code for testing the presence of +# OpenMP. +AC_DEFUN([_LOC_LANG_OPENMP], +[AC_LANG_SOURCE([_AC_LANG_DISPATCH([$0], _AC_LANG, $@)])]) + +# _LOC_LANG_OPENMP(C) +# ------------------ +m4_define([_LOC_LANG_OPENMP(C)], +[ +#ifndef _OPENMP + choke me +#endif +#include +int main () { return omp_get_num_threads (); } +]) + +# _LOC_LANG_OPENMP(C++) +# -------------------- +m4_copy([_LOC_LANG_OPENMP(C)], [_LOC_LANG_OPENMP(C++)]) -dnl XXXX Begin Stolen from cdrtools-2.01 +# _LOC_LANG_OPENMP(Fortran 77) +# --------------------------- +m4_define([_LOC_LANG_OPENMP(Fortran 77)], +[ + program main + implicit none +!$ integer tid + tid = 42 + call omp_set_num_threads(2) + end +]) + +# _LOC_LANG_OPENMP(Fortran) +# ------------------------ +m4_copy([_LOC_LANG_OPENMP(Fortran 77)], [_LOC_LANG_OPENMP(Fortran)]) + +# LOC_OPENMP +# --------- +# Check which options need to be passed to the C compiler to support OpenMP. +# Set the OPENMP_CFLAGS / OPENMP_CXXFLAGS / OPENMP_FFLAGS variable to these +# options. +# The options are necessary at compile time (so the #pragmas are understood) +# and at link time (so the appropriate library is linked with). +# This macro takes care to not produce redundant options if $CC $CFLAGS already +# supports OpenMP. It also is careful to not pass options to compilers that +# misinterpret them; for example, most compilers accept "-openmp" and create +# an output file called 'penmp' rather than activating OpenMP support. +AC_DEFUN([LOC_OPENMP], +[ + OPENMP_[]_AC_LANG_PREFIX[]FLAGS= + AC_ARG_ENABLE([openmp], + [AS_HELP_STRING([--disable-openmp], [do not use OpenMP])]) + if test "$enable_openmp" != no; then + AC_CACHE_CHECK([for $[]_AC_CC[] option to support OpenMP], + [ac_cv_prog_[]_AC_LANG_ABBREV[]_openmp], + [AC_LINK_IFELSE([_LOC_LANG_OPENMP], + [ac_cv_prog_[]_AC_LANG_ABBREV[]_openmp='none needed'], + [ac_cv_prog_[]_AC_LANG_ABBREV[]_openmp='unsupported' + dnl Try these flags: + dnl GCC >= 4.2 -fopenmp + dnl SunPRO C -xopenmp + dnl Intel C -openmp + dnl SGI C, PGI C -mp + dnl Tru64 Compaq C -omp + dnl IBM C (AIX, Linux) -qsmp=omp + dnl Cray CCE -homp + dnl NEC SX -Popenmp + dnl Lahey Fortran (Linux) --openmp + dnl Clang (Apple) -Xclang -fopenmp + dnl If in this loop a compiler is passed an option that it doesn't + dnl understand or that it misinterprets, the AC_LINK_IFELSE test + dnl will fail (since we know that it failed without the option), + dnl therefore the loop will continue searching for an option, and + dnl no output file called 'penmp' or 'mp' is created. + for ac_option in -fopenmp -xopenmp -openmp -mp -omp -qsmp=omp -homp \ + -Popenmp --openmp '-Xclang -fopenmp'; do + ac_save_[]_AC_LANG_PREFIX[]FLAGS=$[]_AC_LANG_PREFIX[]FLAGS + _AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $ac_option" + AC_LINK_IFELSE([_LOC_LANG_OPENMP], + [ac_cv_prog_[]_AC_LANG_ABBREV[]_openmp=$ac_option]) + _AC_LANG_PREFIX[]FLAGS=$ac_save_[]_AC_LANG_PREFIX[]FLAGS + if test "$ac_cv_prog_[]_AC_LANG_ABBREV[]_openmp" != unsupported; then + break + fi + done])]) + case $ac_cv_prog_[]_AC_LANG_ABBREV[]_openmp in #( + "none needed" | unsupported) + ;; #( + *) + OPENMP_[]_AC_LANG_PREFIX[]FLAGS=$ac_cv_prog_[]_AC_LANG_ABBREV[]_openmp ;; + esac + fi + AC_SUBST([OPENMP_]_AC_LANG_PREFIX[FLAGS]) +]) + +dnl -------------------- / OpenMP --------------------------------------------- + + +dnl XXXX Begin Stolen from cdrtools-2.01 dnl XXXX by Joerg Schilling et al. XXXXXXXXX dnl XXXXXXXXX Begin Stolen (but modified) from GNU tar XXXXXXXXXXXXXXXXXXXXX @@ -829,4 +940,3 @@ if test $ac_cv_func_ftello = yes; then fi]) dnl XXXXXXXXXXX End Stolen from cdrtools-2.01 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - diff --git a/binaryInstall.src b/binaryInstall.src index 602e63f45b2..c9736d7c95a 100755 --- a/binaryInstall.src +++ b/binaryInstall.src @@ -5,7 +5,7 @@ # IMPORTANT: The binaryInstall.src file is a source file, NOT an # executable shell script!! Used to generate grass-MAJ.MIN.VER-ARCH-DD_MM_YYYY-install.sh by # make bindist -# +# # GRASS binary package installation tool # platform independent # @@ -75,7 +75,7 @@ echo "GRASS GIS $NAME_VER binary package installation tool" echo "" # Check for correct package name: -if [ ! -f $1 ] ; then +if [ ! -f $1 ] ; then echo "ERROR: Wrong package name $1. File does not exists." echo "" exit @@ -95,7 +95,7 @@ PACKAGE_DIR=`pwd` echo $PACKAGE_NAME | grep "\.tar\.gz" > /dev/null if [ $? -eq 0 ] ; then UNPACK=gunzip - + # Is gunzip there? IFSSAVE="$IFS" IFS=":" @@ -117,7 +117,7 @@ else echo $PACKAGE_NAME | grep "\.tar\.bz2" > /dev/null if [ $? -eq 0 ] ; then UNPACK=bunzip2 - + # Is bunzip2 there? IFSSAVE="$IFS" IFS=":" @@ -181,7 +181,7 @@ fi # Check if BINDIR is a directory if [ ! -d "$BINDIR" ] ; then - + # Check if BINDIR is a file if [ -f "$BINDIR" ] ; then echo "" @@ -189,9 +189,9 @@ if [ ! -d "$BINDIR" ] ; then echo "Please specify a directory for the binary executable directory." exit fi - + mkdir -p $BINDIR - + if [ $? -ne 0 ] ; then echo "An error occurred trying to create $BINDIR ! Exiting." exit @@ -205,17 +205,17 @@ if [ ! -d "$DESTDIR" ] ; then # Check if a word "grass" is in string $DESTDIR echo $DESTDIR | grep "grass" > /dev/null - + if [ $? -eq 1 ] ; then echo "WARNING: Your destination path $DESTDIR does not contain the word 'grass'" echo "Continue (y/n)?" - read ans - + read ans + if [ "$ans" = "n" -o "$ans" = "N" ] ; then exit fi fi - + # Check if DESTDIR is a file if [ -f "$DESTDIR" ] ; then echo "" @@ -225,7 +225,7 @@ if [ ! -d "$DESTDIR" ] ; then fi mkdir -p $DESTDIR - + if [ $? -ne 0 ] ; then echo "An error occurred trying to create $DESTDIR! Exiting." exit @@ -240,12 +240,12 @@ else # Check if a word "grass" is in string $DESTDIR echo $DESTDIR | grep "grass" > /dev/null - + if [ $? -eq 1 ] ; then echo "WARNING: Your destination path $DESTDIR does not contain the word 'grass'" echo "Continue (y/n)?" - read ans - + read ans + if [ "$ans" = "n" -o "$ans" = "N" ] ; then exit fi @@ -256,12 +256,12 @@ else if [ $? -ne 0 ] ; then echo "ERROR: Destination directory $DESTDIR is not" echo "writable, try installing as root!" - echo "Exiting." + echo "Exiting." exit 1 fi rm -f $DESTDIR/test$$ > /dev/null - fi + fi fi diff --git a/binder/postBuild b/binder/postBuild index 0fd5ac666d1..ba40b26a620 100644 --- a/binder/postBuild +++ b/binder/postBuild @@ -31,4 +31,3 @@ mkdir -p data/grassdata \ && unzip -qq nc_basic_spm_grass7.zip \ && mv nc_basic_spm_grass7 data/grassdata \ && rm nc_basic_spm_grass7.zip - diff --git a/configure b/configure index 5ddde136bcd..c90bfb3857a 100755 --- a/configure +++ b/configure @@ -631,10 +631,17 @@ OCLLIB OCLLIBPATH OCLINCPATH USE_OPENMP +<<<<<<< HEAD OMPCFLAGS OMPLIB OMPLIBPATH OMPINCPATH +======= +OPENMP_LIB +OPENMP_LIBPATH +OPENMP_INCPATH +OPENMP_CFLAGS +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) USE_PTHREAD PTHREADLIB PTHREADLIBPATH @@ -940,6 +947,10 @@ with_openmp_libs with_opencl_includes with_opencl_libs with_x +<<<<<<< HEAD +======= +enable_openmp +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) enable_largefile ' ac_precious_vars='build_alias @@ -1575,6 +1586,10 @@ Optional Features: --enable-macosx-app create a MacOSX application --enable-shared build and link with shared libraries --enable-shared --enable-w11 use W11 library for Windows X11 emulation +<<<<<<< HEAD +======= + --disable-openmp do not use OpenMP +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) --disable-largefile omit support for large files (LFS) Optional Packages: @@ -9398,7 +9413,6 @@ fi if test "$PDAL_CONFIG" != "" ; then PDAL_LIBS=`"$PDAL_CONFIG" --libs` - PDAL_CPPFLAGS=`"$PDAL_CONFIG" --cxxflags` PDAL_INC=`"$PDAL_CONFIG" --includes` USE_PDAL=1 fi @@ -9406,10 +9420,12 @@ fi PDAL= ac_save_libs="$LIBS" ac_save_cflags="$CFLAGS" - ac_save_cppflags="$CPPFLAGS" LIBS="$LIBS $PDAL_LIBS" CFLAGS="$CFLAGS $PDAL_CFLAGS" +<<<<<<< HEAD CPPFLAGS="$CPPFLAGS $PDAL_CPPFLAGS $PDAL_INC" +======= +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -9456,7 +9472,6 @@ rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=${ac_save_libs} CFLAGS=${ac_save_cflags} - CPPFLAGS=${ac_save_cppflags} $as_echo "#define HAVE_PDAL 1" >>confdefs.h @@ -14319,14 +14334,14 @@ esac -OMPINCPATH= -OMPLIBPATH= -OMPLIB= -OMPCFLAGS= +if test "$enable_openmp" != no; then -if test -n "$USE_OPENMP"; then +if test -n "${USE_OPENMP}"; then -# With OpenMP includes directory +OPENMP_INCPATH= +OPENMP_LIBPATH= +OPENMP_LIB= +OPENMP_CFLAGS= { $as_echo "$as_me:${as_lineno-$LINENO}: checking for location of OpenMP includes" >&5 @@ -14342,7 +14357,7 @@ $as_echo "$with_openmp_includes" >&6; } if test -n "$with_openmp_includes" ; then for dir in $with_openmp_includes; do if test -d "$dir"; then - OMPINCPATH="$OMPINCPATH -I$dir" + OPENMP_INCPATH="$OPENMP_INCPATH -I$dir" else as_fn_error $? "*** OpenMP includes directory $dir does not exist." "$LINENO" 5 fi @@ -14350,9 +14365,33 @@ if test -n "$with_openmp_includes" ; then fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for location of OpenMP library" >&5 +$as_echo_n "checking for location of OpenMP library... " >&6; } +case "$with_openmp_libs" in +y | ye | yes | n | no) + as_fn_error $? "*** You must supply a directory to --with-openmp-libs." "$LINENO" 5 + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_openmp_libs" >&5 +$as_echo "$with_openmp_libs" >&6; } + +if test -n "$with_openmp_libs"; then + for dir in $with_openmp_libs; do + if test -d "$dir"; then + OPENMP_LIBPATH="$OPENMP_LIBPATH -L$dir" + else + as_fn_error $? "*** OpenMP library directory $dir does not exist." "$LINENO" 5 + fi + done +fi + ac_save_cppflags="$CPPFLAGS" +<<<<<<< HEAD CPPFLAGS="$OMPINCPATH $CPPFLAGS" +======= +CPPFLAGS="$OPENMP_INCPATH $CPPFLAGS" +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) for ac_header in omp.h do : ac_fn_c_check_header_mongrel "$LINENO" "omp.h" "ac_cv_header_omp_h" "$ac_includes_default" @@ -14372,12 +14411,8 @@ done CPPFLAGS=$ac_save_cppflags -# With OpenMP library directory -# GCC et al.: -lgomp -# Solaris cc: -lmtsk -# AIX xlc: -lxlsmp -# SGI IRIX 6.5 MIPSpro C/C++: -lmp +<<<<<<< HEAD { $as_echo "$as_me:${as_lineno-$LINENO}: checking for location of OpenMP library" >&5 $as_echo_n "checking for location of OpenMP library... " >&6; } @@ -14412,11 +14447,53 @@ if test "x$ac_cv_func_GOMP_parallel_start" = xyes; then : OMPLIB="$OMPLIB " +======= +ac_save_ldflags="$LDFLAGS" +LDFLAGS="$OPENMP_LIBPATH $LDFLAGS" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for omp_get_num_threads in -lomp" >&5 +$as_echo_n "checking for omp_get_num_threads in -lomp... " >&6; } + +ac_check_lib_save_LIBS=$LIBS +LIBS="-lomp $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char omp_get_num_threads (); +int +main () +{ +return omp_get_num_threads (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_omp_omp_get_num_threads=yes +else + ac_cv_lib_omp_omp_get_num_threads=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_omp_omp_get_num_threads" >&5 +$as_echo "$ac_cv_lib_omp_omp_get_num_threads" >&6; } +if test "x$ac_cv_lib_omp_omp_get_num_threads" = xyes; then : + OPENMP_LIB="$OPENMP_LIB -lomp " +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) else +LDFLAGS=${ac_save_ldflags} ac_save_ldflags="$LDFLAGS" -LDFLAGS="$OMPLIBPATH $LDFLAGS" +LDFLAGS="$OPENMP_LIBPATH $LDFLAGS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GOMP_parallel_start in -lgomp" >&5 @@ -14453,7 +14530,11 @@ LIBS=$ac_check_lib_save_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gomp_GOMP_parallel_start" >&5 $as_echo "$ac_cv_lib_gomp_GOMP_parallel_start" >&6; } if test "x$ac_cv_lib_gomp_GOMP_parallel_start" = xyes; then : +<<<<<<< HEAD OMPLIB="$OMPLIB -lgomp " +======= + OPENMP_LIB="$OPENMP_LIB -lgomp " +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) else LDFLAGS=${ac_save_ldflags} @@ -14468,40 +14549,104 @@ fi LDFLAGS=${ac_save_ldflags} - fi -LIBS=${ac_save_libs} + + LDFLAGS=${ac_save_ldflags} -# compiler dependent -#if test ${CC} = "gcc" ; then -if test x$GCC = xyes ; then - # GNU C compiler (>= 4.2.1) - OMPCFLAGS=-fopenmp -elif test ${CC} = "icc" ; then - # Intel compiler - OMPCFLAGS=-openmp -elif test ${CC} = "opencc" ; then - # AMD's x86 Open64 compiler - OMPCFLAGS=-mp -elif test ${CC} = "pgcc" ; then - # Portland Group's compiler - OMPCFLAGS=-mp -# ... anybody else? +loc_save_cflags="$CFLAGS" +CFLAGS="${CFLAGS} ${OPENMP_INCPATH} ${OPENMP_LIBPATH} ${OPENMP_LIB}" + + OPENMP_CFLAGS= + # Check whether --enable-openmp was given. +if test "${enable_openmp+set}" = set; then : + enableval=$enable_openmp; fi +<<<<<<< HEAD # try to build a test program with "$CC $OMPCLFAGS" to confirm it works #...how? #echo "int main() {return 0;}" > test.c #$CC $OMPCLFAGS test.c -o test +======= + if test "$enable_openmp" != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to support OpenMP" >&5 +$as_echo_n "checking for $CC option to support OpenMP... " >&6; } +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) -fi # $USE_OPENMP +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifndef _OPENMP + choke me +#endif +#include +int main () { return omp_get_num_threads (); } +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_prog_c_openmp='none needed' +else + ac_cv_prog_c_openmp='unsupported' + for ac_option in -fopenmp -xopenmp -openmp -mp -omp -qsmp=omp -homp \ + -Popenmp --openmp '-Xclang -fopenmp'; do + ac_save_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS $ac_option" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifndef _OPENMP + choke me +#endif +#include +int main () { return omp_get_num_threads (); } + +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_prog_c_openmp=$ac_option +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + CFLAGS=$ac_save_CFLAGS + if test "$ac_cv_prog_c_openmp" != unsupported; then + break + fi + done +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_c_openmp" >&5 +$as_echo "$ac_cv_prog_c_openmp" >&6; } + case $ac_cv_prog_c_openmp in #( + "none needed" | unsupported) + ;; #( + *) + OPENMP_CFLAGS=$ac_cv_prog_c_openmp ;; + esac + fi + + +CFLAGS="${loc_save_cflags}" + + + + + + +fi # USE_OPENMP + +else # enable_openmp + +if test -n "${USE_OPENMP}"; then + +echo "OpenMP explicitly disabled with --disable-openmp." + +fi +USE_OPENMP= +fi # enable_openmp diff --git a/configure.ac b/configure.ac index 5a84e7ba982..6f8969370ce 100755 --- a/configure.ac +++ b/configure.ac @@ -1059,7 +1059,10 @@ else if test "$PDAL_CONFIG" != "" ; then PDAL_LIBS=`"$PDAL_CONFIG" --libs` +<<<<<<< HEAD PDAL_CPPFLAGS=`"$PDAL_CONFIG" --cxxflags` +======= +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) PDAL_INC=`"$PDAL_CONFIG" --includes` USE_PDAL=1 fi @@ -1067,10 +1070,15 @@ else PDAL= ac_save_libs="$LIBS" ac_save_cflags="$CFLAGS" +<<<<<<< HEAD ac_save_cppflags="$CPPFLAGS" LIBS="$LIBS $PDAL_LIBS" CFLAGS="$CFLAGS $PDAL_CFLAGS" CPPFLAGS="$CPPFLAGS $PDAL_CPPFLAGS $PDAL_INC" +======= + LIBS="$LIBS $PDAL_LIBS" + CFLAGS="$CFLAGS $PDAL_CFLAGS" +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include #include class St:public pdal::Streamable {};]], [[pdal::PointTable table;]])],[],[ @@ -1082,7 +1090,10 @@ else ]) LIBS=${ac_save_libs} CFLAGS=${ac_save_cflags} +<<<<<<< HEAD CPPFLAGS=${ac_save_cppflags} +======= +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) AC_DEFINE(HAVE_PDAL, 1, [define if PDAL exists]) fi @@ -1892,6 +1903,7 @@ AC_SUBST(USE_PTHREAD) LOC_CHECK_USE(openmp,OpenMP,USE_OPENMP) +<<<<<<< HEAD OMPINCPATH= OMPLIBPATH= OMPLIB= @@ -1945,6 +1957,45 @@ AC_SUBST(OMPINCPATH) AC_SUBST(OMPLIBPATH) AC_SUBST(OMPLIB) AC_SUBST(OMPCFLAGS) +======= +if test "$enable_openmp" != no; then + +if test -n "${USE_OPENMP}"; then + +OPENMP_INCPATH= +OPENMP_LIBPATH= +OPENMP_LIB= +OPENMP_CFLAGS= + +LOC_CHECK_INC_PATH(openmp,OpenMP,OPENMP_INCPATH) +LOC_CHECK_LIB_PATH(openmp,OpenMP,OPENMP_LIBPATH) +LOC_CHECK_INCLUDES(omp.h,OpenMP,$OPENMP_INCPATH) + +LOC_CHECK_LIBS(omp,omp_get_num_threads,OpenMP,$OPENMP_LIBPATH,OPENMP_LIB,,,[ +LOC_CHECK_LIBS(gomp,GOMP_parallel_start,OpenMP,$OPENMP_LIBPATH,OPENMP_LIB,,,)]) + +loc_save_cflags="$CFLAGS" +CFLAGS="${CFLAGS} ${OPENMP_INCPATH} ${OPENMP_LIBPATH} ${OPENMP_LIB}" +LOC_OPENMP +CFLAGS="${loc_save_cflags}" + +AC_SUBST(OPENMP_INCPATH) +AC_SUBST(OPENMP_LIBPATH) +AC_SUBST(OPENMP_LIB) +AC_SUBST(OPENMP_CFLAGS) + +fi # USE_OPENMP + +else # enable_openmp + +if test -n "${USE_OPENMP}"; then +LOC_MSG(OpenMP explicitly disabled with --disable-openmp.) +fi +USE_OPENMP= + +fi # enable_openmp + +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) AC_SUBST(USE_OPENMP) # Done checking OpenMP diff --git a/db/Makefile b/db/Makefile index 951dedcc6dd..89bc276bb8a 100644 --- a/db/Makefile +++ b/db/Makefile @@ -26,4 +26,3 @@ default: htmldir htmldir: $(MAKE) -C drivers $(MAKE) parsubdirs - diff --git a/db/databaseintro.html b/db/databaseintro.html index 1270299c302..ef7d34791b5 100644 --- a/db/databaseintro.html +++ b/db/databaseintro.html @@ -23,13 +23,13 @@

DB connection management

The current database management settings are shown or modified with db.connect for current mapset. Available DBMI drivers are listed with db.drivers. Some DBMI backends -require a user/password for driver/database to be set with db.login. -In order to test a driver, run db.test. +require a user/password for driver/database to be set with db.login. +In order to test a driver, run db.test.

Attribute data import and export

Attribute data can be imported with db.in.ogr from -various formats and exported with db.out.ogr. To internally +various formats and exported with db.out.ogr. To internally copy a a full table or selectively parts of it, use db.copy.

@@ -42,13 +42,13 @@

Attribute data import and export

SQL commands

-GRASS supports two main SQL operations, execution of an SQL statement +GRASS supports two main SQL operations, execution of an SQL statement (db.execute) and selection of data from a table (db.select). See the SQL help page for examples.

Managing the default DBMI settings

- + Per default vector map attributes are stored in SQLite tables. This default definition can be modified with db.connect. If an external DBMS is used, db.login may be required. @@ -77,7 +77,7 @@

Table maintenance

Database Schema

Currently schema support only works for PostgreSQL connections. Default schema -can be set with db.connect. Note that the default +can be set with db.connect. Note that the default schema will be used by all db.* modules.

db.tables returns 'schema.table' if schemas are diff --git a/db/db.columns/Makefile b/db/db.columns/Makefile index 88c93390c6f..9be1a996981 100644 --- a/db/db.columns/Makefile +++ b/db/db.columns/Makefile @@ -9,4 +9,3 @@ PGM = db.columns include $(MODULE_TOPDIR)/include/Make/Module.make default: cmd - diff --git a/db/db.columns/db.columns.html b/db/db.columns/db.columns.html index a2fd0383cce..a6df2482426 100644 --- a/db/db.columns/db.columns.html +++ b/db/db.columns/db.columns.html @@ -1,7 +1,7 @@

DESCRIPTION

-db.columns lists all columns for a give table. Connection to -databases are supported through dbf, shp, odbc and pg drivers. +db.columns lists all columns for a give table. Connection to +databases are supported through dbf, shp, odbc and pg drivers.

NOTE

diff --git a/db/db.connect/Makefile b/db/db.connect/Makefile index b4375e2c4cf..de2b2d32bb5 100644 --- a/db/db.connect/Makefile +++ b/db/db.connect/Makefile @@ -9,4 +9,3 @@ PGM = db.connect include $(MODULE_TOPDIR)/include/Make/Module.make default: cmd - diff --git a/db/db.connect/db.connect.html b/db/db.connect/db.connect.html index 9fe1a6a77ba..c7020ccbded 100644 --- a/db/db.connect/db.connect.html +++ b/db/db.connect/db.connect.html @@ -11,7 +11,7 @@

NOTES

Values are stored in the mapset's VAR file; the connection is not tested for validity. -

The -p flag will display the current connection parameters. +

The -p flag will display the current connection parameters.

The -c flag will silently check if the connection parameters have been set, and if not will set them to use GRASS's default values. (useful in scripts before you attempt to create a new database table) @@ -84,12 +84,12 @@

MySQL (network connection)

db.tables -p

See MySQL database driver for details. - +

ODBC

Network storage, database tables stored in database "mydb" (may require the use of db.login): -
+
 db.connect driver=odbc database=mydb
 db.login user=myname pass=secret
@@ -108,7 +108,7 @@ 

DBF (local, not recommended)

db.tables -p

See DBF database driver for details. - +

SEE ALSO

diff --git a/db/db.copy/Makefile b/db/db.copy/Makefile index 90b153fcfc1..f511664ba47 100644 --- a/db/db.copy/Makefile +++ b/db/db.copy/Makefile @@ -9,4 +9,3 @@ PGM = db.copy include $(MODULE_TOPDIR)/include/Make/Module.make default: cmd - diff --git a/db/db.copy/db.copy.html b/db/db.copy/db.copy.html index 1a8e6733f48..9245e8c9298 100644 --- a/db/db.copy/db.copy.html +++ b/db/db.copy/db.copy.html @@ -7,8 +7,8 @@

NOTES

Attribute tables can be copied using db.copy and, when to be associated to a vector map, assigned to the map with -v.db.connect. Current connection -settings are saved in the file $LOCATION/vector_map/dbln. +v.db.connect. Current connection +settings are saved in the file $LOCATION/vector_map/dbln.

EXAMPLES

@@ -20,7 +20,7 @@

From DBF to PostgreSQL

 db.copy from_driver=dbf from_database='$GISDBASE/$LOCATION_NAME/PERMANENT/dbf' \
   from_table=geonames to_driver=pg to_database="host=pgserver,dbname=testdb" \
-  to_table=geonames 
+  to_table=geonames
 

From PostgreSQL to DBF

@@ -36,7 +36,7 @@

From PostgreSQL to PostgreSQL with condition

 db.copy from_driver=pg  from_database="host=localhost,dbname=testdb" \
   from_table=geonames to_driver=pg to_database="host=localhost,dbname=testdb" \
-  to_table=selection where="cat < 500" 
+  to_table=selection where="cat < 500"
 

From DBF to SQLite

diff --git a/db/db.createdb/Makefile b/db/db.createdb/Makefile index 83bc44ab094..664826c30a8 100644 --- a/db/db.createdb/Makefile +++ b/db/db.createdb/Makefile @@ -9,4 +9,3 @@ PGM = db.createdb include $(MODULE_TOPDIR)/include/Make/Module.make default: cmd - diff --git a/db/db.databases/Makefile b/db/db.databases/Makefile index 31fb725194f..2e1800a0b07 100644 --- a/db/db.databases/Makefile +++ b/db/db.databases/Makefile @@ -9,4 +9,3 @@ PGM = db.databases include $(MODULE_TOPDIR)/include/Make/Module.make default: cmd - diff --git a/db/db.databases/db.databases.html b/db/db.databases/db.databases.html index 534eb79ceaa..f09d7695e34 100644 --- a/db/db.databases/db.databases.html +++ b/db/db.databases/db.databases.html @@ -1,7 +1,7 @@

DESCRIPTION

db.databases lists all databases for a given driver -and optionally location. +and optionally location.

NOTES

diff --git a/db/db.describe/Makefile b/db/db.describe/Makefile index 32182012c1e..ce8ce0afd16 100644 --- a/db/db.describe/Makefile +++ b/db/db.describe/Makefile @@ -9,4 +9,3 @@ PGM = db.describe include $(MODULE_TOPDIR)/include/Make/Module.make default: cmd - diff --git a/db/db.describe/db.describe.html b/db/db.describe/db.describe.html index 86b0315d203..2fe979d74ce 100644 --- a/db/db.describe/db.describe.html +++ b/db/db.describe/db.describe.html @@ -1,14 +1,14 @@

DESCRIPTION

db.describe displays table information. If parameter -c -is used only column names instead of full column descriptions is given. +is used only column names instead of full column descriptions is given.

NOTE

-If parameters for database connection are already set with +If parameters for database connection are already set with db.connect, they are taken as default values and do not need to be spcified each time. - +

EXAMPLES

List column descriptions of table in SQLite database (note that this diff --git a/db/db.drivers/Makefile b/db/db.drivers/Makefile index 42cce0591ec..013bfd855e0 100644 --- a/db/db.drivers/Makefile +++ b/db/db.drivers/Makefile @@ -9,4 +9,3 @@ PGM = db.drivers include $(MODULE_TOPDIR)/include/Make/Module.make default: cmd - diff --git a/db/db.dropdb/Makefile b/db/db.dropdb/Makefile index 9eb3afc42c1..cfc768d57df 100644 --- a/db/db.dropdb/Makefile +++ b/db/db.dropdb/Makefile @@ -9,4 +9,3 @@ PGM = db.dropdb include $(MODULE_TOPDIR)/include/Make/Module.make default: cmd - diff --git a/db/db.execute/Makefile b/db/db.execute/Makefile index 5224ce69f4e..dcca50b3779 100644 --- a/db/db.execute/Makefile +++ b/db/db.execute/Makefile @@ -9,4 +9,3 @@ PGM = db.execute include $(MODULE_TOPDIR)/include/Make/Module.make default: cmd - diff --git a/db/db.execute/db.execute.html b/db/db.execute/db.execute.html index 795e2e1bb91..59312aadb4c 100644 --- a/db/db.execute/db.execute.html +++ b/db/db.execute/db.execute.html @@ -1,11 +1,11 @@

DESCRIPTION

-db.execute allows the user to execute SQL statements. +db.execute allows the user to execute SQL statements.

NOTES

-db.execute only executes SQL statements and does not return -any data. If you need data returned from the database, use +db.execute only executes SQL statements and does not return +any data. If you need data returned from the database, use db.select.

If parameters for database connection are already set with @@ -80,7 +80,7 @@

EXAMPLES

 UPDATE roads SET travelcost=5 WHERE cat=1;
 UPDATE roads SET travelcost=2 WHERE cat=2;
- 
+
 db.execute input=file.sql
 
diff --git a/db/db.select/Makefile b/db/db.select/Makefile index 0f55e4b67db..f9a6544c814 100644 --- a/db/db.select/Makefile +++ b/db/db.select/Makefile @@ -9,4 +9,3 @@ PGM = db.select include $(MODULE_TOPDIR)/include/Make/Module.make default: cmd - diff --git a/db/db.select/db.select.html b/db/db.select/db.select.html index 1ebe7c6a382..175151cbe55 100644 --- a/db/db.select/db.select.html +++ b/db/db.select/db.select.html @@ -2,7 +2,7 @@

DESCRIPTION

db.select prints result of selection from database based on SQL statement read from input file or from standard input to standard -output. Each individual query has to be written on one single line and +output. Each individual query has to be written on one single line and different queries have to be written on separate lines.

NOTE

@@ -75,7 +75,7 @@

Count number of cases falling into same position

be counted (if needed, coordinates can be uploaded to the attribute table by v.to.db: -
 
+
 db.select sql="SELECT long,lat,site_id,department,obs,COUNT(long) as count_cases \
                FROM diseases GROUP BY long,lat"
 
diff --git a/db/db.tables/Makefile b/db/db.tables/Makefile index df6678efad3..2d6e0c1a0c4 100644 --- a/db/db.tables/Makefile +++ b/db/db.tables/Makefile @@ -9,4 +9,3 @@ PGM = db.tables include $(MODULE_TOPDIR)/include/Make/Module.make default: cmd - diff --git a/db/db.tables/db.tables.html b/db/db.tables/db.tables.html index 33039f40c79..84cb2e10ad4 100644 --- a/db/db.tables/db.tables.html +++ b/db/db.tables/db.tables.html @@ -1,10 +1,10 @@

DESCRIPTION

-db.tables lists all tables for a given database. +db.tables lists all tables for a given database.

NOTE

-If parameters for database connection are already set with +If parameters for database connection are already set with db.connect, they are taken as default values and do not need to be spcified each time. diff --git a/db/drivers/dbf/cursor.c b/db/drivers/dbf/cursor.c index f946545039b..d0831db2f44 100644 --- a/db/drivers/dbf/cursor.c +++ b/db/drivers/dbf/cursor.c @@ -35,7 +35,11 @@ int db__driver_close_cursor(dbCursor *dbc) return DB_OK; } +<<<<<<< HEAD cursor *alloc_cursor() +======= +cursor *alloc_cursor(void) +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) { cursor *c; diff --git a/db/drivers/dbf/db.c b/db/drivers/dbf/db.c index fc5f4a19d57..3bd79d56055 100644 --- a/db/drivers/dbf/db.c +++ b/db/drivers/dbf/db.c @@ -125,7 +125,7 @@ int db__driver_open_database(dbHandle *handle) return DB_OK; } -int db__driver_close_database() +int db__driver_close_database(void) { int i; diff --git a/db/drivers/dbf/driver.c b/db/drivers/dbf/driver.c index 60177406eae..993de335282 100644 --- a/db/drivers/dbf/driver.c +++ b/db/drivers/dbf/driver.c @@ -24,7 +24,7 @@ int db__driver_init(int argc, char *argv[]) return DB_OK; } -int db__driver_finish() +int db__driver_finish(void) { return DB_OK; } diff --git a/db/drivers/dbf/grass-dbf.html b/db/drivers/dbf/grass-dbf.html index 57fa35f67e3..ef7ace3adab 100644 --- a/db/drivers/dbf/grass-dbf.html +++ b/db/drivers/dbf/grass-dbf.html @@ -58,16 +58,16 @@

Operators available in conditions

-Arithmetic expressions using constants and field values are allowed +Arithmetic expressions using constants and field values are allowed in condition clauses and in the RHS of assignments.
-Usual precedence rules and bracketing (using '(' and ')') are supported. +Usual precedence rules and bracketing (using '(' and ')') are supported.
-Type conversion is performed if necessary (experimental). +Type conversion is performed if necessary (experimental).

-Conditions allow boolean expressions using the AND, OR and NOT operators, -with the usual precedence rules. +Conditions allow boolean expressions using the AND, OR and NOT operators, +with the usual precedence rules.

NULLs can be tested by 'colname IS NULL' in conditions. The negation is @@ -83,9 +83,9 @@

LIMITATIONS OF THE DBF DRIVER

(as defined in the DBF specifications). For example,
    -
  • aggregate functions (sum, count, min, max,...) are not supported +
  • aggregate functions (sum, count, min, max,...) are not supported in SELECT clauses;
  • -
  • mathematic functions (sin, cos, exp, log,...) are not supported +
  • mathematic functions (sin, cos, exp, log,...) are not supported in expressions;
  • SQL query with IN are not supported.
@@ -99,7 +99,7 @@

ERROR MESSAGES

SQL parser error: syntax error, unexpected NAME processing 'IN'.. indicates that an unsupported SQL statement (here, 'IN') was used. The only -solution is to switch the DBMI backend to a real SQL engine (SQLite, +solution is to switch the DBMI backend to a real SQL engine (SQLite, PostgreSQL, MySQL etc.). See SQL support in GRASS GIS.

diff --git a/db/drivers/dbf/proto.h b/db/drivers/dbf/proto.h index 909d91176e2..a6cc7e87b20 100644 --- a/db/drivers/dbf/proto.h +++ b/db/drivers/dbf/proto.h @@ -3,7 +3,7 @@ void init_error(void); int save_string(VALUE *, char *); -cursor *alloc_cursor(); +cursor *alloc_cursor(void); void free_cursor(cursor *); /* column.c */ diff --git a/db/drivers/dbf/table.c b/db/drivers/dbf/table.c index b827ccc7db7..20b60a64784 100644 --- a/db/drivers/dbf/table.c +++ b/db/drivers/dbf/table.c @@ -58,7 +58,11 @@ int add_table(char *table, char *name) #else res = snprintf(db.tables[db.ntables].file, buf_s, "%s/%s", db.name, name); #endif +<<<<<<< HEAD if (res >= buf_s) { +======= + if (res < 0 || (size_t)res >= buf_s) { +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) db_d_append_error(_("Unable to add table %s to %s. " "The file path is too long."), name, db.name); diff --git a/db/drivers/mysql/Makefile b/db/drivers/mysql/Makefile index 062282c29b6..bbccbaf1588 100644 --- a/db/drivers/mysql/Makefile +++ b/db/drivers/mysql/Makefile @@ -13,7 +13,7 @@ endif include $(MODULE_TOPDIR)/include/Make/DB.make LIBES = $(DBMIDRIVERLIB) $(DBMIBASELIB) $(DBSTUBSLIB) \ - $(GISLIB) $(DATETIMELIB) + $(GISLIB) $(DATETIMELIB) EXTRA_CFLAGS = $(MYSQLINCPATH) EXTRA_LDFLAGS = $(MYSQLLIBPATH) diff --git a/db/drivers/mysql/cursor.c b/db/drivers/mysql/cursor.c index 3cb7375ff56..80a92d5dca6 100644 --- a/db/drivers/mysql/cursor.c +++ b/db/drivers/mysql/cursor.c @@ -32,7 +32,11 @@ int db__driver_close_cursor(dbCursor *dbc) return DB_OK; } +<<<<<<< HEAD cursor *alloc_cursor() +======= +cursor *alloc_cursor(void) +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) { cursor *c; diff --git a/db/drivers/mysql/driver.c b/db/drivers/mysql/driver.c index 368811ede69..76ac8bde195 100644 --- a/db/drivers/mysql/driver.c +++ b/db/drivers/mysql/driver.c @@ -22,7 +22,7 @@ int db__driver_init(int argc, char *argv[]) return DB_OK; } -int db__driver_finish() +int db__driver_finish(void) { return DB_OK; } diff --git a/db/drivers/mysql/grass-mesql.html b/db/drivers/mysql/grass-mesql.html index 369c4f243ad..8e2aca2155c 100644 --- a/db/drivers/mysql/grass-mesql.html +++ b/db/drivers/mysql/grass-mesql.html @@ -21,18 +21,18 @@

KEYWORDS

DESCRIPTION

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

Driver and database name

GRASS modules require 2 parameters to connect to a database. -Those parameters are 'driver' and 'database'. For MySQL embedded +Those parameters are 'driver' and 'database'. For MySQL embedded driver the parameter 'driver' should be set to value 'mesql'. -The parameter 'database' is a full path to the directory -where database tables are stored. The best place is -a directory in the mapset. The directory must be created -before use of the driver. In the name of database +The parameter 'database' is a full path to the directory +where database tables are stored. The best place is +a directory in the mapset. The directory must be created +before use of the driver. In the name of database it is possible to use 3 variables:

AUTHORS

Jaroslav Hofierka, GeoModel, s.r.o. Bratislava, Slovakia
- + Marcel Suri, GeoModel, s.r.o. Bratislava, Slovakia
Thomas Huld, JRC, Italy
diff --git a/raster/r.sun/rsunlib.c b/raster/r.sun/rsunlib.c index ba78e934992..a8889b6e021 100644 --- a/raster/r.sun/rsunlib.c +++ b/raster/r.sun/rsunlib.c @@ -39,7 +39,7 @@ #include "rsunglobals.h" int civilTimeFlag; -int useCivilTime() +int useCivilTime(void) { return civilTimeFlag; } @@ -51,13 +51,13 @@ void setUseCivilTime(int val) double angular_loss_denom; -void setAngularLossDenominator() +void setAngularLossDenominator(void) { angular_loss_denom = 1. / (1 - exp(-1. / a_r)); } int useShadowFlag; -int useShadow() +int useShadow(void) { return useShadowFlag; } @@ -68,7 +68,7 @@ void setUseShadow(int val) } int useHorizonDataFlag; -int useHorizonData() +int useHorizonData(void) { return useHorizonDataFlag; } @@ -79,7 +79,7 @@ void setUseHorizonData(int val) } double timeOffset; -double getTimeOffset() +double getTimeOffset(void) { return timeOffset; } @@ -90,7 +90,7 @@ void setTimeOffset(double val) } double horizonInterval; -double getHorizonInterval() +double getHorizonInterval(void) { return horizonInterval; } diff --git a/raster/r.sunhours/r.sunhours.html b/raster/r.sunhours/r.sunhours.html index d5f2d0b209a..3ef59379358 100644 --- a/raster/r.sunhours/r.sunhours.html +++ b/raster/r.sunhours/r.sunhours.html @@ -1,7 +1,7 @@

DESCRIPTION

r.sunhours calculates sun elevation and sun azimuth angles for -the given time of day and each grid cell in the current region. +the given time of day and each grid cell in the current region. Additionally, the photoperiod (sunshine hours on flat terrain) can be calculated. @@ -15,11 +15,11 @@

DESCRIPTION

The time used here is defined such that 12:00 (high noon) is the time when the sun has reached its highest point in the sky at the current site, -unless the -t flag is used in which case time is interpreted as +unless the -t flag is used in which case time is interpreted as Greenwich standard time.

-If a sunhour output map is specified, the module calculates -sunshine hours for the given day. This option requires both Greenwhich +If a sunhour output map is specified, the module calculates +sunshine hours for the given day. This option requires both Greenwhich standard time and the use of the SOLPOS algorithm by NREL.

NOTES

@@ -40,9 +40,9 @@

Calculating a sun elevation angle map

# visualize d.mon wx0 -d.rast sun_elev +d.rast sun_elev d.vect nc_state type=boundary -d.legend sun_elev -s +d.legend sun_elev -s

diff --git a/raster/r.sunmask/README b/raster/r.sunmask/README index d80b83d925f..ade205bac62 100644 --- a/raster/r.sunmask/README +++ b/raster/r.sunmask/README @@ -19,7 +19,7 @@ Calculating sun position... (using solpos (V. 11 April 2001) from NREL) sun angle above horz.(refraction corrected) 31.662413 Sunrise time (without refraction): 07:16 Sunset time (without refraction): 19:07 -Calculating shadows from DEM... +Calculating shadows from DEM... -------------------------- @@ -39,7 +39,7 @@ parameter seasonally in r.sunmask (timezone parameter). solpos questions can be directed to > Steve Wilcox (Stephen_Wilcox@nrel.gov) -> National Renewable Energy Laboratory +> National Renewable Energy Laboratory > 1617 Cole Boulevard, Golden, CO 80401-3393 > voice: 1-303-275-4061; fax: 1-303-275-4675 http://rredc.nrel.gov/solar/codes_algs/solpos/ diff --git a/raster/r.sunmask/TODO b/raster/r.sunmask/TODO index 37b344bade2..aa1fa900860 100644 --- a/raster/r.sunmask/TODO +++ b/raster/r.sunmask/TODO @@ -1,2 +1 @@ improve speed for FP maps - diff --git a/raster/r.sunmask/r.sunmask.html b/raster/r.sunmask/r.sunmask.html index 944bfef1002..8d8f8e9a2fd 100644 --- a/raster/r.sunmask/r.sunmask.html +++ b/raster/r.sunmask/r.sunmask.html @@ -23,7 +23,7 @@

NOTES

from GMT. So the key is the offset from GMT, which the solpos Time Zone parameter. If the user specifies clock time (different for winter and summer), s/he would have to change the Time Zone -parameter seasonally in r.sunmask (timezone parameter). See also +parameter seasonally in r.sunmask (timezone parameter). See also Daylight saving time by region and country.

@@ -54,7 +54,7 @@

NOTES

The reason is that sun angle above horizon is calculated with correction for atmosphere refraction while sunrise and sunset are calculated without -correction for atmosphere refraction. The output without +correction for atmosphere refraction. The output without -g flag contains related indications.

EXAMPLE

diff --git a/raster/r.support.stats/r.support.stats.html b/raster/r.support.stats/r.support.stats.html index 96ec9237f3c..7b043a70730 100644 --- a/raster/r.support.stats/r.support.stats.html +++ b/raster/r.support.stats/r.support.stats.html @@ -1,6 +1,6 @@

DESCRIPTION

-r.support.stats allows the user to update raster map statistics +r.support.stats allows the user to update raster map statistics information.

NOTES

diff --git a/raster/r.support/Makefile b/raster/r.support/Makefile index 0853ea2a8a2..b22d57a47ee 100644 --- a/raster/r.support/Makefile +++ b/raster/r.support/Makefile @@ -8,5 +8,3 @@ DEPENDENCIES = $(RASTERDEP) $(GISDEP) include $(MODULE_TOPDIR)/include/Make/Module.make default: cmd - - diff --git a/raster/r.support/main.c b/raster/r.support/main.c index dfed5f11428..a1eb571ad12 100644 --- a/raster/r.support/main.c +++ b/raster/r.support/main.c @@ -233,6 +233,7 @@ int main(int argc, char *argv[]) * the hist file. bug? */ /* Should be RECORD_LEN, but r.info truncates at > 71 chars */ if (strlen(history_opt->answer) > 71) { +<<<<<<< HEAD int i; for (i = 0; i < strlen(history_opt->answer); i += 71) { @@ -247,6 +248,20 @@ int main(int argc, char *argv[]) else Rast_append_history(&hist, history_opt->answer); +======= + for (unsigned int i = 0; i < strlen(history_opt->answer); i += 71) { + char buf[72]; + + strncpy(buf, &history_opt->answer[i], sizeof(buf) - 1); + buf[sizeof(buf) - 1] = '\0'; + + Rast_append_history(&hist, buf); + } + } + else + Rast_append_history(&hist, history_opt->answer); + +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) Rast_write_history(raster->answer, &hist); } diff --git a/raster/r.support/r.support.html b/raster/r.support/r.support.html index 24cbfd55bb7..04741d3a5d4 100644 --- a/raster/r.support/r.support.html +++ b/raster/r.support/r.support.html @@ -1,7 +1,12 @@

DESCRIPTION

+<<<<<<< HEAD r.support allows the user to create and/or edit raster map support information. Editing of raster map color tables, category labels, header, +======= +r.support allows the user to create and/or edit raster map support +information. Editing of raster map color tables, category labels, header, +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) history, semantic label elements and title is supported. Category labels can also be copied from another raster map. @@ -21,7 +26,7 @@

EXAMPLES

Update statistics

-
r.support -s map=my_landuse 
+
r.support -s map=my_landuse
 

Update Title

@@ -73,4 +78,7 @@

AUTHORS

M. Hamish Bowman: command line enhancements
Markus Neteler: category copy from other map
Maris Nartiss: semantic label management +<<<<<<< HEAD +======= +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) diff --git a/raster/r.surf.area/local_proto.h b/raster/r.surf.area/local_proto.h index c4dccbf32e0..2650c95a3e8 100644 --- a/raster/r.surf.area/local_proto.h +++ b/raster/r.surf.area/local_proto.h @@ -5,6 +5,6 @@ void add_row_area(DCELL *, DCELL *, double, struct Cell_head *, double *, double *); void add_null_area(DCELL *, struct Cell_head *, double *); -void v3cross(double[], double[], double[]); -void v3mag(double[], double *); +void v3cross(double[3], double[3], double[3]); +void v3mag(double[3], double *); double conv_value(double, int); diff --git a/raster/r.surf.area/r.surf.area.html b/raster/r.surf.area/r.surf.area.html index 51d37a34ada..3cc1f6cd823 100644 --- a/raster/r.surf.area/r.surf.area.html +++ b/raster/r.surf.area/r.surf.area.html @@ -31,7 +31,7 @@

NOTES

  • "Plan" area within current computational region (rows * cols * cellarea)
  • Scaling of calculated area to current region
  • - +

    r.surf.area works best when the surface being evaluated extends to the edges of the current region and the cell resolution is diff --git a/raster/r.surf.contour/addpts.c b/raster/r.surf.contour/addpts.c index b9887a58bd9..c148daad836 100644 --- a/raster/r.surf.contour/addpts.c +++ b/raster/r.surf.contour/addpts.c @@ -2,8 +2,6 @@ NODE *addpts(NODE *zero, int r, int c, int rr, int cc, int *node_ct) { - NODE *add_in(); - if (rr < nrows - 1) { if (!flag_get(seen, rr + 1, cc)) zero = add_in(r, c, rr + 1, cc, zero, node_ct); diff --git a/raster/r.surf.contour/r.surf.contour.html b/raster/r.surf.contour/r.surf.contour.html index b8ba1e7b587..0c648371292 100644 --- a/raster/r.surf.contour/r.surf.contour.html +++ b/raster/r.surf.contour/r.surf.contour.html @@ -26,13 +26,13 @@

    Parameters:

    -
    input=name +
    input=name -
    Name of an existing raster map that contains a set of +
    Name of an existing raster map that contains a set of initial category values (i.e., some cells contain known elevation values (denoting contours) while the rest contain NULL values). -
    output=name +
    output=name
    Name to be assigned to new output raster map that represents a smooth (e.g., elevation) surface generated from @@ -75,7 +75,7 @@

    EXAMPLE

    # get minimum elevation value r.univar elevation -# generate vector contour lines +# generate vector contour lines r.contour input=elevation output=contours_5m step=5 minlevel=50 # rasterize contour lines diff --git a/raster/r.surf.fractal/README b/raster/r.surf.fractal/README index 35926c0fd24..2ea376c5c31 100644 --- a/raster/r.surf.fractal/README +++ b/raster/r.surf.fractal/README @@ -7,7 +7,7 @@ r.surf.fractal Reference: - Saupe, D. (1988) Algorithms for random fractals, in Barnsley M., + Saupe, D. (1988) Algorithms for random fractals, in Barnsley M., Devaney R., Mandelbrot B., Peitgen, H-O., Saupe D., and Voss R. (1988) The Science of Fractal Images, Ch. 2, pp.71-136. London: Springer-Verlag. @@ -25,4 +25,3 @@ Parameters: default: 2.05 n Number of intermediate images to produce default: 0 - diff --git a/raster/r.surf.fractal/r.surf.fractal.html b/raster/r.surf.fractal/r.surf.fractal.html index 3bf048ca7e6..d564cbec4e1 100644 --- a/raster/r.surf.fractal/r.surf.fractal.html +++ b/raster/r.surf.fractal/r.surf.fractal.html @@ -85,7 +85,7 @@

    EXAMPLE

    REFERENCES

    -Saupe, D. (1988) Algorithms for random fractals, in Barnsley M., +Saupe, D. (1988) Algorithms for random fractals, in Barnsley M., Devaney R., Mandelbrot B., Peitgen, H-O., Saupe D., and Voss R. (1988) The Science of Fractal Images, Ch. 2, pp.71-136. London: Springer-Verlag. diff --git a/raster/r.surf.gauss/README b/raster/r.surf.gauss/README index 7bde52cb600..ca1b6532c04 100644 --- a/raster/r.surf.gauss/README +++ b/raster/r.surf.gauss/README @@ -1,6 +1,6 @@ r.surf.gauss - Program to produce a raster map layer of gaussian deviates whose - mean and standard deviation can be expressed by the user. It - uses a gaussian random number generator from Press, Flannery, + mean and standard deviation can be expressed by the user. It + uses a gaussian random number generator from Press, Flannery, Teukolsky and Vetterling (1988) - Numerical Recipes in C. See also - r.surf.random @@ -18,4 +18,3 @@ Parameters: default: 0.0 sigma Standard deviation default: 1.0 - diff --git a/raster/r.surf.idw/r.surf.idw.html b/raster/r.surf.idw/r.surf.idw.html index acc93a16760..3c917d4c8c9 100644 --- a/raster/r.surf.idw/r.surf.idw.html +++ b/raster/r.surf.idw/r.surf.idw.html @@ -9,11 +9,11 @@

    DESCRIPTION

    specified by the user (default: 12 nearest data points).

    -If there is a current working mask, it applies to the output -raster map. Only those cells falling within the mask will be -assigned interpolated values. The search procedure for the -selection of nearest neighboring points will consider all -input data, without regard to the mask. +If there is a current working mask, it applies to the output +raster map. Only those cells falling within the mask will be +assigned interpolated values. The search procedure for the +selection of nearest neighboring points will consider all +input data, without regard to the mask. The -e flag is the error analysis option that interpolates values only for those cells of the input raster map which have non-zero values and @@ -42,10 +42,10 @@

    NOTES

    and does not increase appreciably with the number of input data points.

    -r.surf.idw will generally outperform +r.surf.idw will generally outperform r.surf.idw2 except when the input data layer contains few non-zero data, i.e. when the cost of the search exceeds -the cost of the additional distance calculations performed by +the cost of the additional distance calculations performed by r.surf.idw2. The relative performance of these utilities will depend on the comparative speed of boolean, integer and floating point operations on a particular platform. @@ -123,4 +123,8 @@

    AUTHOR

    Global Climate Research Project
    U.S. EPA Environmental Research Laboratory
    200 S.W. 35th Street, JSB
    +<<<<<<< HEAD Corvallis, OR 97333 +======= +Corvallis, OR 97333 +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) diff --git a/raster/r.surf.random/r.surf.random.html b/raster/r.surf.random/r.surf.random.html index abe2f22767a..ee2d2149a8b 100644 --- a/raster/r.surf.random/r.surf.random.html +++ b/raster/r.surf.random/r.surf.random.html @@ -40,7 +40,7 @@

    EXAMPLE

    SEE ALSO

    -r.random.surface, +r.random.surface, r.surf.contour, r.surf.fractal, r.surf.gauss, diff --git a/raster/r.terraflow/ccforest.h b/raster/r.terraflow/ccforest.h index 4ea7a2949da..1f874dd5b56 100644 --- a/raster/r.terraflow/ccforest.h +++ b/raster/r.terraflow/ccforest.h @@ -40,12 +40,15 @@ class keyvalue { T src() const { return key; }; T dst() const { return value; }; +<<<<<<< HEAD keyvalue operator=(const keyvalue &that) { key = that.key; value = that.value; return *this; }; +======= +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) int operator!=(const keyvalue &e2) const { return (key != e2.key) || (value != e2.value); @@ -147,7 +150,16 @@ class ccforest { public: ccforest(); +<<<<<<< HEAD ~ccforest(); +======= + ccforest(const ccforest &) = delete; + ccforest &operator=(const ccforest &) = delete; + ccforest(ccforest &&) = delete; + ccforest &operator=(ccforest &&) = delete; + ~ccforest(); + +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) void insert(const T &i, const T &j); /* insert edge (i,j) */ T findNextRoot(const T &i); /* find root where i >= prev i */ void printRootStream(); diff --git a/raster/r.terraflow/common.cpp b/raster/r.terraflow/common.cpp index 5762d3f51b6..81200078711 100644 --- a/raster/r.terraflow/common.cpp +++ b/raster/r.terraflow/common.cpp @@ -93,8 +93,13 @@ void *LargeMemory::alloc(size_t leng) next++; if (stats) { char buf[BUFSIZ], buf2[32]; +<<<<<<< HEAD sprintf(buf, "allocated large memory: %s 0x%lX", formatNumber(buf2, leng), (unsigned long)p); +======= + snprintf(buf, BUFSIZ, "allocated large memory: %s 0x%lX", + formatNumber(buf2, leng), (unsigned long)p); +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) stats->comment(buf); } return p; @@ -121,8 +126,13 @@ void LargeMemory::free(void *p) if (stats) { char buf[BUFSIZ], buf2[32]; +<<<<<<< HEAD sprintf(buf, "freed large memory: %s 0x%lX", formatNumber(buf2, len[i]), (unsigned long)p); +======= + snprintf(buf, BUFSIZ, "freed large memory: %s 0x%lX", + formatNumber(buf2, len[i]), (unsigned long)p); +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) stats->comment(buf); } diff --git a/raster/r.terraflow/fill.cpp b/raster/r.terraflow/fill.cpp index 686b1624c72..2347799dc92 100644 --- a/raster/r.terraflow/fill.cpp +++ b/raster/r.terraflow/fill.cpp @@ -73,7 +73,11 @@ class printElevation { char *operator()(const elevation_type &p) { static char buf[20]; +<<<<<<< HEAD sprintf(buf, "%.1f", (float)p); +======= + snprintf(buf, sizeof(buf), "%.1f", (float)p); +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) return buf; } }; @@ -83,13 +87,21 @@ class printDirection { char *operator()(const direction_type &p) { static char buf[20]; +<<<<<<< HEAD sprintf(buf, "%3d", p); +======= + snprintf(buf, sizeof(buf), "%3d", p); +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) return buf; } char *operator()(const waterWindowBaseType &p) { static char buf[20]; +<<<<<<< HEAD sprintf(buf, "%3d", p.dir); +======= + snprintf(buf, sizeof(buf), "%3d", p.dir); +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) return buf; } #if (0) @@ -108,19 +120,31 @@ class printLabel { char *operator()(const labelElevType &p) { static char buf[8]; +<<<<<<< HEAD sprintf(buf, CCLABEL_FMT, p.getLabel()); +======= + snprintf(buf, sizeof(buf), CCLABEL_FMT, p.getLabel()); +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) return buf; } char *operator()(const waterGridType &p) { static char buf[8]; +<<<<<<< HEAD sprintf(buf, CCLABEL_FMT, p.getLabel()); +======= + snprintf(buf, sizeof(buf), CCLABEL_FMT, p.getLabel()); +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) return buf; } char *operator()(const waterType &p) { static char buf[8]; +<<<<<<< HEAD sprintf(buf, CCLABEL_FMT, p.getLabel()); +======= + snprintf(buf, sizeof(buf), CCLABEL_FMT, p.getLabel()); +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) return buf; } }; @@ -130,7 +154,11 @@ class printDepth { char *operator()(const waterGridType &p) { static char buf[3]; +<<<<<<< HEAD sprintf(buf, "%1u", p.depth); +======= + snprintf(buf, sizeof(buf), "%1u", p.depth); +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) return buf; } }; @@ -138,7 +166,11 @@ class printDepth { char *verbosedir(const std::string &s) { static char buf[BUFSIZ]; +<<<<<<< HEAD sprintf(buf, "dump/%s", s.c_str()); +======= + snprintf(buf, BUFSIZ, "dump/%s", s.c_str()); +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) return buf; } @@ -365,7 +397,11 @@ computeFlowDirections(AMI_STREAM *&elstr, char path[BUFSIZ]; char *base_dir = getenv(STREAM_TMPDIR); assert(base_dir); +<<<<<<< HEAD sprintf(path, "%s/flowStream", base_dir); +======= + snprintf(path, BUFSIZ, "%s/flowStream", base_dir); +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) flowStream = new AMI_STREAM(path); /*flowStream->persist(PERSIST_PERSISTENT); */ if (stats) diff --git a/raster/r.terraflow/genericWindow.h b/raster/r.terraflow/genericWindow.h index fa6a130d5ee..262c0f12a96 100644 --- a/raster/r.terraflow/genericWindow.h +++ b/raster/r.terraflow/genericWindow.h @@ -85,6 +85,7 @@ class genericWindow { } /***************************************************************/ +<<<<<<< HEAD genericWindow(const genericWindow &win) { for (int i = 0; i < 9; i++) { @@ -127,6 +128,42 @@ class genericWindow { } /***************************************************************/ +======= + /* get specified neighbour di,dj in {-1,0,1} */ + T get(short di, short dj) const + { + assert(di >= -1 && di <= 1); + assert(dj >= -1 && dj <= 1); + return data[4 + dj + di * 3]; + } + + /***************************************************************/ + /* get specified neighbour i in 0..8 */ + T get(unsigned short i = 4) const + { + assert(i <= 8); + return data[i]; + } + + /***************************************************************/ + /* set specified neighbour i in 0..8 */ + void set(unsigned short i, T val) + { + assert(i <= 8); + data[i] = val; + } + + /***************************************************************/ + /* set specified neighbour di,dj in {-1,0,1} */ + void set(int di, int dj, T val) + { + assert(di >= -1 && di <= 1); + assert(dj >= -1 && dj <= 1); + data[4 + dj + di * 3] = val; + } + + /***************************************************************/ +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) /* multiply all elements by a scalar */ void scalarMultiply(T mult) { diff --git a/raster/r.terraflow/main.cpp b/raster/r.terraflow/main.cpp index 912a4fd854f..8e0e2b36459 100644 --- a/raster/r.terraflow/main.cpp +++ b/raster/r.terraflow/main.cpp @@ -331,13 +331,21 @@ void record_args(int argc, char **argv) stats->comment("MFD flow direction"); } +<<<<<<< HEAD sprintf(buf, "D8CUT=%f", opt->d8cut); +======= + snprintf(buf, BUFSIZ, "D8CUT=%f", opt->d8cut); +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) stats->comment(buf); size_t mm_size = (size_t)opt->mem << 20; /* (in bytes) */ char tmp[100]; formatNumber(tmp, mm_size); +<<<<<<< HEAD sprintf(buf, "Memory size: %s bytes", tmp); +======= + snprintf(buf, BUFSIZ, "Memory size: %s bytes", tmp); +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) stats->comment(buf); } @@ -488,7 +496,11 @@ int main(int argc, char *argv[]) G_verbose_message(_("Region size is %d x %d"), nrows, ncols); /* check STREAM path (the place where intermediate STREAMs are placed) */ +<<<<<<< HEAD sprintf(buf, "%s=%s", STREAM_TMPDIR, opt->streamdir); +======= + snprintf(buf, BUFSIZ, "%s=%s", STREAM_TMPDIR, opt->streamdir); +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) /* don't pass an automatic variable; putenv() isn't guaranteed to make a * copy */ putenv(G_store(buf)); @@ -584,7 +596,11 @@ int main(int argc, char *argv[]) AMI_STREAM *flowStream; char path[GPATH_MAX]; +<<<<<<< HEAD sprintf(path, "%s/flowStream", streamdir->answer); +======= + snprintf(path, GPATH_MAX, "%s/flowStream", streamdir->answer); +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) flowStream = new AMI_STREAM(path); G_verbose_message(_("flowStream opened: len=%lld\n", flowStream->stream_len()); G_verbose_message(_("jumping to flow accumulation computation\n"); diff --git a/raster/r.terraflow/nodata.h b/raster/r.terraflow/nodata.h index 92b1e452bb4..35d2a778a45 100644 --- a/raster/r.terraflow/nodata.h +++ b/raster/r.terraflow/nodata.h @@ -59,7 +59,11 @@ class nodataType : public ijBaseType { static char *printLabel(const nodataType &p) { static char buf[8]; +<<<<<<< HEAD sprintf(buf, CCLABEL_FMT, p.label); +======= + snprintf(buf, sizeof(buf), CCLABEL_FMT, p.label); +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) return buf; } diff --git a/raster/r.terraflow/plateau.h b/raster/r.terraflow/plateau.h index a065d165168..91309b111bc 100644 --- a/raster/r.terraflow/plateau.h +++ b/raster/r.terraflow/plateau.h @@ -48,7 +48,11 @@ class plateauType : public ijBaseType { static char *printLabel(const plateauType &p) { static char buf[8]; +<<<<<<< HEAD sprintf(buf, CCLABEL_FMT, p.cclabel); +======= + snprintf(buf, sizeof(buf), CCLABEL_FMT, p.cclabel); +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) return buf; } diff --git a/raster/r.terraflow/r.terraflow.html b/raster/r.terraflow/r.terraflow.html index 3c16325395b..3e5f6ed2a5f 100644 --- a/raster/r.terraflow/r.terraflow.html +++ b/raster/r.terraflow/r.terraflow.html @@ -180,7 +180,7 @@

    EXAMPLES

    r.terraflow elev=elevation.10m filled=elevation10m.filled \ dir=elevation10m.mfdir swatershed=elevation10m.watershed \ accumulation=elevation10m.accu tci=elevation10m.tci d8cut=500 memory=800 \ - stats=elevation10mstats.txt + stats=elevation10mstats.txt

    REFERENCES

    @@ -193,7 +193,7 @@

    REFERENCES

    terrains. Lars Arge, Laura Toma, and Jeffrey S. Vitter. In Proc. Workshop on Algorithm Engineering and Experimentation, 2000. To appear in Journal of Experimental Algorithms. - +
  • Flow computation on massive grids. @@ -201,7 +201,7 @@

    REFERENCES

    Jeffrey S. Vitter, Dean Urban and Rajiv Wickremesinghe. In Proc. ACM Symposium on Advances in Geographic Information Systems, 2001. - +
  • Flow computation on massive grid terrains. @@ -237,11 +237,11 @@

    AUTHORS

    Dean Urban, Jeff Vitter, Rajiv Wickremesinghe. - +
    Porting to GRASS GIS, 2002:
    Lars Arge, Helena Mitasova, - Laura Toma. - + Laura Toma. +
    Contact: Laura Toma
    diff --git a/raster/r.terraflow/stats.cpp b/raster/r.terraflow/stats.cpp index 4ab7beaa905..dd9e758b7a6 100644 --- a/raster/r.terraflow/stats.cpp +++ b/raster/r.terraflow/stats.cpp @@ -89,7 +89,11 @@ int noclobberFile(char *fname) else { /* file exists */ char buf[BUFSIZ]; G_debug(1, "file %s exists - renaming.\n", fname); +<<<<<<< HEAD sprintf(buf, "%s.old", fname); +======= + snprintf(buf, BUFSIZ, "%s.old", fname); +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) if (rename(fname, buf) != 0) { G_fatal_error("%s", fname); } @@ -111,7 +115,11 @@ char *noclobberFileName(char *fname) else { /* file exists */ char buf[BUFSIZ]; G_debug(1, "file %s exists - renaming.\n", fname); +<<<<<<< HEAD sprintf(buf, "%s.old", fname); +======= + snprintf(buf, BUFSIZ, "%s.old", fname); +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) if (rename(fname, buf) != 0) { G_fatal_error("%s", fname); } @@ -137,7 +145,11 @@ char *statsRecorder::timestamp() { static char buf[BUFSIZ]; rt_stop(tm); +<<<<<<< HEAD sprintf(buf, "[%.1f] ", rt_seconds(tm)); +======= + snprintf(buf, BUFSIZ, "[%.1f] ", rt_seconds(tm)); +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) return buf; } @@ -159,20 +171,29 @@ void statsRecorder::comment(const char *s, const int verbose) void statsRecorder::comment(const char *s1, const char *s2) { char buf[BUFSIZ]; +<<<<<<< HEAD sprintf(buf, "%s%s", s1, s2); +======= + snprintf(buf, BUFSIZ, "%s%s", s1, s2); +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) comment(buf); } void statsRecorder::comment(const int n) { char buf[BUFSIZ]; +<<<<<<< HEAD sprintf(buf, "%d", n); +======= + snprintf(buf, BUFSIZ, "%d", n); +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) comment(buf); } char *formatNumber(char *buf, off_t val) { if (val > (1 << 30)) { +<<<<<<< HEAD sprintf(buf, "%.2fG (%" PRI_OFF_T ")", (double)val / (1 << 30), val); } else if (val > (1 << 20)) { @@ -183,6 +204,21 @@ char *formatNumber(char *buf, off_t val) } else { sprintf(buf, "%" PRI_OFF_T, val); +======= + snprintf(buf, BUFSIZ, "%.2fG (%" PRI_OFF_T ")", (double)val / (1 << 30), + val); + } + else if (val > (1 << 20)) { + snprintf(buf, BUFSIZ, "%.2fM (%" PRI_OFF_T ")", (double)val / (1 << 20), + val); + } + else if (val > (1 << 10)) { + snprintf(buf, BUFSIZ, "%.2fK (%" PRI_OFF_T ")", (double)val / (1 << 10), + val); + } + else { + snprintf(buf, BUFSIZ, "%" PRI_OFF_T, val); +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) } return buf; } diff --git a/raster/r.terraflow/sweep.cpp b/raster/r.terraflow/sweep.cpp index 78e633fab4f..bfc105d94d0 100644 --- a/raster/r.terraflow/sweep.cpp +++ b/raster/r.terraflow/sweep.cpp @@ -123,7 +123,12 @@ FLOW_DATASTR *initializePQ() stats->comment("FLOW_DATASTRUCTURE: in-memory pqueue"); flowpq = new FLOW_DATASTR(PQ_SIZE); char buf[1024]; +<<<<<<< HEAD sprintf(buf, "initialized to %.2fMB\n", (float)PQ_SIZE / (1 << 20)); +======= + snprintf(buf, sizeof(buf), "initialized to %.2fMB\n", + (float)PQ_SIZE / (1 << 20)); +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) if (stats) *stats << buf; @@ -271,7 +276,11 @@ AMI_STREAM *sweep(AMI_STREAM *sweepstr, if (stats) *stats << "sweeping done\n"; char buf[1024]; +<<<<<<< HEAD sprintf(buf, "pqsize = %ld \n", (long)flowpq->size()); +======= + snprintf(buf, sizeof(buf), "pqsize = %ld \n", (long)flowpq->size()); +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) if (stats) *stats << buf; diff --git a/raster/r.terraflow/sweep.h b/raster/r.terraflow/sweep.h index d3a21e42ece..be9a34d680a 100644 --- a/raster/r.terraflow/sweep.h +++ b/raster/r.terraflow/sweep.h @@ -94,7 +94,11 @@ class printAccumulationAscii { char *operator()(const sweepOutput &p) { static char buf[20]; +<<<<<<< HEAD sprintf(buf, "%7.3f", p.accu); +======= + snprintf(buf, sizeof(buf), "%7.3f", p.accu); +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) return buf; } }; @@ -111,7 +115,11 @@ class printTciAscii { char *operator()(const sweepOutput &p) { static char buf[20]; +<<<<<<< HEAD sprintf(buf, "%7.3f", p.tci); +======= + snprintf(buf, sizeof(buf), "%7.3f", p.tci); +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) return buf; } }; @@ -160,12 +168,18 @@ class gridPosition { /*************************************************************/ class flowPriority { public: +<<<<<<< HEAD elevation_type h; toporank_type toporank; +======= + elevation_type h{0.0}; + toporank_type toporank{0}; +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) /* points at same heights are processed in increasing order of their topological rank; overall, this gives topological order and guarantees that flow is never puhsed backwards. Note: of course, this is a way of waving hands on topological sorting. */ +<<<<<<< HEAD dimension_type i, j; public: @@ -207,6 +221,50 @@ class flowPriority { if (a.toporank > b.toporank) return 1; +======= + dimension_type i{0}, j{0}; + +public: + flowPriority() {} + flowPriority(elevation_type a) : h{a} {} + flowPriority(elevation_type a, toporank_type b, dimension_type c, + dimension_type d) + : h{a}, toporank{b}, i{c}, j{d} + { + } + + flowPriority(const flowPriority &) = default; + flowPriority &operator=(const flowPriority &) = default; + flowPriority(flowPriority &&) = default; + flowPriority &operator=(flowPriority &&) = default; + ~flowPriority() = default; + + elevation_type field1() const { return h; } + + dimension_type coord1() const { return i; } + dimension_type coord2() const { return j; } + void set(elevation_type g_h, toporank_type g_a, dimension_type g_i, + dimension_type g_j) + { + h = g_h; + toporank = g_a; + i = g_i; + j = g_j; + } + + static int compare(const flowPriority &a, const flowPriority &b) + { + if (a.h > b.h) + return -1; + if (a.h < b.h) + return 1; + + if (a.toporank < b.toporank) + return -1; + if (a.toporank > b.toporank) + return 1; + +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) if (a.i < b.i) return -1; if (a.i > b.i) @@ -313,6 +371,7 @@ class sweepItemBaseType { } /***************************************************************/ +<<<<<<< HEAD ~sweepItemBaseType() {} /***************************************************************/ @@ -331,6 +390,23 @@ class sweepItemBaseType { dimension_type getJ() const { return j; } /***************************************************************/ +======= + /* return the elevation window */ + genericWindow getElevWindow() const { return elevwin; } + + /***************************************************************/ + /* return the elevation window */ + genericWindow getTopoRankWindow() const { return toporwin; } + + /***************************************************************/ + /* return coordinates */ + dimension_type getI() const { return i; } + + /***************************************************************/ + dimension_type getJ() const { return j; } + + /***************************************************************/ +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) /* return the elevation of the item */ elevation_type getElev() const { return elevwin.get(); } @@ -413,6 +489,7 @@ class PrioCmpSweepItem { /************************************************************/ class flowValue { public: +<<<<<<< HEAD flowaccumulation_type value; public: @@ -420,6 +497,14 @@ class flowValue { ~flowValue() {} +======= + flowaccumulation_type value{0}; + +public: + flowValue() {} + flowValue(flowaccumulation_type x) : value{x} {} + +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) flowaccumulation_type get() const { return value; } friend ostream &operator<<(ostream &s, const flowValue &elt) { @@ -434,11 +519,14 @@ class flowValue { flowValue elt(elt1.value + elt2.value); return elt; } +<<<<<<< HEAD flowValue operator=(const flowValue &elt) { value = elt.value; return *this; } +======= +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) flowValue operator!=(const flowValue &elt) { return value != elt.value; } flowValue operator==(const flowValue &elt) { return value == elt.value; } @@ -463,6 +551,7 @@ class flowValue { /************************************************************/ class flowStructure { private: +<<<<<<< HEAD flowPriority prio; flowValue val; @@ -481,6 +570,19 @@ class flowStructure { flowPriority getPriority() const { return prio; } +======= + flowPriority prio{}; + flowValue val{}; + +public: + flowStructure() {} + flowStructure(const flowPriority &p, const flowValue &e) : prio{p}, val{e} + { + } + + flowPriority getPriority() const { return prio; } + +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) flowValue getValue() const { return val; } friend ostream &operator<<(ostream &s, const flowStructure &fl) diff --git a/raster/r.terraflow/types.h b/raster/r.terraflow/types.h index 3f48edbedc0..02d9ab5f17d 100644 --- a/raster/r.terraflow/types.h +++ b/raster/r.terraflow/types.h @@ -85,11 +85,16 @@ class labelFactory { public: static cclabel_type getNewLabel() { return ++label; } static cclabel_type getCurrentLabel() { return label; } +<<<<<<< HEAD static const cclabel_type getLabelInit() { return cclabel_type(LABEL_START); } static const cclabel_type getLabelCount() { return label + 1; } +======= + static cclabel_type getLabelInit() { return cclabel_type(LABEL_START); } + static cclabel_type getLabelCount() { return label + 1; } +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) static void setLabelCount(int n) { label = n - 1; } static void reset() { label = getLabelInit(); } }; diff --git a/raster/r.terraflow/water.cpp b/raster/r.terraflow/water.cpp index e541214738d..c380c14b5c9 100644 --- a/raster/r.terraflow/water.cpp +++ b/raster/r.terraflow/water.cpp @@ -32,7 +32,11 @@ char *labelElevType::printLabel(const labelElevType &p) { static char buf[8]; +<<<<<<< HEAD sprintf(buf, CCLABEL_FMT, p.label); +======= + snprintf(buf, sizeof(buf), CCLABEL_FMT, p.label); +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) return buf; } @@ -175,7 +179,11 @@ ostream &operator<<(ostream &s, const labelElevType &p) char *waterType::printLabel(const waterType &p) { static char buf[8]; +<<<<<<< HEAD sprintf(buf, CCLABEL_FMT, p.label); +======= + snprintf(buf, sizeof(buf), CCLABEL_FMT, p.label); +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) return buf; } diff --git a/raster/r.texture/r.texture.html b/raster/r.texture/r.texture.html index 25311197312..bb2c4702daf 100644 --- a/raster/r.texture/r.texture.html +++ b/raster/r.texture/r.texture.html @@ -1,8 +1,8 @@

    DESCRIPTION

    r.texture creates raster maps with textural features from a -user-specified raster map layer. The module calculates textural features -based on spatial dependence matrices at 0, 45, 90, and 135 +user-specified raster map layer. The module calculates textural features +based on spatial dependence matrices at 0, 45, 90, and 135 degrees.

    @@ -34,24 +34,24 @@

    NOTES

    Texture is a feature of specific land cover classes in satellite imagery. It is particularly useful in situations where spectral differences between -classes are small, but classes are distinguishable by their organisation on the +classes are small, but classes are distinguishable by their organisation on the ground, often opposing natural to human-made spaces: cultivated fields vs meadows or golf courses, palm tree plantations vs natural rain forest, but texture can also be a natural phenomen: dune fields, different canopies due to different -tree species. The usefulness and use of texture is highly dependent on the -resolution of satellite imagery and on the scale of the human intervention or -the phenomenon that created the texture (also see the discussion of scale +tree species. The usefulness and use of texture is highly dependent on the +resolution of satellite imagery and on the scale of the human intervention or +the phenomenon that created the texture (also see the discussion of scale dependency below). The user should observe the phenomenon visually in order to determine an adequat setting of the size parameter.

    -The output of r.texture can constitute very useful additional variables -as input for image classification or image segmentation (object recognition). -It can be used in supervised classification algorithms such as +The output of r.texture can constitute very useful additional variables +as input for image classification or image segmentation (object recognition). +It can be used in supervised classification algorithms such as i.maxlik or i.smap, or for the identification of objects in i.segment, -and/or for the characterization of these objects and thus, for example, as one -of the raster inputs of the +and/or for the characterization of these objects and thus, for example, as one +of the raster inputs of the i.segment.stats addon. @@ -63,15 +63,15 @@

    NOTES

    dependent, hierarchical textures may occur.

    -r.texture uses the common texture model based on the so-called grey -level co-occurrence matrix as described by Haralick et al (1973). This matrix -is a two-dimensional histogram of grey levels for a pair of pixels which are -separated by a fixed spatial relationship. The matrix approximates the joint -probability distribution of a pair of pixels. Several texture measures are -directly computed from the grey level co-occurrence matrix. +r.texture uses the common texture model based on the so-called grey +level co-occurrence matrix as described by Haralick et al (1973). This matrix +is a two-dimensional histogram of grey levels for a pair of pixels which are +separated by a fixed spatial relationship. The matrix approximates the joint +probability distribution of a pair of pixels. Several texture measures are +directly computed from the grey level co-occurrence matrix.

    -The following part offers brief explanations of the Haralick et al texture +The following part offers brief explanations of the Haralick et al texture measures (after Jensen 1996).

    First-order statistics in the spatial domain

    @@ -134,15 +134,15 @@

    Second-order statistics in the spatial domain

    -The computational region should be set to the input map with -g.region raster=<input map>, or aligned to the input map -with g.region align=<input map> if only a subregion +The computational region should be set to the input map with +g.region raster=<input map>, or aligned to the input map +with g.region align=<input map> if only a subregion should be analyzed.

    -Note that the output of r.texture will always be smaller than -the current region as only cells for which there are no null cells and -for which all cells of the moving window are within the current region +Note that the output of r.texture will always be smaller than +the current region as only cells for which there are no null cells and +for which all cells of the moving window are within the current region will contain a value. The output will thus appear cropped at the margins.

    @@ -159,7 +159,7 @@

    EXAMPLE

    # extract grey levels r.mapcalc "ortho_2001_t792_1m.greylevel = ortho_2001_t792_1m" # texture analysis -r.texture ortho_2001_t792_1m.greylevel prefix=ortho_texture method=asm -s +r.texture ortho_2001_t792_1m.greylevel prefix=ortho_texture method=asm -s # display g.region n=221461 s=221094 w=638279 e=638694 d.shade color=ortho_texture_ASM_0 shade=ortho_2001_t792_1m @@ -181,7 +181,7 @@

    EXAMPLE

    The recoded raster map can then be used as input for r.texture as before.

    -Second example: analysis of IDM (homogeneity) on a simple raster with +Second example: analysis of IDM (homogeneity) on a simple raster with North-South line pattern.

    @@ -214,9 +214,9 @@ 

    EXAMPLE

    The following image shows the original map, the result in East-West direction and the result in North-South direction, showing how texture can depend on -direction, with texture perfectly homogeneous (value=1) in the North-South -direction, but quite heterogeneous in East-West direction, except for those -areas where there are three columns of equal values (as size=3). +direction, with texture perfectly homogeneous (value=1) in the North-South +direction, but quite heterogeneous in East-West direction, except for those +areas where there are three columns of equal values (as size=3). The overlaid grid highlights that the texture measures output maps are cropped at the margins. @@ -227,7 +227,11 @@

    EXAMPLE

    KNOWN ISSUES

    +<<<<<<< HEAD The program can run incredibly slow for large raster maps and large +======= +The program can run incredibly slow for large raster maps and large +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) moving windows (size option).

    REFERENCES

    @@ -237,11 +241,11 @@

    REFERENCES

    The original code was taken by permission from pgmtexture, part of PBMPLUS (Copyright 1991, Jef Poskanser and Texas Agricultural Experiment -Station, employer for hire of James Darrell McCauley). Manual page +Station, employer for hire of James Darrell McCauley). Manual page of pgmtexture. Over the years, the source code of r.texture was further improved. -

      +
      • Haralick, R.M., K. Shanmugam, and I. Dinstein (1973). Textural features for image classification. IEEE Transactions on Systems, Man, and Cybernetics, SMC-3(6):610-621.
      • diff --git a/raster/r.texture/testsuite/test_texture.py b/raster/r.texture/testsuite/test_texture.py index cfa72d4809b..af24229e9ba 100644 --- a/raster/r.texture/testsuite/test_texture.py +++ b/raster/r.texture/testsuite/test_texture.py @@ -1,7 +1,7 @@ """ Name: r.texture test Purpose: Tests r.texture and its flags/options. - + Author: Sunveer Singh, Google Code-in 2017 Copyright: (C) 2017 by Sunveer Singh and the GRASS Development Team Licence: This program is free software under the GNU General Public diff --git a/raster/r.thin/r.thin.html b/raster/r.thin/r.thin.html index a504c0db187..022a8f21d0d 100644 --- a/raster/r.thin/r.thin.html +++ b/raster/r.thin/r.thin.html @@ -1,9 +1,9 @@

        DESCRIPTION

        -r.thin scans the named input raster map layer and -thins non-NULL cells that denote linear features into linear features -having a single cell width. Raster lines often need to be thinned -(skeletonizing raster features) to a single pixel width before they can +r.thin scans the named input raster map layer and +thins non-NULL cells that denote linear features into linear features +having a single cell width. Raster lines often need to be thinned +(skeletonizing raster features) to a single pixel width before they can be transformed to vector data.

        @@ -26,7 +26,7 @@

        DESCRIPTION

        NOTES

        r.thin only creates raster map layers. In order to -create a vector map, the user will need to run +create a vector map, the user will need to run r.to.vect on the resultant raster map. @@ -62,8 +62,8 @@

        NOTES

        EXAMPLE

        -To vectorize the raster map streams_derived in the North -Carolina sample dataset that represents the stream network derived from +To vectorize the raster map streams_derived in the North +Carolina sample dataset that represents the stream network derived from the 10m resolution DEM by r.watershed, run:
        diff --git a/raster/r.thin/thin_lines.c b/raster/r.thin/thin_lines.c
        index ab2814d00cb..e416999828a 100644
        --- a/raster/r.thin/thin_lines.c
        +++ b/raster/r.thin/thin_lines.c
        @@ -35,7 +35,7 @@ extern int put_a_row(int row, CELL *buf);
         int thin_lines(int iterations)
         {
             int j, i, col, deleted, row;
        -    CELL *row_buf, *new_med, *med, *bottom, *top, *get_a_row();
        +    CELL *row_buf, *new_med, *med, *bottom, *top;
             unsigned char W, N_W, Templ[8], N_Templ[8];
         
             map_size(&n_rows, &n_cols, &pad_size);
        diff --git a/raster/r.tile/r.tile.html b/raster/r.tile/r.tile.html
        index 67747e7de65..57f65bc4c10 100644
        --- a/raster/r.tile/r.tile.html
        +++ b/raster/r.tile/r.tile.html
        @@ -1,6 +1,6 @@
         

        DESCRIPTION

        -r.tile retiles an existing raster map with user defined +r.tile retiles an existing raster map with user defined x and y tile size.

        NOTES

        diff --git a/raster/r.tile/testsuite/testrt.py b/raster/r.tile/testsuite/testrt.py index 519ca7120cd..c1da1d10cdf 100644 --- a/raster/r.tile/testsuite/testrt.py +++ b/raster/r.tile/testsuite/testrt.py @@ -1,7 +1,7 @@ """ Name: r.tile test Purpose: Tests r.tile and its flags/options. - + Author: Sunveer Singh, Google Code-in 2018 Copyright: (C) 2018 by Sunveer Singh and the GRASS Development Team Licence: This program is free software under the GNU General Public diff --git a/raster/r.timestamp/r.timestamp.html b/raster/r.timestamp/r.timestamp.html index fe33b7b474f..a59bbd3e079 100644 --- a/raster/r.timestamp/r.timestamp.html +++ b/raster/r.timestamp/r.timestamp.html @@ -26,7 +26,7 @@

        TIMESTAMP FORMAT

      Absolute values specify exact dates and/or times. Relative values -specify a span of time. +specify a span of time.

      Absolute

      diff --git a/raster/r.timestamp/test_suite/test.r.timestamp.sh b/raster/r.timestamp/test_suite/test.r.timestamp.sh index d4746098103..da187f7b5ef 100755 --- a/raster/r.timestamp/test_suite/test.r.timestamp.sh +++ b/raster/r.timestamp/test_suite/test.r.timestamp.sh @@ -11,41 +11,41 @@ r.mapcalc --o expr="map = 1" # The first @test uses several different absolute datum formats r.timestamp map=map date=none -r.timestamp map=map +r.timestamp map=map r.timestamp map=map date="2003" -r.timestamp map=map +r.timestamp map=map r.timestamp map=map date="Jul 2003" -r.timestamp map=map +r.timestamp map=map r.timestamp map=map date="14 Jul 2003" -r.timestamp map=map +r.timestamp map=map r.timestamp map=map date="14 Jul 2003 10" -r.timestamp map=map +r.timestamp map=map r.timestamp map=map date="14 Jul 2003 10:30 +0700" -r.timestamp map=map +r.timestamp map=map r.timestamp map=map date="14 Jul 2003 10:30:25" -r.timestamp map=map +r.timestamp map=map r.timestamp map=map date="14 Jul 2003 10:30:25 +0700 / 15 Jul 2003 11:35:12 +0700" -r.timestamp map=map +r.timestamp map=map r.timestamp map=map date="14 Jul 2003 10:30:25 +0700 / 15 Jul 2003" -r.timestamp map=map +r.timestamp map=map r.timestamp map=map date=none -r.timestamp map=map +r.timestamp map=map # The second @test uses several different relative datum formats r.timestamp map=map date=none -r.timestamp map=map +r.timestamp map=map r.timestamp map=map date="2 years" -r.timestamp map=map +r.timestamp map=map r.timestamp map=map date="2 years 3 months" -r.timestamp map=map +r.timestamp map=map r.timestamp map=map date="5 days" -r.timestamp map=map +r.timestamp map=map r.timestamp map=map date="3 hours" -r.timestamp map=map +r.timestamp map=map r.timestamp map=map date="5 minutes 30 seconds" -r.timestamp map=map +r.timestamp map=map r.timestamp map=map date="2 years 2 months / 5 years 8 months" -r.timestamp map=map +r.timestamp map=map r.timestamp map=map date=none # The third @test to check @failure with wrong time stamps @@ -54,4 +54,3 @@ r.timestamp map=map date="2 years 3 months 8 days" r.timestamp map=map date="1 month 5 days" r.timestamp map=map date="July 2003" r.timestamp map=map date="14 Jul 2003 +0700" - diff --git a/raster/r.to.rast3/main.c b/raster/r.to.rast3/main.c index 7325aec7ed7..984d01815e2 100644 --- a/raster/r.to.rast3/main.c +++ b/raster/r.to.rast3/main.c @@ -37,7 +37,11 @@ int globalG3dMapType; /*- prototypes --------------------------------------------------------------*/ void fatal_error(void *map, int *fd, int depths, char *errorMsg); /*Simple Error message */ +<<<<<<< HEAD void set_params(); /*Fill the paramType structure */ +======= +void set_params(void); /*Fill the paramType structure */ +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) void raster_to_g3d(void *map, RASTER3D_Region region, int *fd); /*Write the raster */ int open_input_raster_map(const char *name); /*opens the outputmap */ @@ -72,7 +76,7 @@ void fatal_error(void *map, int *fd, int depths, char *errorMsg) /* Setg up the arguments we are expecting ********************************** */ /* ************************************************************************* */ -void set_params() +void set_params(void) { param.input = G_define_standard_option(G_OPT_R_INPUTS); param.input->description = _("2D raster maps which represent the slices"); diff --git a/raster/r.to.rast3/r.to.rast3.html b/raster/r.to.rast3/r.to.rast3.html index 293759cd3e1..8c46685a9c6 100644 --- a/raster/r.to.rast3/r.to.rast3.html +++ b/raster/r.to.rast3/r.to.rast3.html @@ -17,7 +17,7 @@

      DESCRIPTION

      NOTES

      Every 2D raster map is copied as one slice to the raster3D map. Slices -are counted from bottom to the top, so the bottom slice has to be number 1. +are counted from bottom to the top, so the bottom slice has to be number 1.

      If less number of 2D raster maps are provided than defined depths, the last given 2D map is used to fill up the remaining raster3D slices to @@ -45,7 +45,7 @@

      EXAMPLE 2

      # Mapset data in Location slovakia3d g.region b=0 t=600 tbres=100 res3=100 -p3 r.to.rast3 input=prec_1,prec_2,prec_3 output=new_3dmap -
    +

    SEE ALSO

    diff --git a/raster/r.to.rast3/test_suite/test.r.to.rast3.sh b/raster/r.to.rast3/test_suite/test.r.to.rast3.sh index 9e42c9d9235..23e1959f26d 100755 --- a/raster/r.to.rast3/test_suite/test.r.to.rast3.sh +++ b/raster/r.to.rast3/test_suite/test.r.to.rast3.sh @@ -17,8 +17,8 @@ r.mapcalc --o expr="elev_4 = 35" r.mapcalc --o expr="elev_5 = 45" # We @test several methods to generate @raster3d maps from raster maps -# For validation a @precision=0 should be used. We start with 5 raster maps, -# then 3 raster maps then using single float and double raster maps +# For validation a @precision=0 should be used. We start with 5 raster maps, +# then 3 raster maps then using single float and double raster maps # with differen tile sizes and null data r.to.rast3 --o input=elev_1,elev_2,elev_3,elev_4,elev_5 output=test_volume_6_raster tilesize=1 r.to.rast3 --o input=elev_1,elev_2,elev_3 output=test_volume_3_raster tilesize=1 @@ -39,4 +39,4 @@ g.region s=0 n=80 w=0 e=100 b=0 t=50 res=5 res3=10 -p3 r.to.rast3 --o input=elev_double output=test_volume_double_raster_res tilesize=2 # Uncomment for reference data export -# r3.out.ascii input=test_volume_double_raster_res output=test_volume_double_raster_res.ref dp=0 \ No newline at end of file +# r3.out.ascii input=test_volume_double_raster_res output=test_volume_double_raster_res.ref dp=0 diff --git a/raster/r.to.rast3elev/main.c b/raster/r.to.rast3elev/main.c index 24de1d35eb5..acf2a79160a 100644 --- a/raster/r.to.rast3elev/main.c +++ b/raster/r.to.rast3elev/main.c @@ -52,7 +52,11 @@ paramType param; /*params */ /*- prototypes --------------------------------------------------------------*/ void fatal_error(Database db, char *errorMsg); /*Simple Error message */ +<<<<<<< HEAD void set_params(); /*Fill the paramType structure */ +======= +void set_params(void); /*Fill the paramType structure */ +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) void elev_raster_to_g3d(Database db, RASTER3D_Region region); /*Write the raster */ int open_input_raster_map(const char *name); /*opens the outputmap */ @@ -158,7 +162,7 @@ void fatal_error(Database db, char *errorMsg) /* Set up the arguments **************************************************** */ /* ************************************************************************* */ -void set_params() +void set_params(void) { param.input = G_define_standard_option(G_OPT_R_INPUTS); diff --git a/raster/r.to.rast3elev/r.to.rast3elev.html b/raster/r.to.rast3elev/r.to.rast3elev.html index ba2709d7f2d..4b1d5a6e924 100644 --- a/raster/r.to.rast3elev/r.to.rast3elev.html +++ b/raster/r.to.rast3elev/r.to.rast3elev.html @@ -15,8 +15,13 @@

    DESCRIPTION

    NOTES

    +<<<<<<< HEAD The hight of the 2D elevation maps will be used to verify the position within the 3D region. If the cell value of the elevation raster maps is located within the 3D region, the +======= +The hight of the 2D elevation maps will be used to verify the position +within the 3D region. If the cell value of the elevation raster maps is located within the 3D region, the +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) cell value of the appropriate 2D input raster maps will be written to the associated 3D cell. There are flags and options to fill the upper and lower 3D cells with a specific value, or the input raster maps values. @@ -47,9 +52,9 @@

    EXAMPLES

    # Example with multiple elevation maps. ## first we need three support maps -r.mapcalc expression="one = 1" -r.mapcalc expression="two = 2" -r.mapcalc expression="three = 3" +r.mapcalc expression="one = 1" +r.mapcalc expression="two = 2" +r.mapcalc expression="three = 3" ## Now we generate the new evelation maps @@ -61,17 +66,17 @@

    EXAMPLES

    r.to.rast3elev -l input=one,two,three elevation=elevation.10m,elev_mid,elev_bottom output=threelayer ## Export the map for visualization with paraview (http://www.paraview.org) -## By default the null value is -9999.99, we adjust it to 0.0 for -## better visualization +## By default the null value is -9999.99, we adjust it to 0.0 for +## better visualization r3.out.vtk null=0.0 input=threelayer output=/tmp/threelayer.vtk -# Start paraview +# Start paraview paraview --data=/tmp/threelayer.vtk -# Note: First you need to choose the surface representation style and +# Note: First you need to choose the surface representation style and # then color by "threelayer" in paraview. - +

    SEE ALSO

    diff --git a/raster/r.to.rast3elev/test.r.to.rast3elev.sh b/raster/r.to.rast3elev/test.r.to.rast3elev.sh index 91e1b23b92f..fc4d59c8c2b 100755 --- a/raster/r.to.rast3elev/test.r.to.rast3elev.sh +++ b/raster/r.to.rast3elev/test.r.to.rast3elev.sh @@ -6,7 +6,7 @@ # raster data with r.mapcalc # The region setting should work for UTM and LL test locations g.region s=0 n=80 w=0 e=100 b=0 t=50 res=10 res3=10 -p3 -# We create several evlevation and value maps +# We create several evlevation and value maps r.mapcalc --o expr="elev_5_float = float(5)" r.mapcalc --o expr="elev_5_double = double(5)" r.mapcalc --o expr="elev_45_float = float(45)" @@ -26,7 +26,7 @@ r.to.rast3elev --o upper=2 input=raster_float elevation=elev_25_float r.to.rast3elev --o upper=2 input=raster_double elevation=elev_25_double output=test_elev_volume_double_2 r.to.rast3elev --o input=raster_float elevation=elev_25_float output=test_elev_volume_float_3 r.to.rast3elev --o input=raster_double elevation=elev_25_double output=test_elev_volume_double_3 -r.to.rast3elev --o -u input=raster_float elevation=elev_25_float output=test_elev_volume_float_4 +r.to.rast3elev --o -u input=raster_float elevation=elev_25_float output=test_elev_volume_float_4 r.to.rast3elev --o -u input=raster_double elevation=elev_25_double output=test_elev_volume_double_4 r.to.rast3elev --o -l input=raster_float elevation=elev_25_float output=test_elev_volume_float_5 r.to.rast3elev --o -l input=raster_double elevation=elev_25_double output=test_elev_volume_double_5 @@ -36,7 +36,7 @@ r.to.rast3elev --o -lu input=raster_double elevation=elev_25_double r.to.rast3elev --o input=raster_float elevation=elev_20_float output=test_elev_volume_float_6 r.to.rast3elev --o input=raster_double elevation=elev_20_double output=test_elev_volume_double_6 # Test with two to three elevation and value maps using different fill styles -r.to.rast3elev --o -u input=elev_25_float,elev_45_float elevation=elev_25_float,elev_45_float output=test_elev_volume_float_7 +r.to.rast3elev --o -u input=elev_25_float,elev_45_float elevation=elev_25_float,elev_45_float output=test_elev_volume_float_7 r.to.rast3elev --o -u input=elev_25_double,elev_45_double elevation=elev_25_double,elev_45_double output=test_elev_volume_double_7 r.to.rast3elev --o -l input=elev_45_float,elev_25_float,elev_5_float elevation=elev_45_float,elev_25_float,elev_5_float output=test_elev_volume_float_8 r.to.rast3elev --o -l input=elev_45_double,elev_25_double,elev_5_double elevation=elev_45_double,elev_25_double,elev_5_double output=test_elev_volume_double_8 diff --git a/raster/r.to.vect/Makefile b/raster/r.to.vect/Makefile index 0574e68c3f9..7171db06d3b 100644 --- a/raster/r.to.vect/Makefile +++ b/raster/r.to.vect/Makefile @@ -9,5 +9,4 @@ DEPENDENCIES = $(VECTORDEP) $(DBMIDEP) $(RASTERDEP) $(GISDEP) EXTRA_INC = $(VECT_INC) EXTRA_CFLAGS = $(VECT_CFLAGS) -default: cmd - +default: cmd diff --git a/raster/r.to.vect/areas.c b/raster/r.to.vect/areas.c index 60846a849d2..554ef2104bd 100644 --- a/raster/r.to.vect/areas.c +++ b/raster/r.to.vect/areas.c @@ -85,17 +85,17 @@ static struct equiv_table *e_list; /* function prototypes */ static int update_list(int); -static int end_vline(); -static int end_hline(); -static int start_vline(); -static int start_hline(); -static struct COOR *get_ptr(); -static int read_next(); +static int end_vline(void); +static int end_hline(void); +static int start_vline(void); +static int start_hline(void); +static struct COOR *get_ptr(void); +static int read_next(void); static int equiv_areas(int, int); static int map_area(int, int); static int add_to_list(int, int); static int assign_area(double, int); -static int more_areas(); +static int more_areas(void); static int update_width(struct area_table *, int); static int nabors(void); diff --git a/raster/r.to.vect/r.to.vect.html b/raster/r.to.vect/r.to.vect.html index 9bd5640312a..0bf0b21dfe2 100644 --- a/raster/r.to.vect/r.to.vect.html +++ b/raster/r.to.vect/r.to.vect.html @@ -6,8 +6,8 @@

    DESCRIPTION

    Point conversion

    -The r.to.vect program extracts data from a GRASS raster map -layer and stores output in a new GRASS vector file. +The r.to.vect program extracts data from a GRASS raster map +layer and stores output in a new GRASS vector file.

    Line conversion

    r.to.vect assumes that the input map has been thinned @@ -18,7 +18,7 @@

    Line conversion

    raster map. These arcs may represent linear features (like roads or streams), or may represent area edge features (like political boundaries, or soil mapping -units). +units).

    r.thin and r.to.vect @@ -53,8 +53,8 @@

    Area conversion

    error introduced by smoothing.

    -r.to.vect extracts only area edges from the named raster -input file. If the raster map contains other data (i.e., line edges, +r.to.vect extracts only area edges from the named raster +input file. If the raster map contains other data (i.e., line edges, or point data) the output may be wrong.

    EXAMPLES

    @@ -129,16 +129,16 @@

    AUTHORS


    Area support
    -Original version of r.poly: +Original version of r.poly:
    -Jean Ezell and Andrew Heekin, +Jean Ezell and Andrew Heekin,
    -U.S. Army Construction Engineering +U.S. Army Construction Engineering Research Laboratory -

    Modified program for smoothed lines: +

    Modified program for smoothed lines:
    -David Satnik, +David Satnik, Central Washington University
    Updated 2001 by Andrea Aime, Modena, Italy
    diff --git a/raster/r.topidx/README b/raster/r.topidx/README index da8caa20ff3..cb28578b9e0 100644 --- a/raster/r.topidx/README +++ b/raster/r.topidx/README @@ -22,4 +22,3 @@ from r.water.outlet then the following r.mapcalc statements will create study basin extracted elevation map. r.mapcalc "belev = if(isnull(basin), basin, elev)" - diff --git a/raster/r.topidx/topidx.c b/raster/r.topidx/topidx.c index 5c21f6a228d..2e15bf116ad 100644 --- a/raster/r.topidx/topidx.c +++ b/raster/r.topidx/topidx.c @@ -28,7 +28,7 @@ void initialize(void) void calculate_atanb(void) { int i, j, k, snatb; - int iter, ncells, nroute, nslp; + int ncells, nroute, nslp; double sum, route[9], tanB[9], dx, dx1, dx2, sumtb, C; int nsink; @@ -41,7 +41,11 @@ void calculate_atanb(void) G_important_message(_("Calculating...")); nsink = 0; +<<<<<<< HEAD for (iter = 1; natb < ncells; iter++) { +======= + for (; natb < ncells;) { +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) /* for(i=0;i<80;i++) fprintf(stderr,"\b"); diff --git a/raster/r.transect/r.transect.html b/raster/r.transect/r.transect.html index ca0ab925f71..ed4019391c9 100644 --- a/raster/r.transect/r.transect.html +++ b/raster/r.transect/r.transect.html @@ -3,7 +3,7 @@

    DESCRIPTION

    This program outputs, in ASCII, the values in a raster map which lie along one or more user-defined transect lines. The transects are described by their starting coordinates, -azimuth, and distance. +azimuth, and distance. @@ -199,7 +203,7 @@

    Zonal statistics

    r.univar basins and their IDs
    -Figure: Zones (basins, opacity: 60%) with underlying elevation map +Figure: Zones (basins, opacity: 60%) with underlying elevation map for North Carolina sample dataset. @@ -228,14 +232,14 @@

    Zonal statistics

    0,67.4670791625977,147.161514282227, ... -Comma Separated Values (CSV) file is best viewed through a spreadsheet +Comma Separated Values (CSV) file is best viewed through a spreadsheet program such as Microsoft Excel, Libre/Open Office Calc or Google Docs:
    r.univar raster statistics
    -Figure: Raster statistics for zones (basins, North Carolina sample +Figure: Raster statistics for zones (basins, North Carolina sample dataset) viewed through Libre/Open Office Calc.
    diff --git a/raster/r.univar/r.univar_main.c b/raster/r.univar/r.univar_main.c index cd2bd6abdc3..653a3693288 100644 --- a/raster/r.univar/r.univar_main.c +++ b/raster/r.univar/r.univar_main.c @@ -32,7 +32,7 @@ int nprocs; /* ************************************************************************* */ /* Set up the arguments we are expecting ********************************** */ /* ************************************************************************* */ -void set_params() +void set_params(void) { param.inputfile = G_define_standard_option(G_OPT_R_MAPS); @@ -170,8 +170,13 @@ int main(int argc, char *argv[]) /* table field separator */ zone_info.sep = G_option_to_separator(param.separator); +<<<<<<< HEAD zone_info.min = 0.0 / 0.0; /* set to nan as default */ zone_info.max = 0.0 / 0.0; /* set to nan as default */ +======= + zone_info.min = 0; + zone_info.max = 0; +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) zone_info.n_zones = 0; fdz = NULL; diff --git a/raster/r.univar/r3.univar_main.c b/raster/r.univar/r3.univar_main.c index 7ddaf43b8e5..cb584ea6f2d 100644 --- a/raster/r.univar/r3.univar_main.c +++ b/raster/r.univar/r3.univar_main.c @@ -26,7 +26,7 @@ zone_type zone_info; /* ************************************************************************* */ /* Set up the arguments we are expecting ********************************** */ /* ************************************************************************* */ -void set_params() +void set_params(void) { param.inputfile = G_define_standard_option(G_OPT_R3_MAP); @@ -132,10 +132,17 @@ int main(int argc, char *argv[]) /* table field separator */ zone_info.sep = G_option_to_separator(param.separator); +<<<<<<< HEAD dmin = 0.0 / 0.0; /* set to nan as default */ dmax = 0.0 / 0.0; /* set to nan as default */ zone_info.min = 0.0 / 0.0; /* set to nan as default */ zone_info.max = 0.0 / 0.0; /* set to nan as default */ +======= + dmin = NAN; + dmax = NAN; + zone_info.min = 0; + zone_info.max = 0; +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) zone_info.n_zones = 0; /* open 3D zoning raster with default region */ @@ -200,7 +207,11 @@ int main(int argc, char *argv[]) n_zones = 1; stats = create_univar_stat_struct(map_type, i); +<<<<<<< HEAD for (i = 0; i < n_zones; i++) { +======= + for (i = 0; i < (unsigned int)n_zones; i++) { +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) unsigned int j; for (j = 0; j < stats[i].n_perc; j++) { diff --git a/raster/r.univar/stats.c b/raster/r.univar/stats.c index 438fdc3eb09..90e27b86a1f 100644 --- a/raster/r.univar/stats.c +++ b/raster/r.univar/stats.c @@ -30,8 +30,13 @@ univar_stat *create_univar_stat_struct(int map_type, int n_perc) for (i = 0; i < n_zones; i++) { stats[i].sum = 0.0; stats[i].sumsq = 0.0; +<<<<<<< HEAD stats[i].min = 0.0 / 0.0; /* set to nan as default */ stats[i].max = 0.0 / 0.0; /* set to nan as default */ +======= + stats[i].min = NAN; + stats[i].max = NAN; +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) stats[i].n_perc = n_perc; if (n_perc > 0) stats[i].perc = (double *)G_malloc(n_perc * sizeof(double)); @@ -127,7 +132,11 @@ int print_stats(univar_stat *stats) var_coef = (stdev / mean) * 100.; /* perhaps stdev/fabs(mean) ? */ if (stats[z].n == 0) +<<<<<<< HEAD stats[z].sum = stats[z].sum_abs = 0.0 / 0.0; +======= + stats[z].sum = stats[z].sum_abs = NAN; +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) sprintf(sum_str, "%.15g", stats[z].sum); G_trim_decimal(sum_str); @@ -186,9 +195,15 @@ int print_stats(univar_stat *stats) quartile_perc = (double *)G_calloc(stats[z].n_perc, sizeof(double)); if (stats[z].n == 0) { +<<<<<<< HEAD quartile_25 = median = quartile_75 = 0.0 / 0.0; for (i = 0; i < stats[z].n_perc; i++) quartile_perc[i] = 0.0 / 0.0; +======= + quartile_25 = median = quartile_75 = NAN; + for (i = 0; i < stats[z].n_perc; i++) + quartile_perc[i] = NAN; +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) } else { for (i = 0; i < stats[z].n_perc; i++) { @@ -398,7 +413,11 @@ int print_stats_table(univar_stat *stats) var_coef = (stdev / mean) * 100.; /* perhaps stdev/fabs(mean) ? */ if (stats[z].n == 0) +<<<<<<< HEAD stats[z].sum = stats[z].sum_abs = 0.0 / 0.0; +======= + stats[z].sum = stats[z].sum_abs = NAN; +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) if (zone_info.n_zones) { int z_cat = z + zone_info.min; @@ -446,9 +465,15 @@ int print_stats_table(univar_stat *stats) quartile_perc = (double *)G_calloc(stats[z].n_perc, sizeof(double)); if (stats[z].n == 0) { +<<<<<<< HEAD quartile_25 = median = quartile_75 = 0.0 / 0.0; for (i = 0; i < stats[z].n_perc; i++) quartile_perc[i] = 0.0 / 0.0; +======= + quartile_25 = median = quartile_75 = NAN; + for (i = 0; i < stats[z].n_perc; i++) + quartile_perc[i] = NAN; +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) } else { for (i = 0; i < stats[z].n_perc; i++) { diff --git a/raster/r.uslek/prct2tex.c b/raster/r.uslek/prct2tex.c index 4d80a236979..5b9b9c7707e 100644 --- a/raster/r.uslek/prct2tex.c +++ b/raster/r.uslek/prct2tex.c @@ -111,6 +111,7 @@ int prct2tex(double sand_input, double clay_input, double silt_input) /*G_message("in prct2tex()"); */ /*setup the 3Dvectors and initialize them */ /* index 0 */ +<<<<<<< HEAD struct vector cls_clay[POLYGON_DIMENSION] = {{0.0}}; /* index 1 */ struct vector cls_sandy_clay[POLYGON_DIMENSION] = {{0.0}}; @@ -134,6 +135,31 @@ int prct2tex(double sand_input, double clay_input, double silt_input) struct vector cls_silt_loam[POLYGON_DIMENSION] = {{0.0}}; /* index 11 */ struct vector cls_silt[POLYGON_DIMENSION] = {{0.0}}; +======= + struct vector cls_clay[POLYGON_DIMENSION] = {{.sand = 0.0}}; + /* index 1 */ + struct vector cls_sandy_clay[POLYGON_DIMENSION] = {{.sand = 0.0}}; + /* index 2 */ + struct vector cls_silty_clay[POLYGON_DIMENSION] = {{.sand = 0.0}}; + /* index 3 */ + struct vector cls_sandy_clay_loam[POLYGON_DIMENSION] = {{.sand = 0.0}}; + /* index 4 */ + struct vector cls_clay_loam[POLYGON_DIMENSION] = {{.sand = 0.0}}; + /* index 5 */ + struct vector cls_silty_clay_loam[POLYGON_DIMENSION] = {{.sand = 0.0}}; + /* index 6 */ + struct vector cls_sand[POLYGON_DIMENSION] = {{.sand = 0.0}}; + /* index 7 */ + struct vector cls_loamy_sand[POLYGON_DIMENSION] = {{.sand = 0.0}}; + /* index 8 */ + struct vector cls_sandy_loam[POLYGON_DIMENSION] = {{.sand = 0.0}}; + /* index 9 */ + struct vector cls_loam[POLYGON_DIMENSION] = {{.sand = 0.0}}; + /* index 10 */ + struct vector cls_silt_loam[POLYGON_DIMENSION] = {{.sand = 0.0}}; + /* index 11 */ + struct vector cls_silt[POLYGON_DIMENSION] = {{.sand = 0.0}}; +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) if ((sand_input + clay_input + silt_input) <= 10.0) { sand_input = sand_input * 100.0; diff --git a/raster/r.uslek/r.uslek.html b/raster/r.uslek/r.uslek.html index 442613a43da..b97e65ef500 100644 --- a/raster/r.uslek/r.uslek.html +++ b/raster/r.uslek/r.uslek.html @@ -63,4 +63,7 @@

    SEE ALSO

    AUTHOR

    Yann Chemin, SIC-ISDC, Turkmenistan +<<<<<<< HEAD +======= +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) diff --git a/raster/r.viewshed/BUGS b/raster/r.viewshed/BUGS index 185c7af4bcf..5a533ce8e33 100644 --- a/raster/r.viewshed/BUGS +++ b/raster/r.viewshed/BUGS @@ -1,5 +1,5 @@ BUGS * areas outside of LOS should be NULL, not zero - really? there is a difference between invisible areas + really? there is a difference between invisible areas and areas whose visibility is unknown (zero != NULL) diff --git a/raster/r.viewshed/Makefile b/raster/r.viewshed/Makefile index 8b1ec94fa95..a21e9fb20dc 100644 --- a/raster/r.viewshed/Makefile +++ b/raster/r.viewshed/Makefile @@ -14,4 +14,3 @@ LINK = $(CXX) ifneq ($(strip $(CXX)),) default: cmd endif - diff --git a/raster/r.viewshed/grass.cpp b/raster/r.viewshed/grass.cpp index 5b23c2a9227..4b326177a8e 100644 --- a/raster/r.viewshed/grass.cpp +++ b/raster/r.viewshed/grass.cpp @@ -210,6 +210,8 @@ size_t init_event_list_in_memory(AEvent *eventList, char *rastName, G_SURFACE_T **inrast; int nrows = Rast_window_rows(); int ncols = Rast_window_cols(); + if (nrows > maxDimension || ncols > maxDimension) + G_fatal_error(_("Grid size exceeds max dimension: %d"), maxDimension); inrast = (G_SURFACE_T **)G_malloc(3 * sizeof(G_SURFACE_T *)); assert(inrast); @@ -238,7 +240,11 @@ size_t init_event_list_in_memory(AEvent *eventList, char *rastName, Rast_get_row(infd, inrast[2], 0, data_type); e.angle = -1; +<<<<<<< HEAD for (i = 0; i < nrows; i++) { +======= + for (i = 0; i < (dimensionType)nrows; i++) { +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) /*read in the raster row */ G_SURFACE_T *tmprast = inrast[0]; @@ -254,7 +260,11 @@ size_t init_event_list_in_memory(AEvent *eventList, char *rastName, G_percent(i, nrows, 2); /*fill event list with events from this row */ +<<<<<<< HEAD for (j = 0; j < Rast_window_cols(); j++) { +======= + for (j = 0; j < (dimensionType)ncols; j++) { +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) e.row = i; e.col = j; @@ -431,6 +441,8 @@ AMI_STREAM *init_event_list(char *rastName, Viewpoint *vp, G_SURFACE_T **inrast; int nrows = Rast_window_rows(); int ncols = Rast_window_cols(); + if (nrows > maxDimension || ncols > maxDimension) + G_fatal_error(_("Grid size exceeds max dimension: %d"), maxDimension); inrast = (G_SURFACE_T **)G_malloc(3 * sizeof(G_SURFACE_T *)); assert(inrast); @@ -456,7 +468,11 @@ AMI_STREAM *init_event_list(char *rastName, Viewpoint *vp, e.angle = -1; /*start scanning through the grid */ +<<<<<<< HEAD for (i = 0; i < nrows; i++) { +======= + for (i = 0; i < (dimensionType)nrows; i++) { +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) G_percent(i, nrows, 2); @@ -473,7 +489,11 @@ AMI_STREAM *init_event_list(char *rastName, Viewpoint *vp, Rast_set_null_value(inrast[2], ncols, data_type); /*fill event list with events from this row */ +<<<<<<< HEAD for (j = 0; j < ncols; j++) { +======= + for (j = 0; j < (dimensionType)ncols; j++) { +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) e.row = i; e.col = j; @@ -627,11 +647,22 @@ void save_grid_to_GRASS(Grid *grid, char *filename, RASTER_MAP_TYPE type, outrast = Rast_allocate_buf(type); assert(outrast); + int nrows = Rast_window_rows(); + int ncols = Rast_window_cols(); + if (nrows > maxDimension || ncols > maxDimension) + G_fatal_error(_("Grid size exceeds max dimension: %d"), maxDimension); + dimensionType i, j; +<<<<<<< HEAD for (i = 0; i < Rast_window_rows(); i++) { G_percent(i, Rast_window_rows(), 5); for (j = 0; j < Rast_window_cols(); j++) { +======= + for (i = 0; i < (dimensionType)nrows; i++) { + G_percent(i, nrows, 5); + for (j = 0; j < (dimensionType)ncols; j++) { +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) if (is_invisible_nodata(grid->grid_data[i][j])) { writeNodataValue(outrast, j, type); } @@ -705,14 +736,27 @@ void save_vis_elev_to_GRASS(Grid *visgrid, char *elevfname, char *visfname, visrast = Rast_allocate_buf(elev_data_type); assert(visrast); + int nrows = Rast_window_rows(); + int ncols = Rast_window_cols(); + if (nrows > maxDimension || ncols > maxDimension) + G_fatal_error(_("Grid size exceeds max dimension: %d"), maxDimension); + dimensionType i, j; double elev = 0, viewshed_value; +<<<<<<< HEAD for (i = 0; i < Rast_window_rows(); i++) { /* get the row from elevation */ Rast_get_row(elevfd, elevrast, i, elev_data_type); for (j = 0; j < Rast_window_cols(); j++) { +======= + for (i = 0; i < (dimensionType)nrows; i++) { + /* get the row from elevation */ + Rast_get_row(elevfd, elevrast, i, elev_data_type); + + for (j = 0; j < (dimensionType)ncols; j++) { +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) /* read the current elevation value */ int isNull = 0; @@ -840,10 +884,20 @@ void save_io_visibilitygrid_to_GRASS(IOVisibilityGrid *visgrid, char *fname, counter++; } + int nrows = Rast_window_rows(); + int ncols = Rast_window_cols(); + if (nrows > maxDimension || ncols > maxDimension) + G_fatal_error(_("Grid size exceeds max dimension: %d"), maxDimension); + dimensionType i, j; +<<<<<<< HEAD for (i = 0; i < Rast_window_rows(); i++) { for (j = 0; j < Rast_window_cols(); j++) { +======= + for (i = 0; i < (dimensionType)nrows; i++) { + for (j = 0; j < (dimensionType)ncols; j++) { +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) if (curResult->row == i && curResult->col == j) { /*cell is recodred in the visibility stream: it must be @@ -940,8 +994,15 @@ void save_io_vis_and_elev_to_GRASS(IOVisibilityGrid *visgrid, char *elevfname, dimensionType i, j; double elev = 0; +<<<<<<< HEAD +======= + int nrows = Rast_window_rows(); + int ncols = Rast_window_cols(); + if (nrows > maxDimension || ncols > maxDimension) + G_fatal_error(_("Grid size exceeds max dimension: %d"), maxDimension); +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) - for (i = 0; i < Rast_window_rows(); i++) { + for (i = 0; i < (dimensionType)nrows; i++) { Rast_get_row(elevfd, elevrast, i, elev_data_type); diff --git a/raster/r.viewshed/main.cpp b/raster/r.viewshed/main.cpp index 261f739675f..91c3cd384b0 100644 --- a/raster/r.viewshed/main.cpp +++ b/raster/r.viewshed/main.cpp @@ -267,7 +267,12 @@ int main(int argc, char *argv[]) } else { /*set it */ +<<<<<<< HEAD sprintf(buf, "%s=%s", STREAM_TMPDIR, viewOptions.streamdir); +======= + snprintf(buf, sizeof(buf), "%s=%s", STREAM_TMPDIR, + viewOptions.streamdir); +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) G_debug(1, "setting %s ", buf); putenv(buf); if (getenv(STREAM_TMPDIR) == NULL) { @@ -493,7 +498,7 @@ void parse_args(int argc, char *argv[], int *vpRow, int *vpCol, _("Maximum visibility radius. By default infinity (-1)"); char infdist[10]; - sprintf(infdist, "%d", INFINITY_DISTANCE); + snprintf(infdist, sizeof(infdist), "%d", INFINITY_DISTANCE); maxDistOpt->answer = infdist; maxDistOpt->guisection = _("Settings"); diff --git a/raster/r.viewshed/r.viewshed.html b/raster/r.viewshed/r.viewshed.html index 656fad32c46..83318840c68 100644 --- a/raster/r.viewshed/r.viewshed.html +++ b/raster/r.viewshed/r.viewshed.html @@ -3,7 +3,7 @@

    DESCRIPTION

    r.viewshed is a module that computes the viewshed of a point on a raster terrain. That is, given an elevation raster, and the location of an observer, it generates a raster output map showing -which cells are visible from the given location. +which cells are visible from the given location. The algorithm underlying r.viewshed minimizes both the CPU operations and the transfer of data between main memory and disk; as a @@ -31,7 +31,7 @@

    NOTES

    regard to the viewpoint, in degrees, if the point is visible. A value of 0 is directly below the specified viewing position, 90 is due horizontal. The angle to the cell containing the viewing -position is undefined and set to 180. +position is undefined and set to 180.

    If the -b flag is set, the output is in boolean-mode, and each point @@ -47,7 +47,7 @@

    NOTES

    in the output map is marked as:
      -
    • no-data (null), if the respective point in the elevation map is no-data (null) +
    • 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.
    @@ -117,15 +117,15 @@

    Memory mode

    The algorithm

    r.viewshed uses the following model for determining -visibility: The height of a cell is assumed to be variable, and the -actual height of a point falling into a cell, but not identical the cell -center, is interpolated. Thus the terrain is viewed as a smooth surface. +visibility: The height of a cell is assumed to be variable, and the +actual height of a point falling into a cell, but not identical the cell +center, is interpolated. Thus the terrain is viewed as a smooth surface. Two points are visible to each other if their line-of-sight does not -intersect the terrain. The height for an arbitrary point x in the terrain -is interpolated from the 4 surrounding neighbours. This means that this +intersect the terrain. The height for an arbitrary point x in the terrain +is interpolated from the 4 surrounding neighbours. This means that this model does a bilinear interpolation of heights. -This model is suitable for both low and high resolution rasters as well +This model is suitable for both low and high resolution rasters as well as terrain with flat and steep slopes.

    The core of the algorithm is determining, for each cell, the @@ -168,16 +168,16 @@

    The algorithm

    [SDF] [SDF] - + The sweep-line. The active cells. - +

    EXAMPLES

    -Using the North Carolina dataset: Compute viewshed from a observation -point (coordinates: 638728.087167, 220609.261501) which is 5 meters +Using the North Carolina dataset: Compute viewshed from a observation +point (coordinates: 638728.087167, 220609.261501) which is 5 meters above ground:
    @@ -217,14 +217,14 @@ 

    REFERENCES

      -
    • Computing Visibility on Terrains in External Memory. Herman -Haverkort, Laura Toma and Yi Zhuang. In ACM Journal on Experimental +
    • Computing Visibility on Terrains in External Memory. Herman +Haverkort, Laura Toma and Yi Zhuang. In ACM Journal on Experimental Algorithmics (JEA) 13 (2009).
    • - +
    • Computing -Visibility on Terrains in External Memory. Herman Haverkort, Laura -Toma and Yi Zhuang. In the Proceedings of the 9th Workshop on -Algorithm Engineering and Experiments / Workshop on Analytic Algorithms +Visibility on Terrains in External Memory. Herman Haverkort, Laura +Toma and Yi Zhuang. In the Proceedings of the 9th Workshop on +Algorithm Engineering and Experiments / Workshop on Analytic Algorithms and Combinatorics (ALENEX/ANALCO 2007).
    diff --git a/raster/r.volume/r.volume.html b/raster/r.volume/r.volume.html index 7a32a0ffc09..6f79e6ee76f 100644 --- a/raster/r.volume/r.volume.html +++ b/raster/r.volume/r.volume.html @@ -62,7 +62,7 @@

    APPLICATIONS

    suitable masking or clump maps, very interesting applications can be done with r.volume. Such as, calculating the volume of rock in a potential quarry; calculating cut/fill volumes for roads; finding -water volumes in potential reservoirs. +water volumes in potential reservoirs.

    EXAMPLE

    @@ -73,7 +73,7 @@

    Computation of a water basin volume

     # set computational region to small basin within extent of LiDAR elevation model
     g.region n=220361 s=220123 w=638527 e=638894 align=elev_lid792_1m -p
    -# generate shared relief map for better terrain visualization 
    +# generate shared relief map for better terrain visualization
     r.relief input=elev_lid792_1m output=elev_lid792_1m_shaded
     d.shade shade=elev_lid792_1m_shaded color=elev_lid792_1m
     
    diff --git a/raster/r.walk/r.walk.html b/raster/r.walk/r.walk.html
    index 48868cf4cb1..1adcea9f35f 100644
    --- a/raster/r.walk/r.walk.html
    +++ b/raster/r.walk/r.walk.html
    @@ -8,11 +8,11 @@ 

    DESCRIPTION

    r.walk outputs 1) a raster map showing the lowest cumulative cost (time) of moving between each cell and the user-specified -starting points and 2) a second raster map showing the movement -direction to the next cell on the path back to the start point (see -Movement Direction). It uses an input elevation -raster map whose cell category values represent elevation, -combined with a second input raster map whose cell values +starting points and 2) a second raster map showing the movement +direction to the next cell on the path back to the start point (see +Movement Direction). It uses an input elevation +raster map whose cell category values represent elevation, +combined with a second input raster map whose cell values represent friction costs.

    @@ -79,7 +79,7 @@

    NOTES

    option, the neighbours marked with a K are also considered.
    -  K   K 
    +  K   K
     K x x x K
       x O x
     K x x x K
    @@ -95,16 +95,16 @@ 

    Movement Direction

    The movement direction surface is created to record the sequence of -movements that created the cost accumulation surface. This movement -direction surface can be used by r.path -to recover a path from an end point back to the start point. -The direction of each cell points towards the next cell. +movements that created the cost accumulation surface. This movement +direction surface can be used by r.path +to recover a path from an end point back to the start point. +The direction of each cell points towards the next cell. The directions are recorded as degrees CCW from East:

    -       112.5      67.5         i.e. a cell with the value 135 
    +       112.5      67.5         i.e. a cell with the value 135
     157.5  135   90   45   22.5    means the next cell is to the north-west
    -       180   x   360           
    +       180   x   360
     202.5  225  270  315  337.5
            247.5     292.5
     
    @@ -112,20 +112,20 @@

    Movement Direction

    Once r.walk computes the cumulative cost map as a linear combination of friction cost (from friction map) and the altitude and -distance covered (from the digital elevation model), the associated -movement direction map can be used by r.path +distance covered (from the digital elevation model), the associated +movement direction map can be used by r.path to find the minimum cost path.

    -r.walk, like most all GRASS raster programs, is also made to -be run on maps larger that can fit in available computer memory. As the -algorithm works through the dynamic list of cells it can move almost -randomly around the entire area. r.walk divides the entire -area into a number of pieces and swaps these pieces in and out of -memory (to and from disk) as needed. This provides a virtual memory -approach optimally designed for 2-D raster maps. The amount of memory -to be used by r.walk can be controlled with the memory -option, default is 300 MB. For systems with less memory this value will +r.walk, like most all GRASS raster programs, is also made to +be run on maps larger that can fit in available computer memory. As the +algorithm works through the dynamic list of cells it can move almost +randomly around the entire area. r.walk divides the entire +area into a number of pieces and swaps these pieces in and out of +memory (to and from disk) as needed. This provides a virtual memory +approach optimally designed for 2-D raster maps. The amount of memory +to be used by r.walk can be controlled with the memory +option, default is 300 MB. For systems with less memory this value will have to be set to a lower value.

    EXAMPLES

    diff --git a/raster/r.watershed/Makefile b/raster/r.watershed/Makefile index b01a9f389ff..ff615b11dc9 100644 --- a/raster/r.watershed/Makefile +++ b/raster/r.watershed/Makefile @@ -10,5 +10,3 @@ SUBDIRS = \ include $(MODULE_TOPDIR)/include/Make/Dir.make default: parsubdirs - - diff --git a/raster/r.watershed/front/main.c b/raster/r.watershed/front/main.c index 331161787d1..2a565b5484f 100644 --- a/raster/r.watershed/front/main.c +++ b/raster/r.watershed/front/main.c @@ -34,7 +34,7 @@ static void do_opt(const struct Option *opt) if (!opt->answer) return; buf = G_malloc(strlen(opt->key) + 1 + strlen(opt->answer) + 1); - sprintf(buf, "%s=%s", opt->key, opt->answer); + snprintf(buf, GPATH_MAX, "%s=%s", opt->key, opt->answer); new_argv[new_argc++] = buf; } @@ -261,8 +261,13 @@ int main(int argc, char *argv[]) } /* Build command line */ +<<<<<<< HEAD sprintf(command, "%s/etc/r.watershed/%s", G_gisbase(), flag_seg->answer ? "seg" : "ram"); +======= + snprintf(command, GPATH_MAX, "%s/etc/r.watershed/%s", G_gisbase(), + flag_seg->answer ? "seg" : "ram"); +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) new_argv[new_argc++] = command; if (flag_sfd->answer) diff --git a/raster/r.watershed/front/r.watershed.html b/raster/r.watershed/front/r.watershed.html index 1d0985a5c42..85bf75ab12e 100644 --- a/raster/r.watershed/front/r.watershed.html +++ b/raster/r.watershed/front/r.watershed.html @@ -73,9 +73,9 @@

    NOTES

    flow. If omitted, a value of one (1) is assumed.

    -Raster retention map specifies correction factors per cell for -flow distribution. This map indicates the percentage of overland flow -units leaving each cell. Values should be between zero and 100. If +Raster retention map specifies correction factors per cell for +flow distribution. This map indicates the percentage of overland flow +units leaving each cell. Values should be between zero and 100. If omitted, a value of 100 is assumed.

    @@ -86,9 +86,9 @@

    NOTES

    used for the RUSLE calculations.

    -Option blocking specifies terrain that will block overland -surface flow. Blocking cells and streams stop the slope length for the -RUSLE. All cells that are not NULL and not zero indicate blocking +Option blocking specifies terrain that will block overland +surface flow. Blocking cells and streams stop the slope length for the +RUSLE. All cells that are not NULL and not zero indicate blocking terrain.

    @@ -137,7 +137,7 @@

    NOTES

    tan(β) is the local slope angle. The SPI reflects the power of water flow at any point in the catchment and the tendency for gravitational forces to move that water downslope (Moore -et al. 1991). This value will be negative if α < 0, +et al. 1991). This value will be negative if α < 0, i.e. for cells with possible surface runoff from outside of the current geographic region. @@ -196,7 +196,7 @@

    NOTES

    (S) factor for the Universal Soil Loss Equation (RUSLE). Equations taken from article entitled Revised Slope Steepness Factor for the Universal Soil -Loss Equation (McCool et al. 1987). Since the S factor is a small +Loss Equation
    (McCool et al. 1987). Since the S factor is a small number (usually less than one), the GRASS output map is of type DCELL.

    AT least-cost search algorithm

    @@ -248,7 +248,7 @@

    Multiple flow direction (MFD)

    In-memory mode and disk swap mode

    There are two versions of this program: ram and seg. -ram is used by default, seg can be used by setting +ram is used by default, seg can be used by setting the -m flag.

    @@ -283,7 +283,7 @@

    Large regions with many cells

    The upper limit of the ram version is 2 billion (231 - 1) cells, whereas the upper limit for -the seg version is 9 billion-billion (263 - 1 = +the seg version is 9 billion-billion (263 - 1 = 9.223372e+18) cells.
    In some situations, the region size (number of cells) may be too large for the amount of time or memory @@ -484,7 +484,7 @@

    Convert r.watershed streams map output to a vector map

    v.db.dropcolumn map=rwater_course column=label
    - -All GRASS GIS raster map types are by default ZSTD compressed if -available, otherwise ZLIB compressed. Through the environment variable -GRASS_COMPRESSOR the compression method can be set to RLE, +All GRASS GIS raster map types are by default ZSTD compressed if +available, otherwise ZLIB compressed. Through the environment variable +GRASS_COMPRESSOR the compression method can be set to RLE, ZLIB, LZ4, BZIP2, or ZSTD.

    -Important: the NULL file compression can be turned off with -export GRASS_COMPRESS_NULLS=0. Raster maps with NULL file -compression can only be opened with GRASS GIS 7.2.0 or later. NULL file +Important: the NULL file compression can be turned off with +export GRASS_COMPRESS_NULLS=0. Raster maps with NULL file +compression can only be opened with GRASS GIS 7.2.0 or later. NULL file compression for a particular raster map can be managed with r.null -z.

    Integer (CELL type) raster maps can be compressed with RLE if -the environment variable GRASS_COMPRESSOR exists and is set to +the environment variable GRASS_COMPRESSOR exists and is set to RLE. However, this is not recommended.

    Floating point (FCELL, DCELL) raster maps never use RLE compression; @@ -312,41 +312,41 @@

    Raster compression

    RLE
    -
    DEPRECATED Run-Length Encoding, poor compression ratio but -fast. It is kept for backwards compatibility to read raster maps +
    DEPRECATED Run-Length Encoding, poor compression ratio but +fast. It is kept for backwards compatibility to read raster maps created with GRASS 6. It is only used for raster maps of type CELL. FCELL and DCELL maps are never and have never been compressed with RLE.
    ZLIB
    -
    ZLIB's deflate is the default compression method for all raster -maps, if ZSTD is not available. GRASS GIS 8 uses by default 1 as ZLIB -compression level which is the best compromise between speed and -compression ratio, also when compared to other available compression -methods. Valid levels are in the range [1, 9] and can be set with the +
    ZLIB's deflate is the default compression method for all raster +maps, if ZSTD is not available. GRASS GIS 8 uses by default 1 as ZLIB +compression level which is the best compromise between speed and +compression ratio, also when compared to other available compression +methods. Valid levels are in the range [1, 9] and can be set with the environment variable GRASS_ZLIB_LEVEL.
    LZ4
    -
    LZ4 is a very fast compression method, about as fast as no -compression. Decompression is also very fast. The compression ratio is -generally higher than for RLE but worse than for ZLIB. LZ4 is +
    LZ4 is a very fast compression method, about as fast as no +compression. Decompression is also very fast. The compression ratio is +generally higher than for RLE but worse than for ZLIB. LZ4 is recommended if disk space is not a limiting factor.
    BZIP2
    -
    BZIP2 can provide compression ratios much higher than the other -methods, but only for large raster maps (> 10000 columns). For large -raster maps, disk space consumption can be reduced by 30 - 50% when -using BZIP2 instead of ZLIB's deflate. BZIP2 is the slowest compression -and decompression method. However, if reading from / writing to a -storage device is the limiting factor, BZIP2 compression can speed up -raster map processing. Be aware that for smaller raster maps, BZIP2 -compression ratio can be worse than other compression methods.
    +
    BZIP2 can provide compression ratios much higher than the other +methods, but only for large raster maps (> 10000 columns). For large +raster maps, disk space consumption can be reduced by 30 - 50% when +using BZIP2 instead of ZLIB's deflate. BZIP2 is the slowest compression +and decompression method. However, if reading from / writing to a +storage device is the limiting factor, BZIP2 compression can speed up +raster map processing. Be aware that for smaller raster maps, BZIP2 +compression ratio can be worse than other compression methods.
    ZSTD
    -
    ZSTD (Zstandard) provides compression ratios higher than ZLIB but -lower than BZIP2 (for large data). ZSTD compresses up to 4x faster than -ZLIB, and usually decompresses 6x faster than ZLIB. ZSTD is the -default compression method if available.
    +
    ZSTD (Zstandard) provides compression ratios higher than ZLIB but +lower than BZIP2 (for large data). ZSTD compresses up to 4x faster than +ZLIB, and usually decompresses 6x faster than ZLIB. ZSTD is the +default compression method if available.

    -In the internal cellhd file, the value for "compressed" is 1 for RLE, 2 +In the internal cellhd file, the value for "compressed" is 1 for RLE, 2 for ZLIB, 3 for LZ4,4 for BZIP2, and 5 for ZSTD.

    Obviously, decompression is controlled by the raster map's compression, diff --git a/raster3d/Makefile b/raster3d/Makefile index c6051588016..8e6c024871e 100644 --- a/raster3d/Makefile +++ b/raster3d/Makefile @@ -32,4 +32,3 @@ include $(MODULE_TOPDIR)/include/Make/Dir.make default: htmldir htmldir: parsubdirs - diff --git a/raster3d/r3.cross.rast/main.c b/raster3d/r3.cross.rast/main.c index 62f26fba24a..78676cbdbff 100644 --- a/raster3d/r3.cross.rast/main.c +++ b/raster3d/r3.cross.rast/main.c @@ -37,7 +37,11 @@ int globalElevMapType; /*- prototypes --------------------------------------------------------------*/ void fatal_error(void *map, int elevfd, int outfd, char *errorMsg); /*Simple Error message */ +<<<<<<< HEAD void set_params(); /*Fill the paramType structure */ +======= +void set_params(void); /*Fill the paramType structure */ +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) void rast3d_cross_section(void *map, RASTER3D_Region region, int elevfd, int outfd); /*Write the raster */ void close_output_map(int fd); /*close the map */ @@ -77,7 +81,7 @@ void close_output_map(int fd) /* ************************************************************************* */ /* Set up the arguments we are expecting *********************************** */ /* ************************************************************************* */ -void set_params() +void set_params(void) { param.input = G_define_option(); param.input->key = "input"; diff --git a/raster3d/r3.cross.rast/test.r3.cross.rast.sh b/raster3d/r3.cross.rast/test.r3.cross.rast.sh index 680675e0bd9..63475eb65c7 100755 --- a/raster3d/r3.cross.rast/test.r3.cross.rast.sh +++ b/raster3d/r3.cross.rast/test.r3.cross.rast.sh @@ -16,7 +16,7 @@ r.mapcalc --o expr="elev_4 = 35" r.mapcalc --o expr="elev_5 = 45" r.mapcalc --o expr="elev_NAN = 50" r.mapcalc --o expr="elev_cross = float(col()* 5)" -# Now create a voxel map with value = col + row + depth. +# Now create a voxel map with value = col + row + depth. r3.mapcalc --o expr="volume = col() + row() + depth()" # Add null value information r3.mapcalc --o expr="volume_null = if(row() == 1 || row() == 5, null(), volume)" @@ -34,12 +34,12 @@ r3.cross.rast --o input=volume_null elevation=elev_NAN output=test_cross_section r3.cross.rast --o input=volume_null elevation=elev_cross output=test_cross_section_result # Export of the text files -for i in `g.list type=raster pattern=test_cross_section_*` ; do - r.out.ascii input=$i output=${i}.txt; +for i in `g.list type=raster pattern=test_cross_section_*` ; do + r.out.ascii input=$i output=${i}.txt; done # Comparison of references and text files -for i in `ls *.ref` ; do - diff $i "`basename $i .ref`.txt" ; +for i in `ls *.ref` ; do + diff $i "`basename $i .ref`.txt" ; done rm *.txt diff --git a/raster3d/r3.flow/Makefile b/raster3d/r3.flow/Makefile index e0ccc1e3799..b64d49466f9 100644 --- a/raster3d/r3.flow/Makefile +++ b/raster3d/r3.flow/Makefile @@ -1,6 +1,6 @@ MODULE_TOPDIR = ../.. -PROGRAMS=r3.flow test.r3flow +PROGRAMS=r3.flow test.r3flow LIBES = $(RASTER3DLIB) $(RASTERLIB) $(GISLIB) $(VECTORLIB) $(DBMILIB) DEPENDENCIES = $(RASTER3DDEP) $(RASTERDEP) $(GISDEP) $(VECTORDEP) $(DBMIDEP) diff --git a/raster3d/r3.flow/r3.flow.html b/raster3d/r3.flow/r3.flow.html index 15040843f57..f4f9510e7df 100644 --- a/raster3d/r3.flow/r3.flow.html +++ b/raster3d/r3.flow/r3.flow.html @@ -24,7 +24,7 @@

    Flow line integration

    Flow line integration can be influenced by several parameters. Option step controls the integration step and influences the precision and computational time. The unit of step can be defined either in terms of the size of the voxel (3D raster cell), -length in map units, or as elapsed time. +length in map units, or as elapsed time. Option limit specifies the maximum number of steps of each flow line.

    Attributes

    diff --git a/raster3d/r3.gradient/r3.gradient.html b/raster3d/r3.gradient/r3.gradient.html index 7514c488f03..a0fb431a620 100644 --- a/raster3d/r3.gradient/r3.gradient.html +++ b/raster3d/r3.gradient/r3.gradient.html @@ -1,7 +1,7 @@

    DESCRIPTION

    -Module r3.gradient computes gradient from a 3D raster map. -Results are three 3D raster maps describing the x, y, z components of +Module r3.gradient computes gradient from a 3D raster map. +Results are three 3D raster maps describing the x, y, z components of the computed gradient field.

    EXAMPLES

    diff --git a/raster3d/r3.gradient/testsuite/data/test_map_1 b/raster3d/r3.gradient/testsuite/data/test_map_1 index c02365652a2..3775b407688 100644 --- a/raster3d/r3.gradient/testsuite/data/test_map_1 +++ b/raster3d/r3.gradient/testsuite/data/test_map_1 @@ -9,53 +9,53 @@ bottom: 0.000000 rows: 10 cols: 12 levels: 5 -1.73205081 2.44948974 3.31662479 4.24264069 5.19615242 6.16441400 7.14142843 8.12403840 9.11043358 10.09950494 11.09053651 12.08304597 -2.44948974 3.00000000 3.74165739 4.58257569 5.47722558 6.40312424 7.34846923 8.30662386 9.27361850 10.24695077 11.22497216 12.20655562 -3.31662479 3.74165739 4.35889894 5.09901951 5.91607978 6.78232998 7.68114575 8.60232527 9.53939201 10.48808848 11.44552314 12.40967365 -4.24264069 4.58257569 5.09901951 5.74456265 6.48074070 7.28010989 8.12403840 9.00000000 9.89949494 10.81665383 11.74734012 12.68857754 -5.19615242 5.47722558 5.91607978 6.48074070 7.14142843 7.87400787 8.66025404 9.48683298 10.34408043 11.22497216 12.12435565 13.03840481 -6.16441400 6.40312424 6.78232998 7.28010989 7.87400787 8.54400375 9.27361850 10.04987562 10.86278049 11.70469991 12.56980509 13.45362405 -7.14142843 7.34846923 7.68114575 8.12403840 8.66025404 9.27361850 9.94987437 10.67707825 11.44552314 12.24744871 13.07669683 13.92838828 -8.12403840 8.30662386 8.60232527 9.00000000 9.48683298 10.04987562 10.67707825 11.35781669 12.08304597 12.84523258 13.63818170 14.45683229 -9.11043358 9.27361850 9.53939201 9.89949494 10.34408043 10.86278049 11.44552314 12.08304597 12.76714533 13.49073756 14.24780685 15.03329638 -10.09950494 10.24695077 10.48808848 10.81665383 11.22497216 11.70469991 12.24744871 12.84523258 13.49073756 14.17744688 14.89966443 15.65247584 -2.44948974 3.00000000 3.74165739 4.58257569 5.47722558 6.40312424 7.34846923 8.30662386 9.27361850 10.24695077 11.22497216 12.20655562 -3.00000000 3.46410162 4.12310563 4.89897949 5.74456265 6.63324958 7.54983444 8.48528137 9.43398113 10.39230485 11.35781669 12.32882801 -3.74165739 4.12310563 4.69041576 5.38516481 6.16441400 7.00000000 7.87400787 8.77496439 9.69535971 10.63014581 11.57583690 12.52996409 -4.58257569 4.89897949 5.38516481 6.00000000 6.70820393 7.48331477 8.30662386 9.16515139 10.04987562 10.95445115 11.87434209 12.80624847 -5.47722558 5.74456265 6.16441400 6.70820393 7.34846923 8.06225775 8.83176087 9.64365076 10.48808848 11.35781669 12.24744871 13.15294644 -6.40312424 6.63324958 7.00000000 7.48331477 8.06225775 8.71779789 9.43398113 10.19803903 11.00000000 11.83215957 12.68857754 13.56465997 -7.34846923 7.54983444 7.87400787 8.30662386 8.83176087 9.43398113 10.09950494 10.81665383 11.57583690 12.36931688 13.19090596 14.03566885 -8.30662386 8.48528137 8.77496439 9.16515139 9.64365076 10.19803903 10.81665383 11.48912529 12.20655562 12.96148140 13.74772708 14.56021978 -9.27361850 9.43398113 9.69535971 10.04987562 10.48808848 11.00000000 11.57583690 12.20655562 12.88409873 13.60147051 14.35270009 15.13274595 -10.24695077 10.39230485 10.63014581 10.95445115 11.35781669 11.83215957 12.36931688 12.96148140 13.60147051 14.28285686 15.00000000 15.74801575 -3.31662479 3.74165739 4.35889894 5.09901951 5.91607978 6.78232998 7.68114575 8.60232527 9.53939201 10.48808848 11.44552314 12.40967365 -3.74165739 4.12310563 4.69041576 5.38516481 6.16441400 7.00000000 7.87400787 8.77496439 9.69535971 10.63014581 11.57583690 12.52996409 -4.35889894 4.69041576 5.19615242 5.83095189 6.55743852 7.34846923 8.18535277 9.05538514 9.94987437 10.86278049 11.78982612 12.72792206 -5.09901951 5.38516481 5.83095189 6.40312424 7.07106781 7.81024968 8.60232527 9.43398113 10.29563014 11.18033989 12.08304597 13.00000000 -5.91607978 6.16441400 6.55743852 7.07106781 7.68114575 8.36660027 9.11043358 9.89949494 10.72380529 11.57583690 12.44989960 13.34166406 -6.78232998 7.00000000 7.34846923 7.81024968 8.36660027 9.00000000 9.69535971 10.44030651 11.22497216 12.04159458 12.88409873 13.74772708 -7.68114575 7.87400787 8.18535277 8.60232527 9.11043358 9.69535971 10.34408043 11.04536102 11.78982612 12.56980509 13.37908816 14.21267040 -8.60232527 8.77496439 9.05538514 9.43398113 9.89949494 10.44030651 11.04536102 11.70469991 12.40967365 13.15294644 13.92838828 14.73091986 -9.53939201 9.69535971 9.94987437 10.29563014 10.72380529 11.22497216 11.78982612 12.40967365 13.07669683 13.78404875 14.52583905 15.29705854 -10.48808848 10.63014581 10.86278049 11.18033989 11.57583690 12.04159458 12.56980509 13.15294644 13.78404875 14.45683229 15.16575089 15.90597372 -4.24264069 4.58257569 5.09901951 5.74456265 6.48074070 7.28010989 8.12403840 9.00000000 9.89949494 10.81665383 11.74734012 12.68857754 -4.58257569 4.89897949 5.38516481 6.00000000 6.70820393 7.48331477 8.30662386 9.16515139 10.04987562 10.95445115 11.87434209 12.80624847 -5.09901951 5.38516481 5.83095189 6.40312424 7.07106781 7.81024968 8.60232527 9.43398113 10.29563014 11.18033989 12.08304597 13.00000000 -5.74456265 6.00000000 6.40312424 6.92820323 7.54983444 8.24621125 9.00000000 9.79795897 10.63014581 11.48912529 12.36931688 13.26649916 -6.48074070 6.70820393 7.07106781 7.54983444 8.12403840 8.77496439 9.48683298 10.24695077 11.04536102 11.87434209 12.72792206 13.60147051 -7.28010989 7.48331477 7.81024968 8.24621125 8.77496439 9.38083152 10.04987562 10.77032961 11.53256259 12.32882801 13.15294644 14.00000000 -8.12403840 8.30662386 8.60232527 9.00000000 9.48683298 10.04987562 10.67707825 11.35781669 12.08304597 12.84523258 13.63818170 14.45683229 -9.00000000 9.16515139 9.43398113 9.79795897 10.24695077 10.77032961 11.35781669 12.00000000 12.68857754 13.41640786 14.17744688 14.96662955 -9.89949494 10.04987562 10.29563014 10.63014581 11.04536102 11.53256259 12.08304597 12.68857754 13.34166406 14.03566885 14.76482306 15.52417470 -10.81665383 10.95445115 11.18033989 11.48912529 11.87434209 12.32882801 12.84523258 13.41640786 14.03566885 14.69693846 15.39480432 16.12451550 -5.19615242 5.47722558 5.91607978 6.48074070 7.14142843 7.87400787 8.66025404 9.48683298 10.34408043 11.22497216 12.12435565 13.03840481 -5.47722558 5.74456265 6.16441400 6.70820393 7.34846923 8.06225775 8.83176087 9.64365076 10.48808848 11.35781669 12.24744871 13.15294644 -5.91607978 6.16441400 6.55743852 7.07106781 7.68114575 8.36660027 9.11043358 9.89949494 10.72380529 11.57583690 12.44989960 13.34166406 -6.48074070 6.70820393 7.07106781 7.54983444 8.12403840 8.77496439 9.48683298 10.24695077 11.04536102 11.87434209 12.72792206 13.60147051 -7.14142843 7.34846923 7.68114575 8.12403840 8.66025404 9.27361850 9.94987437 10.67707825 11.44552314 12.24744871 13.07669683 13.92838828 -7.87400787 8.06225775 8.36660027 8.77496439 9.27361850 9.84885780 10.48808848 11.18033989 11.91637529 12.68857754 13.49073756 14.31782106 -8.66025404 8.83176087 9.11043358 9.48683298 9.94987437 10.48808848 11.09053651 11.74734012 12.44989960 13.19090596 13.96424004 14.76482306 -9.48683298 9.64365076 9.89949494 10.24695077 10.67707825 11.18033989 11.74734012 12.36931688 13.03840481 13.74772708 14.49137675 15.26433752 -10.34408043 10.48808848 10.72380529 11.04536102 11.44552314 11.91637529 12.44989960 13.03840481 13.67479433 14.35270009 15.06651917 15.81138830 -11.22497216 11.35781669 11.57583690 11.87434209 12.24744871 12.68857754 13.19090596 13.74772708 14.35270009 15.00000000 15.68438714 16.40121947 +1.73205081 2.44948974 3.31662479 4.24264069 5.19615242 6.16441400 7.14142843 8.12403840 9.11043358 10.09950494 11.09053651 12.08304597 +2.44948974 3.00000000 3.74165739 4.58257569 5.47722558 6.40312424 7.34846923 8.30662386 9.27361850 10.24695077 11.22497216 12.20655562 +3.31662479 3.74165739 4.35889894 5.09901951 5.91607978 6.78232998 7.68114575 8.60232527 9.53939201 10.48808848 11.44552314 12.40967365 +4.24264069 4.58257569 5.09901951 5.74456265 6.48074070 7.28010989 8.12403840 9.00000000 9.89949494 10.81665383 11.74734012 12.68857754 +5.19615242 5.47722558 5.91607978 6.48074070 7.14142843 7.87400787 8.66025404 9.48683298 10.34408043 11.22497216 12.12435565 13.03840481 +6.16441400 6.40312424 6.78232998 7.28010989 7.87400787 8.54400375 9.27361850 10.04987562 10.86278049 11.70469991 12.56980509 13.45362405 +7.14142843 7.34846923 7.68114575 8.12403840 8.66025404 9.27361850 9.94987437 10.67707825 11.44552314 12.24744871 13.07669683 13.92838828 +8.12403840 8.30662386 8.60232527 9.00000000 9.48683298 10.04987562 10.67707825 11.35781669 12.08304597 12.84523258 13.63818170 14.45683229 +9.11043358 9.27361850 9.53939201 9.89949494 10.34408043 10.86278049 11.44552314 12.08304597 12.76714533 13.49073756 14.24780685 15.03329638 +10.09950494 10.24695077 10.48808848 10.81665383 11.22497216 11.70469991 12.24744871 12.84523258 13.49073756 14.17744688 14.89966443 15.65247584 +2.44948974 3.00000000 3.74165739 4.58257569 5.47722558 6.40312424 7.34846923 8.30662386 9.27361850 10.24695077 11.22497216 12.20655562 +3.00000000 3.46410162 4.12310563 4.89897949 5.74456265 6.63324958 7.54983444 8.48528137 9.43398113 10.39230485 11.35781669 12.32882801 +3.74165739 4.12310563 4.69041576 5.38516481 6.16441400 7.00000000 7.87400787 8.77496439 9.69535971 10.63014581 11.57583690 12.52996409 +4.58257569 4.89897949 5.38516481 6.00000000 6.70820393 7.48331477 8.30662386 9.16515139 10.04987562 10.95445115 11.87434209 12.80624847 +5.47722558 5.74456265 6.16441400 6.70820393 7.34846923 8.06225775 8.83176087 9.64365076 10.48808848 11.35781669 12.24744871 13.15294644 +6.40312424 6.63324958 7.00000000 7.48331477 8.06225775 8.71779789 9.43398113 10.19803903 11.00000000 11.83215957 12.68857754 13.56465997 +7.34846923 7.54983444 7.87400787 8.30662386 8.83176087 9.43398113 10.09950494 10.81665383 11.57583690 12.36931688 13.19090596 14.03566885 +8.30662386 8.48528137 8.77496439 9.16515139 9.64365076 10.19803903 10.81665383 11.48912529 12.20655562 12.96148140 13.74772708 14.56021978 +9.27361850 9.43398113 9.69535971 10.04987562 10.48808848 11.00000000 11.57583690 12.20655562 12.88409873 13.60147051 14.35270009 15.13274595 +10.24695077 10.39230485 10.63014581 10.95445115 11.35781669 11.83215957 12.36931688 12.96148140 13.60147051 14.28285686 15.00000000 15.74801575 +3.31662479 3.74165739 4.35889894 5.09901951 5.91607978 6.78232998 7.68114575 8.60232527 9.53939201 10.48808848 11.44552314 12.40967365 +3.74165739 4.12310563 4.69041576 5.38516481 6.16441400 7.00000000 7.87400787 8.77496439 9.69535971 10.63014581 11.57583690 12.52996409 +4.35889894 4.69041576 5.19615242 5.83095189 6.55743852 7.34846923 8.18535277 9.05538514 9.94987437 10.86278049 11.78982612 12.72792206 +5.09901951 5.38516481 5.83095189 6.40312424 7.07106781 7.81024968 8.60232527 9.43398113 10.29563014 11.18033989 12.08304597 13.00000000 +5.91607978 6.16441400 6.55743852 7.07106781 7.68114575 8.36660027 9.11043358 9.89949494 10.72380529 11.57583690 12.44989960 13.34166406 +6.78232998 7.00000000 7.34846923 7.81024968 8.36660027 9.00000000 9.69535971 10.44030651 11.22497216 12.04159458 12.88409873 13.74772708 +7.68114575 7.87400787 8.18535277 8.60232527 9.11043358 9.69535971 10.34408043 11.04536102 11.78982612 12.56980509 13.37908816 14.21267040 +8.60232527 8.77496439 9.05538514 9.43398113 9.89949494 10.44030651 11.04536102 11.70469991 12.40967365 13.15294644 13.92838828 14.73091986 +9.53939201 9.69535971 9.94987437 10.29563014 10.72380529 11.22497216 11.78982612 12.40967365 13.07669683 13.78404875 14.52583905 15.29705854 +10.48808848 10.63014581 10.86278049 11.18033989 11.57583690 12.04159458 12.56980509 13.15294644 13.78404875 14.45683229 15.16575089 15.90597372 +4.24264069 4.58257569 5.09901951 5.74456265 6.48074070 7.28010989 8.12403840 9.00000000 9.89949494 10.81665383 11.74734012 12.68857754 +4.58257569 4.89897949 5.38516481 6.00000000 6.70820393 7.48331477 8.30662386 9.16515139 10.04987562 10.95445115 11.87434209 12.80624847 +5.09901951 5.38516481 5.83095189 6.40312424 7.07106781 7.81024968 8.60232527 9.43398113 10.29563014 11.18033989 12.08304597 13.00000000 +5.74456265 6.00000000 6.40312424 6.92820323 7.54983444 8.24621125 9.00000000 9.79795897 10.63014581 11.48912529 12.36931688 13.26649916 +6.48074070 6.70820393 7.07106781 7.54983444 8.12403840 8.77496439 9.48683298 10.24695077 11.04536102 11.87434209 12.72792206 13.60147051 +7.28010989 7.48331477 7.81024968 8.24621125 8.77496439 9.38083152 10.04987562 10.77032961 11.53256259 12.32882801 13.15294644 14.00000000 +8.12403840 8.30662386 8.60232527 9.00000000 9.48683298 10.04987562 10.67707825 11.35781669 12.08304597 12.84523258 13.63818170 14.45683229 +9.00000000 9.16515139 9.43398113 9.79795897 10.24695077 10.77032961 11.35781669 12.00000000 12.68857754 13.41640786 14.17744688 14.96662955 +9.89949494 10.04987562 10.29563014 10.63014581 11.04536102 11.53256259 12.08304597 12.68857754 13.34166406 14.03566885 14.76482306 15.52417470 +10.81665383 10.95445115 11.18033989 11.48912529 11.87434209 12.32882801 12.84523258 13.41640786 14.03566885 14.69693846 15.39480432 16.12451550 +5.19615242 5.47722558 5.91607978 6.48074070 7.14142843 7.87400787 8.66025404 9.48683298 10.34408043 11.22497216 12.12435565 13.03840481 +5.47722558 5.74456265 6.16441400 6.70820393 7.34846923 8.06225775 8.83176087 9.64365076 10.48808848 11.35781669 12.24744871 13.15294644 +5.91607978 6.16441400 6.55743852 7.07106781 7.68114575 8.36660027 9.11043358 9.89949494 10.72380529 11.57583690 12.44989960 13.34166406 +6.48074070 6.70820393 7.07106781 7.54983444 8.12403840 8.77496439 9.48683298 10.24695077 11.04536102 11.87434209 12.72792206 13.60147051 +7.14142843 7.34846923 7.68114575 8.12403840 8.66025404 9.27361850 9.94987437 10.67707825 11.44552314 12.24744871 13.07669683 13.92838828 +7.87400787 8.06225775 8.36660027 8.77496439 9.27361850 9.84885780 10.48808848 11.18033989 11.91637529 12.68857754 13.49073756 14.31782106 +8.66025404 8.83176087 9.11043358 9.48683298 9.94987437 10.48808848 11.09053651 11.74734012 12.44989960 13.19090596 13.96424004 14.76482306 +9.48683298 9.64365076 9.89949494 10.24695077 10.67707825 11.18033989 11.74734012 12.36931688 13.03840481 13.74772708 14.49137675 15.26433752 +10.34408043 10.48808848 10.72380529 11.04536102 11.44552314 11.91637529 12.44989960 13.03840481 13.67479433 14.35270009 15.06651917 15.81138830 +11.22497216 11.35781669 11.57583690 11.87434209 12.24744871 12.68857754 13.19090596 13.74772708 14.35270009 15.00000000 15.68438714 16.40121947 diff --git a/raster3d/r3.gradient/testsuite/data/test_map_2 b/raster3d/r3.gradient/testsuite/data/test_map_2 index 588b8424299..4495174fffd 100644 --- a/raster3d/r3.gradient/testsuite/data/test_map_2 +++ b/raster3d/r3.gradient/testsuite/data/test_map_2 @@ -9,28 +9,28 @@ bottom: 0.000000 rows: 5 cols: 5 levels: 5 -3.00000000 6.00000000 11.00000000 18.00000000 27.00000000 -6.00000000 9.00000000 14.00000000 * 30.00000000 -11.00000000 14.00000000 19.00000000 26.00000000 35.00000000 -18.00000000 * 26.00000000 33.00000000 42.00000000 -27.00000000 30.00000000 35.00000000 42.00000000 51.00000000 -6.00000000 9.00000000 14.00000000 * 30.00000000 -9.00000000 12.00000000 17.00000000 24.00000000 33.00000000 -14.00000000 17.00000000 22.00000000 29.00000000 * -* 24.00000000 29.00000000 36.00000000 45.00000000 -30.00000000 33.00000000 * 45.00000000 54.00000000 -11.00000000 14.00000000 19.00000000 26.00000000 35.00000000 -14.00000000 17.00000000 22.00000000 29.00000000 * -19.00000000 22.00000000 27.00000000 * 43.00000000 -26.00000000 29.00000000 * 41.00000000 50.00000000 -35.00000000 * 43.00000000 50.00000000 * -18.00000000 * 26.00000000 33.00000000 42.00000000 -* 24.00000000 29.00000000 36.00000000 45.00000000 -26.00000000 29.00000000 * 41.00000000 50.00000000 -33.00000000 36.00000000 41.00000000 48.00000000 57.00000000 -42.00000000 45.00000000 50.00000000 57.00000000 66.00000000 -27.00000000 30.00000000 35.00000000 42.00000000 51.00000000 -30.00000000 33.00000000 * 45.00000000 54.00000000 -35.00000000 * 43.00000000 50.00000000 * -42.00000000 45.00000000 50.00000000 57.00000000 66.00000000 -51.00000000 54.00000000 * 66.00000000 75.00000000 +3.00000000 6.00000000 11.00000000 18.00000000 27.00000000 +6.00000000 9.00000000 14.00000000 * 30.00000000 +11.00000000 14.00000000 19.00000000 26.00000000 35.00000000 +18.00000000 * 26.00000000 33.00000000 42.00000000 +27.00000000 30.00000000 35.00000000 42.00000000 51.00000000 +6.00000000 9.00000000 14.00000000 * 30.00000000 +9.00000000 12.00000000 17.00000000 24.00000000 33.00000000 +14.00000000 17.00000000 22.00000000 29.00000000 * +* 24.00000000 29.00000000 36.00000000 45.00000000 +30.00000000 33.00000000 * 45.00000000 54.00000000 +11.00000000 14.00000000 19.00000000 26.00000000 35.00000000 +14.00000000 17.00000000 22.00000000 29.00000000 * +19.00000000 22.00000000 27.00000000 * 43.00000000 +26.00000000 29.00000000 * 41.00000000 50.00000000 +35.00000000 * 43.00000000 50.00000000 * +18.00000000 * 26.00000000 33.00000000 42.00000000 +* 24.00000000 29.00000000 36.00000000 45.00000000 +26.00000000 29.00000000 * 41.00000000 50.00000000 +33.00000000 36.00000000 41.00000000 48.00000000 57.00000000 +42.00000000 45.00000000 50.00000000 57.00000000 66.00000000 +27.00000000 30.00000000 35.00000000 42.00000000 51.00000000 +30.00000000 33.00000000 * 45.00000000 54.00000000 +35.00000000 * 43.00000000 50.00000000 * +42.00000000 45.00000000 50.00000000 57.00000000 66.00000000 +51.00000000 54.00000000 * 66.00000000 75.00000000 diff --git a/raster3d/r3.gwflow/r3.gwflow.html b/raster3d/r3.gwflow/r3.gwflow.html index 1dbb1f6a0a3..835756623f0 100644 --- a/raster3d/r3.gwflow/r3.gwflow.html +++ b/raster3d/r3.gwflow/r3.gwflow.html @@ -12,7 +12,7 @@

    DESCRIPTION

    The vector components can be visualized with ParaView if they are exported with r3.out.vtk. -

    The groundwater flow will always be calculated transient. +

    The groundwater flow will always be calculated transient. For steady state computation the user should set the timestep to a large number (billions of seconds) or set the specific yield raster map to zero. diff --git a/raster3d/r3.in.ascii/main.c b/raster3d/r3.in.ascii/main.c index 10cf255601d..73acfd131f2 100644 --- a/raster3d/r3.in.ascii/main.c +++ b/raster3d/r3.in.ascii/main.c @@ -33,7 +33,7 @@ static void fatalError(char *errorMsg); /*Simple Error message */ -static void setParams(); /*Fill the paramType structure */ +static void setParams(void); /*Fill the paramType structure */ /*Puts the userdefined parameters into easier handable variables */ static void getParams(char **input, char **output, int *convertNull, @@ -60,8 +60,6 @@ void *map = NULL; int rowOrder; int depthOrder; -extern void *Rast3d_open_new_param(); - /*---------------------------------------------------------------------------*/ void fatalError(char *errorMsg) { @@ -81,7 +79,7 @@ typedef struct { static paramType param; -static void setParams() +static void setParams(void) { param.input = G_define_standard_option(G_OPT_F_INPUT); param.input->required = YES; diff --git a/raster3d/r3.in.ascii/r3.in.ascii.html b/raster3d/r3.in.ascii/r3.in.ascii.html index 478ae6808fe..37e041e82a9 100644 --- a/raster3d/r3.in.ascii/r3.in.ascii.html +++ b/raster3d/r3.in.ascii/r3.in.ascii.html @@ -3,7 +3,7 @@

    DESCRIPTION

    r3.in.ascii allows a user to create a (binary) GRASS 3D raster map layer from a 3D ASCII raster input file. -

    The tiledimension parameter defines the dimension of the tiles +

    The tiledimension parameter defines the dimension of the tiles used in the output file. The format is: XxYxZ

    The nv parameter specifies which value to convert to NULL-value. @@ -46,13 +46,13 @@

    Format

    and depth order of the data in the input file. 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 +data order in the generated output 3D raster map which is in any case 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 order option is specified, the default GRASS 6 ASCII format is assumed. -

    This header is followed by the cell values in floating point format +

    This header is followed by the cell values in floating point format organized in rows with constant col and level coordinate. The rows are organized by constant level coordinate. Individual cell values are separated by space or CR. @@ -89,7 +89,7 @@

    EXAMPLES

    EXAMPLES

    -Please refer to the detailed examples in +Please refer to the detailed examples in r3.out.ascii.

    SEE ALSO

    @@ -103,5 +103,9 @@

    SEE ALSO

    AUTHORS

    +<<<<<<< HEAD Roman Waupotitsch, Michael Shapiro, +======= +Roman Waupotitsch, Michael Shapiro, +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) Helena Mitasova, Bill Brown, Lubos Mitas, Jaro Hofierka, Sören Gebbert diff --git a/raster3d/r3.in.bin/r3.in.bin.html b/raster3d/r3.in.bin/r3.in.bin.html index bb7c5240217..a1735a49d6f 100644 --- a/raster3d/r3.in.bin/r3.in.bin.html +++ b/raster3d/r3.in.bin/r3.in.bin.html @@ -1,26 +1,26 @@

    DESCRIPTION

    -r3.in.bin allows a user to create a GRASS 3D raster map +r3.in.bin allows a user to create a GRASS 3D raster map from a variety of binary 3D raster data formats. -

    The top, bottom, north, south, east, and west field values entered -are the coordinates of the edges of the geographic region. -The depths, rows and cols field values entered describe the dimensions -of the matrix of data to follow. +

    The top, bottom, north, south, east, and west field values entered +are the coordinates of the edges of the geographic region. +The depths, rows and cols field values entered describe the dimensions +of the matrix of data to follow. If the bytes field is entered incorrectly an error will be generated -suggesting a closer bytes value. +suggesting a closer bytes value.

    NOTES

    -The write order of the rows (north->south to south->north) and +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 +Have a look at r3.out.ascii to manual page that describes the internal layout of the 3D raster maps and the supported row and depth switch options.

    Import of little and big endian byte order as well as signed and -unsigned integer data types is supported. +unsigned integer data types is supported.

    EXAMPLES

    @@ -44,7 +44,7 @@

    SEE ALSO

    r3.out.bin, -r3.in.ascii, +r3.in.ascii, r3.out.ascii diff --git a/raster3d/r3.in.bin/test_suite/test.r3.in.bin.sh b/raster3d/r3.in.bin/test_suite/test.r3.in.bin.sh index 59eeddfa393..93d4dd10e24 100755 --- a/raster3d/r3.in.bin/test_suite/test.r3.in.bin.sh +++ b/raster3d/r3.in.bin/test_suite/test.r3.in.bin.sh @@ -4,8 +4,8 @@ g.region w=0 e=180 s=0 n=90 b=0 t=100 res3=10 r3.mapcalc --o expr="test_out_bin_float = float(if(row() == 2, null(), row()))" r3.mapcalc --o expr="test_out_bin_double = double(if(row() == 2, null(), row()))" -r3.out.ascii --o precision=0 input=test_out_bin_float output=test_out_bin_float.ref; -r3.out.ascii --o precision=0 input=test_out_bin_double output=test_out_bin_double.ref; +r3.out.ascii --o precision=0 input=test_out_bin_float output=test_out_bin_float.ref; +r3.out.ascii --o precision=0 input=test_out_bin_double output=test_out_bin_double.ref; # @test @@ -35,7 +35,7 @@ r3.out.bin --o input=test_out_bin_float byte=4 null=-9999 \ r3.out.bin --o input=test_out_bin_float byte=4 null=-9999 \ output=test_out_bin_float_swap_b4.bin order=swap - + # Write float map as integer array r3.out.bin --o -i input=test_out_bin_float byte=1 null=0 \ @@ -106,7 +106,7 @@ r3.in.bin --o output=test_in_bin_float_10 byte=8 null=0 \ input=test_out_bin_float_native_b8_as_integer.bin order=native \ bottom=0 top=100 west=0 east=180 south=0 north=90 \ cols=18 rows=9 depths=10 -i - + # Test little and big endian r3.in.bin --o output=test_in_bin_float_11 byte=4 null=-9999 \ @@ -128,7 +128,7 @@ for map in `g.list type=raster_3d pattern=test_in_bin_float*` ; do r3.out.ascii input=${map} output=${map}.txt precision=0 done -for i in `ls test_in_bin_float_*.txt` ; do +for i in `ls test_in_bin_float_*.txt` ; do diff $i test_out_bin_float.ref done diff --git a/raster3d/r3.in.lidar/info.c b/raster3d/r3.in.lidar/info.c index 49912030655..00511aad217 100644 --- a/raster3d/r3.in.lidar/info.c +++ b/raster3d/r3.in.lidar/info.c @@ -13,6 +13,7 @@ */ #include +#include #include @@ -100,7 +101,7 @@ int scan_bounds(LASReaderH LAS_reader, int shell_style, int extents, int update, first = TRUE; /* init to nan in case no points are found */ - min_x = max_x = min_y = max_y = min_z = max_z = 0.0 / 0.0; + min_x = max_x = min_y = max_y = min_z = max_z = NAN; G_verbose_message(_("Scanning data ...")); diff --git a/raster3d/r3.in.lidar/r3.in.lidar.html b/raster3d/r3.in.lidar/r3.in.lidar.html index 57e99a4cdbb..8d266b0b63e 100644 --- a/raster3d/r3.in.lidar/r3.in.lidar.html +++ b/raster3d/r3.in.lidar/r3.in.lidar.html @@ -115,7 +115,7 @@

    Complete workflow for vertical structure analysis

    g.region raster=points_n -p3
    -class_filter=2 is used to limit +class_filter=2 is used to limit
     r.in.lidar input=points.las output=ground_mean method=mean class_filter=2
    diff --git a/raster3d/r3.in.v5d/main.c b/raster3d/r3.in.v5d/main.c
    index b3f8706d66b..e79b64c1b43 100644
    --- a/raster3d/r3.in.v5d/main.c
    +++ b/raster3d/r3.in.v5d/main.c
    @@ -56,7 +56,7 @@ typedef struct {
     
     static paramType param;
     
    -static void setParams()
    +static void setParams(void)
     {
         param.input = G_define_standard_option(G_OPT_F_INPUT);
         param.input->description = _("Name of V5D raster file to be imported");
    @@ -138,7 +138,11 @@ void convert(char *openFile, RASTER3D_Region *region, int convertNull,
                     for (y = 0; y < region->rows; y++) {
                         for (x = 0; x < region->cols; x++) {
                             value = data1[cnt++];
    +<<<<<<< HEAD
                             if (convertNull && (value == MISSING))
    +=======
    +                        if (convertNull && IS_MISSING(value))
    +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794))
                                 Rast3d_set_null_value(&value, 1, FCELL_TYPE);
                             Rast3d_put_float(map, x, y, z, value);
                         }
    diff --git a/raster3d/r3.info/r3.info.html b/raster3d/r3.info/r3.info.html
    index 94a2496f420..1d7c932b8e6 100644
    --- a/raster3d/r3.info/r3.info.html
    +++ b/raster3d/r3.info/r3.info.html
    @@ -10,6 +10,10 @@ 

    SEE ALSO

    AUTHORS

    +<<<<<<< HEAD Roman Waupotitsch, Michael Shapiro, +======= +Roman Waupotitsch, Michael Shapiro, +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) Helena Mitasova, Bill Brown, Lubos Mitas, Jaro Hofierka diff --git a/raster3d/r3.mask/r3.mask.html b/raster3d/r3.mask/r3.mask.html index 84aa53b6e25..2840a3ef2aa 100644 --- a/raster3d/r3.mask/r3.mask.html +++ b/raster3d/r3.mask/r3.mask.html @@ -14,6 +14,10 @@

    SEE ALSO

    AUTHORS

    +<<<<<<< HEAD Roman Waupotitsch, Michael Shapiro, +======= +Roman Waupotitsch, Michael Shapiro, +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) Helena Mitasova, Bill Brown, Lubos Mitas, Jaro Hofierka diff --git a/raster3d/r3.mkdspf/r3.mkdspf.html b/raster3d/r3.mkdspf/r3.mkdspf.html index 83117275225..2f9686166b8 100644 --- a/raster3d/r3.mkdspf/r3.mkdspf.html +++ b/raster3d/r3.mkdspf/r3.mkdspf.html @@ -3,7 +3,7 @@

    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 +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. @@ -53,8 +53,13 @@

    NOTES

    EXAMPLES

    +<<<<<<< HEAD With grid3 data (phdata) in the range 3-7, we only want to see isosurface values for the range 4-6. +======= +With grid3 data (phdata) in the range 3-7, +we only want to see isosurface values for the range 4-6. +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) Any of these commands will produce the same results:
     r3.mkdspf phdata dspf=iso min=4.0 max=6.0 tnum=5
    diff --git a/raster3d/r3.neighbors/main.c b/raster3d/r3.neighbors/main.c
    index f77e2f6c9bb..34188cabc9b 100644
    --- a/raster3d/r3.neighbors/main.c
    +++ b/raster3d/r3.neighbors/main.c
    @@ -102,7 +102,7 @@ typedef struct {
     
     paramType param;
     
    -static void set_params()
    +static void set_params(void)
     {
         param.input = G_define_standard_option(G_OPT_R3_INPUT);
     
    diff --git a/raster3d/r3.neighbors/r3.neighbors.html b/raster3d/r3.neighbors/r3.neighbors.html
    index 7902283b6b0..6d58401cdc3 100644
    --- a/raster3d/r3.neighbors/r3.neighbors.html
    +++ b/raster3d/r3.neighbors/r3.neighbors.html
    @@ -20,34 +20,34 @@ 

    OPTIONS

    performed), and the moving window of the neighborhood.

    Neighborhood Operation Methods: -The neighborhood operators determine what new +The neighborhood operators determine what new value a center voxel in a neighborhood will have after examining values inside its neighboring voxels. -Each voxel in a 3D raster map layer becomes the center voxel of a neighborhood +Each voxel in a 3D raster map layer becomes the center voxel of a neighborhood as the neighborhood window moves from voxel to voxel throughout the map layer. r3.neighbors can perform the following operations:

    -
    average +
    average
    The average value within the neighborhood. -
    median +
    median
    The value found half-way through a list of the neighborhood's values, when these are ranged in numerical order. -
    mode +
    mode
    The most frequently occurring value in the neighborhood. -
    minimum +
    minimum
    The minimum value within the neighborhood. -
    maximum +
    maximum
    The maximum value within the neighborhood. @@ -55,25 +55,25 @@

    OPTIONS

    The range value within the neighborhood. -
    stddev +
    stddev
    The statistical standard deviation of values within the neighborhood. -
    sum +
    sum
    The sum of values within the neighborhood. -
    variance +
    variance
    The statistical variance of values within the neighborhood. -
    diversity +
    diversity
    The number of different values within the neighborhood. -
    interspersion +
    interspersion
    The percentage of voxels containing values which differ from the values assigned to the center voxel in the neighborhood, plus 1. @@ -85,15 +85,15 @@

    OPTIONS

    The neighborhood moving window specifies which voxel surrounding any given voxel fall into the neighborhood for that voxel. The window must be three comma separated odd integers. The dimension order is: x,y,z. -For example: the parameter window=3,3,3 specifies a moving window (a cube) with 27 voxel. +For example: the parameter window=3,3,3 specifies a moving window (a cube) with 27 voxel.

    NOTES

    -The r3.neighbors program works in the current geographic region. +The r3.neighbors program works in the current geographic region. It is recommended, but not required, that the 3D resolution of the geographic region be the same as that -of the 3D raster map layer. +of the 3D raster map layer.

    r3.neighbors doesn't propagate NULLs, but computes the aggregation over the non-NULL voxels in the neighborhood. diff --git a/raster3d/r3.neighbors/test_suite/test.r3.neighbors.sh b/raster3d/r3.neighbors/test_suite/test.r3.neighbors.sh index 3510214679b..d57da33d65c 100755 --- a/raster3d/r3.neighbors/test_suite/test.r3.neighbors.sh +++ b/raster3d/r3.neighbors/test_suite/test.r3.neighbors.sh @@ -10,26 +10,24 @@ r3.mapcalc expr="test_neighbor_null = null()" # First @test with float values with @precision=2 r3.neighbors input=test_neighbor_float output=test_neighbor_float_average \ - method=average window=3,3,3 + method=average window=3,3,3 r3.out.ascii precision=2 input=test_neighbor_float_average output=test_neighbor_float_average.txt r3.neighbors input=test_neighbor_float output=test_neighbor_float_sum \ - method=sum window=3,3,3 + method=sum window=3,3,3 r3.out.ascii precision=2 input=test_neighbor_float_sum output=test_neighbor_float_sum.txt # Second @test with double values r3.neighbors input=test_neighbor_double output=test_neighbor_double_average \ - method=average window=3,3,3 + method=average window=3,3,3 r3.out.ascii precision=2 input=test_neighbor_double_average output=test_neighbor_double_average.txt r3.neighbors input=test_neighbor_double output=test_neighbor_double_sum \ - method=sum window=3,3,3 + method=sum window=3,3,3 r3.out.ascii precision=2 input=test_neighbor_double_sum output=test_neighbor_double_sum.txt # Third @test with null values r3.neighbors input=test_neighbor_null output=test_neighbor_null_sum \ - method=sum window=3,3,3 + method=sum window=3,3,3 r3.out.ascii precision=2 input=test_neighbor_null_sum output=test_neighbor_null_sum.txt - - diff --git a/raster3d/r3.null/r3.null.html b/raster3d/r3.null/r3.null.html index 486eb2fe86f..7950b74c919 100644 --- a/raster3d/r3.null/r3.null.html +++ b/raster3d/r3.null/r3.null.html @@ -10,6 +10,10 @@

    SEE ALSO

    AUTHORS

    +<<<<<<< HEAD Roman Waupotitsch, Michael Shapiro, +======= +Roman Waupotitsch, Michael Shapiro, +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) Helena Mitasova, Bill Brown, Lubos Mitas, Jaro Hofierka diff --git a/raster3d/r3.null/testsuite/test.r3.null.sh b/raster3d/r3.null/testsuite/test.r3.null.sh index 630ef5d0360..1cf93110b24 100755 --- a/raster3d/r3.null/testsuite/test.r3.null.sh +++ b/raster3d/r3.null/testsuite/test.r3.null.sh @@ -7,16 +7,16 @@ set -x # We set up a specific region in the # @preprocess step of this test. We generate -# voxel data with r3.mapcalc. The region setting +# voxel data with r3.mapcalc. The region setting # should work for UTM and LL test locations g.region s=0 n=80 w=0 e=120 b=0 t=50 res=10 res3=10 -p3 # We create several (float, double, null value) voxel map -# with value = col + row + depth. +# with value = col + row + depth. r3.mapcalc expr="test_volume_float_1 = float(col() + row() + depth())" r3.mapcalc expr="test_volume_float_2 = test_volume_float_1" r3.mapcalc expr="test_volume_double_1 = double(col() + row() + depth())" r3.mapcalc expr="test_volume_double_2 = test_volume_double_1" -# Add null value information +# Add null value information r3.mapcalc expr="test_volume_float_null_1 = if(row() == 1 || row() == 5, null(), test_volume_float_1)" r3.mapcalc expr="test_volume_float_null_2 = if(row() == 1 || row() == 5, null(), test_volume_float_1)" r3.mapcalc expr="test_volume_double_null_1 = if(row() == 1 || row() == 5, null(), test_volume_double_1)" @@ -35,7 +35,7 @@ r3.null map=test_volume_double_2 setnull=7,8,9 r3.null map=test_volume_double_null_1 null=-1.5 r3.null map=test_volume_double_null_2 null=-10.5 -# Commands to export the references +# Commands to export the references r3.out.ascii dp=3 input=test_volume_float_1 output=test_volume_float_1.txt r3.out.ascii dp=3 input=test_volume_float_2 output=test_volume_float_2.txt r3.out.ascii dp=3 input=test_volume_float_null_1 output=test_volume_float_null_1.txt diff --git a/raster3d/r3.out.ascii/main.c b/raster3d/r3.out.ascii/main.c index fc6398ba583..015f290d5bb 100644 --- a/raster3d/r3.out.ascii/main.c +++ b/raster3d/r3.out.ascii/main.c @@ -34,7 +34,7 @@ typedef struct { /* protos */ static void fatalError(char *errorMsg); -static void setParams(); +static void setParams(void); static void getParams(char **input, char **output, int *decim); static void writeHeaderString(FILE *fp, char *valueString, double value); static void writeHeaderString2(FILE *fp, char *valueString, int value); @@ -66,7 +66,7 @@ void fatalError(char *errorMsg) /* Convenient way to set up the arguments we are expecting */ -void setParams() +void setParams(void) { param.input = G_define_option(); param.input->key = "input"; diff --git a/raster3d/r3.out.ascii/r3.out.ascii.html b/raster3d/r3.out.ascii/r3.out.ascii.html index 555db45aaf9..3059624683c 100644 --- a/raster3d/r3.out.ascii/r3.out.ascii.html +++ b/raster3d/r3.out.ascii/r3.out.ascii.html @@ -1,8 +1,8 @@

    DESCRIPTION

    r3.out.ascii exports a 3D raster map in ASCII format. The input parameter is -a valid 3D raster map in the current mapset search path. The output -parameter is the name of an ASCII file which will be written in the +a valid 3D raster map in the current mapset search path. The output +parameter is the name of an ASCII file which will be written in the current working directory.

    If output is not specified then standard output (stdout) is used. The -h flag may be used to suppress header information. The @@ -34,8 +34,8 @@

    NOTES

    The version and order options have been introduced in GRASS 7 in June 2011. -The order option describes the order of rows and depths in the output. -It is possible to create output of different row order using the -r flag +The order option describes the order of rows and depths in the output. +It is possible to create output of different row order using the -r flag and output of different depths order using the -d flag. The default order is:

     west -> east for columns
    @@ -43,7 +43,7 @@ 

    NOTES

    bottom -> top for depths

    -This header is followed by the cell values in floating point format +This header is followed by the cell values in floating point format organized in rows with constant col and level coordinate. The rows are organized by constant level coordinate. Individual cell values are separated by space or CR. @@ -88,7 +88,7 @@

    NOTES

    EXAMPLES

    We define a small region with 4 columns, 3 rows and 2 depths (4x3x2) and export -it using different ordering definitions: +it using different ordering definitions:
     g.region res3=1 t=2 b=0 w=0 e=4 s=0 n=3
     r3.mapcalc "simple_example = row() + col() + depth()"
    @@ -109,14 +109,14 @@ 

    EXAMPLES

    rows: 3 cols: 4 levels: 2 -3 4 5 6 -4 5 6 7 -5 6 7 8 -4 5 6 7 -5 6 7 8 -6 7 8 9 +3 4 5 6 +4 5 6 7 +5 6 7 8 +4 5 6 7 +5 6 7 8 +6 7 8 9
    -Inverse row order (-r) +Inverse row order (-r)
     r3.out.ascii input=simple_example dp=0 -r
     
    @@ -131,14 +131,14 @@ 

    EXAMPLES

    rows: 3 cols: 4 levels: 2 -5 6 7 8 -4 5 6 7 -3 4 5 6 -6 7 8 9 -5 6 7 8 +5 6 7 8 +4 5 6 7 +3 4 5 6 +6 7 8 9 +5 6 7 8 4 5 6 7
    -Inverse depth order (-d) +Inverse depth order (-d)
     r3.out.ascii input=simple_example dp=0 -d
     version: grass7
    @@ -152,14 +152,14 @@ 

    EXAMPLES

    rows: 3 cols: 4 levels: 2 -4 5 6 7 -5 6 7 8 -6 7 8 9 -3 4 5 6 -4 5 6 7 +4 5 6 7 +5 6 7 8 +6 7 8 9 +3 4 5 6 +4 5 6 7 5 6 7 8
    -Inverse row and depth order (-rd) +Inverse row and depth order (-rd)
     r3.out.ascii input=simple_example dp=0 -rd
     
    @@ -174,11 +174,11 @@ 

    EXAMPLES

    rows: 3 cols: 4 levels: 2 -6 7 8 9 -5 6 7 8 -4 5 6 7 -5 6 7 8 -4 5 6 7 +6 7 8 9 +5 6 7 8 +4 5 6 7 +5 6 7 8 +4 5 6 7 3 4 5 6
    @@ -192,5 +192,9 @@

    SEE ALSO

    AUTHORS

    +<<<<<<< HEAD Roman Waupotitsch, Michael Shapiro, +======= +Roman Waupotitsch, Michael Shapiro, +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) Helena Mitasova, Bill Brown, Lubos Mitas, Jaro Hofierka, Sören Gebbert diff --git a/raster3d/r3.out.ascii/test.r3.out.ascii.sh b/raster3d/r3.out.ascii/test.r3.out.ascii.sh index 41f2a68a70c..ebcbb635d31 100755 --- a/raster3d/r3.out.ascii/test.r3.out.ascii.sh +++ b/raster3d/r3.out.ascii/test.r3.out.ascii.sh @@ -1,15 +1,15 @@ # Tests for r3.out.ascii and r3.in.ascii # This script tests the export of voxel data using r3.out.ascii -# as well as the import of the generated data with r3.in.ascii +# as well as the import of the generated data with r3.in.ascii # using different row and depth ordering options. # We set up a specific region in the # @preprocess step of this test. We generate -# voxel data with r3.mapcalc. The region setting +# voxel data with r3.mapcalc. The region setting # should work for UTM and LL test locations g.region s=0 n=80 w=0 e=120 b=0 t=50 res=10 res3=10 -p3 # We create several (float, double, null value) voxel map -# with value = col + row + depth. +# with value = col + row + depth. r3.mapcalc --o expr="volume_float = float(col() + row() + depth())" r3.mapcalc --o expr="volume_double = double(col() + row() + depth())" # Add null value information to test correct null value handling @@ -66,7 +66,7 @@ r3.in.ascii --o output=test_double_nsbt_null input=test_double_sntb_null_prec8.t # Import grass6 legacy data r3.in.ascii --o output=test_double_nsbt_null input=test_double_nsbt_null_grass6_comp_1.txt -# In this @preprocess step for the last test we create a large region and +# In this @preprocess step for the last test we create a large region and # generate large input data to test the handling of large files. g.region s=0 n=800 w=0 e=1200 b=0 t=50 res=10 res3=1.5 -p3 r3.mapcalc --o expr="volume_double_large = double(col() + row() + depth())" @@ -80,7 +80,7 @@ r3.in.ascii --o output=test_double_nsbt_null_large input=test_double_nsbt_null_l r3.info test_double_nsbt_null_large # Show differences between references and created text files -for i in `ls *.ref` ; do - diff $i "`basename $i .ref`.txt" ; +for i in `ls *.ref` ; do + diff $i "`basename $i .ref`.txt" ; done rm *.txt diff --git a/raster3d/r3.out.netcdf/main.c b/raster3d/r3.out.netcdf/main.c index bf4d4abb666..940f169ae06 100644 --- a/raster3d/r3.out.netcdf/main.c +++ b/raster3d/r3.out.netcdf/main.c @@ -90,7 +90,7 @@ static void fatalError(const char *errorMsg) /* Convenient way to set up the arguments we are expecting */ -static void setParams() +static void setParams(void) { param.input = G_define_standard_option(G_OPT_R3_INPUT); @@ -473,18 +473,30 @@ static void write_netcdf_header(int ncid, RASTER3D_Region *region, int *varid, * dimensions * */ +<<<<<<< HEAD for (i = 0; i < region->cols; i++) { +======= + for (i = 0; i < (unsigned int)region->cols; i++) { +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) c = region->west + i * region->ew_res + 0.5 * region->ew_res; nc_put_var1_float(ncid, lon_varid, &i, &c); } +<<<<<<< HEAD for (i = 0; i < region->rows; i++) { +======= + for (i = 0; i < (unsigned int)region->rows; i++) { +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) /* c = region->south + i * region->ns_res + 0.5 * region->ns_res; */ c = region->north - i * region->ns_res - 0.5 * region->ns_res; nc_put_var1_float(ncid, lat_varid, &i, &c); } +<<<<<<< HEAD for (i = 0; i < region->depths; i++) { +======= + for (i = 0; i < (unsigned int)region->depths; i++) { +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) if (is_time) { c = i * region->tb_res; time = (int)c; diff --git a/raster3d/r3.out.netcdf/r3.out.netcdf.html b/raster3d/r3.out.netcdf/r3.out.netcdf.html index 37a4afa33a9..8f3324839e7 100644 --- a/raster3d/r3.out.netcdf/r3.out.netcdf.html +++ b/raster3d/r3.out.netcdf/r3.out.netcdf.html @@ -9,27 +9,27 @@

    DESCRIPTION

    NOTES

    -The resulting netCDF file will have time as third dimension in case a temporal +The resulting netCDF file will have time as third dimension in case a temporal vertical unit is specified for the input map, otherwise the third dimension is assumed as spatial. -If the 3D raster map has a time stamp with absolute time, the start time will be +If the 3D raster map has a time stamp with absolute time, the start time will be used as starting point for the netCDF time series. If the absolute time stamp is missing the date "Jan. 01. 1900 00:00:00" will be used as default. In case of relative time stamp no start time is set in the netCDF file. The number of depths of the 3D raster map are the number of time slices -in the netCDF file. You can use t.rast.to.rast3 to convert a -space time raster dataset into a 3D raster map representing a space time voxel +in the netCDF file. You can use t.rast.to.rast3 to convert a +space time raster dataset into a 3D raster map representing a space time voxel cube, then export the raster time series as netCDF file.

    Spatial coordinates are exported as cell centered coordinates. The projection can be optionally stored -in the metadata as crs attributes . +in the metadata as crs attributes . The netCDF projection metadata storage follows the spatial_ref GDAL/netCDF suggestion -here -and the netCDF CF 1.6 convention -here +here +and the netCDF CF 1.6 convention +here using WKT projection information. Additional a PROJ string is -stored in the crs attribute section. -The export of projection parameters is suppressed when the XY-projection is set. +stored in the crs attribute section. +The export of projection parameters is suppressed when the XY-projection is set.

    -The range of the 3D raster map is set in the netCDF output file. Optionally a the netCDF missing value and +The range of the 3D raster map is set in the netCDF output file. Optionally a the netCDF missing value and _FillValue can be set using the null option. As default the netCDF floating point _FillValues are used to fill empty cell.

    @@ -89,13 +89,13 @@

    EXAMPLES

    +----------------------------------------------------------------------------+ ##################################################################### -# We use the netCDF ncdump tool to have a look at the header +# We use the netCDF ncdump tool to have a look at the header # and coordinates of the exported netCDF file ##################################################################### r3.out.netcdf --o input=volume_float output=test_float.nc ncdump -c test_float.nc - + netcdf test_float { dimensions: longitude = 36 ; @@ -127,11 +127,11 @@

    EXAMPLES

    :history = "GRASS GIS 7 netCDF export of r3.out.netcdf" ; data: - longitude = -175, -165, -155, -145, -135, -125, -115, -105, -95, -85, -75, - -65, -55, -45, -35, -25, -15, -5, 5, 15, 25, 35, 45, 55, 65, 75, 85, 95, + longitude = -175, -165, -155, -145, -135, -125, -115, -105, -95, -85, -75, + -65, -55, -45, -35, -25, -15, -5, 5, 15, 25, 35, 45, 55, 65, 75, 85, 95, 105, 115, 125, 135, 145, 155, 165, 175 ; - latitude = 85, 75, 65, 55, 45, 35, 25, 15, 5, -5, -15, -25, -35, -45, -55, + latitude = 85, 75, 65, 55, 45, 35, 25, 15, 5, -5, -15, -25, -35, -45, -55, -65, -75, -85 ; z = 0.5, 1.5, 2.5, 3.5, 4.5 ; @@ -142,7 +142,7 @@

    EXAMPLES

    ##################################################################### r3.out.netcdf --o -p null=-1 input=volume_float output=test_float.nc -ncdump -c test_float.nc +ncdump -c test_float.nc netcdf test_float { dimensions: @@ -182,11 +182,11 @@

    EXAMPLES

    :history = "GRASS GIS 7 netCDF export of r3.out.netcdf" ; data: - longitude = -175, -165, -155, -145, -135, -125, -115, -105, -95, -85, -75, - -65, -55, -45, -35, -25, -15, -5, 5, 15, 25, 35, 45, 55, 65, 75, 85, 95, + longitude = -175, -165, -155, -145, -135, -125, -115, -105, -95, -85, -75, + -65, -55, -45, -35, -25, -15, -5, 5, 15, 25, 35, 45, 55, 65, 75, 85, 95, 105, 115, 125, 135, 145, 155, 165, 175 ; - latitude = 85, 75, 65, 55, 45, 35, 25, 15, 5, -5, -15, -25, -35, -45, -55, + latitude = 85, 75, 65, 55, 45, 35, 25, 15, 5, -5, -15, -25, -35, -45, -55, -65, -75, -85 ; z = 0.5, 1.5, 2.5, 3.5, 4.5 ; @@ -199,7 +199,7 @@

    EXAMPLES

    r3.timestamp map=volume_float date='1 Jan 2001/5 Jan 2001' r3.support map=volume_float vunit="days" r3.out.netcdf --o -p null=-1 input=volume_float output=test_float.nc -ncdump -c test_float.nc +ncdump -c test_float.nc netcdf test_float { dimensions: @@ -239,16 +239,16 @@

    EXAMPLES

    :history = "GRASS GIS 7 netCDF export of r3.out.netcdf" ; data: - longitude = -175, -165, -155, -145, -135, -125, -115, -105, -95, -85, -75, - -65, -55, -45, -35, -25, -15, -5, 5, 15, 25, 35, 45, 55, 65, 75, 85, 95, + longitude = -175, -165, -155, -145, -135, -125, -115, -105, -95, -85, -75, + -65, -55, -45, -35, -25, -15, -5, 5, 15, 25, 35, 45, 55, 65, 75, 85, 95, 105, 115, 125, 135, 145, 155, 165, 175 ; - latitude = 85, 75, 65, 55, 45, 35, 25, 15, 5, -5, -15, -25, -35, -45, -55, + latitude = 85, 75, 65, 55, 45, 35, 25, 15, 5, -5, -15, -25, -35, -45, -55, -65, -75, -85 ; time = 0, 1, 2, 3, 4 ; } - +

    SEE ALSO

    diff --git a/raster3d/r3.out.netcdf/test_suite/test.r3.out.netcdf.sh b/raster3d/r3.out.netcdf/test_suite/test.r3.out.netcdf.sh index 7ab254e4fc2..738c62e58be 100755 --- a/raster3d/r3.out.netcdf/test_suite/test.r3.out.netcdf.sh +++ b/raster3d/r3.out.netcdf/test_suite/test.r3.out.netcdf.sh @@ -1,14 +1,14 @@ # Tests for r3.out.netcdf and r3.in.netcdf # This script tests the export of voxel data using r3.out.netcdf -# as well as the import of the generated data with r3.in.netcdf +# as well as the import of the generated data with r3.in.netcdf # We set up a specific region in the # @preprocess step of this test. We generate -# voxel data with r3.mapcalc. The region setting +# voxel data with r3.mapcalc. The region setting # should work for UTM and LL test locations g.region s=-90 n=90 w=-180 e=180 b=0 t=5 res=10 res3=10 tbres=1 -p3 # We create several (float, double, null value) voxel map -# with value = col + row + depth. +# with value = col + row + depth. r3.mapcalc --o expr="volume_float = float(col() + row() + depth())" r3.mapcalc --o expr="volume_double = double(col() + row() + depth())" r3.mapcalc --o expr="volume_time_double = double(col() + row() + depth())" diff --git a/raster3d/r3.out.v5d/BUG b/raster3d/r3.out.v5d/BUG index fff540cdd51..edd831ae75f 100644 --- a/raster3d/r3.out.v5d/BUG +++ b/raster3d/r3.out.v5d/BUG @@ -10,7 +10,6 @@ Date: 2004-11-09 RASTER3D library bug? - Rast3d_getValueRegion (map, x, y, z, d1p, typeIntern); + Rast3d_getValueRegion (map, x, y, z, d1p, typeIntern); produces output with different orientation comparing to: - Rast3d_getValue(map, x, y, z, d1p, typeIntern); - + Rast3d_getValue(map, x, y, z, d1p, typeIntern); diff --git a/raster3d/r3.out.v5d/main.c b/raster3d/r3.out.v5d/main.c index e0ce9daf706..d2e3bf18b75 100644 --- a/raster3d/r3.out.v5d/main.c +++ b/raster3d/r3.out.v5d/main.c @@ -30,7 +30,7 @@ typedef struct { /* protos */ void fatalError(char *errorMsg); -void setParams(); +void setParams(void); void getParams(char **input, char **output, int *decim); void convert(char *fileout, int, int, int, int); @@ -57,7 +57,7 @@ void fatalError(char *errorMsg) /*---------------------------------------------------------------------------*/ /* Convenient way to set up the arguments we are expecting */ -void setParams() +void setParams(void) { param.input = G_define_option(); param.input->key = "input"; diff --git a/raster3d/r3.out.v5d/r3.out.v5d.html b/raster3d/r3.out.v5d/r3.out.v5d.html index 0f606f88bba..50c3280b55d 100644 --- a/raster3d/r3.out.v5d/r3.out.v5d.html +++ b/raster3d/r3.out.v5d/r3.out.v5d.html @@ -1,9 +1,9 @@

    DESCRIPTION

    -Exports 3D raster maps to V5D format. The map parameter is a valid +Exports 3D raster maps to V5D format. The map parameter is a valid 3D raster map in the current mapset search path. The output parameter is the name of a V5D file which will be written in the current -working directory. +working directory.

    Vis5D is a system for interactive visualization of large 5D gridded data sets such as those diff --git a/raster3d/r3.out.vtk/r3.out.vtk.html b/raster3d/r3.out.vtk/r3.out.vtk.html index a2ee01247c9..79749957f95 100644 --- a/raster3d/r3.out.vtk/r3.out.vtk.html +++ b/raster3d/r3.out.vtk/r3.out.vtk.html @@ -9,23 +9,23 @@

    DESCRIPTION

    NOTES

    -This module generates structured points with celldata +This module generates structured points with celldata (default) or pointdata. If top and bottom surfaces are requested an unstructured grid with celldata or a structured grid with pointdata is generated. -This data is put in a simple VTK-ASCII file. Neither XML nor +This data is put in a simple VTK-ASCII file. Neither XML nor binary output are supported. It is possible to choose more then one 3D raster map to be written in the VTK-ASCII file. Each celldata is named as the -3D raster map it represents. The user can visualize this file with the -VTK Toolkit, -ParaView and +3D raster map it represents. The user can visualize this file with the +VTK Toolkit, +ParaView and MayaVi which are based on VTK. In case of 3D raster map with partially no data, the threshold filter in ParaView can be used to visualize the valid data. Just filter all data which is greater/lesser than the chosen null value in the VTK-ASCII file. -

    The top and bottom region values are expected in meters. +

    The top and bottom region values are expected in meters. If a Latitude-Longitude (LL) coordinates are used, the elevation value for each voxel will be converted into degrees. @@ -39,13 +39,13 @@

    NOTES

    If the surface and bottom maps are in a different unit than meters, use the scale parameter to convert them into meters. -

    The RGB voxel data can be created from 2D raster maps (Landsat TM images) +

    The RGB voxel data can be created from 2D raster maps (Landsat TM images) with r.to.rast3. The values of the RGB maps must be within 0 and 255. If not, the values are automatically set to 0 and warnings will be printed to stderr.

    The vector data is created from three 3D raster maps. Each map represents a vector component. -So x, y and z components are required in this order. This data can be visualized with Glyph3d or +So x, y and z components are required in this order. This data can be visualized with Glyph3d or StreamTracer filters within Paraview.

    If the -c flag is used and the data should be visualised together with @@ -113,7 +113,7 @@

    Spearfish example with RGB data

    input=map3d top=elevation.10m bottom=bottom output=/tmp/out.vtk # visualize in paraview or other VTK viewer: -paraview --data=/tmp/out.vtk +paraview --data=/tmp/out.vtk

    Spearfish example with vector data

    @@ -140,7 +140,7 @@

    Spearfish example with vector data

    bottom=bottom output=/tmp/out.vtk # visualize in paraview or other VTK viewer: -paraview --data=/tmp/out.vtk +paraview --data=/tmp/out.vtk # Now use the Glyph and Stream-Trace Filter to get nice vectors and streamlines diff --git a/raster3d/r3.out.vtk/test.r3.out.vtk.sh b/raster3d/r3.out.vtk/test.r3.out.vtk.sh index 5b070510c86..b931d504537 100755 --- a/raster3d/r3.out.vtk/test.r3.out.vtk.sh +++ b/raster3d/r3.out.vtk/test.r3.out.vtk.sh @@ -13,7 +13,7 @@ g.region s=0 n=80 w=0 e=120 b=0 t=50 res=10 res3=10 -p3 # to south. So in the south the elevation must have a maximum. r.mapcalc --o expr="elev_bottom = row()" r.mapcalc --o expr="elev_top = row() + 50" -# Now create a voxel map with value = col + row + depth. +# Now create a voxel map with value = col + row + depth. r3.mapcalc --o expr="volume = col() + row() + depth()" # Add null value information r3.mapcalc --o expr="volume_null = if(row() == 2 || row() == 7, null(), volume)" @@ -38,7 +38,7 @@ r3.out.vtk -s --o top=elev_top bottom=elev_bottom input=volume_null output=test_ r3.out.vtk -sp --o top=elev_top bottom=elev_bottom input=volume_null output=test_volume_null_1_points_elevation.vtk dp=3 null=0 # Comparison of references and vtk files -for i in `ls *.ref` ; do - diff $i "`basename $i .ref`.vtk" ; +for i in `ls *.ref` ; do + diff $i "`basename $i .ref`.vtk" ; done rm *.vtk diff --git a/raster3d/r3.retile/main.c b/raster3d/r3.retile/main.c index 7de742ad715..5a2337ea7eb 100644 --- a/raster3d/r3.retile/main.c +++ b/raster3d/r3.retile/main.c @@ -35,7 +35,11 @@ paramType param; /*Parameters */ /*- prototypes --------------------------------------------------------------*/ static void fatal_error(void *map, int *fd, int depths, char *errorMsg); /*Simple Error message */ +<<<<<<< HEAD static void set_params(); /*Fill the paramType structure */ +======= +static void set_params(void); /*Fill the paramType structure */ +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) /* ************************************************************************* */ /* Error handling ********************************************************** */ @@ -64,7 +68,7 @@ void fatal_error(void *map, int *fd, int depths, char *errorMsg) /* Set up the arguments we are expecting *********************************** */ /* ************************************************************************* */ -void set_params() +void set_params(void) { param.input = G_define_standard_option(G_OPT_R3_INPUT); diff --git a/raster3d/r3.retile/r3.retile.html b/raster3d/r3.retile/r3.retile.html index ebfc9cacf88..ac1780dee45 100644 --- a/raster3d/r3.retile/r3.retile.html +++ b/raster3d/r3.retile/r3.retile.html @@ -1,9 +1,9 @@

    DESCRIPTION

    r3.retile writes a copy of an existing 3D raster map with -a user defined number of tiles in x, y and z direction. +a user defined number of tiles in x, y and z direction. The precision and the type of the original 3D raster map are used for -the new retiled 3D raster map. +the new retiled 3D raster map.

    SEE ALSO

    diff --git a/raster3d/r3.retile/test.r3.retile.sh b/raster3d/r3.retile/test.r3.retile.sh index e4f0f140bc2..95f5bfd1b81 100755 --- a/raster3d/r3.retile/test.r3.retile.sh +++ b/raster3d/r3.retile/test.r3.retile.sh @@ -3,34 +3,34 @@ # We need to set a specific region in the # @preprocess step of this test. We generate -# voxel data with r3.mapcalc. The region setting +# voxel data with r3.mapcalc. The region setting # should work for UTM and LL test locations g.region s=0 n=47 w=0 e=35 b=0 t=23 res=10 res3=1 -p3 -# Now create a voxel map with value = col + row + depth. +# Now create a voxel map with value = col + row + depth. r3.mapcalc --o expr="volume = col() + row() + depth()" # Add null value information r3.mapcalc --o expr="volume_null = if(row() == 1 || row() == 5, null(), volume)" # We @test the retiling with different tile sizes, with and without tile caching. -# The validation is based on @raster3d maps and r3.info generated @files. +# The validation is based on @raster3d maps and r3.info generated @files. # We use @precision=0 for data export r3.retile --o input=volume_null output=test_retile_map_1 tiledim=1x1x1 r3.info -g map=test_retile_map_1 > test_retile_map_1_info.txt r3.retile --o input=volume_null output=test_retile_map_2 tiledim=1x1x1 -c r3.info -g map=test_retile_map_2 > test_retile_map_2_info.txt -r3.retile --o input=volume_null output=test_retile_map_3 tiledim=8x8x4 +r3.retile --o input=volume_null output=test_retile_map_3 tiledim=8x8x4 r3.info -g map=test_retile_map_3 > test_retile_map_3_info.txt r3.retile --o input=volume_null output=test_retile_map_4 tiledim=8x8x4 -c r3.info -g map=test_retile_map_4 > test_retile_map_4_info.txt -r3.retile --o input=volume_null output=test_retile_map_5 tiledim=16x16x16 +r3.retile --o input=volume_null output=test_retile_map_5 tiledim=16x16x16 r3.info -g map=test_retile_map_5 > test_retile_map_5_info.txt r3.retile --o input=volume_null output=test_retile_map_6 tiledim=16x16x16 -c r3.info -g map=test_retile_map_6 > test_retile_map_6_info.txt -r3.retile --o input=volume_null output=test_retile_map_7 tiledim=35x47x23 +r3.retile --o input=volume_null output=test_retile_map_7 tiledim=35x47x23 r3.info -g map=test_retile_map_7 > test_retile_map_7_info.txt r3.retile --o input=volume_null output=test_retile_map_8 tiledim=35x47x23 -c r3.info -g map=test_retile_map_8 > test_retile_map_8_info.txt -r3.retile --o input=volume_null output=test_retile_map_9 tiledim=34x46x22 +r3.retile --o input=volume_null output=test_retile_map_9 tiledim=34x46x22 r3.info -g map=test_retile_map_9 > test_retile_map_9_info.txt r3.retile --o input=volume_null output=test_retile_map_10 tiledim=34x46x22 -c r3.info -g map=test_retile_map_10 > test_retile_map_10_info.txt @@ -41,7 +41,7 @@ for map in `g.list type=raster3d pattern=test_retile_map_*` ; do done # Comparison of references and text files -for i in `ls *.ref` ; do - diff $i "`basename $i .ref`.txt" ; +for i in `ls *.ref` ; do + diff $i "`basename $i .ref`.txt" ; done rm *.txt diff --git a/raster3d/r3.showdspf/README b/raster3d/r3.showdspf/README index c8da2fdc7c1..60db35b579c 100644 --- a/raster3d/r3.showdspf/README +++ b/raster3d/r3.showdspf/README @@ -1,4 +1,4 @@ -For information on the port of r3.showdspf from IrisGL to OpenGL browse the +For information on the port of r3.showdspf from IrisGL to OpenGL browse the document r3.showdspf_opengl_mods.html Ken Sakai diff --git a/raster3d/r3.showdspf/TODO b/raster3d/r3.showdspf/TODO index 73b0589cfb2..14787eb09d9 100644 --- a/raster3d/r3.showdspf/TODO +++ b/raster3d/r3.showdspf/TODO @@ -5,7 +5,7 @@ implemented properly (commented): therefore we cannot watch solids... -If I remove the comment from +If I remove the comment from draw_cap_side (D_spec, Headp, G3header, Cap, -1); the graphic output disappears. diff --git a/raster3d/r3.showdspf/r3.showdspf.html b/raster3d/r3.showdspf/r3.showdspf.html index 2b6da94f995..97f1322a882 100644 --- a/raster3d/r3.showdspf/r3.showdspf.html +++ b/raster3d/r3.showdspf/r3.showdspf.html @@ -9,7 +9,7 @@

    DESCRIPTION

    Upon initialization of the program, two graphics windows are opened, one for the color table and the other for data display. The display window initially contains a red bounding box. Command options -are then printed to the terminal and user is prompted for drawing +are then printed to the terminal and user is prompted for drawing instructions:

    @@ -22,17 +22,17 @@ 

    DESCRIPTION

    USAGE AND MEANING: ? lists available thresholds - l index# [index#...] add threshold to display list + l index# [index#...] add threshold to display list L draw current display list t index# reset so only this threshold is displayed - T index# index# show thresholds between hi & lo + T index# index# show thresholds between hi & lo I toggle thresholds INSIDE hi/lo or OUTSIDE hi/lo +(+++) display thresholds with consecutively increasing index# -(---) display thresholds with consecutively decreasing index# - x int# absolute rotation around x-axis in degrees(int) - y int# absolute rotation around y-axis in degrees(int) - z int# absolute rotation around z-axis in degrees(int) + x int# absolute rotation around x-axis in degrees(int) + y int# absolute rotation around y-axis in degrees(int) + z int# absolute rotation around z-axis in degrees(int) r rotate_model X int# scale model in x Y int# scale model in y @@ -69,7 +69,7 @@

    DESCRIPTION

    Hints:

    • To navigate around the data, use the r command, then place -the mouse pointer in the graphics window and drag with the left mouse +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. @@ -77,8 +77,8 @@

      Hints:

    • To quickly view a series of isosurfaces, enter a series of + or - characters, i.e. +++++++ -
    • Scripts using above commands on separate lines may be -directed to r3.showdspf as standard input. +
    • 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.
    @@ -90,7 +90,7 @@

    EXAMPLES

    List available thresholds with ?. Use l to select isosurfaces (available number can be adjusted with r3.mkdspf) and L to display:
    -l 1 2 3 4 5
    L
    +l 1 2 3 4 5
    L

    To select and display a single threshold (here: 2), use:
    t 2 @@ -134,7 +134,7 @@

    EXAMPLES

    Bx15
    p6
    Bx20
    -p6 +p6

    The p is needed for the fence diagram, solids and boxes. diff --git a/raster3d/r3.stats/r3.stats.html b/raster3d/r3.stats/r3.stats.html index 3908c7615a8..dd9978f67d2 100644 --- a/raster3d/r3.stats/r3.stats.html +++ b/raster3d/r3.stats/r3.stats.html @@ -2,7 +2,7 @@

    DESCRIPTION

    r3.stats calculates volume statistics for 3D raster maps. Volumes are created on base of value subranges or groups of equal values. -The default number of subranges is 20 and can vary from 1 to infinite. +The default number of subranges is 20 and can vary from 1 to infinite. Larger number of subranges will result in larger memory consumption. The volumes are calculated in qubic meters. Null values are marked with "*". If the flag -e is set, the number of subranges will be ignored. @@ -13,7 +13,7 @@

    NOTES

    array defined by the current 3D region settings, not the original extent and resolution of the input map. See g.region.

    The region setting will not effect the memory consumption of this module. -The number of subranges in case of value range calculation or the number of +The number of subranges in case of value range calculation or the number of 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 @@ -23,10 +23,10 @@

    EXAMPLES

    Lausanne FOSS4G 2006 3D demo dataset example

    -The 3D raster map geology has three values. Each value represents +The 3D raster map geology has three values. Each value represents a specific geological layer, clay = 1, sand = 2 and bedrock = 3. To calculate the volume of each geological layer, we can use the flag -e to group -equal values into single volumes. +equal values into single volumes. r3.stats geology -e will produce the following output:

    diff --git a/raster3d/r3.stats/test.r3.stats.sh b/raster3d/r3.stats/test.r3.stats.sh
    index 51f29e1650e..1e43ebbb716 100755
    --- a/raster3d/r3.stats/test.r3.stats.sh
    +++ b/raster3d/r3.stats/test.r3.stats.sh
    @@ -2,18 +2,18 @@
     
     # We set up a specific region in the
     # @preprocess step of this test. We generate
    -# voxel data with r3.mapcalc. The region setting 
    +# voxel data with r3.mapcalc. The region setting
     # should work for UTM and LL test locations
     g.region s=0 n=80 w=0 e=120 b=0 t=50 res=10 res3=10 -p3
     # We create several (float, double, null value) voxel map
    -# with value = col + row + depth. 
    +# with value = col + row + depth.
     r3.mapcalc --o expr="volume_float = float(col() + row() + depth())"
     r3.mapcalc --o expr="volume_double = double(col() + row() + depth())"
     # Add null value information to test correct null value handling
     r3.mapcalc --o expr="volume_float_null = if(row() == 1 || row() == 5, null(), volume_float)"
     r3.mapcalc --o expr="volume_double_null = if(row() == 2 || row() == 6, null(), volume_double)"
     
    -# @test r3.stats with float maps and @file validation. 
    +# @test r3.stats with float maps and @file validation.
     # The module output on stdout is piped into text files
     r3.stats input=volume_float_null nsteps=1 > test_volume_float_stats_1.txt
     r3.stats input=volume_float_null nsteps=2  > test_volume_float_stats_2.txt
    @@ -30,7 +30,7 @@ r3.stats input=volume_double_null nsteps=22 > test_volume_double_stats_22.txt
     r3.stats -e input=volume_double_null > test_volume_double_stats_e.txt
     
     # Comparison of references and text files
    -for i in `ls *.ref` ; do 
    -    diff $i "`basename $i .ref`.txt" ; 
    +for i in `ls *.ref` ; do
    +    diff $i "`basename $i .ref`.txt" ;
     done
     rm *.txt
    diff --git a/raster3d/r3.support/Makefile b/raster3d/r3.support/Makefile
    index 22053946ffe..2f039b57ce9 100644
    --- a/raster3d/r3.support/Makefile
    +++ b/raster3d/r3.support/Makefile
    @@ -8,5 +8,3 @@ DEPENDENCIES = $(RASTER3DDEP) $(RASTERDEP) $(GISDEP)
     include $(MODULE_TOPDIR)/include/Make/Module.make
     
     default: cmd
    -
    -
    diff --git a/raster3d/r3.support/main.c b/raster3d/r3.support/main.c
    index eab0b713dec..580c4c07311 100644
    --- a/raster3d/r3.support/main.c
    +++ b/raster3d/r3.support/main.c
    @@ -193,6 +193,7 @@ int main(int argc, char *argv[])
              * the hist file. bug? */
             /* Should be RECORD_LEN, but r.info truncates at > 71 chars */
             if (strlen(history_opt->answer) > 71) {
    +<<<<<<< HEAD
                 int i;
     
                 for (i = 0; i < strlen(history_opt->answer); i += 71) {
    @@ -207,6 +208,20 @@ int main(int argc, char *argv[])
             else
                 Rast_append_history(&hist, history_opt->answer);
     
    +=======
    +            for (unsigned int i = 0; i < strlen(history_opt->answer); i += 71) {
    +                char buf[72];
    +
    +                strncpy(buf, &history_opt->answer[i], sizeof(buf) - 1);
    +                buf[sizeof(buf) - 1] = '\0';
    +
    +                Rast_append_history(&hist, buf);
    +            }
    +        }
    +        else
    +            Rast_append_history(&hist, history_opt->answer);
    +
    +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794))
             Rast3d_write_history(raster->answer, &hist);
         }
     
    diff --git a/raster3d/r3.support/r3.support.html b/raster3d/r3.support/r3.support.html
    index 5236e119052..40f39398f67 100644
    --- a/raster3d/r3.support/r3.support.html
    +++ b/raster3d/r3.support/r3.support.html
    @@ -1,7 +1,7 @@
     

    DESCRIPTION

    -r3.support allows the user to create and/or edit raster3d map support -information. Editing of raster3d map units, history, description and title is supported. +r3.support allows the user to create and/or edit raster3d map support +information. Editing of raster3d map units, history, description and title is supported.

    NOTES

    diff --git a/raster3d/r3.timestamp/r3.timestamp.html b/raster3d/r3.timestamp/r3.timestamp.html index 7b44450687b..ff03fb244cf 100644 --- a/raster3d/r3.timestamp/r3.timestamp.html +++ b/raster3d/r3.timestamp/r3.timestamp.html @@ -50,7 +50,7 @@

    EXAMPLES

     r3.timestamp map=soils date=none
    -
    +

    KNOWN ISSUES

    diff --git a/raster3d/r3.timestamp/test_suite/test.r3.timestamp.sh b/raster3d/r3.timestamp/test_suite/test.r3.timestamp.sh index 910e3090748..f5ea172a62d 100755 --- a/raster3d/r3.timestamp/test_suite/test.r3.timestamp.sh +++ b/raster3d/r3.timestamp/test_suite/test.r3.timestamp.sh @@ -11,41 +11,41 @@ r3.mapcalc --o expr="map3d = 1" # The first @test uses several different absolute datum formats r3.timestamp map=map3d date=none -r3.timestamp map=map3d +r3.timestamp map=map3d r3.timestamp map=map3d date="2003" -r3.timestamp map=map3d +r3.timestamp map=map3d r3.timestamp map=map3d date="Jul 2003" -r3.timestamp map=map3d +r3.timestamp map=map3d r3.timestamp map=map3d date="14 Jul 2003" -r3.timestamp map=map3d +r3.timestamp map=map3d r3.timestamp map=map3d date="14 Jul 2003 10" -r3.timestamp map=map3d +r3.timestamp map=map3d r3.timestamp map=map3d date="14 Jul 2003 10:30 +0700" -r3.timestamp map=map3d +r3.timestamp map=map3d r3.timestamp map=map3d date="14 Jul 2003 10:30:25" -r3.timestamp map=map3d +r3.timestamp map=map3d r3.timestamp map=map3d date="14 Jul 2003 10:30:25 +0700 / 15 Jul 2003 11:35:12 +0700" -r3.timestamp map=map3d +r3.timestamp map=map3d r3.timestamp map=map3d date="14 Jul 2003 10:30:25 +0700 / 15 Jul 2003" -r3.timestamp map=map3d +r3.timestamp map=map3d r3.timestamp map=map3d date=none -r3.timestamp map=map3d +r3.timestamp map=map3d # The second @test uses several different relative datum formats r3.timestamp map=map3d date=none -r3.timestamp map=map3d +r3.timestamp map=map3d r3.timestamp map=map3d date="2 years" -r3.timestamp map=map3d +r3.timestamp map=map3d r3.timestamp map=map3d date="2 years 3 months" -r3.timestamp map=map3d +r3.timestamp map=map3d r3.timestamp map=map3d date="5 days" -r3.timestamp map=map3d +r3.timestamp map=map3d r3.timestamp map=map3d date="3 hours" -r3.timestamp map=map3d +r3.timestamp map=map3d r3.timestamp map=map3d date="5 minutes 30 seconds" -r3.timestamp map=map3d +r3.timestamp map=map3d r3.timestamp map=map3d date="2 years 2 months / 5 years 8 months" -r3.timestamp map=map3d +r3.timestamp map=map3d r3.timestamp map=map3d date=none # The third @test to check @failure with wrong time stamps @@ -54,4 +54,3 @@ r3.timestamp map=map3d date="2 years 3 months 8 days" r3.timestamp map=map3d date="1 month 5 days" r3.timestamp map=map3d date="July 2003" r3.timestamp map=map3d date="14 Jul 2003 +0700" - diff --git a/raster3d/r3.to.rast/main.c b/raster3d/r3.to.rast/main.c index 17e73a5cba7..a97494186f7 100644 --- a/raster3d/r3.to.rast/main.c +++ b/raster3d/r3.to.rast/main.c @@ -38,7 +38,11 @@ paramType param; /*Parameters */ /*- prototypes --------------------------------------------------------------*/ void fatal_error(void *map, int *fd, int depths, char *errorMsg); /*Simple Error message */ +<<<<<<< HEAD void set_params(); /*Fill the paramType structure */ +======= +void set_params(void); /*Fill the paramType structure */ +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) void g3d_to_raster(void *map, RASTER3D_Region region, int *fd, int output_type, int use_coeffs, double coeff_a, double coeff_b); /*Write the raster */ @@ -88,7 +92,7 @@ void fatal_error(void *map, int *fd, int depths, char *errorMsg) /* Set up the arguments we are expecting ********************************** */ /* ************************************************************************* */ -void set_params() +void set_params(void) { param.input = G_define_option(); param.input->key = "input"; diff --git a/raster3d/r3.to.rast/r3.to.rast.html b/raster3d/r3.to.rast/r3.to.rast.html index 273e9836c57..7dca51c7294 100644 --- a/raster3d/r3.to.rast/r3.to.rast.html +++ b/raster3d/r3.to.rast/r3.to.rast.html @@ -1,9 +1,9 @@

    DESCRIPTION

    -Converts one 3D raster map into several 2D raster maps (depends on depths). -If the 2D and 3D region settings are different, the 3D resolution will be +Converts one 3D raster map into several 2D raster maps (depends on depths). +If the 2D and 3D region settings are different, the 3D resolution will be adjusted to the 2D resolution (the depths are not touched). -The user can force r3.to.rast to use the 2D resolution of the input +The user can force r3.to.rast to use the 2D resolution of the input 3D raster map for the output maps, independently from the current region settings.
    @@ -26,7 +26,11 @@

    Map type conversions

    The type option is especially advantageous when the 3D raster map stores categories (which need to be stored as floating point numbers) and the 2D raster map should be also categorical, i.e. use integers. +<<<<<<< HEAD The type is set to CELL in this case. +======= +The type is set to CELL in this case. +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794))

    Modifying the values

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

    NOTES

    Every slice of the 3D raster map is copied to one 2D raster map. The maps are named like output_slicenumber. Slices are counted from bottom -to the top, so the bottom slice has number 1. +to the top, so the bottom slice has number 1.

    The number of slices is equal to the number of depths. diff --git a/raster3d/r3.to.rast/test.r3.to.rast.sh b/raster3d/r3.to.rast/test.r3.to.rast.sh index bfd1da67657..8b0e0963ff5 100755 --- a/raster3d/r3.to.rast/test.r3.to.rast.sh +++ b/raster3d/r3.to.rast/test.r3.to.rast.sh @@ -4,10 +4,10 @@ # We need to set a specific region in the # @preprocess step of this test. We generate -# voxel data with r3.mapcalc. The region setting +# voxel data with r3.mapcalc. The region setting # should work for UTM and LL test locations g.region s=0 n=80 w=0 e=120 b=0 t=50 res=10 res3=10 -p3 -# Now create a voxel map with value = col + row + depth. +# Now create a voxel map with value = col + row + depth. r3.mapcalc --o expr="volume = double(col() + row() + depth())" # Add null value information r3.mapcalc --o expr="volume_null = if(row() == 1 || row() == 5, null(), volume)" @@ -27,7 +27,7 @@ for i in `g.list type=raster pattern=test_raster_slice_float*` ; do r.out.ascii # The next @preprocess step adjusts the raster region to increase the resolution by 2 g.region res=7.5 -p3 -# This @test should show the via nearest neighbour resampled data. +# This @test should show the via nearest neighbour resampled data. # Reference data for all generated @raster maps are located in the r3.to.rast source directory. r3.to.rast --o input=volume_null output=test_raster_slice_2 @@ -37,7 +37,7 @@ for i in `g.list type=raster pattern=test_raster_slice_2*` ; do r.out.ascii inpu # The next @preprocess step adjusts the raster region to increase the resolution by 2 again g.region res=5 -p3 -# This @test should show the via nearest neighbour resampled data. +# This @test should show the via nearest neighbour resampled data. # Reference data for all generated @raster maps are located in the r3.to.rast source directory. r3.to.rast --o input=volume_null output=test_raster_slice_3 @@ -45,7 +45,7 @@ r3.to.rast --o input=volume_null output=test_raster_slice_3 for i in `g.list type=raster pattern=test_raster_slice_3*` ; do r.out.ascii input=$i output=${i}.txt; done # Comparison of references and text files -for i in `ls *.ref` ; do - diff $i "`basename $i .ref`.txt" ; +for i in `ls *.ref` ; do + diff $i "`basename $i .ref`.txt" ; done rm *.txt diff --git a/raster3d/raster3dintro.html b/raster3d/raster3dintro.html index 23ace1c35ac..ac476b974b2 100644 --- a/raster3d/raster3dintro.html +++ b/raster3d/raster3dintro.html @@ -13,7 +13,7 @@

    3D raster maps in general

    GRASS GIS 3D raster maps use the same coordinate system as 2D raster maps (row count from north to south) with an additional z dimension (depth) -counting from bottom to top. The upper left corner (NW) is the origin. +counting from bottom to top. The upper left corner (NW) is the origin. 3D rasters are stored using a tile cache based approach. This allows arbitrary read and write operations in the created 3D raster. The size of the tiles can be specified at import time with a given import module such as @@ -159,7 +159,7 @@

    3D raster export

    can be imported with the corresponding import modules noted above.

    -NetCDF export of 3D raster maps can be performed using the module +NetCDF export of 3D raster maps can be performed using the module r3.out.netcdf. It supports 3D raster maps with spatial dimensions and temporal (vertical) dimension. @@ -173,7 +173,7 @@

    Working with 3D visualization software

    GRASS GIS 3D raster maps can be exported to VTK using r3.out.vtk. -VTK files can be visualized with the +VTK files can be visualized with the VTK Toolkit, Paraview and MayaVi. diff --git a/renovate.json b/renovate.json new file mode 100644 index 00000000000..fb46027c808 --- /dev/null +++ b/renovate.json @@ -0,0 +1,7 @@ +{ + "$schema": "https://docs.renovatebot.com/renovate-schema.json", + "extends": [ + "config:base", + ":semanticCommitTypeAll(CI)" + ] +} diff --git a/rpm/grass-pkgconfig.patch b/rpm/grass-pkgconfig.patch index 9afaf06baf3..a2bdef8eeb9 100644 --- a/rpm/grass-pkgconfig.patch +++ b/rpm/grass-pkgconfig.patch @@ -5,7 +5,11 @@ Index: grass-7.8.6/grass.pc.in @@ -2,13 +2,13 @@ # # See also: grass@GRASS_VERSION_MAJOR@@GRASS_VERSION_MINOR@ --config +<<<<<<< HEAD +======= + +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) -prefix=@prefix@/grass-@GRASS_VERSION_MAJOR@.@GRASS_VERSION_MINOR@.@GRASS_VERSION_RELEASE@ -exec_prefix=@prefix@/grass-@GRASS_VERSION_MAJOR@.@GRASS_VERSION_MINOR@.@GRASS_VERSION_RELEASE@ -libdir=@prefix@/grass-@GRASS_VERSION_MAJOR@.@GRASS_VERSION_MINOR@.@GRASS_VERSION_RELEASE@/lib @@ -14,7 +18,11 @@ Index: grass-7.8.6/grass.pc.in +exec_prefix=@libdir@/grass-@GRASS_VERSION_MAJOR@.@GRASS_VERSION_MINOR@.@GRASS_VERSION_RELEASE@ +libdir=@libdir@/grass-@GRASS_VERSION_MAJOR@.@GRASS_VERSION_MINOR@.@GRASS_VERSION_RELEASE@/lib +includedir=@libdir@/grass-@GRASS_VERSION_MAJOR@.@GRASS_VERSION_MINOR@.@GRASS_VERSION_RELEASE@/include +<<<<<<< HEAD +======= + +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) Name: GRASS Description: GRASS GIS Version: @GRASS_VERSION_MAJOR@.@GRASS_VERSION_MINOR@.@GRASS_VERSION_RELEASE@ diff --git a/scripts/Makefile b/scripts/Makefile index f2018472eeb..2b898941463 100644 --- a/scripts/Makefile +++ b/scripts/Makefile @@ -87,4 +87,3 @@ SUBDIRS = \ include $(MODULE_TOPDIR)/include/Make/Dir.make default: parsubdirs - diff --git a/scripts/d.frame/d.frame.html b/scripts/d.frame/d.frame.html index 964a99d056a..826fde06fe8 100644 --- a/scripts/d.frame/d.frame.html +++ b/scripts/d.frame/d.frame.html @@ -20,9 +20,9 @@

    NOTES

    monitor's lower-right corner is always at 100,100.

    -If the user has created multiple display frames that overlap one another, -whatever the user displays in the active frame will overwrite -those portions of the underlying frame where these frames overlap. +If the user has created multiple display frames that overlap one another, +whatever the user displays in the active frame will overwrite +those portions of the underlying frame where these frames overlap.

    EXAMPLE

    @@ -38,7 +38,7 @@

    EXAMPLE

    d.frame -e # create a first frame and display 'landuse96_28m' raster map including text label -# order: bottom,top,left,right - in percent +# order: bottom,top,left,right - in percent d.frame -c frame=first at=0,50,0,50 d.rast landuse96_28m d.text text='Landuse' bgcolor=220:220:220 color=black size=6 @@ -80,7 +80,11 @@

    SEE ALSO

    GRASS environment variables for rendering (GRASS_RENDER_FRAME) +<<<<<<< HEAD +======= + +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794))

    AUTHORS

    Martin Landa, Czech Technical University in Prague, Czech Republic @@ -89,5 +93,5 @@

    AUTHORS

    Based on d.frame from GRASS 6:
    James Westervelt, U.S. Army Construction Engineering Research Laboratory
    -Michael Shapiro, U.S. Army Construction Engineering +Michael Shapiro, U.S. Army Construction Engineering Research Laboratory diff --git a/scripts/d.out.file/d.out.file.html b/scripts/d.out.file/d.out.file.html index c2078c02ed9..aa95a4cba63 100644 --- a/scripts/d.out.file/d.out.file.html +++ b/scripts/d.out.file/d.out.file.html @@ -7,7 +7,11 @@

    DESCRIPTION

    SEE ALSO

    +<<<<<<< HEAD +======= + +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) d.redraw, d.erase, diff --git a/scripts/d.polar/d.polar.html b/scripts/d.polar/d.polar.html index 0540513cb74..126bf0918a6 100644 --- a/scripts/d.polar/d.polar.html +++ b/scripts/d.polar/d.polar.html @@ -10,7 +10,7 @@

    DESCRIPTION

    outer circle, no data (NULL) pixels were found in the map.

    The vector in the diagram indicates a prevailing direction, its length the strength of such direction. In case all angle vectors are oriented -along the same direction, the length for the vector is maximal (in fact +along the same direction, the length for the vector is maximal (in fact it is equal to length of the most populated bin of the underlying histogram).

    As a side effect, the quality of the angle map can be derived from the diagram. Strong spikes may indicate an over-representation of diff --git a/scripts/d.rast.edit/d.rast.edit.html b/scripts/d.rast.edit/d.rast.edit.html index 623a80105ac..48ba40e21e9 100644 --- a/scripts/d.rast.edit/d.rast.edit.html +++ b/scripts/d.rast.edit/d.rast.edit.html @@ -130,7 +130,7 @@

    SEE ALSO

    d.rast.arrow, -d.rast.num, +d.rast.num, wxGUI.rdigit diff --git a/scripts/d.rast.leg/d.rast.leg.html b/scripts/d.rast.leg/d.rast.leg.html index 9e60d5efbfc..91e73ac339f 100644 --- a/scripts/d.rast.leg/d.rast.leg.html +++ b/scripts/d.rast.leg/d.rast.leg.html @@ -1,16 +1,16 @@

    DESCRIPTION

    d.rast.leg shows a raster map along with its legend. -It first clears the entire screen, then divides it -into a main (left) and a minor (right) frames, and displays a raster +It first clears the entire screen, then divides it +into a main (left) and a minor (right) frames, and displays a raster map in the main frame and the map legend in the minor frame. The main frame remains active when the program finishes.

    NOTES

    The legend may be flipped with the -f flag. -

    If the lines parameter is not given then the legend frame will -display as many lines as number of categories in the map, otherwise, it +

    If the lines parameter is not given then the legend frame will +display as many lines as number of categories in the map, otherwise, it will display the first lines minus 1 categories with the rest being truncated.

    The user may adjust the lines parameter or diff --git a/scripts/d.redraw/d.redraw.html b/scripts/d.redraw/d.redraw.html index ff20c216272..7c9eb9460d3 100644 --- a/scripts/d.redraw/d.redraw.html +++ b/scripts/d.redraw/d.redraw.html @@ -6,7 +6,11 @@

    DESCRIPTION

    SEE ALSO

    +<<<<<<< HEAD +======= + +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) d.erase, d.rast, diff --git a/scripts/d.to.rast/d.to.rast.html b/scripts/d.to.rast/d.to.rast.html index 3d8a6c9eef3..67eb36ed1b5 100644 --- a/scripts/d.to.rast/d.to.rast.html +++ b/scripts/d.to.rast/d.to.rast.html @@ -35,7 +35,11 @@

    EXAMPLE

    SEE ALSO

    +<<<<<<< HEAD +======= + +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) d.out.file, d.erase, diff --git a/scripts/d.what.rast/d.what.rast.html b/scripts/d.what.rast/d.what.rast.html index af0c414a015..014c8f6c1e3 100644 --- a/scripts/d.what.rast/d.what.rast.html +++ b/scripts/d.what.rast/d.what.rast.html @@ -6,7 +6,11 @@

    DESCRIPTION

    SEE ALSO

    +<<<<<<< HEAD +======= + +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) d.what.vect, d.redraw, diff --git a/scripts/d.what.vect/d.what.vect.html b/scripts/d.what.vect/d.what.vect.html index 4b010257762..06aefb5570e 100644 --- a/scripts/d.what.vect/d.what.vect.html +++ b/scripts/d.what.vect/d.what.vect.html @@ -6,7 +6,11 @@

    DESCRIPTION

    SEE ALSO

    +<<<<<<< HEAD +======= + +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) d.what.rast, d.redraw, diff --git a/scripts/db.in.ogr/db.in.ogr.html b/scripts/db.in.ogr/db.in.ogr.html index 7f13fbffdc5..322f22840f0 100644 --- a/scripts/db.in.ogr/db.in.ogr.html +++ b/scripts/db.in.ogr/db.in.ogr.html @@ -38,7 +38,7 @@

    Import of a SQLite table

    Import of a PostgreSQL table

    -# HINT: if the database contains spatial tables, but you want to import a non-spatial 
    +# HINT: if the database contains spatial tables, but you want to import a non-spatial
     table, set the environmental variable PG_LIST_ALL_TABLES to YES before importing
     
     db.in.ogr input="PG:host=localhost dbname=ecad user=neteler" \
    diff --git a/scripts/db.test/README b/scripts/db.test/README
    index ef10e46e114..d003291462c 100644
    --- a/scripts/db.test/README
    +++ b/scripts/db.test/README
    @@ -3,7 +3,7 @@
     
     Test file is composed of sections, each section for one SQL statement.
     There are 2 types of statements, select and execute.
    -Each section start by type: X (execute) 
    +Each section start by type: X (execute)
                                 S (select)
     and ends by empty row.
     Select statement is followed by expected result printed by db.select -c
    diff --git a/scripts/db.test/db.test.html b/scripts/db.test/db.test.html
    index 623a4cd2714..fb7d6271ab2 100644
    --- a/scripts/db.test/db.test.html
    +++ b/scripts/db.test/db.test.html
    @@ -1,6 +1,6 @@
     

    DESCRIPTION

    -db.test tests database driver and database server running +db.test tests database driver and database server running set of SQL queries. Database must exist and connection must be set by db.connect. diff --git a/scripts/db.test/test1 b/scripts/db.test/test1 index fc1f67e0546..d229d09719d 100644 --- a/scripts/db.test/test1 +++ b/scripts/db.test/test1 @@ -13,7 +13,7 @@ SELECT * FROM grass_test1 2||xxx S -SELECT c1 FROM grass_test1 WHERE d1 < 500 / 2 AND i1 <> 2 AND c1 LIKE '%bc%' +SELECT c1 FROM grass_test1 WHERE d1 < 500 / 2 AND i1 <> 2 AND c1 LIKE '%bc%' abcd X diff --git a/scripts/g.extension/g.extension.html b/scripts/g.extension/g.extension.html index ce18d75f5ff..eed39e6a648 100644 --- a/scripts/g.extension/g.extension.html +++ b/scripts/g.extension/g.extension.html @@ -26,7 +26,7 @@

    Managing installed extensions

    extension re-installs the requested extension which may include updates.

    -To bulk-update all locally installed GRASS GIS extensions, +To bulk-update all locally installed GRASS GIS extensions, g.extension.all module is available. @@ -35,7 +35,7 @@

    Where the extensions are installed

    GRASS GIS extensions are installed by g.extension into a dedicated directory. The default is a directory for application data and settings inside -the user's home directory. +the user's home directory. On GNU/Linux it is $HOME/.grass8/addons, on MS-Windows it is %APPDATA%\Roaming\GRASS8\addons. The name of the directory is stored in the GRASS_ADDON_BASE @@ -45,7 +45,7 @@

    Where the extensions are installed

    The flag -s changes this install target directory to the GRASS GIS installation directory (determined by GISBASE environmental variable, e.g. /usr/) -rather than the default directory defined as per GRASS_ADDON_BASE +rather than the default directory defined as per GRASS_ADDON_BASE (see also documentation for variables). g.extension checks if the user has permission to write to GISBASE or GRASS_ADDON_BASE. @@ -86,7 +86,7 @@

    Online repositories: GitHub, GitLab and Bitbucket

    g.extension supports the download of a repository as a ZIP file. Here the user only needs to provide a base URL to the repository web page (with or without the https:// part). -For GitLab and Bitbucket, the latest source code in the default branch is +For GitLab and Bitbucket, the latest source code in the default branch is downloaded, for GitHub, the latest source code in the master branch is downloaded. Of course, a user can still specify the full URL of a ZIP file and install a specific branch or release in this way (ZIP file mechanism diff --git a/scripts/i.band.library/landsat.json b/scripts/i.band.library/landsat.json index f7acae31e61..a091c691ed3 100644 --- a/scripts/i.band.library/landsat.json +++ b/scripts/i.band.library/landsat.json @@ -143,7 +143,11 @@ "wavelength (µm)": "1.36-1.38", "spatial resolution (meters)": 30, "tag": "Cirrus" +<<<<<<< HEAD }, +======= + }, +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) "10": { "wavelength (µm)": "10.6-11.19", "spatial resolution (meters)": 100, diff --git a/scripts/i.band.library/sentinel.json b/scripts/i.band.library/sentinel.json index 927b8b87496..b484193a26c 100644 --- a/scripts/i.band.library/sentinel.json +++ b/scripts/i.band.library/sentinel.json @@ -7,11 +7,19 @@ "source": "https://sentinel.esa.int/web/sentinel/missions/sentinel-2", "bands": { "1": { +<<<<<<< HEAD "Sentinel 2A" : { "central wavelength (nm)": 443.9, "bandwidth (nm)": 27 }, "Sentinel 2B" : { +======= + "Sentinel 2A": { + "central wavelength (nm)": 443.9, + "bandwidth (nm)": 27 + }, + "Sentinel 2B": { +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) "central wavelength (nm)": 442.3, "bandwidth (nm)": 45 }, @@ -19,11 +27,19 @@ "tag": "Visible (Coastal/Aerosol)" }, "2": { +<<<<<<< HEAD "Sentinel 2A" : { "central wavelength (nm)": 496.6, "bandwidth (nm)": 98 }, "Sentinel 2B" : { +======= + "Sentinel 2A": { + "central wavelength (nm)": 496.6, + "bandwidth (nm)": 98 + }, + "Sentinel 2B": { +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) "central wavelength (nm)": 492.1, "bandwidth (nm)": 98 }, @@ -31,11 +47,19 @@ "tag": "Visible (Blue)" }, "3": { +<<<<<<< HEAD "Sentinel 2A" : { "central wavelength (nm)": 560.0, "bandwidth (nm)": 45 }, "Sentinel 2B" : { +======= + "Sentinel 2A": { + "central wavelength (nm)": 560.0, + "bandwidth (nm)": 45 + }, + "Sentinel 2B": { +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) "central wavelength (nm)": 559.0, "bandwidth (nm)": 46 }, @@ -43,11 +67,19 @@ "tag": "Visible (Green)" }, "4": { +<<<<<<< HEAD "Sentinel 2A" : { "central wavelength (nm)": 664.5, "bandwidth (nm)": 38 }, "Sentinel 2B" : { +======= + "Sentinel 2A": { + "central wavelength (nm)": 664.5, + "bandwidth (nm)": 38 + }, + "Sentinel 2B": { +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) "central wavelength (nm)": 665.0, "bandwidth (nm)": 39 }, @@ -55,11 +87,19 @@ "tag": "Visible (Red)" }, "5": { +<<<<<<< HEAD "Sentinel 2A" : { "central wavelength (nm)": 703.9, "bandwidth (nm)": 19 }, "Sentinel 2B" : { +======= + "Sentinel 2A": { + "central wavelength (nm)": 703.9, + "bandwidth (nm)": 19 + }, + "Sentinel 2B": { +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) "central wavelength (nm)": 703.8, "bandwidth (nm)": 20 }, @@ -67,11 +107,19 @@ "tag": "Vegetation Red Edge 1" }, "6": { +<<<<<<< HEAD "Sentinel 2A" : { "central wavelength (nm)": 740.2, "bandwidth (nm)": 18 }, "Sentinel 2B" : { +======= + "Sentinel 2A": { + "central wavelength (nm)": 740.2, + "bandwidth (nm)": 18 + }, + "Sentinel 2B": { +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) "central wavelength (nm)": 739.1, "bandwidth (nm)": 18 }, @@ -79,11 +127,19 @@ "tag": "Vegetation Red Edge 2" }, "7": { +<<<<<<< HEAD "Sentinel 2A" : { "central wavelength (nm)": 782.5, "bandwidth (nm)": 28 }, "Sentinel 2B" : { +======= + "Sentinel 2A": { + "central wavelength (nm)": 782.5, + "bandwidth (nm)": 28 + }, + "Sentinel 2B": { +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) "central wavelength (nm)": 779.7, "bandwidth (nm)": 28 }, @@ -91,11 +147,19 @@ "tag": "Vegetation Red Edge 3" }, "8": { +<<<<<<< HEAD "Sentinel 2A" : { "central wavelength (nm)": 835.1, "bandwidth (nm)": 145 }, "Sentinel 2B" : { +======= + "Sentinel 2A": { + "central wavelength (nm)": 835.1, + "bandwidth (nm)": 145 + }, + "Sentinel 2B": { +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) "central wavelength (nm)": 833.0, "bandwidth (nm)": 133 }, @@ -103,11 +167,19 @@ "tag": "Near-Infrared" }, "8A": { +<<<<<<< HEAD "Sentinel 2A" : { "central wavelength (nm)": 864.8, "bandwidth (nm)": 33 }, "Sentinel 2B" : { +======= + "Sentinel 2A": { + "central wavelength (nm)": 864.8, + "bandwidth (nm)": 33 + }, + "Sentinel 2B": { +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) "central wavelength (nm)": 864.0, "bandwidth (nm)": 32 }, @@ -115,11 +187,19 @@ "tag": "Narrow Near-Infrared" }, "9": { +<<<<<<< HEAD "Sentinel 2A" : { "central wavelength (nm)": 945.0, "bandwidth (nm)": 26 }, "Sentinel 2B" : { +======= + "Sentinel 2A": { + "central wavelength (nm)": 945.0, + "bandwidth (nm)": 26 + }, + "Sentinel 2B": { +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) "central wavelength (nm)": 943.2, "bandwidth (nm)": 27 }, @@ -127,11 +207,19 @@ "tag": "Water vapour" }, "10": { +<<<<<<< HEAD "Sentinel 2A" : { "central wavelength (nm)": 1373.5, "bandwidth (nm)": 75 }, "Sentinel 2B" : { +======= + "Sentinel 2A": { + "central wavelength (nm)": 1373.5, + "bandwidth (nm)": 75 + }, + "Sentinel 2B": { +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) "central wavelength (nm)": 1376.9, "bandwidth (nm)": 76 }, @@ -139,11 +227,19 @@ "tag": "SWIR - Cirrus" }, "11": { +<<<<<<< HEAD "Sentinel 2A" : { "central wavelength (nm)": 1613.7, "bandwidth (nm)": 143 }, "Sentinel 2B" : { +======= + "Sentinel 2A": { + "central wavelength (nm)": 1613.7, + "bandwidth (nm)": 143 + }, + "Sentinel 2B": { +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) "central wavelength (nm)": 1610.4, "bandwidth (nm)": 141 }, @@ -151,11 +247,19 @@ "tag": "SWIR 1" }, "12": { +<<<<<<< HEAD "Sentinel 2A" : { "central wavelength (nm)": 2202.4, "bandwidth (nm)": 242 }, "Sentinel 2B" : { +======= + "Sentinel 2A": { + "central wavelength (nm)": 2202.4, + "bandwidth (nm)": 242 + }, + "Sentinel 2B": { +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) "central wavelength (nm)": 2185.7, "bandwidth (nm)": 238 }, diff --git a/scripts/i.colors.enhance/i.colors.enhance.html b/scripts/i.colors.enhance/i.colors.enhance.html index 6c023102b48..da39e5d0af3 100644 --- a/scripts/i.colors.enhance/i.colors.enhance.html +++ b/scripts/i.colors.enhance/i.colors.enhance.html @@ -4,7 +4,7 @@

    DESCRIPTION

    RGB image (e.g. from Landsat) to provide a more natural color mixture. Only the color table of each image band is modified, the base data remains untouched.

    -The module works by calculating a histogram for each color channel and +The module works by calculating a histogram for each color channel and removing an adjustable amount of outliers from either end before recalibrating the color scale with r.colors.

    diff --git a/scripts/i.in.spotvgt/i.in.spotvgt.html b/scripts/i.in.spotvgt/i.in.spotvgt.html index 7eb8bf78ba2..38719f79fc2 100644 --- a/scripts/i.in.spotvgt/i.in.spotvgt.html +++ b/scripts/i.in.spotvgt/i.in.spotvgt.html @@ -2,7 +2,7 @@

    DESCRIPTION

    i.in.spotvgt imports SPOT Vegetation (1km, global) NDVI data sets. After import the digital numbers (DN) are remapped to VEGETATION NDVI -values and the NDVI color table is applied. The imported DN map is +values and the NDVI color table is applied. The imported DN map is removed after remapping.

    Apparently missing raster cells due to bad pixel quality are reconstructed by the SPOT operating team in the NDVI file. The differences between the diff --git a/scripts/i.oif/i.oif.html b/scripts/i.oif/i.oif.html index 86ae18bb920..e763154f201 100644 --- a/scripts/i.oif/i.oif.html +++ b/scripts/i.oif/i.oif.html @@ -1,15 +1,15 @@

    DESCRIPTION

    -i.oif calculates the Optimum Index Factor for +i.oif calculates the Optimum Index Factor for multi-spectral satellite imagery.

    -The Optimum Index Factor (OIF) determines the three-band combination -that maximizes the variability (information) in a multi-spectral -scene. The index is a ratio of the total variance (standard -deviation) within and the correlation between all possible band -combinations. The bands that comprise the highest scoring -combination from i.oif are used as the three color channels +The Optimum Index Factor (OIF) determines the three-band combination +that maximizes the variability (information) in a multi-spectral +scene. The index is a ratio of the total variance (standard +deviation) within and the correlation between all possible band +combinations. The bands that comprise the highest scoring +combination from i.oif are used as the three color channels required for d.rgb or r.composite.

    The analysis is saved to a file in the current directory called "i.oif.result". @@ -21,20 +21,20 @@

    NOTES

    (example: 234 in BGR order means: B=2, G=3, R=4):
      -
    • 123: near natural ("true") colour; however, because of -correlation of the 3 bands in visible spectrum, this combination +
    • 123: near natural ("true") colour; however, because of +correlation of the 3 bands in visible spectrum, this combination contains not much more info than is contained in single band.
    • -
    • 234: sensitive to green vegetation (portrayed as red), -coniferous as distinctly darker red than deciduous forests. Roads +
    • 234: sensitive to green vegetation (portrayed as red), +coniferous as distinctly darker red than deciduous forests. Roads and water bodies are clear.
    • -
    • 243: green vegetation is green but coniferous forests aren't as +
    • 243: green vegetation is green but coniferous forests aren't as clear as the 234 combination.
    • -
    • 247: one of the best for info pertaining to forestry. Good for -operation scale mapping of recent harvest areas and road +
    • 247: one of the best for info pertaining to forestry. Good for +operation scale mapping of recent harvest areas and road construction.
    • -
    • 345: contains one band from each of the main reflective units -(vis, nir, shortwave infra). Green vegetation is green and the -shortwave band shows vegetational stress and mortality. Roads are +
    • 345: contains one band from each of the main reflective units +(vis, nir, shortwave infra). Green vegetation is green and the +shortwave band shows vegetational stress and mortality. Roads are less evident as band 3 is blue.
    • 347: similar to 345 but depicts burned areas better.
    • 354: appears more like a colour infrared photo.
    • @@ -58,7 +58,7 @@

      EXAMPLE

      REFERENCES

      -Jensen, 1996. Introductory digital image processing. Prentice Hall, +Jensen, 1996. Introductory digital image processing. Prentice Hall, p.98. ISBN 0-13-205840-5

      SEE ALSO

      diff --git a/scripts/i.pansharpen/i.pansharpen.html b/scripts/i.pansharpen/i.pansharpen.html index c5534a29769..9a50b84bc4e 100644 --- a/scripts/i.pansharpen/i.pansharpen.html +++ b/scripts/i.pansharpen/i.pansharpen.html @@ -113,7 +113,7 @@

      Pan sharpening of LANDSAT ETM+ (Landsat 7)

      # display at 14.25m, IHS pansharpened g.region raster=lsat7_2002_15m_pca_red -p d.erase -d.rgb b=lsat7_2002_15m_pca_blue g=lsat7_2002_15m_pca_green r=lsat7_2002_15m_pca_red +d.rgb b=lsat7_2002_15m_pca_blue g=lsat7_2002_15m_pca_green r=lsat7_2002_15m_pca_red

    diff --git a/scripts/i.spectral/README b/scripts/i.spectral/README index 5811a447f15..08fc6a4b53e 100644 --- a/scripts/i.spectral/README +++ b/scripts/i.spectral/README @@ -1,13 +1,13 @@ - This GRASS module calculates the spectral resonse + This GRASS module calculates the spectral resonse for raster images at a user specified point (by mouse). Requirement: gnuplot has to be in PATH. - Example: - Input: tm1 - tm7 - ... will display the spectral response in a diagram + Example: + Input: tm1 - tm7 + ... will display the spectral response in a diagram for each band at the specified location. @@ -17,4 +17,3 @@ Written by Markus Neteler 18. August 1998 bugfix: 25. Nov. 98 (coordinate system labels) update to 5.7: Okt 30 21:34:00 UTC 2003 MN - diff --git a/scripts/i.tasscap/i.tasscap.html b/scripts/i.tasscap/i.tasscap.html index 8d1d442f8eb..d197df7faf0 100644 --- a/scripts/i.tasscap/i.tasscap.html +++ b/scripts/i.tasscap/i.tasscap.html @@ -85,7 +85,7 @@

    REFERENCES

    factor data, Remote Sensing of Environment, 17: 301-306.
  • LANDSAT-7: TASSCAP factors cited from: DERIVATION OF A TASSELED CAP TRANSFORMATION BASED ON LANDSAT 7 AT-SATELLITE REFLECTANCE. - Chengquan Huang, Bruce Wylie, Limin Yang, Collin Homer and Gregory Zylstra Raytheon ITSS, + Chengquan Huang, Bruce Wylie, Limin Yang, Collin Homer and Gregory Zylstra Raytheon ITSS, USGS EROS Data Center Sioux Falls, SD 57198, USA (http://landcover.usgs.gov/pdf/tasseled.pdf). This is published as well in INT. J. OF RS, 2002, VOL 23, NO. 8, 1741-1748.
  • MODIS Tasseled Cap coefficients - Ref: Lobser & Cohen (2007). MODIS tasseled cap: diff --git a/scripts/m.proj/m.proj.html b/scripts/m.proj/m.proj.html index 746347182e0..f0f33e65514 100644 --- a/scripts/m.proj/m.proj.html +++ b/scripts/m.proj/m.proj.html @@ -1,4 +1,4 @@ -

    DESCRIPTION

    +

    DESCRIPTION

    This program allows a user to convert coordinates from one projection to another. Coordinates can be read from one file, converted, and @@ -110,14 +110,14 @@

    Reproject Long/Lat WGS84 coordinate pair to current map projection

    the current map projection:
     # check file content
    -cat waypoints.txt 
    +cat waypoints.txt
     -78.43977824 33.89587173
     -78.54944691 33.88964566
     -78.51078074 33.88141495
     -77.14037951 35.60543020
     
     # reproject points and generate vector map on the fly
    -m.proj -i input=waypoints.txt | v.in.ascii input=- output=test_pnts 
    +m.proj -i input=waypoints.txt | v.in.ascii input=- output=test_pnts
     
     # verify result
     v.db.select test_pnts cat|dbl_1|dbl_2|dbl_3
    @@ -156,7 +156,7 @@ 

    Custom projection parameter usage

    Datum conversions are automatically handled by the PROJ library if +datum setings are specified on both the input and output -projections on the command line. The +towgs84 parameter can be used to +projections on the command line. The +towgs84 parameter can be used to define either 3 or 7 term datum transform coefficients, satisfying this requirement.

    If a datum is specified there is no need for the +ellps= or underlying parameters, +a=, +es=, etc. diff --git a/scripts/r.buffer.lowmem/r.buffer.lowmem.html b/scripts/r.buffer.lowmem/r.buffer.lowmem.html index 5e6811e4538..4a347ae78be 100644 --- a/scripts/r.buffer.lowmem/r.buffer.lowmem.html +++ b/scripts/r.buffer.lowmem/r.buffer.lowmem.html @@ -53,10 +53,10 @@

    SEE ALSO

    AUTHORS

    -Michael Shapiro, U.S. Army Construction Engineering +Michael Shapiro, U.S. Army Construction Engineering Research Laboratory
    -James Westervelt, U.S. Army Construction Engineering +James Westervelt, U.S. Army Construction Engineering Research Laboratory
    Low-memory Python version by Glynn Clements diff --git a/scripts/r.drain/Makefile b/scripts/r.drain/Makefile index 0f06c878de1..e21765c23fc 100644 --- a/scripts/r.drain/Makefile +++ b/scripts/r.drain/Makefile @@ -4,4 +4,4 @@ PGM = r.drain include $(MODULE_TOPDIR)/include/Make/Script.make -default: script \ No newline at end of file +default: script diff --git a/scripts/r.drain/README b/scripts/r.drain/README index d1b575d9a7b..f6d18654856 100644 --- a/scripts/r.drain/README +++ b/scripts/r.drain/README @@ -1,9 +1,9 @@ Date: Sun, 15 Jul 2001 18:26:51 -0600 -From: "Roger S. Miller" +From: "Roger S. Miller" X-Mailer: Mozilla 4.76 [en] (X11; U; Linux 2.0.27 i586) X-Accept-Language: en To: Markus Neteler -Subject: r.drain -- new version +Subject: r.drain -- new version Markus, diff --git a/scripts/r.drain/r.drain.html b/scripts/r.drain/r.drain.html index 2592c6d805d..3a867dc1d21 100644 --- a/scripts/r.drain/r.drain.html +++ b/scripts/r.drain/r.drain.html @@ -3,11 +3,11 @@

    DESCRIPTION

    r.drain traces a flow through a least-cost path in an elevation model or cost surface. For cost surfaces, a movement direction map must be specified with the -direction option and the -d flag to trace a flow path following -the given directions. Such a movement direction map can be generated with -r.walk, -r.cost, -r.slope.aspect or +direction option and the -d flag to trace a flow path following +the given directions. Such a movement direction map can be generated with +r.walk, +r.cost, +r.slope.aspect or r.watershed provided that the direction is in degrees, measured counterclockwise from east. @@ -37,22 +37,22 @@

    DESCRIPTION

    a cost surface, the path is calculated by following the movement direction surface back to the start point given in r.walk or -r.cost. The path search stops -as soon as a region border or a neighboring NULL cell is encountered, -because in these cases the direction can not be determined (the path +r.cost. The path search stops +as soon as a region border or a neighboring NULL cell is encountered, +because in these cases the direction can not be determined (the path could continue outside the current region).

    The start_coordinates parameter consists of map E and N grid coordinates of a starting point. Each x,y pair is the easting and northing (respectively) of a starting point from which a least-cost corridor will be developed. -The start_points parameter can take multiple vector maps containing +The start_points parameter can take multiple vector maps containing additional starting points. Up to 1024 starting points can be input from a combination of the start_coordinates and start_points parameters.

    Explanation of output values

    -Consider the following example: +Consider the following example:
     Input:                          Output:
    @@ -75,10 +75,10 @@ 

    Explanation of output values

    -The user-provided starting location in the above example is -the boxed 19 in the left-hand map. The path in the output -shows the least-cost corridor for moving from the starting -box to the lowest (smallest) possible point. This is the path a raindrop +The user-provided starting location in the above example is +the boxed 19 in the left-hand map. The path in the output +shows the least-cost corridor for moving from the starting +box to the lowest (smallest) possible point. This is the path a raindrop would take in this landscape.

    With the -c (copy) flag, you get the following result: @@ -151,14 +151,14 @@

    Explanation of output values

    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    -With the -d (direction) flag, the direction raster is used -for the input, rather than the elevation surface. The output is then created +With the -d (direction) flag, the direction raster is used +for the input, rather than the elevation surface. The output is then created according to one of the -can flags.
     The directions are recorded as degrees CCW from East:
    -       112.5     67.5         i.e. a cell with the value 135 
    -157.5  135   90  45   22.5    means the next cell is to the North-West 
    -       180   x   0            
    +       112.5     67.5         i.e. a cell with the value 135
    +157.5  135   90  45   22.5    means the next cell is to the North-West
    +       180   x   0
     202.5  225  270  315  337.5
            247.5     292.5
     
    @@ -180,8 +180,8 @@

    NOTES

    r.drain will not give sane results at the region boundary. On outer rows -and columns bordering the edge of the region, the flow direction is always directly out -of the map. In this case, the user could try adjusting the region extents slightly with +and columns bordering the edge of the region, the flow direction is always directly out +of the map. In this case, the user could try adjusting the region extents slightly with g.region to allow additional outlet paths for r.drain.

    EXAMPLES

    @@ -278,7 +278,7 @@

    Path following directions

    KNOWN ISSUES

    Sometimes, when the differences among integer cell category values in the -r.cost cumulative cost surface output are +r.cost cumulative cost surface output are small, this cumulative cost output cannot accurately be used as input to r.drain (r.drain will output bad results). This problem can be circumvented by making the differences diff --git a/scripts/r.fillnulls/r.fillnulls.html b/scripts/r.fillnulls/r.fillnulls.html index dd04781f29c..61f16930807 100644 --- a/scripts/r.fillnulls/r.fillnulls.html +++ b/scripts/r.fillnulls/r.fillnulls.html @@ -13,7 +13,7 @@

    NOTES

    Each area boundary buffer is set to three times the map resolution to get nominally three points around the edge. This way the algorithm interpolates into the hole with a trained slope and curvature at the edges, in order to avoid that such a flat plane -is generated in a hole. The width of edge area can be adjusted by +is generated in a hole. The width of edge area can be adjusted by changing the edge parameter.

    During the interpolation following warning may occur when using the RST method:

    @@ -40,7 +40,7 @@

    NOTES

    Otherwise, either the linear or cubic spline interpolation with Tykhonov regularization can be selected (based on -r.resamp.bspline). +r.resamp.bspline).

    WARNING

    @@ -124,7 +124,7 @@

    REFERENCES

    SEE ALSO

    -r.fill.dir, +r.fill.dir, r.mapcalc, r.resamp.bspline, v.surf.bspline, diff --git a/scripts/r.grow/r.grow.html b/scripts/r.grow/r.grow.html index 9dfe4603375..4a936006e4a 100644 --- a/scripts/r.grow/r.grow.html +++ b/scripts/r.grow/r.grow.html @@ -9,31 +9,31 @@

    DESCRIPTION

    r.buffer and r.patch).

    -If radius is negative,r.grow shrinks areas by removing +If radius is negative,r.grow shrinks areas by removing cells around the perimeters of all areas.

    NOTES

    The user has the option of specifying three different metrics which control the geometry in which grown cells are created, (controlled by -the metric parameter): Euclidean, Manhattan, and -Maximum. +the metric parameter): Euclidean, Manhattan, and +Maximum. -

    The Euclidean distance or Euclidean metric is the "ordinary" distance -between two points that one would measure with a ruler, which can be -proven by repeated application of the Pythagorean theorem. -The formula is given by: +

    The Euclidean distance or Euclidean metric is the "ordinary" distance +between two points that one would measure with a ruler, which can be +proven by repeated application of the Pythagorean theorem. +The formula is given by:

    d(dx,dy) = sqrt(dx^2 + dy^2)
    Cells grown using this metric would form isolines of distance that are circular from a given point, with the distance given by the radius. -

    The Manhattan metric, or Taxicab geometry, is a form of geometry in -which the usual metric of Euclidean geometry is replaced by a new -metric in which the distance between two points is the sum of the (absolute) -differences of their coordinates. The name alludes to the grid layout of -most streets on the island of Manhattan, which causes the shortest path a +

    The Manhattan metric, or Taxicab geometry, is a form of geometry in +which the usual metric of Euclidean geometry is replaced by a new +metric in which the distance between two points is the sum of the (absolute) +differences of their coordinates. The name alludes to the grid layout of +most streets on the island of Manhattan, which causes the shortest path a car could take between two points in the city to have length equal to the points' distance in taxicab geometry. The formula is given by: @@ -41,7 +41,7 @@

    NOTES

    d(dx,dy) = abs(dx) + abs(dy)
    where cells grown using this metric would form isolines of distance that are -rhombus-shaped from a given point. +rhombus-shaped from a given point.

    The Maximum metric is given by the formula @@ -49,9 +49,9 @@

    NOTES

    where the isolines of distance from a point are squares. -

    If there are two cells which are equal candidates to grow into an empty space, -r.grow will choose the northernmost candidate; if there are multiple -candidates with the same northing, the westernmost is chosen. +

    If there are two cells which are equal candidates to grow into an empty space, +r.grow will choose the northernmost candidate; if there are multiple +candidates with the same northing, the westernmost is chosen.

    EXAMPLE

    @@ -85,6 +85,6 @@

    SEE ALSO

    AUTHORS

    -Marjorie Larson, +Marjorie Larson, U.S. Army Construction Engineering Research Laboratory

    Glynn Clements diff --git a/scripts/r.import/testsuite/data/data2.prj b/scripts/r.import/testsuite/data/data2.prj index 356542b8aac..3b295eed160 100644 --- a/scripts/r.import/testsuite/data/data2.prj +++ b/scripts/r.import/testsuite/data/data2.prj @@ -1 +1 @@ -PROJCS["Albers_Conical_Equal_Area",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Albers"],PARAMETER["standard_parallel_1",29.5],PARAMETER["standard_parallel_2",45.5],PARAMETER["latitude_of_origin",23],PARAMETER["central_meridian",-96],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["Meter",1]] \ No newline at end of file +PROJCS["Albers_Conical_Equal_Area",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Albers"],PARAMETER["standard_parallel_1",29.5],PARAMETER["standard_parallel_2",45.5],PARAMETER["latitude_of_origin",23],PARAMETER["central_meridian",-96],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["Meter",1]] diff --git a/scripts/r.in.aster/r.in.aster.html b/scripts/r.in.aster/r.in.aster.html index d184da1d7ec..952ce5a28d2 100644 --- a/scripts/r.in.aster/r.in.aster.html +++ b/scripts/r.in.aster/r.in.aster.html @@ -1,13 +1,13 @@

    DESCRIPTION

    -r.in.aster rectifies, georeferences, and imports Terra-ASTER imagery -to current location using gdalwarp, hdf 4, and r.in.gdal, using projection parameters +r.in.aster rectifies, georeferences, and imports Terra-ASTER imagery +to current location using gdalwarp, hdf 4, and r.in.gdal, using projection parameters from g.proj. It can import Level 1A, Level 1B, and relative DEM products. -

    The program may be run interactively or non-interactively from the command - line. In either case, the user must specify an input *.hdf file name, - the type of processing used, the image band to import, and an - output GRASS raster map name. -

    The type parameter can take values of L1A, L1B, or DEM. +

    The program may be run interactively or non-interactively from the command + line. In either case, the user must specify an input *.hdf file name, + the type of processing used, the image band to import, and an + output GRASS raster map name. +

    The type parameter can take values of L1A, L1B, or DEM.

    The band parameter can take values of 1, 2, 3n, 3b, 4-14

    NOTES

    @@ -17,4 +17,8 @@

    NOTES

    AUTHORS

    +<<<<<<< HEAD Michael Barton, Arizona State University and Paul Kelly +======= +Michael Barton, Arizona State University and Paul Kelly +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) diff --git a/scripts/r.in.srtm/r.in.srtm.html b/scripts/r.in.srtm/r.in.srtm.html index 40c5c15bfd3..6532b93523d 100644 --- a/scripts/r.in.srtm/r.in.srtm.html +++ b/scripts/r.in.srtm/r.in.srtm.html @@ -2,7 +2,7 @@

    DESCRIPTION

    r.in.srtm imports SRTM HGT files into GRASS. -SRTM Version 1 and improved Version 2 data sets can be downloaded from +SRTM Version 1 and improved Version 2 data sets can be downloaded from NASA at this site:
    http://dds.cr.usgs.gov/srtm/ @@ -13,7 +13,7 @@

    DESCRIPTION

    NOTES

    SRTM tiles are of 1 degree by 1 degree size. The SRTM filename contains the -coordinates which refer to the center of the lower left pixel (e.g., N51E010: +coordinates which refer to the center of the lower left pixel (e.g., N51E010: lower left cell center at 10E, 51N). To identify a tile name, a grid can be easily visualized by d.grid: diff --git a/scripts/r.in.wms/r.in.wms.html b/scripts/r.in.wms/r.in.wms.html index 81061a10d13..2579accb407 100644 --- a/scripts/r.in.wms/r.in.wms.html +++ b/scripts/r.in.wms/r.in.wms.html @@ -16,7 +16,7 @@

    NOTES

    request (see examples)

    -If possible, the EPSG code of the current location should be used with the +If possible, the EPSG code of the current location should be used with the srs option to avoid unnecessary reprojection.

    @@ -77,7 +77,7 @@

    Countries and coastlines

     # using WMS_GRASS driver
    -r.in.wms url="http://www2.demis.nl/WMS/wms.asp" layers=Countries,Borders,Coastline output=countries srs=4326 format=png 
    +r.in.wms url="http://www2.demis.nl/WMS/wms.asp" layers=Countries,Borders,Coastline output=countries srs=4326 format=png
     r.info countries
     
    diff --git a/scripts/r.mapcalc.simple/testsuite/test_rmapcalcsimple.py b/scripts/r.mapcalc.simple/testsuite/test_rmapcalcsimple.py index fb53ae20a9c..70da5f40b11 100644 --- a/scripts/r.mapcalc.simple/testsuite/test_rmapcalcsimple.py +++ b/scripts/r.mapcalc.simple/testsuite/test_rmapcalcsimple.py @@ -1,7 +1,7 @@ """ Name: r.mapcalc.simple test Purpose: Tests r.mapcalc.simple and its flags/options. - + Author: Markus Neteler Copyright: (C) 2018 by Markus Neteler and the GRASS Development Team Licence: This program is free software under the GNU General Public diff --git a/scripts/r.mask/r.mask.html b/scripts/r.mask/r.mask.html index 8c48175d075..3ac7090e88b 100644 --- a/scripts/r.mask/r.mask.html +++ b/scripts/r.mask/r.mask.html @@ -5,6 +5,7 @@

    DESCRIPTION

    The MASK is applied when reading an existing GRASS raster map, +<<<<<<< HEAD for example when used as an input map in a module. The MASK will block out certain areas of a raster map from analysis and/or display, by "hiding" them from sight of other GRASS modules. Data falling within the boundaries of the @@ -19,16 +20,37 @@

    DESCRIPTION

    Because the MASK created with r.mask is actually only a reclass map named "MASK", it can be copied, renamed, removed, and used in analyses, just like other GRASS raster map layers. +======= +for example when used as an input map in a module. The MASK will block out +certain areas of a raster map from analysis and/or display, by "hiding" them +from sight of other GRASS modules. Data falling within the boundaries of the +MASK can be modified and operated upon by other GRASS raster modules; data +falling outside the MASK is treated as if it were NULL. +

    +By default, r.mask converts any non-NULL value in the input map, +including zero, to 1. All these areas will be part of the MASK (see the notes +for more details). To only convert specific values (or range of values) to 1 +and the rest to NULL, use the maskcats parameter. +

    +Because the MASK created with r.mask is actually only a reclass map +named "MASK", it can be copied, renamed, removed, and used in analyses, just +like other GRASS raster map layers. +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794))

    The user should be aware that a MASK remains in place until a user renames it to something other than "MASK", or removes it. To remove a mask and restore raster operations to normal (i.e., all cells of the current region), remove the MASK by setting the -r remove MASK flag (r.mask -r). +<<<<<<< HEAD Alternatively, a mask can be removed using g.remove or by renaming it +======= +Alternatively, a mask can be removed using g.remove or by renaming it +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) to any other name with g.rename.

    NOTES

    +<<<<<<< HEAD The above method for specifying a "mask" may seem counterintuitive. Areas inside the MASK are not hidden; areas outside the MASK will be ignored until the MASK file is removed. @@ -40,10 +62,24 @@

    NOTES

    MASK with the maskcats parameter; if r.mask is run from the command line, the category values listed in maskcats must be quoted (see example below). Note that the maskcats can only be used if the +======= +The above method for specifying a "mask" may seem counterintuitive. Areas +inside the MASK are not hidden; areas outside the MASK will be ignored until +the MASK file is removed. +

    +r.mask uses r.reclass to create a reclassification of an +existing raster map and name it MASK. A reclass map takes up less +space, but is affected by any changes to the underlying map from which it was +created. The user can select category values from the input raster to use in the +MASK with the maskcats parameter; if r.mask is run from the +command line, the category values listed in maskcats must be quoted +(see example below). Note that the maskcats can only be used if the +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) input map is an integer map.

    Different ways to create a MASK

    +<<<<<<< HEAD The r.mask function creates a MASK with values 1 and NULL. But note that a MASK can also be created using other functions that have a raster as output, by naming the output raster 'MASK'. Such layers could have other @@ -54,6 +90,18 @@

    Different ways to create a MASK

    If a binary map with [0,1] values is used as input in r.mask, all raster cells with 0 and 1 will be part of the MASK. This is because +======= +The r.mask function creates a MASK with values 1 and NULL. But note +that a MASK can also be created using other functions that have a raster as +output, by naming the output raster 'MASK'. Such layers could have other +values than 1 and NULL. The user should therefore be aware that grid cells +in the MASK map containing NULL or 0 will replace data with +NULL, while cells containing other values will allow data to pass through +unaltered. This means that: +

    +If a binary map with [0,1] values is used as input in r.mask, all +raster cells with 0 and 1 will be part of the MASK. This is because +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) r.mask converts all non-NULL cells to 1.

    @@ -61,7 +109,11 @@ 

    Different ways to create a MASK

    r.mask raster=map1
    +<<<<<<< HEAD On the other hand, if a binary map is used as an input in g.copy to create a MASK, +======= +On the other hand, if a binary map is used as an input in g.copy to create a MASK, +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) only the raster cells with value 1 will be part of the MASK.
    @@ -72,9 +124,15 @@ 

    Different ways to create a MASK

    Handling of floating-point maps

    r.mask treats floating-point maps the same as integer maps (except that +<<<<<<< HEAD floating maps are not allowed in combination with the maskcats parameter); all non-NULL values of the input raster map are converted to 1 and are thus part of the MASK. In the example below, all raster cells are part of +======= +floating maps are not allowed in combination with the maskcats +parameter); all non-NULL values of the input raster map are converted to 1 and +are thus part of the MASK. In the example below, all raster cells are part of +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) the MASK, i.e., nothing is blocked out from analysis and/or display.
    @@ -86,15 +144,24 @@ 

    Handling of floating-point maps

    the user should be aware that the MASK is read as an integer map. If MASK is a floating-point map, the values will be converted to integers using the map's quantisation rules (this defaults to round-to-nearest, but can be +<<<<<<< HEAD changed with r.quant). +======= +changed with r.quant). +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794))
     r.mapcalc -s "map4 = rand(0.0,1.0)"
     g.copy raster=map4,MASK
     
    +<<<<<<< HEAD In the example above, raster cells with a rounded value of 1 are part of the MASK, while raster cells with a rounded value of 0 are converted to NULL +======= +In the example above, raster cells with a rounded value of 1 are part of +the MASK, while raster cells with a rounded value of 0 are converted to NULL +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) and consequently blocked out from analysis and/or display.

    EXAMPLES

    diff --git a/scripts/r.out.xyz/r.out.xyz.html b/scripts/r.out.xyz/r.out.xyz.html index 01d68d42ffc..f50bce683d8 100644 --- a/scripts/r.out.xyz/r.out.xyz.html +++ b/scripts/r.out.xyz/r.out.xyz.html @@ -16,7 +16,7 @@

    NOTES

    The r.out.ascii module should be used to export an array (of size row x column) containing z values.

    -r.out.xyz can combine several input raster maps, which can be +r.out.xyz can combine several input raster maps, which can be convenient when it comes to e.g. produce ASCII point cloud files.

    r.out.xyz is simply a front-end to "r.stats -1g[n]". diff --git a/scripts/r.plane/r.plane.html b/scripts/r.plane/r.plane.html index b4d4e345074..714272038e9 100644 --- a/scripts/r.plane/r.plane.html +++ b/scripts/r.plane/r.plane.html @@ -7,7 +7,7 @@

    DESCRIPTION

    i.e., 0 degree = N, 45 degree = NW, 90 degree = W etc.

    Increasing values of the dip parameter progressively lower (or dip) the northern -half of the plane, and incline the southern half, assuming the azimuth parameter +half of the plane, and incline the southern half, assuming the azimuth parameter is held constant at 0 degrees.

    NOTES

    diff --git a/scripts/r.reclass.area/r.reclass.area.html b/scripts/r.reclass.area/r.reclass.area.html index c7769d8be3a..f262aa275e2 100644 --- a/scripts/r.reclass.area/r.reclass.area.html +++ b/scripts/r.reclass.area/r.reclass.area.html @@ -22,7 +22,7 @@

    EXAMPLES

     r.reclass.area input=zipcodes output=zipcodes_larger2000ha mode=greater value=2000
    -    
    +
     r.report zipcodes_larger2000ha unit=h
     
    diff --git a/scripts/r.reclass.area/testsuite/testrra.py b/scripts/r.reclass.area/testsuite/testrra.py index a61726cb6e4..6c7822c0f6c 100644 --- a/scripts/r.reclass.area/testsuite/testrra.py +++ b/scripts/r.reclass.area/testsuite/testrra.py @@ -1,7 +1,7 @@ """ Name: r.reclass.area test Purpose: Tests r.reclass.area and its flags/options. - + Author: Sunveer Singh, Google Code-in 2018 Copyright: (C) 2018 by Sunveer Singh and the GRASS Development Team Licence: This program is free software under the GNU General Public diff --git a/scripts/r.unpack/test_suite/test.r.unpack.sh b/scripts/r.unpack/test_suite/test.r.unpack.sh index 4ef1e1f707c..ff93c1450ad 100755 --- a/scripts/r.unpack/test_suite/test.r.unpack.sh +++ b/scripts/r.unpack/test_suite/test.r.unpack.sh @@ -9,7 +9,7 @@ r.mapcalc --o expr="test_int = 1" r.mapcalc --o expr="test_float = float(2.0)" r.mapcalc --o expr="test_double = double(3.0)" -# @test packing and unpacking with @precision=1 +# @test packing and unpacking with @precision=1 # First we pack the different raster maps with and without compression r.pack --o --v input=test_int diff --git a/scripts/v.centroids/v.centroids.html b/scripts/v.centroids/v.centroids.html index a0e836782e6..2bebed24e97 100644 --- a/scripts/v.centroids/v.centroids.html +++ b/scripts/v.centroids/v.centroids.html @@ -5,7 +5,7 @@

    DESCRIPTION

    with that area is linked to the centroid. The v.centroids module adds centroids to closed boundaries in the input file and assigns a category number to them. The starting value as well as the increment size -may be set using optional parameters. +may be set using optional parameters.

    Multiple attributes may be linked to a single vector entity through numbered fields referred to as layers. Refer to v.category for more details, as v.centroids is simply a frontend to that diff --git a/scripts/v.clip/v.clip.html b/scripts/v.clip/v.clip.html index 0abe0c1700f..b4d93121d9a 100644 --- a/scripts/v.clip/v.clip.html +++ b/scripts/v.clip/v.clip.html @@ -3,7 +3,7 @@

    DESCRIPTION

    v.clip module enables extracting those features of input vector map, which overlay features of clip map, as well as their storing in a new vector map. - +

    In default, boundaries of clip map are dissolved before clipping. Alternatively, flag -d can be ticked to retain the boundaries of clip map. Flag -b facilitates clipping by current @@ -69,7 +69,7 @@

    SEE ALSO

    v.overlay, - v.select, + v.select, v.dissolve, v.in.region diff --git a/scripts/v.db.addtable/v.db.addtable.html b/scripts/v.db.addtable/v.db.addtable.html index 3065e50ddd3..399df7cb48a 100644 --- a/scripts/v.db.addtable/v.db.addtable.html +++ b/scripts/v.db.addtable/v.db.addtable.html @@ -10,12 +10,12 @@

    NOTES

    v.db.addtable is a front-end to db.execute to allow easier usage.

    -v.db.addtable will only insert category values into the table for those features -which actually have a category value in the relevant layer. The user can add -category values automatically by using v.category or manually with +v.db.addtable will only insert category values into the table for those features +which actually have a category value in the relevant layer. The user can add +category values automatically by using v.category or manually with wxGUI vector digitizer before running v.db.addtable. Or one can run v.db.addtable first -and then use either a combinatino of v.category + v.to.db or +and then use either a combinatino of v.category + v.to.db or wxGUI vector digitizer to add the relevant lines to the table.

    diff --git a/scripts/v.db.droprow/v.db.droprow.html b/scripts/v.db.droprow/v.db.droprow.html index 82f7e7781ef..94c6dfe63c3 100644 --- a/scripts/v.db.droprow/v.db.droprow.html +++ b/scripts/v.db.droprow/v.db.droprow.html @@ -1,6 +1,6 @@

    DESCRIPTION

    -v.db.droprow removes vector object(s) (point, line, area, face etc.) +v.db.droprow removes vector object(s) (point, line, area, face etc.) from a vector map through attribute selection in the table connected to the given vector map. It automatically checks the connection for the specified layer. @@ -17,7 +17,7 @@

    EXAMPLES

    Dropping all vector points without elevation attribute (North Carolina data set):
     g.region raster=elevation -p
    -v.random output=rand5k_elev n=5000 
    +v.random output=rand5k_elev n=5000
     
     v.db.addtable map=rand5k_elev column="elevation double precision"
     v.what.rast vect=rand5k_elev rast=elevation column=elevation
    diff --git a/scripts/v.db.droptable/v.db.droptable.html b/scripts/v.db.droptable/v.db.droptable.html
    index a40a43fcf4f..636ee38bcc1 100644
    --- a/scripts/v.db.droptable/v.db.droptable.html
    +++ b/scripts/v.db.droptable/v.db.droptable.html
    @@ -1,6 +1,6 @@
     

    DESCRIPTION

    -v.db.droptable removes an existing attribute table from a +v.db.droptable removes an existing attribute table from a given vector map linked at given layer. If the -f force flag is not given then nothing is removed. diff --git a/scripts/v.db.reconnect.all/v.db.reconnect.all.html b/scripts/v.db.reconnect.all/v.db.reconnect.all.html index 72d52fb0e08..c3c6c90f9ef 100644 --- a/scripts/v.db.reconnect.all/v.db.reconnect.all.html +++ b/scripts/v.db.reconnect.all/v.db.reconnect.all.html @@ -1,16 +1,20 @@

    DESCRIPTION

    +<<<<<<< HEAD +======= + +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) v.db.reconnect.all changes database connection of all layers of all vector maps in the current mapset from the source (old_database) to the target (new_database) database. If a link does not match the old_database it is left untouched.

    -If no new database is given, the default datase of the mapset is used as -printed by db.connect -g. If no old database is given, all -layers without a link in the new database will be liniked to the new -database. If an old database is given, only links in the old database +If no new database is given, the default datase of the mapset is used as +printed by db.connect -g. If no old database is given, all +layers without a link in the new database will be liniked to the new +database. If an old database is given, only links in the old database will be changed.

    @@ -18,16 +22,20 @@

    DESCRIPTION

    not exist by -c flag. In this case v.db.reconnect.all also tries to create an index on key column (usually "cat" column). - +

    NOTES

    +<<<<<<< HEAD +======= + +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) The value of the old_database option needs to be the exact string which appears as the fourth field printed by -v.db.connect -g. +v.db.connect -g.
    -v.db.connect -g map=census 
    +v.db.connect -g map=census
     1/census|census|cat|/home/user/grassdata/nc_spm_base/PERMANENT/dbf/|dbf
     
    @@ -36,7 +44,7 @@

    NOTES

    database /home/user/grassdata/nc_spm_base/PERMANENT/dbf/ can be also defined as '$GISDBASE/$LOCATION_NAME/$MAPSET/dbf/' (see examples). - +

    Attribute tables from old_database are after reconnecting left untouched. v.db.reconnect.all deletes those tables @@ -53,7 +61,7 @@

    EXAMPLES

    In the examples below are assumed, that attribute tables are linked to the vector maps through DBF database driver. - +

    Reconnect DBF attribute tables to SQLite database

    Reconnect DBF attribute tables linked to diff --git a/scripts/v.db.renamecolumn/v.db.renamecolumn.html b/scripts/v.db.renamecolumn/v.db.renamecolumn.html index f3d9a8241d5..e85ab735e90 100644 --- a/scripts/v.db.renamecolumn/v.db.renamecolumn.html +++ b/scripts/v.db.renamecolumn/v.db.renamecolumn.html @@ -13,7 +13,7 @@

    NOTES

    this the renamed column is found as last column of the table, it's original position cannot be maintained. -

    The SQLite driver will exit with an error if the column rename involves only a change of +

    The SQLite driver will exit with an error if the column rename involves only a change of case, i.e., upper-to-lowercase, or lower-to-uppercase. The SQLite protocol considers "NAME" and "name" to be identical column names. In cases like these, the user should rename the original column to an intermediary name, then rename the intermediary to the final name. diff --git a/scripts/v.db.univar/v.db.univar.html b/scripts/v.db.univar/v.db.univar.html index 5e76bb0cd62..4329051c2a9 100644 --- a/scripts/v.db.univar/v.db.univar.html +++ b/scripts/v.db.univar/v.db.univar.html @@ -1,9 +1,9 @@

    DESCRIPTION

    v.db.univar calculates basic univariate statistics for numeric -attributes in a vector attribute table. It will calculate minimum, -maximum, range, mean, standard deviation, variance, coefficient of -variation, quartiles, median, and 90th percentile. +attributes in a vector attribute table. It will calculate minimum, +maximum, range, mean, standard deviation, variance, coefficient of +variation, quartiles, median, and 90th percentile.

    v.db.univar uses db.univar which in turn uses db.select to get the attribute values on which it calculates the diff --git a/scripts/v.import/v.import.html b/scripts/v.import/v.import.html index 086fde34cce..2df69275565 100644 --- a/scripts/v.import/v.import.html +++ b/scripts/v.import/v.import.html @@ -37,10 +37,10 @@

    NOTES

    Topology cleaning

    -When importing polygons, non-topological polygons are converted to -topological areas. If the input polygons contain errors (unexpected -overlapping areas, small gaps between polygons, or warnings about being -unable to calculate centroids), the import might need to be repeated +When importing polygons, non-topological polygons are converted to +topological areas. If the input polygons contain errors (unexpected +overlapping areas, small gaps between polygons, or warnings about being +unable to calculate centroids), the import might need to be repeated using a snap value as suggested in the output messages. The default value of snap=-1 means that no snapping will be done. @@ -116,4 +116,7 @@

    AUTHORS

    Markus Metz
    Improvements: Martin Landa, Anna Petrasova +<<<<<<< HEAD +======= +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) diff --git a/scripts/v.in.geonames/v.in.geonames.html b/scripts/v.in.geonames/v.in.geonames.html index 001cbe32bae..f2657c878c3 100644 --- a/scripts/v.in.geonames/v.in.geonames.html +++ b/scripts/v.in.geonames/v.in.geonames.html @@ -40,10 +40,10 @@

    NOTES

    country code : ISO-3166 2-letter country code, 2 characters cc2 : alternate country codes, comma separated, ISO-3166 2-letter country code, 60 characters admin1 code : fipscode (subject to change to iso code), isocode for the us and ch, see file admin1Codes.txt for display names of this code; varchar(20) -admin2 code : code for the second administrative division, a county in the US, see file admin2Codes.txt; varchar(80) +admin2 code : code for the second administrative division, a county in the US, see file admin2Codes.txt; varchar(80) admin3 code : code for third level administrative division, varchar(20) admin4 code : code for fourth level administrative division, varchar(20) -population : integer +population : integer elevation : in meters, integer gtopo30 : average elevation of 30'x30' (ca 900mx900m) area in meters, integer timezone : the timezone id (see file http://download.geonames.org/export/dump/timeZones.txt) diff --git a/scripts/v.in.mapgen/v.in.mapgen.html b/scripts/v.in.mapgen/v.in.mapgen.html index 7aa2778b036..af0b4a51c06 100644 --- a/scripts/v.in.mapgen/v.in.mapgen.html +++ b/scripts/v.in.mapgen/v.in.mapgen.html @@ -1,12 +1,12 @@

    DESCRIPTION

    -v.in.mapgen allows the user to import Mapgen or Matlab vector maps +v.in.mapgen allows the user to import Mapgen or Matlab vector maps into GRASS.

    NOTES

    This module only imports data into vector lines. -

    The user can get coastline data in Mapgen or Matlab format from NOAA's Coastline +

    The user can get coastline data in Mapgen or Matlab format from NOAA's Coastline Extractor at http://www.ngdc.noaa.gov/mgg/shorelines/shorelines.html.

    Matlab vector line maps are simply a series of "x y" data points. Lines are separated by a row containing NaN NaN. diff --git a/scripts/v.in.wfs/v.in.wfs.html b/scripts/v.in.wfs/v.in.wfs.html index bf65c6c9528..54deea77537 100644 --- a/scripts/v.in.wfs/v.in.wfs.html +++ b/scripts/v.in.wfs/v.in.wfs.html @@ -28,7 +28,7 @@

    WFS import with API key

    URL='http://wfs.data.linz.govt.nz/<PUT YOUR API KEY HERE>/wfs?' # download list of available layers to wms_capabilities.xml -v.in.wfs -l url="$URL" +v.in.wfs -l url="$URL"
    From that file we learn that the shipwreck layer is called "v:x633" diff --git a/scripts/v.report/v.report.html b/scripts/v.report/v.report.html index 480dea0017c..ab240a0a9b3 100644 --- a/scripts/v.report/v.report.html +++ b/scripts/v.report/v.report.html @@ -1,6 +1,6 @@

    DESCRIPTION

    -v.report generates a table showing the area present in +v.report generates a table showing the area present in each of the categories of a user-selected data layer.

    Area is given in hectares, square meters, and square kilometers. If the units option is used, area is given in acres, square feet, @@ -10,7 +10,7 @@

    DESCRIPTION

    when the location's standard map unit is the US Survey foot.

    v.report works on the full map data; therefore, the current region is ignored. If you wish to spatially limit the statistics, -a map subset must be created with v.in.region and +a map subset must be created with v.in.region and v.overlay, and then run v.report on the new map.

    EXAMPLE

    diff --git a/scripts/v.unpack/testsuite/test.v.unpack.sh b/scripts/v.unpack/testsuite/test.v.unpack.sh index 447da44ee49..d0c72943b95 100755 --- a/scripts/v.unpack/testsuite/test.v.unpack.sh +++ b/scripts/v.unpack/testsuite/test.v.unpack.sh @@ -5,7 +5,7 @@ # The region setting should work for UTM and LL test locations g.region s=0 n=70 w=0 e=100 b=0 t=50 -p -# We need different vector maps, with and without tables +# We need different vector maps, with and without tables # and with multiple layers v.random --o -z output=probe_1 n=100 zmin=0 zmax=100 seed=1 v.random --o -z output=probe_2 n=100 zmin=0 zmax=100 column=height seed=1 @@ -23,9 +23,9 @@ g.remove -f type=vector name=probe_orig v.db.droptable -f map=probe_3 table=probe_3 layer=1 # Adding tables to layer -v.db.addtable --o map=probe_3 table=probe_3_1 layer=1 -v.db.addtable --o map=probe_3 table=probe_3_2 layer=2 -v.db.addtable --o map=probe_3 table=probe_3_3 layer=3 +v.db.addtable --o map=probe_3 table=probe_3_1 layer=1 +v.db.addtable --o map=probe_3 table=probe_3_2 layer=2 +v.db.addtable --o map=probe_3 table=probe_3_3 layer=3 # First we @test the packing/export with v.pack v.pack --o input=probe_1 diff --git a/scripts/v.what.vect/v.what.vect.html b/scripts/v.what.vect/v.what.vect.html index 5087deda01a..3f421640e49 100644 --- a/scripts/v.what.vect/v.what.vect.html +++ b/scripts/v.what.vect/v.what.vect.html @@ -12,7 +12,7 @@

    NOTES

    The upload column into which the query results are stored must be present in map. Use v.db.addcolumn to add one if needed.

    Use the dmax parameter to control the query distance tolerance, i.e., -how far map's points/centroids can be from the query_map features. +how far map's points/centroids can be from the query_map features. For further options, use v.distance.

    In case of a multipoint input map with several points having the same category number, it can happen that the query result is NULL if the same @@ -21,7 +21,7 @@

    NOTES

    dmax has to be larger than zero, i.e., it will be determined by the distance between query points and polygon centroids. Importantly, distance is in meters for latitude-longitude locations. -

    In case that one or both input vector maps are 3D, features need to +

    In case that one or both input vector maps are 3D, features need to touch also in the 3rd dimension (z coordinate) in order to transfer attributes. @@ -50,7 +50,7 @@

    EXAMPLES

     # extract populated places from geonames
     v.extract geonames_IT where="featurecla='P'" output=geonames_IT_cities
    -# add new column 
    +# add new column
     v.db.addcol corine_code111_112_cities column="gnameid double precision"
     # transfer geonameid (3000m maximal distance between points and centroids)
     v.what.vect corine_code111_112_cities query_map=geonames_IT_cities column=gnameid \
    diff --git a/temporal/Makefile b/temporal/Makefile
    index 3f70d2e037f..7c8ce66b771 100644
    --- a/temporal/Makefile
    +++ b/temporal/Makefile
    @@ -60,4 +60,3 @@ include $(MODULE_TOPDIR)/include/Make/Dir.make
     default: htmldir
     
     htmldir: parsubdirs
    -
    diff --git a/temporal/benchmark.sh b/temporal/benchmark.sh
    index ec12b8afc77..9871ae52ac2 100755
    --- a/temporal/benchmark.sh
    +++ b/temporal/benchmark.sh
    @@ -1,6 +1,6 @@
     #!/bin/sh
     # Here we test the limit of the number of layers
    -# @preprocess 
    +# @preprocess
     # The region setting should work for UTM and LL test locations
     
     # temporary disabled test for performance reason
    @@ -58,4 +58,3 @@ time t.remove type=strds input=bench1
     time t.remove type=strds input=bench2
     time t.remove type=strds input=bench3
     time t.remove -rf type=strds input=bench4
    -
    diff --git a/temporal/run_all_tests.sh b/temporal/run_all_tests.sh
    index 96ab9cfbe66..468b7f63d95 100755
    --- a/temporal/run_all_tests.sh
    +++ b/temporal/run_all_tests.sh
    @@ -1,6 +1,6 @@
     #!/bin/sh
     # This scripts runs all tests available in the temporal module directory
    -# Logs a written to "run.log" 
    +# Logs a written to "run.log"
     
     if [ -z "$GISBASE" ] ; then
         echo "You must be in GRASS GIS to run this program." 1>&2
    diff --git a/temporal/t.connect/Makefile b/temporal/t.connect/Makefile
    index 575d639d4a2..bdd51ef3b7c 100644
    --- a/temporal/t.connect/Makefile
    +++ b/temporal/t.connect/Makefile
    @@ -8,4 +8,3 @@ PGM = t.connect
     include $(MODULE_TOPDIR)/include/Make/Module.make
     
     default: cmd
    -
    diff --git a/temporal/t.copy/t.copy.html b/temporal/t.copy/t.copy.html
    index d6852541f15..bca0b3714b0 100644
    --- a/temporal/t.copy/t.copy.html
    +++ b/temporal/t.copy/t.copy.html
    @@ -43,4 +43,7 @@ 

    AUTHOR

    Last changed: $Date$ --> +<<<<<<< HEAD +======= +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) diff --git a/temporal/t.info/testsuite/test.t.info.sh b/temporal/t.info/testsuite/test.t.info.sh index 987462c3412..609e4bfe427 100755 --- a/temporal/t.info/testsuite/test.t.info.sh +++ b/temporal/t.info/testsuite/test.t.info.sh @@ -82,4 +82,3 @@ t.remove type=strds input=precip_abs1,precip_abs2 t.unregister type=raster_3d maps=prec_1,prec_2 t.remove type=str3ds input=precip_abs1,precip_abs2 - diff --git a/temporal/t.list/t.list.html b/temporal/t.list/t.list.html index 0a617cb967a..7d88ecb8fdd 100644 --- a/temporal/t.list/t.list.html +++ b/temporal/t.list/t.list.html @@ -32,7 +32,7 @@

    EXAMPLES

    tempmean_monthly@climate_2000_2012
    -Obtain the list of space time raster datasets in a specific mapset (Note +Obtain the list of space time raster datasets in a specific mapset (Note that the target mapset must be in the user's search path):
    @@ -49,8 +49,8 @@ 

    EXAMPLES

    tempmean@climate_2000_2012
    -The where option can also be used to list the stds with a -certain pattern in their name, i.e. as the pattern option in where
    option can also be used to list the stds with a +certain pattern in their name, i.e. as the pattern option in g.list.
    @@ -62,9 +62,9 @@ 

    EXAMPLES

    precipitation@climate_1970_2012
    -The user can also obtain the list of time stamped raster maps. These maps -might be registered in strds or not. The output of the following command -can vary according to the accessible mapsets specified through +The user can also obtain the list of time stamped raster maps. These maps +might be registered in strds or not. The output of the following command +can vary according to the accessible mapsets specified through g.mapsets.
    diff --git a/temporal/t.merge/t.merge.html b/temporal/t.merge/t.merge.html
    index ced8d05bc29..b694d1a3203 100644
    --- a/temporal/t.merge/t.merge.html
    +++ b/temporal/t.merge/t.merge.html
    @@ -1,16 +1,16 @@
     

    DESCRIPTION

    -This module is designed to register the maps of several input space -time datasets in a single output dataset. The datasets to merge can be -either space time raster, 3D raster or vector datasets and must have +This module is designed to register the maps of several input space +time datasets in a single output dataset. The datasets to merge can be +either space time raster, 3D raster or vector datasets and must have the same temporal type (absolute or relative).

    -Existing space time datasets located in the current mapset can be -specified as output as well. The maps from the input space time +Existing space time datasets located in the current mapset can be +specified as output as well. The maps from the input space time datasets will be added to the output.

    -Maps from the input space time datasets will be registered only once in -the output space time dataset, hence the same maps can be registered in +Maps from the input space time datasets will be registered only once in +the output space time dataset, hence the same maps can be registered in different input space time datasets.

    NOTES

    @@ -21,8 +21,8 @@

    NOTES

    EXAMPLES

    -In this example we will create two space time raster datasets and -register two unique maps in each of it. Then we merge the two space +In this example we will create two space time raster datasets and +register two unique maps in each of it. Then we merge the two space time raster datasets together.
    @@ -80,15 +80,15 @@ 

    EXAMPLES

    | Description: | Test dataset with daily precipitation | Command history: - | # 2014-11-23 15:26:57 + | # 2014-11-23 15:26:57 | t.create type="strds" temporaltype="absolute" | output="precipitation_daily_1" title="Daily precipitation" | description="Test dataset with daily precipitation" - | # 2014-11-23 15:26:57 + | # 2014-11-23 15:26:57 | t.register -i type="rast" | input="precipitation_daily_1" maps="map1,map2" start="2012-08-20" | increment="1 days" - | + | +----------------------------------------------------------------------------+ @@ -146,15 +146,15 @@

    EXAMPLES

    | Description: | Test dataset with daily precipitation | Command history: - | # 2014-11-23 15:27:20 + | # 2014-11-23 15:27:20 | t.create type="strds" temporaltype="absolute" | output="precipitation_daily_2" title="Daily precipitation" | description="Test dataset with daily precipitation" - | # 2014-11-23 15:27:20 + | # 2014-11-23 15:27:20 | t.register -i type="rast" | input="precipitation_daily_2" maps="map3,map4" start="2012-08-22" | increment="1 days" - | + | +----------------------------------------------------------------------------+ @@ -204,11 +204,11 @@

    EXAMPLES

    | Description: | Merged space time dataset | Command history: - | # 2014-11-23 15:27:44 + | # 2014-11-23 15:27:44 | t.merge | input="precipitation_daily_1,precipitation_daily_2" | output="precipitation_daily_3" - | + | +----------------------------------------------------------------------------+
    diff --git a/temporal/t.merge/testsuite/test.t.merge.sh b/temporal/t.merge/testsuite/test.t.merge.sh index b854fb92614..a223b54dc3e 100755 --- a/temporal/t.merge/testsuite/test.t.merge.sh +++ b/temporal/t.merge/testsuite/test.t.merge.sh @@ -1,8 +1,8 @@ #!/bin/sh -# Tests the merging of space time datasets +# Tests the merging of space time datasets # We need to set a specific region in the -# @preprocess step of this test. +# @preprocess step of this test. # The region setting should work for UTM and LL test locations g.region s=0 n=80 w=0 e=120 b=0 t=50 res=10 res3=10 -p3 @@ -22,7 +22,7 @@ t.register -i --o maps=prec_1,prec_2,prec_3,prec_4,prec_5,prec_6 \ # in several space time datasets t.create --o type=strds temporaltype=absolute output=precip_abs1 \ title="Test" descr="This is the 1 test strds" semantictype=sum -t.register --o input=precip_abs1 maps=prec_1,prec_2,prec_3 +t.register --o input=precip_abs1 maps=prec_1,prec_2,prec_3 t.create --o type=strds temporaltype=absolute output=precip_abs2 \ title="Test" descr="This is the 2 test strds" semantictype=sum diff --git a/temporal/t.rast.accdetect/t.rast.accdetect.html b/temporal/t.rast.accdetect/t.rast.accdetect.html index 373aee6d759..19cc597bd4b 100644 --- a/temporal/t.rast.accdetect/t.rast.accdetect.html +++ b/temporal/t.rast.accdetect/t.rast.accdetect.html @@ -1,63 +1,63 @@

    DESCRIPTION

    -t.rast.accdetect is designed to detect accumulation pattern in +t.rast.accdetect is designed to detect accumulation pattern in temporally accumulated space time raster datasets created by t.rast.accumulate. -This module's input is a space time raster dataset resulting from +This module's input is a space time raster dataset resulting from a t.rast.accumulate run.

    -The start time and the end time of the pattern detection -process must be set, eg. start="2000-03-01" end="2011-01-01". -The start and end time do not need to be the same as for -the accumulation run that produced the input space time raster dataset. -In addition a cycle, eg. "8 months", can be specified, that -defines after which time interval the accumulation pattern detection -process restarts. The offset option specifies the time that -should be skipped between two cycles, eg. "4 months". The cycle -and offset options must be exactly the same that were used in the -accumulation process that generated the input space time raster dataset, -otherwise the accumulation pattern detection will produce wrong +The start time and the end time of the pattern detection +process must be set, eg. start="2000-03-01" end="2011-01-01". +The start and end time do not need to be the same as for +the accumulation run that produced the input space time raster dataset. +In addition a cycle, eg. "8 months", can be specified, that +defines after which time interval the accumulation pattern detection +process restarts. The offset option specifies the time that +should be skipped between two cycles, eg. "4 months". The cycle +and offset options must be exactly the same that were used in the +accumulation process that generated the input space time raster dataset, +otherwise the accumulation pattern detection will produce wrong results.

    -The minimum and maximum values for the pattern detection -process can be set either by using space time raster datasets or -by using fixed values for all raster cells and time steps. +The minimum and maximum values for the pattern detection +process can be set either by using space time raster datasets or +by using fixed values for all raster cells and time steps.

    -Using space time raster datasets allows specifying minimum and maximum -values for each raster cell and each time step. For example, we want to -detect the germination (minimum value) and harvesting (maximum value) -dates for different crops in Germany using the growing-degree-day (GDD) -method for several years. Different crops may grow in different raster -cells and change with time because of crop rotation. Hence we need to -specify different GDD germination/harvesting (minimum/maximum) values +Using space time raster datasets allows specifying minimum and maximum +values for each raster cell and each time step. For example, we want to +detect the germination (minimum value) and harvesting (maximum value) +dates for different crops in Germany using the growing-degree-day (GDD) +method for several years. Different crops may grow in different raster +cells and change with time because of crop rotation. Hence we need to +specify different GDD germination/harvesting (minimum/maximum) values for different raster cells and different years.

    -The raster maps that specify the minimum and maximum values of the -actual granule will be detected using the following temporal relations: -equals, during, overlaps, overlapped and contains. First, all maps with -time stamps equal to the current granule of the input STRDS will be -detected, the first minimum map and the first maximum map that are -found will be used as range definitions. If no equal maps are found, then -maps with a temporal during relation will be detected, then maps -that temporally overlap the actual granules and finally, maps that -have a temporal contain relation will be detected. If no maps are -found or minimum/maximum STRDS are not set, then the range option +The raster maps that specify the minimum and maximum values of the +actual granule will be detected using the following temporal relations: +equals, during, overlaps, overlapped and contains. First, all maps with +time stamps equal to the current granule of the input STRDS will be +detected, the first minimum map and the first maximum map that are +found will be used as range definitions. If no equal maps are found, then +maps with a temporal during relation will be detected, then maps +that temporally overlap the actual granules and finally, maps that +have a temporal contain relation will be detected. If no maps are +found or minimum/maximum STRDS are not set, then the range option is used, eg. range=480,730.

    The base name of of the generated maps must always be set.

    -This module produces two output space time raster datasets: occurrence -and indicator. The occurrence output STRDS stores the time in -days from the beginning of a given cycle for each raster cell and time -step that has a value within the minimum and maximum definition. These -values can be used to compute the duration of the recognized accumulation -pattern. -The indicator output STRDS uses three integer values to mark -raster cells as beginning, intermediate state or end of an accumulation -pattern. By default, the module uses 1 to indicate the start, 2 for -the intermediate state and 3 to mark the end of the accumulation pattern -in a cycle. These default values can be changed using the staend +This module produces two output space time raster datasets: occurrence +and indicator. The occurrence output STRDS stores the time in +days from the beginning of a given cycle for each raster cell and time +step that has a value within the minimum and maximum definition. These +values can be used to compute the duration of the recognized accumulation +pattern. +The indicator output STRDS uses three integer values to mark +raster cells as beginning, intermediate state or end of an accumulation +pattern. By default, the module uses 1 to indicate the start, 2 for +the intermediate state and 3 to mark the end of the accumulation pattern +in a cycle. These default values can be changed using the staend option.

    EXAMPLE

    diff --git a/temporal/t.rast.accumulate/t.rast.accumulate.html b/temporal/t.rast.accumulate/t.rast.accumulate.html index 60cfd51158b..00e436a5269 100644 --- a/temporal/t.rast.accumulate/t.rast.accumulate.html +++ b/temporal/t.rast.accumulate/t.rast.accumulate.html @@ -1,62 +1,62 @@

    DESCRIPTION

    -t.rast.accumulate is designed to perform temporal accumulations +t.rast.accumulate is designed to perform temporal accumulations of space time raster datasets. -This module expects a space time raster dataset as input that will be -sampled by a given granularity. All maps that have the start -time during the actual granule will be accumulated with the predecessor +This module expects a space time raster dataset as input that will be +sampled by a given granularity. All maps that have the start +time during the actual granule will be accumulated with the predecessor granule accumulation result using the raster module -r.series.accumulate. The default +r.series.accumulate. The default granularity is 1 day, but any temporal granularity can be set.

    -The start time and the end time of the accumulation -process must be set, eg. start="2000-03-01" end="2011-01-01". In -addition, a cycle, eg. cycle="8 months", can be specified, -that defines after which interval of time the accumulation process -restarts. The offset option specifies the time that should be +The start time and the end time of the accumulation +process must be set, eg. start="2000-03-01" end="2011-01-01". In +addition, a cycle, eg. cycle="8 months", can be specified, +that defines after which interval of time the accumulation process +restarts. The offset option specifies the time that should be skipped between two cycles, eg. offset="4 months".

    -The lower and upper limits of the accumulation -process can be set, either by using space time raster datasets or by -using fixed values for all raster cells and time steps. The raster -maps that specify the lower and upper limits of the actual granule -will be detected using the following temporal relations: equals, -during, overlaps, overlapped and contains. First, all maps with time -stamps equal to the current granule will be detected, the first lower -map and the first upper map found will be used as limit definitions. -If no equal maps are found, then maps with a temporal during relation -are detected, then maps that temporally overlap the actual granules, -until maps that have a temporal contain relation are detected. If no -maps are found or lower/upper STRDS are not defined, then the +The lower and upper limits of the accumulation +process can be set, either by using space time raster datasets or by +using fixed values for all raster cells and time steps. The raster +maps that specify the lower and upper limits of the actual granule +will be detected using the following temporal relations: equals, +during, overlaps, overlapped and contains. First, all maps with time +stamps equal to the current granule will be detected, the first lower +map and the first upper map found will be used as limit definitions. +If no equal maps are found, then maps with a temporal during relation +are detected, then maps that temporally overlap the actual granules, +until maps that have a temporal contain relation are detected. If no +maps are found or lower/upper STRDS are not defined, then the limits option is used, eg. limits=10,30.

    -The upper limit is only used in the Biologically +The upper limit is only used in the Biologically Effective Degree Days calculation.

    -The options shift, scale and method are passed to -r.series.accumulate. +The options shift, scale and method are passed to +r.series.accumulate. Please refer to the manual page of r.series.accumulate for detailed option description.

    -The output is a new space time raster dataset with the provided -start time, end time and granularity containing the accumulated raster -maps. The base name of the generated maps must always be set. -The output space time raster dataset can then be analyzed using -t.rast.accdetect to detect specific +The output is a new space time raster dataset with the provided +start time, end time and granularity containing the accumulated raster +maps. The base name of the generated maps must always be set. +The output space time raster dataset can then be analyzed using +t.rast.accdetect to detect specific accumulation patterns.

    EXAMPLE

    -This is an example how to accumulate the daily mean temperature of -Europe from 1990 to 2000 using the growing-degree-day method to detect -grass hopper reproduction cycles that are critical to agriculture. +This is an example how to accumulate the daily mean temperature of +Europe from 1990 to 2000 using the growing-degree-day method to detect +grass hopper reproduction cycles that are critical to agriculture.
     # Get the temperature data
    @@ -88,10 +88,10 @@ 

    EXAMPLE

    # # available here: http://extension.unh.edu/agric/gddays/docs/growch.pdf -# Now we compute the Biologically Effective Degree Days +# Now we compute the Biologically Effective Degree Days # from 1990 - 2000 for each year (12 month cycle) with # 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. +# 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" \ @@ -255,7 +255,7 @@

    EXAMPLE

    ############################################################################# # Now we use g.gui.animation to visualize the yearly occurrence, the duration and the monthly occurrence -# Yearly occurrence of all reproduction cycles +# Yearly occurrence of all reproduction cycles g.gui.animation strds=leafhopper_all_cycles_1990_2000_yearly_clean # Yearly duration of reproduction cycle 1 @@ -277,7 +277,11 @@

    REFERENCES

    • Jones, G.V., Duff, A.A., Hall, A., Myers, J.W., 2010. +<<<<<<< HEAD Spatial Analysis of Climate in Winegrape Growing Regions in the +======= + Spatial Analysis of Climate in Winegrape Growing Regions in the +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) Western United States. Am. J. Enol. Vitic. 61, 313-326.
    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 1dfa7ba3f89..d7efc4a5bf0 100644 --- a/temporal/t.rast.aggregate.ds/t.rast.aggregate.ds.html +++ b/temporal/t.rast.aggregate.ds/t.rast.aggregate.ds.html @@ -1,48 +1,48 @@

    DESCRIPTION

    t.rast.aggregate.ds works like -t.rast.aggregate but instead of -defining a fixed granularity for temporal aggregation the time -intervals of all maps registered in a second space time dataset (can be -STRDS, STR3DS or STVDS) are used to aggregate the maps of the input +t.rast.aggregate but instead of +defining a fixed granularity for temporal aggregation the time +intervals of all maps registered in a second space time dataset (can be +STRDS, STR3DS or STVDS) are used to aggregate the maps of the input space time raster dataset.

    NOTES

    The sampling method must be specified from the sampler dataset point of view. -It defines the temporal relationships between intervals of the sampling +It defines the temporal relationships between intervals of the sampling dataset and the input space time raster dataset.

    EXAMPLES

    Precipitation aggregation

    -In this example we create 7 raster maps that will be registered in a -single space time raster dataset named precipitation_daily -using a daily temporal granularity. The names of the raster maps are +In this example we create 7 raster maps that will be registered in a +single space time raster dataset named precipitation_daily +using a daily temporal granularity. The names of the raster maps are stored in a text file that is used for raster map registration.

    -A space time vector dataset is created out of two vector maps with -different temporal resolution. The maps are created using v.random. The -first map has a granule of 3 days the second a granule of 4 days. +A space time vector dataset is created out of two vector maps with +different temporal resolution. The maps are created using v.random. The +first map has a granule of 3 days the second a granule of 4 days.

    -The space time raster dataset precipitation_daily with daily -temporal granularity will be aggregated using the space time vector -dataset resulting in the output space time raster dataset -precipitation_agg. The aggregation method is set to -sum to accumulate the precipitation values of all intervals in -the space time vector dataset. The sampling option assures that only -raster maps that are temporally during the time intervals of the space -time vector dataset are considered for computation. Hence the option is set +The space time raster dataset precipitation_daily with daily +temporal granularity will be aggregated using the space time vector +dataset resulting in the output space time raster dataset +precipitation_agg. The aggregation method is set to +sum to accumulate the precipitation values of all intervals in +the space time vector dataset. The sampling option assures that only +raster maps that are temporally during the time intervals of the space +time vector dataset are considered for computation. Hence the option is set to contains (time stamped vector map layers temporally contain -the raster map layers): +the raster map layers):

     MAPS="map_1 map_2 map_3 map_4 map_5 map_6 map_7"
     
     for map in ${MAPS} ; do
    -    r.mapcalc expression="${map} = 1" 
    -    echo ${map} >> map_list.txt 
    +    r.mapcalc expression="${map} = 1"
    +    echo ${map} >> map_list.txt
     done
     
     t.create type=strds temporaltype=absolute \
    @@ -96,14 +96,14 @@ 

    Precipitation aggregation

    | Description: | Test dataset with daily precipitation | Command history: - | # 2014-11-23 16:48:17 + | # 2014-11-23 16:48:17 | t.create type="strds" temporaltype="absolute" | output="precipitation_daily" title="Daily precipitation" | description="Test dataset with daily precipitation" - | # 2014-11-23 16:48:18 + | # 2014-11-23 16:48:18 | t.register -i type="rast" input="precipitation_daily" | file="map_list.txt" start="2012-08-20" increment="1 days" - | + | +----------------------------------------------------------------------------+ @@ -166,16 +166,16 @@

    Precipitation aggregation

    | Description: | Points for aggregation | Command history: - | # 2014-11-23 16:48:49 + | # 2014-11-23 16:48:49 | t.create type="stvds" temporaltype="absolute" | output="points" title="Points" description="Points for aggregation" - | # 2014-11-23 16:48:49 + | # 2014-11-23 16:48:49 | t.register -i type="vect" input="points" | map="points_1" start="2012-08-20" increment="3 days" - | # 2014-11-23 16:48:50 + | # 2014-11-23 16:48:50 | t.register -i type="vect" input="points" | map="points_2" start="2012-08-23" increment="4 days" - | + | +----------------------------------------------------------------------------+ t.rast.aggregate.ds input=precipitation_daily \ @@ -187,7 +187,7 @@

    Precipitation aggregation

    t.support input=precipitation_agg \ title="Aggregated precipitation" \ description="Aggregated precipitation dataset" - + t.info type=strds input=precipitation_agg +-------------------- Space Time Raster Dataset -----------------------------+ @@ -231,15 +231,15 @@

    Precipitation aggregation

    | Description: | Aggregated precipitation dataset | Command history: - | # 2014-11-23 16:53:23 + | # 2014-11-23 16:53:23 | t.rast.aggregate.ds input="precipitation_daily" | output="precipitation_agg" sample="points" type="stvds" basename="prec_agg" | method="sum" sampling="contains" - | # 2014-11-23 16:53:28 + | # 2014-11-23 16:53:28 | t.support input="precipitation_agg" | title="Aggregated precipitation" | description="Aggregated precipitation dataset" - | + | +----------------------------------------------------------------------------+
    @@ -253,7 +253,7 @@

    MODIS satellite sensor daily data aggregation to 8 days

    # create maps every 8 days as seed maps for year in `seq 2000 2001` ; do - for doy in `seq -w 1 8 365` ; do + for doy in `seq -w 1 8 365` ; do r.mapcalc -s expression="8day_${year}_${doy} = rand(0.0,40.0)" done done @@ -265,18 +265,18 @@

    MODIS satellite sensor daily data aggregation to 8 days

    g.list type=raster pattern=8day_20??_* > names_list for NAME in `cat names_list` ; do - + # Parse YEAR=`echo $NAME | cut -d'_' -f2` DOY=`echo $NAME | cut -d'_' -f3` - + # convert YYYY_DOY to YYYY-MM-DD DOY=`echo "$DOY" | sed 's/^0*//'` doy_end=0 if [ $DOY -le "353" ] ; then doy_end=$(( $DOY + 8 )) - elif [ $DOY -eq "361" ] ; then + elif [ $DOY -eq "361" ] ; then if [ $[$YEAR % 4] -eq 0 ] && [ $[$YEAR % 100] -ne 0 ] || [ $[$YEAR % 400] -eq 0 ] ; then doy_end=$(( $DOY + 6 )) else @@ -286,13 +286,13 @@

    MODIS satellite sensor daily data aggregation to 8 days

    DATE_START=`date -d "${YEAR}-01-01 +$(( ${DOY} - 1 ))days" +%Y-%m-%d` 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 - + done -# check the list created. +# check the list created. cat list_map_start_end_time.txt 8day_2000_001|2000-01-01|2000-01-09 8day_2000_009|2000-01-09|2000-01-17 @@ -306,15 +306,15 @@

    MODIS satellite sensor daily data aggregation to 8 days

    8day_2001_353|2001-12-19|2001-12-27 8day_2001_361|2001-12-27|2002-01-01 -# all maps except for the last map in each year represent 8-days -# intervals. But the aggregation starts all over again every +# all maps except for the last map in each year represent 8-days +# intervals. But the aggregation starts all over again every # January 1st. # create 8-day MODIS-like strds t.create type=strds temporaltype=absolute \ output=8day_ts title="8 day time series" \ description="STRDS with MODIS like 8 day aggregation" - + # register maps t.register type=raster input=8day_ts \ file=list_map_start_end_time.txt diff --git a/temporal/t.rast.aggregate.ds/testsuite/test.t.rast.aggregate.ds.sh b/temporal/t.rast.aggregate.ds/testsuite/test.t.rast.aggregate.ds.sh index 14b69a69946..d5dfdc62b34 100755 --- a/temporal/t.rast.aggregate.ds/testsuite/test.t.rast.aggregate.ds.sh +++ b/temporal/t.rast.aggregate.ds/testsuite/test.t.rast.aggregate.ds.sh @@ -4,7 +4,7 @@ export GRASS_OVERWRITE=1 # We need to set a specific region in the -# @preprocess step of this test. +# @preprocess step of this test. # The region setting should work for UTM and LL test locations g.region s=0 n=80 w=0 e=120 b=0 t=50 res=10 res3=10 -p3 @@ -19,7 +19,7 @@ v.random -z output=soil_1 n=20 zmin=0 zmax=100 column=height v.random -z output=soil_2 n=20 zmin=0 zmax=100 column=height v.random -z output=soil_3 n=20 zmin=0 zmax=100 column=height -n1=`g.tempfile pid=1 -d` +n1=`g.tempfile pid=1 -d` cat > "${n1}" << EOF soil_1|2001-01-01|2001-04-01 diff --git a/temporal/t.rast.algebra/t.rast.algebra.html b/temporal/t.rast.algebra/t.rast.algebra.html index e482a7a262a..2f657c9809a 100644 --- a/temporal/t.rast.algebra/t.rast.algebra.html +++ b/temporal/t.rast.algebra/t.rast.algebra.html @@ -3,13 +3,17 @@

    DESCRIPTION

    t.rast.algebra performs temporal and spatial map algebra operations on space time raster datasets (STRDS) using the temporal raster algebra.

    +<<<<<<< HEAD The module expects an expression as input parameter in the +======= +The module expects an expression as input parameter in the +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) following form:

    "result = expression"

    The statement structure is similar to that of r.mapcalc. -In this statement, result represents the name of the space time +In this statement, result represents the name of the space time raster dataset (STRDS) that will contain the result of the calculation that is given as expression on the right side of the equality sign. These expressions can be any valid or nested combination of temporal @@ -28,7 +32,7 @@

    DESCRIPTION


    In addition the algebra provides a subset of the spatial operations from r.mapcalc. All these operations can be -assigned to STRDS or to the map lists resulting of operations between +assigned to STRDS or to the map lists resulting of operations between STRDS.

    By default, only temporal topological relations among space time datasets @@ -108,7 +112,7 @@

    TEMPORAL RELATIONS

    TEMPORAL OPERATORS

    The temporal algebra defines temporal operators that can be combined with -other operators to perform spatio-temporal operations. +other operators to perform spatio-temporal operations. The temporal operators process the time instances and intervals of two temporally related maps and calculate the resulting temporal extent in five possible different ways. @@ -150,7 +154,7 @@

    TEMPORAL SELECTION

    regarding to other STRDS, the temporal topology selection operator can be used. This operator consists of the temporal selection operator, the topological relations that must be separated by the logical OR -operator | and, the temporal extent operator. All three parts +operator | and, the temporal extent operator. All three parts are separated by comma and surrounded by curly brackets as follows: {"temporal selection operator", "topological relations", "temporal operator"}.

    @@ -202,10 +206,10 @@

    TEMPORAL SELECTION

    CONDITIONAL STATEMENTS

    Selection operations can be evaluated within conditional statements as -showed below. Note that A and B can be either space time datasets or +showed below. Note that A and B can be either space time datasets or expressions. The temporal relationship between the conditions and the conclusions can be defined at the beginning of the if statement (third -and fourth examples below). The relationship between then and else +and fourth examples below). The relationship between then and else conclusion must be always equal.
    @@ -221,7 +225,7 @@ 

    CONDITIONAL STATEMENTS

    space time datasets. Specific values of temporal variables are compared by logical operators and evaluated for each map of the STRDS.
    -Important: The conditions are evaluated from left to right. +Important: The conditions are evaluated from left to right.

    Logical operators

    @@ -276,14 +280,14 @@

    Temporal functions

    Comparison operator

    As mentioned above, the conditions are comparison expressions that are -used to evaluate space time datasets. Specific values of temporal +used to evaluate space time datasets. Specific values of temporal variables are compared by logical operators and evaluated for each map of the STDS and (optionally) related maps. For complex relations, the comparison operator can be used to combine -conditions. +conditions.
    The structure is similar to the select operator with the addition of an -aggregation operator: +aggregation operator: {"comparison operator", "topological relations", aggregation operator, "temporal operator"}
    This aggregation operator (| or &) defines the behaviour when a map is @@ -296,7 +300,7 @@

    Comparison operator

    comparison operator -> aggregation operator:
    -|| -> | and && -> & 
    +|| -> | and && -> &
     
    Examples: @@ -310,7 +314,7 @@

    Comparison operator

    Hash operator

    -Additionally, the number of maps in intervals can be computed and used in +Additionally, the number of maps in intervals can be computed and used in conditional statements with the hash (#) operator.
    @@ -326,7 +330,7 @@ 

    Hash operator

    C = if({equal}, A {#, contains} B > 2, A {:, contains} B)
    -This expression selects all maps from A that temporally contain at least 2 +This expression selects all maps from A that temporally contain at least 2 maps from B and stores them in space time dataset C. The leading equal statement in the if condition specifies the temporal relation between the if and then part of the if expression. This is very important, so we @@ -357,12 +361,12 @@

    Single map with temporal extent

    C = A {:, during} tmap(event)
    -This statement selects all maps from space time data set A that are during +This statement selects all maps from space time data set A that are during the temporal extent of the single map 'event'

    Spatial raster operators

    -The module supports the following raster operations: +The module supports the following raster operations:
     Symbol  description     precedence
    @@ -387,7 +391,7 @@ 

    Spatial raster operators

    isnull(x) check if x = NULL isntnull(x) check if x is not NULL null set null value -exist(x) Check if x is in the current mapset +exist(x) Check if x is in the current mapset

    Single raster map

    @@ -417,15 +421,15 @@

    Combinations of temporal, raster and select operators

    {"spatial or select operator", "list of temporal relations", "temporal operator"}
    -For multiple topological relations or several related maps the spatio-temporal +For multiple topological relations or several related maps the spatio-temporal operators feature implicit aggregation. -The algebra evaluates the stated STDS by their temporal topologies and apply +The algebra evaluates the stated STDS by their temporal topologies and apply the given spatio-temporal operators in a aggregated form. -If we have two STDS A and B, B has three maps: b1, b2, b3 that are all during -the temporal extent of the single map a1 of A, then the following arithmetic -calculations would implicitly aggregate all maps of B into one result map for +If we have two STDS A and B, B has three maps: b1, b2, b3 that are all during +the temporal extent of the single map a1 of A, then the following arithmetic +calculations would implicitly aggregate all maps of B into one result map for a1 of A:
    @@ -442,13 +446,13 @@ 

    Combinations of temporal, raster and select operators

    Temporal neighbourhood modifier

    -The neighbourhood modifier of r.mapcalc is extended for the temporal -raster algebra with the temporal dimension. The format is strds[t,r,c], -where t is the temporal offset, r is the row offset and c is the column +The neighbourhood modifier of r.mapcalc is extended for the temporal +raster algebra with the temporal dimension. The format is strds[t,r,c], +where t is the temporal offset, r is the row offset and c is the column offset.
    -strds[2] 
    +strds[2]
     
    refers to the second successor of the current map.

    @@ -461,7 +465,7 @@

    Temporal neighbourhood modifier

    -strds[1,-2,-1] 
    +strds[1,-2,-1]
     
    refers to the cell two rows above and one column to the left of the current cell of the first successor map. @@ -482,7 +486,7 @@

    Computation of NDVI

    g.region raster=sentinel2_B04_10m -p t.rast.list S2_b4 t.rast.list S2_b8 -t.rast.algebra basename=ndvi expression="ndvi = float(S2_b8 - S2_b4) / ( S2_b8 + S2_b4 )" +t.rast.algebra basename=ndvi expression="ndvi = float(S2_b8 - S2_b4) / ( S2_b8 + S2_b4 )" t.rast.colors input=ndvi color=ndvi
    diff --git a/temporal/t.rast.colors/test.t.rast.colors.sh b/temporal/t.rast.colors/test.t.rast.colors.sh index 4cecb70d71b..03f5a6b97c9 100755 --- a/temporal/t.rast.colors/test.t.rast.colors.sh +++ b/temporal/t.rast.colors/test.t.rast.colors.sh @@ -1,7 +1,7 @@ #!/bin/sh # Simple r.series wrapper # We need to set a specific region in the -# @preprocess step of this test. +# @preprocess step of this test. # The region setting should work for UTM and LL test locations g.region s=0 n=80 w=0 e=120 b=0 t=50 res=10 res3=10 -p3 diff --git a/temporal/t.rast.contour/t.rast.contour.html b/temporal/t.rast.contour/t.rast.contour.html index 157955b189b..27c93e3d3f6 100644 --- a/temporal/t.rast.contour/t.rast.contour.html +++ b/temporal/t.rast.contour/t.rast.contour.html @@ -1,29 +1,29 @@

    DESCRIPTION

    -t.rast.contour is designed to produce a space time vector dataset of +t.rast.contour is designed to produce a space time vector dataset of specified contours from a space time raster dataset. This module works as a front-end to r.contour and therefore supports all parameter of this module. Hence, all raster map layers in a space time raster dataset -are successively passed to r.contour that computes -the contour lines. -Please refer to the r.contour documentation +are successively passed to r.contour that computes +the contour lines. +Please refer to the r.contour documentation for a detailed description. The new generated vector contour map -layers will be registered in the output space time vector dataset, using +layers will be registered in the output space time vector dataset, using the same time stamps as their raster map layer origins.

    This module supports the parallel processing of r.contour -module instances. The number of parallel processes -can be set with the nprocs option. +module instances. The number of parallel processes +can be set with the nprocs option. However, this will only work in conjunction with the -t -flag, that avoids the creation of attribute tables. +flag, that avoids the creation of attribute tables. The parallel creation of attribute tables is not supported.

    The where option allows selecting subsets of the input space time raster dataset.

    -The flag -n can be used to force the registration of empty -vector map layers. Empty vector maps may occur in case that empty +The flag -n can be used to force the registration of empty +vector map layers. Empty vector maps may occur in case that empty raster map layers should be converted into vector map layers, or in case the chosen steps or contour levels are not present in the raster map layers. diff --git a/temporal/t.rast.export/test.t.rast.export.sh b/temporal/t.rast.export/test.t.rast.export.sh index 66c44b80896..8dfb2aba002 100755 --- a/temporal/t.rast.export/test.t.rast.export.sh +++ b/temporal/t.rast.export/test.t.rast.export.sh @@ -2,7 +2,7 @@ # Export of space time raster datasets # We need to set a specific region in the -# @preprocess step of this test. +# @preprocess step of this test. # The region setting should work for UTM and LL test locations g.region s=0 n=80 w=0 e=120 b=0 t=50 res=10 res3=10 -p3 @@ -14,7 +14,7 @@ r.mapcalc --o expr="prec_4 = rand(0, 255)" -s r.mapcalc --o expr="prec_5 = rand(-1, 60000)" -s r.mapcalc --o expr="prec_6 = rand(0, 256)" -s -n1=`g.tempfile pid=1 -d` +n1=`g.tempfile pid=1 -d` cat > "${n1}" << EOF prec_1|2001-01-01|2001-07-01 diff --git a/temporal/t.rast.gapfill/t.rast.gapfill.html b/temporal/t.rast.gapfill/t.rast.gapfill.html index 233d6d32302..4d345f9d791 100644 --- a/temporal/t.rast.gapfill/t.rast.gapfill.html +++ b/temporal/t.rast.gapfill/t.rast.gapfill.html @@ -12,8 +12,8 @@

    NOTES

    perform the interpolation for each gap independently. Hence several interpolation processes can be run in parallel.

    -Each gap is re-sampled by the space time raster dataset granularity. -Therefore several time stamped raster map layers will be interpolated +Each gap is re-sampled by the space time raster dataset granularity. +Therefore several time stamped raster map layers will be interpolated if the gap is larger than the STRDS granularity.

    EXAMPLES

    @@ -26,9 +26,9 @@

    EXAMPLES

    two maps (values 3.666 and 4.333) for the second gap after interpolation.
    -r.mapcalc expression="map1 = 1" 
    -r.mapcalc expression="map2 = 3" 
    -r.mapcalc expression="map3 = 5" 
    +r.mapcalc expression="map1 = 1"
    +r.mapcalc expression="map2 = 3"
    +r.mapcalc expression="map3 = 5"
     
     t.register type=raster maps=map1 start=2012-08-20 end=2012-08-21
     t.register type=raster maps=map2 start=2012-08-22 end=2012-08-23
    @@ -38,7 +38,7 @@ 

    EXAMPLES

    output=precipitation_daily \ title="Daily precipitation" \ description="Test dataset with daily precipitation" - + t.register type=raster input=precipitation_daily maps=map1,map2,map3 # the output shows three missing maps diff --git a/temporal/t.rast.import/t.rast.import.html b/temporal/t.rast.import/t.rast.import.html index abdd043b722..cfce427ec83 100644 --- a/temporal/t.rast.import/t.rast.import.html +++ b/temporal/t.rast.import/t.rast.import.html @@ -15,7 +15,7 @@

    NOTES

    EXAMPLE

    -The North Carolina space time dataset contains a data package called +The North Carolina space time dataset contains a data package called lst_daily.tar.bzip2 with daily data from MODIS LST. Import it by running: diff --git a/temporal/t.rast.import/test.t.rast.import.relative.sh b/temporal/t.rast.import/test.t.rast.import.relative.sh index 89213f765cd..6e8462c2d70 100755 --- a/temporal/t.rast.import/test.t.rast.import.relative.sh +++ b/temporal/t.rast.import/test.t.rast.import.relative.sh @@ -19,7 +19,7 @@ r.mapcalc expr="prec_4 = rand(0, 510)" -s r.mapcalc expr="prec_5 = rand(0, 300)" -s r.mapcalc expr="prec_6 = rand(0, 650)" -s -n1=`g.tempfile pid=1 -d` +n1=`g.tempfile pid=1 -d` cat > "${n1}" << EOF prec_1|1|2 @@ -36,7 +36,7 @@ t.create type=strds temporaltype=relative output=precip_rel \ title="A test with input files" descr="A test with input files" # The first @test -t.register type=raster input=precip_rel file="${n1}" unit="years" +t.register type=raster input=precip_rel file="${n1}" unit="years" t.rast.export input=precip_rel output=strds_export.tar.bz2 compression=bzip2 format=GTiff directory=test t.rast.export input=precip_rel output=strds_export.tar.gz compression=gzip format=GTiff directory=test @@ -80,6 +80,6 @@ rm -rf test rm strds_export.tar.bz2 rm strds_export.tar.gz rm strds_export.tar -rm strds_export_pack.tar +rm strds_export_pack.tar rm strds_export_pack.tar.gz rm strds_export_pack.tar.bz2 diff --git a/temporal/t.rast.import/test.t.rast.import.sh b/temporal/t.rast.import/test.t.rast.import.sh index 5b09e535c5b..a16a88a9f64 100755 --- a/temporal/t.rast.import/test.t.rast.import.sh +++ b/temporal/t.rast.import/test.t.rast.import.sh @@ -19,7 +19,7 @@ r.mapcalc expr="prec_4 = rand(0, 510)" -s r.mapcalc expr="prec_5 = rand(0, 300)" -s r.mapcalc expr="prec_6 = rand(0, 650)" -s -n1=`g.tempfile pid=1 -d` +n1=`g.tempfile pid=1 -d` cat > "${n1}" << EOF prec_1|2001-01-01|2001-07-01 @@ -79,6 +79,6 @@ rm -rf test rm strds_export.tar.bz2 rm strds_export.tar.gz rm strds_export.tar -rm strds_export_pack.tar +rm strds_export_pack.tar rm strds_export_pack.tar.gz rm strds_export_pack.tar.bz2 diff --git a/temporal/t.rast.import/test.t.rast.import_locations.sh b/temporal/t.rast.import/test.t.rast.import_locations.sh index 1e11da558fd..9ae660e0579 100755 --- a/temporal/t.rast.import/test.t.rast.import_locations.sh +++ b/temporal/t.rast.import/test.t.rast.import_locations.sh @@ -17,7 +17,7 @@ r.mapcalc --o expr="prec_4 = rand(0, 510)" -s r.mapcalc --o expr="prec_5 = rand(0, 300)" -s r.mapcalc --o expr="prec_6 = rand(0, 650)" -s -n1=`g.tempfile pid=1 -d` +n1=`g.tempfile pid=1 -d` cat > "${n1}" << EOF prec_1|2001-01-01|2001-07-01 diff --git a/temporal/t.rast.list/testsuite/test_t_rast_list.sh b/temporal/t.rast.list/testsuite/test_t_rast_list.sh index f2268abe218..a166a6f90be 100755 --- a/temporal/t.rast.list/testsuite/test_t_rast_list.sh +++ b/temporal/t.rast.list/testsuite/test_t_rast_list.sh @@ -17,7 +17,11 @@ r.mapcalc expr="prec_4 = rand(0, 510)" -s r.mapcalc expr="prec_5 = rand(0, 300)" -s r.mapcalc expr="prec_6 = rand(0, 650)" -s +<<<<<<< HEAD n1=`g.tempfile pid=1 -d` +======= +n1=`g.tempfile pid=1 -d` +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) n2=`g.tempfile pid=2 -d` n3=`g.tempfile pid=3 -d` n4=`g.tempfile pid=4 -d` diff --git a/temporal/t.rast.mapcalc/example.sh b/temporal/t.rast.mapcalc/example.sh index 04e14e170e0..59c8083b03c 100755 --- a/temporal/t.rast.mapcalc/example.sh +++ b/temporal/t.rast.mapcalc/example.sh @@ -35,4 +35,3 @@ t.rast.mapcalc --o --v input=A,B output=C base=c method=equal \ t.info type=strds input=C t.rast.list -h input=C columns=name,start_time,min,max - diff --git a/temporal/t.rast.mapcalc/t.rast.mapcalc.html b/temporal/t.rast.mapcalc/t.rast.mapcalc.html index a0f2314a466..c26f2e9c95a 100644 --- a/temporal/t.rast.mapcalc/t.rast.mapcalc.html +++ b/temporal/t.rast.mapcalc/t.rast.mapcalc.html @@ -127,7 +127,7 @@

    NOTES

    EXAMPLES

    -The following command creates a new space time raster dataset +The following command creates a new space time raster dataset january_under_0 that will set to null all cells with temperature above zero in the January maps while keeping all the rest as in the original time series. This will change the maximum values diff --git a/temporal/t.rast.mapcalc/test.t.rast.mapcalc.operators.sh b/temporal/t.rast.mapcalc/test.t.rast.mapcalc.operators.sh index 8a1a8a9122e..646e36e5599 100755 --- a/temporal/t.rast.mapcalc/test.t.rast.mapcalc.operators.sh +++ b/temporal/t.rast.mapcalc/test.t.rast.mapcalc.operators.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Test for t.rast.mapcalc +# Test for t.rast.mapcalc export GRASS_OVERWRITE=1 # We need to set a specific region in the # @preprocess step of this test. We generate diff --git a/temporal/t.rast.mapcalc/test.t.rast.mapcalc.sh b/temporal/t.rast.mapcalc/test.t.rast.mapcalc.sh index c756b8b653f..d4da52720e9 100755 --- a/temporal/t.rast.mapcalc/test.t.rast.mapcalc.sh +++ b/temporal/t.rast.mapcalc/test.t.rast.mapcalc.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Test for t.rast.mapcalc +# Test for t.rast.mapcalc export GRASS_OVERWRITE=1 diff --git a/temporal/t.rast.neighbors/test.t.rast.neighbors.sh b/temporal/t.rast.neighbors/test.t.rast.neighbors.sh index 1abd523ca43..d95863a77d0 100755 --- a/temporal/t.rast.neighbors/test.t.rast.neighbors.sh +++ b/temporal/t.rast.neighbors/test.t.rast.neighbors.sh @@ -1,7 +1,7 @@ #!/bin/sh # Space time raster dataset neighborhood operations # We need to set a specific region in the -# @preprocess step of this test. +# @preprocess step of this test. # The region setting should work for UTM and LL test locations g.region s=0 n=80 w=0 e=120 b=0 t=50 res=10 -p diff --git a/temporal/t.rast.out.vtk/t.rast.out.vtk.html b/temporal/t.rast.out.vtk/t.rast.out.vtk.html index a1de890d0e2..c0a000cf3e5 100644 --- a/temporal/t.rast.out.vtk/t.rast.out.vtk.html +++ b/temporal/t.rast.out.vtk/t.rast.out.vtk.html @@ -1,16 +1,16 @@

    DESCRIPTION

    -This module exports all maps registered in a space time raster datasets -as VTK legacy files using a numerical numbering scheme. The VTK files -can be visualized with any VTK based visualize. Our preferred tool is +This module exports all maps registered in a space time raster datasets +as VTK legacy files using a numerical numbering scheme. The VTK files +can be visualized with any VTK based visualize. Our preferred tool is ParaView. The VTK legacy files are created using r.out.vtk.

    EXAMPLE

    -In this simple example we create several raster maps with random values -and one elevation map. The random value raster maps are registered in a -space time raster dataset. All maps of this space time raster dataset -are exported using t.rast.out.vtk into the directory +In this simple example we create several raster maps with random values +and one elevation map. The random value raster maps are registered in a +space time raster dataset. All maps of this space time raster dataset +are exported using t.rast.out.vtk into the directory /tmp/export. diff --git a/temporal/t.rast.out.vtk/test.t.rast.out.vtk.sh b/temporal/t.rast.out.vtk/test.t.rast.out.vtk.sh index 5f3c7798ae8..63d130edc1b 100755 --- a/temporal/t.rast.out.vtk/test.t.rast.out.vtk.sh +++ b/temporal/t.rast.out.vtk/test.t.rast.out.vtk.sh @@ -16,7 +16,7 @@ r.mapcalc --o expr="prec_5 = rand(0, 300)" -s r.mapcalc --o expr="prec_6 = rand(0, 650)" -s r.mapcalc --o expr="elevation = sin(row() + col()) * 10" -n1=`g.tempfile pid=1 -d` +n1=`g.tempfile pid=1 -d` cat > "${n1}" << EOF prec_1|2001-01-01|2001-02-01 @@ -34,18 +34,18 @@ t.create --o type=strds temporaltype=absolute output=precip_abs3 title="A test w # The first @test mkdir /tmp/test1 t.register -i --o type=raster input=precip_abs1 file="${n1}" -t.rast.out.vtk input=precip_abs1 expdir=/tmp/test1 -ls -al /tmp/test1 +t.rast.out.vtk input=precip_abs1 expdir=/tmp/test1 +ls -al /tmp/test1 mkdir /tmp/test2 -t.register -i --o type=raster input=precip_abs2 file="${n1}" +t.register -i --o type=raster input=precip_abs2 file="${n1}" t.rast.out.vtk input=precip_abs2 expdir=/tmp/test2 elevation=elevation -ls -al /tmp/test2 +ls -al /tmp/test2 mkdir /tmp/test3 t.register -i --o type=raster input=precip_abs3 file="${n1}" t.rast.out.vtk -g input=precip_abs3 expdir=/tmp/test3 elevation=elevation -ls -al /tmp/test3 +ls -al /tmp/test3 rm -rf /tmp/test1 rm -rf /tmp/test2 diff --git a/temporal/t.rast.series/t.rast.series.html b/temporal/t.rast.series/t.rast.series.html index 9a2389e81e4..e2c170570cb 100644 --- a/temporal/t.rast.series/t.rast.series.html +++ b/temporal/t.rast.series/t.rast.series.html @@ -33,6 +33,27 @@

    Performance

    needs to be compiled with OpenMP enabled. +

    NOTES

    + +To avoid problems with too many open files, by default, the maximum +number of open files is set to 1000. If the number of input raster +files exceeds this number, the -z flag will be invoked. Because this +will slow down processing, the user can set a higher limit with the +file_limit parameter. Note that file_limit limit should not exceed the +user-specific limit on open files set by your operating system. See the +Wiki +for more information. + +

    Performance

    +To enable parallel processing, the user can specify the number of threads to be +used with the nprocs parameter (default 1). The memory parameter +(default 300 MB) can also be provided to determine the size of the buffer in MB for +computation. Both parameters are passed to r.series. +To take advantage of the parallelization, GRASS GIS +needs to be compiled with OpenMP enabled. + +

    EXAMPLES

    Estimate the average temperature for the whole time series

    diff --git a/temporal/t.rast.series/test.t.rast.series.sh b/temporal/t.rast.series/test.t.rast.series.sh index 2d4dd353517..7c9e6894b8f 100755 --- a/temporal/t.rast.series/test.t.rast.series.sh +++ b/temporal/t.rast.series/test.t.rast.series.sh @@ -1,7 +1,7 @@ #!/bin/sh # Simple r.series wrapper # We need to set a specific region in the -# @preprocess step of this test. +# @preprocess step of this test. # The region setting should work for UTM and LL test locations g.region s=0 n=80 w=0 e=120 b=0 t=50 res=10 res3=10 -p3 diff --git a/temporal/t.rast.series/test_t.sereis_bug_3223.sh b/temporal/t.rast.series/test_t.sereis_bug_3223.sh index 069e2263fad..87320a69cd0 100755 --- a/temporal/t.rast.series/test_t.sereis_bug_3223.sh +++ b/temporal/t.rast.series/test_t.sereis_bug_3223.sh @@ -25,4 +25,3 @@ r.info precip_abs_average t.rast.series input=precip_abs output=precip_abs_average_3months where="start_time >= '2001-04-01'" r.info precip_abs_average_3months - 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 b3c0253aee6..1b4e617b70b 100644 --- a/temporal/t.rast.to.rast3/t.rast.to.rast3.html +++ b/temporal/t.rast.to.rast3/t.rast.to.rast3.html @@ -27,10 +27,10 @@

    NOTES

    voxel cube layers!

    Management of open file limits

    -The maximum number of raster maps that can be processed is given by the +The maximum number of raster maps that can be processed is given by the per-user limit of the operating system. For example, both the the hard and soft -limit for users is typically 1024. The soft limit can be changed with e.g. -ulimit -n 4096 (UNIX-based operating systems) but not higher than the +limit for users is typically 1024. The soft limit can be changed with e.g. +ulimit -n 4096 (UNIX-based operating systems) but not higher than the hard limit. If the latter is too low, you can as superuser add an entry in
    @@ -39,7 +39,7 @@ 

    Management of open file limits

    your_username hard nofile 4096
    -This will raise the hard limit to 4096 files. Also have a look at the overall +This will raise the hard limit to 4096 files. Also have a look at the overall limit of the operating system
     cat /proc/sys/fs/file-max
    diff --git a/temporal/t.rast.to.vect/t.rast.to.vect.html b/temporal/t.rast.to.vect/t.rast.to.vect.html
    index f36b658aa29..3904ee29d17 100644
    --- a/temporal/t.rast.to.vect/t.rast.to.vect.html
    +++ b/temporal/t.rast.to.vect/t.rast.to.vect.html
    @@ -5,25 +5,25 @@ 

    DESCRIPTION

    r.to.vect and therefore supports all parameter of this module. Hence, all raster map layers in a space time raster dataset are passed to r.to.vect that converts them into -vector map layers (using point,line or area as conversion criteria). -Please refer to the r.to.vect documentation +vector map layers (using point,line or area as conversion criteria). +Please refer to the r.to.vect documentation for a detailed description of the raster to vector conversion options. The new generated vector map -layers will be registered in the output space time vector dataset, using +layers will be registered in the output space time vector dataset, using the same time stamps as their raster map layer origins.

    This module supports the parallel processing of r.to.vect -module instances. The number of parallel processes -can be set with the nprocs option. +module instances. The number of parallel processes +can be set with the nprocs option. However, this will only work in conjunction with the -t -flag, that avoids the creation of attribute tables. +flag, that avoids the creation of attribute tables. The parallel creation of attribute tables is not supported.

    The where option allows selecting subsets of the input space time raster dataset.

    -The flag -n can be used to force the registration of empty -vector map layers. Empty vector maps may occur in case that empty +The flag -n can be used to force the registration of empty +vector map layers. Empty vector maps may occur in case that empty raster map layers should be converted into vector map layers.

    SEE ALSO

    diff --git a/temporal/t.rast.what/t.rast.what.html b/temporal/t.rast.what/t.rast.what.html index be122c38f07..a6c112ebbb0 100644 --- a/temporal/t.rast.what/t.rast.what.html +++ b/temporal/t.rast.what/t.rast.what.html @@ -11,7 +11,7 @@

    DESCRIPTION

  • row - Row order, one vector sample point value per row
  • col - Column order, create a column for each vector sample point of a single time step/raster layer
  • -
  • timerow - Time order, create a column for each time step, +
  • timerow - Time order, create a column for each time step, this order is the original r.what output, except that the column names are the timestamps
  • @@ -26,10 +26,10 @@

    DESCRIPTION

    Coordinates can be provided as vector map using the points option or as comma separated coordinate list with the coordinates option.

    -An output file can be specified using the output option. -Stdout will be used if no output is specified or if the +An output file can be specified using the output option. +Stdout will be used if no output is specified or if the output option is set to "-". - +

    EXAMPLES

    Data preparation

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

    Example 2

    1990-03-01 00:00:00|1990-04-01 00:00:00|3|3|3 1990-04-01 00:00:00|1990-05-01 00:00:00|4|4|4 -# Timerow layout, one time series per row +# Timerow layout, one time series per row # using the where statement to select a subset of the STRDS # and stdout as output t.rast.what strds=A points=points \ diff --git a/temporal/t.rast3d.algebra/t.rast3d.algebra.html b/temporal/t.rast3d.algebra/t.rast3d.algebra.html index 6c919b337e0..35680946f8d 100644 --- a/temporal/t.rast3d.algebra/t.rast3d.algebra.html +++ b/temporal/t.rast3d.algebra/t.rast3d.algebra.html @@ -1,7 +1,7 @@

    DESCRIPTION

    -t.rast3d.algebra performs temporal and spatial map algebra -operations on space time 3D raster datasets (STR3DS) by using the +t.rast3d.algebra performs temporal and spatial map algebra +operations on space time 3D raster datasets (STR3DS) by using the temporal 3D raster algebra.

    NOTES

    diff --git a/temporal/t.rast3d.extract/t.rast3d.extract.html b/temporal/t.rast3d.extract/t.rast3d.extract.html index 6c42a1eff2c..2c8a5b3d548 100644 --- a/temporal/t.rast3d.extract/t.rast3d.extract.html +++ b/temporal/t.rast3d.extract/t.rast3d.extract.html @@ -1,8 +1,8 @@

    DESCRIPTION

    -t.rast3d.extract is used to extract a subset of a space -time 3D raster dataset and to store that subset in a different space time -3D raster dataset. It has exactly the same functionality as +t.rast3d.extract is used to extract a subset of a space +time 3D raster dataset and to store that subset in a different space time +3D raster dataset. It has exactly the same functionality as t.rast.extract. The only difference is the that this module works on STR3DS and 3D raster maps.

    diff --git a/temporal/t.rast3d.list/testsuite/test.t.rast3d.list.sh b/temporal/t.rast3d.list/testsuite/test.t.rast3d.list.sh index a315a9b8a7c..b729992a82a 100755 --- a/temporal/t.rast3d.list/testsuite/test.t.rast3d.list.sh +++ b/temporal/t.rast3d.list/testsuite/test.t.rast3d.list.sh @@ -2,7 +2,7 @@ # This is a test to list 3draster maps of a space time raster3d dataset # We need to set a specific region in the -# @preprocess step of this test. +# @preprocess step of this test. # The region setting should work for UTM and LL test locations g.region s=0 n=80 w=0 e=120 b=0 t=50 res=10 res3=10 -p3 @@ -16,7 +16,7 @@ r3.mapcalc expr="vol_4 = rand(0, 510)" -s r3.mapcalc expr="vol_5 = rand(0, 300)" -s r3.mapcalc expr="vol_6 = rand(0, 650)" -s -n1=`g.tempfile pid=1 -d` +n1=`g.tempfile pid=1 -d` n2=`g.tempfile pid=2 -d` n3=`g.tempfile pid=3 -d` n4=`g.tempfile pid=4 -d` diff --git a/temporal/t.rast3d.mapcalc/t.rast3d.mapcalc.html b/temporal/t.rast3d.mapcalc/t.rast3d.mapcalc.html index 3944d7a6e8b..c9d2c1e2489 100644 --- a/temporal/t.rast3d.mapcalc/t.rast3d.mapcalc.html +++ b/temporal/t.rast3d.mapcalc/t.rast3d.mapcalc.html @@ -1,11 +1,11 @@

    DESCRIPTION

    -t.rast3d.mapcalc provides exact the same functionality as -t.rast.mapcalc, but for space time 3D raster datasets. Please -refer to t.rast.mapcalc for +t.rast3d.mapcalc provides exact the same functionality as +t.rast.mapcalc, but for space time 3D raster datasets. Please +refer to t.rast.mapcalc for documentation.

    -It is a simple wrapper for r3.mapcalc +It is a simple wrapper for r3.mapcalc enhanced with temporal functions.

    SEE ALSO

    diff --git a/temporal/t.rast3d.mapcalc/test.t.rast3d.mapcalc.sh b/temporal/t.rast3d.mapcalc/test.t.rast3d.mapcalc.sh index e0d21c9dc0c..9d2a66bd5fe 100755 --- a/temporal/t.rast3d.mapcalc/test.t.rast3d.mapcalc.sh +++ b/temporal/t.rast3d.mapcalc/test.t.rast3d.mapcalc.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Test for t.rast3d.mapcalc +# Test for t.rast3d.mapcalc # We need to set a specific region in the # @preprocess step of this test. diff --git a/temporal/t.rast3d.univar/t.rast3d.univar.html b/temporal/t.rast3d.univar/t.rast3d.univar.html index 42a59843f85..d9ccd43e154 100644 --- a/temporal/t.rast3d.univar/t.rast3d.univar.html +++ b/temporal/t.rast3d.univar/t.rast3d.univar.html @@ -1,7 +1,7 @@

    DESCRIPTION

    t.rast3d.univar provides the same functionality as -t.rast.univar, the only difference is the +t.rast.univar, the only difference is the 3D raster map layer metadata. Please refer to the manual page of t.rast.univar for documentation and examples. diff --git a/temporal/t.register/t.register.html b/temporal/t.register/t.register.html index 055e5488737..eaefa45d9c4 100644 --- a/temporal/t.register/t.register.html +++ b/temporal/t.register/t.register.html @@ -34,8 +34,8 @@

    DESCRIPTION

    list of maps at once. Maps can be registered in several space time datasets using the same timestamp. For the case of vector time series, the user can also register a single vector map connected to different -layers representing time steps using the map:layer notation (See -example below). +layers representing time steps using the map:layer notation (See +example below).

    The increment option and the -i flag (to create time intervals) work only in conjunction with the start option. diff --git a/temporal/t.register/test.t.register.raster.file.sh b/temporal/t.register/test.t.register.raster.file.sh index 6becec5d6f2..ce23b19f1fe 100755 --- a/temporal/t.register/test.t.register.raster.file.sh +++ b/temporal/t.register/test.t.register.raster.file.sh @@ -63,7 +63,7 @@ t.register --o -i input=precip_abs8 file="${n1}" start="2001-01-01" increment="1 t.info type=strds input=precip_abs8 t.rast.list input=precip_abs8 # File 1 -t.register --o input=precip_abs8 file="${n1}" start="2001-01-01" +t.register --o input=precip_abs8 file="${n1}" start="2001-01-01" t.info type=strds input=precip_abs8 t.rast.list input=precip_abs8 # File 2 diff --git a/temporal/t.register/test.t.register.vector.file.layer.sh b/temporal/t.register/test.t.register.vector.file.layer.sh index 4764a2b8caa..7f97dc6d3bd 100755 --- a/temporal/t.register/test.t.register.vector.file.layer.sh +++ b/temporal/t.register/test.t.register.vector.file.layer.sh @@ -9,10 +9,10 @@ # The region setting should work for UTM and LL test locations g.region s=0 n=80 w=0 e=120 b=0 t=50 res=10 res3=10 -p3 -v.random --o -z output=lidar_abs_1 n=5 zmin=0 zmax=100 +v.random --o -z output=lidar_abs_1 n=5 zmin=0 zmax=100 n1=`g.tempfile pid=4 -d` # Only map names and layer -n2=`g.tempfile pid=5 -d` # Map names, layer and start time +n2=`g.tempfile pid=5 -d` # Map names, layer and start time n3=`g.tempfile pid=6 -d` # Map names, layer, start time and increment # The vector map v.random --o -z seed=1 output=lidar_abs_orig n=100 zmin=0 zmax=100 column=sand @@ -60,13 +60,13 @@ t.list type=vector columns=id,name,start_time,end_time where="name='lidar_abs_1' t.register --o --v type=vector input=lidar_abs_ds1 file="${n1}" start="2001-01-01" t.list type=vector columns=id,name,start_time,end_time where="name='lidar_abs_1'" # File 2 -t.register --o --v type=vector input=lidar_abs_ds1 file="${n2}" +t.register --o --v type=vector input=lidar_abs_ds1 file="${n2}" t.list type=vector columns=id,name,start_time,end_time where="name='lidar_abs_1'" # File 2 t.register --o --v type=vector input=lidar_abs_ds1 -i file="${n2}" start=file increment="1 months" t.list type=vector columns=id,name,start_time,end_time where="name='lidar_abs_1'" # File 3 -t.register --o --v type=vector input=lidar_abs_ds1 file="${n3}" start=file +t.register --o --v type=vector input=lidar_abs_ds1 file="${n3}" start=file t.list type=vector columns=id,name,start_time,end_time where="name='lidar_abs_1'" t.unregister --v type=vector maps=lidar_abs_1:1,lidar_abs_1:2,lidar_abs_1:3,lidar_abs_1:4,lidar_abs_1:5,lidar_abs_1:6 diff --git a/temporal/t.register/test.t.register.vector.sh b/temporal/t.register/test.t.register.vector.sh index a9640fdc11c..989e999dc08 100755 --- a/temporal/t.register/test.t.register.vector.sh +++ b/temporal/t.register/test.t.register.vector.sh @@ -64,5 +64,3 @@ t.unregister --v type=vector maps=lidar_abs_1,lidar_abs_2,lidar_abs_3 t.remove --v type=stvds input=lidar_abs_ds1,lidar_abs_ds2,lidar_abs_ds3,lidar_abs_ds4,lidar_abs_ds5,lidar_abs_ds6,lidar_abs_ds7 t.unregister --v type=vector maps=lidar_abs_4,lidar_abs_5,lidar_abs_6 g.remove -f type=vector name=lidar_abs_1,lidar_abs_2,lidar_abs_3,lidar_abs_4,lidar_abs_5,lidar_abs_6 - - diff --git a/temporal/t.rename/test.t.rename.sh b/temporal/t.rename/test.t.rename.sh index 1f94aa9963b..4bce9725255 100755 --- a/temporal/t.rename/test.t.rename.sh +++ b/temporal/t.rename/test.t.rename.sh @@ -1,8 +1,8 @@ #!/bin/sh -# Tests the rename module of space time datasets +# Tests the rename module of space time datasets # We need to set a specific region in the -# @preprocess step of this test. +# @preprocess step of this test. # The region setting should work for UTM and LL test locations g.region s=0 n=80 w=0 e=120 b=0 t=50 res=10 res3=10 -p3 diff --git a/temporal/t.sample/t.sample.html b/temporal/t.sample/t.sample.html index 0d3e32dbc87..58cac201de9 100644 --- a/temporal/t.sample/t.sample.html +++ b/temporal/t.sample/t.sample.html @@ -1,38 +1,38 @@

    DESCRIPTION

    -The purpose of this module is to compute and to show spatio-temporal -relations between space time datasets of different type. Several input -space time datasets are sampled by a sample space time dataset -using temporal topological relations. The types of the input space time -datasets and the type of the sample space time dataset can be +The purpose of this module is to compute and to show spatio-temporal +relations between space time datasets of different type. Several input +space time datasets are sampled by a sample space time dataset +using temporal topological relations. The types of the input space time +datasets and the type of the sample space time dataset can be different.

    -This module is useful to analyze temporal relationships between space -time datasets using temporal topology. The flag -s enables a -spatio-temporal topology, so that only spatio-temporal related map +This module is useful to analyze temporal relationships between space +time datasets using temporal topology. The flag -s enables a +spatio-temporal topology, so that only spatio-temporal related map layers of space time datasets are considered in the analysis.

    NOTES

    -The temporal relation start means that the start time of an -input map layer is temporally located in an interval of a sample map +The temporal relation start means that the start time of an +input map layer is temporally located in an interval of a sample map layer.

    -The textual output at the command line shows the names of the maps, -start and end time as well as the interval length in days and +The textual output at the command line shows the names of the maps, +start and end time as well as the interval length in days and the temporal distance from begin in days.

    The default separator is the pipe symbol.

    -Temporal gaps, if present, in the input and sampling space time -datasets will be used in the sampling process. Gaps have no map name, +Temporal gaps, if present, in the input and sampling space time +datasets will be used in the sampling process. Gaps have no map name, instead None is printed.

    EXAMPLE

    -In the examples below we create a space time raster dataset A -and a space time vector dataset P that have different temporal -layouts and number of map layers. The space time vector dataset +In the examples below we create a space time raster dataset A +and a space time vector dataset P that have different temporal +layouts and number of map layers. The space time vector dataset contains a gap, that will be used in the sampling process.

    We use t.sample to inspect the topological relations between the @@ -54,7 +54,7 @@

    EXAMPLE

    v.random -z output=pnts1 n=20 zmin=0 zmax=100 column=height v.random -z output=pnts2 n=20 zmin=0 zmax=100 column=height -n1=`g.tempfile pid=1 -d` +n1=`g.tempfile pid=1 -d` n2=`g.tempfile pid=2 -d` cat > "${n1}" << EOF diff --git a/temporal/t.sample/testsuite/test.t.sample.sh b/temporal/t.sample/testsuite/test.t.sample.sh index 9ff2e0107ac..d9f32988a28 100755 --- a/temporal/t.sample/testsuite/test.t.sample.sh +++ b/temporal/t.sample/testsuite/test.t.sample.sh @@ -2,7 +2,7 @@ # This is a test to sample a space time raster dataset with a space time vector dataset # We need to set a specific region in the -# @preprocess step of this test. +# @preprocess step of this test. # The region setting should work for UTM and LL test locations g.region s=0 n=80 w=0 e=120 b=0 t=50 res=10 res3=10 -p3 @@ -26,7 +26,7 @@ v.random -z output=pnts6 npoints=20 zmin=0 zmax=100 column=height v.random -z output=pnts7 npoints=20 zmin=0 zmax=100 column=height v.random -z output=pnts8 npoints=20 zmin=0 zmax=100 column=height -n1=`g.tempfile pid=1 -d` +n1=`g.tempfile pid=1 -d` n2=`g.tempfile pid=2 -d` n3=`g.tempfile pid=3 -d` @@ -69,7 +69,7 @@ t.register type=vector input=pnts_abs1 file="${n3}" t.vect.list pnts_abs1 # The @test -t.sample method=start input=precip_abs0,precip_abs0,precip_abs0,precip_abs0 samtype=stvds sample=pnts_abs0 +t.sample method=start input=precip_abs0,precip_abs0,precip_abs0,precip_abs0 samtype=stvds sample=pnts_abs0 t.sample method=equal input=precip_abs0,precip_abs0,precip_abs0,precip_abs0 samtype=stvds sample=pnts_abs0 t.sample method=contain input=precip_abs0,precip_abs0,precip_abs0 samtype=stvds sample=pnts_abs0 -c t.sample method=overlap input=precip_abs0,precip_abs0 samtype=stvds sample=pnts_abs0 -cs @@ -82,7 +82,7 @@ t.sample input=precip_abs0 samtype=strds sample=precip_abs0 -cs # Test with temporal point data t.register type=raster input=precip_abs0 file="${n1}" start="2001-01-01" increment="1 months" -t.rast.list precip_abs0 +t.rast.list precip_abs0 t.sample input=precip_abs0 samtype=stvds sample=pnts_abs0 -cs t.sample input=precip_abs0 samtype=stvds sample=pnts_abs1 -cs diff --git a/temporal/t.select/t.select.html b/temporal/t.select/t.select.html index 38a24e4f2c6..0d64ce40a6e 100644 --- a/temporal/t.select/t.select.html +++ b/temporal/t.select/t.select.html @@ -1,6 +1,6 @@

    DESCRIPTION

    -t.select performs selection of maps that are registered in +t.select performs selection of maps that are registered in space time datasets using temporal algebra.

    PROGRAM USE

    @@ -10,23 +10,23 @@

    PROGRAM USE

    The statement structure is similar to r.mapcalc, see r.mapcalc. -Where result represents the name of a space time dataset -(STDS)that will contain the result of the calculation that is given as +Where result represents the name of a space time dataset +(STDS)that will contain the result of the calculation that is given as expression on the right side of the equality sign. -These expression can be any valid or nested combination of temporal -operations and functions that are provided by the temporal algebra. +These expression can be any valid or nested combination of temporal +operations and functions that are provided by the temporal algebra.
    -The temporal algebra works with space time datasets of any type -(STRDS, STR3DS and STVDS). The algebra provides methods for map -selection from STDS based on their temporal relations. It is also -possible to temporally shift maps, to create temporal buffer and to -snap time instances to create a valid temporal topology. Furthermore -expressions can be nested and evaluated in conditional statements (if, -else statements). Within if-statements the algebra provides temporal -variables like start time, end time, day of year, time differences or -number of maps per time interval to build up conditions. These -operations can be assigned to space time datasets or to the results of +The temporal algebra works with space time datasets of any type +(STRDS, STR3DS and STVDS). The algebra provides methods for map +selection from STDS based on their temporal relations. It is also +possible to temporally shift maps, to create temporal buffer and to +snap time instances to create a valid temporal topology. Furthermore +expressions can be nested and evaluated in conditional statements (if, +else statements). Within if-statements the algebra provides temporal +variables like start time, end time, day of year, time differences or +number of maps per time interval to build up conditions. These +operations can be assigned to space time datasets or to the results of operations between space time datasets.

    The type of the input space time datasets must be defined with the input @@ -101,9 +101,9 @@

    TEMPORAL RELATIONS

    TEMPORAL OPERATORS

    -The temporal algebra defines temporal operators that can be combined with other -operators to perform spatio-temporal operations. -The temporal operators process the time instances and intervals of two temporal +The temporal algebra defines temporal operators that can be combined with other +operators to perform spatio-temporal operations. +The temporal operators process the time instances and intervals of two temporal related maps and calculate the result temporal extent by five different possibilities.
     LEFT REFERENCE     l       Use the time stamp of the left space time dataset
    @@ -139,8 +139,8 @@ 

    TEMPORAL SELECTION

    and store it in space time dataset (STDS) C.

    To select parts of a STDS by different topological relations to other STDS, the temporal topology selection operator can be used. The operator consists of -the temporal selection operator, the topological relations, that must be separated -by the logical OR operator | and the temporal extent operator. +the temporal selection operator, the topological relations, that must be separated +by the logical OR operator | and the temporal extent operator. All three parts are separated by comma and surrounded by curly braces:

     {"temporal selection operator", "topological relations", "temporal operator"}
    @@ -168,7 +168,7 @@ 

    TEMPORAL SELECTION

    C = A {:, during,r} B
    -Select all parts of A that are during B and use the temporal extents from B for +Select all parts of A that are during B and use the temporal extents from B for C.

    @@ -195,9 +195,9 @@

    CONDITIONAL STATEMENTS

    Selection operations can be evaluated within conditional statements.
    -Note A and B can either be space time datasets or expressions. The temporal 
    -relationship between the conditions and the conclusions can be defined at the 
    -beginning of the if statement. The relationship between then and else conclusion 
    +Note A and B can either be space time datasets or expressions. The temporal
    +relationship between the conditions and the conclusions can be defined at the
    +beginning of the if statement. The relationship between then and else conclusion
     must be always equal.
     
     if statement                           decision option                        temporal relations
    @@ -210,7 +210,7 @@ 

    CONDITIONAL STATEMENTS

    The conditions are comparison expressions that are used to evaluate space time datasets. Specific values of temporal variables are compared by logical operators and evaluated for each map of the STDS.
    -Important: The conditions are evaluated from left to right. +Important: The conditions are evaluated from left to right.

    Logical operators

    @@ -265,22 +265,22 @@ 

    Comparison operator

    The conditions are comparison expressions that are used to evaluate space time datasets. Specific values of temporal variables are -compared by logical operators and evaluated for each map of the STDS and +compared by logical operators and evaluated for each map of the STDS and the related maps. -For complex relations the comparison operator can be used to combine conditions: +For complex relations the comparison operator can be used to combine conditions:
    -The structure is similar to the select operator with the extension of an aggregation 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 -have any (|) condition that is true. The resulting boolean value is then compared -to the first condition by the comparison operator (|| or &&). +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 &&). As default the aggregation operator is related to the comparison operator:
    Comparison operator -> aggregation operator:
    -|| -> | and && -> & 
    +|| -> | and && -> &
     
    Examples:
    @@ -292,7 +292,7 @@ 

    Comparison operator

    Hash operator

    -Additionally the number of maps in intervals can be computed and used in +Additionally the number of maps in intervals can be computed and used in conditional statements with the hash (#) operator.
     A{#, contains}B
    @@ -305,10 +305,10 @@ 

    Hash operator

     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 -in the if condition specifies the temporal relation between the if and then part -of the if expression. This is very important, so we do not need to specify a +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 +in the if condition specifies the temporal relation between the if and then part +of the if expression. This is very important, so we do not need to specify a global time reference (a space time dataset) for temporal processing.

    Furthermore the temporal algebra allows temporal buffering, shifting diff --git a/temporal/t.shift/t.shift.html b/temporal/t.shift/t.shift.html index b07e053741f..b38b79a7551 100644 --- a/temporal/t.shift/t.shift.html +++ b/temporal/t.shift/t.shift.html @@ -1,18 +1,19 @@

    DESCRIPTION

    -t.shift is designed to temporally shift all registered maps in -a space time dataset with a user defined granularity. Raster, 3D raster +t.shift is designed to temporally shift all registered maps in +a space time dataset with a user defined granularity. Raster, 3D raster and vector space time datasets are supported.

    -The format of the absolute time granularity is "number unit". Number is -an integer, unit is the temporal unit that can be one of year(s), +The format of the absolute time granularity is "number unit". Number is +an integer, unit is the temporal unit that can be one of year(s), month(s), week(s), day(s), hour(s), minute(s) or second(s).

    -The granularity in case of relative time is an integer. The temporal +The granularity in case of relative time is an integer. The temporal unit is the unit of the space time dataset and can not be modified.

    NOTES

    +<<<<<<< HEAD Be careful when shifting space time datasets with absolute time. The temporal granularity may change if you shift a space time dataset with a unit that is different from the space time dataset granularity. Be @@ -20,16 +21,25 @@

    NOTES

    days per month. Shifting the date 20012-03-31 with a granularity of one month will result in 2012-04-31 which is incorrect. In this case an error will raise and the shifting will not performed for the whole +======= +Be careful when shifting space time datasets with absolute time. The +temporal granularity may change if you shift a space time dataset with +a unit that is different from the space time dataset granularity. Be +aware that the shifting with months and years may result in incorrect +days per month. Shifting the date 20012-03-31 with a granularity of one +month will result in 2012-04-31 which is incorrect. In this case an +error will raise and the shifting will not performed for the whole +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) dataset.

    -You can use the extraction module to shift only a subset of maps from a -space time dataset. Be aware that the shifting of maps affect all space +You can use the extraction module to shift only a subset of maps from a +space time dataset. Be aware that the shifting of maps affect all space time datasets in which they are registered.

    EXAMPLE

    -We create 6 raster maps and register them in a space time raster -dataset using an increment of one day. Then we shift the time intervals +We create 6 raster maps and register them in a space time raster +dataset using an increment of one day. Then we shift the time intervals with a granularity of 12 hours.
    @@ -92,15 +102,15 @@ 

    EXAMPLE

    | Description: | Test dataset with daily precipitation | Command history: - | # 2014-11-23 19:20:26 + | # 2014-11-23 19:20:26 | t.create type="strds" temporaltype="absolute" | output="precipitation_daily" title="Daily precipitation" | description="Test dataset with daily precipitation" - | # 2014-11-23 19:20:26 + | # 2014-11-23 19:20:26 | t.register -i type="rast" input="precipitation_daily" | maps="prec_1,prec_2,prec_3,prec_4,prec_5,prec_6" start="2012-01-01" | increment="1 day" - | + | +----------------------------------------------------------------------------+ t.rast.list input=precipitation_daily @@ -159,18 +169,18 @@

    EXAMPLE

    | Description: | Test dataset with daily precipitation | Command history: - | # 2014-11-23 19:20:26 + | # 2014-11-23 19:20:26 | t.create type="strds" temporaltype="absolute" | output="precipitation_daily" title="Daily precipitation" | description="Test dataset with daily precipitation" - | # 2014-11-23 19:20:26 + | # 2014-11-23 19:20:26 | t.register -i type="rast" input="precipitation_daily" | maps="prec_1,prec_2,prec_3,prec_4,prec_5,prec_6" start="2012-01-01" | increment="1 day" - | # 2014-11-23 19:21:08 + | # 2014-11-23 19:21:08 | t.shift type="strds" input="precipitation_daily" | granularity="12 hours" - | + | +----------------------------------------------------------------------------+ diff --git a/temporal/t.snap/test.t.snap.absolute.sh b/temporal/t.snap/test.t.snap.absolute.sh index 3d6ed9d3f5d..8b2ed3b21fb 100755 --- a/temporal/t.snap/test.t.snap.absolute.sh +++ b/temporal/t.snap/test.t.snap.absolute.sh @@ -1,7 +1,7 @@ #!/bin/sh # Space time raster dataset temporal snapping with absolute time # We need to set a specific region in the -# @preprocess step of this test. +# @preprocess step of this test. # The region setting should work for UTM and LL test locations g.region s=0 n=80 w=0 e=120 b=0 t=50 res=10 res3=10 -p3 @@ -13,7 +13,7 @@ r.mapcalc --o expr="prec_4 = rand(0, 510)" -s r.mapcalc --o expr="prec_5 = rand(0, 300)" -s r.mapcalc --o expr="prec_6 = rand(0, 650)" -s -n1=`g.tempfile pid=1 -d` +n1=`g.tempfile pid=1 -d` cat > "${n1}" << EOF prec_1|2001-01-01|2001-07-01 @@ -32,7 +32,7 @@ t.register --o type=raster input=precip_abs maps=prec_1,prec_2,prec_3,prec_4,pre t.info type=strds input=precip_abs t.rast.list input=precip_abs -t.snap --o input=precip_abs +t.snap --o input=precip_abs t.info type=strds input=precip_abs t.rast.list input=precip_abs @@ -44,7 +44,7 @@ t.register --o type=raster input=precip_abs file=${n1} t.rast.list input=precip_abs t.topology input=precip_abs -t.snap --o input=precip_abs +t.snap --o input=precip_abs t.rast.list input=precip_abs t.topology input=precip_abs diff --git a/temporal/t.snap/test.t.snap.relative.sh b/temporal/t.snap/test.t.snap.relative.sh index 776931df465..d489b699cc0 100755 --- a/temporal/t.snap/test.t.snap.relative.sh +++ b/temporal/t.snap/test.t.snap.relative.sh @@ -1,7 +1,7 @@ #!/bin/sh # Space time raster dataset temporal snapping with relative time # We need to set a specific region in the -# @preprocess step of this test. +# @preprocess step of this test. # The region setting should work for UTM and LL test locations g.region s=0 n=80 w=0 e=120 b=0 t=50 res=10 res3=10 -p3 @@ -22,7 +22,7 @@ t.info type=strds input=precip_rel t.rast.list input=precip_rel # The first @test -t.snap --o input=precip_rel +t.snap --o input=precip_rel t.info type=strds input=precip_rel t.rast.list input=precip_rel diff --git a/temporal/t.support/test.t.support.sh b/temporal/t.support/test.t.support.sh index ec2b852a0e7..a7ba3330f1e 100755 --- a/temporal/t.support/test.t.support.sh +++ b/temporal/t.support/test.t.support.sh @@ -1,8 +1,8 @@ #!/bin/sh -# Tests the support module of space time datasets +# Tests the support module of space time datasets # We need to set a specific region in the -# @preprocess step of this test. +# @preprocess step of this test. # The region setting should work for UTM and LL test locations g.region s=0 n=80 w=0 e=120 b=0 t=50 res=10 res3=10 -p3 diff --git a/temporal/t.topology/test.t.topology.abstime.sh b/temporal/t.topology/test.t.topology.abstime.sh index f96686fbe5f..a3fc0cfad8e 100755 --- a/temporal/t.topology/test.t.topology.abstime.sh +++ b/temporal/t.topology/test.t.topology.abstime.sh @@ -1,8 +1,8 @@ #!/bin/sh -# Tests the temporal topology module of space time datasets +# Tests the temporal topology module of space time datasets # We need to set a specific region in the -# @preprocess step of this test. +# @preprocess step of this test. # The region setting should work for UTM and LL test locations g.region s=0 n=80 w=0 e=120 b=0 t=50 res=10 res3=10 -p3 @@ -23,7 +23,7 @@ r.mapcalc --o expr="C = 3" g.region s=70 n=90 w=10 e=130 b=10 t=50 res=10 res3=10 -p3 # overlap B r.mapcalc --o expr="D = 3" -n1=`g.tempfile pid=1 -d` +n1=`g.tempfile pid=1 -d` n2=`g.tempfile pid=2 -d` n3=`g.tempfile pid=3 -d` n4=`g.tempfile pid=4 -d` diff --git a/temporal/t.topology/test.t.topology.reltime.sh b/temporal/t.topology/test.t.topology.reltime.sh index c4385795d79..847289c4b2f 100755 --- a/temporal/t.topology/test.t.topology.reltime.sh +++ b/temporal/t.topology/test.t.topology.reltime.sh @@ -1,8 +1,8 @@ #!/bin/sh -# Tests the temporal topology module of space time datasets +# Tests the temporal topology module of space time datasets # We need to set a specific region in the -# @preprocess step of this test. +# @preprocess step of this test. # The region setting should work for UTM and LL test locations g.region s=0 n=80 w=0 e=120 b=0 t=50 res=10 res3=10 -p3 @@ -14,7 +14,7 @@ r.mapcalc --o expr="prec_4 = rand(0, 510)" -s r.mapcalc --o expr="prec_5 = rand(0, 300)" -s r.mapcalc --o expr="prec_6 = rand(0, 650)" -s -n1=`g.tempfile pid=1 -d` +n1=`g.tempfile pid=1 -d` n2=`g.tempfile pid=2 -d` n3=`g.tempfile pid=3 -d` n4=`g.tempfile pid=4 -d` diff --git a/temporal/t.vect.algebra/t.vect.algebra.html b/temporal/t.vect.algebra/t.vect.algebra.html index 360ac573622..48931efa302 100644 --- a/temporal/t.vect.algebra/t.vect.algebra.html +++ b/temporal/t.vect.algebra/t.vect.algebra.html @@ -1,4 +1,4 @@ -

    DESCRIPTION

    +

    DESCRIPTION

    t.vect.algebra performs temporal and spatial overlay and buffer functions on space time vector datasets (STVDS) by using the @@ -18,30 +18,30 @@

    DESCRIPTION

    contain the result of the calculation that is given as expression on the right side of the equality sign. -These expression can be any valid or nested combination of temporal -operations and functions that are provided by the temporal vector +These expression can be any valid or nested combination of temporal +operations and functions that are provided by the temporal vector algebra.
    -The algebra provides methods for map selection from STDS based on their -temporal relations. It is also possible to temporally shift maps, to -create temporal buffer and to snap time instances to create a valid -temporal topology. Furthermore expressions can be nested and evaluated -in conditional statements (if, else statements). Within if-statements -the algebra provides temporal variables like start time, end time, day -of year, time differences or number of maps per time interval to build -up conditions. These operations can be assigned to space time datasets +The algebra provides methods for map selection from STDS based on their +temporal relations. It is also possible to temporally shift maps, to +create temporal buffer and to snap time instances to create a valid +temporal topology. Furthermore expressions can be nested and evaluated +in conditional statements (if, else statements). Within if-statements +the algebra provides temporal variables like start time, end time, day +of year, time differences or number of maps per time interval to build +up conditions. These operations can be assigned to space time datasets or to the results of operations between space time datasets. -

    As default, topological relationships between space time datasets -will be evaluated only temporal. Use the s flag to activate the -additionally spatial topology evaluation.

    The expression option +

    As default, topological relationships between space time datasets +will be evaluated only temporal. Use the s flag to activate the +additionally spatial topology evaluation.

    The expression option must be passed as quoted expression, for example:

     t.select expression="C = A : B"
     
    -Where C is the new space time raster dataset that will contain -maps from A that are selected by equal temporal relationships to +Where C is the new space time raster dataset that will contain +maps from A that are selected by equal temporal relationships to the existing dataset B in this case.

    TEMPORAL VECTOR ALGEBRA

    @@ -96,10 +96,10 @@

    TEMPORAL RELATIONS

    TEMPORAL OPERATORS

    -The temporal algebra defines temporal operators that can be combined -with other operators to perform spatio-temporal operations. The -temporal operators process the time instances and intervals of two -temporal related maps and calculate the result temporal extent by five +The temporal algebra defines temporal operators that can be combined +with other operators to perform spatio-temporal operations. The +temporal operators process the time instances and intervals of two +temporal related maps and calculate the result temporal extent by five different possibilities.
    @@ -123,12 +123,12 @@ 

    TEMPORAL SELECTION

    C = A : B
    -means: Select all parts of space time dataset A that are equal to B and +means: Select all parts of space time dataset A that are equal to B and store it in space time dataset C. The parts are time stamped maps. -

    -In addition the inverse selection operator !: is defined as -the complement of the selection operator, hence the following +

    +In addition the inverse selection operator !: is defined as +the complement of the selection operator, hence the following expression

    @@ -138,11 +138,11 @@ 

    TEMPORAL SELECTION

    means: select all parts of space time time dataset A that are not equal to B and store it in space time dataset (STDS) C.

    -To select parts of a STDS by different topological relations to other -STDS, the temporal topology selection operator can be used. The -operator consists of the temporal selection operator, the topological -relations, that must be separated by the logical OR operator | -and the temporal extent operator. All three parts are separated by +To select parts of a STDS by different topological relations to other +STDS, the temporal topology selection operator can be used. The +operator consists of the temporal selection operator, the topological +relations, that must be separated by the logical OR operator | +and the temporal extent operator. All three parts are separated by comma and surrounded by curly braces:

    @@ -200,9 +200,9 @@ 

    CONDITIONAL STATEMENTS

    Selection operations can be evaluated within conditional statements.
    -Note A and B can either be space time datasets or expressions. The temporal -relationship between the conditions and the conclusions can be defined at the -beginning of the if statement. The relationship between then and else conclusion +Note A and B can either be space time datasets or expressions. The temporal +relationship between the conditions and the conclusions can be defined at the +beginning of the if statement. The relationship between then and else conclusion must be always equal.
    @@ -231,7 +231,7 @@ 

    Logical operators

    Temporal functions

    -The following temporal function are evaluated only for the STDS that +The following temporal function are evaluated only for the STDS that must be given in parenthesis.
    @@ -268,9 +268,9 @@ 

    Comparison operator

    The conditions are comparison expressions that are used to evaluate space time datasets. Specific values of temporal variables are -compared by logical operators and evaluated for each map of the STDS and +compared by logical operators and evaluated for each map of the STDS and the related maps. -For complex relations the comparison operator can be used to combine conditions: +For complex relations the comparison operator can be used to combine conditions:
    The structure is similar to the select operator with the extension of an aggregation operator: @@ -280,17 +280,17 @@

    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 -have any (|) condition that is true. The resulting boolean value is then compared -to the first condition by the comparison operator (|| or &&). +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 &&). As default the aggregation operator is related to the comparison operator:
    Comparison operator -> aggregation operator:
    -|| -> | and && -> & 
    +|| -> | and && -> &
     
    Examples: @@ -305,7 +305,7 @@

    Comparison operator

    Hash operator

    -Additionally the number of maps in intervals can be computed and used in +Additionally the number of maps in intervals can be computed and used in conditional statements with the hash (#) operator.
    @@ -323,10 +323,10 @@ 

    Hash operator

    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 -in the if condition specifies the temporal relation between the if and then part -of the if expression. This is very important, so we do not need to specify a +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 +in the if condition specifies the temporal relation between the if and then part +of the if expression. This is very important, so we do not need to specify a global time reference (a space time dataset) for temporal processing.

    Furthermore the temporal algebra allows temporal buffering, shifting @@ -342,7 +342,7 @@

    Hash operator

    Single map with temporal extent

    -The temporal algebra can also handle single maps with time stamps in +The temporal algebra can also handle single maps with time stamps in the tmap function.
    @@ -355,7 +355,7 @@ 

    Single map with temporal extent

    C = A {:,during} tmap(event)
    -This statement select all maps from space time data set A that are +This statement select all maps from space time data set A that are during the temporal extent of single map 'event'

    Spatial vector operators

    @@ -363,13 +363,13 @@

    Spatial vector operators

    The module supports the following boolean vector operations:
    - Boolean Name   Operator Meaning         Precedence   Correspondent function 
    ----------------------------------------------------------------------------------- 
    - 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) 
    - NOT            ~        Complement            1      (v.overlay operator=not) 
    + Boolean Name   Operator Meaning         Precedence   Correspondent function
    +----------------------------------------------------------------------------------
    + 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)
    + NOT            ~        Complement            1      (v.overlay operator=not)
     
    And vector functions: @@ -382,23 +382,23 @@

    Spatial vector operators

    Combinations of temporal, vector and select operators

    -We combine the temporal topology relations, the temporal operators and -the spatial/select operators to create spatio-temporal vector +We combine the temporal topology relations, the temporal operators and +the spatial/select operators to create spatio-temporal vector operators:
    -{"spatial or select operator" , "list of temporal relations", "temporal operator" } 
    +{"spatial or select operator" , "list of temporal relations", "temporal operator" }
     

    -For multiple topological relations or several related maps the spatio-temporal +For multiple topological relations or several related maps the spatio-temporal operators feature implicit aggregation. -The algebra evaluates the stated STDS by their temporal topologies and apply +The algebra evaluates the stated STDS by their temporal topologies and apply the given spatio temporal operators in a aggregated form. -If we have two STDS A and B, B has three maps: b1, b2, b3 that are all during -the temporal extent of the single map a1 of A, then the following overlay -calculations would implicitly aggregate all maps of B into one result map for +If we have two STDS A and B, B has three maps: b1, b2, b3 that are all during +the temporal extent of the single map a1 of A, then the following overlay +calculations would implicitly aggregate all maps of B into one result map for a1 of A:

    @@ -415,24 +415,24 @@ 

    Combinations of temporal, vector and select operators

    Examples:

    -Spatio-temporal intersect all maps from space time dataset A with all -maps from space time dataset B which have equal time stamps and are +Spatio-temporal intersect all maps from space time dataset A with all +maps from space time dataset B which have equal time stamps and are temporary before Jan. 1. 2005 and store them in space time dataset D.
     D = if(start_date(A) < "2005-01-01", A & B)
     
    -Buffer all vector points from space time vector dataset A and B with a -distance of one and intersect the results with overlapping, containing, -during and equal temporal relations to store the result in space time +Buffer all vector points from space time vector dataset A and B with a +distance of one and intersect the results with overlapping, containing, +during and equal temporal relations to store the result in space time vector dataset D with intersected time stamps.
     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 +Select all maps from space time dataset B which are during the temporal buffered space time dataset A with a map interval of three days, else select maps from C and store them in space time dataset D. diff --git a/temporal/t.vect.db.select/test.t.vect.db.select.sh b/temporal/t.vect.db.select/test.t.vect.db.select.sh index d507993337a..383143e6fdc 100755 --- a/temporal/t.vect.db.select/test.t.vect.db.select.sh +++ b/temporal/t.vect.db.select/test.t.vect.db.select.sh @@ -1,7 +1,7 @@ #!/bin/sh # Test the database output of vector maps in a space time vector dataset # We need to set a specific region in the -# @preprocess step of this test. +# @preprocess step of this test. # The region setting should work for UTM and LL test locations g.region s=0 n=80 w=0 e=120 b=0 t=50 res=10 res3=10 -p3 @@ -41,4 +41,3 @@ t.unregister type=vector maps=prec_observer:1,prec_observer:2,prec_observer:3,pr g.remove -f type=vector name=prec_observer,test_extract g.remove -f type=raster name=prec_1,prec_2,prec_3,prec_4,prec_5,prec_6 - diff --git a/temporal/t.vect.export/test.t.vect.export.sh b/temporal/t.vect.export/test.t.vect.export.sh index 5ac823b6fcf..689adb4974c 100755 --- a/temporal/t.vect.export/test.t.vect.export.sh +++ b/temporal/t.vect.export/test.t.vect.export.sh @@ -2,7 +2,7 @@ # Export of space time vector datasets # We need to set a specific region in the -# @preprocess step of this test. +# @preprocess step of this test. # The region setting should work for UTM and LL test locations g.region s=0 n=80 w=0 e=120 b=0 t=50 res=10 res3=10 -p3 @@ -10,7 +10,7 @@ v.random --o -z output=soil_1 n=100 zmin=0 zmax=100 column=height seed=1 v.random --o -z output=soil_2 n=100 zmin=0 zmax=100 column=height seed=2 v.random --o -z output=soil_3 n=100 zmin=0 zmax=100 column=height seed=3 -n1=`g.tempfile pid=1 -d` +n1=`g.tempfile pid=1 -d` cat > "${n1}" << EOF soil_1 diff --git a/temporal/t.vect.extract/t.vect.extract.html b/temporal/t.vect.extract/t.vect.extract.html index 1ad90aa0e14..6de3552d67d 100644 --- a/temporal/t.vect.extract/t.vect.extract.html +++ b/temporal/t.vect.extract/t.vect.extract.html @@ -1,7 +1,7 @@

    DESCRIPTION

    -The purpose of t.vect.extract is to extract a subset of a space -time vector dataset and to store that subset in a different space time +The purpose of t.vect.extract is to extract a subset of a space +time vector dataset and to store that subset in a different space time vector dataset.

    EXAMPLE

    @@ -59,11 +59,11 @@

    EXAMPLE

    | Description: | North Caroline shoreline from 2000 to 2009 | Command history: - | # 2014-11-29 08:43:50 + | # 2014-11-29 08:43:50 | t.vect.extract input="shoreline" | where="start_time > 2000" output="shoreline_later_2000" | basename="new_shoreline" - | # 2014-11-29 08:44:14 + | # 2014-11-29 08:44:14 | t.support type="stvds" | input="shoreline_later_2000@shoreline" | descr="North Caroline shoreline from 2000 to 2009" diff --git a/temporal/t.vect.extract/test.t.vect.extract.layer.sh b/temporal/t.vect.extract/test.t.vect.extract.layer.sh index b1851fd7cbf..3d9c44a9627 100755 --- a/temporal/t.vect.extract/test.t.vect.extract.layer.sh +++ b/temporal/t.vect.extract/test.t.vect.extract.layer.sh @@ -26,13 +26,13 @@ t.vect.list input=prec_observer t.vect.extract --o input=prec_observer output=test_extract_1 base=test_1 t.info type=stvds input=test_extract_1 -t.vect.univar input=test_extract_1 column=prec +t.vect.univar input=test_extract_1 column=prec t.vect.extract --o input=prec_observer expr="prec > 400" output=test_extract_2 base=test_2 t.info type=stvds input=test_extract_2 -t.vect.univar input=test_extract_2 column=prec +t.vect.univar input=test_extract_2 column=prec t.vect.extract --o input=prec_observer where="start_time >= '2001-05-01'" expr="prec > 400" output=test_extract_3 base=test_3 t.info type=stvds input=test_extract_3 -t.vect.univar input=test_extract_3 column=prec +t.vect.univar input=test_extract_3 column=prec diff --git a/temporal/t.vect.extract/test.t.vect.extract.sh b/temporal/t.vect.extract/test.t.vect.extract.sh index 5837ab3caa3..b5cd6882e94 100755 --- a/temporal/t.vect.extract/test.t.vect.extract.sh +++ b/temporal/t.vect.extract/test.t.vect.extract.sh @@ -13,7 +13,7 @@ v.random --o -z output=soil_6 n=100 zmin=0 zmax=100 column=height seed=6 v.random --o -z output=soil_7 n=100 zmin=0 zmax=100 column=height seed=7 v.random --o -z output=soil_8 n=100 zmin=0 zmax=100 column=height seed=8 -n1=`g.tempfile pid=1 -d` +n1=`g.tempfile pid=1 -d` cat > "${n1}" << EOF soil_1 diff --git a/temporal/t.vect.import/t.vect.import.html b/temporal/t.vect.import/t.vect.import.html index 66d77f039b2..89a8bb3588c 100644 --- a/temporal/t.vect.import/t.vect.import.html +++ b/temporal/t.vect.import/t.vect.import.html @@ -15,7 +15,7 @@

    NOTES

    EXAMPLE

    -In this example, five vector maps are created and registered in a single space time +In this example, five vector maps are created and registered in a single space time vector dataset named random_locations. Each vector map represents random locations within the boundary of the state taken at 1 month intervals. The space time dataset is then exported and re-imported. diff --git a/temporal/t.vect.import/testsuite/test.t.vect.import.sh b/temporal/t.vect.import/testsuite/test.t.vect.import.sh index 876c3a8b2d6..e6986d9a847 100755 --- a/temporal/t.vect.import/testsuite/test.t.vect.import.sh +++ b/temporal/t.vect.import/testsuite/test.t.vect.import.sh @@ -12,7 +12,7 @@ v.random --o -z output=soil_1 n=100 zmin=0 zmax=100 column=height seed=1 v.random --o -z output=soil_2 n=100 zmin=0 zmax=100 column=height seed=2 v.random --o -z output=soil_3 n=100 zmin=0 zmax=100 column=height seed=3 -n1=`g.tempfile pid=1 -d` +n1=`g.tempfile pid=1 -d` cat > "${n1}" << EOF soil_1 @@ -68,4 +68,3 @@ rm stvds_export_gml.tar rm stvds_export_pack.tar.bz2 rm stvds_export_pack.tar.gz rm stvds_export_pack.tar - diff --git a/temporal/t.vect.list/testsuite/test.t.vect.list.layer.sh b/temporal/t.vect.list/testsuite/test.t.vect.list.layer.sh index 321073c8aba..389f933eb73 100755 --- a/temporal/t.vect.list/testsuite/test.t.vect.list.layer.sh +++ b/temporal/t.vect.list/testsuite/test.t.vect.list.layer.sh @@ -2,7 +2,7 @@ # This is a test to list vecter maps of a space time vecter dataset # We need to set a specific region in the -# @preprocess step of this test. +# @preprocess step of this test. # The region setting should work for UTM and LL test locations g.region s=0 n=80 w=0 e=120 b=0 t=50 res=10 res3=10 -p3 @@ -23,13 +23,13 @@ db.copy from_table=soil_orig to_table=soils_3 db.copy from_table=soil_orig to_table=soils_4 db.copy from_table=soil_orig to_table=soils_5 db.copy from_table=soil_orig to_table=soils_6 -v.db.addtable map=soils table=soils_2 layer=2 -v.db.addtable map=soils table=soils_3 layer=3 -v.db.addtable map=soils table=soils_4 layer=4 -v.db.addtable map=soils table=soils_5 layer=5 -v.db.addtable map=soils table=soils_6 layer=6 +v.db.addtable map=soils table=soils_2 layer=2 +v.db.addtable map=soils table=soils_3 layer=3 +v.db.addtable map=soils table=soils_4 layer=4 +v.db.addtable map=soils table=soils_5 layer=5 +v.db.addtable map=soils table=soils_6 layer=6 -n1=`g.tempfile pid=1 -d` +n1=`g.tempfile pid=1 -d` n2=`g.tempfile pid=2 -d` n3=`g.tempfile pid=3 -d` n4=`g.tempfile pid=4 -d` diff --git a/temporal/t.vect.list/testsuite/test.t.vect.list.sh b/temporal/t.vect.list/testsuite/test.t.vect.list.sh index 54c9f7dc0da..48aef77ef95 100755 --- a/temporal/t.vect.list/testsuite/test.t.vect.list.sh +++ b/temporal/t.vect.list/testsuite/test.t.vect.list.sh @@ -2,7 +2,7 @@ # This is a test to list vecter maps of a space time vecter dataset # We need to set a specific region in the -# @preprocess step of this test. +# @preprocess step of this test. # The region setting should work for UTM and LL test locations g.region s=0 n=80 w=0 e=120 b=0 t=50 res=10 res3=10 -p3 @@ -15,7 +15,7 @@ v.random -z output=lidar_4 n=20 zmin=0 zmax=100 column=height v.random -z output=lidar_5 n=20 zmin=0 zmax=100 column=height v.random -z output=lidar_6 n=20 zmin=0 zmax=100 column=height -n1=`g.tempfile pid=1 -d` +n1=`g.tempfile pid=1 -d` n2=`g.tempfile pid=2 -d` n3=`g.tempfile pid=3 -d` n4=`g.tempfile pid=4 -d` diff --git a/temporal/t.vect.observe.strds/t.vect.observe.strds.html b/temporal/t.vect.observe.strds/t.vect.observe.strds.html index d5c18c15587..adbd3f098b3 100644 --- a/temporal/t.vect.observe.strds/t.vect.observe.strds.html +++ b/temporal/t.vect.observe.strds/t.vect.observe.strds.html @@ -4,24 +4,24 @@

    DESCRIPTION

    locations in a space time raster dataset over a period of time using vector points. -The first input is a vector map layer with vector points. The second -input is one or several space time raster datasets (STRDS) that should -be sampled over time at the vector point positions. The space time -raster dataset will be sampled over its whole temporal extent (from +The first input is a vector map layer with vector points. The second +input is one or several space time raster datasets (STRDS) that should +be sampled over time at the vector point positions. The space time +raster dataset will be sampled over its whole temporal extent (from start to end). A column name must be specified for each input space time raster dataset.

    The result is a new space time vector dataset that contains a single (new) vector map which links to as many time-stamped attribute tables -as raster map layers are present in the input space time raster dataset. -Hence, for each time step in the space time raster dataset a new -attribute table is created. The GRASS GIS Temporal Framework allows -to time stamp attribute tables that can be linked to a single vector +as raster map layers are present in the input space time raster dataset. +Hence, for each time step in the space time raster dataset a new +attribute table is created. The GRASS GIS Temporal Framework allows +to time stamp attribute tables that can be linked to a single vector map layer.

    -The module v.what.rast is used internally for sampling the -time stamped raster map layers. All sampled values of a single time -stamped raster map layer are written into a new time stamped attribute +The module v.what.rast is used internally for sampling the +time stamped raster map layers. All sampled values of a single time +stamped raster map layer are written into a new time stamped attribute table.

    Use t.vect.db.select to print attribute values of the space diff --git a/temporal/t.vect.observe.strds/testsuite/test.t.vect.observe.strds.layer_bug.sh b/temporal/t.vect.observe.strds/testsuite/test.t.vect.observe.strds.layer_bug.sh index e1f631758ef..a2aedb75857 100755 --- a/temporal/t.vect.observe.strds/testsuite/test.t.vect.observe.strds.layer_bug.sh +++ b/temporal/t.vect.observe.strds/testsuite/test.t.vect.observe.strds.layer_bug.sh @@ -1,6 +1,6 @@ #!/bin/sh # Here we test the limit of the number of layers -# @preprocess +# @preprocess # The region setting should work for UTM and LL test locations # temporary disabled test for performance reason diff --git a/temporal/t.vect.observe.strds/testsuite/test.t.vect.observe.strds.relative.sh b/temporal/t.vect.observe.strds/testsuite/test.t.vect.observe.strds.relative.sh index 586574e24a5..277aca74e8b 100755 --- a/temporal/t.vect.observe.strds/testsuite/test.t.vect.observe.strds.relative.sh +++ b/temporal/t.vect.observe.strds/testsuite/test.t.vect.observe.strds.relative.sh @@ -2,7 +2,7 @@ # Test the temporal and spatial sampling/observation of raster maps by vector point maps # using relative time # We need to set a specific region in the -# @preprocess step of this test. +# @preprocess step of this test. # The region setting should work for UTM and LL test locations g.region s=0 n=80 w=0 e=120 b=0 t=50 res=10 res3=10 -p3 diff --git a/temporal/t.vect.observe.strds/testsuite/test.t.vect.observe.strds.sh b/temporal/t.vect.observe.strds/testsuite/test.t.vect.observe.strds.sh index 836b5429975..63099715d61 100755 --- a/temporal/t.vect.observe.strds/testsuite/test.t.vect.observe.strds.sh +++ b/temporal/t.vect.observe.strds/testsuite/test.t.vect.observe.strds.sh @@ -1,7 +1,7 @@ #!/bin/sh # Test the temporal and spatial sampling/observation of raster maps by vector point maps # We need to set a specific region in the -# @preprocess step of this test. +# @preprocess step of this test. # The region setting should work for UTM and LL test locations g.region s=0 n=80 w=0 e=120 b=0 t=50 res=10 res3=10 -p3 @@ -20,7 +20,7 @@ r.mapcalc expr="prec_9 = 600.0" v.random output=prec npoints=5 seed=1 -v.random -z output=test_1 column=test n=5 seed=1 +v.random -z output=test_1 column=test n=5 seed=1 t.create type=strds temporaltype=absolute output=precip_abs1 title="A test" descr="A test" t.register -i input=precip_abs1 maps=prec_1,prec_2,prec_3,prec_4,prec_5,prec_6 start="2001-03-01 00:00:00" increment="1 months" diff --git a/temporal/t.vect.univar/testsuite/test.t.vect.univar.sh b/temporal/t.vect.univar/testsuite/test.t.vect.univar.sh index 5e741ee51be..902ff7d57fb 100755 --- a/temporal/t.vect.univar/testsuite/test.t.vect.univar.sh +++ b/temporal/t.vect.univar/testsuite/test.t.vect.univar.sh @@ -2,15 +2,15 @@ # Test the univar statistics of space time vector datasets # We need to set a specific region in the -# @preprocess step of this test. +# @preprocess step of this test. # The region setting should work for UTM and LL test locations g.region s=0 n=80 w=0 e=120 b=0 t=50 res=10 res3=10 -p3 export GRASS_OVERWRITE=1 # Data generation -v.random -z output=rpoints1 zmin=0 zmax=100 seed=1 column=height n=100 -v.random -z output=rpoints2 zmin=0 zmax=100 seed=2 column=height n=100 +v.random -z output=rpoints1 zmin=0 zmax=100 seed=1 column=height n=100 +v.random -z output=rpoints2 zmin=0 zmax=100 seed=2 column=height n=100 v.voronoi input=rpoints1 output=rvoronoi1 v.voronoi input=rpoints2 output=rvoronoi2 @@ -28,4 +28,3 @@ t.vect.univar type=line input=random_data column=height where='height > 20' twhe t.unregister type=vector maps=rpoints1,rpoints2,rvoronoi1,rvoronoi2 t.remove type=stvds input=random_data g.remove -f type=vector name=rpoints1,rpoints2,rvoronoi1,rvoronoi2 - diff --git a/temporal/t.vect.what.strds/t.vect.what.strds.html b/temporal/t.vect.what.strds/t.vect.what.strds.html index 200d2604763..21c878f3ede 100644 --- a/temporal/t.vect.what.strds/t.vect.what.strds.html +++ b/temporal/t.vect.what.strds/t.vect.what.strds.html @@ -1,6 +1,6 @@

    DESCRIPTION

    -The module t.vect.what.strds samples a space time raster dataset +The module t.vect.what.strds samples a space time raster dataset (STRDS) at the spatio-temporal locations of a space time vector dataset (STVDS).

    EXAMPLE

    diff --git a/temporal/t.vect.what.strds/test.t.vect.what.strds.layer.sh b/temporal/t.vect.what.strds/test.t.vect.what.strds.layer.sh index 71e0b38cf2e..82283556526 100755 --- a/temporal/t.vect.what.strds/test.t.vect.what.strds.layer.sh +++ b/temporal/t.vect.what.strds/test.t.vect.what.strds.layer.sh @@ -2,7 +2,7 @@ # Test the temporal and spatial sampling of raster maps by vector point maps # using timetamped vector tables # We need to set a specific region in the -# @preprocess step of this test. +# @preprocess step of this test. # The region setting should work for UTM and LL test locations g.region s=0 n=80 w=0 e=120 b=0 t=50 res=10 res3=10 -p3 # The raster maps @@ -23,13 +23,13 @@ db.copy from_table=soil_orig to_table=soils_3 db.copy from_table=soil_orig to_table=soils_4 db.copy from_table=soil_orig to_table=soils_5 db.copy from_table=soil_orig to_table=soils_6 -v.db.addtable map=soils table=soils_2 layer=2 -v.db.addtable map=soils table=soils_3 layer=3 -v.db.addtable map=soils table=soils_4 layer=4 -v.db.addtable map=soils table=soils_5 layer=5 -v.db.addtable map=soils table=soils_6 layer=6 +v.db.addtable map=soils table=soils_2 layer=2 +v.db.addtable map=soils table=soils_3 layer=3 +v.db.addtable map=soils table=soils_4 layer=4 +v.db.addtable map=soils table=soils_5 layer=5 +v.db.addtable map=soils table=soils_6 layer=6 -n1=`g.tempfile pid=1 -d` +n1=`g.tempfile pid=1 -d` cat > "${n1}" << EOF soils:1 diff --git a/temporal/t.vect.what.strds/test.t.vect.what.strds.sh b/temporal/t.vect.what.strds/test.t.vect.what.strds.sh index 1a9414427cf..5ded5a3c550 100755 --- a/temporal/t.vect.what.strds/test.t.vect.what.strds.sh +++ b/temporal/t.vect.what.strds/test.t.vect.what.strds.sh @@ -1,7 +1,7 @@ #!/bin/sh # Test the temporal and spatial sampling of raster maps by vector point maps # We need to set a specific region in the -# @preprocess step of this test. +# @preprocess step of this test. # The region setting should work for UTM and LL test locations g.region s=0 n=80 w=0 e=120 b=0 t=50 res=10 res3=10 -p3 @@ -16,7 +16,7 @@ v.random --o -z output=soil_1 n=5 zmin=0 zmax=100 column=height seed=1 v.random --o -z output=soil_2 n=5 zmin=0 zmax=100 column=height seed=2 v.random --o -z output=soil_3 n=5 zmin=0 zmax=100 column=height seed=3 -n1=`g.tempfile pid=1 -d` +n1=`g.tempfile pid=1 -d` cat > "${n1}" << EOF soil_1|2001-01-01|2001-04-01 @@ -25,7 +25,7 @@ soil_3|2001-08-01|2001-12-01 EOF t.create --o type=stvds temporaltype=absolute output=soil_abs1 title="A test" descr="A test" -t.register type=vector input=soil_abs1 file="${n1}" +t.register type=vector input=soil_abs1 file="${n1}" t.create --o type=strds temporaltype=absolute output=precip_abs1 title="A test" descr="A test" t.register -i type=raster input=precip_abs1 maps=prec_1,prec_2,prec_3,prec_4,prec_5,prec_6 start="2001-03-01 00:00:00" increment="1 months" diff --git a/temporal/t.vect.what.strds/test.t.vect.what.strds_relative.sh b/temporal/t.vect.what.strds/test.t.vect.what.strds_relative.sh index 014be2e7935..fdbfda99730 100755 --- a/temporal/t.vect.what.strds/test.t.vect.what.strds_relative.sh +++ b/temporal/t.vect.what.strds/test.t.vect.what.strds_relative.sh @@ -1,7 +1,7 @@ #!/bin/sh # Test the temporal and spatial sampling of raster maps by vector point maps # We need to set a specific region in the -# @preprocess step of this test. +# @preprocess step of this test. # The region setting should work for UTM and LL test locations g.region s=0 n=80 w=0 e=120 b=0 t=50 res=10 res3=10 -p3 @@ -16,7 +16,7 @@ v.random --o -z output=soil_1 npoints=5 zmin=0 zmax=100 column=height seed=1 v.random --o -z output=soil_2 npoints=5 zmin=0 zmax=100 column=height seed=2 v.random --o -z output=soil_3 npoints=5 zmin=0 zmax=100 column=height seed=3 -n1=`g.tempfile pid=1 -d` +n1=`g.tempfile pid=1 -d` cat > "${n1}" << EOF soil_1|0|10 diff --git a/testsuite/Makefile b/testsuite/Makefile index 2aac61a4012..7ed92b67442 100644 --- a/testsuite/Makefile +++ b/testsuite/Makefile @@ -6,4 +6,3 @@ SUBDIRS = \ include $(MODULE_TOPDIR)/include/Make/Dir.make default: parsubdirs - diff --git a/testsuite/README.md b/testsuite/README.md index 2d4e1cfd129..141dce4a0e8 100644 --- a/testsuite/README.md +++ b/testsuite/README.md @@ -27,4 +27,7 @@ Since 2020: For a more advanced test suite, see Until 2019: For a more advanced test suite, see +<<<<<<< HEAD +======= +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) diff --git a/testsuite/examples/test_framework_GRASS_GIS_with_NC.sh b/testsuite/examples/test_framework_GRASS_GIS_with_NC.sh index ed161c7eb9c..808b4b9c716 100755 --- a/testsuite/examples/test_framework_GRASS_GIS_with_NC.sh +++ b/testsuite/examples/test_framework_GRASS_GIS_with_NC.sh @@ -142,4 +142,3 @@ fi echo "Nightly ($NOW) GRASS GIS test finished: $(date $DATE_FLAGS)" >> ${LOGFILE} exit 0 - diff --git a/testsuite/raster/README b/testsuite/raster/README index a96504ecebf..bc5b0940789 100644 --- a/testsuite/raster/README +++ b/testsuite/raster/README @@ -1,2 +1 @@ Raster map tests go here - diff --git a/testsuite/raster/rhemisphere.sh b/testsuite/raster/rhemisphere.sh index 30071642a0c..e312f7b36d1 100755 --- a/testsuite/raster/rhemisphere.sh +++ b/testsuite/raster/rhemisphere.sh @@ -46,4 +46,3 @@ r.mapcalc "hemisphere = $HEIGHT" cleanup g.message "Generated raster map " #echo "Now generate aspect + slope on " - diff --git a/translators.csv b/translators.csv index 1d54cc78d87..5a6d5327f40 100644 --- a/translators.csv +++ b/translators.csv @@ -90,7 +90,7 @@ tanigoo,,JA Yuka Tohhana,,JA Yoichi Seino,,JA Huidae Cho,,KO -Sungjin Kang,,KO +Sungjin Kang,,KO Maris Nartiss,,LV Peteris Bruns,,LV Mohammed Rashad,,ML diff --git a/utils/copywrite.pl b/utils/copywrite.pl index 6fc94ac6b99..6cebce8e140 100755 --- a/utils/copywrite.pl +++ b/utils/copywrite.pl @@ -189,4 +189,3 @@ sub evaluate_file { * *****************************************************************************/ $main_c - diff --git a/utils/dep_tree2sql.sh b/utils/dep_tree2sql.sh index a63307dde99..176924fc382 100755 --- a/utils/dep_tree2sql.sh +++ b/utils/dep_tree2sql.sh @@ -481,7 +481,7 @@ SELECT DISTINCT a.symbol INTO TABLE libc FROM prog_imp a, libs b WHERE a.symbol = b.symbol - AND b.library = 'libc.so.6' + AND b.library = 'libc.so.6' UNION SELECT DISTINCT a.symbol FROM imports a, libs b diff --git a/utils/fix_typos.sh b/utils/fix_typos.sh index 845a932210e..4ce04fed183 100755 --- a/utils/fix_typos.sh +++ b/utils/fix_typos.sh @@ -72,4 +72,3 @@ touch $MYPATH/fix_typos/typos_whitelist.txt python3 $MYPATH/fix_typos/codespell/codespell.py -w -i 3 -q 2 -S $EXCLUDED_FILES \ -x $MYPATH/fix_typos/typos_whitelist.txt --words-white-list=$WORDS_WHITE_LIST \ -D $MYPATH/fix_typos/grassgis_dict.txt . - diff --git a/utils/grass_indent.sh b/utils/grass_indent.sh index 34d42a11898..bc06fc15610 100755 --- a/utils/grass_indent.sh +++ b/utils/grass_indent.sh @@ -15,7 +15,11 @@ # TODO: replace short flags by long ones to improve readability +<<<<<<< HEAD case "$(uname)" in +======= +case "$(uname)" in +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) Darwin | *BSD*) INDENT=$(which gindent) ;; diff --git a/utils/module_synopsis.sh b/utils/module_synopsis.sh index b60b2b37245..ddcb44581fd 100755 --- a/utils/module_synopsis.sh +++ b/utils/module_synopsis.sh @@ -45,7 +45,7 @@ done TMP="`g.tempfile pid=$$`" if [ $? -ne 0 ] || [ -z "$TMP" ] ; then - g.message -e "Unable to create temporary files" + g.message -e "Unable to create temporary files" exit 1 fi diff --git a/utils/pep8config.txt b/utils/pep8config.txt index 6326e829f8e..e5c53a5390b 100644 --- a/utils/pep8config.txt +++ b/utils/pep8config.txt @@ -25,4 +25,3 @@ ignore=E121,E122,E123,E124,E125,E126,E127,E128,E201,E202,E203,E211,E221,E222,E22 # set maximum allowed line length (default: 79) max-line-length=150 - diff --git a/utils/pylintrc.txt b/utils/pylintrc.txt index 04d91f3130e..4a81aeba566 100644 --- a/utils/pylintrc.txt +++ b/utils/pylintrc.txt @@ -285,4 +285,3 @@ valid-classmethod-first-arg=cls # Exceptions that will emit a warning when being caught. Defaults to # "Exception" overgeneral-exceptions=Exception - diff --git a/utils/release.yml b/utils/release.yml index 56f8ac15f55..b39d17cf4b8 100644 --- a/utils/release.yml +++ b/utils/release.yml @@ -34,7 +34,11 @@ notes: regexp: '[Ss]ingularity: ' - title: Continuous Integration, Tests, Code Quality, and Checks +<<<<<<< HEAD regexp: '(CI|ci|[Tt]ests|[Cc]hecks|pytest): ' +======= + regexp: '(CI|ci|CI\(deps\)|ci\(deps\)|[Tt]ests|[Cc]hecks|pytest): ' +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) - title: Contributing and Management regexp: '(contributing|CONTRIBUTING.md|contributors.csv): ' diff --git a/utils/symbol_to_img.sh b/utils/symbol_to_img.sh index 4022f14f7a6..e4d50539dec 100755 --- a/utils/symbol_to_img.sh +++ b/utils/symbol_to_img.sh @@ -39,7 +39,7 @@ do echo -e "border none\npoint 50% 50%\n symbol $DIR/$SYMBOL\n end\nend" > "$PSMAP_FILE" ps.map input="$PSMAP_FILE" output="$PS_FILE" inkscape -f "$PS_FILE" --export-png="$PNG_OUT/$SYMBOL.png" -D -h=30 - + rm "$PSMAP_FILE" "$PS_FILE" # ImageMagic optimizes PNGs, no optipng needed diff --git a/utils/timer/main.c b/utils/timer/main.c index c5a3b18ca82..72a1f9c3813 100644 --- a/utils/timer/main.c +++ b/utils/timer/main.c @@ -17,7 +17,7 @@ #include #include -int main() +int main(void) { struct timeval t; diff --git a/vector/Makefile b/vector/Makefile index 1da4152931e..1a8f551a438 100644 --- a/vector/Makefile +++ b/vector/Makefile @@ -110,4 +110,3 @@ include $(MODULE_TOPDIR)/include/Make/Dir.make default: htmldir htmldir: parsubdirs - diff --git a/vector/v.buffer/main.c b/vector/v.buffer/main.c index b8de048f1bb..8031d95799e 100644 --- a/vector/v.buffer/main.c +++ b/vector/v.buffer/main.c @@ -351,7 +351,11 @@ int main(int argc, char *argv[]) cats_opt->answer); if (bufcol_opt->answer && field == -1) +<<<<<<< HEAD G_fatal_error(_("The bufcol option requires a valid layer.")); +======= + G_fatal_error(_("The column option requires a valid layer.")); +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) tolerance = 0.01; if (tol_opt->answer) { diff --git a/vector/v.buffer/v.buffer.html b/vector/v.buffer/v.buffer.html index 5ff81ec3c5c..8c835331630 100644 --- a/vector/v.buffer/v.buffer.html +++ b/vector/v.buffer/v.buffer.html @@ -8,7 +8,7 @@

    DESCRIPTION

    NOTES

    -Internal buffers for areas can be generated with negative distance +Internal buffers for areas can be generated with negative distance values ("inward buffer" or "negative buffer" or "shrinking").

    v.buffer fusions the geometries of buffers by default. @@ -37,7 +37,7 @@

    NOTES

    buggy for some input data).

    -The options minordistance, angle, tolerance are +The options minordistance, angle, tolerance are kept for backward compatibility and have no effect with GEOS buffering.

    Corner settings

    @@ -50,7 +50,7 @@

    Corner settings

    By default v.buffer creates rounded buffers (blue color on -figure below): +figure below):
    @@ -65,14 +65,14 @@

    Corner settings

    -Using -s with a point vector map as input data, square buffers are +Using -s with a point vector map as input data, square buffers are created instead of round buffers.
    - -also breaks lines/boundaries forming a collapsed loop. +also breaks lines/boundaries forming a collapsed loop. For example, 0.0;1.0;0.0 is broken at 1.0.

    Threshold does not apply (it is ignored), use an arbitrary value (e.g., 0) if v.clean is run with several tools.

    -Hint: Breaking lines should be followed by removing duplicates, e.g. -v.clean ... tool=break,rmdupl. If the -c flag is used with +Hint: Breaking lines should be followed by removing duplicates, e.g. +v.clean ... tool=break,rmdupl. If the -c flag is used with v.clean ... tool=break, duplicates are automatically removed.

    Remove duplicate geometry features

    tool=rmdupl

    -The rmdupl tool removes geometry features with identical -coordinates. Categories are merged. If a point and a centroid have -identical coordinates, one of them will be removed if both points and +The rmdupl tool removes geometry features with identical +coordinates. Categories are merged. If a point and a centroid have +identical coordinates, one of them will be removed if both points and centroids are selected with v.clean ... type=point,centroid. The same applies for lines and boundaries.

    Threshold does not apply (it is ignored), use an arbitrary value (e.g., 0) if v.clean is run with several tools.

    -The rmdupl tool should be used after breaking lines and +The rmdupl tool should be used after breaking lines and breaking polygons.

    Remove dangles or change boundary dangles to type line

    tool=rmdangle and tool=chdangle

    -A line/boundary is considered to be a dangle if no other line of given -type is on at least one end node. If a dangle is formed by -several lines, such a string of lines is taken as one dangle and line -lengths are summarized. The rmdangle tool deletes a dangle if -the (combined) length is shorter than thresh or thresh -< 0. If the combined length is larger than thresh, nothing +A line/boundary is considered to be a dangle if no other line of given +type is on at least one end node. If a dangle is formed by +several lines, such a string of lines is taken as one dangle and line +lengths are summarized. The rmdangle tool deletes a dangle if +the (combined) length is shorter than thresh or thresh +< 0. If the combined length is larger than thresh, nothing is deleted.

    -Threshold has to be given as maximum line/boundary length in map units; +Threshold has to be given as maximum line/boundary length in map units; for latitude-longitude locations in degree. Dangles shorter than thresh are removed sequentially. All dangles will be removed if thresh < 0.

    -With thresh < 0, only closed loops and lines connecting -loops will remain. This is useful to remove all incorrect boundaries -after other cleaning operations with thres is < 0. Areas can -then be successfully built. +With thresh < 0, only closed loops and lines connecting +loops will remain. This is useful to remove all incorrect boundaries +after other cleaning operations with thres is < 0. Areas can +then be successfully built.

    -To preferentially remove shortest dangles first, a first pass with a -small thresh value can be followed by subsequent passes with +To preferentially remove shortest dangles first, a first pass with a +small thresh value can be followed by subsequent passes with higher thresh values. This can be done as one v.clean job by listing the tool several times and by defining a list of increasing thresh values.

    -The chdangle tool is similar to the rmdangle tool, but -works only on boundaries and changes dangling boundaries to lines +The chdangle tool is similar to the rmdangle tool, but +works only on boundaries and changes dangling boundaries to lines instead of removing them.

    Remove or change bridges connecting an area and an island or two islands

    tool=rmbridge and tool=chbridge

    -A bridge is an area type connection of an island (polygon in a polygon) -to the outer polygon. This is topologically incorrect (but OGC Simple -Features allow it). The rmbridge tool removes bridges and the +A bridge is an area type connection of an island (polygon in a polygon) +to the outer polygon. This is topologically incorrect (but OGC Simple +Features allow it). The rmbridge tool removes bridges and the chbridge tool changes bridges to type line:

    @@ -89,9 +89,9 @@ 

    Remove or change bridges connecting an area and an island or two islands

    -Islands and areas must be already clean, i.e. without dangles or small +Islands and areas must be already clean, i.e. without dangles or small angles, e.g. -v.clean ... type=boundary tool=rmdangle,rmsa,break,rmdupl,rmbridge +v.clean ... type=boundary tool=rmdangle,rmsa,break,rmdupl,rmbridge thresh=-1,0,0,0,0.

    Threshold does not apply (it is ignored), use an arbitrary value (e.g., 0) @@ -100,46 +100,46 @@

    Remove or change bridges connecting an area and an island or two islands

    Snap lines to vertex in threshold tool=snap

    -The snap tool snaps vertices to another vertex not farther away -than thresh. If there is no other vertex within thresh, -no snapping will be done. The type option can have a strong +The snap tool snaps vertices to another vertex not farther away +than thresh. If there is no other vertex within thresh, +no snapping will be done. The type option can have a strong influence on the result. A too large threshold and type=boundary can severely damage area topology, beyond repair.

    -Threshold gives maximum distance to another vertex in map units, -for latitude-longitude locations in degree. +Threshold gives maximum distance to another vertex in map units, +for latitude-longitude locations in degree.

    -Snapped boundaries may need to be cleaned with break,rmdupl,rmsa. -If the -c flag is used with v.clean tool=snap, the -sequence of break,rmdupl,rmsa is automatically repeated after +Snapped boundaries may need to be cleaned with break,rmdupl,rmsa. +If the -c flag is used with v.clean tool=snap, the +sequence of break,rmdupl,rmsa is automatically repeated after snapping until no more small angles a left. Additional cleaning with e.g. tool=rmdanglemay be necessary.

    Remove duplicate area centroids

    tool=rmdac

    -The rmdac tool removes duplicate area centroids that can result +The rmdac tool removes duplicate area centroids that can result from deleting boundaries.

    Threshold does not apply (it is ignored), use an arbitrary value (e.g., 0) if v.clean is run with several tools. -

    Break (topologically clean) areas (imported from a non topological +

    Break (topologically clean) areas (imported from a non topological format like ShapeFile)

    tool=bpol

    -The bpol tool breaks boundaries on each point shared between 2 -and more areas where angles of boundary segments are different and on -all boundary nodes (start and end points of each boundary). The -bpol tool behaves similar to break for boundaries, but -does not break collapsed loops. The bpol tool is faster than +The bpol tool breaks boundaries on each point shared between 2 +and more areas where angles of boundary segments are different and on +all boundary nodes (start and end points of each boundary). The +bpol tool behaves similar to break for boundaries, but +does not break collapsed loops. The bpol tool is faster than the break tool but needs more memory.

    Threshold does not apply (it is ignored), use an arbitrary value (e.g., 0) if v.clean is run with several tools.

    -The bpol tool should be followed by rmdupl. If the --c flag is used with v.clean ... tool=bpol, duplicates are +The bpol tool should be followed by rmdupl. If the +-c flag is used with v.clean ... tool=bpol, duplicates are automatically removed.

    Remove vertices in threshold from lines and boundaries

    @@ -155,19 +155,19 @@

    Remove vertices in threshold from lines and boundaries

    Remove small areas

    tool=rmarea

    -The rmarea tool removes all areas <= thresh. The -longest boundary with an adjacent area is removed or all boundaries if -there is no adjacent area. Area categories are not combined when a small +The rmarea tool removes all areas <= thresh. The +longest boundary with an adjacent area is removed or all boundaries if +there is no adjacent area. Area categories are not combined when a small area is merged with a larger area.

    -Threshold must always be in square meters, also for latitude-longitude +Threshold must always be in square meters, also for latitude-longitude locations or locations with units other than meters.

    Remove all lines or boundaries of zero length

    tool=rmline

    -The rmline tool removes all lines or boundaries of zero length -that may have resulted from other cleaning operations. Zero length +The rmline tool removes all lines or boundaries of zero length +that may have resulted from other cleaning operations. Zero length boundaries are redundant and do not influence area topology.

    Threshold does not apply (it is ignored), use an arbitrary value (e.g., 0) @@ -176,11 +176,11 @@

    Remove all lines or boundaries of zero length

    Remove small angles between lines at nodes

    tool=rmsa

    -The rmsa tool only concerns angles which are so small that the -calculated angle is 0. The following figure should help demonstrate what +The rmsa tool only concerns angles which are so small that the +calculated angle is 0. The following figure should help demonstrate what the tool does.

    -Threshold does not apply, use dummy value if v.clean is +Threshold does not apply, use dummy value if v.clean is run with several tools.

    @@ -191,18 +191,18 @@

    Remove small angles between lines at nodes

    -The rmsa tool should be followed by break,rmdupl. The -rmsa tool followed by break,rmdupl may need to be run -more than once to remove all small angles. If the -c flag is -used with v.clean ... tool=rmsa, the sequence of -rmsa,break,rmdupl is automatically repeated until no more small +The rmsa tool should be followed by break,rmdupl. The +rmsa tool followed by break,rmdupl may need to be run +more than once to remove all small angles. If the -c flag is +used with v.clean ... tool=rmsa, the sequence of +rmsa,break,rmdupl is automatically repeated until no more small angles a left.

    NOTES

    The user does not have to run v.build on the output vector, unless the -b flag was used. The --b flag affects only the output vector - +-b flag affects only the output vector - topology is always built for error vector.

    EXAMPLES

    @@ -304,9 +304,9 @@

    Inspecting the topological errors visually

    Cleaning OGR imported data (Simple Feature data) such as SHAPE file

    The import of areas with v.in.ogr -c -(no cleaning) requires a subsequent run of v.clean to update -the map to a topologically valid structure (removal of duplicate -collinear lines etc). The tools used for that are bpol and +(no cleaning) requires a subsequent run of v.clean to update +the map to a topologically valid structure (removal of duplicate +collinear lines etc). The tools used for that are bpol and rmdupl:
     v.clean input=areamap output=areamap_clean tool=bpol,rmdupl type=boundary
    @@ -321,7 +321,7 @@ 

    Extracting intersection points of vector lines

    Break lines

    -v.clean will break the lines where they cross, +v.clean will break the lines where they cross, creating new node if needed. Example:
    @@ -341,23 +341,23 @@ 

    Break lines

    Remove all lines of zero length

    -v.out.ascii zero format=standard 
    +v.out.ascii zero format=standard
     L  2 1
      -819832.09065589 -987825.2187231
      -806227.28362601 -971104.80702988
    - 1     1         
    + 1     1
     L  2 1
      -799165.24638913 -972974.16982788
      -799165.24638913 -972974.16982788
    - 1     2         
    + 1     2
     
     v.clean input=zero output=zero_clean tool=rmline type=line
     
    -v.out.ascii zero_clean format=standard 
    +v.out.ascii zero_clean format=standard
     L  2 1
      -819832.09065589 -987825.2187231
      -806227.28362601 -971104.80702988
    - 1     1         
    + 1     1
     
    v.clean type=boundary would remove nothing. diff --git a/vector/v.cluster/main.c b/vector/v.cluster/main.c index a2b4e37b6e0..c9e9f2aa60e 100644 --- a/vector/v.cluster/main.c +++ b/vector/v.cluster/main.c @@ -256,7 +256,11 @@ int main(int argc, char *argv[]) c[2] = 0.0; n = 0; sum = sumsq = 0; +<<<<<<< HEAD min = 1.0 / 0.0; +======= + min = INFINITY; +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) max = 0; kd = G_malloc(minpnts * sizeof(double)); ki = G_malloc(minpnts * sizeof(int)); @@ -463,7 +467,11 @@ int main(int argc, char *argv[]) c[2] = 0.0; n = 0; sum = sumsq = 0; +<<<<<<< HEAD min = 1.0 / 0.0; +======= + min = INFINITY; +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) max = 0; kd = G_malloc(minpnts * sizeof(double)); ki = G_malloc(minpnts * sizeof(int)); diff --git a/vector/v.cluster/v.cluster.html b/vector/v.cluster/v.cluster.html index a2fc8349a46..0e92f266eb9 100644 --- a/vector/v.cluster/v.cluster.html +++ b/vector/v.cluster/v.cluster.html @@ -1,88 +1,88 @@

    DESCRIPTION

    -v.cluster partitions a point cloud into clusters or clumps. +v.cluster partitions a point cloud into clusters or clumps.

    -If the minimum number of points is not specified with the min -option, the minimum number of points to constitute a cluster is -number of dimensions + 1, i.e. 3 for 2D points and 4 for 3D +If the minimum number of points is not specified with the min +option, the minimum number of points to constitute a cluster is +number of dimensions + 1, i.e. 3 for 2D points and 4 for 3D points.

    -If the maximum distance is not specified with the distance -option, the maximum distance is estimated from the observed distances +If the maximum distance is not specified with the distance +option, the maximum distance is estimated from the observed distances to the neighbors using the upper 99% confidence interval.

    -v.cluster supports different methods for clustering. The -recommended methods are method=dbscan if all clusters should -have a density (maximum distance between points) not larger than -distance or method=density if clusters should be created +v.cluster supports different methods for clustering. The +recommended methods are method=dbscan if all clusters should +have a density (maximum distance between points) not larger than +distance or method=density if clusters should be created separately for each observed density (distance to the farthest neighbor).

    dbscan

    -The Density-Based Spatial -Clustering of Applications with Noise is a commonly used clustering -algorithm. A new cluster is started for a point with at least -min - 1 neighbors within the maximum distance. These neighbors -are added to the cluster. The cluster is then expanded as long as at -least min - 1 neighbors are within the maximum distance for each +The Density-Based Spatial +Clustering of Applications with Noise is a commonly used clustering +algorithm. A new cluster is started for a point with at least +min - 1 neighbors within the maximum distance. These neighbors +are added to the cluster. The cluster is then expanded as long as at +least min - 1 neighbors are within the maximum distance for each point already in the cluster.

    dbscan2

    -Similar to dbscan, but here it is sufficient if the resultant -cluster consists of at least min points, even if no point in the +Similar to dbscan, but here it is sufficient if the resultant +cluster consists of at least min points, even if no point in the cluster has at least min - 1 neighbors within distance.

    density

    -This method creates clusters according to their point density. The -maximum distance is not used. Instead, the points are sorted ascending -by the distance to their farthest neighbor (core distance), inspecting -min - 1 neighbors. The densest cluster is created first, using -as threshold the core distance of the seed point. The cluster is -expanded as for DBSCAN, with the difference that each cluster has its -own maximum distance. This method can identify clusters with different +This method creates clusters according to their point density. The +maximum distance is not used. Instead, the points are sorted ascending +by the distance to their farthest neighbor (core distance), inspecting +min - 1 neighbors. The densest cluster is created first, using +as threshold the core distance of the seed point. The cluster is +expanded as for DBSCAN, with the difference that each cluster has its +own maximum distance. This method can identify clusters with different densities and can create nested clusters.

    optics

    -This method is Ordering Points to -Identify the Clustering Structure. It is controlled by the number -of neighbor points (option min - 1). The core distance of a -point is the distance to the farthest neighbor. The reachability of a -point q is its distance from a point p (original optics: -max(core-distance(p), distance(p, q))). The aim of the optics -method is to reduce the reachability of each point. Each unprocessed -point is the seed for a new cluster. Its neighbors are added to a queue -sorted by smallest reachability if their reachability can be reduced. -The points in the queue are processed and their unprocessed neighbors -are added to a queue sorted by smallest reachability if their +This method is Ordering Points to +Identify the Clustering Structure. It is controlled by the number +of neighbor points (option min - 1). The core distance of a +point is the distance to the farthest neighbor. The reachability of a +point q is its distance from a point p (original optics: +max(core-distance(p), distance(p, q))). The aim of the optics +method is to reduce the reachability of each point. Each unprocessed +point is the seed for a new cluster. Its neighbors are added to a queue +sorted by smallest reachability if their reachability can be reduced. +The points in the queue are processed and their unprocessed neighbors +are added to a queue sorted by smallest reachability if their reachability can be reduced.

    -The optics method does not create clusters itself, but produces -an ordered list of the points together with their reachability. The -output list is ordered according to the order of processing: the first -point processed is the first in the list, the last point processed is -the last in the list. Clusters can be extracted from this list by -identifying valleys in the points' reachability, e.g. by using a -threshold value. If a maximum distance is specified, this is used to -identify clusters, otherwise each separated network will constitute a +The optics method does not create clusters itself, but produces +an ordered list of the points together with their reachability. The +output list is ordered according to the order of processing: the first +point processed is the first in the list, the last point processed is +the last in the list. Clusters can be extracted from this list by +identifying valleys in the points' reachability, e.g. by using a +threshold value. If a maximum distance is specified, this is used to +identify clusters, otherwise each separated network will constitute a cluster.

    -The OPTICS algorithm uses each yet unprocessed point to start a new -cluster. The order of the input points is arbitrary and can thus +The OPTICS algorithm uses each yet unprocessed point to start a new +cluster. The order of the input points is arbitrary and can thus influence the resultant clusters.

    optics2

    -EXPERIMENTAL This method is similar to OPTICS, minimizing the -reachability of each point. Points are reconnected if their -reachability can be reduced. Contrary to OPTICS, a cluster's seed is -not fixed but changed if possible. Each point is connected to another -point until the core of the cluster (seed point) is reached. -Effectively, the initial seed is updated in the process. Thus separated -networks of points are created, with each network representing a +EXPERIMENTAL This method is similar to OPTICS, minimizing the +reachability of each point. Points are reconnected if their +reachability can be reduced. Contrary to OPTICS, a cluster's seed is +not fixed but changed if possible. Each point is connected to another +point until the core of the cluster (seed point) is reached. +Effectively, the initial seed is updated in the process. Thus separated +networks of points are created, with each network representing a cluster. The maximum distance is not used.

    NOTES

    @@ -92,7 +92,7 @@

    NOTES

    EXAMPLE

    -Analysis of random points for areas in areas of the vector +Analysis of random points for areas in areas of the vector urbanarea (North Carolina sample dataset).

    diff --git a/vector/v.db.connect/Makefile b/vector/v.db.connect/Makefile index d6a577c7c34..b4599ed83a5 100644 --- a/vector/v.db.connect/Makefile +++ b/vector/v.db.connect/Makefile @@ -7,8 +7,7 @@ LIBES = $(VECTORLIB) $(DBMILIB) $(GISLIB) DEPENDENCIES = $(VECTORDEP) $(DBMIDEP) $(GISDEP) EXTRA_INC = $(VECT_INC) EXTRA_CFLAGS = $(VECT_CFLAGS) - -include $(MODULE_TOPDIR)/include/Make/Module.make -default: cmd +include $(MODULE_TOPDIR)/include/Make/Module.make +default: cmd diff --git a/vector/v.db.connect/v.db.connect.html b/vector/v.db.connect/v.db.connect.html index 8f10b33e237..c0c01751396 100644 --- a/vector/v.db.connect/v.db.connect.html +++ b/vector/v.db.connect/v.db.connect.html @@ -13,7 +13,7 @@

    NOTE

    -If parameters for database connection are already set with +If parameters for database connection are already set with db.connect, they are taken as default values and do not need to be specified each time. @@ -121,7 +121,7 @@

    Store geometry in GRASS but attributes in PostgreSQL

    db.connect -p # Import table from PostgreSQL to new map -# (NOTE: output map name needs to be different from table name in +# (NOTE: output map name needs to be different from table name in # case that GRASS is connected to PostgreSQL): v.in.db driver=pg database="host=localhost,dbname=meteo" \ table=mytable x=lon y=lat key=cat out=mytable @@ -160,7 +160,7 @@

    Store geometry in GRASS but attributes in PostGIS

    db.connect -p # Import table from PostGIS to new map -# (NOTE: output map name needs to be different from table name in +# (NOTE: output map name needs to be different from table name in # case that GRASS is connected to PostGIS): v.in.db driver=pg database="host=localhost,dbname=meteo" \ table=mytable x="x(geom)" y="y(geom)" key=cat out=mytable diff --git a/vector/v.db.select/Makefile b/vector/v.db.select/Makefile index 46cc0b8ef8b..ace33c4e445 100644 --- a/vector/v.db.select/Makefile +++ b/vector/v.db.select/Makefile @@ -7,8 +7,7 @@ LIBES = $(VECTORLIB) $(DBMILIB) $(GISLIB) DEPENDENCIES = $(VECTORDEP) $(DBMIDEP) $(GISDEP) EXTRA_INC = $(VECT_INC) EXTRA_CFLAGS = $(VECT_CFLAGS) - -include $(MODULE_TOPDIR)/include/Make/Module.make -default: cmd +include $(MODULE_TOPDIR)/include/Make/Module.make +default: cmd diff --git a/vector/v.decimate/main.c b/vector/v.decimate/main.c index 85787da8593..9910596c0d3 100644 --- a/vector/v.decimate/main.c +++ b/vector/v.decimate/main.c @@ -37,7 +37,7 @@ static int if_add_point(struct DecimationPoint *point, void *point_data, /* according to cat (which could be cluster, return or class) */ struct DecimationContext *dc = context; double zdiff = dc->zdiff; - int j; + unsigned int j; /* TODO: use something like Vect_cat_in_cat_list? */ for (j = 0; j < npoints; j++) { diff --git a/vector/v.delaunay/Makefile b/vector/v.delaunay/Makefile index 24901d50f6d..520cf942ecc 100644 --- a/vector/v.delaunay/Makefile +++ b/vector/v.delaunay/Makefile @@ -6,7 +6,7 @@ LIBES = $(VECTORLIB) $(GISLIB) DEPENDENCIES = $(VECTORDEP) $(GISDEP) EXTRA_INC = $(VECT_INC) EXTRA_CFLAGS = $(VECT_CFLAGS) - + include $(MODULE_TOPDIR)/include/Make/Module.make -default: cmd +default: cmd diff --git a/vector/v.delaunay/memory.c b/vector/v.delaunay/memory.c index f70a6220ff4..634bcaeae2e 100644 --- a/vector/v.delaunay/memory.c +++ b/vector/v.delaunay/memory.c @@ -56,7 +56,7 @@ static unsigned int n_free_e; void alloc_memory(unsigned int n) { struct edge *e; - int i; + unsigned int i; /* Sites storage. */ sites = (struct vertex *)G_calloc(n, sizeof(struct vertex)); @@ -95,7 +95,7 @@ void realloc_sites(unsigned int n) void alloc_edges(unsigned int n) { struct edge *e; - int i; + unsigned int i; /* Edges. Euler's formula - at most 3n edges on a set of n sites */ n_free_e = 3 * n; @@ -110,14 +110,18 @@ void alloc_edges(unsigned int n) free_list_e[i] = e; } +<<<<<<< HEAD void free_memory() +======= +void free_memory(void) +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) { G_free(sites); G_free(edges); G_free(free_list_e); } -struct edge *get_edge() +struct edge *get_edge(void) { if (n_free_e < 1) G_fatal_error(_("All allocated edges have been used.")); diff --git a/vector/v.delaunay/memory.h b/vector/v.delaunay/memory.h index 801c9c655a4..200196685f2 100644 --- a/vector/v.delaunay/memory.h +++ b/vector/v.delaunay/memory.h @@ -1,8 +1,8 @@ #ifndef MEMORY_H #define MEMORY_H void alloc_memory(unsigned int n); -void free_memory(); -struct edge *get_edge(); +void free_memory(void); +struct edge *get_edge(void); void free_edge(struct edge *e); void alloc_sites(unsigned int n); void realloc_sites(unsigned int n); diff --git a/vector/v.delaunay/v.delaunay.html b/vector/v.delaunay/v.delaunay.html index 80690f340e6..cdbabd95b9a 100644 --- a/vector/v.delaunay/v.delaunay.html +++ b/vector/v.delaunay/v.delaunay.html @@ -18,16 +18,20 @@

    EXAMPLE

    REFERENCES

    +<<<<<<< HEAD Leonid Guibas and Jorge Stolfi, (1985). Primitives for the +======= +Leonid Guibas and Jorge Stolfi, (1985). Primitives for the +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) Manipulation of General Subdivisions and the Computation of -Voronoi Diagrams, ACM Transactions on Graphics, Vol 4, No. 2, +Voronoi Diagrams, ACM Transactions on Graphics, Vol 4, No. 2, April 1985, Pages 74-123

    SEE ALSO

    -v.voronoi, +v.voronoi, v.hull diff --git a/vector/v.distance/Makefile b/vector/v.distance/Makefile index 652b260623d..77a73b52474 100644 --- a/vector/v.distance/Makefile +++ b/vector/v.distance/Makefile @@ -8,8 +8,7 @@ DEPENDENCIES = $(VECTORDEP) $(DBMIDEP) $(GISDEP) EXTRA_INC = $(VECT_INC) EXTRA_CFLAGS = $(VECT_CFLAGS) - -include $(MODULE_TOPDIR)/include/Make/Module.make -default: cmd +include $(MODULE_TOPDIR)/include/Make/Module.make +default: cmd diff --git a/vector/v.distance/distance.c b/vector/v.distance/distance.c index 3ceff4f9b05..66f82cce57a 100644 --- a/vector/v.distance/distance.c +++ b/vector/v.distance/distance.c @@ -11,7 +11,11 @@ int get_line_box(const struct line_pnts *Points, struct bound_box *box) int i; if (Points->n_points == 0) { +<<<<<<< HEAD box->E = box->W = box->N = box->S = box->T = box->B = 0.0 / 0.0; +======= + box->E = box->W = box->N = box->S = box->T = box->B = NAN; +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) return 0; } diff --git a/vector/v.distance/v.distance.html b/vector/v.distance/v.distance.html index 5bb59013cdc..7e43e6e64b3 100644 --- a/vector/v.distance/v.distance.html +++ b/vector/v.distance/v.distance.html @@ -64,7 +64,7 @@

    NOTES

    accordingly.

    The -p flag prints the results to standard output. By default the -output is in form of a linear matrix. If only only variable is upploaded and +output is in form of a linear matrix. If only only variable is upploaded and a square matrix is desired, the user can set the -s flag.

    EXAMPLES

    diff --git a/vector/v.drape/Makefile b/vector/v.drape/Makefile index 73604168646..31937cb97ce 100644 --- a/vector/v.drape/Makefile +++ b/vector/v.drape/Makefile @@ -11,4 +11,3 @@ EXTRA_CFLAGS = $(VECT_CFLAGS) include $(MODULE_TOPDIR)/include/Make/Module.make default: cmd - diff --git a/vector/v.drape/spearfish.pov b/vector/v.drape/spearfish.pov index bf27f286bd0..4aad7b4aeca 100644 --- a/vector/v.drape/spearfish.pov +++ b/vector/v.drape/spearfish.pov @@ -29,11 +29,11 @@ povray +Ispearfish.pov +Opovview.png +D +P +W1100 +H900 +A0.5 light_source { < 604505.0, 29000, 4899930.0 > color White } fog { - fog_type 2 - fog_offset 20 - fog_alt 65 - color rgb <0.80, 0.88, 0.82> - distance 80 + fog_type 2 + fog_offset 20 + fog_alt 65 + color rgb <0.80, 0.88, 0.82> + distance 80 up y } camera { @@ -46,19 +46,19 @@ camera { height_field { tga "elevation.tga" smooth - texture { - pigment { - image_map { // image is always projected from -z, with front facing +z, top to +Y - png "landcover30m.png" - once - } - rotate x*90 // align map to height_field - } + texture { + pigment { + image_map { // image is always projected from -z, with front facing +z, top to +Y + png "landcover30m.png" + once + } + rotate x*90 // align map to height_field + } } finish { ambient 0.2 // Very dark shadows diffuse 0.8 // Whiten the whites - phong 0.2 // shiny + phong 0.2 // shiny phong_size 100.0 // with tight highlights specular 0.5 roughness 0.05 @@ -75,4 +75,3 @@ sky_sphere{ pigment {planar colour_map{[0,rgb <0.9,0.9,1>][1, rgb <0.1,0.2,1>]}} pigment{P_Cloud4} } - diff --git a/vector/v.edit/v.edit.html b/vector/v.edit/v.edit.html index d52c03afe09..081deadf29c 100644 --- a/vector/v.edit/v.edit.html +++ b/vector/v.edit/v.edit.html @@ -1,7 +1,7 @@

    DESCRIPTION

    The module v.edit allows the user to edit a vector map -via command line interface. +via command line interface.

    v.edit supports only "simple" vector features: points, centroids, lines and boundaries. Currently, only 2D vector features @@ -77,7 +77,7 @@

    Tool description

  • delete - Delete selected vector features from existing vector map.
  • - +
  • copy - Make identical copy of selected vector features. If background map bgmap is given copy features from background map, not from currently modified vector map.
  • @@ -109,7 +109,7 @@

    Tool description

    lines on location given by coords. If coords not given, breaks all selected lines at each intersection (based on v.clean, tool=break).
  • - +
  • snap - Snap vector features in given threshold. See also module v.clean. Note that this tool supports only snapping to nodes. Parameters snap and @@ -156,7 +156,7 @@

    Tool description

    line or boundary in bounding box is modified. Moved vertex can be snapped (defined snap) to nodes or vertices based on threshold distance threshold.
  • - +
  • zbulk - Assign z coordinate to 3D vector lines in given bounding box. The first found line will get z coordinate based on value given by zbulk parameter. Z coordinate of other @@ -238,7 +238,7 @@

    Delete selected features from vector map layer

    Remove all features with category 1 and 2 covered by two bounding boxes -(center coordinates 592542.892,4924766.996 and 603389.062,4918292.187, +(center coordinates 592542.892,4924766.996 and 603389.062,4918292.187, size 1000 map units):
    diff --git a/vector/v.external.out/list.c b/vector/v.external.out/list.c
    index a0b9ca13c07..56ec201a3e9 100644
    --- a/vector/v.external.out/list.c
    +++ b/vector/v.external.out/list.c
    @@ -65,7 +65,7 @@ char **format_list(int *count, size_t *len)
         return list;
     }
     
    -char *format_options()
    +char *format_options(void)
     {
         int i, count;
         char **list, *ret;
    diff --git a/vector/v.external.out/v.external.out.html b/vector/v.external.out/v.external.out.html
    index 8bb0550c45b..1d82620f17c 100644
    --- a/vector/v.external.out/v.external.out.html
    +++ b/vector/v.external.out/v.external.out.html
    @@ -168,7 +168,7 @@ 

    Restore settings

    # do some processing in native format
    -Restore previous settings from "gisdb_topo.txt" file by +Restore previous settings from "gisdb_topo.txt" file by specifying loadsettings option.
    diff --git a/vector/v.external/Makefile b/vector/v.external/Makefile
    index 65ed452557a..adb70155767 100644
    --- a/vector/v.external/Makefile
    +++ b/vector/v.external/Makefile
    @@ -3,7 +3,7 @@ MODULE_TOPDIR = ../..
     PGM=v.external
     
     LIBES = $(VECTORLIB) $(GISLIB) $(DBMIBASELIB) $(GPROJLIB) $(GDALLIBS) $(PQLIBPATH) $(PQLIB)
    -DEPENDENCIES = $(VECTORDEP) $(GISDEP) $(DBMIBASEDEP) $(GPROJDEP) 
    +DEPENDENCIES = $(VECTORDEP) $(GISDEP) $(DBMIBASEDEP) $(GPROJDEP)
     
     EXTRA_INC = $(VECT_INC) $(PROJINC)
     EXTRA_CFLAGS = $(VECT_CFLAGS)
    diff --git a/vector/v.external/local_proto.h b/vector/v.external/local_proto.h
    index bda60fb24cc..3c8d02808fa 100644
    --- a/vector/v.external/local_proto.h
    +++ b/vector/v.external/local_proto.h
    @@ -35,7 +35,7 @@ void parse_args(int, char **, struct _options *, struct _flags *);
     char *get_datasource_name(const char *, int);
     
     /* list.c */
    -void list_formats();
    +void list_formats(void);
     int list_layers(FILE *, const char *, char **, int, int);
     void get_table_name(const char *, char **, char **);
     
    diff --git a/vector/v.external/main.c b/vector/v.external/main.c
    index 112df2e479e..7d72d421174 100644
    --- a/vector/v.external/main.c
    +++ b/vector/v.external/main.c
    @@ -95,7 +95,7 @@ int main(int argc, char *argv[])
     
         if (flags.format->answer) {
             /* list formats */
    -        list_formats(stdout);
    +        list_formats();
             exit(EXIT_SUCCESS);
         }
     
    diff --git a/vector/v.external/v.external.html b/vector/v.external/v.external.html
    index d61c3ffdcca..fb1512f8942 100644
    --- a/vector/v.external/v.external.html
    +++ b/vector/v.external/v.external.html
    @@ -57,7 +57,7 @@ 

    ESRI Shapefile

    '/home/user/shape_data'.
    -v.external input=/home/user/shape_data layer=test_shape output=grass_map 
    +v.external input=/home/user/shape_data layer=test_shape output=grass_map
     

    PostGIS layers

    @@ -116,7 +116,7 @@

    Linking subset of features

    linked as a new GRASS vector map.
    -v.external in="PG:dbname=tiles" layer=wrs2_descending where="pr=191026" 
    +v.external in="PG:dbname=tiles" layer=wrs2_descending where="pr=191026"
     ...
     Number of areas: 1
     ...
    diff --git a/vector/v.extract/Makefile b/vector/v.extract/Makefile
    index 03f466ff187..913eb7737d7 100644
    --- a/vector/v.extract/Makefile
    +++ b/vector/v.extract/Makefile
    @@ -7,8 +7,7 @@ LIBES = $(GMATHLIB) $(VECTORLIB) $(DBMILIB) $(GISLIB) $(MATHLIB)
     DEPENDENCIES = $(GMATHDEP) $(VECTORDEP) $(DBMIDEP) $(GISDEP)
     EXTRA_INC = $(VECT_INC)
     EXTRA_CFLAGS = $(VECT_CFLAGS)
    - 
    -include $(MODULE_TOPDIR)/include/Make/Module.make
     
    -default: cmd	
    +include $(MODULE_TOPDIR)/include/Make/Module.make
     
    +default: cmd
    diff --git a/vector/v.extract/testsuite/test_v_extract.py b/vector/v.extract/testsuite/test_v_extract.py
    index fb1e7816f1c..4c1a580372b 100644
    --- a/vector/v.extract/testsuite/test_v_extract.py
    +++ b/vector/v.extract/testsuite/test_v_extract.py
    @@ -1,7 +1,7 @@
     """
     Name:       v.extract test
     Purpose:    Tests v.extract and its flags/options.
    -	
    +
     Author:     Sunveer Singh, Google Code-in 2017
     Copyright:  (C) 2017 by Sunveer Singh and the GRASS Development Team
     Licence:    This program is free software under the GNU General Public
    diff --git a/vector/v.extract/v.extract.html b/vector/v.extract/v.extract.html
    index 678434437d6..115540d34dc 100644
    --- a/vector/v.extract/v.extract.html
    +++ b/vector/v.extract/v.extract.html
    @@ -1,9 +1,9 @@
     

    DESCRIPTION

    -v.extract allows a user to select vector objects from an existing -vector map and creates a new map containing only the selected objects. +v.extract allows a user to select vector objects from an existing +vector map and creates a new map containing only the selected objects. Database tables can be queried with SQL statements, if a connection is -established. +established. Dissolving (optional) is based on the output categories. If 2 adjacent areas have the same output category, the boundary is removed. @@ -14,11 +14,11 @@

    DESCRIPTION

    NOTES

    -Only features with a category number in the selected layer will be -extracted. So if you want to extract boundaries (which are usually -without category, as that information is normally held in the area's -centroid) you must first use -v.category to add them, or use +Only features with a category number in the selected layer will be +extracted. So if you want to extract boundaries (which are usually +without category, as that information is normally held in the area's +centroid) you must first use +v.category to add them, or use layer=-1.

    EXAMPLES

    @@ -65,7 +65,7 @@

    Extract vectors with SQL:

    Extract vector features which have the given field empty:

    -v.extract input=lakes output=lakes_gaps where="FTYPE is NULL"                    
    +v.extract input=lakes output=lakes_gaps where="FTYPE is NULL"
     

    Extract vector features which have the given field not empty:

    diff --git a/vector/v.generalize/Makefile b/vector/v.generalize/Makefile index d7a2e125964..e9ef20425b1 100644 --- a/vector/v.generalize/Makefile +++ b/vector/v.generalize/Makefile @@ -7,8 +7,7 @@ LIBES = $(VECTORLIB) $(DIG2LIB) $(GRAPHLIB) $(DBMILIB) $(GISLIB) $(MATHLIB) DEPENDENCIES = $(VECTORDEP) $(DIG2DEP) $(GRAPHDEP) $(DBMIDEP) $(GISDEP) EXTRA_INC = $(VECT_INC) EXTRA_CFLAGS = $(VECT_CFLAGS) - -include $(MODULE_TOPDIR)/include/Make/Module.make -default: cmd +include $(MODULE_TOPDIR)/include/Make/Module.make +default: cmd diff --git a/vector/v.generalize/displacement.c b/vector/v.generalize/displacement.c index d948b97bbe4..8952c98bc93 100644 --- a/vector/v.generalize/displacement.c +++ b/vector/v.generalize/displacement.c @@ -200,6 +200,7 @@ int snakes_displacement(struct Map_info *In, struct Map_info *Out, G_percent_reset(); G_message(_("Resolving conflicts...")); for (iter = 0; iter < iterations; iter++) { +<<<<<<< HEAD int conflicts = 0; G_percent(iter, iterations, 1); @@ -268,6 +269,73 @@ int snakes_displacement(struct Map_info *In, struct Map_info *Out, matrix_add(&dx, &fx, &fx); matrix_add(&dy, &fy, &fy); +======= + G_percent(iter, iterations, 1); + + matrix_mult_scalar(0.0, &fx); + matrix_mult_scalar(0.0, &fy); + + matrix_mult_scalar(0.0, &dx_old); + matrix_mult_scalar(0.0, &dy_old); + + matrix_add(&dx_old, &dx, &dx_old); + matrix_add(&dy_old, &dy, &dy_old); + + /* calculate force vectors */ + for (i = 0; i < index; i++) { + + double cx, cy, f; + + if (point_index[i] == -1) + continue; + cx = dx.a[point_index[i]][0]; + cy = dy.a[point_index[i]][0]; + f = sqrt(cx * cx + cy * cy) * alpha; + f /= threshold2; + fx.a[point_index[i]][0] -= cx * f; + fy.a[point_index[i]][0] -= cy * f; + + for (j = 1; j < index; j++) { + if (line_index[i] == line_index[j] || first[j] || + point_index[i] == point_index[j] || + point_index[i] == point_index[j - 1]) + continue; + /* if ith point is close to some segment then + * apply force to ith point. If the distance + * is zero, do not move the points */ + double d, pdist; + POINT in; + int status; + + d = dig_distance2_point_to_line( + parray[i].x, parray[i].y, parray[i].z, parray[j].x, + parray[j].y, parray[j].z, parray[j - 1].x, parray[j - 1].y, + parray[j - 1].z, with_z, &in.x, &in.y, &in.z, &pdist, + &status); + + POINT dir; + + if (d == 0.0 || d > threshold2) + continue; + d = sqrt(d); + point_subtract(parray[i], in, &dir); + point_scalar(dir, 1.0 / d, &dir); + point_scalar(dir, 1.0 - d / threshold, &dir); + fx.a[point_index[i]][0] += dir.x; + fy.a[point_index[i]][0] += dir.y; + } + } + + /* calculate new displacement */ + matrix_mult_scalar(delta, &fx); + matrix_mult_scalar(delta, &fy); + matrix_mult_scalar(gama, &dx); + matrix_mult_scalar(gama, &dy); + + matrix_add(&dx, &fx, &fx); + matrix_add(&dy, &fy, &fy); + +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) matrix_mult(&kinv, &fx, &dx); matrix_mult(&kinv, &fy, &dy); diff --git a/vector/v.generalize/v.generalize.html b/vector/v.generalize/v.generalize.html index 5ad83cb5927..e551ba93e39 100644 --- a/vector/v.generalize/v.generalize.html +++ b/vector/v.generalize/v.generalize.html @@ -1,55 +1,61 @@

    DESCRIPTION

    -v.generalize is a module for the generalization of GRASS -vector maps. This module consists of algorithms for line -simplification, line smoothing, network generalization and displacement +v.generalize is a module for the generalization of GRASS +vector maps. This module consists of algorithms for line +simplification, line smoothing, network generalization and displacement (new methods may be added later).

    -The cats and where options are used only if a layer -> 0 is specified, otherwise, those options are ignored. Be aware -that the default is layer=-1, meaning that all layers are +The cats and where options are used only if a layer +> 0 is specified, otherwise, those options are ignored. Be aware +that the default is layer=-1, meaning that all layers are processed, ignoring the cats and where options. -

    If type=area is selected, boundaries of selected areas will be -generalized, and the options cats, where, and -layer will be used to select areas. +

    If type=area is selected, boundaries of selected areas will be +generalized, and the options cats, where, and +layer will be used to select areas.

    NOTES

    +<<<<<<< HEAD (Line) simplification is a process of reducing the complexity of vector features. The module transforms a line into another line consisting of fewer vertices, that still approximate the original line. Most of the +======= +(Line) simplification is a process of reducing the complexity of vector +features. The module transforms a line into another line consisting of +fewer vertices, that still approximate the original line. Most of the +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) algorithms described below select a subset of points on the original line. -

    (Line) smoothing is a "reverse" process which takes as input a line and -produces a smoother approximate of the original. In some cases, this is -achieved by inserting new vertices into the original line, and can total -up to 4000% of the number of vertices in the original. In such an instance, +

    (Line) smoothing is a "reverse" process which takes as input a line and +produces a smoother approximate of the original. In some cases, this is +achieved by inserting new vertices into the original line, and can total +up to 4000% of the number of vertices in the original. In such an instance, it is always a good idea to simplify the line after smoothing. -

    Smoothing and simplification algorithms implemented in this module -work line by line, i.e. simplification/smoothing of one line does not -affect the other lines; they are treated separately. For isolated loops -formed by a single line/boundary, he first and the last point of each -line/boundary can be translated and/or deleted, unless the -l +

    Smoothing and simplification algorithms implemented in this module +work line by line, i.e. simplification/smoothing of one line does not +affect the other lines; they are treated separately. For isolated loops +formed by a single line/boundary, he first and the last point of each +line/boundary can be translated and/or deleted, unless the -l flag is used to disable loop support. -

    Lines and boundaries are not translated if they would collapse to a -single point. Boundaries are not translated if they would intersect -with themselves or other boundaries. Such erroneous features are written -to an optional error vector map. Overlaying the error -map over the generalized map indicates the kind of error. -Lines/boundaries collapsing to a point are written out as points, -boundaries violating topology are written out as boundaries. The -error map can be overlaid over the generalized map to +

    Lines and boundaries are not translated if they would collapse to a +single point. Boundaries are not translated if they would intersect +with themselves or other boundaries. Such erroneous features are written +to an optional error vector map. Overlaying the error +map over the generalized map indicates the kind of error. +Lines/boundaries collapsing to a point are written out as points, +boundaries violating topology are written out as boundaries. The +error map can be overlaid over the generalized map to understand why some features were not generalized.

    SIMPLIFICATION

    -Simplification can fail for many boundaries if the simplification -parameters would result in a large reduction of vertices. If many -lines/boundaries could not be simplified, try different parameters that +Simplification can fail for many boundaries if the simplification +parameters would result in a large reduction of vertices. If many +lines/boundaries could not be simplified, try different parameters that would cause a lower degree of simplification.

    v.generalize contains following line simplification algorithms: @@ -61,7 +67,7 @@

    SIMPLIFICATION

  • Reumann-Witkam Algorithm
  • -Different algorithms require different parameters, but all the algorithms +Different algorithms require different parameters, but all the algorithms have one parameter in common: the threshold parameter, given in map units (for latitude-longitude locations: in decimal degree). In general, the degree of simplification increases with the increasing value of @@ -70,36 +76,36 @@

    SIMPLIFICATION

    ALGORITHM DESCRIPTIONS

      -
    • Douglas-Peucker - "Quicksort" of line simplification, the - most widely used algorithm. Input parameters: input, +
    • Douglas-Peucker - "Quicksort" of line simplification, the + most widely used algorithm. Input parameters: input, threshold. For more information, see:
      http://geomalgorithms.com/a16-_decimate-1.html.
    • -
    • Douglas-Peucker Reduction Algorithm is essentially the same - algorithm as the algorithm above, the difference being that it takes - an additional reduction parameter which denotes the percentage - of the number of points on the new line with respect to the number - of points on the original line. Input parameters: input, - threshold, reduction.
    • -
    • Lang - Another standard algorithm. Input parameters: - input, threshold, look_ahead. +
    • Douglas-Peucker Reduction Algorithm is essentially the same + algorithm as the algorithm above, the difference being that it takes + an additional reduction parameter which denotes the percentage + of the number of points on the new line with respect to the number + of points on the original line. Input parameters: input, + threshold, reduction.
    • +
    • Lang - Another standard algorithm. Input parameters: + input, threshold, look_ahead. For an excellent description, see:
      http://www.sli.unimelb.edu.au/gisweb/LGmodule/LGLangVisualisation.htm.
    • -
    • Vertex Reduction - Simplest among the algorithms. Input +
    • Vertex Reduction - Simplest among the algorithms. Input parameters: input, threshold. - Given a line, this algorithm removes the points of this line which - are closer to each other than threshold. More precisely, if - p1 and p2 are two consecutive points, and the distance between p2 - and p1 is less than threshold, it removes p2 and repeats the + Given a line, this algorithm removes the points of this line which + are closer to each other than threshold. More precisely, if + p1 and p2 are two consecutive points, and the distance between p2 + and p1 is less than threshold, it removes p2 and repeats the same process on the remaining points.
    • -
    • Reumann-Witkam - Input parameters: input, - threshold. - This algorithm quite reasonably preserves the global characteristics - of the lines. For more information, see for example:
      +
    • Reumann-Witkam - Input parameters: input, + threshold. + This algorithm quite reasonably preserves the global characteristics + of the lines. For more information, see for example:
      http://psimpl.sourceforge.net/reumann-witkam.html.
    -Douglas-Peucker and Douglas-Peucker Reduction Algorithm -use the same method to simplify the lines. Note that +Douglas-Peucker and Douglas-Peucker Reduction Algorithm +use the same method to simplify the lines. Note that
     v.generalize input=boundary_county output=boundary_county_dp20 method=douglas threshold=20
    @@ -114,7 +120,7 @@ 

    ALGORITHM DESCRIPTIONS

    However, in this case, the first method is faster. Also observe that douglas_reduction never outputs more vertices than douglas, -and that, in general, douglas is more efficient than +and that, in general, douglas is more efficient than douglas_reduction. More importantly, the effect of
    @@ -129,111 +135,111 @@ 

    SMOOTHING

    The following smoothing algorithms are implemented in v.generalize:
      -
    • Boyle's Forward-Looking Algorithm - The position of each point - depends on the position of the previous points and the point - look_ahead ahead. look_ahead consecutive points. Input +
    • Boyle's Forward-Looking Algorithm - The position of each point + depends on the position of the previous points and the point + look_ahead ahead. look_ahead consecutive points. Input parameters: input, look_ahead.
    • -
    • McMaster's Sliding Averaging Algorithm - Input Parameters: +
    • McMaster's Sliding Averaging Algorithm - Input Parameters: input, slide, look_ahead. - The new position of each point is the average of the look_ahead - points around. Parameter slide is used for linear interpolation - between old and new position (see below).
    • -
    • McMaster's Distance-Weighting Algorithm - Takes the weighted - average of look_ahead consecutive points where the weight is - the reciprocal of the distance from the point to the currently - smoothed point. The parameter slide is used for linear - interpolation between the original position of the point and newly + The new position of each point is the average of the look_ahead + points around. Parameter slide is used for linear interpolation + between old and new position (see below).
    • +
    • McMaster's Distance-Weighting Algorithm - Takes the weighted + average of look_ahead consecutive points where the weight is + the reciprocal of the distance from the point to the currently + smoothed point. The parameter slide is used for linear + interpolation between the original position of the point and newly computed position where value 0 means the original position. Input parameters: input, slide, look_ahead.
    • -
    • Chaiken's Algorithm - "Inscribes" a line touching the original - line such that the points on this new line are at least - threshold apart. Input parameters: input, - threshold. This algorithm approximates the given line very +
    • Chaiken's Algorithm - "Inscribes" a line touching the original + line such that the points on this new line are at least + threshold apart. Input parameters: input, + threshold. This algorithm approximates the given line very well.
    • -
    • Hermite Interpolation - This algorithm takes the points of - the given line as the control points of hermite cubic spline and - approximates this spline by the points approximately - threshold apart. This method has excellent results for small - values of threshold, but in this case it produces a huge - number of new points and some simplification is usually needed. +
    • Hermite Interpolation - This algorithm takes the points of + the given line as the control points of hermite cubic spline and + approximates this spline by the points approximately + threshold apart. This method has excellent results for small + values of threshold, but in this case it produces a huge + number of new points and some simplification is usually needed. Input parameters: input, threshold, angle_thresh. - Angle_thresh is used for reducing the number of the points. - It denotes the minimal angle (in degrees) between two consecutive - segments of a line.
    • -
    • Snakes is the method of minimisation of the "energy" of a - line. This method preserves the general characteristics of the lines - but smooths the "sharp corners" of a line. Input parameters + Angle_thresh is used for reducing the number of the points. + It denotes the minimal angle (in degrees) between two consecutive + segments of a line.
    • +
    • Snakes is the method of minimisation of the "energy" of a + line. This method preserves the general characteristics of the lines + but smooths the "sharp corners" of a line. Input parameters input, alpha, beta. - This algorithm works very well for small values of alpha and - beta (between 0 and 5). These parameters affect the - "sharpness" and the curvature of the computed line.
    • + This algorithm works very well for small values of alpha and + beta (between 0 and 5). These parameters affect the + "sharpness" and the curvature of the computed line.
    -One of the key advantages of Hermite Interpolation is the fact -that the computed line always passes through the points of the original -line, whereas the lines produced by the remaining algorithms never pass -through these points. In some sense, this algorithm outputs a line which +One of the key advantages of Hermite Interpolation is the fact +that the computed line always passes through the points of the original +line, whereas the lines produced by the remaining algorithms never pass +through these points. In some sense, this algorithm outputs a line which "circumscribes" the input line. -

    On the other hand, Chaiken's Algorithm outputs a line which -"inscribes" a given line. The output line always touches/intersects the -centre of the input line segment between two consecutive points. For -more iterations, the property above does not hold, but the computed -lines are very similar to the Bezier Splines. The disadvantage of the -two algorithms given above is that they increase the number of points. -However, Hermite Interpolation can be used as another -simplification algorithm. To achieve this, it is necessary to set -angle_thresh to higher values (15 or so). - -

    One restriction on both McMasters' Algorithms is that look_ahead -parameter must be odd. Also note that these algorithms have no effect if -look_ahead = 1. - -

    Note that Boyle's, McMasters' and Snakes algorithm +

    On the other hand, Chaiken's Algorithm outputs a line which +"inscribes" a given line. The output line always touches/intersects the +centre of the input line segment between two consecutive points. For +more iterations, the property above does not hold, but the computed +lines are very similar to the Bezier Splines. The disadvantage of the +two algorithms given above is that they increase the number of points. +However, Hermite Interpolation can be used as another +simplification algorithm. To achieve this, it is necessary to set +angle_thresh to higher values (15 or so). + +

    One restriction on both McMasters' Algorithms is that look_ahead +parameter must be odd. Also note that these algorithms have no effect if +look_ahead = 1. + +

    Note that Boyle's, McMasters' and Snakes algorithm are sometimes used in the signal processing to smooth the signals. -More importantly, these algorithms never change the number of points on -the lines; they only translate the points, and do not insert any new points. +More importantly, these algorithms never change the number of points on +the lines; they only translate the points, and do not insert any new points. -

    Snakes Algorithm is (asymptotically) the slowest among the -algorithms presented above. Also, it requires quite a lot of memory. +

    Snakes Algorithm is (asymptotically) the slowest among the +algorithms presented above. Also, it requires quite a lot of memory. This means that it is not very efficient for maps with the lines consisting of many segments.

    DISPLACEMENT

    -The displacement is used when the lines overlap and/or are close to each -other at the current level of detail. In general, displacement methods -move the conflicting features apart so that they do not interact and can -be distinguished. +The displacement is used when the lines overlap and/or are close to each +other at the current level of detail. In general, displacement methods +move the conflicting features apart so that they do not interact and can +be distinguished. -

    This module implements an algorithm for displacement of linear features -based on the Snakes approach. This method generally yields very +

    This module implements an algorithm for displacement of linear features +based on the Snakes approach. This method generally yields very good results; however, it requires a lot of memory and is not very efficient. -

    Displacement is selected by method=displacement. It uses the +

    Displacement is selected by method=displacement. It uses the following parameters:

    • -threshold - specifies critical distance. Two features interact if +threshold - specifies critical distance. Two features interact if they are closer than threshold apart.
    • -alpha, beta - These parameters define the rigidity of lines. -For larger values of alpha, beta (>=1), the algorithm -does a better job at retaining the original shape of the lines, possibly +alpha, beta - These parameters define the rigidity of lines. +For larger values of alpha, beta (>=1), the algorithm +does a better job at retaining the original shape of the lines, possibly at the expense of displacement distance. If the values of alpha, -beta are too small (<=0.001), then the lines are moved -sufficiently, but the geometry and topology of lines can be destroyed. +beta are too small (<=0.001), then the lines are moved +sufficiently, but the geometry and topology of lines can be destroyed. Most likely the best way to find the good values of alpha, beta is by trial and error.
    • -iterations - denotes the number of iterations the interactions -between the lines are resolved. Good starting points for values of +iterations - denotes the number of iterations the interactions +between the lines are resolved. Good starting points for values of iterations are between 10 and 100.
    • @@ -256,28 +262,28 @@

      NETWORK GENERALIZATION

      with at least degree_thresh different lines.
    • -closeness_thresh - is always in the range (0, 1]. Only the lines -with the closeness centrality value at least closeness_thresh apart -are selected. The lines in the centre of a network have greater values of -this measure than the lines near the border of a network. This means that -this parameter can be used for selecting the centre(s) of a network. Note +closeness_thresh - is always in the range (0, 1]. Only the lines +with the closeness centrality value at least closeness_thresh apart +are selected. The lines in the centre of a network have greater values of +this measure than the lines near the border of a network. This means that +this parameter can be used for selecting the centre(s) of a network. Note that if closeness_thresh=0 then everything is selected.
    • -betweeness_thresh - Again, only the lines with a betweeness -centrality measure at least betweeness_thresh are selected. This -value is always positive and is larger for large networks. It denotes to -what extent a line is in between the other lines in the network. This -value is large for the lines which lie between other lines and lie on -the paths between two parts of a network. In the terminology of road +betweeness_thresh - Again, only the lines with a betweeness +centrality measure at least betweeness_thresh are selected. This +value is always positive and is larger for large networks. It denotes to +what extent a line is in between the other lines in the network. This +value is large for the lines which lie between other lines and lie on +the paths between two parts of a network. In the terminology of road networks, these are highways, bypasses, main roads/streets, etc.
    -All three parameters above can be presented at the same time. In that -case, the algorithm selects only the lines which meet each criterion. +All three parameters above can be presented at the same time. In that +case, the algorithm selects only the lines which meet each criterion. -

    Also, the outputed network may not be connected if the value of +

    Also, the outputed network may not be connected if the value of betweeness_thresh is too large.

    EXAMPLES

    @@ -317,7 +323,7 @@

    SMOOTHING EXAMPLE

    original map shown in black, smoothed map with 500% increased number of vertices shown in red)
    - - @@ -302,23 +302,23 @@

    Default connection settings as datasource (PostgreSQL only)

    OpenStreetMap (OSM)

    OSM data are available in -.osm (XML based) and .pbf (optimized binary) formats. The .pbf format -is recommended because file sizes are smaller. The OSM driver will +.osm (XML based) and .pbf (optimized binary) formats. The .pbf format +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. -
    • multilinestrings: "relation" features that form a -multilinestring(type = 'multilinestring' or type = 'route'). -
    • multipolygons: "relation" features that form a multipolygon (type -= 'multipolygon' or type = 'boundary'), and "way" features that are +
    • 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'). +
    • multipolygons: "relation" features that form a multipolygon (type += 'multipolygon' or type = 'boundary'), and "way" features that are recognized as area. -
    • other_relations: "relation" features that do +
    • other_relations: "relation" features that do 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 +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 <> ''"
    @@ -326,8 +326,8 @@ 

    OpenStreetMap (OSM)

    i.e. the OSM tag highway must be set.

    -When importing administrative boundaries from OSM, it is important to -not only select administrative boundaries, but also the admin level to +When importing administrative boundaries from OSM, it is important to +not only select administrative boundaries, but also the admin level to be imported (valid range is 1 - 11), e.g. with

    @@ -335,19 +335,19 @@ 

    OpenStreetMap (OSM)

    -The OSM topological model differs from the GRASS topological model. OSM -topologically correct connections of lines can be on all vertices of a -line. During import, lines are automatically split at those vertices +The OSM topological model differs from the GRASS topological model. OSM +topologically correct connections of lines can be on all vertices of a +line. During import, lines are automatically split at those vertices where an OSM connection to another line exists.

    -Import of OSM data requires a configuration file, defined with the -OSM_CONFIG_FILE configuration option. In the data folder of the GDAL +Import of OSM data requires a configuration file, defined with the +OSM_CONFIG_FILE configuration option. In the data folder of the GDAL distribution, you can find a osmconf.ini file -that can be customized to fit your needs. See -OSM map features -for keys and their values. You should set "other_tags=no" to -avoid problems with import or querying the imported vector. Once a +that can be customized to fit your needs. See +OSM map features +for keys and their values. You should set "other_tags=no" to +avoid problems with import or querying the imported vector. Once a OSM_CONFIG_FILE has been created, OSM data can be imported with e.g.

    @@ -370,7 +370,7 @@ 

    Multiple geometry columns

    geometry per feature. The number of geometry columns per feature can be checked by v.external together with -t flag. - +
     v.external -t input=20141130_ST_UKSH.xml.gz
     ...
    @@ -378,7 +378,7 @@ 

    Multiple geometry columns

    Okresy,multipolygon,1,OriginalniHranice Okresy,multipolygon,1,GeneralizovaneHranice ... -
    +
    In our example layer "Okresy" has three geometry columns: "DefinicniBod", "OriginalniHranice" and @@ -391,7 +391,7 @@

    Multiple geometry columns

     v.in.ogr input=20141130_ST_UKSH.xml.gz layer=Okresy geometry=OriginalniHranice
    -
    +

    WARNINGS

    diff --git a/vector/v.in.pdal/Makefile b/vector/v.in.pdal/Makefile index 7aa932d84ff..23badee9202 100644 --- a/vector/v.in.pdal/Makefile +++ b/vector/v.in.pdal/Makefile @@ -10,8 +10,6 @@ EXTRA_CFLAGS = $(VECT_CFLAGS) include $(MODULE_TOPDIR)/include/Make/Module.make -$(OBJDIR)/main.o : EXTRA_CFLAGS += $(PDALCPPFLAGS) - LINK = $(CXX) ifneq ($(strip $(CXX)),) diff --git a/vector/v.in.region/Makefile b/vector/v.in.region/Makefile index d8f82ddd186..9a1cca40be5 100644 --- a/vector/v.in.region/Makefile +++ b/vector/v.in.region/Makefile @@ -11,4 +11,3 @@ EXTRA_INC = $(VECT_INC) EXTRA_CFLAGS = $(VECT_CFLAGS) default: cmd - diff --git a/vector/v.in.region/v.in.region.html b/vector/v.in.region/v.in.region.html index 502001e2c7e..d09f4ef0f94 100644 --- a/vector/v.in.region/v.in.region.html +++ b/vector/v.in.region/v.in.region.html @@ -12,7 +12,7 @@

    DESCRIPTION

    EXAMPLE

    The example is based on the North Carolina sample data location. -To create a bounding box vector map based on a raster map, the +To create a bounding box vector map based on a raster map, the computational region is first set to the raster map. Then a vector bounding box is created based on the actual computational region (in this case precisely reflecting the pixel geometry of diff --git a/vector/v.info/v.info.html b/vector/v.info/v.info.html index 8602a52db4c..b58cee8f62b 100644 --- a/vector/v.info/v.info.html +++ b/vector/v.info/v.info.html @@ -87,7 +87,7 @@

    Attribute columns for given layer

    Basic metadata information in shell script style

    -v.info -get map=geology 
    +v.info -get map=geology
     
     name=geology
     mapset=PERMANENT
    @@ -142,7 +142,7 @@ 

    PYTHON

     import grass.script as gcore
    -    
    +
     gcore.vector_columns('geology')   # for `v.info -c`
     gcore.vector_info_topo('geology') # for `v.info shell=topo`
     
    diff --git a/vector/v.kcv/v.kcv.html b/vector/v.kcv/v.kcv.html index deac1818d6f..3e5b1b8a663 100644 --- a/vector/v.kcv/v.kcv.html +++ b/vector/v.kcv/v.kcv.html @@ -18,8 +18,8 @@

    DESCRIPTION

    NOTES

    -An ideal random sites generator will follow a Poisson distribution and -will only be as random as the original sites. This module simply +An ideal random sites generator will follow a Poisson distribution and +will only be as random as the original sites. This module simply divides vector points up in a random manner.

    @@ -54,7 +54,7 @@

    SEE ALSO

    AUTHORS

    James Darrell McCauley, -
    when he was at: +
    when he was at: Agricultural Engineering Purdue University diff --git a/vector/v.kernel/Makefile b/vector/v.kernel/Makefile index 50f1731863d..7013320be57 100644 --- a/vector/v.kernel/Makefile +++ b/vector/v.kernel/Makefile @@ -6,8 +6,7 @@ LIBES = $(GMATHLIB) $(VECTORLIB) $(RASTERLIB) $(GISLIB) $(MATHLIB) DEPENDENCIES = $(GMATHDEP) $(VECTORDEP) $(RASTERDEP) $(GISDEP) EXTRA_INC = $(VECT_INC) EXTRA_CFLAGS = $(VECT_CFLAGS) - -include $(MODULE_TOPDIR)/include/Make/Module.make -default: cmd +include $(MODULE_TOPDIR)/include/Make/Module.make +default: cmd diff --git a/vector/v.kernel/global.h b/vector/v.kernel/global.h index d7079804fa6..f00517bcdc9 100644 --- a/vector/v.kernel/global.h +++ b/vector/v.kernel/global.h @@ -25,7 +25,11 @@ double gaussianKernel(double x, double term); double invGaussian2d(double sigma, double prob); double gaussian2dByTerms(double d, double term1, double term2); +<<<<<<< HEAD double brent_iterate(double (*f)(), double x_lower, double x_upper, +======= +double brent_iterate(double (*f)(double), double x_lower, double x_upper, +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) int maxiter); double kernel1(double d, double rs, double lambda); double segno(double x); diff --git a/vector/v.kernel/v.kernel.html b/vector/v.kernel/v.kernel.html index 24663b1d1f0..f3f502a51fb 100644 --- a/vector/v.kernel/v.kernel.html +++ b/vector/v.kernel/v.kernel.html @@ -6,11 +6,11 @@

    DESCRIPTION

    density functions are uniform, triangular, epanechnikov, quartic, triweight, gaussian, cosine, default 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 -Okabe et al. (2009) produces unbiased density estimates. The equal split -method uses the kernel function selected with the kernel option +

    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 +Okabe et al. (2009) produces unbiased density estimates. The equal split +method uses the kernel function selected with the kernel option and can be enabled with node=split.

    NOTES

    @@ -19,13 +19,13 @@

    NOTES

    the resulting density in case of a vector map output is stored as category (integer). The density result stored as category may be multiplied by this number.

    -For the gaussian kernel, standard deviation for the -gaussian function +For the gaussian kernel, standard deviation for the +gaussian function is set to 1/4 of the radius.

    -With the -o flag (experimental) the command tries to calculate an -optimal radius. The value of radius is taken -as maximum value. The radius is calculated based on the gaussian function, +With the -o flag (experimental) the command tries to calculate an +optimal radius. The value of radius is taken +as maximum value. The radius is calculated based on the gaussian function, using ALL points, not just those in the current region.

    EXAMPLES

    @@ -44,15 +44,19 @@

    EXAMPLES

    KNOWN ISSUES

    +<<<<<<< HEAD The module only considers the presence of points, but not +======= +The module only considers the presence of points, but not +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) (yet) any attribute values.

    REFERENCES

      -
    • Okabe, A., Satoh, T., Sugihara, K. (2009). A kernel density estimation +
    • Okabe, A., Satoh, T., Sugihara, K. (2009). A kernel density estimation method for networks, its computational method and a GIS-based tool. -International Journal of Geographical Information Science, Vol 23(1), +International Journal of Geographical Information Science, Vol 23(1), pp. 7-32.
      DOI: 10.1080/13658810802475491
    diff --git a/vector/v.label.sa/annealing.c b/vector/v.label.sa/annealing.c index aaa038ecfd1..578d5d6555c 100644 --- a/vector/v.label.sa/annealing.c +++ b/vector/v.label.sa/annealing.c @@ -57,7 +57,7 @@ void simulate_annealing(label_t *labels, int n_labels, struct params *p) double dE; T = -1.0 / log(1.0 / 3.0); - unsigned int t, tot_better = 0, tot_worse = 0, tot_ign = 0; + unsigned int t; fprintf(stderr, "Optimizing label positions: ..."); for (t = 0; t < TEMP_DECS; t++) { @@ -96,7 +96,10 @@ void simulate_annealing(label_t *labels, int n_labels, struct params *p) lp->current_candidate = c; successes++; consec_successes++; +<<<<<<< HEAD tot_better++; +======= +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) } /* else apply with probability p=e^(-dE/T) */ else { @@ -110,15 +113,24 @@ void simulate_annealing(label_t *labels, int n_labels, struct params *p) lp->current_candidate = c; successes++; consec_successes++; +<<<<<<< HEAD tot_worse++; } else { tot_ign++; +======= + } + else { +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) consec_successes = 0; } } /* decrease immediately */ +<<<<<<< HEAD if (consec_successes > (5 * n_labels)) { +======= + if (consec_successes > (unsigned int)(5 * n_labels)) { +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) consec_successes = 0; break; } diff --git a/vector/v.label.sa/labels.c b/vector/v.label.sa/labels.c index 6b9ffc248e3..3141f7c583c 100644 --- a/vector/v.label.sa/labels.c +++ b/vector/v.label.sa/labels.c @@ -41,7 +41,8 @@ static double buffer = 0.0; label_t *labels_init(struct params *p, int *n_labels) { label_t *labels; - int legal_types, layer, i = 0, error, sql_len; + int legal_types, layer, error, sql_len; + unsigned int i = 0; size_t label_sz; struct field_info *fi; dbDriver *driver; diff --git a/vector/v.label/Makefile b/vector/v.label/Makefile index f8b38f2832c..9a082349322 100644 --- a/vector/v.label/Makefile +++ b/vector/v.label/Makefile @@ -11,4 +11,3 @@ EXTRA_CFLAGS = $(VECT_CFLAGS) include $(MODULE_TOPDIR)/include/Make/Module.make default: cmd - diff --git a/vector/v.label/v.label.html b/vector/v.label/v.label.html index e6e2b640d5a..1f05cf845ff 100644 --- a/vector/v.label/v.label.html +++ b/vector/v.label/v.label.html @@ -7,11 +7,11 @@

    DESCRIPTION

    NOTES

    If the fontsize option is given then the space option -is determined automatically from the current display window, +is determined automatically from the current display window, otherwise the space option should be set roughly the same as the size option.

    -A description of the labels file follows.

    +A description of the labels file follows.

    The file is located in $MAPSET/paint/labels/. The file is a plain-text ASCII file containing the following fields: @@ -23,7 +23,7 @@

    Caution: The following information may be incomplete, out of date, and wrong
    Lines in multiple line labels will appear one above the next. -More than one line of text can be specified by notating the end of a +More than one line of text can be specified by notating the end of a line with a '\n'.
    (e.g. SPEARFISH\nSOUTH DAKOTA). @@ -39,12 +39,12 @@

    Caution: The following information may be incomplete, out of date, and wrong
    Determines where the text will be located on the image. The user specifies the easting and northing, and -(optionally) specifies a vertical and horizontal -offset from the specified easting/northing. +(optionally) specifies a vertical and horizontal +offset from the specified easting/northing. These offsets are provided to allow finer placement of labels and -are measured in local pixels. Thus in -d.labels the offset is -measured in screen pixels, and in ps.map +are measured in local pixels. Thus in +d.labels the offset is +measured in screen pixels, and in ps.map the offset is measured in PostScript points (i.e. 1/72" steps). @@ -82,7 +82,7 @@

    Caution: The following information may be incomplete, out of date, and wrong

    Alternatively the path to a FreeType (.ttf) font may be given. (for d.labels only) -

    The word standard can be used to specify the default font +

    The word standard can be used to specify the default font (which is romans).

    Note ps.map can override this setting to use other fonts. Its default font is Helvetica. @@ -117,12 +117,12 @@

    Caution: The following information may be incomplete, out of date, and wrong
  • As red, green, blue percentages. for example: .5 .4 .7
    -(This form is not supported by +(This form is not supported by d.labels.)
  • By printer color number to get the exact printer color.
    -(This form is not supported by +(This form is not supported by d.labels.) --> diff --git a/vector/v.lidar.correction/Makefile b/vector/v.lidar.correction/Makefile index 55d98da19e9..7cbfdbfa044 100644 --- a/vector/v.lidar.correction/Makefile +++ b/vector/v.lidar.correction/Makefile @@ -10,4 +10,3 @@ EXTRA_CFLAGS = $(VECT_CFLAGS) include $(MODULE_TOPDIR)/include/Make/Module.make default: cmd - diff --git a/vector/v.lidar.correction/v.lidar.correction.html b/vector/v.lidar.correction/v.lidar.correction.html index 05f54e38189..6298e6d8155 100644 --- a/vector/v.lidar.correction/v.lidar.correction.html +++ b/vector/v.lidar.correction/v.lidar.correction.html @@ -1,22 +1,22 @@

    DESCRIPTION

    v.lidar.correction is the last of three steps to filter LiDAR -data. The filter aims to recognize and extract attached and -detached object (such as buildings, bridges, power lines, trees, etc.) -in order to create a Digital Terrain Model. +data. The filter aims to recognize and extract attached and +detached object (such as buildings, bridges, power lines, trees, etc.) +in order to create a Digital Terrain Model.

    -The module, which could be iterated several times, makes a comparison -between the LiDAR observations and a bilinear spline interpolation with -a Tychonov regularization parameter performed on the TERRAIN SINGLE PULSE -points only. The gradient is minimized by the regularization parameter. -Analysis of the residuals between the observations and the interpolated -values results in four cases (the next classification is referred to that +The module, which could be iterated several times, makes a comparison +between the LiDAR observations and a bilinear spline interpolation with +a Tychonov regularization parameter performed on the TERRAIN SINGLE PULSE +points only. The gradient is minimized by the regularization parameter. +Analysis of the residuals between the observations and the interpolated +values results in four cases (the next classification is referred to that of the v.lidar.growing output vector):

    a) Points classified as TERRAIN differing more than a threshold - value are interpreted and reclassified as OBJECT, for both single and + value are interpreted and reclassified as OBJECT, for both single and double pulse points.

    @@ -25,18 +25,18 @@

    DESCRIPTION

    both single and double pulse points.

    -The length (in mapping units) of each spline step is defined by -ew_step for the east-west direction and ns_step for the +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.

    NOTES

    -The input should be the output of v.lidar.growing module or the -output of this v.lidar.correction itself. That means, this module -could be applied more times (although, two are usually enough) for a better -filter solution. The outputs are a vector map with a final point classification -as as TERRAIN SINGLE PULSE, TERRAIN DOUBLE PULSE, OBJECT SINGLE PULSE or -OBJECT DOUBLE PULSE; and an vector map with only the points classified as +The input should be the output of v.lidar.growing module or the +output of this v.lidar.correction itself. That means, this module +could be applied more times (although, two are usually enough) for a better +filter solution. The outputs are a vector map with a final point classification +as as TERRAIN SINGLE PULSE, TERRAIN DOUBLE PULSE, OBJECT SINGLE PULSE or +OBJECT DOUBLE PULSE; and an vector map with only the points classified as TERRAIN SINGLE PULSE or TERRAIN DOUBLE PULSE. The final result of the whole procedure (v.lidar.edgedetection, @@ -66,6 +66,7 @@

    Second correction procedure

    REFERENCES

    +<<<<<<< HEAD Antolin, R. et al., 2006. Digital terrain models determination by LiDAR technology: Po basin experimentation. Bolletino di Geodesia e Scienze Affini, anno LXV, n. 2, pp. 69-89. @@ -86,12 +87,39 @@

    REFERENCES



    Brovelli M. A., Cannata M. and Longoni U.M., 2002. DTM LIDAR in area urbana, +======= +Antolin, R. et al., 2006. Digital terrain models determination by LiDAR +technology: Po basin experimentation. Bolletino di Geodesia e Scienze +Affini, anno LXV, n. 2, pp. 69-89. +
    +
    +Brovelli M. A., Cannata M., Longoni U.M., 2004. LIDAR Data Filtering and +DTM Interpolation Within GRASS, Transactions in GIS, April 2004, vol. 8, +iss. 2, pp. 155-174(20), Blackwell Publishing Ltd. +
    +
    +Brovelli M. A., Cannata M., 2004. Digital Terrain model reconstruction in +urban areas from airborne laser scanning data: the method and an example +for Pavia (Northern Italy). Computers and Geosciences 30 (2004) pp.325-331 +
    +
    +Brovelli M. A. and Longoni U.M., 2003. Software per il filtraggio di dati +LIDAR, Rivista dell'Agenzia del Territorio, n. 3-2003, pp. 11-22 (ISSN 1593-2192). +
    +
    +Brovelli M. A., Cannata M. and Longoni U.M., 2002. DTM LIDAR in area urbana, +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) Bollettino SIFET N.2, pp. 7-26.

    Performances of the filter can be seen in the +<<<<<<< HEAD ISPRS WG III/3 Comparison of Filters report by Sithole, G. and Vosselman, G., 2003. +======= +ISPRS WG III/3 Comparison of Filters +report by Sithole, G. and Vosselman, G., 2003. +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794))

    SEE ALSO

    diff --git a/vector/v.lidar.edgedetection/Makefile b/vector/v.lidar.edgedetection/Makefile index f050595324c..cad9d56a262 100644 --- a/vector/v.lidar.edgedetection/Makefile +++ b/vector/v.lidar.edgedetection/Makefile @@ -5,9 +5,8 @@ PGM = v.lidar.edgedetection LIBES = $(LIDARLIB) $(GMATHLIB) $(VECTORLIB) $(DBMILIB) $(GISLIB) $(MATHLIB) DEPENDENCIES = $(LIDARDEP) $(GMATHDEP) $(VECTORDEP) $(DBMIDEP) $(GISDEP) EXTRA_INC = $(VECT_INC) -EXTRA_CFLAGS = $(VECT_CFLAGS) +EXTRA_CFLAGS = $(VECT_CFLAGS) include $(MODULE_TOPDIR)/include/Make/Module.make default: cmd - diff --git a/vector/v.lidar.edgedetection/v.lidar.edgedetection.html b/vector/v.lidar.edgedetection/v.lidar.edgedetection.html index c0f8109f4d2..08fd672d266 100644 --- a/vector/v.lidar.edgedetection/v.lidar.edgedetection.html +++ b/vector/v.lidar.edgedetection/v.lidar.edgedetection.html @@ -1,48 +1,48 @@

    DESCRIPTION

    v.lidar.edgedetection is the first of three steps to filter -LiDAR data. The filter aims to recognize and extract attached and -detached object (such as buildings, bridges, power lines, trees, etc.) -in order to create a Digital Terrain Model. +LiDAR data. The filter aims to recognize and extract attached and +detached object (such as buildings, bridges, power lines, trees, etc.) +in order to create a Digital Terrain Model.

    -In particular, this module detects the edge of each single feature over -the terrain surface of a LIDAR point surface. First of all, a bilinear -spline interpolation with a Tychonov regularization parameter is -performed. The gradient is minimized and the low Tychonov regularization -parameter brings the interpolated functions as close as possible to the -observations. Bicubic spline interpolation with Tychonov regularization -is then performed. However, now the curvature is minimized and the -regularization parameter is set to a high value. For each point, an -interpolated value is computed from the bicubic surface and an interpolated -gradient is computed from the bilinear surface. At each point the gradient -magnitude and the direction of the edge vector are calculated, and the -residual between interpolated and observed values is computed. Two thresholds -are defined on the gradient, a high threshold tgh and a low one -tgl. For each point, if the gradient magnitude is greater than or -equal to the high threshold and its residual is greater than or equal to -zero, it is labeled as an EDGE point. Similarly a point is labeled as -being an EDGE point if the gradient magnitude is greater than or equal to -the low threshold, its residual is greater than or equal to zero, and the -gradient to two of eight neighboring points is greater than the high +In particular, this module detects the edge of each single feature over +the terrain surface of a LIDAR point surface. First of all, a bilinear +spline interpolation with a Tychonov regularization parameter is +performed. The gradient is minimized and the low Tychonov regularization +parameter brings the interpolated functions as close as possible to the +observations. Bicubic spline interpolation with Tychonov regularization +is then performed. However, now the curvature is minimized and the +regularization parameter is set to a high value. For each point, an +interpolated value is computed from the bicubic surface and an interpolated +gradient is computed from the bilinear surface. At each point the gradient +magnitude and the direction of the edge vector are calculated, and the +residual between interpolated and observed values is computed. Two thresholds +are defined on the gradient, a high threshold tgh and a low one +tgl. For each point, if the gradient magnitude is greater than or +equal to the high threshold and its residual is greater than or equal to +zero, it is labeled as an EDGE point. Similarly a point is labeled as +being an EDGE point if the gradient magnitude is greater than or equal to +the low threshold, its residual is greater than or equal to zero, and the +gradient to two of eight neighboring points is greater than the high threshold. Other points are classified as TERRAIN.

    -The length (in mapping units) of each spline step is defined by -ew_step for the east-west direction and ns_step for the +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.

    -The output will be a vector map in which points has been classified as -TERRAIN, EDGE or UNKNOWN. This vector map should be the input of +The output will be a vector map in which points has been classified as +TERRAIN, EDGE or UNKNOWN. This vector map should be the input of v.lidar.growing module.

    NOTES

    -In this module, an external table will be created which will be useful for -the next module of the procedure of LiDAR data filtering. In this table -the interpolated height values of each point will be recorded. Also points +In this module, an external table will be created which will be useful for +the next module of the procedure of LiDAR data filtering. In this table +the interpolated height values of each point will be recorded. Also points in the output vector map will be classified as:
    @@ -128,21 +128,21 @@ 

    Complete workflow

    REFERENCES

      -
    • Antolin, R. et al., 2006. Digital terrain models determination by LiDAR -technology: Po basin experimentation. Bolletino di Geodesia e Scienze +
    • Antolin, R. et al., 2006. Digital terrain models determination by LiDAR +technology: Po basin experimentation. Bolletino di Geodesia e Scienze Affini, anno LXV, n. 2, pp. 69-89.
    • -
    • Brovelli M. A., Cannata M., Longoni U.M., 2004. LIDAR Data Filtering and -DTM Interpolation Within GRASS, Transactions in GIS, April 2004, vol. 8, +
    • Brovelli M. A., Cannata M., Longoni U.M., 2004. LIDAR Data Filtering and +DTM Interpolation Within GRASS, Transactions in GIS, April 2004, vol. 8, iss. 2, pp. 155-174(20), Blackwell Publishing Ltd.
    • -
    • Brovelli M. A., Cannata M., 2004. Digital Terrain model reconstruction in -urban areas from airborne laser scanning data: the method and an example +
    • Brovelli M. A., Cannata M., 2004. Digital Terrain model reconstruction in +urban areas from airborne laser scanning data: the method and an example for Pavia (Northern Italy). Computers and Geosciences 30 (2004) pp.325-331
    • -
    • Brovelli M. A. and Longoni U.M., 2003. Software per il filtraggio di dati +
    • Brovelli M. A. and Longoni U.M., 2003. Software per il filtraggio di dati LIDAR, Rivista dell'Agenzia del Territorio, n. 3-2003, pp. 11-22 (ISSN 1593-2192).
    • -
    • Brovelli M. A., Cannata M. and Longoni U.M., 2002. DTM LIDAR in area urbana, +
    • Brovelli M. A., Cannata M. and Longoni U.M., 2002. DTM LIDAR in area urbana, Bollettino SIFET N.2, pp. 7-26.
    • Performances of the filter can be seen in the -ISPRS WG III/3 Comparison of Filters +ISPRS WG III/3 Comparison of Filters report by Sithole, G. and Vosselman, G., 2003.
    diff --git a/vector/v.lidar.growing/Makefile b/vector/v.lidar.growing/Makefile index fbd240e540f..ac1ad830303 100644 --- a/vector/v.lidar.growing/Makefile +++ b/vector/v.lidar.growing/Makefile @@ -10,4 +10,3 @@ EXTRA_CFLAGS = $(VECT_CFLAGS) include $(MODULE_TOPDIR)/include/Make/Module.make default: cmd - diff --git a/vector/v.lidar.growing/growing.c b/vector/v.lidar.growing/growing.c index 023ec7410f4..7f2b8b3ca4f 100644 --- a/vector/v.lidar.growing/growing.c +++ b/vector/v.lidar.growing/growing.c @@ -6,8 +6,6 @@ void P_Aux_to_Coor(struct Map_info *In, struct Map_info *Out, dbDriver *driver, FILE *fsite) { - - int cont = 0; int more, ltype, line_num, ID_type, Interp_type; double quotaZ; @@ -29,6 +27,7 @@ void P_Aux_to_Coor(struct Map_info *In, struct Map_info *Out, dbDriver *driver, db_open_select_cursor(driver, &sql, &cursor, DB_SEQUENTIAL); while (db_fetch(&cursor, DB_NEXT, &more) == DB_OK && more) { +<<<<<<< HEAD cont++; table = db_get_cursor_table(&cursor); @@ -57,6 +56,34 @@ void P_Aux_to_Coor(struct Map_info *In, struct Map_info *Out, dbDriver *driver, if (!(ltype & GV_POINT)) continue; +======= + table = db_get_cursor_table(&cursor); + + ID_column = db_get_table_column(table, 0); + Interp_column = db_get_table_column(table, 1); + + ID_type = db_sqltype_to_Ctype(db_get_column_sqltype(ID_column)); + Interp_type = db_sqltype_to_Ctype(db_get_column_sqltype(Interp_column)); + + if (ID_type == DB_C_TYPE_INT) + ID_value = db_get_column_value(ID_column); + else + continue; + + if (Interp_type == DB_C_TYPE_DOUBLE) + Interp_value = db_get_column_value(Interp_column); + else + continue; + + line_num = db_get_value_int(ID_value); + quotaZ = db_get_value_double(Interp_value); + + ltype = Vect_read_line(In, point, cat, line_num); + + if (!(ltype & GV_POINT)) + continue; + +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) point->z[0] = quotaZ; Vect_write_line(Out, ltype, point, cat); } diff --git a/vector/v.lidar.growing/main.c b/vector/v.lidar.growing/main.c index 7f6d5ed9676..24fada74d44 100644 --- a/vector/v.lidar.growing/main.c +++ b/vector/v.lidar.growing/main.c @@ -36,7 +36,7 @@ int main(int argc, char *argv[]) int nsubregion_col, nsubregion_row; int subregion = 0, nsubregions = 0; int last_row, last_column; - int nlines, nlines_first, line_num; + int line_num; int more; int clas, region = TRUE; double Z_interp; @@ -174,23 +174,31 @@ int main(int argc, char *argv[]) count_obj = 1; /* no topology, get number of lines in input vector */ - nlines = 0; points = Vect_new_line_struct(); Cats = Vect_new_cats_struct(); Vect_rewind(&In); +<<<<<<< HEAD while (Vect_read_next_line(&In, points, Cats) > 0) { nlines++; } +======= + while (Vect_read_next_line(&In, points, Cats) > 0) + ; +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) Vect_rewind(&In); /* no topology, get number of lines in first pulse input vector */ - nlines_first = 0; points_first = Vect_new_line_struct(); Cats_first = Vect_new_cats_struct(); Vect_rewind(&First); +<<<<<<< HEAD while (Vect_read_next_line(&First, points_first, Cats_first) > 0) { nlines_first++; } +======= + while (Vect_read_next_line(&First, points_first, Cats_first) > 0) + ; +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) Vect_rewind(&First); /* Setting regions and boxes */ diff --git a/vector/v.lidar.growing/v.lidar.growing.html b/vector/v.lidar.growing/v.lidar.growing.html index 977217c9153..83f1e1cf718 100644 --- a/vector/v.lidar.growing/v.lidar.growing.html +++ b/vector/v.lidar.growing/v.lidar.growing.html @@ -1,28 +1,28 @@

    DESCRIPTION

    -v.lidar.growing is the second of three steps to filter LiDAR data. -The filter aims to recognize and extract attached and detached object -(such as buildings, bridges, power lines, trees, etc.) in order to create -a Digital Terrain Model. +v.lidar.growing is the second of three steps to filter LiDAR data. +The filter aims to recognize and extract attached and detached object +(such as buildings, bridges, power lines, trees, etc.) in order to create +a Digital Terrain Model.

    -The modules identifies which is the internal area of every object on a -LiDAR point surface. The classification categories from -v.lidar.edgedetection are now rasterized. For each cell, it is -evaluated if it (the cell) contains a point with double impulse (difference -between the first and last pulse greater than a given threshold). Starting -from cells classified as OBJECT and with only one pulse all linked cells -are selected and a convex hull algorithm is applied to them. Simultaneously, -the mean of the corresponding heights (mean edge height) are computed. -Points inside the convex hull are classified as OBJECT if their height is -greater than or equal to the previously mean computed edge height. This +The modules identifies which is the internal area of every object on a +LiDAR point surface. The classification categories from +v.lidar.edgedetection are now rasterized. For each cell, it is +evaluated if it (the cell) contains a point with double impulse (difference +between the first and last pulse greater than a given threshold). Starting +from cells classified as OBJECT and with only one pulse all linked cells +are selected and a convex hull algorithm is applied to them. Simultaneously, +the mean of the corresponding heights (mean edge height) are computed. +Points inside the convex hull are classified as OBJECT if their height is +greater than or equal to the previously mean computed edge height. This last step is done only in case of high planimetric resolution.

    NOTES

    The input data should be the output result of the v.lidar.edgedetection, -module. Otherwise, it goes to error! The output of this module will be -the input of v.lidar.correction module. The output will be a vector +module. Otherwise, it goes to error! The output of this module will be +the input of v.lidar.correction module. The output will be a vector map which points are pre-classified as:

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

    NOTES



    -The final result of the whole procedure (v.lidar.edgedetection, -v.lidar.growing, v.lidar.correction) will be a point +The final result of the whole procedure (v.lidar.edgedetection, +v.lidar.growing, v.lidar.correction) will be a point classification in the same categories as above.

    EXAMPLES

    @@ -49,6 +49,7 @@

    Basic region growing procedure

    REFERENCES

    +<<<<<<< HEAD Antolin, R. et al., 2006. Digital terrain models determination by LiDAR technology: Po basin experimentation. Bolletino di Geodesia e Scienze Affini, anno LXV, n. 2, pp. 69-89. @@ -69,6 +70,28 @@

    REFERENCES

    Performances of the filter can be seen in the ISPRS WG III/3 Comparison of Filters +======= +Antolin, R. et al., 2006. Digital terrain models determination by LiDAR +technology: Po basin experimentation. Bolletino di Geodesia e Scienze +Affini, anno LXV, n. 2, pp. 69-89. +

    +Brovelli M. A., Cannata M., Longoni U.M., 2004. LIDAR Data Filtering and +DTM Interpolation Within GRASS, Transactions in GIS, April 2004, vol. 8, +iss. 2, pp. 155-174(20), Blackwell Publishing Ltd. +

    +Brovelli M. A., Cannata M., 2004. Digital Terrain model reconstruction in +urban areas from airborne laser scanning data: the method and an example +for Pavia (Northern Italy). Computers and Geosciences 30 (2004) pp.325-331 +

    +Brovelli M. A. and Longoni U.M., 2003. Software per il filtraggio di dati +LIDAR, Rivista dell?Agenzia del Territorio, n. 3-2003, pp. 11-22 (ISSN 1593-2192). +

    +Brovelli M. A., Cannata M. and Longoni U.M., 2002. DTM LIDAR in area urbana, +Bollettino SIFET N.2, pp. 7-26. +

    +Performances of the filter can be seen in the +ISPRS WG III/3 Comparison of Filters +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) report by Sithole, G. and Vosselman, G., 2003.

    SEE ALSO

    diff --git a/vector/v.lrs/MAIL b/vector/v.lrs/MAIL index 5956b22e007..556fa1b207b 100644 --- a/vector/v.lrs/MAIL +++ b/vector/v.lrs/MAIL @@ -17,7 +17,7 @@ On Thursday 29 April 2004 04:42, you wrote: > Hi, > > I followed the ESRI way (the shapefile way and not the coverage way -> though). So, each vertex has a measure value. +> though). So, each vertex has a measure value. How do you store the 'measure'? PostGIS does not have measure AFAIK. @@ -28,27 +28,27 @@ Neither did I. > Regarding your two draw-backs of the "ESRI" system: > 1. what do you mean with Mile post not being precise? The system does not > have MP, but you can rather use it to create a layer with MPs. The measures -> with the vertices are used to tell you how far along the line your are. +> with the vertices are used to tell you how far along the line your are. -Or vice versa, MPs can (must!?) be used to create LRS. In fact I cannot find -how ESRI creates LRS. -What data are you working with? We have for example the layer of roads -(lines) and the layer of mileposts (points). I take these two layer -and make LRS from them. +Or vice versa, MPs can (must!?) be used to create LRS. In fact I cannot find +how ESRI creates LRS. +What data are you working with? We have for example the layer of roads +(lines) and the layer of mileposts (points). I take these two layer +and make LRS from them. -My objection is, that if the MP (input point) is not near a vertex on the line, -and previous and next segment have different scale, you get an error, +My objection is, that if the MP (input point) is not near a vertex on the line, +and previous and next segment have different scale, you get an error, which is not necessary. But well, probably not so important. Example: --- line + vertex x1 milepost with km +--------------+------+ -x0 x1 x2 +x0 x1 x2 The distance x0-x1 in GIS = 0.8 km (real world 1km) The distance x1-x2 in GIS = 1.2 km (real world 1km) -Note that of course the distances measured in GIS differ from those +Note that of course the distances measured in GIS differ from those in real world and may be both longer and shorter Now we have 3 vertices, the first will have measure 0, the third measure 2. @@ -57,7 +57,7 @@ the MP is: +--------+-----+------+ x0 x1 x2 -> 2. With smooth changes you mean a gradual change in an attribute? +> 2. With smooth changes you mean a gradual change in an attribute? > Like the decline of O2 concentration in a polluted stream? I believe this type of > data would be hard to map with any system, since attributes are discrete > entities. @@ -69,9 +69,9 @@ is to change always all mileposts. > Yes, it would be nice to have a compatible system. Do you have more > documentation on the LRS in GRASS? At the first glance, it seems to have a -> bit more overhead than the ESRI (or Oracle spatial) model. +> bit more overhead than the ESRI (or Oracle spatial) model. -I don't have any documentation, as we use it only here. I have to write +I don't have any documentation, as we use it only here. I have to write something, but I don't have much time, let me know if you are interested. For now briefly: All the LRS is stored in one table, each record stores information @@ -86,27 +86,27 @@ about one segment between two mileposts: end_mp | float8 | milepost on the end of the segment end_off | float8 | offset on the end of the segment -Say the you want to georeference a point specified by route id = 456 and +Say the you want to georeference a point specified by route id = 456 and km+offset = 15+300. -You find a record which has +You find a record which has lid = 456 and start_mp < 15 and start_off < 300 and end_mp > 15 and end_off > 300 now it is possible to calculate the distance from the beginning of the line in GIS. -In fact, I have here also simple web application which works with +In fact, I have here also simple web application which works with this table in Postgres and line layer in PostGIS using a function in Postgres. > Also, what do you do, when you add additional segments between the 3rd and 4th MP (in -> addition to the two points)? +> addition to the two points)? -Whole part between 3 and 4 must be referenced from 3, but such changes -are not frequent in real world and to change only the part between 3 and 4 +Whole part between 3 and 4 must be referenced from 3, but such changes +are not frequent in real world and to change only the part between 3 and 4 is not so difficult (still talking about changes in real world, traffic signs for example, signs along the river etc.) > Are there any other systems/data formats that > implement this LRS model? -I dont know any published, there is certainly one in MGE and I am +I dont know any published, there is certainly one in MGE and I am almost sure that it is different from ESRI. > Christoph @@ -117,5 +117,3 @@ almost sure that it is different from ESRI. I would prefere mails. Radim - - diff --git a/vector/v.lrs/Makefile b/vector/v.lrs/Makefile index 7749a5f728a..a1d789dcabb 100644 --- a/vector/v.lrs/Makefile +++ b/vector/v.lrs/Makefile @@ -18,4 +18,3 @@ default: parsubdirs htmldir $(SUBDIRS1): lib - diff --git a/vector/v.lrs/lib/Makefile b/vector/v.lrs/lib/Makefile index 048bffff3e1..f69f7ee9f2d 100644 --- a/vector/v.lrs/lib/Makefile +++ b/vector/v.lrs/lib/Makefile @@ -12,5 +12,3 @@ default: lib $(ARCH_INCDIR)/lrs.h $(ARCH_INCDIR)/lrs.h: lrs.h $(INSTALL_DATA) lrs.h $(ARCH_INCDIR)/lrs.h - - diff --git a/vector/v.lrs/lrs.html b/vector/v.lrs/lrs.html index da4b90d907d..027f72d44ce 100644 --- a/vector/v.lrs/lrs.html +++ b/vector/v.lrs/lrs.html @@ -11,18 +11,18 @@

    DESCRIPTION

    points or lines (segments).

    -LRS is created from input lines and points in vector map. -Points - MP (mileposts) must have attached attributes specifying -line and distance. +LRS is created from input lines and points in vector map. +Points - MP (mileposts) must have attached attributes specifying +line and distance. The distances from the beginning of the linear feature in real world -are specified by MP+offset. +are specified by MP+offset. Typically, MP is in kilometers and offset in meters.

    The implementation of LRS in GRASS has some particularities.

    Double referenced system

    -This feature gives a possibility to continue to use most of +This feature gives a possibility to continue to use most of old mileposts if only small part of linear object in real world has changed. Example:
    @@ -33,7 +33,7 @@ 

    Double referenced system

    Old situation:
    -+----+----+----+----+----+ 
    ++----+----+----+----+----+
     0    2    3    4    5    6
     
    @@ -44,14 +44,14 @@

    Double referenced system

    +----+ | | | | -+----+----+ +----+----+ ++----+----+ +----+----+ 0 2 3 4 5 6
    -The segment between km 3 and 4 is now longer, it is now 3 km -not 1 km as in old version. It would be expensive to change also +The segment between km 3 and 4 is now longer, it is now 3 km +not 1 km as in old version. It would be expensive to change also all MP >= 4, but we cannot use km 4 twice. -It is possible to use another notation for the new segment, +It is possible to use another notation for the new segment, we reference the segment from the kilometer 3, using only offset.
    @@ -59,13 +59,13 @@ 

    Double referenced system

    +----+ | | | | -+----+----+ +----+----+ ++----+----+ +----+----+ 0 2 3 3+3000 5 6 4
    -This way, there is no ambiguity and minimal changes are needed. -But the MP 4 is no more the end of segment 3 - 4 but +This way, there is no ambiguity and minimal changes are needed. +But the MP 4 is no more the end of segment 3 - 4 but the end of segment 3+2000 - 3+3000. This information must be entered to the system and it is done by optional MP attributes: @@ -83,15 +83,15 @@

    Double referenced system

    Because each MP can keep 2 values (start, end) it is called 'double' referenced LRS.

    -To avoid potential confusion, MP values are limited to integers only. -It would be ambiguous to have for example segments 3.500 - 3.500+200 -and 3.600 - 3.600+200. The position 3+650 would fall into 2 segments, -correct would be 3.600+50. -That means, that MP must be the beginning of antonomous segment -and all parts which becomes longer then before must be referenced +To avoid potential confusion, MP values are limited to integers only. +It would be ambiguous to have for example segments 3.500 - 3.500+200 +and 3.600 - 3.600+200. The position 3+650 would fall into 2 segments, +correct would be 3.600+50. +That means, that MP must be the beginning of antonomous segment +and all parts which becomes longer then before must be referenced from the last not changed MP.

    -The MP start_mp and end_mp columns must be decimal, but +The MP start_mp and end_mp columns must be decimal, but v.lrs.create takes only the decimal part, and adds its value to offset and prints a warning.

    @@ -125,7 +125,7 @@

    Available commands

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

    -v.lrs.create joins all connected lines of the same line ID into one line, +v.lrs.create joins all connected lines of the same line ID into one line, the LRS library and other modules using LRS expect this! LR_get_nearest_offset in the LRS library checks duplicate segments only by line_cat and map_offset, not by coordinates in map. @@ -146,10 +146,10 @@

    Duplicate positions

    + road1/km15 + road1/km22 \ / \ road1/km17 / road1/km20 - +--------------+ + +--------------+ / road2/km52 \ road2/km52 / \ - + road2/km50 + road2/km54 + + road2/km50 + road2/km54

    NOTES

    diff --git a/vector/v.lrs/v.lrs.create/Makefile b/vector/v.lrs/v.lrs.create/Makefile index 8968b91d97e..2a5bed4dfff 100644 --- a/vector/v.lrs/v.lrs.create/Makefile +++ b/vector/v.lrs/v.lrs.create/Makefile @@ -8,11 +8,7 @@ include $(MODULE_TOPDIR)/include/Make/Module.make DEPENDENCIES = $(LRSDEP) $(VECTORDEP) $(DBMIDEP) $(GISDEP) LIBES = $(LRSLIB) $(VECTORLIB) $(DBMILIB) $(GISLIB) $(MATHLIB) -EXTRA_INC = $(VECT_INC) +EXTRA_INC = $(VECT_INC) EXTRA_CFLAGS = $(VECT_CFLAGS) default: cmd - - - - diff --git a/vector/v.lrs/v.lrs.create/v.lrs.create.html b/vector/v.lrs/v.lrs.create/v.lrs.create.html index 6c9717f3b69..518bb80fedf 100644 --- a/vector/v.lrs/v.lrs.create/v.lrs.create.html +++ b/vector/v.lrs/v.lrs.create/v.lrs.create.html @@ -24,7 +24,7 @@

    EXAMPLE

    This example is written for the Spearfish dataset.

    -As first step, bus route data are prepared. +As first step, bus route data are prepared.

     # break into segments for correct route selection
    diff --git a/vector/v.lrs/v.lrs.label/Makefile b/vector/v.lrs/v.lrs.label/Makefile
    index 38a2bb8ddc8..868e316e6bf 100644
    --- a/vector/v.lrs/v.lrs.label/Makefile
    +++ b/vector/v.lrs/v.lrs.label/Makefile
    @@ -12,4 +12,3 @@ EXTRA_INC = $(VECT_INC)
     EXTRA_CFLAGS = $(VECT_CFLAGS)
     
     default: cmd
    -
    diff --git a/vector/v.lrs/v.lrs.segment/Makefile b/vector/v.lrs/v.lrs.segment/Makefile
    index a6d68f6c77b..1c30c0f0375 100644
    --- a/vector/v.lrs/v.lrs.segment/Makefile
    +++ b/vector/v.lrs/v.lrs.segment/Makefile
    @@ -12,4 +12,3 @@ EXTRA_INC = $(VECT_INC)
     EXTRA_CFLAGS = $(VECT_CFLAGS)
     
     default: cmd
    -
    diff --git a/vector/v.lrs/v.lrs.where/Makefile b/vector/v.lrs/v.lrs.where/Makefile
    index e989b768b7a..39212163b3b 100644
    --- a/vector/v.lrs/v.lrs.where/Makefile
    +++ b/vector/v.lrs/v.lrs.where/Makefile
    @@ -12,4 +12,3 @@ EXTRA_INC = $(VECT_INC)
     EXTRA_CFLAGS = $(VECT_CFLAGS)
     
     default: cmd
    -
    diff --git a/vector/v.mkgrid/v.mkgrid.html b/vector/v.mkgrid/v.mkgrid.html
    index 01fa094bd40..1a196f77b6b 100644
    --- a/vector/v.mkgrid/v.mkgrid.html
    +++ b/vector/v.mkgrid/v.mkgrid.html
    @@ -1,26 +1,26 @@
     

    DESCRIPTION

    -v.mkgrid creates a vector map representation of a regular +v.mkgrid creates a vector map representation of a regular coordinate grid. Point, line, and area vector grids can be created.

    NOTES

    -Grid points created with the type=point option will be placed at -the center of each grid cell, like centroids with the default -type=area option. +Grid points created with the type=point option will be placed at +the center of each grid cell, like centroids with the default +type=area option.

    -Grid lines created with the type=line option will be identical to -the edges of each grid cell, like boundaries with the default -type=area option. +Grid lines created with the type=line option will be identical to +the edges of each grid cell, like boundaries with the default +type=area option.

    -The resultant grid can be rotated around the origin (center of the +The resultant grid can be rotated around the origin (center of the grid) with the angle option.

    -Optionally hexagons can be created with the -h flag. Hexagons -are by default symmetric. Asymmetric hexagons can be allowed with the +Optionally hexagons can be created with the -h flag. Hexagons +are by default symmetric. Asymmetric hexagons can be allowed with the -a flag.

    -This module is NOT to be used to generate a vector map of USGS +This module is NOT to be used to generate a vector map of USGS quadrangles, because USGS quads are not exact rectangles.

    EXAMPLES

    @@ -185,7 +185,11 @@

    SEE ALSO

    AUTHORS

    Michael Higgins, -U.S.Army Construction Engineering +U.S.Army Construction Engineering Research Laboratory

    +<<<<<<< HEAD Update for new vectors Radim Blazek 10/2004 +======= +Update for new vectors Radim Blazek 10/2004 +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) diff --git a/vector/v.neighbors/Makefile b/vector/v.neighbors/Makefile index ba3c8c2403b..d72705b0c03 100644 --- a/vector/v.neighbors/Makefile +++ b/vector/v.neighbors/Makefile @@ -2,7 +2,7 @@ MODULE_TOPDIR = ../.. PGM = v.neighbors -LIBES = $(VECTORLIB) $(RASTERLIB) $(STATSLIB) $(DBMILIB) $(GISLIB) +LIBES = $(VECTORLIB) $(RASTERLIB) $(STATSLIB) $(DBMILIB) $(GISLIB) DEPENDENCIES = $(VECTORDEP) $(RASTERDEP) $(STATSDEP) $(DBMIDEP) $(GISDEP) EXTRA_INC = $(VECT_INC) diff --git a/vector/v.neighbors/v.neighbors.html b/vector/v.neighbors/v.neighbors.html index cab2217af63..3c1c2dd4a20 100644 --- a/vector/v.neighbors/v.neighbors.html +++ b/vector/v.neighbors/v.neighbors.html @@ -1,10 +1,10 @@

    DESCRIPTION

    -This module makes each cell value a function of the attribute values assigned -to the vector points or centroids in an area around the cell with a diameter of +This module makes each cell value a function of the attribute values assigned +to the vector points or centroids in an area around the cell with a diameter of size around it, and stores the new cell values in the output raster map layer. By default, the module just counts the number of points. The -user can also choose amongst a variety of aggregate statistics using the +user can also choose amongst a variety of aggregate statistics using the parameter method. These statistics are calculated on the attributes in the point_column. Using the usual cats and where parameters the user can chose to take only a subset of the points into account. @@ -13,7 +13,7 @@

    DESCRIPTION

    Note that size is defined as the diameter, and so has to be twice the wanted search radius, and that the module works within the current computational region which can be adjusted using g.region. If the -vector map falls completely outside the current region, the module will stop +vector map falls completely outside the current region, the module will stop with an error.

    EXAMPLE

    @@ -45,7 +45,7 @@

    EXAMPLE

    SEE ALSO

    -r.neighbors, +r.neighbors, v.vect.stats diff --git a/vector/v.net.alloc/Makefile b/vector/v.net.alloc/Makefile index a6765bce420..cd14e054f53 100644 --- a/vector/v.net.alloc/Makefile +++ b/vector/v.net.alloc/Makefile @@ -11,7 +11,3 @@ EXTRA_CFLAGS = $(VECT_CFLAGS) include $(MODULE_TOPDIR)/include/Make/Module.make default: cmd - - - - diff --git a/vector/v.net.alloc/v.net.alloc.html b/vector/v.net.alloc/v.net.alloc.html index 7027b9bd64e..2a1f0efd1cb 100644 --- a/vector/v.net.alloc/v.net.alloc.html +++ b/vector/v.net.alloc/v.net.alloc.html @@ -1,54 +1,54 @@

    DESCRIPTION

    -v.net.alloc allocates subnets for nearest centers. Center -nodes must be opened (costs >= 0). Costs of center nodes are used in -the calculation. +v.net.alloc allocates subnets for nearest centers. Center +nodes must be opened (costs >= 0). Costs of center nodes are used in +the calculation.

    -Costs may be either line lengths, or attributes saved in a -database table. These attribute values are taken as costs of whole -segments, not as costs to traverse a length unit (e.g. meter) of the -segment. For example, if the speed limit is 100 km / h, the cost to +Costs may be either line lengths, or attributes saved in a +database table. These attribute values are taken as costs of whole +segments, not as costs to traverse a length unit (e.g. meter) of the +segment. For example, if the speed limit is 100 km / h, the cost to traverse a 10 km long road segment must be calculated as
    length / speed = 10 km / (100 km/h) = 0.1 h.
    -Supported are cost assignments for both arcs and nodes, -and also different costs for both directions of a vector line. +Supported are cost assignments for both arcs and nodes, +and also different costs for both directions of a vector line. For areas, costs will be calculated along boundary lines.

    -The input vector needs to be prepared with v.net operation=connect +The input vector needs to be prepared with v.net operation=connect in order to connect points representing center nodes to the network.

    -The nearest center can be determined using either costs from the -nearest center or costs to the nearest center with option +The nearest center can be determined using either costs from the +nearest center or costs to the nearest center with option method. See example below.

    -By default, the category value of the nearest center is used as -category value for output lines. With the -u flag, output lines -become unique categories and an attribute table is created with the -fields cat, ocat, center. The ocat field holds the -original line category in arc_layer and the center -field holds the center category in node_layer. Additionally, -original line categories are copied from the input arc_layer to +By default, the category value of the nearest center is used as +category value for output lines. With the -u flag, output lines +become unique categories and an attribute table is created with the +fields cat, ocat, center. The ocat field holds the +original line category in arc_layer and the center +field holds the center category in node_layer. Additionally, +original line categories are copied from the input arc_layer to layer 2 in the output, together with any attribute table.

    -Application of flag -t enables a turntable support. This flag -requires additional parameters turn_layer and -turn_cat_layer that are otherwise ignored. The turntable allows -to model e.g. traffic code, where some turns may be prohibited. This -means that the input layer is expanded by turntable with costs of every -possible turn on any possible node (intersection) in both directions. -Turntable can be created by the v.net -module. For more information about turns in the vector network analyses +Application of flag -t enables a turntable support. This flag +requires additional parameters turn_layer and +turn_cat_layer that are otherwise ignored. The turntable allows +to model e.g. traffic code, where some turns may be prohibited. This +means that the input layer is expanded by turntable with costs of every +possible turn on any possible node (intersection) in both directions. +Turntable can be created by the v.net +module. For more information about turns in the vector network analyses see wiki page.

    NOTES

    -Nodes and arcs can be closed using cost = -1. +Nodes and arcs can be closed using cost = -1.

    -Center nodes can also be assigned to vector nodes using -wxGUI vector digitizer. +Center nodes can also be assigned to vector nodes using +wxGUI vector digitizer.

    EXAMPLES

    @@ -174,7 +174,7 @@

    EXAMPLES


    Any node reaches reaches the nearest center following the one-way lanes.

    -In case of an accident, the ambulance should come from the nearest +In case of an accident, the ambulance should come from the nearest 'from' hospital and go to the nearest 'to' hospital.

    @@ -218,9 +218,9 @@ 

    AUTHORS

    TURNS SUPPORT

    -The turns support was implemnented as part of GRASS GIS turns cost project at Czech Technical University in Prague, Czech Republic. +The turns support was implemnented as part of GRASS GIS turns cost project at Czech Technical University in Prague, Czech Republic. Eliska Kyzlikova, Stepan Turek, Lukas Bocan and Viera Bejdova participated at the project. -Implementation: Stepan Turek +Implementation: Stepan Turek Documentation: Lukas Bocan Mentor: Martin Landa diff --git a/vector/v.net.allpairs/Makefile b/vector/v.net.allpairs/Makefile index d2e2ed3518b..55160e1c055 100644 --- a/vector/v.net.allpairs/Makefile +++ b/vector/v.net.allpairs/Makefile @@ -9,4 +9,4 @@ EXTRA_CFLAGS = $(VECT_CFLAGS) include $(MODULE_TOPDIR)/include/Make/Module.make -default: cmd +default: cmd diff --git a/vector/v.net.allpairs/v.net.allpairs.html b/vector/v.net.allpairs/v.net.allpairs.html index 83cf5130167..8f65be7a356 100644 --- a/vector/v.net.allpairs/v.net.allpairs.html +++ b/vector/v.net.allpairs/v.net.allpairs.html @@ -1,26 +1,26 @@

    DESCRIPTION

    -v.net.allpairs computes the shortest path between each selected -node and all other selected nodes. The output is a vector with the -selected nodes and the shortest paths. +v.net.allpairs computes the shortest path between each selected +node and all other selected nodes. The output is a vector with the +selected nodes and the shortest paths.

    NOTES

    -An attribute table is created and linked to layer arc_layer. The -table contains four columns: cat, from_cat, -to_cat, cost. -Each cat entry denotes the category of the shortest path from -the node with category from_cat to the node with category -to_cat. If points are specified by cats, layer or -where parameters then the table is filled only for the selected +An attribute table is created and linked to layer arc_layer. The +table contains four columns: cat, from_cat, +to_cat, cost. +Each cat entry denotes the category of the shortest path from +the node with category from_cat to the node with category +to_cat. If points are specified by cats, layer or +where parameters then the table is filled only for the selected points.
    -If arc_backward_column is not given then then the same costs are used for +If arc_backward_column is not given then then the same costs are used for forward and backward arcs.

    EXAMPLE

    -Find shortest path along roads from selected archsites (Spearfish sample +Find shortest path along roads from selected archsites (Spearfish sample dataset):
     # prepare network: connect archsites to roads with threshold 200
    diff --git a/vector/v.net.bridge/Makefile b/vector/v.net.bridge/Makefile
    index ecc4e508990..7d5abdd2154 100644
    --- a/vector/v.net.bridge/Makefile
    +++ b/vector/v.net.bridge/Makefile
    @@ -9,4 +9,4 @@ EXTRA_CFLAGS = $(VECT_CFLAGS)
     
     include $(MODULE_TOPDIR)/include/Make/Module.make
     
    -default: cmd	
    +default: cmd
    diff --git a/vector/v.net.bridge/v.net.bridge.html b/vector/v.net.bridge/v.net.bridge.html
    index af39c50361a..02f1b6d94bf 100644
    --- a/vector/v.net.bridge/v.net.bridge.html
    +++ b/vector/v.net.bridge/v.net.bridge.html
    @@ -4,27 +4,33 @@ 

    DESCRIPTION

    NOTES

    +<<<<<<< HEAD Bridge in a network is an edge/line whose removal would disconnect the (sub-)network. A node is an articulation point if its removal would disconnect the (sub-)network. For more information and formal +======= +Bridge in a network is an edge/line whose removal would disconnect +the (sub-)network. A node is an articulation point if its removal +would disconnect the (sub-)network. For more information and formal +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) definitions check the wikipedia entries: -bridge -and articulation +bridge +and articulation point.

    -The output of the module contains the selected -features. For method=bridge, lines corresponding to -bridges are copied from the input map to the output map. On the -other hand, for method=articulation, points are created on +The output of the module contains the selected +features. For method=bridge, lines corresponding to +bridges are copied from the input map to the output map. On the +other hand, for method=articulation, points are created on the positions of articulation points.

    -
    In GRASS GIS, line is not always a single line -segment. It might be, and often is, a sequence of line segments -between two intersections. Also, articulation point is a standard -graph theoretic terminology which is slightly misleading in GRASS. +
    In GRASS GIS, line is not always a single line +segment. It might be, and often is, a sequence of line segments +between two intersections. Also, articulation point is a standard +graph theoretic terminology which is slightly misleading in GRASS. An articulation point in graph theory is an articulation -node in GRASS terminology. +node in GRASS terminology.

    EXAMPLES

    diff --git a/vector/v.net.centrality/Makefile b/vector/v.net.centrality/Makefile index 87a756f0228..c664a32c5f6 100644 --- a/vector/v.net.centrality/Makefile +++ b/vector/v.net.centrality/Makefile @@ -9,4 +9,4 @@ EXTRA_CFLAGS = $(VECT_CFLAGS) include $(MODULE_TOPDIR)/include/Make/Module.make -default: cmd +default: cmd diff --git a/vector/v.net.centrality/v.net.centrality.html b/vector/v.net.centrality/v.net.centrality.html index 206e6d58fc0..9ba0bc62693 100644 --- a/vector/v.net.centrality/v.net.centrality.html +++ b/vector/v.net.centrality/v.net.centrality.html @@ -1,34 +1,39 @@

    DESCRIPTION

    -v.net.centrality computes degree, closeness, betweenness -and eigenvector centrality measures. +v.net.centrality computes degree, closeness, betweenness +and eigenvector centrality measures.

    NOTES

    -The module computes various centrality measures for each node and -stores them in the given columns of an attribute table, which is -created and linked to the output map. For the description of these, +The module computes various centrality measures for each node and +stores them in the given columns of an attribute table, which is +created and linked to the output map. For the description of these, please check the following wikipedia article. -If the column name is not given for a measure then that measure is not -computed. If -a flag is set then points are added on nodes -without points. Also, the points for which the output is computed -can be specified by cats, layer and where +If the column name is not given for a measure then that measure is not +computed. If -a flag is set then points are added on nodes +without points. Also, the points for which the output is computed +can be specified by cats, layer and where parameters. However, if any of these parameters is present then -a flag is ignored and no new points are added.
    -Betweenness measure is not normalised. In order to get the normalised -values (between 0 and 1), each number needs to be divided by N -choose 2=N*(N-1)/2 where N is the number of nodes in the -connected component. Computation of eigenvector measure terminates +Betweenness measure is not normalised. In order to get the normalised +values (between 0 and 1), each number needs to be divided by N +choose 2=N*(N-1)/2 where N is the number of nodes in the +connected component. Computation of eigenvector measure terminates if the given number of iterations is reached or the cumulative squared error between the successive iterations is less than error.

    EXAMPLES

    +<<<<<<< HEAD Compute closeness and betweenness centrality measures for each node and produce a map containing not only points already present in the +======= +Compute closeness and betweenness centrality measures for each node +and produce a map containing not only points already present in the +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) input map but a map with point on every node.
    diff --git a/vector/v.net.components/Makefile b/vector/v.net.components/Makefile
    index 8c8c879c22e..e34b3818cf0 100644
    --- a/vector/v.net.components/Makefile
    +++ b/vector/v.net.components/Makefile
    @@ -9,4 +9,4 @@ EXTRA_CFLAGS = $(VECT_CFLAGS)
     
     include $(MODULE_TOPDIR)/include/Make/Module.make
     
    -default: cmd	
    +default: cmd
    diff --git a/vector/v.net.components/v.net.components.html b/vector/v.net.components/v.net.components.html
    index 32dd9f18e7f..6c3ba1cf999 100644
    --- a/vector/v.net.components/v.net.components.html
    +++ b/vector/v.net.components/v.net.components.html
    @@ -1,36 +1,43 @@
     

    DESCRIPTION

    -v.net.components computes the weakly and strongly connected +v.net.components computes the weakly and strongly connected components in a network.

    NOTES

    +<<<<<<< HEAD Two nodes, u and v are in the same strongly connected component if there are directed paths from u to v and from v to u. The nodes are in the same weakly connected component if, ignoring edge directions, there is a path +======= +Two nodes, u and v are in the same strongly connected +component if there are directed paths from u to v and +from v to u. The nodes are in the same weakly +connected component if, ignoring edge directions, there is a path +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) between them.

    -The type of components is specified by method parameter. -v.net.components creates a table and links it to layer 1. This -table contains only two integer columns: cat and -comp. If a point or both endpoints of a line belong to the -same component then the point/line is written to the output map and -appropriate information is stored in the table. If -a flag is -set then new points are added on the nodes without points. These points +The type of components is specified by method parameter. +v.net.components creates a table and links it to layer 1. This +table contains only two integer columns: cat and +comp. If a point or both endpoints of a line belong to the +same component then the point/line is written to the output map and +appropriate information is stored in the table. If -a flag is +set then new points are added on the nodes without points. These points have category numbers larger than any category used in the input map.

    -One-way roads can be defined by assigning a cost of -1 to the -appropriate cost column (arc_column or -arc_backward_column). This affects only strongly connected -components. Network nodes can be closed by assigning a cost of -1 to -the node cost column. All nodes with a cost < 0 can not be traversed -and are end points, while all nodes with a cost ≥ 0 can be traversed. +One-way roads can be defined by assigning a cost of -1 to the +appropriate cost column (arc_column or +arc_backward_column). This affects only strongly connected +components. Network nodes can be closed by assigning a cost of -1 to +the node cost column. All nodes with a cost < 0 can not be traversed +and are end points, while all nodes with a cost ≥ 0 can be traversed. This affects both weakly and strongly connected components.

    EXAMPLES

    -Any road network should form a single strongly connected component. +Any road network should form a single strongly connected component. Otherwise, it is impossible to travel between some places.
     v.net.components input=roads output=roads_components method=strong
    diff --git a/vector/v.net.connectivity/Makefile b/vector/v.net.connectivity/Makefile
    index bd828833682..8b3b00e03b4 100644
    --- a/vector/v.net.connectivity/Makefile
    +++ b/vector/v.net.connectivity/Makefile
    @@ -9,4 +9,4 @@ EXTRA_CFLAGS = $(VECT_CFLAGS)
     
     include $(MODULE_TOPDIR)/include/Make/Module.make
     
    -default: cmd	
    +default: cmd
    diff --git a/vector/v.net.connectivity/v.net.connectivity.html b/vector/v.net.connectivity/v.net.connectivity.html
    index 2d63b325ce0..661b15defb5 100644
    --- a/vector/v.net.connectivity/v.net.connectivity.html
    +++ b/vector/v.net.connectivity/v.net.connectivity.html
    @@ -1,8 +1,8 @@
     

    DESCRIPTION

    v.net.connectivity computes vertex connectivity between two sets, - i.e. the minimum number of vertices whose removal would separate two - given sets. + i.e. the minimum number of vertices whose removal would separate two + given sets.

    NOTES

    @@ -17,7 +17,11 @@

    NOTES

    EXAMPLE

    The following command finds the minimum number of intersections separating +<<<<<<< HEAD roads on the left bank from roads on the right bank. +======= +roads on the left bank from roads on the right bank. +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794))
     v.net.connectivity input=roads output=roads_conn set1_where="bank=left" \
    diff --git a/vector/v.net.distance/Makefile b/vector/v.net.distance/Makefile
    index 6ae83c2263d..b92a0155d8d 100644
    --- a/vector/v.net.distance/Makefile
    +++ b/vector/v.net.distance/Makefile
    @@ -9,4 +9,4 @@ EXTRA_CFLAGS = $(VECT_CFLAGS)
     
     include $(MODULE_TOPDIR)/include/Make/Module.make
     
    -default: cmd	
    +default: cmd
    diff --git a/vector/v.net.distance/v.net.distance.html b/vector/v.net.distance/v.net.distance.html
    index fc105f7af5e..7da567b02e0 100644
    --- a/vector/v.net.distance/v.net.distance.html
    +++ b/vector/v.net.distance/v.net.distance.html
    @@ -1,41 +1,41 @@
     

    DESCRIPTION

    -v.net.distance finds the nearest element in set to -for every point in set from. +v.net.distance finds the nearest element in set to +for every point in set from.

    NOTES

    These two sets are given by the respective layer, where -and cats parameters. The type of to features is -specified by to_type parameter. All from features -are points. A table is linked to output map -containing various information about the relation. More +and cats parameters. The type of to features is +specified by to_type parameter. All from features +are points. A table is linked to output map +containing various information about the relation. More specifically, the table has three columns: cat, tcat -and dist storing category of each from -feature, category of the nearest to feature and the +and dist storing category of each from +feature, category of the nearest to feature and the distance between them respectively.

    -Furthemore, the output map contains the shortest path between -each cat, tcat pair. Each path consists of several -lines. If a line is on the shortest path from a point then the category -of this point is assigned to the line. Note that every line may contain -more than one category value since a single line may be on the shortest -path for more than one from feature. And so the shortest paths -can be easily obtained by querying lines with corresponding category -number. Alternatively, unique paths can be created with the -l +Furthemore, the output map contains the shortest path between +each cat, tcat pair. Each path consists of several +lines. If a line is on the shortest path from a point then the category +of this point is assigned to the line. Note that every line may contain +more than one category value since a single line may be on the shortest +path for more than one from feature. And so the shortest paths +can be easily obtained by querying lines with corresponding category +number. Alternatively, unique paths can be created with the -l flag where each path will be a separate single line in the output.

    -The costs of arcs in forward and backward direction are specified by -arc_column and arc_backward_column columns respectively. -If arc_backward_column is not given, the same cost is used in -both directions. +The costs of arcs in forward and backward direction are specified by +arc_column and arc_backward_column columns respectively. +If arc_backward_column is not given, the same cost is used in +both directions.

    -v.net.distance will not work if you are trying to find the -nearest neighbors within a group of nodes, i.e. where to -and from are the same set of nodes, as the closest node -will be the node itself and the result will be zero-length paths. In -order to find nearest neighbors within a group of nodes, you can -either loop through each node as to and all other nodes as +v.net.distance will not work if you are trying to find the +nearest neighbors within a group of nodes, i.e. where to +and from are the same set of nodes, as the closest node +will be the node itself and the result will be zero-length paths. In +order to find nearest neighbors within a group of nodes, you can +either loop through each node as to and all other nodes as from or create a complete distance matrix with v.net.allpairs and select the lowest non-zero distance for each node. @@ -44,11 +44,11 @@

    EXAMPLES

    Shortest path and distance between school and nearest hospital

    -Find shortest path and distance from every school to the nearest hospital +Find shortest path and distance from every school to the nearest hospital and show all paths.

    -Streets are grey lines, schools are green circles, hospitals are red +Streets are grey lines, schools are green circles, hospitals are red crosses, shortest paths are blue lines:

    v.net.distance example @@ -104,12 +104,12 @@

    Distance between point source of pollution and sample points along streamsDistance between point source of pollution and sample points along streamsDESCRIPTION

    -v.net.flow computes the maximum flow and minimum cut +v.net.flow computes the maximum flow and minimum cut between two sets of nodes.

    NOTES

    +<<<<<<< HEAD The two sets of nodes are called sources and sink and v.net.flow finds the maximum flow from the former to the latter ones. Edge capacities can be specified by arc_column @@ -21,10 +22,28 @@

    NOTES

    consists of two columns: cat and flow and stores the flow along each line. Negative flow means that "water" is flowing in the backward direction. Cut map contains the edges +======= +The two sets of nodes are called sources and sink +and v.net.flow finds the maximum flow from the former to +the latter ones. Edge capacities can be specified by arc_column +for forward direction and arc_backward_column for backward direction. If +the latter parameter is omitted then the same capacity is used in +either direction. The sets are given by the respective cats, +layer and where parameters. Maximum flow corresponds +to the maximum amount of water possibly flowing through the network +preserving the capacity constraints and minimum cut to the set of edges +of minimum total capacity completely separating sources from sinks. +The cut produced by this module corresponds to the first fully +saturated edges from sources to sinks. An attribute table containing +the flow information is linked to the output map. The table +consists of two columns: cat and flow and stores +the flow along each line. Negative flow means that "water" is +flowing in the backward direction. Cut map contains the edges +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) in the minimum cut.
    -A famous result -says that the total amount of water flowing is equal to the minimum +A famous result +says that the total amount of water flowing is equal to the minimum cut.

    EXAMPLES

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

    EXAMPLES

    -If all the capacties are one then the minimum cut corresponds to the -minimum number of edges separating sources from sinks. +If all the capacties are one then the minimum cut corresponds to the +minimum number of edges separating sources from sinks.

     v.net.flow input=network output=flow cut=cut arc_column=ones \
                source_cats=1-10 sink_cats=100-100
    diff --git a/vector/v.net.iso/Makefile b/vector/v.net.iso/Makefile
    index ea866f2d5bb..5ac57d6d5ab 100644
    --- a/vector/v.net.iso/Makefile
    +++ b/vector/v.net.iso/Makefile
    @@ -11,7 +11,3 @@ EXTRA_CFLAGS = $(VECT_CFLAGS)
     include $(MODULE_TOPDIR)/include/Make/Module.make
     
     default: cmd
    -
    -
    -
    -
    diff --git a/vector/v.net.iso/v.net.iso.html b/vector/v.net.iso/v.net.iso.html
    index f610f8b2bf1..28c92571cbb 100644
    --- a/vector/v.net.iso/v.net.iso.html
    +++ b/vector/v.net.iso/v.net.iso.html
    @@ -1,57 +1,57 @@
     

    DESCRIPTION

    -v.net.iso splits a network into bands between cost isolines -(distance from center). Center nodes must be opened (costs >= 0). The -costs of center nodes are used in the calculation. -

    Costs may be either line lengths, or attributes saved in a database -table. These attribute values are taken as costs of whole segments, not -as costs to traverse a length unit (e.g. meter) of the segment. -For example, if the speed limit is 100 km / h, the cost to traverse a -10 km long road segment must be calculated as +v.net.iso splits a network into bands between cost isolines +(distance from center). Center nodes must be opened (costs >= 0). The +costs of center nodes are used in the calculation. +

    Costs may be either line lengths, or attributes saved in a database +table. These attribute values are taken as costs of whole segments, not +as costs to traverse a length unit (e.g. meter) of the segment. +For example, if the speed limit is 100 km / h, the cost to traverse a +10 km long road segment must be calculated as
    length / speed = 10 km / (100 km/h) = 0.1 h.
    -Supported are cost assignments for both arcs and nodes, -and also different costs for both directions of a vector line. +Supported are cost assignments for both arcs and nodes, +and also different costs for both directions of a vector line. For areas, costs will be calculated along boundary lines.

    -The input vector needs to be prepared with v.net operation=connect +The input vector needs to be prepared with v.net operation=connect in order to connect points representing center nodes to the network.

    -The nearest center can be determined using either costs from the -nearest center or costs to the nearest center with option +The nearest center can be determined using either costs from the +nearest center or costs to the nearest center with option method.

    -By default, the iso band number is used as category value for output -lines. With the -u flag, output lines become unique categories -and an attribute table is created with the fields cat, ocat, -center, isonr, isolbl. The ocat field holds the original -line category in arc_layer, the center field holds the -center category in node_layer, the isonr field holds -the iso band number and the isolbl field holds a label for the -isoband. Additionally, original line categories are copied from the -input arc_layer to layer 2 in the output, together with any +By default, the iso band number is used as category value for output +lines. With the -u flag, output lines become unique categories +and an attribute table is created with the fields cat, ocat, +center, isonr, isolbl. The ocat field holds the original +line category in arc_layer, the center field holds the +center category in node_layer, the isonr field holds +the iso band number and the isolbl field holds a label for the +isoband. Additionally, original line categories are copied from the +input arc_layer to layer 2 in the output, together with any attribute table.

    -Application of flag -t enables a turntable support. This flag -requires additional parameters turn_layer and -turn_cat_layer that are otherwise ignored. The turntable allows -to model e.g. traffic code, where some turns may be prohibited. This -means that the input layer is expanded by turntable with costs of every -possible turn on any possible node (intersection) in both directions. -Turntable can be created by the v.net -module. For more information about turns in the vector network analyses +Application of flag -t enables a turntable support. This flag +requires additional parameters turn_layer and +turn_cat_layer that are otherwise ignored. The turntable allows +to model e.g. traffic code, where some turns may be prohibited. This +means that the input layer is expanded by turntable with costs of every +possible turn on any possible node (intersection) in both directions. +Turntable can be created by the v.net +module. For more information about turns in the vector network analyses see wiki page.

    NOTES

    -Nodes and arcs can be closed using cost = -1. +Nodes and arcs can be closed using cost = -1.

    Nodes must be on the isolines.

    EXAMPLES

    -The map must contain at least one center (point) on the vector network +The map must contain at least one center (point) on the vector network which can be patched into with v.net.

    @@ -199,9 +199,9 @@

    AUTHORS

    TURNS SUPPORT

    -The turns support was implemnented as part of GRASS GIS turns cost project at Czech Technical University in Prague, Czech Republic. +The turns support was implemnented as part of GRASS GIS turns cost project at Czech Technical University in Prague, Czech Republic. Eliska Kyzlikova, Stepan Turek, Lukas Bocan and Viera Bejdova participated at the project. -Implementation: Stepan Turek +Implementation: Stepan Turek Documentation: Lukas Bocan Mentor: Martin Landa diff --git a/vector/v.net.path/Makefile b/vector/v.net.path/Makefile index 5f7ff620bba..f964ff866c1 100644 --- a/vector/v.net.path/Makefile +++ b/vector/v.net.path/Makefile @@ -12,7 +12,3 @@ include $(MODULE_TOPDIR)/include/Make/Module.make default: cmd - - - - diff --git a/vector/v.net.path/v.net.path.html b/vector/v.net.path/v.net.path.html index 6b12f673746..952957a017c 100644 --- a/vector/v.net.path/v.net.path.html +++ b/vector/v.net.path/v.net.path.html @@ -1,26 +1,26 @@

    DESCRIPTION

    -v.net.path determines least costly, e.g. shortest or fastest +v.net.path determines least costly, e.g. shortest or fastest path(s) on a vector network.

    -Costs may be either line lengths, or attributes saved in a database -table. These attribute values are taken as costs of whole segments, not -as costs to traverse a length unit (e.g. meter) of the segment. -For example, if the speed limit is 100 km / h, the cost to traverse a -10 km long road segment must be calculated as +Costs may be either line lengths, or attributes saved in a database +table. These attribute values are taken as costs of whole segments, not +as costs to traverse a length unit (e.g. meter) of the segment. +For example, if the speed limit is 100 km / h, the cost to traverse a +10 km long road segment must be calculated as

     length / speed = 10 km / (100 km/h) = 0.1 h.
     
    -Supported are cost assignments for both arcs and nodes, -and also different costs for both directions of a vector line. +Supported are cost assignments for both arcs and nodes, +and also different costs for both directions of a vector line. For areas, costs will be calculated along boundary lines.

    -The input vector needs to be prepared with v.net operation=connect +The input vector needs to be prepared with v.net operation=connect in order to connect points representing center nodes to the network. -

    Nodes and arcs can be closed using cost = -1. -

    Least cost paths are written to the output vector map with an +

    Nodes and arcs can be closed using cost = -1. +

    Least cost paths are written to the output vector map with an attached attribute table.

    Nodes can be

      @@ -42,10 +42,10 @@

      DESCRIPTION

    -Points specified by category must be exactly on network nodes, and the +Points specified by category must be exactly on network nodes, and the input vector map needs to be prepared with v.net operation=connect.

    -When specifying coordinates, the next network node to a given coordinate +When specifying coordinates, the next network node to a given coordinate pair is used.

    @@ -69,29 +69,33 @@

    DESCRIPTION

    -Application of flag -t enables a turntable support. -This flag requires additional parameters turn_layer and turn_cat_layer +Application of flag -t enables a turntable support. +This flag requires additional parameters turn_layer and turn_cat_layer that are otherwise ignored. - The turntable allows -to model e.g. traffic code, where some turns may be prohibited. -This means that the input layer is expanded by -turntable with costs of every possible turn on any possible node -(intersection) in both directions. - Turntable can be created by - the v.net module. + The turntable allows +to model e.g. traffic code, where some turns may be prohibited. +This means that the input layer is expanded by +turntable with costs of every possible turn on any possible node +(intersection) in both directions. + Turntable can be created by + the v.net module. For more information about turns in the vector network analyses see wiki page.

    NOTES

    +<<<<<<< HEAD Nodes and arcs can be closed using cost = -1. +======= +Nodes and arcs can be closed using cost = -1. +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794))

    If the cost columns arc_column, arc_backward_column and node_column are not -specified, the length of network segments is measured and +specified, the length of network segments is measured and zero costs are assumed for nodes.

    When using attributes, the length of segments is not used. To get -accurate results, the line length must be taken into account when -assigning costs as attributes. For example, to get the fastest path, -the columns 'max_speed' and 'length' are required. The correct fastest +accurate results, the line length must be taken into account when +assigning costs as attributes. For example, to get the fastest path, +the columns 'max_speed' and 'length' are required. The correct fastest path can then be found by specifying arc_column=length/max_speed. If not yet existing, the column containing the line length ("length") has to added to the attributes table using v.to.db. diff --git a/vector/v.net.salesman/Makefile b/vector/v.net.salesman/Makefile index 397312e5856..c38d5a63c14 100644 --- a/vector/v.net.salesman/Makefile +++ b/vector/v.net.salesman/Makefile @@ -11,7 +11,3 @@ EXTRA_CFLAGS = $(VECT_CFLAGS) include $(MODULE_TOPDIR)/include/Make/Module.make default: cmd - - - - diff --git a/vector/v.net.salesman/v.net.salesman.html b/vector/v.net.salesman/v.net.salesman.html index 19c57f2df8f..754cfe803b0 100644 --- a/vector/v.net.salesman/v.net.salesman.html +++ b/vector/v.net.salesman/v.net.salesman.html @@ -3,39 +3,43 @@

    DESCRIPTION

    v.net.salesman calculates the optimal route to visit nodes on a vector network. -

    Costs may be either line lengths, or attributes saved in a database -table. These attribute values are taken as costs of whole segments, not -as costs to traverse a length unit (e.g. meter) of the segment. -For example, if the speed limit is 100 km / h, the cost to traverse a +

    Costs may be either line lengths, or attributes saved in a database +table. These attribute values are taken as costs of whole segments, not +as costs to traverse a length unit (e.g. meter) of the segment. +For example, if the speed limit is 100 km / h, the cost to traverse a 10 km long road segment must be calculated as
    length / speed = 10 km / (100 km/h) = 0.1 h.
    -Supported are cost assignments for arcs, -and also different costs for both directions of a vector line. +Supported are cost assignments for arcs, +and also different costs for both directions of a vector line. For areas, costs will be calculated along boundary lines. -

    The input vector needs to be prepared with v.net operation=connect +

    The input vector needs to be prepared with v.net operation=connect in order to connect points representing center nodes to the network. -

    Points specified by category must be exactly on network nodes, and the +

    Points specified by category must be exactly on network nodes, and the input vector map needs to be prepared with v.net operation=connect. -

    Application of flag -t enables a turntable support. -This flag requires additional parameters turn_layer and turn_cat_layer +

    Application of flag -t enables a turntable support. +This flag requires additional parameters turn_layer and turn_cat_layer that are otherwise ignored. - The turntable allows -to model e.g. traffic code, where some turns may be prohibited. -This means that the input layer is expanded by -turntable with costs of every possible turn on any possible node -(intersection) in both directions. - Turntable can be created by - the v.net module. + The turntable allows +to model e.g. traffic code, where some turns may be prohibited. +This means that the input layer is expanded by +turntable with costs of every possible turn on any possible node +(intersection) in both directions. + Turntable can be created by + the v.net module. For more information about turns in the vector network analyses see wiki page.

    NOTES

    +<<<<<<< HEAD Arcs can be closed using cost = -1. +======= +Arcs can be closed using cost = -1. +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) Turns support: The costs of turns on visiting nodes are not taken in account.

    EXAMPLE

    @@ -48,7 +52,7 @@

    EXAMPLE

    Fastest path, along highways:

    v.net.salesman example using time -

    Searching for the shortest path using distance and the fastest path using +

    Searching for the shortest path using distance and the fastest path using traveling time according to the speed limits of different road types:

    @@ -162,7 +166,11 @@ 

    AUTHORS

    TURNS SUPPORT

    The turns support was implemnented as part of GRASS GIS turns cost project +<<<<<<< HEAD at Czech Technical University in Prague, Czech Republic.
    +======= +at Czech Technical University in Prague, Czech Republic.
    +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) Eliska Kyzlikova, Stepan Turek, Lukas Bocan and Viera Bejdova participated in the project.

    diff --git a/vector/v.net.spanningtree/Makefile b/vector/v.net.spanningtree/Makefile index fe4a4267ff1..1fd7168af08 100644 --- a/vector/v.net.spanningtree/Makefile +++ b/vector/v.net.spanningtree/Makefile @@ -9,4 +9,4 @@ EXTRA_CFLAGS = $(VECT_CFLAGS) include $(MODULE_TOPDIR)/include/Make/Module.make -default: cmd +default: cmd diff --git a/vector/v.net.spanningtree/v.net.spanningtree.html b/vector/v.net.spanningtree/v.net.spanningtree.html index 6846b9fdb2b..8f4286682e6 100644 --- a/vector/v.net.spanningtree/v.net.spanningtree.html +++ b/vector/v.net.spanningtree/v.net.spanningtree.html @@ -1,10 +1,11 @@

    DESCRIPTION

    -v.net.spanningtree finds the minimum spanning tree in a -network. +v.net.spanningtree finds the minimum spanning tree in a +network.

    NOTES

    +<<<<<<< HEAD A spanning tree is a minimum cost subnetwork connecting all nodes in an undirected network (same forward and backward costs). If a network is disconnected then the module computes the minimum spanning tree for @@ -14,13 +15,24 @@

    NOTES

    is, it contains no cycles and if a component has N nodes then the tree has N-1 edges connecting all nodes. Accol is used to specify the costs of the edges. The output consists of the edges in the +======= +A spanning tree is a minimum cost subnetwork connecting all nodes in an +undirected network (same forward and backward costs). If a network is +disconnected then the module computes the minimum spanning tree for +each (weakly) connected component. So, strictly speaking, +v.net.spanningtree does not compute spanning tree but a +spanning forest. As the name suggests, a spanning tree is a tree. That +is, it contains no cycles and if a component has N nodes then the tree +has N-1 edges connecting all nodes. Accol is used to specify the +costs of the edges. The output consists of the edges in the +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) spanning tree.

    EXAMPLES

    Find cheapest set of pipelines connecting all nodes.
    -v.net.spanningtree input=projected_pipelines output=spanningtree accol=cost 
    +v.net.spanningtree input=projected_pipelines output=spanningtree accol=cost
     

    SEE ALSO

    diff --git a/vector/v.net.steiner/Makefile b/vector/v.net.steiner/Makefile index 623d71c67f9..794822e7e48 100644 --- a/vector/v.net.steiner/Makefile +++ b/vector/v.net.steiner/Makefile @@ -11,7 +11,3 @@ EXTRA_CFLAGS = $(VECT_CFLAGS) include $(MODULE_TOPDIR)/include/Make/Module.make default: cmd - - - - diff --git a/vector/v.net.steiner/main.c b/vector/v.net.steiner/main.c index d0bc7525487..99708e65fdc 100644 --- a/vector/v.net.steiner/main.c +++ b/vector/v.net.steiner/main.c @@ -328,7 +328,7 @@ int mst( int main(int argc, char **argv) { - int i, j, k, ret; + int i, j, ret; int nlines, type, ltype, afield, tfield, geo, cat; int sp, nsp, nspused, node, line; struct Option *map, *output, *afield_opt, *tfield_opt, *afcol, *type_opt, @@ -634,11 +634,16 @@ int main(int argc, char **argv) Vect_cat_get(Cats, afield, &cat); G_debug(1, "arc cat = %d", cat); } +<<<<<<< HEAD + + G_debug(1, "Nodes' categories (layer %d, %d nodes):", tfield, + StNodes->n_values); +======= +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) G_debug(1, "Nodes' categories (layer %d, %d nodes):", tfield, StNodes->n_values); - k = 0; pointlist = Vect_new_boxlist(0); for (i = 0; i < StNodes->n_values; i++) { double x, y, z; @@ -662,7 +667,10 @@ int main(int argc, char **argv) continue; Vect_write_line(&Out, ltype, Points, Cats); G_debug(1, "node cat = %d", cat); +<<<<<<< HEAD k++; +======= +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) } } diff --git a/vector/v.net.steiner/v.net.steiner.html b/vector/v.net.steiner/v.net.steiner.html index 8355ddad247..6bc3e64881e 100644 --- a/vector/v.net.steiner/v.net.steiner.html +++ b/vector/v.net.steiner/v.net.steiner.html @@ -9,16 +9,16 @@

    DESCRIPTION

    which will minimize the amount of fibre optic cable needed to connect a series of satellite offices. -

    Costs may be either line lengths, or attributes saved in a database -table. These attribute values are taken as costs of whole segments, not -as costs to traverse a length unit (e.g. meter) of the segment. -For example, if the speed limit is 100 km / h, the cost to traverse a -10 km long road segment must be calculated as +

    Costs may be either line lengths, or attributes saved in a database +table. These attribute values are taken as costs of whole segments, not +as costs to traverse a length unit (e.g. meter) of the segment. +For example, if the speed limit is 100 km / h, the cost to traverse a +10 km long road segment must be calculated as length / speed = 10 km / (100 km/h) = 0.1 h. -Supported are cost assignments for both arcs and nodes. +Supported are cost assignments for both arcs and nodes. For areas, costs will be calculated along boundary lines. -

    Points representing nodes must be exactly on network nodes, and the +

    Points representing nodes must be exactly on network nodes, and the input vector map needs to be prepared with v.net operation=connect.

    NOTES

    diff --git a/vector/v.net.timetable/Makefile b/vector/v.net.timetable/Makefile index 25a8f6f3a86..944fb73678e 100644 --- a/vector/v.net.timetable/Makefile +++ b/vector/v.net.timetable/Makefile @@ -9,4 +9,4 @@ EXTRA_CFLAGS = $(VECT_CFLAGS) include $(MODULE_TOPDIR)/include/Make/Module.make -default: cmd +default: cmd diff --git a/vector/v.net.timetable/v.net.timetable.html b/vector/v.net.timetable/v.net.timetable.html index 5b0cbe3a3bd..450ab6960dd 100644 --- a/vector/v.net.timetable/v.net.timetable.html +++ b/vector/v.net.timetable/v.net.timetable.html @@ -1,27 +1,27 @@

    DESCRIPTION

    -v.net.timetable finds the shortest path between two points +v.net.timetable finds the shortest path between two points using timetables. v.net.timetable reads input, one query per line, -from the standard input and writes output to the standard output as well as -to the output map and to tables linked to layers 1 and 2. +from the standard input and writes output to the standard output as well as +to the output map and to tables linked to layers 1 and 2. Each line of input must follow one of the following formats:
     PATH_ID FROM_X FROM_Y TO_X TO_Y START_TIME MIN_CHANGE MAX_CHANGES WALK_CHANGE
     PATH_ID FROM_STOP TO_STOP START_TIME MIN_CHANGE MAX_CHANGES WALK_CHANGE
     
    -where PATH_ID is the identificator of a query that is used in the -output map to differentiate between queries. Search begins at -START_TIME. MIN_CHANGE gives the minimum number of time -(inclusively) for a change from one route to another. MAX_CHANGES -denotes the maximum number of changes allowed or -1 if infinity. -WALK_CHANGE is 1 or 0 depending whether walking from a stop to -another stop is considered a change or not. Finally, the path is -found from FROM_STOP to TO_STOP in latter case and from the stop -closest to (FROM_X, FROM_Y) coordinates to the stop closest to +where PATH_ID is the identificator of a query that is used in the +output map to differentiate between queries. Search begins at +START_TIME. MIN_CHANGE gives the minimum number of time +(inclusively) for a change from one route to another. MAX_CHANGES +denotes the maximum number of changes allowed or -1 if infinity. +WALK_CHANGE is 1 or 0 depending whether walking from a stop to +another stop is considered a change or not. Finally, the path is +found from FROM_STOP to TO_STOP in latter case and from the stop +closest to (FROM_X, FROM_Y) coordinates to the stop closest to (TO_X, TO_Y) coordinates in former case.
    -For each input query, module outputs a description of the shortest -path to the standard output. For example, using the tables given +For each input query, module outputs a description of the shortest +path to the standard output. For example, using the tables given below, for the following input:
     47 130 300 0 1 5 0
    @@ -31,63 +31,63 @@ 

    DESCRIPTION

    Route 15, from 130 leaving at 15 arriving to 250 at 22 Walk from 250 leaving at 22 arriving to 300 at 24
    -Moreover, the module writes the path to the output map and -stores all the information necessary to reconstruct the path to the -tables. Table corresponding to stops/points is linked to layer 1 and +Moreover, the module writes the path to the output map and +stores all the information necessary to reconstruct the path to the +tables. Table corresponding to stops/points is linked to layer 1 and looks, after the query, as follows:
     cat|path_id|stop_id|index|arr_time|dep_time
     1|47|130|1|0|15
     2|47|250|2|22|22
     3|47|300|3|24|24
    -
    -where CAT is the category of a point in the map, PATH_ID is the path -identificator, STOP_ID is the identificator of the stop as used in -the input map, INDEX is the index of the stop on the path (i.e, -index=1 is the first stop visited, ...) and ARR_TIME and DEP_TIME -denote the arrival time and departure time respectively. Arrival -time for the first stop on the path is always equal to START_TIME -and departure time for the last stop is always equal to the arrival +
    +where CAT is the category of a point in the map, PATH_ID is the path +identificator, STOP_ID is the identificator of the stop as used in +the input map, INDEX is the index of the stop on the path (i.e, +index=1 is the first stop visited, ...) and ARR_TIME and DEP_TIME +denote the arrival time and departure time respectively. Arrival +time for the first stop on the path is always equal to START_TIME +and departure time for the last stop is always equal to the arrival time.
    -The table linked to the second layer corresponds to subroutes taken +The table linked to the second layer corresponds to subroutes taken between stops. The following table is obtainedd for the above query:
     cat|path_id|from_id|to_id|route_id|index|from_time|to_time
     1|47|130|250|15|1|15|22
     2|47|250|300|-1|2|22|24
     
    -where CAT is the category of lines of subroute between stops FROM_ID -to TO_ID, ROUTE_ID is the identificator of the route taken or -1 if -walking, INDEX and PATH_ID are as above and FROM_TIME and TO_TIME +where CAT is the category of lines of subroute between stops FROM_ID +to TO_ID, ROUTE_ID is the identificator of the route taken or -1 if +walking, INDEX and PATH_ID are as above and FROM_TIME and TO_TIME denote the times between which the route is taken.
    -The output map contains the points on the positions of used -stops. If a subroute is taken between two stops then a line segment -is added between two corresponding points. Finally, instead of +The output map contains the points on the positions of used +stops. If a subroute is taken between two stops then a line segment +is added between two corresponding points. Finally, instead of straight line segment, the actual paths of routes can be given in -paths layer. If this parameter is used then each line in the -input map must contain identificators as category numbers of all -routes passing through the line. The module then finds the path -between two stops and writes this path instead. In case of walking +paths layer. If this parameter is used then each line in the +input map must contain identificators as category numbers of all +routes passing through the line. The module then finds the path +between two stops and writes this path instead. In case of walking from one stop to another, straight line between the stops is used.

    NOTES

    -Timetables are stored in a table linked to the given layer of -the input map. Timetable consists of routes and each route is -just a sequence of stops with specified arrival times. If two -sequences of stops differ only in times then they still correspond -to two routes. For example, if there is a bus line that leaves every -20 minutes and follow exactly the same path every time then there -still needs to be a separate route for every time. For each stop -(given by the category number of the point) the table storing -information about the routes must contain the list of all routes -stopping at the stop(given by route identificators) together with -arrival times. That is, the table must contain three columns: stop - -which is the key of the table, route_id and stop_time -where each triple corresponds to a route arriving to a stop and a -certain time. For example, a valid table might look as +Timetables are stored in a table linked to the given layer of +the input map. Timetable consists of routes and each route is +just a sequence of stops with specified arrival times. If two +sequences of stops differ only in times then they still correspond +to two routes. For example, if there is a bus line that leaves every +20 minutes and follow exactly the same path every time then there +still needs to be a separate route for every time. For each stop +(given by the category number of the point) the table storing +information about the routes must contain the list of all routes +stopping at the stop(given by route identificators) together with +arrival times. That is, the table must contain three columns: stop - +which is the key of the table, route_id and stop_time +where each triple corresponds to a route arriving to a stop and a +certain time. For example, a valid table might look as follows:
     cat|route_id|stop_time
    @@ -104,35 +104,35 @@ 

    NOTES

    300|35|37 100|35|50
    -Note that stop_time is an integer and so you can use any -units and offest to specify arrival times.
    Also, walking +Note that stop_time is an integer and so you can use any +units and offest to specify arrival times.
    Also, walking connections between stops can be given by a table linked to -walking layer of the input map. If this parameter is -1 -then walking between stops is not allowed. The table must contain -three columns: stop - which is the key of the table, to_stop +walking layer of the input map. If this parameter is -1 +then walking between stops is not allowed. The table must contain +three columns: stop - which is the key of the table, to_stop and length. A record in the table says that it takes length - units of time to walk from stop to to_stop. The +
    units of time to walk from stop to to_stop. The following is a valid table:
     cat|length|to_stop
     250|2|300
     
    -Beware that this only means that it is possible to walk from stop +Beware that this only means that it is possible to walk from stop 250 to stop 300 but not the other way round.

    EXAMPLES

    -To find a path from stop with identificator 130 to stop with -category 300, starting at time 0, with one time unit for change, -maximum of 5 changes and with walking not considered a change of +To find a path from stop with identificator 130 to stop with +category 300, starting at time 0, with one time unit for change, +maximum of 5 changes and with walking not considered a change of route, we use the following command:
     echo "47 130 300 0 1 5 0" | v.net.timetable \
          input=buses output=path layer=5 walking=6 path=7
     
    -If, on the other hand, we know the coordinates of the places then the -following command might be used: +If, on the other hand, we know the coordinates of the places then the +following command might be used:
     echo "47 10.31 54.31 90.21 28.21 0 1 5 0" | v.net.timetable \
          input=buses output=path layer=5 walking=6 path=7
    diff --git a/vector/v.net.visibility/Makefile b/vector/v.net.visibility/Makefile
    index 8be24b56c1d..20c0f8ec166 100644
    --- a/vector/v.net.visibility/Makefile
    +++ b/vector/v.net.visibility/Makefile
    @@ -12,7 +12,3 @@ include $(MODULE_TOPDIR)/include/Make/Module.make
     
     
     default: cmd
    -
    -
    -
    -
    diff --git a/vector/v.net.visibility/data_structures.c b/vector/v.net.visibility/data_structures.c
    index 5cfc4145d57..c118b942bed 100644
    --- a/vector/v.net.visibility/data_structures.c
    +++ b/vector/v.net.visibility/data_structures.c
    @@ -18,14 +18,14 @@
     static int stack_index = 0;
     static struct Point **stack = NULL;
     
    -struct Point *pop()
    +struct Point *pop(void)
     {
         stack_index--;
     
         return stack[stack_index + 1];
     }
     
    -struct Point *top()
    +struct Point *top(void)
     {
         if (stack_index > -1)
             return stack[stack_index];
    @@ -39,7 +39,7 @@ void push(struct Point *p)
         stack[stack_index] = p;
     }
     
    -int empty_stack()
    +int empty_stack(void)
     {
         return stack_index == -1;
     }
    diff --git a/vector/v.net.visibility/data_structures.h b/vector/v.net.visibility/data_structures.h
    index b15cbab5f8c..afb98d89918 100644
    --- a/vector/v.net.visibility/data_structures.h
    +++ b/vector/v.net.visibility/data_structures.h
    @@ -19,11 +19,11 @@
     #include 
     #include "rotation_tree.h"
     
    -struct Point *pop();
    -struct Point *top();
    +struct Point *pop(void);
    +struct Point *top(void);
     void push(struct Point *p);
    -int empty_stack();
    -void init_stack();
    +int empty_stack(void);
    +void init_stack(int);
     
     int cmp_points(const void *v1, const void *v2, void *param);
     
    diff --git a/vector/v.net.visibility/v.net.visibility.html b/vector/v.net.visibility/v.net.visibility.html
    index 3af9eeeb638..a7b4709a1e7 100644
    --- a/vector/v.net.visibility/v.net.visibility.html
    +++ b/vector/v.net.visibility/v.net.visibility.html
    @@ -29,25 +29,25 @@ 

    NOTES

    -The first argument is the input map. It supports lines, boundaries +The first argument is the input map. It supports lines, boundaries (so, areas) and points. For the algorithm was written to work with lines and boundaries not intersecting each other (that includes overlapping).
    The resulting map containing the visibility graph is given in the output map.

    -If you need to add additional points to compute a shortest path +If you need to add additional points to compute a shortest path between them afterwards you can use the coordinates parameter, e.g.:

     coordinates=25556200,6686400,25556400,6686600
     
    -where 25556200,6686400 are the coordinate of the first point and -25556400,6686600 are the coordinates of the second point. Of course -you can give as many points as you need. They will be added to the -visibility graph and edges from them will be computed. You can -always add those points after computing the visibility graph. Simply -use the visibility parameter. The input will be the original -vector map, the vis will be the computed visibility graph and the -output the new visibility graph which will be the vis + the new +where 25556200,6686400 are the coordinate of the first point and +25556400,6686600 are the coordinates of the second point. Of course +you can give as many points as you need. They will be added to the +visibility graph and edges from them will be computed. You can +always add those points after computing the visibility graph. Simply +use the visibility parameter. The input will be the original +vector map, the vis will be the computed visibility graph and the +output the new visibility graph which will be the vis + the new points given with coordinate (edges will be computed as well).
     v.net.visibility input=map visibility=vis_map output=new_vis_map \
    @@ -70,7 +70,11 @@ 

    Example 1

    d.vect areas_7_11_25 color=red type=boundary
    +<<<<<<< HEAD

    Example 2

    +======= +

    Example 2

    +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) An example on how to use v.buffer along with the module: @@ -194,9 +198,15 @@

    Example 6

    KNOWN ISSUES

    +<<<<<<< HEAD In some cases when 3 points or nodes are collinear, some wrong edges are added. This happens only really rarly and shouldn't be a big problem. When two points have the exact same x coordinate and are +======= +In some cases when 3 points or nodes are collinear, some wrong edges +are added. This happens only really rarly and shouldn't be a big +problem. When two points have the exact same x coordinate and are +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) visible, some wrong edges are added.

    SEE ALSO

    diff --git a/vector/v.net/Makefile b/vector/v.net/Makefile index b9097d90582..f6d3bb5e455 100644 --- a/vector/v.net/Makefile +++ b/vector/v.net/Makefile @@ -7,8 +7,7 @@ LIBES = $(VECTORLIB) $(GISLIB) $(DBMILIB) DEPENDENCIES = $(VECTORDEP) $(GISDEP) $(DBMIDEP) EXTRA_INC = $(VECT_INC) EXTRA_CFLAGS = $(VECT_CFLAGS) - -include $(MODULE_TOPDIR)/include/Make/Module.make -default: cmd +include $(MODULE_TOPDIR)/include/Make/Module.make +default: cmd diff --git a/vector/v.net/v.net.html b/vector/v.net/v.net.html index b7db3449636..89278a09f80 100644 --- a/vector/v.net/v.net.html +++ b/vector/v.net/v.net.html @@ -1,100 +1,104 @@

    DESCRIPTION

    -v.net is used for network preparation and maintenance. Its +v.net is used for network preparation and maintenance. Its main use is to create a vector network from vector lines (arcs -) and points (nodes) by creating nodes from -intersections in a map of vector lines (node operator), by -connecting a vector lines map with a points map (connect +) and points (nodes) by creating nodes from +intersections in a map of vector lines (node operator), by +connecting a vector lines map with a points map (connect operator), and by creating new lines between pairs of vector points (arcs operator).

    -A GIS network consists of topologically correct lines (arcs). That is, +A GIS network consists of topologically correct lines (arcs). That is, the lines must be connected by shared vertices where real connections exist. -In GRASS GIS you also can add nodes to the network. These are specially -designated vertices used for analyzing network properties or computing +In GRASS GIS you also can add nodes to the network. These are specially +designated vertices used for analyzing network properties or computing cost/distance measures. That is, not all vertices are treated as nodes by -default. Only v.net.path can use a +default. Only v.net.path can use a network without nodes, they are required for all the other network modules. In GRASS, network arcs are stored in one data layer (normally layer 1) and -nodes are stored in a different data layer (normally layer 2). +nodes are stored in a different data layer (normally layer 2).

    -v.net offers two ways to add nodes to a network of arcs and one +v.net offers two ways to add nodes to a network of arcs and one method to add arcs to a set of nodes:

      -
    1. Use the connect operation to create nodes from a vector -points file and add these nodes to an existing vector network of -arcs (i.e., lines/boundaries). This is useful when the goal is to -analyze a set of places (points) in relation to a network--for +
    2. Use the connect operation to create nodes from a vector +points file and add these nodes to an existing vector network of +arcs (i.e., lines/boundaries). This is useful when the goal is to +analyze a set of places (points) in relation to a network--for example travel costs between places. Only points within the -thresh (threshold) distance to a line/boundary will be -connected as network nodes. There are two ways to connect nodes. By -default, v.net will create new lines connecting each point -to the closest line of the network. If you use the -s flag, -however, the new nodes will be added on the closest line of the -network at the point closest to the point you wish to add. When using -the connect operation, some lines will share the same -category. In order to assign unique costs to each line, a new layer +thresh (threshold) distance to a line/boundary will be +connected as network nodes. There are two ways to connect nodes. By +default, v.net will create new lines connecting each point +to the closest line of the network. If you use the -s flag, +however, the new nodes will be added on the closest line of the +network at the point closest to the point you wish to add. When using +the connect operation, some lines will share the same +category. In order to assign unique costs to each line, a new layer needs to be created with
      v.category input=yourmap option=add cat=1 step=1 layer=3 output=newmap
      followed by
      v.db.addtable map=newmap layer=3 table=tablename.
    3. -
    4. Create nodes and arcs from a vector line/boundary file using the -node operation. This is useful if you are mostly interested -in the network itself and thus you can use intersections of the -network as start and end points. Nodes will be created at all -intersections of two or more lines. For an arc that -consists of several segments connected by vertices (the typical -case), only the starting and ending vertices are treated as network +
    5. Create nodes and arcs from a vector line/boundary file using the +node operation. This is useful if you are mostly interested +in the network itself and thus you can use intersections of the +network as start and end points. Nodes will be created at all +intersections of two or more lines. For an arc that +consists of several segments connected by vertices (the typical +case), only the starting and ending vertices are treated as network nodes.
    6. Create straight-line arcs between pairs of nodes with the -arcs option. This produces networks like those of airline -flights between airports. It is also similar to the kind of network -created with social networking software, making it possible to -create georeferenced social networks.
    7. -
    - +arcs option. This produces networks like those of airline +flights between airports. It is also similar to the kind of network +created with social networking software, making it possible to +create georeferenced social networks.
  • + +

    While the arcs created with v.net will retain any attribute information associated with the input vector line/boundary file in data layer 1, nodes created and stored in data layer 2 will not have any associated attribute -information. +information.

    -For nodes created using the connect and arcs -operations (methods 1 and 3 above), the nodes can be reconnected to -the attribute table of the input vector points file using the +For nodes created using the connect and arcs +operations (methods 1 and 3 above), the nodes can be reconnected to +the attribute table of the input vector points file using the attribute table manager ("manage layers" tab) or by running v.db.connect.

    -For nodes created using the nodes operation (method 2 -above), it is possible to create an attribute table for the new -nodes in layer 2 using the attribute table manager and connect it to +For nodes created using the nodes operation (method 2 +above), it is possible to create an attribute table for the new +nodes in layer 2 using the attribute table manager and connect it to layer 2 ("manage layers" tab) or to create a table with -v.db.addtable, +v.db.addtable, connect it to layer 2 with v.db.connect, -and update the new table with cat values with v.to.db. +and update the new table with cat values with v.to.db.

    -The turntable operation creates a turntable -with the costs for every possible -turn on every possible node (intersection, crossroad) in given layer (arc_layer). +The turntable operation creates a turntable +with the costs for every possible +turn on every possible node (intersection, crossroad) in given layer (arc_layer). U-turns are taken in account too. Turntable is created in turn_layer and turn_cat_layer. -Building the turntable allows you to model e.g. traffic code, where some turns +Building the turntable allows you to model e.g. traffic code, where some turns may be prohibited. If features in analyzed network are changed, the turntable must be created again (e.g. it includes v.net connect operation). Turntable name consists of output vector map name + "_turntable_" + "t" + "_" + turn_layer + "_" + "tuc" + "_" + turn_cat_layer + "_" + "a" + "_" + arc_layer e. g. roads_turntable_t_3_tuc_4_a_1 +<<<<<<< HEAD

    These modules are able to work with the turntable: +======= +

    These modules are able to work with the turntable: +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) v.net.alloc, @@ -108,22 +112,23 @@

    DESCRIPTION

    wiki page.

    -Once a vector network has been created, it can be analyzed in a -number of powerful ways using the suite of v.net.* modules. +Once a vector network has been created, it can be analyzed in a +number of powerful ways using the suite of v.net.* modules. The shortest route between two nodes, following arcs, can be computed -(v.net.path), as can the -shortest route that will pass through a set of nodes and return to the +(v.net.path), as can the +shortest route that will pass through a set of nodes and return to the starting node (v.net.salesman). Least cost routes through the network can be calculated on the basis of distance only or on the basis of distance weighted by an attribute associated with each arc (for example, travel speed along a network segment). -A network can be divided into concentric zones of equal travel cost around +A network can be divided into concentric zones of equal travel cost around one or more nodes (v.net.iso) or subdivided so that each node is surrounded by a zone in which all arcs can be reached with the same travel costs as all arcs surrounding each other node (v.net.alloc). In addition to the modules listed above, the GRASS vector networking suite +<<<<<<< HEAD includes numerous other modules for analysis of network costs and connectivity. These include: @@ -140,11 +145,29 @@

    DESCRIPTION

    v.net.visibility
    +======= +includes numerous other modules for analysis of network costs and +connectivity. These include: + + +v.net.allpairs, +v.net.bridge, +v.net.centrality, +v.net.components, +v.net.distance, +v.net.flow, +v.net.spanningtree, +v.net.steiner, +v.net.timetable, +v.net.visibility + + +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794))

    NOTES

    -For a vector map prepared for network analysis in GRASS, nodes are -represented by the grass-internal geometry type node and arcs -by the geometry type line. +For a vector map prepared for network analysis in GRASS, nodes are +represented by the grass-internal geometry type node and arcs +by the geometry type line. If vector editing is required to modify the graph, g.gui.vdigit @@ -252,9 +275,9 @@

    AUTHORS

    TURNS SUPPORT

    -The turns support was implemnented as part of GRASS GIS turns cost project at Czech Technical University in Prague, Czech Republic. +The turns support was implemnented as part of GRASS GIS turns cost project at Czech Technical University in Prague, Czech Republic. Eliska Kyzlikova, Stepan Turek, Lukas Bocan and Viera Bejdova participated at the project. -Implementation: Stepan Turek +Implementation: Stepan Turek Documentation: Lukas Bocan Mentor: Martin Landa diff --git a/vector/v.normal/v.normal.html b/vector/v.normal/v.normal.html index 39dcc97c305..327fcdcd5d1 100644 --- a/vector/v.normal/v.normal.html +++ b/vector/v.normal/v.normal.html @@ -12,14 +12,14 @@

    NOTES

  • Sample skewness and kurtosis
  • Geary's a-statistic and an approximate normal transformation
  • Extreme normal deviates -
  • D'Agostino's D-statistic -
  • Modified Kuiper V-statistic -
  • Modified Watson U^2-statistic +
  • D'Agostino's D-statistic +
  • Modified Kuiper V-statistic +
  • Modified Watson U^2-statistic
  • Durbin's Exact Test (modified Kolmogorov) -
  • Modified Anderson-Darling statistic -
  • Modified Cramer-Von Mises W^2-statistic +
  • Modified Anderson-Darling statistic +
  • Modified Cramer-Von Mises W^2-statistic
  • Kolmogorov-Smirnov D-statistic (modified for normality testing) -
  • Chi-Square test statistic (equal probability classes) and +
  • Chi-Square test statistic (equal probability classes) and the number of degrees of freedom
  • Shapiro-Wilk W Test
  • Weisberg-Binghams W'' (similar to Shapiro-Francia's W') diff --git a/vector/v.out.ascii/v.out.ascii.html b/vector/v.out.ascii/v.out.ascii.html index 02340d77067..2eff87a01fa 100644 --- a/vector/v.out.ascii/v.out.ascii.html +++ b/vector/v.out.ascii/v.out.ascii.html @@ -33,7 +33,7 @@

    NOTES

    this is desired (e.g. using the UNIX cp command).

    It is possible to output the coordinates of vertices in a non-points vector -feature by first converting the vector feature to a points map with +feature by first converting the vector feature to a points map with v.to.points and then exporting with v.out.ascii in points mode. @@ -136,12 +136,12 @@

    SEE ALSO

    AUTHORS

    -Michael Higgins, -U.S. Army Construction Engineering +Michael Higgins, +U.S. Army Construction Engineering Research Laboratory
    -James Westervelt, -U.S. Army Construction Engineering +James Westervelt, +U.S. Army Construction Engineering Research Laboratory
    Radim Blazek, ITC-Irst, Trento, Italy diff --git a/vector/v.out.dxf/Makefile b/vector/v.out.dxf/Makefile index e73f308a235..e3eced3bce6 100644 --- a/vector/v.out.dxf/Makefile +++ b/vector/v.out.dxf/Makefile @@ -11,4 +11,3 @@ EXTRA_CFLAGS = $(VECT_CFLAGS) include $(MODULE_TOPDIR)/include/Make/Module.make default: cmd - diff --git a/vector/v.out.lidar/Makefile b/vector/v.out.lidar/Makefile index 153c4b40b20..0fba00d0075 100644 --- a/vector/v.out.lidar/Makefile +++ b/vector/v.out.lidar/Makefile @@ -13,4 +13,3 @@ include $(MODULE_TOPDIR)/include/Make/Module.make ifneq ($(USE_LIBLAS),) default: cmd endif - diff --git a/vector/v.out.ogr/local_proto.h b/vector/v.out.ogr/local_proto.h index aacaa3cfd44..7ed25a5170c 100644 --- a/vector/v.out.ogr/local_proto.h +++ b/vector/v.out.ogr/local_proto.h @@ -50,7 +50,7 @@ int mk_att(int, struct field_info *, dbDriver *, int, int *, const char **, int, char *get_datasource_name(const char *, int); /* list.c */ -char *OGR_list_write_drivers(); +char *OGR_list_write_drivers(void); void list_formats(void); char *default_driver(void); diff --git a/vector/v.out.ogr/v.out.ogr.html b/vector/v.out.ogr/v.out.ogr.html index 5af37ec0635..d9a2c84049b 100644 --- a/vector/v.out.ogr/v.out.ogr.html +++ b/vector/v.out.ogr/v.out.ogr.html @@ -7,7 +7,7 @@

    DESCRIPTION

    OGR (Simple Features Library) is part of the GDAL library, so you need to -install this library to use v.out.ogr. +install this library to use v.out.ogr.

    The OGR library supports many various formats including: @@ -28,7 +28,7 @@

    DESCRIPTION

    The list of supported formats is printed with the -l flag.

    -For further available other supported formats go +For further available other supported formats go here.

    NOTES

    @@ -141,7 +141,7 @@

    Export to GML

    (generates '/tmp/testogr.gml' file with layer 'testogr'):
    -v.out.ogr input=multi type=line output=/tmp/testogr.gml output_layer=testogr format=GML 
    +v.out.ogr input=multi type=line output=/tmp/testogr.gml output_layer=testogr format=GML
     

    Export to PostgreSQL/PostGIS

    diff --git a/vector/v.out.pov/Makefile b/vector/v.out.pov/Makefile index 33a99c21c11..f20c968931e 100644 --- a/vector/v.out.pov/Makefile +++ b/vector/v.out.pov/Makefile @@ -13,4 +13,3 @@ EXTRA_CFLAGS = $(VECT_CFLAGS) include $(MODULE_TOPDIR)/include/Make/Module.make default: cmd - diff --git a/vector/v.out.svg/v.out.svg.html b/vector/v.out.svg/v.out.svg.html index d6545689a35..2c3633833b0 100644 --- a/vector/v.out.svg/v.out.svg.html +++ b/vector/v.out.svg/v.out.svg.html @@ -3,7 +3,7 @@

    DESCRIPTION

    v.out.svg converts GRASS vector data to SVG (Scalable Vector Graphics) code notation. In particular, it
      -
    • converts GRASS line, boundary, area, point, centroid objects to SVG +
    • converts GRASS line, boundary, area, point, centroid objects to SVG <path />, <circle /> elements,
    • reduces coordinate precision in SVG-output to save bandwidth,
    • extracts GRASS attributes to gg:name="value" attributes.
    • diff --git a/vector/v.out.vtk/v.out.vtk.html b/vector/v.out.vtk/v.out.vtk.html index 0d9cea2e580..47bae357546 100644 --- a/vector/v.out.vtk/v.out.vtk.html +++ b/vector/v.out.vtk/v.out.vtk.html @@ -1,8 +1,8 @@

      DESCRIPTION

      -v.out.vtk -converts a GRASS vector map in binary format to the VTK ASCII -output. +v.out.vtk +converts a GRASS vector map in binary format to the VTK ASCII +output.

      If the output parameter is not given, the output will be send to stdout.

      NOTES

      @@ -24,28 +24,28 @@

      NOTES

      will be exported.

      -3d vectors are supported by default. The created VTK data always includes x, y and z coordinates +3d vectors are supported by default. The created VTK data always includes x, y and z coordinates (z = 0 if not a 3d vector map). Note that you can easily convert your 2d vectors into 3d vectors with v.drape.

      Because of the 32bit limits of OpenGL which is used by VTK, visualisation errors may occur if the grass region contains coordinates greater than 1.000.000 and vector coordinates -with 0.01 - 0.001 meters precisison. For this reason, the flag "-c" was added. The coordinates are +with 0.01 - 0.001 meters precisison. For this reason, the flag "-c" was added. The coordinates are transformed to smaller coordinates (by decreasing the coordinates with the region center).

      If the "-c" flag is used and the data should be visualised together with other data exported via *.out.vtk -modules, be sure the "-c" flag was also set in these modules. -But this will only work with data from the SAME location +modules, be sure the "-c" flag was also set in these modules. +But this will only work with data from the SAME location (The reference point for the coordinates transformation is based on the default region).

      -The GRASS vector data is converted into the polydata format of VTK: +The GRASS vector data is converted into the polydata format of VTK:
      • vtk Vertices -- representing points and centroids
      • -
      • vtk lines -- representing lines and boundaries
      • +
      • vtk lines -- representing lines and boundaries
      • vtk polygons -- representing areas and faces

      The VTK file can be visualized with diff --git a/vector/v.out.vtk/writeVTK.c b/vector/v.out.vtk/writeVTK.c index 060ba7c318e..bf4e756e040 100644 --- a/vector/v.out.vtk/writeVTK.c +++ b/vector/v.out.vtk/writeVTK.c @@ -614,7 +614,7 @@ int write_vtk_db_data(FILE *ascii, struct Map_info *Map, VTKInfo *info, int numcelldata = info->maxnumvertices + info->maxnumlines + info->maxnumpolygons; /* attribute table info */ - int ncol = 0, colsqltype, colctype, num_atts, cur_att, progress; + int ncol = 0, colsqltype, colctype, num_atts, cur_att; struct field_info *Fi = NULL; dbDriver *Driver = NULL; dbHandle handle; @@ -677,7 +677,6 @@ int write_vtk_db_data(FILE *ascii, struct Map_info *Map, VTKInfo *info, G_message("Writing %i scalar variables as cell data ...", num_atts); - progress = 0; for (cur_att = 0; cur_att < ncol; cur_att++) { if (numcelldata > 0) { @@ -704,7 +703,10 @@ int write_vtk_db_data(FILE *ascii, struct Map_info *Map, VTKInfo *info, } fprintf(ascii, "LOOKUP_TABLE default\n"); +<<<<<<< HEAD progress++; +======= +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) /*For every available vector type */ for (k = 0; k < typenum; k++) { diff --git a/vector/v.outlier/Makefile b/vector/v.outlier/Makefile index 3df3ff647d6..b9bd6183a28 100644 --- a/vector/v.outlier/Makefile +++ b/vector/v.outlier/Makefile @@ -10,4 +10,3 @@ EXTRA_CFLAGS = $(VECT_CFLAGS) include $(MODULE_TOPDIR)/include/Make/Module.make default: cmd - diff --git a/vector/v.overlay/Makefile b/vector/v.overlay/Makefile index d89e5b4cf84..4b2e474a42a 100644 --- a/vector/v.overlay/Makefile +++ b/vector/v.overlay/Makefile @@ -10,5 +10,4 @@ EXTRA_CFLAGS = $(VECT_CFLAGS) include $(MODULE_TOPDIR)/include/Make/Module.make -default: cmd - +default: cmd diff --git a/vector/v.overlay/line_area.c b/vector/v.overlay/line_area.c index e6bbfe50123..fafede049a0 100644 --- a/vector/v.overlay/line_area.c +++ b/vector/v.overlay/line_area.c @@ -56,7 +56,11 @@ static int merge_line(struct Map_info *Map, int line, struct line_pnts *MPoints, struct line_cats *MCats) { int i, first, last, next_line, curr_line; +<<<<<<< HEAD int merged = 0, newl = 0; +======= + int merged = 0; +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) int next_node, direction, node_n_lines, type, ltype, lines_type; static struct ilist *List = NULL; static struct line_pnts *Points = NULL; @@ -196,7 +200,6 @@ static int merge_line(struct Map_info *Map, int line, struct line_pnts *MPoints, } MPoints->n_points++; merged += List->n_values; - newl++; return merged; } diff --git a/vector/v.overlay/v.overlay.html b/vector/v.overlay/v.overlay.html index 3456c6b0b1a..e8dda4c1715 100644 --- a/vector/v.overlay/v.overlay.html +++ b/vector/v.overlay/v.overlay.html @@ -1,24 +1,24 @@

      DESCRIPTION

      -v.overlay allows the user to overlay two vector maps. Features -in ainput can be lines or areas and are cut with areas in -binput. Simple clipping can be performed with the and +v.overlay allows the user to overlay two vector maps. Features +in ainput can be lines or areas and are cut with areas in +binput. Simple clipping can be performed with the and operator.

      -If areas in ainput are overlaid with areas in binput, -it is sometimes necessary to snap areas of binput to those of -ainput, otherwise areas can go missing or many sliver areas -can be created. Snapping is enabled by default and can be disabled by -setting the snap option to a negative value. Recommended values -are between 0.00000001 and 0.0001. Using larger values for snapping can -have undesired side-effects, but may sometimes be necessary to get a -clean output (see example below). In general, it is recommended to start -with a small snapping threshold, gradually increasing the threshold until -the result is reasonably clean. Snapping modifies only boundaries in -binput, which are snapped to boundaries in ainput. Boundaries in ainput +If areas in ainput are overlaid with areas in binput, +it is sometimes necessary to snap areas of binput to those of +ainput, otherwise areas can go missing or many sliver areas +can be created. Snapping is enabled by default and can be disabled by +setting the snap option to a negative value. Recommended values +are between 0.00000001 and 0.0001. Using larger values for snapping can +have undesired side-effects, but may sometimes be necessary to get a +clean output (see example below). In general, it is recommended to start +with a small snapping threshold, gradually increasing the threshold until +the result is reasonably clean. Snapping modifies only boundaries in +binput, which are snapped to boundaries in ainput. Boundaries in ainput are not modified. - -

      [8] James Darrell McCauley 1993. Complete Spatial Randomness and Quadrat Methods - +

      [8] James Darrell McCauley 1993. Complete Spatial Randomness and Quadrat Methods - GRASS Tutorial on v.qcount

      SEE ALSO

      diff --git a/vector/v.random/main.c b/vector/v.random/main.c index edc15cb4225..202dcfe2a62 100644 --- a/vector/v.random/main.c +++ b/vector/v.random/main.c @@ -359,7 +359,11 @@ int main(int argc, char *argv[]) count = 0; +<<<<<<< HEAD for (i = 1; i <= nareas; i++) { +======= + for (i = 1; i <= (unsigned int)nareas; i++) { +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) if (!Vect_get_area_centroid(&In, i)) continue; @@ -481,7 +485,11 @@ int main(int argc, char *argv[]) cat_area = -1; if (field > 0) { if (cat_list) { +<<<<<<< HEAD for (i = 0; i < Cats->n_cats; i++) { +======= + for (i = 0; i < (unsigned int)Cats->n_cats; i++) { +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) if (Cats->field[i] == field && Vect_cat_in_cat_list(Cats->cat[i], cat_list)) { cat_area = Cats->cat[i]; diff --git a/vector/v.random/test.v.random.sh b/vector/v.random/test.v.random.sh index 325be26ad72..f864ac2a3fb 100755 --- a/vector/v.random/test.v.random.sh +++ b/vector/v.random/test.v.random.sh @@ -21,4 +21,4 @@ v.random --o -zd output=test_random_vect_4 n=20 zmin=0 zmax=100 column=height se # v.out.ascii --o format=point dp=3 input=test_random_vect_1 output=test_random_vect_1.ref # db.select "select * from test_random_vect_2" > test_random_vect_2.ref # v.out.ascii --o format=point dp=3 input=test_random_vect_3 output=test_random_vect_3.ref -# db.select "select * from test_random_vect_4" > test_random_vect_4.ref \ No newline at end of file +# db.select "select * from test_random_vect_4" > test_random_vect_4.ref diff --git a/vector/v.random/v.random.html b/vector/v.random/v.random.html index e11fef747ad..638398b5a06 100644 --- a/vector/v.random/v.random.html +++ b/vector/v.random/v.random.html @@ -22,9 +22,9 @@

      Restriction to vector areas

      requested number of points are distributed across all areas.

      -If the -a flag is given, the requested number of points is -generated for each individual area. For example, if 20 points should be -generated and the input map has 100 individual areas, 2000 points will +If the -a flag is given, the requested number of points is +generated for each individual area. For example, if 20 points should be +generated and the input map has 100 individual areas, 2000 points will be generated in total.

      @@ -37,7 +37,7 @@

      NOTES

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

      EXAMPLES

      All examples are based on the North Carolina sample dataset. @@ -119,7 +119,7 @@

      Generating random points in selected areas

      Generate 3 random points only in selected areas ("RALEIGH" related ZIP code areas):
      -v.random restrict=zipcodes_wake output=zipcodes_local_random_n3 npoints=3 where="ZIPNAME = 'RALEIGH'" -a 
      +v.random restrict=zipcodes_wake output=zipcodes_local_random_n3 npoints=3 where="ZIPNAME = 'RALEIGH'" -a
       
       # visualization
       d.mon wx0
      @@ -195,7 +195,7 @@ 

      Random sampling from vector map

      g.region -p vector=geology v.random output=random_samples npoints=20 v.db.addtable map=random_samples columns='cat integer, geology varchar(100)' -v.what.vect map=random_samples column=geology query_map=geology query_layer=1 query_column=GEO_NAME +v.what.vect map=random_samples column=geology query_map=geology query_layer=1 query_column=GEO_NAME v.db.select random_samples cat|geology 1|PzZm @@ -274,6 +274,10 @@

      AUTHOR

      James Darrell McCauley <darrell@mccauley-usa.com>, +<<<<<<< HEAD
      when he was at: +======= +
      when he was at: +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) Agricultural Engineering Purdue University diff --git a/vector/v.reclass/Makefile b/vector/v.reclass/Makefile index 74a91f7d99e..7a13e29186b 100644 --- a/vector/v.reclass/Makefile +++ b/vector/v.reclass/Makefile @@ -11,4 +11,3 @@ EXTRA_CFLAGS = $(VECT_CFLAGS) include $(MODULE_TOPDIR)/include/Make/Module.make default: cmd - diff --git a/vector/v.reclass/v.reclass.html b/vector/v.reclass/v.reclass.html index e4a891b03a6..e1a6f4ae2e1 100644 --- a/vector/v.reclass/v.reclass.html +++ b/vector/v.reclass/v.reclass.html @@ -9,7 +9,7 @@

      DESCRIPTION

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

      NOTES

      column containing the unique string column values, sorted in alphabetical order. -

      For dissolving common boundaries, see +

      For dissolving common boundaries, see v.dissolve.

      EXAMPLES

      @@ -52,7 +52,7 @@

      Example 1: Reclass by rules

      select id from tland where use = 'E13' and owner = 'Jara Cimrman' changed to category 1;
      -values selected from database by SQL select statement: +values selected from database by SQL select statement:
      select id from tland where use = 'E14' changed to category 2. diff --git a/vector/v.rectify/v.rectify.html b/vector/v.rectify/v.rectify.html index ea8e3734150..7e744042489 100644 --- a/vector/v.rectify/v.rectify.html +++ b/vector/v.rectify/v.rectify.html @@ -1,55 +1,55 @@

      DESCRIPTION

      -v.rectify uses control points to calculate a 2D or 3D -transformation matrix based on a first, second, or third order -polynomial and then converts x,y(, z) coordinates to standard map -coordinates for each object in the vector map. The result is a vector +v.rectify uses control points to calculate a 2D or 3D +transformation matrix based on a first, second, or third order +polynomial and then converts x,y(, z) coordinates to standard map +coordinates for each object in the vector map. The result is a vector map with a transformed coordinate system (i.e., a different coordinate system than before it was rectified).

      -The -o flag enforces orthogonal rotation (currently for 3D only) -where the axes remain orthogonal to each other, e.g. a cube with right -angles remains a cube with right angles after transformation. This is not +The -o flag enforces orthogonal rotation (currently for 3D only) +where the axes remain orthogonal to each other, e.g. a cube with right +angles remains a cube with right angles after transformation. This is not guaranteed even with affine (1st order) 3D transformation.

      -Great care should be taken with the placement of Ground Control Points. -For 2D transformation, the control points must not lie on a line, instead -3 of the control points must form a triangle. For 3D transformation, the -control points must not lie on a plane, instead 4 of the control points -must form a triangular pyramid. It is recommended to investigate RMS +Great care should be taken with the placement of Ground Control Points. +For 2D transformation, the control points must not lie on a line, instead +3 of the control points must form a triangle. For 3D transformation, the +control points must not lie on a plane, instead 4 of the control points +must form a triangular pyramid. It is recommended to investigate RMS errors and deviations of the Ground Control Points prior to transformation.

      -2D Ground Control Points can be identified in +2D Ground Control Points can be identified in g.gui.gcp.

      -3D Ground Control Points must be provided in a text file with the -points option. The 3D format is equivalent to the format for 2D +3D Ground Control Points must be provided in a text file with the +points option. The 3D format is equivalent to the format for 2D ground control points with an additional third coordinate:

        x y z east north height status
       
      -where x, y, z are source coordinates, east, north, height -are target coordinates and status (0 or 1) indicates whether a given -point should be used. Numbers must be separated by space and must use a +where x, y, z are source coordinates, east, north, height +are target coordinates and status (0 or 1) indicates whether a given +point should be used. Numbers must be separated by space and must use a point (.) as decimal separator.

      -If no group is given, the rectified vector will be written to -the current mapset. If a group is given and a target has been -set for this group with i.target, +If no group is given, the rectified vector will be written to +the current mapset. If a group is given and a target has been +set for this group with i.target, the rectified vector will be written to the target location and mapset.

      Coordinate transformation and RMSE

      The desired order of transformation (1, 2, or 3) is selected with the order option. -v.rectify will calculate the RMSE if the -r flag is -given and print out statistcs in tabular format. The last row gives a -summary with the first column holding the number of active points, -followed by average deviations for each dimension and both forward and +v.rectify will calculate the RMSE if the -r flag is +given and print out statistcs in tabular format. The last row gives a +summary with the first column holding the number of active points, +followed by average deviations for each dimension and both forward and backward transformation and finally forward and backward overall RMSE.

      2D linear affine transformation (1st order transformation)

      @@ -84,15 +84,15 @@

      Polynomial Transformation Matrix (2nd, 3d order transformation)

      (represented by n) is
      -
      ((n + 1) * (n + 2) / 2) +
      ((n + 1) * (n + 2) / 2)
      -or 3, 6, and 10 respectively. For a 3D transformation of first, second, -or third order, the minimum number of required control points is 4, 10, -and 20, respectively. It is strongly recommended that more than the -minimum number of points be identified to allow for an overly-determined -transformation calculation which will generate the Root Mean Square (RMS) -error values for each included point. The polynomial equations are +or 3, 6, and 10 respectively. For a 3D transformation of first, second, +or third order, the minimum number of required control points is 4, 10, +and 20, respectively. It is strongly recommended that more than the +minimum number of points be identified to allow for an overly-determined +transformation calculation which will generate the Root Mean Square (RMS) +error values for each included point. The polynomial equations are determined using a modified Gaussian elimination method.

      SEE ALSO

      diff --git a/vector/v.sample/README b/vector/v.sample/README index 1600fc3fa43..fca27927c0b 100644 --- a/vector/v.sample/README +++ b/vector/v.sample/README @@ -1,4 +1,4 @@ -This is s.sample, version 0.6B <02 Jan 1995> +This is s.sample, version 0.6B <02 Jan 1995> Copyright (C) 1994, 1995. James Darrell McCauley The man page should have installed automagically. Please check. diff --git a/vector/v.sample/v.sample.html b/vector/v.sample/v.sample.html index ffd746fb0e3..59be4ea93d2 100644 --- a/vector/v.sample/v.sample.html +++ b/vector/v.sample/v.sample.html @@ -12,7 +12,7 @@

      DESCRIPTION

      NOTES

      The output points will have the easting and northing of the input points. -The input category value is used. The input attribute, raster value +The input category value is used. The input attribute, raster value and difference is written to output.

      When NULL values are encountered for a cell, zero value is used @@ -63,13 +63,13 @@

      SEE ALSO

      Image Sampling Methods - GRASS Tutorial on s.sample -(available as -s.sample-tutorial.ps.gz) +(available as +s.sample-tutorial.ps.gz)

      AUTHORS

      James Darrell McCauley -
      when he was at: +
      when he was at: Agricultural Engineering Purdue University

      Updated for GRASS 5.0 by Eric G. Miller diff --git a/vector/v.segment/Makefile b/vector/v.segment/Makefile index ebf92d3d32b..bce93358fa3 100644 --- a/vector/v.segment/Makefile +++ b/vector/v.segment/Makefile @@ -12,4 +12,3 @@ EXTRA_INC = $(VECT_INC) EXTRA_CFLAGS = $(VECT_CFLAGS) default: cmd - diff --git a/vector/v.segment/v.segment.html b/vector/v.segment/v.segment.html index b363d2889b4..9f04ed4f682 100644 --- a/vector/v.segment/v.segment.html +++ b/vector/v.segment/v.segment.html @@ -1,7 +1,7 @@

      DESCRIPTION

      v.segment generates segments or points from input lines and from -positions read from a text file or 'stdin'. It includes the creation +positions read from a text file or 'stdin'. It includes the creation of parallel lines or points in given destination from the line.

      The format is: diff --git a/vector/v.select/Makefile b/vector/v.select/Makefile index 5e541c443c4..5ffa6f40f02 100644 --- a/vector/v.select/Makefile +++ b/vector/v.select/Makefile @@ -10,5 +10,4 @@ EXTRA_CFLAGS = $(VECT_CFLAGS) include $(MODULE_TOPDIR)/include/Make/Module.make -default: cmd - +default: cmd diff --git a/vector/v.select/v.select.html b/vector/v.select/v.select.html index 654661db29d..d575de5107f 100644 --- a/vector/v.select/v.select.html +++ b/vector/v.select/v.select.html @@ -1,6 +1,6 @@

      DESCRIPTION

      -v.select allows the user to select features from a vector +v.select allows the user to select features from a vector map by features from another one.

      Supported operators (without GEOS; using GRASS' own algorithm): @@ -283,7 +283,11 @@

      Extraction of areas overlapping with a line

      diff --git a/vector/v.split/Makefile b/vector/v.split/Makefile index 463f89ef1df..7f025789b9a 100644 --- a/vector/v.split/Makefile +++ b/vector/v.split/Makefile @@ -11,4 +11,3 @@ EXTRA_CFLAGS = $(VECT_CFLAGS) include $(MODULE_TOPDIR)/include/Make/Module.make default: cmd - diff --git a/vector/v.split/main.c b/vector/v.split/main.c index 59120c2e1d5..4d53f789cb5 100644 --- a/vector/v.split/main.c +++ b/vector/v.split/main.c @@ -44,7 +44,11 @@ int main(int argc, char *argv[]) int line, nlines, layer, nosplit, fixedlength; double length = -1; int vertices = 0; +<<<<<<< HEAD double (*line_length)(); +======= + double (*line_length)(const struct line_pnts *); +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) int geodesic = 0; G_gisinit(argv[0]); diff --git a/vector/v.split/v.split.html b/vector/v.split/v.split.html index 7b509da69ae..e25c3082b98 100644 --- a/vector/v.split/v.split.html +++ b/vector/v.split/v.split.html @@ -1,8 +1,8 @@

      DESCRIPTION

      -v.split splits vector lines into shorter segments using +v.split splits vector lines into shorter segments using a maximal distance between nodes. The resulting length of all segments -is expected to be equal and not higher than the given length +is expected to be equal and not higher than the given length parameter.

      NOTES

      diff --git a/vector/v.surf.bspline/Makefile b/vector/v.surf.bspline/Makefile index 64a4f7871c3..ed6adfd8ef2 100644 --- a/vector/v.surf.bspline/Makefile +++ b/vector/v.surf.bspline/Makefile @@ -10,4 +10,3 @@ EXTRA_CFLAGS = $(VECT_CFLAGS) include $(MODULE_TOPDIR)/include/Make/Module.make default: cmd - diff --git a/vector/v.surf.bspline/resamp.c b/vector/v.surf.bspline/resamp.c index ea5ed98a81b..d8c4b2d5f4c 100644 --- a/vector/v.surf.bspline/resamp.c +++ b/vector/v.surf.bspline/resamp.c @@ -115,7 +115,6 @@ int P_Sparse_Raster_Points(SEGMENT *out_seg, struct Cell_head *Elaboration, { int i, row, col; double X, Y, interpolation, csi, eta, weight, dval; - int points_in_box = 0; /* Reading points inside output region and inside general box */ /* all points available here are inside the output box, @@ -139,7 +138,10 @@ int P_Sparse_Raster_Points(SEGMENT *out_seg, struct Cell_head *Elaboration, G_fatal_error("col index out of range"); continue; } +<<<<<<< HEAD points_in_box++; +======= +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) G_debug(3, "P_Sparse_Raster_Points: interpolate point %d...", i); if (bilin) diff --git a/vector/v.surf.bspline/test_suite/profile_cmd.sh b/vector/v.surf.bspline/test_suite/profile_cmd.sh index 0900c35973e..b8c6dd867d5 100755 --- a/vector/v.surf.bspline/test_suite/profile_cmd.sh +++ b/vector/v.surf.bspline/test_suite/profile_cmd.sh @@ -61,4 +61,3 @@ sys 0m0.560s real 2m51.480s user 2m51.031s sys 0m0.464s - diff --git a/vector/v.surf.bspline/v.surf.bspline.html b/vector/v.surf.bspline/v.surf.bspline.html index 3d80244bfad..cf7d9cad889 100644 --- a/vector/v.surf.bspline/v.surf.bspline.html +++ b/vector/v.surf.bspline/v.surf.bspline.html @@ -11,22 +11,22 @@

      DESCRIPTION

      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 -splines are 2D piece-wise non-zero polynomial functions calculated -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 -observation and one coefficient for each spline (in order to avoid -instability). +

      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 +splines are 2D piece-wise non-zero polynomial functions calculated +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 +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 @@ -112,7 +112,7 @@

      Basic interpolation and raster output with a longer spline step

      Estimation of lambda_i parameter with a cross validation process

      -v.surf.bspline -c input=point_vector 
      +v.surf.bspline -c input=point_vector
       

      Estimation on sparse points

      @@ -167,7 +167,7 @@

      REFERENCES

    • Brovelli M. A e Longoni U.M., 2003, Software per il filtraggio di dati LIDAR, Rivista dell'Agenzia del Territorio, n. 3-2003, pp. 11-22 (ISSN 1593-2192)
    • -
    • Antolin R. and Brovelli M.A., 2007, LiDAR data Filtering with GRASS GIS for the +
    • Antolin R. and Brovelli M.A., 2007, LiDAR data Filtering with GRASS GIS for the Determination of Digital Terrain Models. Proceedings of Jornadas de SIG Libre, Girona, España. CD ISBN: 978-84-690-3886-9
    diff --git a/vector/v.surf.idw/v.surf.idw.html b/vector/v.surf.idw/v.surf.idw.html index eed20a917f3..89eae02696c 100644 --- a/vector/v.surf.idw/v.surf.idw.html +++ b/vector/v.surf.idw/v.surf.idw.html @@ -17,11 +17,11 @@

    DESCRIPTION

    NOTES

    The amount of memory used by this program is related to the number -of vector points in the current region. If the vector point map is +of vector points in the current region. If the vector point map is very dense (i.e., contains many data points), the program may not be able to get all the memory it needs from the -system. The time required to execute is related to the -resolution of the current region, after an initial delay +system. The time required to execute is related to the +resolution of the current region, after an initial delay determined by the time taken to read the input vector points map.

    @@ -70,7 +70,7 @@

    NOTES

    Greater values assign greater influence to values closer to the point to be interpolated. The interpolation function peaks sharply over the given data points for 0 < p < 1 and more smoothly for -larger values. The default value for the power parameter is 2. +larger values. The default value for the power parameter is 2.

    By setting npoints=1, the module can be used to calculate @@ -93,8 +93,8 @@

    SEE ALSO

    AUTHORS

    -Michael Shapiro, -U.S. Army Construction Engineering +Michael Shapiro, +U.S. Army Construction Engineering Research Laboratory
    Improved algorithm (indexes points according to cell and ignores diff --git a/vector/v.surf.rst/BUGS b/vector/v.surf.rst/BUGS index bfa0651d907..aaf00c4a922 100644 --- a/vector/v.surf.rst/BUGS +++ b/vector/v.surf.rst/BUGS @@ -18,5 +18,3 @@ old notes - check whether masking works - test variable smoothing - - diff --git a/vector/v.surf.rst/DESCRIPTION b/vector/v.surf.rst/DESCRIPTION index 51b3ae5cac0..39360b88406 100644 --- a/vector/v.surf.rst/DESCRIPTION +++ b/vector/v.surf.rst/DESCRIPTION @@ -5,16 +5,16 @@ written by Irina Kosinovsky 1995 this description was not edited/reviewed, please use with caution -double +double IL_crst (r,fi) double r; /* radius */ double fi; /* tension */ -Radial based generating function - completely regularized spline +Radial based generating function - completely regularized spline with tension (d=2) -int +int IL_crstg (r, fi, gd1, gd2) double r; /* radius */ double fi; /* tension */ @@ -24,16 +24,16 @@ IL_crstg (r, fi, gd1, gd2) Function for calculating derivatives (d=2) -int +int IL_input_data_2d(fdinp,root,zmult,xmin,xmax,ymin,ymax,zmin,zmax, MAXPOINTS,KMIN,KMAX,n_points) FILE *fdinp; /* input stream */ struct multtree *root; /* quadtree */ double zmult; /* multiplier for z-values */ - double *xmin,*xmax,*ymin,*ymax,*zmin,*zmax; + double *xmin,*xmax,*ymin,*ymax,*zmin,*zmax; int maxpoints; /* max number of points per segment for interpolation */ int kmin; /* min number of points per segment for interpolation */ - int kmax; /* max number of points per segment */ + int kmax; /* max number of points per segment */ int *n_points; /* number of points used for interpolation */ Inserts input data inside the region into a quad tree. @@ -42,22 +42,22 @@ Returns number of segments in the quad tree. -int +int IL_create_bitmask(maskmap,bitmask,nsizr,nsizc) char *maskmap; /* name of mask */ struct BM *bitmask; int nsizr,nsizc; /* number of rows and columns */ -Creates a bitmap mask from given raster file +Creates a bitmap mask from given raster file -int +int IL_grid_calc_2d(data,az,adx,ady,adxx,adyy,adxy, Tmp_fd_z,Tmp_fd_dx,Tmp_fd_dy,Tmp_fd_xx,Tmp_fd_yy,Tmp_fd_xy, bitmask,dnorm,zmin,zmax,zminac,zmaxac,gmin,gmax, c1min,c1max,c2min,c2max,ertot,fi,KMAX2,b,scik1,scik2,scik3,offset1, - secpar,interp,interpder,wr_temp) + secpar,interp,interpder,wr_temp) struct quaddata *data; /* given segment */ double *az,*adx,*ady,*adxx,*adyy,*adxy; /* array for interpolated values */ @@ -89,7 +89,7 @@ Also calls secpar() to compute slope, aspect and curvatures if required. -int +int IL_matrix_create(points,n_points,matrix,indx,fi,rsm,interp) struct triple *points; /* points for interpolation */ int n_points; /* number of points */ @@ -105,11 +105,11 @@ and interpolating function interp() - -int + +int IL_check_at_points_2d (n_points, points,b,ertot,tension,interp,zmin,dnorm) - int n_points; /* number of points */ + int n_points; /* number of points */ struct triple *points; /* points for interpolation */ double *b; /* solution of linear equations */ double *ertot; /* total error */ @@ -126,7 +126,7 @@ points. If smoothing is used calculate the maximum error caused by smoothing. -int +int IL_secpar_loop_2d(ngstc,nszc,k,bitmask,adx,ady,adxx,adyy,adxy, gmin,gmax,c1min,c1max,c2min,c2max,cond1,cond2) int ngstc; /* starting column */ @@ -142,7 +142,7 @@ arrays adx,...,adxy between columns ngstc and nszc. -int +int IL_write_temp_2d(ngstc,nszc,offset2,Tmp_fd_z,Tmp_fd_dx,Tmp_fd_dy,Tmp_fd_xx, Tmp_fd_yy,Tmp_fd_xy, az,adx,ady,adxx,adyy,adxy,scik1,scik2,scik3) @@ -158,12 +158,12 @@ offset) in corresponding temp file */ -int +int IL_interp_segments_2d (root, tree,az,adx,ady,adxx,adyy,adxy, Tmp_fd_z,Tmp_fd_dx,Tmp_fd_dy,Tmp_fd_xx,Tmp_fd_yy,Tmp_fd_xy,bitmask, dnorm,zmin,zmax,zminac,zmaxac,gmin,gmax,c1min,c1max, c2min,c2max,ertot,fi,KMIN,KMAX2,totsegm,rsm,scik1,scik2,scik3,offset1, - grid_calc,matrix_create,check_points,secpar,interp,interpder,wr_temp) + grid_calc,matrix_create,check_points,secpar,interp,interpder,wr_temp) struct multtree *root; /* root of the quad tree */ struct multtree *tree; /* current leaf of the quad tree */ double *az,*adx,*ady,*adxx, /* interp. value arrays (for gridcalc()*/ @@ -201,13 +201,13 @@ Recursively processes each segment in a tree by check_points(). d) computing grid for this segment using points and interp() by calling grid_calc(). - -int + +int IL_output_2d (cellhd,nsizr,nsizc,elev,slope,aspect,pcurv,tcurv,mcurv, Tmp_fd_z,Tmp_fd_dx,Tmp_fd_dy,Tmp_fd_xx,Tmp_fd_yy,Tmp_fd_xy, zmin,zmax,zminac,zmaxac,c1min,c1max,c2min,c2max,gmin,gmax,scik1,scik2,scik3, @@ -232,6 +232,3 @@ IL_output_2d (cellhd,nsizr,nsizc,elev,slope,aspect,pcurv,tcurv,mcurv, char *input; /* input file name */ Creates output files as well as history files and color tables for them. - - - diff --git a/vector/v.surf.rst/HISTORY b/vector/v.surf.rst/HISTORY index ff6e9d84016..b4c4129c675 100644 --- a/vector/v.surf.rst/HISTORY +++ b/vector/v.surf.rst/HISTORY @@ -13,6 +13,6 @@ New structure: - moved v.surf.rst to src/mapdev/ - moved r.resamp.rst to src/raster/ -Spring 1999: changes which allows you to select -which attribute to interpolate and which +Spring 1999: changes which allows you to select +which attribute to interpolate and which one to use for smoothing) diff --git a/vector/v.surf.rst/Makefile b/vector/v.surf.rst/Makefile index fac93e9d913..3b5d8eca836 100644 --- a/vector/v.surf.rst/Makefile +++ b/vector/v.surf.rst/Makefile @@ -4,14 +4,15 @@ PGM=v.surf.rst EXTRA_CLEAN_DIRS=doxygenhtml -LIBES = $(INTERPFLLIB) $(QTREELIB) $(INTERPDATALIB) $(GMATHLIB) $(VECTORLIB) $(DBMILIB) $(GISLIB) $(MATHLIB) $(OMPLIB) +LIBES = $(INTERPFLLIB) $(QTREELIB) $(INTERPDATALIB) $(GMATHLIB) $(VECTORLIB) $(DBMILIB) $(GISLIB) $(MATHLIB) +EXTRA_LIBS = $(OPENMP_LIBPATH) $(OPENMP_LIB) DEPENDENCIES = $(INTERPFLDEP) $(QTREEDEP) $(INTERPDATADEP) $(GMATHDEP) $(VECTORDEP) $(DBMIDEP) $(GISDEP) -EXTRA_INC = $(VECT_INC) -EXTRA_CFLAGS = $(VECT_CFLAGS) $(OMPCFLAGS) +EXTRA_INC = $(VECT_INC) $(OPENMP_INCPATH) +EXTRA_CFLAGS = $(VECT_CFLAGS) $(OPENMP_CFLAGS) include $(MODULE_TOPDIR)/include/Make/Module.make -default: cmd +default: cmd man: doxygen $(MODULE_TOPDIR)/Doxyfile diff --git a/vector/v.surf.rst/README b/vector/v.surf.rst/README index a3a2aac4111..58d3652ab63 100644 --- a/vector/v.surf.rst/README +++ b/vector/v.surf.rst/README @@ -25,18 +25,16 @@ programs. The methods are described in (use these papers as references in your publications): - Mitasova, H., and Mitas, L., 1993, - Interpolation by Regularized Spline with Tension: - I. Theory and implementation. Mathematical Geology, 25, 641-55. - + Mitasova, H., and Mitas, L., 1993, + Interpolation by Regularized Spline with Tension: + I. Theory and implementation. Mathematical Geology, 25, 641-55. + 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-69. - + Interpolation by Regularized Spline with Tension: + II. Application to terrain modeling and surface geometry analysis. + Mathematical Geology, 25, 657-69. + 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. + distributed phenomena: New methods and tools for GRASS GIS. International Journal of Geographic Information Systems,9(4), 433-46. - - diff --git a/vector/v.surf.rst/main.c b/vector/v.surf.rst/main.c index 38e9d94eeca..239134f65c8 100644 --- a/vector/v.surf.rst/main.c +++ b/vector/v.surf.rst/main.c @@ -899,7 +899,12 @@ static FILE *create_temp_file(const char *name, char **tmpname) G_fatal_error(_("Unable to open temporary file <%s>"), *tmpname); for (i = 0; i < n_rows; i++) { +<<<<<<< HEAD if (fwrite(zero_array_cell, sizeof(FCELL), n_cols, fp) != n_cols) { +======= + if (fwrite(zero_array_cell, sizeof(FCELL), n_cols, fp) != + (size_t)n_cols) { +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) clean(); G_fatal_error(_("Error writing temporary file <%s>"), *tmpname); } diff --git a/vector/v.surf.rst/test_suite/profile.sh b/vector/v.surf.rst/test_suite/profile.sh index d62e0a849f2..7e1f226d403 100755 --- a/vector/v.surf.rst/test_suite/profile.sh +++ b/vector/v.surf.rst/test_suite/profile.sh @@ -36,5 +36,3 @@ user 1m1.312s sys 0m0.080s --raster map not found? - - diff --git a/vector/v.surf.rst/v.surf.rst.html b/vector/v.surf.rst/v.surf.rst.html index 7e4fcae8b34..364952e70ca 100644 --- a/vector/v.surf.rst/v.surf.rst.html +++ b/vector/v.surf.rst/v.surf.rst.html @@ -340,7 +340,7 @@

    REFERENCES

    • - Mitasova, H., Mitas, L. and Harmon, R.S., 2005, + Mitasova, H., Mitas, L. and Harmon, R.S., 2005, Simultaneous spline approximation and topographic analysis for lidar elevation data in open source GIS, IEEE GRSL 2 (4), 375- 379.
    • Hofierka, J., 2005, Interpolation of Radioactivity Data Using Regularized Spline with Tension. Applied GIS, Vol. 1, No. 2, pp. 16-01 to 16-13. DOI: 10.2104/ag050016
    • @@ -353,8 +353,8 @@

      REFERENCES

      GRASS GIS. International Journal of GIS, 9 (4), special issue on Integrating GIS and Environmental modeling, 433-446.
    • - Mitasova, H. and Mitas, L., 1993: - Interpolation by Regularized Spline with Tension: + Mitasova, H. and Mitas, L., 1993: + Interpolation by Regularized Spline with Tension: I. Theory and Implementation, Mathematical Geology ,25, 641-655.
    • Mitasova, H. and Hofierka, J., 1993: Interpolation @@ -364,7 +364,7 @@

      REFERENCES

      Mitas, L., and Mitasova H., 1988, General variational approach to the approximation problem, Computers and Mathematics with Applications, v.16, p. 983-992.
    • - Neteler, M. and Mitasova, H., 2008, Open Source GIS: A GRASS GIS Approach, 3rd Edition, + Neteler, M. and Mitasova, H., 2008, Open Source GIS: A GRASS GIS Approach, 3rd Edition, Springer, New York, 406 pages.
    • Talmi, A. and Gilat, G., 1977 : Method for Smooth Approximation of Data, Journal of Computational Physics, 23, p.93-123.
    • @@ -396,7 +396,7 @@

      AUTHORS


      Lubos Mitas, NCSA, University of Illinois at Urbana Champaign, Illinois, USA (1990-2000); Department of Physics, North Carolina State University, Raleigh
      Helena Mitasova, USA CERL, Department of Geography, University of Illinois at -Urbana-Champaign, USA (1990-2001); MEAS, North Carolina State University, Raleigh +Urbana-Champaign, USA (1990-2001); MEAS, North Carolina State University, Raleigh

      Modified program (translated to C, adapted for GRASS, new segmentation diff --git a/vector/v.timestamp/test_suite/test.v.timestamp.sh b/vector/v.timestamp/test_suite/test.v.timestamp.sh index 98194ff9a54..ac2f8504422 100755 --- a/vector/v.timestamp/test_suite/test.v.timestamp.sh +++ b/vector/v.timestamp/test_suite/test.v.timestamp.sh @@ -11,15 +11,15 @@ v.random --o seed=1 npoints=20 output=map # The first @test uses several different absolute datum formats v.timestamp map=map date=none -v.timestamp map=map +v.timestamp map=map v.timestamp map=map layer=1 date="2003" v.timestamp map=map layer=1 v.timestamp map=map layer=2 date="Jul 2003" v.timestamp map=map layer=2 v.timestamp map=map date="14 Jul 2003" -v.timestamp map=map +v.timestamp map=map v.timestamp map=map date="14 Jul 2003 10" -v.timestamp map=map +v.timestamp map=map v.timestamp map=map layer=3 date="14 Jul 2003 10:30 +0700" v.timestamp map=map layer=3 v.timestamp map=map layer=4 date="14 Jul 2003 10:30:25" @@ -33,18 +33,18 @@ v.timestamp map=map date=none v.timestamp map=map layer=2 date=none v.timestamp map=map layer=3 date=none v.timestamp map=map layer=4 date=none -v.timestamp map=map +v.timestamp map=map v.timestamp map=map layer=2 v.timestamp map=map layer=3 v.timestamp map=map layer=4 # The second @test uses several different relative datum formats v.timestamp map=map date=none -v.timestamp map=map +v.timestamp map=map v.timestamp map=map date="2 years" -v.timestamp map=map +v.timestamp map=map v.timestamp map=map date="2 years 3 months" -v.timestamp map=map +v.timestamp map=map v.timestamp map=map layer=1 date="5 days" v.timestamp map=map layer=1 v.timestamp map=map layer=2 date="3 hours" @@ -57,7 +57,7 @@ v.info map=map v.timestamp map=map date=none v.timestamp map=map layer=2 date=none v.timestamp map=map layer=3 date=none -v.timestamp map=map +v.timestamp map=map v.timestamp map=map layer=2 v.timestamp map=map layer=3 @@ -67,4 +67,3 @@ v.timestamp map=map date="2 years 3 months 8 days" v.timestamp map=map date="1 month 5 days" v.timestamp map=map date="July 2003" v.timestamp map=map date="14 Jul 2003 +0700" - diff --git a/vector/v.to.3d/Makefile b/vector/v.to.3d/Makefile index 63143a37c53..700587f31c0 100644 --- a/vector/v.to.3d/Makefile +++ b/vector/v.to.3d/Makefile @@ -9,4 +9,4 @@ EXTRA_CFLAGS = $(VECT_CFLAGS) include $(MODULE_TOPDIR)/include/Make/Module.make -default: cmd +default: cmd diff --git a/vector/v.to.db/Makefile b/vector/v.to.db/Makefile index c2572ff0a2c..2ab35e1f278 100644 --- a/vector/v.to.db/Makefile +++ b/vector/v.to.db/Makefile @@ -7,8 +7,7 @@ LIBES = $(VECTORLIB) $(DBMILIB) $(GISLIB) $(MATHLIB) DEPENDENCIES = $(VECTORDEP) $(DBMIDEP) $(GISDEP) EXTRA_INC = $(VECT_INC) EXTRA_CFLAGS = $(VECT_CFLAGS) - -include $(MODULE_TOPDIR)/include/Make/Module.make -default: cmd +include $(MODULE_TOPDIR)/include/Make/Module.make +default: cmd diff --git a/vector/v.to.db/parse.c b/vector/v.to.db/parse.c index bca399dff92..e398756b00e 100644 --- a/vector/v.to.db/parse.c +++ b/vector/v.to.db/parse.c @@ -4,9 +4,9 @@ #include #include "global.h" -int parse_units(); -int parse_option(); -int match(); +int parse_units(char *); +int parse_option(char *); +int match(char *, char *, int); int parse_command_line(int argc, char *argv[]) { diff --git a/vector/v.to.db/update.c b/vector/v.to.db/update.c index c29d85a85f3..dd63ef78d35 100644 --- a/vector/v.to.db/update.c +++ b/vector/v.to.db/update.c @@ -5,7 +5,7 @@ #include #include "global.h" -static int srch(); +static int srch(const void *, const void *); int update(struct Map_info *Map) { diff --git a/vector/v.to.db/v.to.db.html b/vector/v.to.db/v.to.db.html index aae80203d53..d3f34a0af85 100644 --- a/vector/v.to.db/v.to.db.html +++ b/vector/v.to.db/v.to.db.html @@ -18,10 +18,10 @@

      NOTES

      when the location's standard map unit is the US Survey foot.

      When calculating perimeters in Latitude-Longitude locations, the geodesic distance between the vertices is used. -

      When using option=coor on a vector area map, +

      When using option=coor on a vector area map, only coordinates of centroids with unique category will be reported.

      When using option=bbox on a vector area map with more than one -feature per category value, the results corresponds to the bounding box of +feature per category value, the results corresponds to the bounding box of all features of same category taken together.

      Line azimuth is calculated as angle from the North direction to the line endnode direction at the line statnode. By default it's reported in decimal degrees (0-360, CW) but diff --git a/vector/v.to.points/Makefile b/vector/v.to.points/Makefile index e3aa9096bc3..ba5f1f3803e 100644 --- a/vector/v.to.points/Makefile +++ b/vector/v.to.points/Makefile @@ -13,4 +13,3 @@ EXTRA_INC = $(VECT_INC) EXTRA_CFLAGS = $(VECT_CFLAGS) default: cmd - diff --git a/vector/v.to.points/v.to.points.html b/vector/v.to.points/v.to.points.html index 8f66a68edba..1a4cc387dd9 100644 --- a/vector/v.to.points/v.to.points.html +++ b/vector/v.to.points/v.to.points.html @@ -120,7 +120,7 @@

      Extract starting/ending nodes as points

       v.to.points input=railroads output=railroads_start use=start
       
      -v.to.points input=railroads output=railroads_end use=end    
      +v.to.points input=railroads output=railroads_end use=end
       

      SEE ALSO

      diff --git a/vector/v.to.rast/Makefile b/vector/v.to.rast/Makefile index bece082bcde..d218883d0ab 100644 --- a/vector/v.to.rast/Makefile +++ b/vector/v.to.rast/Makefile @@ -7,8 +7,7 @@ LIBES = $(VECTORLIB) $(DBMILIB) $(RASTERLIB) $(GISLIB) $(MATHLIB) DEPENDENCIES = $(VECTORDEP) $(DBMIDEP) $(RASTERDEP) $(GISDEP) EXTRA_INC = $(VECT_INC) EXTRA_CFLAGS = $(VECT_CFLAGS) - -include $(MODULE_TOPDIR)/include/Make/Module.make -default: cmd +include $(MODULE_TOPDIR)/include/Make/Module.make +default: cmd diff --git a/vector/v.to.rast/do_lines.c b/vector/v.to.rast/do_lines.c index af090a6f73b..0a1d402ca2f 100644 --- a/vector/v.to.rast/do_lines.c +++ b/vector/v.to.rast/do_lines.c @@ -8,7 +8,7 @@ /* function prototypes */ static int plot_line(double *, double *, int, int, int); static int plot_points(double *, double *, int); -static double v2angle(double *, double *, double, double); +static double v2angle(double[2], double[2], double, double); static double deg_angle(double, double, double, double); int do_lines(struct Map_info *Map, struct line_pnts *Points, diff --git a/vector/v.to.rast/v.to.rast.html b/vector/v.to.rast/v.to.rast.html index 5dc5feeb95c..de2fd2bab23 100644 --- a/vector/v.to.rast/v.to.rast.html +++ b/vector/v.to.rast/v.to.rast.html @@ -6,9 +6,9 @@

      DESCRIPTION

      NOTES

      -In order to avoid unexpected results, the type of vector features -should always be specified. The default is to convert all vector -features, but if only e.g. areas should be converted use +In order to avoid unexpected results, the type of vector features +should always be specified. The default is to convert all vector +features, but if only e.g. areas should be converted use type=area rather than type=point,line,area.

      @@ -22,7 +22,7 @@

      NOTES

      desired level.

      Either the column parameter or the value -parameter must be specified. The use option may be +parameter must be specified. The use option may be specified alone when using the dir option.

      use options are:

        @@ -38,20 +38,20 @@

        NOTES

        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 +database table as the category value in the output raster map. Existing table columns can be shown by using db.describe.

      An empty raster map layer will be created if the vector map layer has not -been assigned category/attribute labels (e.g., through use of -v.category option=add). +been assigned category/attribute labels (e.g., through use of +v.category option=add).

      Otherwise:

      • -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 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.)
      • -Labeled lines and boundaries will produce lines of raster cells which touch the +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.
      • Points and orphaned centroids will be converted into single cells on the @@ -60,7 +60,7 @@

        NOTES

        Line directions are given in degrees counterclockwise from east.

        Raster category labels are supported for all of use= except use=z.

        -The -d flag applies only to lines and boundaries, the default is +The -d flag applies only to lines and boundaries, the default is to set only those cells on the render path (thin line).

        Boundaries (usually without categories) can be rasterized with @@ -78,7 +78,7 @@

        Convert a vector map and use column SPEED from attribute table

        ncols:3 Column 1: CAT Column 2: SPEED -Column 3: WIDTH +Column 3: WIDTH
  • @@ -148,7 +148,7 @@ 

    Convert vector points to raster with raster cell binning

    d.mon wx0 d.rast schools_wake_aggreg -d.vect schools_wake +d.vect schools_wake d.grid 5000
    diff --git a/vector/v.to.rast3/Makefile b/vector/v.to.rast3/Makefile index 5527549577a..760fab13762 100644 --- a/vector/v.to.rast3/Makefile +++ b/vector/v.to.rast3/Makefile @@ -7,8 +7,7 @@ LIBES = $(VECTORLIB) $(RASTER3DLIB) $(DBMILIB) $(GISLIB) $(MATHLIB) DEPENDENCIES = $(VECTORDEP) $(RASTER3DDEP) $(DBMIDEP) $(GISDEP) EXTRA_INC = $(VECT_INC) EXTRA_CFLAGS = $(VECT_CFLAGS) - -include $(MODULE_TOPDIR)/include/Make/Module.make -default: cmd +include $(MODULE_TOPDIR)/include/Make/Module.make +default: cmd diff --git a/vector/v.to.rast3/test.v.to.rast3.sh b/vector/v.to.rast3/test.v.to.rast3.sh index 4a0e0b7efd4..23bde0c7272 100755 --- a/vector/v.to.rast3/test.v.to.rast3.sh +++ b/vector/v.to.rast3/test.v.to.rast3.sh @@ -2,7 +2,7 @@ # of raster3d maps. # We set up a specific region in the -# @preprocess step of this test. The region setting +# @preprocess step of this test. The region setting # should work for UTM and LL test locations g.region s=0 n=80 w=0 e=120 b=0 t=50 res=10 res3=10 -p3 # We import vector data located in the source directory diff --git a/vector/v.transform/Makefile b/vector/v.transform/Makefile index 350472d6aad..8c9c497c2b3 100644 --- a/vector/v.transform/Makefile +++ b/vector/v.transform/Makefile @@ -11,4 +11,3 @@ EXTRA_INC = $(VECT_INC) EXTRA_CFLAGS = $(VECT_CFLAGS) default: cmd - diff --git a/vector/v.transform/v.transform.html b/vector/v.transform/v.transform.html index 7d7834fc1e8..907d3c5639c 100644 --- a/vector/v.transform/v.transform.html +++ b/vector/v.transform/v.transform.html @@ -8,7 +8,7 @@

    DESCRIPTION

    NOTES

    -Coordinate transformation based on Ground Control Points (GCPs) is done +Coordinate transformation based on Ground Control Points (GCPs) is done by v.rectify and not supported by v.transform. @@ -25,8 +25,8 @@

    EXAMPLE

    DXF/DWG drawings

    -

    Most DXF/DWG drawings are done within XY coordinate space. To transform -them to a national grid, we can use v.transform together with +

    Most DXF/DWG drawings are done within XY coordinate space. To transform +them to a national grid, we can use v.transform together with v.rectify and a first-order transformation.

    diff --git a/vector/v.type/Makefile b/vector/v.type/Makefile
    index 18d50b34618..db385e4b9ba 100644
    --- a/vector/v.type/Makefile
    +++ b/vector/v.type/Makefile
    @@ -11,4 +11,3 @@ EXTRA_CFLAGS = $(VECT_CFLAGS)
     include $(MODULE_TOPDIR)/include/Make/Module.make
     
     default: cmd
    -
    diff --git a/vector/v.univar/Makefile b/vector/v.univar/Makefile
    index 70daaa77a81..2c450d3bc44 100644
    --- a/vector/v.univar/Makefile
    +++ b/vector/v.univar/Makefile
    @@ -7,8 +7,7 @@ LIBES = $(VECTORLIB) $(DBMILIB) $(GISLIB) $(MATHLIB)
     DEPENDENCIES = $(VECTORDEP) $(DBMIDEP) $(GISDEP)
     EXTRA_INC = $(VECT_INC)
     EXTRA_CFLAGS = $(VECT_CFLAGS)
    - 
    -include $(MODULE_TOPDIR)/include/Make/Module.make
     
    -default: cmd	
    +include $(MODULE_TOPDIR)/include/Make/Module.make
     
    +default: cmd
    diff --git a/vector/v.univar/main.c b/vector/v.univar/main.c
    index fd0fb1db95a..e0234382dee 100644
    --- a/vector/v.univar/main.c
    +++ b/vector/v.univar/main.c
    @@ -71,8 +71,13 @@ double sumsq = 0.0;
     double sumcb = 0.0;
     double sumqt = 0.0;
     double sum_abs = 0.0;
    +<<<<<<< HEAD
     double min = 0.0 / 0.0; /* init as nan */
     double max = 0.0 / 0.0;
    +=======
    +double min = NAN;
    +double max = NAN;
    +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794))
     double mean, mean_abs, pop_variance, sample_variance, pop_stdev, sample_stdev,
         pop_coeff_variation, kurtosis, skewness;
     double total_size = 0.0; /* total size: length/area */
    diff --git a/vector/v.univar/testsuite/v_univar_test.py b/vector/v.univar/testsuite/v_univar_test.py
    index de96a56c141..3b9c75b7d70 100644
    --- a/vector/v.univar/testsuite/v_univar_test.py
    +++ b/vector/v.univar/testsuite/v_univar_test.py
    @@ -1,7 +1,7 @@
     """
     Name:       v.univar test
     Purpose:    Tests v.univar and its flags/options.
    -	
    +
     Author:     Sunveer Singh, Google Code-in 2017
     Copyright:  (C) 2017 by Sunveer Singh and the GRASS Development Team
     Licence:    This program is free software under the GNU General Public
    diff --git a/vector/v.univar/v.univar.html b/vector/v.univar/v.univar.html
    index 793040bba62..58e897f6a3d 100644
    --- a/vector/v.univar/v.univar.html
    +++ b/vector/v.univar/v.univar.html
    @@ -2,11 +2,11 @@ 

    DESCRIPTION

    v.univar calculates univariate statistics on (by default) an attribute of, or, through the -d flag on distance between, vector map features. -Attributes are read per feature and per category value. This means that if the -map contains several features with the same category value, the attribute is -read as many times as there are features. On the other hand, if a feature has -more than one category value, each attribute value linked to each of the -category values of the feature is read. For statistics on one attribute +Attributes are read per feature and per category value. This means that if the +map contains several features with the same category value, the attribute is +read as many times as there are features. On the other hand, if a feature has +more than one category value, each attribute value linked to each of the +category values of the feature is read. For statistics on one attribute per category value, instead of one attribute per feature and per category, see v.db.univar. @@ -15,12 +15,12 @@

    DESCRIPTION

    NOTES

    -When using the -d flag, univariate statistics of distances -between vector features are calculated. The distances from all features -to all other features are used. Since the distance from feature A to -feature B is the same like the distance from feature B to feature A, -that distance is considered only once, i.e. all pairwise distances -between features are used. Depending on the selected vector +When using the -d flag, univariate statistics of distances +between vector features are calculated. The distances from all features +to all other features are used. Since the distance from feature A to +feature B is the same like the distance from feature B to feature A, +that distance is considered only once, i.e. all pairwise distances +between features are used. Depending on the selected vector type, distances are calculated as follows:
      @@ -49,7 +49,7 @@

      Calculate height attribute statistics

       v.univar -e samples column=heights type=point
      -    
      +
       number of features with non NULL attribute: 100
       number of missing attributes: 0
       number of NULL attributes: 0
      @@ -138,4 +138,8 @@ 

      AUTHORS

      extended by:
      Hamish Bowman, University of Otago, New Zealand
      +<<<<<<< HEAD Martin Landa +======= +Martin Landa +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) diff --git a/vector/v.vect.stats/Makefile b/vector/v.vect.stats/Makefile index f6f7da7b479..1c8c8b76ae9 100644 --- a/vector/v.vect.stats/Makefile +++ b/vector/v.vect.stats/Makefile @@ -11,5 +11,4 @@ EXTRA_CFLAGS = $(VECT_CFLAGS) include $(MODULE_TOPDIR)/include/Make/Module.make -default: cmd - +default: cmd diff --git a/vector/v.vect.stats/testsuite/test_vect_stats.py b/vector/v.vect.stats/testsuite/test_vect_stats.py index 186a03da105..8d7cf0e6c18 100644 --- a/vector/v.vect.stats/testsuite/test_vect_stats.py +++ b/vector/v.vect.stats/testsuite/test_vect_stats.py @@ -1,7 +1,7 @@ """ Name: v.vect.stats test Purpose: Tests v.vect.stats and its flags/options. - + Author: Sunveer Singh, Google Code-in 2017 Copyright: (C) 2017 by Sunveer Singh and the GRASS Development Team Licence: This program is free software under the GNU General Public diff --git a/vector/v.vect.stats/v.vect.stats.html b/vector/v.vect.stats/v.vect.stats.html index a4101b0192e..adc8ee54f77 100644 --- a/vector/v.vect.stats/v.vect.stats.html +++ b/vector/v.vect.stats/v.vect.stats.html @@ -56,7 +56,7 @@

      Statistical methods

      NOTES

      Points not falling into any area are ignored. Areas without category -(no centroid attached or centroid without category) are ignored. +(no centroid attached or centroid without category) are ignored. If no points are falling into a given area, the point count is set to 0 (zero) and the statistics result to "null".

      diff --git a/vector/v.vol.rst/README b/vector/v.vol.rst/README index 29d9b49bca0..723ee137c1c 100644 --- a/vector/v.vol.rst/README +++ b/vector/v.vol.rst/README @@ -26,5 +26,3 @@ including 3D topo parameters, and 2nd RST derivatives copied from Mark 15.may.1996, just a beta version, not fully tested - - diff --git a/vector/v.vol.rst/dataoct.h b/vector/v.vol.rst/dataoct.h index 9522cccb978..5dd6022b9d1 100644 --- a/vector/v.vol.rst/dataoct.h +++ b/vector/v.vol.rst/dataoct.h @@ -36,12 +36,14 @@ struct octtree; struct quadruple *point_new(double, double, double, double, double); struct octdata *data_new(double, double, double, int, int, int, int); -int oct_compare(); -int oct_add_data(); -int oct_division_check(); -struct octdata **oct_divide_data(); -int oct_intersect(); -int oct_get_points(); +int oct_compare(struct quadruple *, struct octdata *); +int oct_add_data(struct quadruple *, struct octdata *); +int oct_division_check(struct octdata *); +struct octdata **oct_divide_data(struct octdata *); +int oct_intersect(double, double, double, double, double, double, + struct octdata *); +int oct_get_points(struct quadruple *, struct octdata *, double, double, double, + double, double, double, int); int OT_divide_oct(struct octtree *); #endif diff --git a/vector/v.vol.rst/main.c b/vector/v.vol.rst/main.c index ac08b7f517c..3c761a68158 100644 --- a/vector/v.vol.rst/main.c +++ b/vector/v.vol.rst/main.c @@ -187,19 +187,6 @@ RASTER3D_Region out_region; int main(int argc, char *argv[]) { - int INPUT(); - int SEGMEN(); - int interp_call(); - int COGRR1(); - int SECPAR(); - int OUTGR(); - int LINEQS(); - int CRSTG(); - double CRST(); - double amax1(double, double); - double amin1(double, double); - int max1(); - int min1(); int npmin; int ii, i, n_rows, n_cols, n_levs; double x_orig, y_orig, z_orig; diff --git a/vector/v.vol.rst/oct.c b/vector/v.vol.rst/oct.c index f1770a9a723..6398d6d4cf0 100644 --- a/vector/v.vol.rst/oct.c +++ b/vector/v.vol.rst/oct.c @@ -34,9 +34,21 @@ #include "externs.h" #include "dataoct.h" +<<<<<<< HEAD struct octfunc *OT_functions_new(int (*compare)(), VOID_T **(*divide_data)(), int (*add_data)(), int (*intersect)(), int (*division_check)(), int (*get_points)()) +======= +struct octfunc * +OT_functions_new(int (*compare)(struct quadruple *, struct octdata *), + struct octdata **(*divide_data)(struct octdata *), + int (*add_data)(struct quadruple *, struct octdata *), + int (*intersect)(double, double, double, double, double, + double, struct octdata *), + int (*division_check)(struct octdata *), + int (*get_points)(struct quadruple *, struct octdata *, double, + double, double, double, double, double, int)) +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) /* Initializes FUNCTIONS structure with given arguments */ { struct octfunc *functions; @@ -53,7 +65,11 @@ struct octfunc *OT_functions_new(int (*compare)(), VOID_T **(*divide_data)(), return functions; } +<<<<<<< HEAD struct octtree *OT_tree_new(VOID_T *data, struct octtree **leafs, +======= +struct octtree *OT_tree_new(struct octdata *data, struct octtree **leafs, +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) struct octtree *parent, struct octfunc *functions, int octant) /*Initializes TREE using given arguments */ @@ -119,7 +135,7 @@ int OT_insert_oct(struct quadruple *point, struct octtree *tree) int OT_divide_oct(struct octtree *tree) { int i; - VOID_T **datas; + struct octdata **datas; struct octtree *par; struct octtree **leafs; diff --git a/vector/v.vol.rst/oct.h b/vector/v.vol.rst/oct.h index 7c70dac9231..bfb63b89a0d 100644 --- a/vector/v.vol.rst/oct.h +++ b/vector/v.vol.rst/oct.h @@ -1,9 +1,10 @@ #ifndef __OCT_H__ #define __OCT_H__ -#define VOID_T char +#include "dataoct.h" struct octfunc { +<<<<<<< HEAD int (*compare)(); VOID_T **(*divide_data)(); int (*add_data)(); @@ -14,15 +15,39 @@ struct octfunc { struct octtree { VOID_T *data; +======= + int (*compare)(struct quadruple *, struct octdata *); + struct octdata **(*divide_data)(struct octdata *); + int (*add_data)(struct quadruple *, struct octdata *); + int (*intersect)(double, double, double, double, double, double, + struct octdata *); + int (*division_check)(struct octdata *); + int (*get_points)(struct quadruple *, struct octdata *, double, double, + double, double, double, double, int); +}; + +struct octtree { + struct octdata *data; +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) struct octtree **leafs; struct octtree *parent; struct octfunc *functions; int octant; }; -struct octfunc *OT_functions_new(); -struct octtree *OT_tree_new(); -int OT_insert_oct(); -int OT_region_data(); +struct octfunc *OT_functions_new( + int (*compare)(struct quadruple *, struct octdata *), + struct octdata **(*divide_data)(struct octdata *), + int (*add_data)(struct quadruple *, struct octdata *), + int (*intersect)(double, double, double, double, double, double, + struct octdata *), + int (*division_check)(struct octdata *), + int (*get_points)(struct quadruple *, struct octdata *, double, double, + double, double, double, double, int)); +struct octtree *OT_tree_new(struct octdata *, struct octtree **, + struct octtree *, struct octfunc *, int octant); +int OT_insert_oct(struct quadruple *, struct octtree *); +int OT_region_data(struct octtree *, double, double, double, double, double, + double, struct quadruple *, int); #endif diff --git a/vector/v.vol.rst/user.h b/vector/v.vol.rst/user.h index 87f74df2805..fc9a4528b9d 100644 --- a/vector/v.vol.rst/user.h +++ b/vector/v.vol.rst/user.h @@ -1,24 +1,25 @@ #ifndef __USER_H__ #define __USER_H__ -int translate_oct(); -int interp_call(); -int INPUT(); -int OUTGR(); -int min1(); -int max1(); -double amax1(); -double amin1(); -double erfr(); -double crs(); -double crsd(); -double crsdr2(); -double crsdd(); -void crs_full(); -int COGRR1(); -int POINT(); -int LINEQS(); -void clean(); -int point_save(); +#include +#include "points.h" + +int translate_oct(struct octtree *, double, double, double, double); +int interp_call(struct octtree *, struct octtree *); +int INPUT(struct Map_info *, char *, char *, char *); +int OUTGR(void); +int min1(int, int); +int max1(int, int); +double amax1(double, double); +double amin1(double, double); +double erfr(double); +double crs(double); +void crs_full(double, double, double *, double *, double *, double *); +int COGRR1(double, double, double, int, int, int, int, struct quadruple *, + struct point_3d); +int POINT(int, struct quadruple *, struct point_3d); +int LINEQS(int, int, int, int *, double *); +void clean(void); +int point_save(double, double, double, double); #endif diff --git a/vector/v.vol.rst/user1.c b/vector/v.vol.rst/user1.c index d54a9f0bba9..01ab96aac61 100644 --- a/vector/v.vol.rst/user1.c +++ b/vector/v.vol.rst/user1.c @@ -390,7 +390,7 @@ int INPUT(struct Map_info *In, char *column, char *scol, char *wheresql) * OUTGR now writes 3d raster maps (mca 2/15/96) */ -int OUTGR() +int OUTGR(void) { void *cf1, *cf2, *cf3, *cf4, *cf5, *cf6, *cf7; size_t read_val; @@ -409,7 +409,11 @@ int OUTGR() G_fseek(Tmp_fd_cell, ((off_t)(nsizr - 1 - i) * nsizc * sizeof(FCELL)), 0); read_val = fread(cell, sizeof(FCELL), nsizc, Tmp_fd_cell); +<<<<<<< HEAD if (read_val != nsizc) { +======= + if (read_val != (size_t)nsizc) { +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) clean(); G_fatal_error(_("Unable to read data from temp file")); } @@ -440,8 +444,14 @@ int OUTGR() G_fseek(Tmp_fd_z, 0L, 0); /* Read data in from temp file */ +<<<<<<< HEAD read_val = fread(data, sizeof(float), nsizr * nsizc * nsizl, Tmp_fd_z); if (read_val < 0) { +======= + read_val = + fread(data, sizeof(float), (size_t)nsizr * nsizc * nsizl, Tmp_fd_z); + if (read_val != (size_t)nsizr * nsizc * nsizl) { +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) clean(); G_fatal_error(_("Unable to read data from temp file")); } @@ -494,8 +504,14 @@ int OUTGR() G_fseek(Tmp_fd_dx, 0L, 0); /* Read data in from temp file */ +<<<<<<< HEAD read_val = fread(data, sizeof(float), nsizr * nsizc * nsizl, Tmp_fd_dx); if (read_val < 0) { +======= + read_val = fread(data, sizeof(float), (size_t)nsizr * nsizc * nsizl, + Tmp_fd_dx); + if (read_val != (size_t)nsizr * nsizc * nsizl) { +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) clean(); G_fatal_error(_("Unable to read data from temp file")); } @@ -547,8 +563,14 @@ int OUTGR() G_fseek(Tmp_fd_dy, 0L, 0); /* Read data in from temp file */ +<<<<<<< HEAD read_val = fread(data, sizeof(float), nsizr * nsizc * nsizl, Tmp_fd_dy); if (read_val < 0) { +======= + read_val = fread(data, sizeof(float), (size_t)nsizr * nsizc * nsizl, + Tmp_fd_dy); + if (read_val != (size_t)nsizr * nsizc * nsizl) { +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) clean(); G_fatal_error(_("Unable to read data from temp file")); } @@ -600,8 +622,14 @@ int OUTGR() G_fseek(Tmp_fd_dz, 0L, 0); /* Read data in from temp file */ +<<<<<<< HEAD read_val = fread(data, sizeof(float), nsizr * nsizc * nsizl, Tmp_fd_dz); if (read_val < 0) { +======= + read_val = fread(data, sizeof(float), (size_t)nsizr * nsizc * nsizl, + Tmp_fd_dz); + if (read_val != (size_t)nsizr * nsizc * nsizl) { +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) clean(); G_fatal_error(_("Unable to read data from temp file")); } @@ -653,8 +681,14 @@ int OUTGR() G_fseek(Tmp_fd_xx, 0L, 0); /* Read data in from temp file */ +<<<<<<< HEAD read_val = fread(data, sizeof(float), nsizr * nsizc * nsizl, Tmp_fd_xx); if (read_val < 0) { +======= + read_val = fread(data, sizeof(float), (size_t)nsizr * nsizc * nsizl, + Tmp_fd_xx); + if (read_val != (size_t)nsizr * nsizc * nsizl) { +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) clean(); G_fatal_error(_("Unable to read data from temp file")); } @@ -706,8 +740,14 @@ int OUTGR() G_fseek(Tmp_fd_yy, 0L, 0); /* Read data in from temp file */ +<<<<<<< HEAD read_val = fread(data, sizeof(float), nsizr * nsizc * nsizl, Tmp_fd_yy); if (read_val < 0) { +======= + read_val = fread(data, sizeof(float), (size_t)nsizr * nsizc * nsizl, + Tmp_fd_yy); + if (read_val != (size_t)nsizr * nsizc * nsizl) { +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) clean(); G_fatal_error(_("Unable to read data from temp file")); } @@ -759,8 +799,14 @@ int OUTGR() G_fseek(Tmp_fd_xy, 0L, 0); /* Read data in from temp file */ +<<<<<<< HEAD read_val = fread(data, sizeof(float), nsizr * nsizc * nsizl, Tmp_fd_xy); if (read_val < 0) { +======= + read_val = fread(data, sizeof(float), (size_t)nsizr * nsizc * nsizl, + Tmp_fd_xy); + if (read_val != (size_t)nsizr * nsizc * nsizl) { +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) clean(); G_fatal_error(_("Unable to read data from temp file")); } diff --git a/vector/v.vol.rst/user3.c b/vector/v.vol.rst/user3.c index 54a5b9cdc64..4ef6c1af8e8 100644 --- a/vector/v.vol.rst/user3.c +++ b/vector/v.vol.rst/user3.c @@ -226,7 +226,6 @@ int COGRR1(double x_or, double y_or, double z_or, int n_rows, int n_cols, c */ { - int secpar_loop(); static double *w2 = NULL; static double *wz2 = NULL; static double *wz1 = NULL; @@ -237,7 +236,10 @@ int COGRR1(double x_or, double y_or, double z_or, int n_rows, int n_cols, double x_crs, x_crsd, x_crsdd, x_crsdr2; int n1, k1, k2, k, i1, l, l1, n4, n5, m, i; int /* NGST, */ LSIZE, ngstc, nszc, ngstr, nszr, ngstl, nszl; +<<<<<<< HEAD int POINT(); +======= +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) int ind, ind1; static int first_time_z = 1; off_t offset, offset1, offset2; diff --git a/vector/v.vol.rst/user4.c b/vector/v.vol.rst/user4.c index bedd7b62683..a5631ee664d 100644 --- a/vector/v.vol.rst/user4.c +++ b/vector/v.vol.rst/user4.c @@ -43,7 +43,7 @@ */ -void clean() +void clean(void) { if (Tmp_fd_z) { fclose(Tmp_fd_z); diff --git a/vector/v.vol.rst/v.vol.rst.html b/vector/v.vol.rst/v.vol.rst.html index bba2323e0d6..7c60ed4e20e 100644 --- a/vector/v.vol.rst/v.vol.rst.html +++ b/vector/v.vol.rst/v.vol.rst.html @@ -3,15 +3,15 @@

      DESCRIPTION

      v.vol.rst interpolates values to a 3-dimensional raster map from 3-dimensional point data (e.g. temperature, rainfall data from climatic stations, concentrations from drill holes etc.) given in a 3-D vector -point file named input.  The size of the output +point file named input.  The size of the output 3D raster map elevation is given by the current 3D region. Sometimes, the user may want to get a 2-D map showing a modelled phenomenon at a crossection surface. In that case, cross_input and cross_output options must be specified, with the output 2D raster map cross_output -containing the crossection of the interpolated volume with a surface +containing the crossection of the interpolated volume with a surface defined by cross_input -2D raster map. As an option, simultaneously with interpolation, +2D raster map. As an option, simultaneously with interpolation, geometric parameters of the interpolated phenomenon can be computed (magnitude of gradient, direction of gradient defined by horizontal and vertical angles), change of gradient, @@ -22,9 +22,9 @@

      DESCRIPTION

      At first, data points are checked for identical positions and points that are closer to each other than given dmin are removed. -Parameters wscale and zscale allow the user to re-scale -the w-values and z-coordinates of the point data (useful e.g. for -transformation of elevations given in feet to meters, so that the +Parameters wscale and zscale allow the user to re-scale +the w-values and z-coordinates of the point data (useful e.g. for +transformation of elevations given in feet to meters, so that the proper values of gradient and curvatures can be computed). Rescaling of z-coordinates (zscale) is also needed when the distances in vertical direction are much smaller than the horizontal @@ -33,8 +33,8 @@

      DESCRIPTION

      have about the same magnitude.

      Regularized spline with tension method is used in the interpolation. -The tension parameter controls the distance over which -each given point influences the resulting volume (with very high tension, +The tension parameter controls the distance over which +each given point influences the resulting volume (with very high tension, each point influences only its close neighborhood and the volume goes rapidly to trend between the points). Higher values of tension parameter reduce the overshoots that @@ -42,13 +42,13 @@

      DESCRIPTION

      is possible to define a global smoothing parameter, smooth. With the smoothing parameter set to zero (smooth=0) the resulting volume -passes exactly through the data points. +passes exactly through the data points. When smoothing is used, it is possible to output a vector map deviations -containing deviations of the resulting volume from the given data. +containing deviations of the resulting volume from the given data.

      The user can define a 2D raster map named maskmap, which will be used as a mask. The interpolation is skipped for 3-dimensional cells whose 2-dimensional projection has a zero value in the mask. Zero values will -be assigned to these cells in all output 3D raster maps. +be assigned to these cells in all output 3D raster maps.

      If the number of given points is greater than 700, segmented processing is used. The region is split into 3-dimensional "box" segments, each having less than segmax points and interpolation @@ -59,7 +59,11 @@

      DESCRIPTION

      for interpolation is controlled by npmin , the value of which must be larger than segmax and less than 700. This limit of 700 was selected to ensure the numerical stability and efficiency of the +<<<<<<< HEAD algorithm. +======= +algorithm. +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794))

      SQL support

      @@ -84,7 +88,7 @@

      Cross validation procedure

      very long time, so it might be worth to use just a sample data representing the whole dataset. -

      Example +

      Example (based on Slovakia3d dataset):

       v.info -c precip3d
      @@ -104,7 +108,7 @@ 

      Cross validation procedure

      reasonable range is tension=10...100, smooth=0.1...1.0, zscale=10...100.

      In v.vol.rst the tension parameter is much more sensitive to -changes than in v.surf.rst, +changes than in v.surf.rst, therefore the user should always check the result by visual inspection. Minimizing CV does not always provide the best result, especially when the density of data are insufficient. Then @@ -117,13 +121,13 @@

      NOTES

      a 3D vector map from a table containing x,y,z columns. Also, the input data should be in a projected coordinate system, such as -Universal Transverse Mercator. The module does not appear to have support for +Universal Transverse Mercator. The module does not appear to have support for geographic (Lat/Long) coordinates as of May 2009.

      v.vol.rst uses regularized spline with tension for interpolation from point data (as described in Mitasova and Mitas, 1993). The implementation has an improved segmentation procedure based -on Oct-trees which enhances the efficiency for large data sets. +on Oct-trees which enhances the efficiency for large data sets.

      Geometric parameters - magnitude of gradient (gradient), horizontal (aspect_horizontal) and vertical (aspect_vertical)aspects, @@ -137,28 +141,32 @@

      NOTES

      higher tension should be used. However, with tension too high the resulting volume will have local maximum in each given point and everywhere else the volume goes rapidly to trend. With a smoothing -parameter greater than zero, the volume will not pass through the data -points and the higher the parameter the closer the volume will be to the -trend. For theory on smoothing with splines see Talmi and Gilat, 1977 or Wahba, 1990. +parameter greater than zero, the volume will not pass through the data +points and the higher the parameter the closer the volume will be to the +trend. For theory on smoothing with splines see Talmi and Gilat, 1977 or Wahba, 1990.

      If a visible connection of segments appears, the program should be rerun with higher npmin to get more points from the -neighborhood of given segment. +neighborhood of given segment.

      If the number of points in a vector map is less than 400, segmax should be set to 400 so that segmentation is not performed when it is -not necessary. +not necessary.

      The program gives a warning when the user wants to interpolate outside the -"box" given by minimum and maximum coordinates in the input vector map. +"box" given by minimum and maximum coordinates in the input vector map. To remedy this, zoom into the area encompassing the input vector data points.

      For large data sets (thousands of data points), it is suggested to zoom into a smaller representative area and test whether the parameters -chosen (e.g. defaults) are appropriate. +chosen (e.g. defaults) are appropriate.

      The user must run g.region before the program to set the +<<<<<<< HEAD 3D region for interpolation. +======= +3D region for interpolation. +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794))

      EXAMPLES

      @@ -229,45 +237,45 @@

      REFERENCES

      Hofierka J., Parajka J., Mitasova H., Mitas L., 2002, Multivariate Interpolation of Precipitation Using Regularized Spline with Tension. Transactions in -GIS  6, pp. 135-150. +GIS  6, pp. 135-150.

      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

      Mitas L., Brown W. M., Mitasova H., 1997, Role of dynamic cartography in simulations of landscape processes based on multi-variate fields. Computers and Geosciences, Vol. 23, No. 4, -pp. 437-446 (includes CDROM and WWW: www.elsevier.nl/locate/cgvis) +pp. 437-446 (includes CDROM and WWW: www.elsevier.nl/locate/cgvis)

      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. +special issue on Integrating GIS and Environmental modeling, 433-446.

      Mitasova, H., Mitas, L., Brown, B., Kosinovsky, I., Baker, T., Gerdes, D. (1994): Multidimensional -interpolation and visualization in GRASS GIS +interpolation and visualization in GRASS GIS

      Mitasova H. and Mitas L. 1993: Interpolation by Regularized Spline with Tension: I. Theory and Implementation, Mathematical Geology 25, -641-655. +641-655.

      Mitasova H. and Hofierka J. 1993: Interpolation by Regularized Spline with Tension: II. Application to Terrain Modeling and Surface Geometry -Analysis, Mathematical Geology 25, 657-667. +Analysis, Mathematical Geology 25, 657-667.

      Mitasova, H., 1992 : New capabilities for interpolation and -topographic analysis in GRASS, GRASSclippings 6, No.2 (summer), p.13. +topographic analysis in GRASS, GRASSclippings 6, No.2 (summer), p.13.

      Wahba, G., 1990 : Spline Models for Observational Data, CNMS-NSF Regional Conference series in applied mathematics, 59, SIAM, -Philadelphia, Pennsylvania. +Philadelphia, Pennsylvania.

      Mitas, L., Mitasova H., 1988 : General variational approach to the interpolation problem, Computers and Mathematics with Applications 16, -p. 983 +p. 983

      Talmi, A. and Gilat, G., 1977 : Method for Smooth Approximation of -Data, Journal of Computational Physics, 23, p.93-123. +Data, Journal of Computational Physics, 23, p.93-123.

      Thorpe, J. A. (1979): Elementary Topics in Differential Geometry. Springer-Verlag, New York, pp. 6-94. @@ -286,7 +294,7 @@

      AUTHOR

      Original version of program (in FORTRAN) and GRASS enhancements:
      Lubos Mitas, NCSA, University of Illinois at Urbana-Champaign, -Illinois, USA, since 2000 at Department of Physics, +Illinois, USA, since 2000 at Department of Physics, North Carolina State University, Raleigh, USA lubos_mitas@ncsu.edu
      @@ -297,7 +305,7 @@

      AUTHOR

      Modified program (translated to C, adapted for GRASS, new segmentation procedure):
      Irina Kosinovsky, US Army CERL, Champaign, Illinois, USA
      -Dave Gerdes, US Army CERL, Champaign, Illinois, USA +Dave Gerdes, US Army CERL, Champaign, Illinois, USA

      Modifications for g3d library, geometric parameters, cross-validation, deviations:
      diff --git a/vector/v.voronoi/README b/vector/v.voronoi/README index 350c8fa4206..fad45b9b74f 100644 --- a/vector/v.voronoi/README +++ b/vector/v.voronoi/README @@ -15,15 +15,15 @@ sw_defs.h sw_edgelist.c sw_geometry.c sw_heap.c sw_main.c sw_memory.c sw_output.c sw_voronoi.c vo_cats_att.c vo_extend.c vo_inregion.c vo_main.c vo_polygons.c ------------------------- -This was developed from something called sweep2, +This was developed from something called sweep2, which can be found on netlib sites (e.g., research.att.com). I do not claim in any way to be an expert in computational geometry. The only real additions that I made was the GRASS wrapper and making a few cosmetic changes to Fortune's output routines. -There's a few places where the code needs cleaning up (i.e., there's a -few areas where I need to do some re-allocation of memory, but I didn't get -around to doing this). +There's a few places where the code needs cleaning up (i.e., there's a +few areas where I need to do some re-allocation of memory, but I didn't get +around to doing this). This is a complete re-write of the old s.voronoi. If you find any bugs, let me know. @@ -33,7 +33,7 @@ mccauley@ecn.purdue.edu ----------------------------------------- UPDATE 1/5/2001 -I updtated McCauley file to address slowness, some numerical +I updtated McCauley file to address slowness, some numerical problem related to line segment parameters in s.sweep output and to improve speed. I also updated both commands to use GRASS 5 site API. A speed improvement is still possible diff --git a/vector/v.voronoi/skeleton.c b/vector/v.voronoi/skeleton.c index d9305602d76..380269d1372 100644 --- a/vector/v.voronoi/skeleton.c +++ b/vector/v.voronoi/skeleton.c @@ -528,7 +528,11 @@ int tie_up(void) IPoints[i]); } +<<<<<<< HEAD distmin = 1. / 0.; /* +inf */ +======= + distmin = INFINITY; +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) xmin = x; ymin = y; diff --git a/vector/v.voronoi/sw_main.c b/vector/v.voronoi/sw_main.c index e8397f0cc78..165f5ef60c7 100644 --- a/vector/v.voronoi/sw_main.c +++ b/vector/v.voronoi/sw_main.c @@ -72,7 +72,7 @@ struct Site *nextone(void) } /* removes duplicate sites that would break the voronoi alghoritm */ -void removeDuplicates() +void removeDuplicates(void) { int i, j; @@ -251,7 +251,6 @@ int readbounds(void) int area_id; double x, y, z, x1, y1, z1; double maxdist, sdist, l, dx, dy, dz; - int nconnected; struct ilist *linelist, *arealist; Points = Vect_new_line_struct(); @@ -380,7 +379,10 @@ int readbounds(void) * must be >= 2 */ /* count number of valid boundaries */ nlines = Vect_get_node_n_lines(&In, node); +<<<<<<< HEAD nconnected = 0; +======= +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) Vect_reset_list(linelist); Vect_reset_list(arealist); @@ -395,7 +397,10 @@ int readbounds(void) if (n_areas(abs(line), &area_id) == 1) { Vect_list_append(linelist, line); Vect_list_append(arealist, area_id); +<<<<<<< HEAD nconnected++; +======= +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) } } diff --git a/vector/v.voronoi/v.voronoi.html b/vector/v.voronoi/v.voronoi.html index 8b524ec5924..0b2c9e4cd40 100644 --- a/vector/v.voronoi/v.voronoi.html +++ b/vector/v.voronoi/v.voronoi.html @@ -1,24 +1,24 @@

      DESCRIPTION

      -v.voronoi creates a Voronoi diagram (Thiessen polygons) from -points or centroids. -

      The bounds of the output map are limited by the current region +v.voronoi creates a Voronoi diagram (Thiessen polygons) from +points or centroids. +

      The bounds of the output map are limited by the current region (see g.region).

      The -a flag can be used to create a Voronoi diagram for areas.

      -The -s flag can be used to extract the center line of areas or -skeletons of areas with thin >= 0. Smaller values for the -thin option will preserve more detail, while negative values +The -s flag can be used to extract the center line of areas or +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.

      NOTES

      -v.voronoi suffers from numerical instability, results can -sometimes contain many artefacts. When creating Voronoi diagrams for areas -or skeletons for areas, it is highly recommended to simplify the areas first +v.voronoi suffers from numerical instability, results can +sometimes contain many artefacts. When creating Voronoi diagrams for areas +or skeletons for areas, it is highly recommended to simplify the areas first with v.generalize.

      @@ -29,11 +29,11 @@

      NOTES

      v.to.rast.

      -The extraction of skeletons and center lines with the -s flag -is a brute force approach. Faster and more accurate algorithms to -extract skeletons from areas exist but are not yet implemented. In the -meantime, skeletons and center lines can be simplified with the -Douglas-Peucker algorithm: +The extraction of skeletons and center lines with the -s flag +is a brute force approach. Faster and more accurate algorithms to +extract skeletons from areas exist but are not yet implemented. In the +meantime, skeletons and center lines can be simplified with the +Douglas-Peucker algorithm: v.generalize method=douglas.

      EXAMPLE

      @@ -88,7 +88,7 @@

      SEE ALSO

      g.region, -v.delaunay, +v.delaunay, v.hull diff --git a/vector/v.what.rast/Makefile b/vector/v.what.rast/Makefile index c4a05148719..5c66116558c 100644 --- a/vector/v.what.rast/Makefile +++ b/vector/v.what.rast/Makefile @@ -7,8 +7,7 @@ LIBES = $(VECTORLIB) $(DBMILIB) $(RASTERLIB) $(GISLIB) DEPENDENCIES = $(VECTORDEP) $(DBMIDEP) $(RASTERDEP) $(GISDEP) EXTRA_INC = $(VECT_INC) EXTRA_CFLAGS = $(VECT_CFLAGS) - -include $(MODULE_TOPDIR)/include/Make/Module.make -default: cmd +include $(MODULE_TOPDIR)/include/Make/Module.make +default: cmd diff --git a/vector/v.what.rast3/Makefile b/vector/v.what.rast3/Makefile index cd57fe1c6c0..84a89844a59 100644 --- a/vector/v.what.rast3/Makefile +++ b/vector/v.what.rast3/Makefile @@ -7,8 +7,7 @@ LIBES = $(VECTORLIB) $(DBMILIB) $(RASTER3DLIB) $(GISLIB) DEPENDENCIES = $(VECTORDEP) $(DBMIDEP) $(RASTER3DDEP) $(GISDEP) EXTRA_INC = $(VECT_INC) EXTRA_CFLAGS = $(VECT_CFLAGS) - -include $(MODULE_TOPDIR)/include/Make/Module.make -default: cmd +include $(MODULE_TOPDIR)/include/Make/Module.make +default: cmd diff --git a/vector/v.what.rast3/test_suite/random_points.txt b/vector/v.what.rast3/test_suite/random_points.txt index cac3a9e55ca..b40d4ba9d55 100644 --- a/vector/v.what.rast3/test_suite/random_points.txt +++ b/vector/v.what.rast3/test_suite/random_points.txt @@ -1,40 +1,40 @@ -ORGANIZATION: -DIGIT DATE: +ORGANIZATION: +DIGIT DATE: DIGIT NAME: soeren -MAP NAME: +MAP NAME: MAP DATE: Sun May 13 00:35:59 2012 MAP SCALE: 1 -OTHER INFO: +OTHER INFO: ZONE: 0 MAP THRESH: 0.000000 VERTI: P 1 1 - 15.98122828 27.60680488 39.15496119 - 1 1 + 15.98122828 27.60680488 39.15496119 + 1 1 P 1 1 - 20.15599665 63.81531506 9.87756846 - 1 2 + 20.15599665 63.81531506 9.87756846 + 1 2 P 1 1 - 66.47772443 53.77607164 13.88873554 - 1 3 + 66.47772443 53.77607164 13.88873554 + 1 3 P 1 1 - 44.60300442 33.41779363 31.44354624 - 1 4 + 44.60300442 33.41779363 31.44354624 + 1 4 P 1 1 - 63.52155272 35.93806371 47.61148626 - 1 5 + 63.52155272 35.93806371 47.61148626 + 1 5 P 1 1 - 8.3804932 44.49982096 35.86484647 - 1 6 + 8.3804932 44.49982096 35.86484647 + 1 6 P 1 1 - 85.83974446 42.48782134 0.81502858 - 1 7 + 85.83974446 42.48782134 0.81502858 + 1 7 P 1 1 - 75.71132294 9.60621038 40.20883771 - 1 8 + 75.71132294 9.60621038 40.20883771 + 1 8 P 1 1 - 84.33209107 28.0661076 6.48952234 - 1 9 + 84.33209107 28.0661076 6.48952234 + 1 9 P 1 1 - 89.1191198 69.92471626 10.91284527 - 1 10 + 89.1191198 69.92471626 10.91284527 + 1 10 diff --git a/vector/v.what.rast3/v.what.rast3.html b/vector/v.what.rast3/v.what.rast3.html index 13de989afaa..3165b2976ee 100644 --- a/vector/v.what.rast3/v.what.rast3.html +++ b/vector/v.what.rast3/v.what.rast3.html @@ -1,7 +1,7 @@

      DESCRIPTION

      -v.what.rast3 reads 3D raster value for each point in the vector and updates col -column in vector attribute table by this value. The column should be type double. This module is based on +v.what.rast3 reads 3D raster value for each point in the vector and updates col +column in vector attribute table by this value. The column should be type double. This module is based on v.what.rast.
      If more points have the same category, attribute value is set to NULL. diff --git a/vector/v.what/Makefile b/vector/v.what/Makefile index f144f72ce55..10e16f286d4 100644 --- a/vector/v.what/Makefile +++ b/vector/v.what/Makefile @@ -13,7 +13,3 @@ EXTRA_INC = $(VECT_INC) include $(MODULE_TOPDIR)/include/Make/Module.make default: cmd - - - - diff --git a/vector/v.what/v.what.html b/vector/v.what/v.what.html index 91995f03581..2bbfe45ba2e 100644 --- a/vector/v.what/v.what.html +++ b/vector/v.what/v.what.html @@ -1,10 +1,10 @@

      DESCRIPTION

      -v.what outputs the category number value(s) associated with -user-specified location(s) in user-specified vector map layer(s). -This module was derived from the d.what.vect module by -removing all interactive code and modification of the output for -easy parsing. Using the -g flag generates script-style +v.what outputs the category number value(s) associated with +user-specified location(s) in user-specified vector map layer(s). +This module was derived from the d.what.vect module by +removing all interactive code and modification of the output for +easy parsing. Using the -g flag generates script-style output which is easily parsable.

      EXAMPLE

      diff --git a/vector/vectorintro.html b/vector/vectorintro.html index 5881765a8d2..45fefe180a2 100644 --- a/vector/vectorintro.html +++ b/vector/vectorintro.html @@ -12,7 +12,7 @@

      Vector maps in general

      Attribute management

      -The default database driver used by GRASS GIS 8 is SQLite. GRASS GIS +The default database driver used by GRASS GIS 8 is SQLite. GRASS GIS handles multiattribute vector data by default. The db.* set of commands provides basic SQL support for attribute management, while the v.db.* set of commands operates on vector maps. @@ -29,9 +29,9 @@

      Vector data import and export

      offers options such as on-the-fly creation of new locations or extension of the default region to match the extent of the imported vector map. For special cases, other import modules are available, e.g. -v.in.ascii for input from a text file -containing coordinate and attribute data, and -v.in.db for input from a database containing +v.in.ascii for input from a text file +containing coordinate and attribute data, and +v.in.db for input from a database containing coordinate and attribute data. With v.external external maps can be @@ -87,7 +87,7 @@

      Vector model and topology

      GRASS. The v.in.ascii module allows users to input points without building topology. This is very useful for large files where memory restrictions may cause difficulties. The -other module which works with level 1 data is +other module which works with level 1 data is v.surf.rst which enables spatial approximation and topographic analysis from a point or isoline file. @@ -108,7 +108,7 @@

      Vector model and topology

      Area topology also holds information about isles. These isles are located within that area, not touching the boundaries of the outer area. Isles -are holes inside the area, and can consist of one or more areas. They are used +are holes inside the area, and can consist of one or more areas. They are used internally to maintain correct topology for areas.

      @@ -128,13 +128,13 @@

      Vector model and topology

      Many operations including extraction, queries, overlay, and export will only act on features which have been assigned a category number. Typically -a centroid will hold the attribute data for the area with which the centroid is +a centroid will hold the attribute data for the area with which the centroid is associated. Boundaries are not typically given a category ID as it would be ambiguous as to which area either side of it the attribute data would belong to. An exception might be when the boundary between two crop-fields is the center-line of a road, and the category information is an index to the road name. For everyday use boundaries and centroids can be treated as internal -data types and the user can work directly and more simply with the "area" +data types and the user can work directly and more simply with the "area" type. @@ -159,53 +159,53 @@

      Vector object categories and attribute management

      This means that e.g. an attribute table can be populated first and then vector objects can be added to the geometry file with category numbers. Using v.category, category numbers can be -printed or maintained. +printed or maintained.

    • Layers
      -Layers are a characteristic of the vector feature (geometries) file. -As mentioned above, categories allow the user to give either a -unique id to each feature or to group similar features by giving -them all the same id. Layers allow several parallel, but different -groupings of features in a same map. The practical benefit of this -system is that it allows placement of thematically distinct but -topologically related objects into a single map, or for linking time -series attribute data to a series of locations that did not change +Layers are a characteristic of the vector feature (geometries) file. +As mentioned above, categories allow the user to give either a +unique id to each feature or to group similar features by giving +them all the same id. Layers allow several parallel, but different +groupings of features in a same map. The practical benefit of this +system is that it allows placement of thematically distinct but +topologically related objects into a single map, or for linking time +series attribute data to a series of locations that did not change over time.
      -For example, one can have roads with one layer -containing the unique id of each road and another layer with ids for -specific routes that one might take, combining several roads by -assigning the same id. While this example can also be dealt with in +For example, one can have roads with one layer +containing the unique id of each road and another layer with ids for +specific routes that one might take, combining several roads by +assigning the same id. While this example can also be dealt with in an attribute table, another example of the use of layers that shows -their specific advantage is the possibility to identify the same geometrical -features as representing different thematic objects. For example, -in a map with a series of polygons representing fields in -which at the same time the boundaries of these fields have a meaning -as linear features, e.g. as paths, one can give a unique id to each -field as area in layer 1, and a unique id in layer 2 to those -boundary lines that are paths. If the paths will always depend on -the field boundaries (and might change if these boundaries -change) then keeping them in the same map can be helpful. Trying -to reproduce the same functionality through attributes is much more +their specific advantage is the possibility to identify the same geometrical +features as representing different thematic objects. For example, +in a map with a series of polygons representing fields in +which at the same time the boundaries of these fields have a meaning +as linear features, e.g. as paths, one can give a unique id to each +field as area in layer 1, and a unique id in layer 2 to those +boundary lines that are paths. If the paths will always depend on +the field boundaries (and might change if these boundaries +change) then keeping them in the same map can be helpful. Trying +to reproduce the same functionality through attributes is much more complicated.
      -If a vector object has zero categories in a layer, then it does not -appear in that layer. In this fashion some vector objects may appear -in some layers but not in others. Taking the example of the fields -and paths, only some boundaries, but not all, might have a category -value in layer 2. With option=report, +If a vector object has zero categories in a layer, then it does not +appear in that layer. In this fashion some vector objects may appear +in some layers but not in others. Taking the example of the fields +and paths, only some boundaries, but not all, might have a category +value in layer 2. With option=report, v.category lists available categories in each layer.
      -Optionally, each layer can (but does not have -to) be linked to an attribute table. The link is made by the -category values of the features in that layer which have to have -corresponding entries in the specified key column of the table. -Using v.db.connect connections +Optionally, each layer can (but does not have +to) be linked to an attribute table. The link is made by the +category values of the features in that layer which have to have +corresponding entries in the specified key column of the table. +Using v.db.connect connections between layers and attribute tables can be listed or maintained.
      -In most modules, the first layer (layer=1) is active by +In most modules, the first layer (layer=1) is active by default. Using layer=-1 one can access all layers.
    • @@ -261,11 +261,11 @@

      Geometry operations

      v.perturb. The v.type command changes between vector -types (see list above). +types (see list above). Projected vector maps can be reprojected with v.proj. Unprojected maps can be geocoded with v.transform. -Based on the control points, v.rectify rectifies a +Based on the control points, v.rectify rectifies a vector map by computing a coordinate transformation for each vector object. Triangulation and point-to-polygon conversions can be done with Vector queries

      Vector-Raster queries

      -Raster values can be transferred to vector maps with +Raster values can be transferred to vector maps with
      v.what.rast and v.rast.stats. @@ -320,7 +320,7 @@

      Vector network analysis

      • Network preparation and maintenance: v.net
      • -
      • Shortest path: d.path and +
      • Shortest path: d.path and v.net.path
      • Shortest path between all pairs of nodes v.net.allpairs
      • Allocation of sources (create subnetworks, e.g. police station zones): @@ -348,10 +348,10 @@

        Vector networks: Linear referencing system (LRS)

        LRS uses linear features and distance measured along those features to positionate objects. There are the commands v.lrs.create to create a linear reference system, -v.lrs.label to create stationing on the LRS, +v.lrs.label to create stationing on the LRS, v.lrs.segment to create points/segments on LRS, and -v.lrs.where to find line id and real km+offset +v.lrs.where to find line id and real km+offset for given points in vector map using linear reference system.

        The LRS tutorial explains further details. @@ -369,10 +369,10 @@

        Interpolation and approximation

        Lidar data processing

        -Lidar point clouds (first and last return) are imported from text files +Lidar point clouds (first and last return) are imported from text files with v.in.ascii or from LAS files with - v.in.lidar. Both modules recognize the --b flag to not build topology. Outlier detection is done with + v.in.lidar. Both modules recognize the +-b flag to not build topology. Outlier detection is done with v.outlier on both first and last return data. Then, with v.lidar.edgedetection, edges are detected from last return data. The building are generated by diff --git a/visualization/ximgview/main.c b/visualization/ximgview/main.c index 162dc9d68be..f41f00b4b6c 100644 --- a/visualization/ximgview/main.c +++ b/visualization/ximgview/main.c @@ -145,7 +145,11 @@ static void main_loop(void) for (;;) { fd_set waitset; struct timeval tv; +<<<<<<< HEAD unsigned long delay; +======= + unsigned long delay = 0; +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) while (XPending(dpy) > 0) { XEvent event; @@ -226,7 +230,11 @@ static int read_bmp_header(const unsigned char *p) if (get_4(&p) != 0) return 0; +<<<<<<< HEAD if (get_4(&p) != i_width * i_height * 4) +======= + if (get_4(&p) != (unsigned int)i_width * i_height * 4) +>>>>>>> 7409ab6716 (r.horizon manual - fix typo (#2794)) return 0; if (size != HEADER_SIZE + i_width * i_height * 4)