From svn_grass at osgeo.org Tue Sep 1 06:22:50 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Tue, 1 Sep 2015 06:22:50 -0700 Subject: [GRASS-SVN] r66076 - grass/trunk/lib/raster Message-ID: <20150901132250.5586A3901D0@trac.osgeo.org> Author: huhabla Date: 2015-09-01 06:22:50 -0700 (Tue, 01 Sep 2015) New Revision: 66076 Modified: grass/trunk/lib/raster/rast_to_img_string.c Log: raster library: Added 32bit RGB type Modified: grass/trunk/lib/raster/rast_to_img_string.c =================================================================== --- grass/trunk/lib/raster/rast_to_img_string.c 2015-08-31 11:06:17 UTC (rev 66075) +++ grass/trunk/lib/raster/rast_to_img_string.c 2015-09-01 13:22:50 UTC (rev 66076) @@ -31,7 +31,7 @@ #define DEF_BLU 255 /* \brief Convert a raster map layer into a string with - * 32Bit ARGB or 8Bit Gray little endian encoding. + * 32Bit ARGB, 24Bit RGB or 8Bit Gray little endian encoding. * * The raster color table is used for coloring the image. Null values are * marked as transparent. Only little endian encoding is supported. @@ -41,16 +41,18 @@ * region for raster access. * * \param name The name of the raster map layer to convert - * \param color_mode The color mode to use (1 -> 32Bit ARGB, 2 or 3 -> 8Bit Gray) - * - * Color mode 2 -> grey scale formular: .33R+ .5G+ .17B - * Color mode 3 -> grey scale formular: .30R+ .59G+ .11B + * \param color_mode The color modes to use: + * Color mode 1 -> 32Bit ARGB (0xAARRGGBB) + * Color mode 2 -> 32Bit RGB (0xffRRGGBB) + * Color mode 3 -> grey scale formular: .33R+ .5G+ .17B + * Color mode 4 -> grey scale formular: .30R+ .59G+ .11B * * \param result: An unsigned char pointer to store the result. * It must have size 4*cols*rows in case of - * ARGB and rows*cols in case of gray scale. + * ARGB and RGB, + * rows*cols in case of gray scale. * - * \return: 0 in case map not found, 1 on success + * \return: 0 in case map not found, -1 in case the color mode is incorrect, 1 on success * */ int Rast_map_to_img_str(char *name, int color_mode, unsigned char* result) @@ -71,6 +73,9 @@ int rows = Rast_window_rows(); int cols = Rast_window_cols(); + if(color_mode > 3 || color_mode < 1) + return(-1); + mapset = G_find_raster2(name, ""); if(!mapset) @@ -99,14 +104,14 @@ i = 0; - if(color_mode == 1) {/* 32BIT ARGB COLOR IMAGE with transparency */ + if(color_mode == 1 || color_mode == 2) {/* 32BIT ARGB COLOR IMAGE with transparency */ for (row = 0; row < rows; row++) { Rast_get_row(map, (void *)voidc, row, rtype); Rast_lookup_colors((void *)voidc, red, green, blue, set, cols, &colors, rtype); alpha = (unsigned char)255; - if ( Rast_is_null_value( voidc, rtype ) ) + if ( color_mode == 1 && Rast_is_null_value( voidc, rtype ) ) { alpha = (unsigned char)0; } @@ -133,7 +138,7 @@ Rast_lookup_colors((void *)voidc, red, green, blue, set, cols, &colors, rtype); - if(color_mode == 2) { + if(color_mode == 3) { for (col = 0; col < cols; col++) { /*.33R+ .5G+ .17B */ result[i++] = ((red[col]) * 11 + From svn_grass at osgeo.org Tue Sep 1 06:26:08 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Tue, 1 Sep 2015 06:26:08 -0700 Subject: [GRASS-SVN] r66077 - in grass/trunk/lib/python/pygrass/raster: . testsuite testsuite/data Message-ID: <20150901132608.B1A6B3900A3@trac.osgeo.org> Author: huhabla Date: 2015-09-01 06:26:08 -0700 (Tue, 01 Sep 2015) New Revision: 66077 Added: grass/trunk/lib/python/pygrass/raster/testsuite/data/d.png grass/trunk/lib/python/pygrass/raster/testsuite/data/e.png Modified: grass/trunk/lib/python/pygrass/raster/__init__.py grass/trunk/lib/python/pygrass/raster/testsuite/test_raster_img.py Log: pygrass raster: Added 32Bit RGB image generation and tests Modified: grass/trunk/lib/python/pygrass/raster/__init__.py =================================================================== --- grass/trunk/lib/python/pygrass/raster/__init__.py 2015-09-01 13:22:50 UTC (rev 66076) +++ grass/trunk/lib/python/pygrass/raster/__init__.py 2015-09-01 13:26:08 UTC (rev 66077) @@ -99,8 +99,8 @@ ('P', 44, None)] >>> elev.cats.labels() # doctest: +ELLIPSIS +NORMALIZE_WHITESPACE - ['A', 'B', 'C', 'D', 'E', - 'F', 'G', 'H', 'I', 'J', + ['A', 'B', 'C', 'D', 'E', + 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'n', 'O', 'P'] >>> elev.cats[0] ('A', 11, None) @@ -273,7 +273,7 @@ Buffer([12, 22, 32, 42], dtype=int32) Buffer([13, 23, 33, 43], dtype=int32) Buffer([14, 24, 34, 44], dtype=int32) - + >>> elev.close() """ @@ -373,7 +373,7 @@ Buffer([12, 22, 32, 42], dtype=int32) Buffer([13, 23, 33, 43], dtype=int32) Buffer([14, 24, 34, 44], dtype=int32) - + >>> elev.close() @@ -616,34 +616,37 @@ def raster2numpy_img(rastname, region, color="ARGB", array=None): """Convert a raster map layer into a string with - 32Bit ARGB or 8Bit Gray little endian encoding. - + 32Bit ARGB, 24Bit RGB or 8Bit Gray little endian encoding. + Return a numpy array from a raster map of type uint8 - that contains the colored map data as 32 bit ARGB or 8 bit image + that contains the colored map data as 32 bit ARGB, 32Bit RGB + or 8 bit image :param rastname: The name of raster map :type rastname: string - + :param region: The region to be used for raster map reading :type region: grass.pygrass.gis.region.Region - - :param color: "ARGB", "GRAY1", "GRAY2" - ARGB -> 32Bit RGB with alpha channel + + :param color: "ARGB", "RGB", "GRAY1", "GRAY2" + ARGB -> 32Bit RGB with alpha channel (0xAARRGGBB) + RGB -> 32Bit RGB (0xffRRGGBB) GRAY1 -> grey scale formular: .33R+ .5G+ .17B GRAY2 -> grey scale formular: .30R+ .59G+ .11B :type color: String - :param array: A numpy array (optional) to store the image, + :param array: A numpy array (optional) to store the image, the array needs to setup as follows: - + array = np.ndarray((region.rows*region.cols*scale), np.uint8) - - scale is 4 in case of ARGB or 1 in case of Gray scale + + scale = 4 in case of ARGB and RGB or scale = 1 + in case of Gray scale :type array: numpy.ndarray - - :return: A numpy array of size rows*cols*4 in case of ARGB and + + :return: A numpy array of size rows*cols*4 in case of ARGB, RGB and rows*cols*1 in case of gray scale - + Attention: This function will change the computational raster region of the current process while running. """ @@ -651,27 +654,30 @@ region_orig = deepcopy(region) # Set the raster region region.set_raster_region() - + scale = 1 color_mode = 1 if color.upper() == "ARGB": scale = 4 color_mode = 1 + elif color.upper() == "RGB": + scale = 4 + color_mode = 2 elif color.upper() == "GRAY1": scale = 1 - color_mode = 2 + color_mode = 3 elif color.upper() == "GRAY2": scale = 1 - color_mode = 3 - + color_mode = 4 + if array is None: array = np.ndarray((region.rows*region.cols*scale), np.uint8) - libraster.Rast_map_to_img_str(rastname, color_mode, + libraster.Rast_map_to_img_str(rastname, color_mode, array.ctypes.data_as(ctypes.POINTER(ctypes.c_uint8))) # Restore the raster region region_orig.set_raster_region() - + return array @@ -730,8 +736,8 @@ mset = utils.get_mapset_raster(test_raster_name, mapset='') if mset: Module("g.remove", flags='f', type='raster', name=test_raster_name) - mset = utils.get_mapset_raster(test_raster_name + "_segment", + mset = utils.get_mapset_raster(test_raster_name + "_segment", mapset='') if mset: - Module("g.remove", flags='f', type='raster', + Module("g.remove", flags='f', type='raster', name=test_raster_name + "_segment") Added: grass/trunk/lib/python/pygrass/raster/testsuite/data/d.png =================================================================== (Binary files differ) Property changes on: grass/trunk/lib/python/pygrass/raster/testsuite/data/d.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: grass/trunk/lib/python/pygrass/raster/testsuite/data/e.png =================================================================== (Binary files differ) Property changes on: grass/trunk/lib/python/pygrass/raster/testsuite/data/e.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Modified: grass/trunk/lib/python/pygrass/raster/testsuite/test_raster_img.py =================================================================== --- grass/trunk/lib/python/pygrass/raster/testsuite/test_raster_img.py 2015-09-01 13:22:50 UTC (rev 66076) +++ grass/trunk/lib/python/pygrass/raster/testsuite/test_raster_img.py 2015-09-01 13:26:08 UTC (rev 66077) @@ -36,120 +36,165 @@ @classmethod def tearDownClass(cls): """Remove the generated vector map, if exist""" - cls.runModule("g.remove", flags='f', type='raster', + cls.runModule("g.remove", flags='f', type='raster', name=cls.name) cls.del_temp_region() @unittest.skipIf(has_PyQt4 is False, "Require PyQt4") def test_resampling_to_QImg_1(self): - + region = Region() region.from_rast(self.name) region.cols = 320 region.rows = 240 region.adjust() - + tmpfile = tempfile(False) tmpfile = tmpfile + ".png" a = raster2numpy_img(self.name, region) - - image = QImage(a.data, region.cols, region.rows, + + image = QImage(a.data, region.cols, region.rows, QImage.Format_ARGB32) #image.save("data/a.png") image.save(tmpfile) self.assertFilesEqualMd5(tmpfile, "data/a.png") - + @unittest.skipIf(has_PyQt4 is False, "Require PyQt4") def test_resampling_to_QImg_2(self): - + region = Region() region.from_rast(self.name) region.cols = 640 region.rows = 480 region.adjust() - + tmpfile = tempfile(False) tmpfile = tmpfile + ".png" # With array as argument array = np.ndarray((region.rows*region.cols*4), np.uint8) - raster2numpy_img(rastname=self.name, region=region, + raster2numpy_img(rastname=self.name, region=region, color="ARGB", array=array) - - image = QImage(array.data, + + image = QImage(array.data, region.cols, region.rows, QImage.Format_ARGB32) #image.save("data/b.png") image.save(tmpfile) self.assertFilesEqualMd5(tmpfile, "data/b.png") - + @unittest.skipIf(has_PyQt4 is False, "Require PyQt4") def test_resampling_to_QImg_large(self): - + region = Region() region.from_rast(self.name) region.cols = 4000 region.rows = 3000 region.adjust() - + tmpfile = tempfile(False) tmpfile = tmpfile + ".png" # With array as argument array = np.ndarray((region.rows*region.cols*4), np.uint8) - raster2numpy_img(rastname=self.name, region=region, + raster2numpy_img(rastname=self.name, region=region, color="ARGB", array=array) - - image = QImage(array.data, + + image = QImage(array.data, region.cols, region.rows, QImage.Format_ARGB32) #image.save("data/c.png") image.save(tmpfile) self.assertFilesEqualMd5(tmpfile, "data/c.png") - + + @unittest.skipIf(has_PyQt4 is False, "Require PyQt4") + def test_resampling_to_QImg_3(self): + + region = Region() + region.from_rast(self.name) + region.cols = 400 + region.rows = 300 + region.adjust() + + tmpfile = tempfile(False) + tmpfile = tmpfile + ".png" + + # With array as argument + array = np.ndarray((region.rows*region.cols*4), np.uint8) + + raster2numpy_img(rastname=self.name, region=region, + color="RGB", array=array) + + image = QImage(array.data, + region.cols, region.rows, QImage.Format_RGB32) + #image.save("data/d.png") + image.save(tmpfile) + self.assertFilesEqualMd5(tmpfile, "data/d.png") + + @unittest.skipIf(has_PyQt4 is False, "Require PyQt4") + def test_resampling_to_QImg_4(self): + + region = Region() + region.from_rast(self.name) + region.cols = 400 + region.rows = 300 + region.adjust() + + tmpfile = tempfile(False) + tmpfile = tmpfile + ".png" + + array = raster2numpy_img(rastname=self.name, region=region, + color="RGB") + + image = QImage(array.data, + region.cols, region.rows, QImage.Format_RGB32) + #image.save("data/e.png") + image.save(tmpfile) + self.assertFilesEqualMd5(tmpfile, "data/e.png") + def test_resampling_to_numpy_img_1(self): - + region = Region() region.ewres = 10 region.nsres = 10 region.adjust(rows=True, cols=True) - + a = raster2numpy_img(self.name, region) - + self.assertEqual(len(a), region.rows * region.cols*4) def test_resampling_to_numpy_img_2(self): - + region = Region() region.ewres = 1 region.nsres = 1 region.adjust(rows=True, cols=True) - + a = raster2numpy_img(self.name, region) - + self.assertEqual(len(a), region.rows * region.cols*4) def test_resampling_to_numpy_img_3(self): - + region = Region() region.ewres = 0.4 region.nsres = 0.4 region.adjust(rows=True, cols=True) - + a = raster2numpy_img(self.name, region, color="GRAY1") - + self.assertEqual(len(a), region.rows * region.cols*1) def test_resampling_to_numpy_img_4(self): - + region = Region() region.ewres = 0.1 region.nsres = 0.1 region.adjust(rows=True, cols=True) - + a = raster2numpy_img(self.name, region, color="GRAY2") - + self.assertEqual(len(a), region.rows * region.cols*1) if __name__ == '__main__': From svn_grass at osgeo.org Tue Sep 1 06:26:41 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Tue, 1 Sep 2015 06:26:41 -0700 Subject: [GRASS-SVN] r66078 - grass/trunk/lib/python/pygrass/vector Message-ID: <20150901132641.4BC353900A3@trac.osgeo.org> Author: huhabla Date: 2015-09-01 06:26:41 -0700 (Tue, 01 Sep 2015) New Revision: 66078 Modified: grass/trunk/lib/python/pygrass/vector/__init__.py Log: pygrass vector: Added simple area.centroid test Modified: grass/trunk/lib/python/pygrass/vector/__init__.py =================================================================== --- grass/trunk/lib/python/pygrass/vector/__init__.py 2015-09-01 13:26:08 UTC (rev 66077) +++ grass/trunk/lib/python/pygrass/vector/__init__.py 2015-09-01 13:26:41 UTC (rev 66078) @@ -396,8 +396,16 @@ Area(1) 12.0 Area(2) 8.0 Area(4) 8.0 + + >>> areas = [area for area in test_vect.viter('areas')] + >>> for area in areas: + ... print(area.centroid().cat) + 3 + 3 + 3 + 3 + >>> test_vect.close() - """ if vtype in _GEOOBJ.keys(): if _GEOOBJ[vtype] is not None: From svn_grass at osgeo.org Tue Sep 1 08:33:04 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Tue, 1 Sep 2015 08:33:04 -0700 Subject: [GRASS-SVN] r66079 - grass/trunk/mswindows Message-ID: <20150901153305.062D43900F0@trac.osgeo.org> Author: hellik Date: 2015-09-01 08:33:04 -0700 (Tue, 01 Sep 2015) New Revision: 66079 Modified: grass/trunk/mswindows/GRASS-Installer.nsi.tmpl Log: GRASS-Installer.nsi: grant modifying/overwriting fontcap file Modified: grass/trunk/mswindows/GRASS-Installer.nsi.tmpl =================================================================== --- grass/trunk/mswindows/GRASS-Installer.nsi.tmpl 2015-09-01 13:26:41 UTC (rev 66078) +++ grass/trunk/mswindows/GRASS-Installer.nsi.tmpl 2015-09-01 15:33:04 UTC (rev 66079) @@ -528,6 +528,9 @@ SetOutPath "$INSTALL_DIR" File /r ${PACKAGE_FOLDER}\*.* + ;grant modifying/overwriting fontcap file + AccessControl::SetOnFile "$INSTDIR\etc\fontcap" "(BU)" "GenericRead + GenericWrite + Delete" + ;create run_gmkfontcap.bat ClearErrors FileOpen $0 $INSTALL_DIR\etc\run_gmkfontcap.bat w From svn_grass at osgeo.org Tue Sep 1 08:37:55 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Tue, 1 Sep 2015 08:37:55 -0700 Subject: [GRASS-SVN] r66080 - grass/branches/releasebranch_7_0/mswindows Message-ID: <20150901153755.6688B3900F0@trac.osgeo.org> Author: hellik Date: 2015-09-01 08:37:55 -0700 (Tue, 01 Sep 2015) New Revision: 66080 Modified: grass/branches/releasebranch_7_0/mswindows/GRASS-Installer.nsi.tmpl Log: GRASS-Installer.nsi: grant modifying/overwriting fontcap file Modified: grass/branches/releasebranch_7_0/mswindows/GRASS-Installer.nsi.tmpl =================================================================== --- grass/branches/releasebranch_7_0/mswindows/GRASS-Installer.nsi.tmpl 2015-09-01 15:33:04 UTC (rev 66079) +++ grass/branches/releasebranch_7_0/mswindows/GRASS-Installer.nsi.tmpl 2015-09-01 15:37:55 UTC (rev 66080) @@ -528,6 +528,9 @@ SetOutPath "$INSTALL_DIR" File /r ${PACKAGE_FOLDER}\*.* + ;grant modifying/overwriting fontcap file + AccessControl::SetOnFile "$INSTDIR\etc\fontcap" "(BU)" "GenericRead + GenericWrite + Delete" + ;create run_gmkfontcap.bat ClearErrors FileOpen $0 $INSTALL_DIR\etc\run_gmkfontcap.bat w From svn_grass at osgeo.org Wed Sep 2 04:01:34 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Wed, 2 Sep 2015 04:01:34 -0700 Subject: [GRASS-SVN] r66081 - grass/trunk/scripts/r.shade Message-ID: <20150902110134.97B0F3900A3@trac.osgeo.org> Author: martinl Date: 2015-09-02 04:01:34 -0700 (Wed, 02 Sep 2015) New Revision: 66081 Modified: grass/trunk/scripts/r.shade/r.shade.html Log: r.shade: manual cosmetics (with contribution of Ludmila Furtkevicova) Modified: grass/trunk/scripts/r.shade/r.shade.html =================================================================== --- grass/trunk/scripts/r.shade/r.shade.html 2015-09-01 15:37:55 UTC (rev 66080) +++ grass/trunk/scripts/r.shade/r.shade.html 2015-09-02 11:01:34 UTC (rev 66081) @@ -13,8 +13,8 @@

The input for this module can be created for example using -r.slope.aspect or -r.relief
. +r.slope.aspect or +r.relief.

NULL values are propagated by default, so if any of the two input rasters @@ -28,14 +28,14 @@

NOTES

-Refer to the r.his help page for more details; +Refer to the r.his help page for more details; r.shade is a frontend to that module with addition of brightness support similar to one provided by d.shade. However, note that the brightness is not implemenented in the same way as for d.shade and the results might be different. -r.shade is using method described in r.his +r.shade is using method described in r.his manual page. From svn_grass at osgeo.org Wed Sep 2 04:17:37 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Wed, 2 Sep 2015 04:17:37 -0700 Subject: [GRASS-SVN] r66082 - grass/branches/releasebranch_7_0/scripts/r.shade Message-ID: <20150902111737.DCD8B3900A3@trac.osgeo.org> Author: martinl Date: 2015-09-02 04:17:37 -0700 (Wed, 02 Sep 2015) New Revision: 66082 Modified: grass/branches/releasebranch_7_0/scripts/r.shade/r.shade.html Log: r.shade: manual cosmetics (with contribution of Ludmila Furtkevicova) (merge r66081 66081 from trunk) Modified: grass/branches/releasebranch_7_0/scripts/r.shade/r.shade.html =================================================================== --- grass/branches/releasebranch_7_0/scripts/r.shade/r.shade.html 2015-09-02 11:01:34 UTC (rev 66081) +++ grass/branches/releasebranch_7_0/scripts/r.shade/r.shade.html 2015-09-02 11:17:37 UTC (rev 66082) @@ -13,8 +13,8 @@

The input for this module can be created for example using -r.slope.aspect or -r.relief
. +r.slope.aspect or +r.relief.

NULL values are propagated by default, so if any of the two input rasters @@ -28,14 +28,14 @@

NOTES

-Refer to the r.his help page for more details; +Refer to the r.his help page for more details; r.shade is a frontend to that module with addition of brightness support similar to one provided by d.shade. However, note that the brightness is not implemenented in the same way as for d.shade and the results might be different. -r.shade is using method described in r.his +r.shade is using method described in r.his manual page. From svn_grass at osgeo.org Wed Sep 2 04:26:35 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Wed, 2 Sep 2015 04:26:35 -0700 Subject: [GRASS-SVN] r66083 - grass/trunk/raster/r.univar Message-ID: <20150902112636.0392E3900A3@trac.osgeo.org> Author: martinl Date: 2015-09-02 04:26:35 -0700 (Wed, 02 Sep 2015) New Revision: 66083 Added: grass/trunk/raster/r.univar/runivar_basins.png grass/trunk/raster/r.univar/runivar_basins_elev_zonal.png Modified: grass/trunk/raster/r.univar/r.univar.html Log: r.univar: manual extended (by Ludmila Furtkevicova) Modified: grass/trunk/raster/r.univar/r.univar.html =================================================================== --- grass/trunk/raster/r.univar/r.univar.html 2015-09-02 11:17:37 UTC (rev 66082) +++ grass/trunk/raster/r.univar/r.univar.html 2015-09-02 11:26:35 UTC (rev 66083) @@ -13,6 +13,7 @@ with the given field separator. The table can immediately be converted to a vector attribute table which can then be linked to a vector, e.g. the vector that was rasterized to create the zones input raster. +

When multiple input maps are given to r.univar, the overall statistics are calculated. This is useful for a time series of the same variable, as well as @@ -25,6 +26,7 @@ As with most GRASS raster modules, r.univar operates on the raster array defined by the current region settings, not the original extent and resolution of the input map. See g.region. +

This module can use large amounts of system memory when the -e extended statistics flag is used with a very large region setting. If the @@ -33,6 +35,7 @@

Without a zones input raster, the r.quantile module will be significantly more efficient for calculating percentiles with large maps. +

For calculating univariate statistics from a raster map based on vector polygon map and uploads statistics to new attribute columns, see @@ -40,24 +43,124 @@

EXAMPLE

-Calculate the raster statistics for zones within a raster polygon map -coverage (basins, North Carolina sample dataset): +In this example, the raster polygon map basins in the North +Carolina sample dataset is used to calculate raster statistics for zones +for elevation raster map:
-# set computational region
-g.region raster=basin -p
+g.region raster=basins -p
+
-# check basin IDs -r.category basin +This will set and print computational region in the format: -#### perform analysis with elevation map (extent and res. match) -r.univar -t map=elevation zones=basin separator=comma \ +
+projection: 99 (Lambert Conformal Conic)
+zone:       0
+datum:      nad83
+ellipsoid:  a=6378137 es=0.006694380022900787
+north:      228500
+south:      215000
+west:       630000
+east:       645000
+nsres:      10
+ewres:      10
+rows:       1350
+cols:       1500
+cells:      2025000
+
+ +Check basin's IDs using: + +
+r.category basins
+
+ +This will print them in the format: + +
+2	
+4	
+6	
+8	
+10	
+12	
+14	
+16	
+18	
+20	
+22	
+24	
+26	
+28	
+30	
+
+ +Visualization of them underlying elevation map can be created as: + +
+d.mon wx0
+d.rast map=elevation
+r.colors map=elevation color=grey 
+d.rast map=basins
+r.colors map=basins color=bgyr 
+d.legend raster=basins use=2,4,6,8,10,12,14,16,18,20,22,24,26,28,30
+d.barscale 
+
+ + + +
+Basins and their IDs +

+Figure: Zones (basins, opacity: 60%) with underlying elevation map +for North Carolina sample dataset. +

+ +

+Then statistics for elevation can be calculated separately for every +zone, i.e. basin found in the zones parameter: + +

+r.univar -t map=elevation zones=basins separator=comma \
          output=basin_elev_zonal.csv
 
+This will print information in the format: + +
+zone,label,non_null_cells,null_cells,min,max,range,mean,mean_of_abs,
+stddev,variance,coeff_var,sum,sum_abs2,,116975,0,55.5787925720215,
+133.147018432617,77.5682258605957,92.1196971445722,92.1196971445722,
+15.1475301152556,229.447668592576,16.4433129773355,10775701.5734863,
+10775701.57348634,,75480,0,61.7890930175781,110.348838806152,
+48.5597457885742,83.7808205765268,83.7808205765268,11.6451777476995,
+135.610164775515,13.8995747088232,6323776.33711624,6323776.33711624
+6,,1137,0,66.9641571044922,83.2070922851562,16.2429351806641,
+73.1900814395257,73.1900814395257,4.15733292896409,17.2834170822492,
+5.68018623179036,83217.1225967407,83217.12259674078,,80506,
+0,67.4670791625977,147.161514282227, ...
+
+ +Comma Separated Values (CSV) file is best viewed through a spreadsheet +program such as Microsoft Excel, Libre/Open Office Calc or Google Docs: + +

+

+TABLE +

+Figure: Raster statistics for zones (basins, North Carolina sample +dataset) viewed through Libre/Open Office Calc +

+

TODO

-mode, skewness, kurtosis +To be implemented mode, skewness, kurtosis.

SEE ALSO

Added: grass/trunk/raster/r.univar/runivar_basins.png =================================================================== (Binary files differ) Property changes on: grass/trunk/raster/r.univar/runivar_basins.png ___________________________________________________________________ Added: svn:mime-type + image/png Added: grass/trunk/raster/r.univar/runivar_basins_elev_zonal.png =================================================================== (Binary files differ) Property changes on: grass/trunk/raster/r.univar/runivar_basins_elev_zonal.png ___________________________________________________________________ Added: svn:mime-type + image/png From svn_grass at osgeo.org Wed Sep 2 04:27:57 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Wed, 2 Sep 2015 04:27:57 -0700 Subject: [GRASS-SVN] r66084 - grass/branches/releasebranch_7_0/raster/r.univar Message-ID: <20150902112757.22DCC3900A3@trac.osgeo.org> Author: martinl Date: 2015-09-02 04:27:57 -0700 (Wed, 02 Sep 2015) New Revision: 66084 Added: grass/branches/releasebranch_7_0/raster/r.univar/runivar_basins.png grass/branches/releasebranch_7_0/raster/r.univar/runivar_basins_elev_zonal.png Modified: grass/branches/releasebranch_7_0/raster/r.univar/r.univar.html Log: r.univar: manual extended (by Ludmila Furtkevicova) (merge r66083 from trunk) Modified: grass/branches/releasebranch_7_0/raster/r.univar/r.univar.html =================================================================== --- grass/branches/releasebranch_7_0/raster/r.univar/r.univar.html 2015-09-02 11:26:35 UTC (rev 66083) +++ grass/branches/releasebranch_7_0/raster/r.univar/r.univar.html 2015-09-02 11:27:57 UTC (rev 66084) @@ -13,6 +13,7 @@ with the given field separator. The table can immediately be converted to a vector attribute table which can then be linked to a vector, e.g. the vector that was rasterized to create the zones input raster. +

When multiple input maps are given to r.univar, the overall statistics are calculated. This is useful for a time series of the same variable, as well as @@ -25,6 +26,7 @@ As with most GRASS raster modules, r.univar operates on the raster array defined by the current region settings, not the original extent and resolution of the input map. See g.region. +

This module can use large amounts of system memory when the -e extended statistics flag is used with a very large region setting. If the @@ -33,6 +35,7 @@

Without a zones input raster, the r.quantile module will be significantly more efficient for calculating percentiles with large maps. +

For calculating univariate statistics from a raster map based on vector polygon map and uploads statistics to new attribute columns, see @@ -40,24 +43,124 @@

EXAMPLE

-Calculate the raster statistics for zones within a raster polygon map -coverage (basins, North Carolina sample dataset): +In this example, the raster polygon map basins in the North +Carolina sample dataset is used to calculate raster statistics for zones +for elevation raster map:
-# set computational region
-g.region raster=basin -p
+g.region raster=basins -p
+
-# check basin IDs -r.category basin +This will set and print computational region in the format: -#### perform analysis with elevation map (extent and res. match) -r.univar -t map=elevation zones=basin separator=comma \ +
+projection: 99 (Lambert Conformal Conic)
+zone:       0
+datum:      nad83
+ellipsoid:  a=6378137 es=0.006694380022900787
+north:      228500
+south:      215000
+west:       630000
+east:       645000
+nsres:      10
+ewres:      10
+rows:       1350
+cols:       1500
+cells:      2025000
+
+ +Check basin's IDs using: + +
+r.category basins
+
+ +This will print them in the format: + +
+2	
+4	
+6	
+8	
+10	
+12	
+14	
+16	
+18	
+20	
+22	
+24	
+26	
+28	
+30	
+
+ +Visualization of them underlying elevation map can be created as: + +
+d.mon wx0
+d.rast map=elevation
+r.colors map=elevation color=grey 
+d.rast map=basins
+r.colors map=basins color=bgyr 
+d.legend raster=basins use=2,4,6,8,10,12,14,16,18,20,22,24,26,28,30
+d.barscale 
+
+ + + +
+Basins and their IDs +

+Figure: Zones (basins, opacity: 60%) with underlying elevation map +for North Carolina sample dataset. +

+ +

+Then statistics for elevation can be calculated separately for every +zone, i.e. basin found in the zones parameter: + +

+r.univar -t map=elevation zones=basins separator=comma \
          output=basin_elev_zonal.csv
 
+This will print information in the format: + +
+zone,label,non_null_cells,null_cells,min,max,range,mean,mean_of_abs,
+stddev,variance,coeff_var,sum,sum_abs2,,116975,0,55.5787925720215,
+133.147018432617,77.5682258605957,92.1196971445722,92.1196971445722,
+15.1475301152556,229.447668592576,16.4433129773355,10775701.5734863,
+10775701.57348634,,75480,0,61.7890930175781,110.348838806152,
+48.5597457885742,83.7808205765268,83.7808205765268,11.6451777476995,
+135.610164775515,13.8995747088232,6323776.33711624,6323776.33711624
+6,,1137,0,66.9641571044922,83.2070922851562,16.2429351806641,
+73.1900814395257,73.1900814395257,4.15733292896409,17.2834170822492,
+5.68018623179036,83217.1225967407,83217.12259674078,,80506,
+0,67.4670791625977,147.161514282227, ...
+
+ +Comma Separated Values (CSV) file is best viewed through a spreadsheet +program such as Microsoft Excel, Libre/Open Office Calc or Google Docs: + +

+

+TABLE +

+Figure: Raster statistics for zones (basins, North Carolina sample +dataset) viewed through Libre/Open Office Calc +

+

TODO

-mode, skewness, kurtosis +To be implemented mode, skewness, kurtosis.

SEE ALSO

Copied: grass/branches/releasebranch_7_0/raster/r.univar/runivar_basins.png (from rev 66083, grass/trunk/raster/r.univar/runivar_basins.png) =================================================================== (Binary files differ) Copied: grass/branches/releasebranch_7_0/raster/r.univar/runivar_basins_elev_zonal.png (from rev 66083, grass/trunk/raster/r.univar/runivar_basins_elev_zonal.png) =================================================================== (Binary files differ) From svn_grass at osgeo.org Wed Sep 2 07:52:50 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Wed, 2 Sep 2015 07:52:50 -0700 Subject: [GRASS-SVN] r66085 - grass-addons/grass7/raster/r.stream.order Message-ID: <20150902145250.32B68390136@trac.osgeo.org> Author: martinl Date: 2015-09-02 07:52:50 -0700 (Wed, 02 Sep 2015) New Revision: 66085 Modified: grass-addons/grass7/raster/r.stream.order/r.stream.order.html Log: r.stream.order: fix small typo in the manual Modified: grass-addons/grass7/raster/r.stream.order/r.stream.order.html =================================================================== --- grass-addons/grass7/raster/r.stream.order/r.stream.order.html 2015-09-02 11:27:57 UTC (rev 66084) +++ grass-addons/grass7/raster/r.stream.order/r.stream.order.html 2015-09-02 14:52:50 UTC (rev 66085) @@ -53,7 +53,7 @@ performed. Normally both Horton and Hack ordering are calculated on cumulative stream length which is calculated internally. Flow accumulation can be used if the user wants to calculate the main channel -as the stream with the highest value of aqccumulation. Flow +as the stream with the highest value of accumulation. Flow accumulation map shall be of DCELL type, as is by default produced by r.watershed or converted to DCELL with r.mapcalc. From svn_grass at osgeo.org Thu Sep 3 12:13:23 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Thu, 3 Sep 2015 12:13:23 -0700 Subject: [GRASS-SVN] r66086 - grass-addons/grass7/raster/r.geomorphon Message-ID: <20150903191323.784663900A4@trac.osgeo.org> Author: neteler Date: 2015-09-03 12:13:23 -0700 (Thu, 03 Sep 2015) New Revision: 66086 Modified: grass-addons/grass7/raster/r.geomorphon/r.geomorphon.html Log: r.geomorphon addon manual: example added Modified: grass-addons/grass7/raster/r.geomorphon/r.geomorphon.html =================================================================== --- grass-addons/grass7/raster/r.geomorphon/r.geomorphon.html 2015-09-02 14:52:50 UTC (rev 66085) +++ grass-addons/grass7/raster/r.geomorphon/r.geomorphon.html 2015-09-03 19:13:23 UTC (rev 66086) @@ -111,7 +111,42 @@ m is required to be noticed as non-flat. Flatness distance threshold may be helpful to avoid this problem. +

EXAMPLES

+

Geomorphon calculation: extraction of terrestial landforms

+Geomorphon calculation example using the EU DEM 25m: + +
+g.region raster=eu_dem_25m -p
+r.geomorphon dem=eu_dem_25m forms=eu_dem_25m_geomorph
+
+# verify terrestial landforms found in DEM
+r.category eu_dem_25m_geomorph
+ 1  flat
+ 2  summit
+ 3  ridge
+ 4  shoulder
+ 5  spur
+ 6  slope
+ 7  hollow
+ 8  footslope
+ 9  valley
+ 10 depression
+
+ + +

Extraction of summits

+ +Using the resulting terrestial landforms map, single landforms can +be extracted, e.g. the summits, and converted into a vector point map: + +
+r.mapcalc "eu_dem_25m_summits = if(eu_dem_25m_geomorph == 2, 1, null())"
+r.thin eu_dem_25m_summits output=eu_dem_25m_summits_thinned
+r.to.vect eu_dem_25m_summits_thinned output=eu_dem_25m_summits type=point
+v.info eu_dem_25m_summits
+
+

SEE ALSO

From svn_grass at osgeo.org Thu Sep 3 12:28:15 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Thu, 3 Sep 2015 12:28:15 -0700 Subject: [GRASS-SVN] r66087 - grass/trunk/vector/v.extract Message-ID: <20150903192815.312AA3900A4@trac.osgeo.org> Author: neteler Date: 2015-09-03 12:28:15 -0700 (Thu, 03 Sep 2015) New Revision: 66087 Modified: grass/trunk/vector/v.extract/main.c Log: v.extract: add 'random' keyword Modified: grass/trunk/vector/v.extract/main.c =================================================================== --- grass/trunk/vector/v.extract/main.c 2015-09-03 19:13:23 UTC (rev 66086) +++ grass/trunk/vector/v.extract/main.c 2015-09-03 19:28:15 UTC (rev 66087) @@ -78,6 +78,7 @@ G_add_keyword(_("extract")); G_add_keyword(_("select")); G_add_keyword(_("dissolve")); + G_add_keyword(_("random")); module->description = _("Selects vector features from an existing vector map and " "creates a new vector map containing only the selected features."); From svn_grass at osgeo.org Thu Sep 3 12:29:53 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Thu, 3 Sep 2015 12:29:53 -0700 Subject: [GRASS-SVN] r66088 - grass/branches/releasebranch_7_0/vector/v.extract Message-ID: <20150903192953.450063900A4@trac.osgeo.org> Author: neteler Date: 2015-09-03 12:29:53 -0700 (Thu, 03 Sep 2015) New Revision: 66088 Modified: grass/branches/releasebranch_7_0/vector/v.extract/main.c Log: v.extract: sync keywords to trunk Modified: grass/branches/releasebranch_7_0/vector/v.extract/main.c =================================================================== --- grass/branches/releasebranch_7_0/vector/v.extract/main.c 2015-09-03 19:28:15 UTC (rev 66087) +++ grass/branches/releasebranch_7_0/vector/v.extract/main.c 2015-09-03 19:29:53 UTC (rev 66088) @@ -76,6 +76,9 @@ module = G_define_module(); G_add_keyword(_("vector")); G_add_keyword(_("extract")); + G_add_keyword(_("select")); + G_add_keyword(_("dissolve")); + G_add_keyword(_("random")); module->description = _("Selects vector features from an existing vector map and " "creates a new vector map containing only the selected features."); From svn_grass at osgeo.org Thu Sep 3 12:46:40 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Thu, 3 Sep 2015 12:46:40 -0700 Subject: [GRASS-SVN] r66089 - grass-addons/grass7/raster/r.viewshed.cva Message-ID: <20150903194640.DAAA43900A3@trac.osgeo.org> Author: neteler Date: 2015-09-03 12:46:40 -0700 (Thu, 03 Sep 2015) New Revision: 66089 Modified: grass-addons/grass7/raster/r.viewshed.cva/r.viewshed.cva.html grass-addons/grass7/raster/r.viewshed.cva/r.viewshed.cva.py Log: r.viewshed.cva addon: fix name_column parameter name; update examples Modified: grass-addons/grass7/raster/r.viewshed.cva/r.viewshed.cva.html =================================================================== --- grass-addons/grass7/raster/r.viewshed.cva/r.viewshed.cva.html 2015-09-03 19:29:53 UTC (rev 66088) +++ grass-addons/grass7/raster/r.viewshed.cva/r.viewshed.cva.html 2015-09-03 19:46:40 UTC (rev 66089) @@ -6,14 +6,14 @@ a python wrapper script that iterative loops through each input point, calculating a viewshed map, and then creates an output map that is coded by the number of input locations that can "see" each -cell. r.viewshed.cva uses the GRASS module r.viewshed +cell. r.viewshed.cva uses the GRASS GIS module r.viewshed for the viewshed analysis. r.viewshed is very fast, thus allowing for a cumulative viewshed analysis to run in a reasonable amount of time. The final cumulative viewshed map is computed using the "count" method of r.series, rather than with mapcalc, as it better handles the null values in the individual constituent viewshed maps (and allows for interim viewshed maps to -be coded in any way) +be coded in any way).

Options and flags:

@@ -24,16 +24,17 @@ you to keep the interim viewshed maps made for each input point. Optionally, option name_col can be used with -k to specify the suffix of the kept viewshed maps by a particular column in the -input vector sites' database. If no value is specified for name_col, +input vector points' database. If no value is specified for name_col, then the cat value will be used.

All other flags and options are inherited from -r.viewshed (see the r.viewshed help page for more -information on these). +r.viewshed (see the r.viewshed +help page for more information on these).

NOTES

+ The input vector points map can be manually digitized (with v.digit) over topographic or cultural features, or can be created as a series of random points (with r.random or @@ -46,25 +47,26 @@

EXAMPLES

-Undertake a cumulative viewshed analysis from a digitized vector points map of prominent peaks in a region:
+Undertake a cumulative viewshed analysis from a digitized vector points +map of prominent peaks in a region:
-g.region rast=elevation_10m_dem at PERMANENT -p
-[use v.digit to digitize points]
-r.viewshed.cva.py elev=elevation10m_demPERMANENT output=peaks_CVA_map \
-  vect=prominent_peaks_points at PERMANENT x_column=x y_column=y \
-  name_column=cat obs_elev=0.0 tgt_elev=1.75 max_dist=-1 mem=1500
+g.region raster=elevation_10m_dem -p
+# [use v.digit to digitize points or eg the r.geomorphon addon for summits]
+r.viewshed.cva input=elevation10m_dem output=peaks_CVA_map \
+  vector=prominent_peaks_points name_column=cat \
+  observer_elevation=1.75 target_elevation=0
 

Undertake a cumulative viewshed analysis from a 10% sample of landscape locations in a region:
-g.region rast=elevation_10m_dem at PERMANENT
-r.random input=elevation10m_demPERMANENT n=10% vector_output=rand_points_10p
-r.viewshed.cva.py elev=elevation10m_demPERMANENT output=peaks_CVA_map \
-  vect=rand_points_10p at PERMANENT x_column=x y_column=y \
-  name_column=cat obs_elev=0.0 tgt_elev=1.75 max_dist=-1 mem=1500
+g.region raster=elevation_10m_dem
+r.random input=elevation10m_dem n=10% vector_output=rand_points_10p
+r.viewshed.cva input=elevation10m_dem output=peaks_CVA_map \
+  vector=rand_points_10p name_column=cat \
+  observer_elevation=1.75 target_elevation=0
 
Modified: grass-addons/grass7/raster/r.viewshed.cva/r.viewshed.cva.py =================================================================== --- grass-addons/grass7/raster/r.viewshed.cva/r.viewshed.cva.py 2015-09-03 19:29:53 UTC (rev 66088) +++ grass-addons/grass7/raster/r.viewshed.cva/r.viewshed.cva.py 2015-09-03 19:46:40 UTC (rev 66089) @@ -26,7 +26,7 @@ #%option G_OPT_V_INPUT #% key: vector -#% description: Name of input vector points map containg the set of sites for this analysis. +#% description: Name of input vector points map containg the set of points for this analysis. #%end #%option G_OPT_R_OUTPUT @@ -76,8 +76,8 @@ #%end #%option G_OPT_DB_COLUMN -#% key: name_col -#% description: Database column for site names (with flag -k) +#% key: name_column +#% description: Database column for point names (with flag -k) #% required : no #%end From svn_grass at osgeo.org Thu Sep 3 14:10:32 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Thu, 3 Sep 2015 14:10:32 -0700 Subject: [GRASS-SVN] r66090 - in grass/trunk: include/defs lib/vector/Vlib Message-ID: <20150903211032.2F21F3900A4@trac.osgeo.org> Author: huhabla Date: 2015-09-03 14:10:32 -0700 (Thu, 03 Sep 2015) New Revision: 66090 Modified: grass/trunk/include/defs/vector.h grass/trunk/lib/vector/Vlib/geos_to_wktb.c Log: vector library: Added WKB read feature function based on GEOS Modified: grass/trunk/include/defs/vector.h =================================================================== --- grass/trunk/include/defs/vector.h 2015-09-03 19:46:40 UTC (rev 66089) +++ grass/trunk/include/defs/vector.h 2015-09-03 21:10:32 UTC (rev 66090) @@ -607,6 +607,10 @@ int, int, size_t *); char *Vect_read_area_to_wkt(struct Map_info *, int); unsigned char *Vect_read_area_to_wkb(struct Map_info *, int, size_t *); +unsigned char *Vect_read_line_to_wkb(const struct Map_info *, + struct line_pnts *, + struct line_cats *, + int line, size_t *); #endif /* Raster color tables */ Modified: grass/trunk/lib/vector/Vlib/geos_to_wktb.c =================================================================== --- grass/trunk/lib/vector/Vlib/geos_to_wktb.c 2015-09-03 19:46:40 UTC (rev 66089) +++ grass/trunk/lib/vector/Vlib/geos_to_wktb.c 2015-09-03 21:10:32 UTC (rev 66090) @@ -98,6 +98,84 @@ } /*! + \brief Read a Well Known Binary (WKB) representation of + a given feature id. + + This function reads a specific feature and converts it into a + WKB representation. line_pnts and line_cats structures can be provided + to store the result of the read operation. That is meaningful in case + the category values of the feature are needed. + This function is not thread safe, it uses static variables for speedup. + + Supported feature types: + - GV_POINT -> POINT + - GV_CENTROID -> POINT + - GV_LINE -> LINESTRING + - GV_BOUNDARY -> LINEARRING + + \param Map pointer to Map_info structure + \param line_p pointer to line_pnts structure to use, or NULL + \param line_c pointer to line_cats structure to use, or NULL + \param line The id of the feature to read + \param size The size of the returned unsigned char array + + \return pointer to unsigned char array + \return NULL on error + */ +unsigned char *Vect_read_line_to_wkb(const struct Map_info *Map, + struct line_pnts *line_p, + struct line_cats *line_c, + int line, size_t *size) +{ + static int init = 0; + /* The writer is static for performance reasons */ + static GEOSWKBWriter *writer = NULL; + unsigned char *wkb = NULL; + int destroy_line = 0, destroy_cats = 0; + + if(init == 0) { + initGEOS(NULL, NULL); + writer = GEOSWKBWriter_create(); + init += 1; + } + + if(line_p == NULL) { + destroy_line = 1; + line_p = Vect_new_line_struct(); + } + + if(line_c == NULL) { + destroy_cats = 1; + line_c = Vect_new_cats_struct(); + } + + int f_type = Vect_read_line(Map, line_p, line_c, line); + + if(f_type < 0) + return(NULL); + + GEOSWKBWriter_setOutputDimension(writer, Vect_is_3d(Map) ? 3 : 2); + + GEOSGeometry *geom = Vect_line_to_geos(line_p, f_type, Vect_is_3d(Map)); + + if(!geom) { + return(NULL); + } + + wkb = GEOSWKBWriter_write(writer, geom, size); + + GEOSGeom_destroy(geom); + + if(destroy_cats == 1) + Vect_destroy_cats_struct(line_c); + + if(destroy_line == 1) + Vect_destroy_line_struct(line_p); + + return(wkb); +} + +/*! \brief Create a Well Known Binary (WKB) representation of given feature type from points. From svn_grass at osgeo.org Thu Sep 3 14:12:13 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Thu, 3 Sep 2015 14:12:13 -0700 Subject: [GRASS-SVN] r66091 - grass/trunk/lib/python/pygrass Message-ID: <20150903211213.EEB833900A4@trac.osgeo.org> Author: huhabla Date: 2015-09-03 14:12:13 -0700 (Thu, 03 Sep 2015) New Revision: 66091 Modified: grass/trunk/lib/python/pygrass/utils.py Log: pygrass utils: Doctest update Modified: grass/trunk/lib/python/pygrass/utils.py =================================================================== --- grass/trunk/lib/python/pygrass/utils.py 2015-09-03 21:10:32 UTC (rev 66090) +++ grass/trunk/lib/python/pygrass/utils.py 2015-09-03 21:12:13 UTC (rev 66091) @@ -12,6 +12,9 @@ from grass.pygrass.errors import GrassError +test_vector_name="Utils_test_vector" +test_raster_name="Utils_test_raster" + def looking(obj, filter_string): """ >>> import grass.lib.vector as libvect @@ -104,7 +107,7 @@ def copy(existingmap, newmap, maptype, **kwargs): """Copy a map - >>> copy('census_wake2000', 'mycensus', 'vector') + >>> copy(test_vector_name, 'mycensus', 'vector') >>> rename('mycensus', 'mynewcensus', 'vector') >>> remove('mynewcensus', 'vector') @@ -127,8 +130,8 @@ def get_mapset_raster(mapname, mapset=''): """Return the mapset of the raster map - >>> get_mapset_raster('elevation') - 'PERMANENT' + >>> get_mapset_raster(test_raster_name) == getenv("MAPSET") + True """ return libgis.G_find_raster2(mapname, mapset) @@ -137,8 +140,8 @@ def get_mapset_vector(mapname, mapset=''): """Return the mapset of the vector map - >>> get_mapset_vector('census_wake2000') - 'PERMANENT' + >>> get_mapset_vector(test_vector_name) == getenv("MAPSET") + True """ return libgis.G_find_vector2(mapname, mapset) @@ -197,37 +200,40 @@ def get_raster_for_points(poi_vector, raster, column=None, region=None): """Query a raster map for each point feature of a vector + test_vector_name="Utils_test_vector" + test_raster_name="Utils_test_raster" + Example >>> from grass.pygrass.vector import VectorTopo >>> from grass.pygrass.raster import RasterRow >>> from grass.pygrass.gis.region import Region >>> region = Region() - >>> region.from_rast('elev_state_500m') + >>> region.from_rast(test_raster_name) >>> region.set_raster_region() - >>> ele = RasterRow('elev_state_500m') - >>> copy('firestations','myfirestations','vector') - >>> fire = VectorTopo('myfirestations') + >>> ele = RasterRow(test_raster_name) + >>> copy(test_vector_name,'test_vect_2','vector') + >>> fire = VectorTopo('test_vect_2') >>> fire.open(mode='r') >>> l = get_raster_for_points(fire, ele, region=region) >>> l[0] # doctest: +ELLIPSIS (1, 620856.9585876337, 230066.3831321055, 111.2153883384) >>> l[1] # doctest: +ELLIPSIS (2, 625331.9185974908, 229990.82160762616, 89.978796115200012) - >>> fire.table.columns.add('elev_state_500m','double precision') - >>> 'elev_state_500m' in fire.table.columns + >>> fire.table.columns.add(test_raster_name,'double precision') + >>> test_raster_name in fire.table.columns True - >>> get_raster_for_points(fire, ele, column='elev_state_500m', region=region) + >>> get_raster_for_points(fire, ele, column=test_raster_name, region=region) True - >>> fire.table.filters.select('LABEL', 'elev_state_500m') - Filters(u'SELECT LABEL, elev_state_500m FROM myfirestations;') + >>> fire.table.filters.select('LABEL', test_raster_name) + Filters(u'SELECT LABEL, Utils_test_raster FROM test_vect_2;') >>> cur = fire.table.execute() >>> r = cur.fetchall() >>> r[0] # doctest: +ELLIPSIS (u'Morrisville #3', 111.2153883384) >>> r[1] # doctest: +ELLIPSIS (u'Morrisville #1', 89.97879611520001) - >>> remove('myfirestations','vect') + >>> remove('test_vect_2','vect') :param point: point vector object @@ -510,3 +516,24 @@ streams.table.conn.commit() streams.close() + +if __name__ == "__main__": + + import doctest + from grass.pygrass import utils + from grass.script.core import run_command + + utils.create_test_vector_map(test_vector_name) + run_command("g.region", n=50, s=0, e=60, w=0, res=1) + run_command("r.mapcalc", expression="%s = 1"%(test_raster_name), + overwrite=True) + + doctest.testmod() + + """Remove the generated vector map, if exist""" + mset = utils.get_mapset_vector(test_vector_name, mapset='') + if mset: + run_command("g.remove", flags='f', type='vector', name=test_vector_name) + mset = utils.get_mapset_raster(test_raster_name, mapset='') + if mset: + run_command("g.remove", flags='f', type='raster', name=test_raster_name) From svn_grass at osgeo.org Thu Sep 3 14:16:31 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Thu, 3 Sep 2015 14:16:31 -0700 Subject: [GRASS-SVN] r66092 - grass/trunk/lib/python/pygrass/vector Message-ID: <20150903211631.1498A3900A4@trac.osgeo.org> Author: huhabla Date: 2015-09-03 14:16:30 -0700 (Thu, 03 Sep 2015) New Revision: 66092 Modified: grass/trunk/lib/python/pygrass/vector/__init__.py grass/trunk/lib/python/pygrass/vector/find.py grass/trunk/lib/python/pygrass/vector/table.py Log: pygrass vector: Re-establishing of the generator functionality in finder classes, added convenient functions to convert a vector map layer into WKB representation and to read the whole attribute table as dictionary. Plenty of doctests implemented. Modified: grass/trunk/lib/python/pygrass/vector/__init__.py =================================================================== --- grass/trunk/lib/python/pygrass/vector/__init__.py 2015-09-03 21:12:13 UTC (rev 66091) +++ grass/trunk/lib/python/pygrass/vector/__init__.py 2015-09-03 21:16:30 UTC (rev 66092) @@ -3,6 +3,7 @@ import grass.lib.gis as libgis libgis.G_gisinit('') import grass.lib.vector as libvect +import ctypes # # import pygrass modules @@ -576,8 +577,184 @@ if release: libvect.Vect_set_release_support(self.c_mapinfo) super(VectorTopo, self).close(build=build) + + @must_be_open + def table_to_dict(self, where=None): + """Return the attribute table as a dictionary with the category as keys + + The columns have the order of the self.table.columns.names() list. + + Examples + + >>> from grass.pygrass.vector import VectorTopo + >>> from grass.pygrass.vector.basic import Bbox + >>> test_vect = VectorTopo(test_vector_name) + >>> test_vect.open('r') + + >>> test_vect.table_to_dict() + {1: [1, u'point', 1.0], 2: [2, u'line', 2.0], 3: [3, u'centroid', 3.0]} + + >>> test_vect.table_to_dict(where="value > 2") + {3: [3, u'centroid', 3.0]} + >>> test_vect.table_to_dict(where="value > 0") + {1: [1, u'point', 1.0], 2: [2, u'line', 2.0], 3: [3, u'centroid', 3.0]} + + >>> test_vect.table.filters.get_sql() + u'SELECT cat,name,value FROM vector_doctest_map WHERE value > 0 ORDER BY cat;' + """ + + if self.table is not None: + table_dict = {} + # Get the category index + cat_index = self.table.columns.names().index("cat") + # Prepare a filter + if where is not None: + self.table.filters.where(where) + + self.table.filters.order_by("cat") + + self.table.filters.select(",".join(self.table.columns.names())) + # Execute the query and fetch the result + cur = self.table.execute() + l = cur.fetchall() + # Generate the dictionary + for entry in l: + table_dict[entry[cat_index]] = list(entry) + + return(table_dict) + + return None + + @must_be_open + def features_to_wkb_list(self, bbox=None, feature_type="point", field=1): + """Return all features of type point, line, boundary or centroid + as a list of Well Known Binary representations (WKB) + (id, cat, wkb) triplets located in a specific + bounding box. + + :param bbox: The boundingbox to search for features, + if bbox=None the boundingbox of the whole + vector map layer is used + + :type bbox: grass.pygrass.vector.basic.Bbox + + :param feature_type: The type of feature that should be converted to + the Well Known Binary (WKB) format. Supported are: + 'point' -> libvect.GV_POINT 1 + 'line' -> libvect.GV_LINE 2 + 'boundary' -> libvect.GV_BOUNDARY 3 + 'centroid' -> libvect.GV_CENTROID 4 + :type type: string + + :param field: The category field + :type field: integer + + :return: A list of triplets, or None if nothing was found + + The well known binary are stored in byte arrays. + + Examples: + + >>> from grass.pygrass.vector import VectorTopo + >>> from grass.pygrass.vector.basic import Bbox + >>> test_vect = VectorTopo(test_vector_name) + >>> test_vect.open('r') + + >>> bbox = Bbox(north=20, south=-1, east=203, west=-1) + >>> result = test_vect.features_to_wkb_list(bbox=bbox, + ... feature_type="point") + >>> len(result) + 3 + >>> for entry in result: + ... f_id, cat, wkb = entry + ... print(f_id, cat, len(wkb)) + (1, 1, 21) + (2, 1, 21) + (3, 1, 21) + + >>> result = test_vect.features_to_wkb_list(bbox=None, + ... feature_type="line") + >>> len(result) + 3 + >>> for entry in result: + ... f_id, cat, wkb = entry + ... print(f_id, cat, len(wkb)) + (4, 2, 57) + (5, 2, 57) + (6, 2, 57) + + >>> result = test_vect.features_to_wkb_list(bbox=bbox, + ... feature_type="boundary") + >>> len(result) + 11 + + >>> result = test_vect.features_to_wkb_list(bbox=None, + ... feature_type="centroid") + >>> len(result) + 4 + + >>> for entry in result: + ... f_id, cat, wkb = entry + ... print(f_id, cat, len(wkb)) + (19, 3, 21) + (18, 3, 21) + (20, 3, 21) + (21, 3, 21) + + >>> result = test_vect.features_to_wkb_list(bbox=bbox, + ... feature_type="blub") + Traceback (most recent call last): + ... + GrassError: Unsupported feature type , supported are + + >>> test_vect.close() + + + """ + + supported = ['point', 'line', 'boundary', 'centroid'] + + if feature_type not in supported: + raise GrassError("Unsupported feature type <%s>, "\ + "supported are <%s>"%(feature_type, + ",".join(supported))) + + if bbox is None: + bbox = self.bbox() + + bboxlist = self.find_by_bbox.geos(bbox, type=feature_type, + bboxlist_only = True) + + if bboxlist is not None: + + l = [] + line_p = libvect.line_pnts() + line_c = libvect.line_cats() + size = ctypes.c_size_t() + cat = ctypes.c_int() + + for f_id in bboxlist.ids: + barray = libvect.Vect_read_line_to_wkb(self.c_mapinfo, + ctypes.byref(line_p), + ctypes.byref(line_c), + f_id, ctypes.byref(size)) + if not barray: + raise GrassError(_("Unable to read line of feature %i"%(f_id))) + + ok = libvect.Vect_cat_get(ctypes.byref(line_c), field, + ctypes.byref(cat)) + if ok < 1: + pcat = None + else: + pcat = cat.value + + l.append((f_id, pcat, ctypes.string_at(barray, size.value))) + + return l + return None + if __name__ == "__main__": import doctest from grass.pygrass import utils Modified: grass/trunk/lib/python/pygrass/vector/find.py =================================================================== --- grass/trunk/lib/python/pygrass/vector/find.py 2015-09-03 21:12:13 UTC (rev 66091) +++ grass/trunk/lib/python/pygrass/vector/find.py 2015-09-03 21:16:30 UTC (rev 66092) @@ -412,7 +412,7 @@ >>> bbox = Bbox(north=5, south=-1, east=3, west=-1) >>> result = test_vect.find_by_bbox.geos(bbox=bbox) - >>> result #doctest: +NORMALIZE_WHITESPACE + >>> [bbox for bbox in result] #doctest: +NORMALIZE_WHITESPACE [Boundary([Point(4.000000, 0.000000), Point(0.000000, 0.000000)]), Boundary([Point(0.000000, 0.000000), Point(0.000000, 4.000000)]), Boundary([Point(0.000000, 4.000000), Point(4.000000, 4.000000)]), @@ -433,7 +433,7 @@ >>> bbox = Bbox(north=7, south=-1, east=15, west=9) >>> result = test_vect.find_by_bbox.geos(bbox=bbox) - >>> result #doctest: +NORMALIZE_WHITESPACE + >>> [bbox for bbox in result] #doctest: +NORMALIZE_WHITESPACE [Line([Point(10.000000, 4.000000), Point(10.000000, 2.000000), Point(10.000000, 0.000000)]), Point(10.000000, 6.000000), @@ -458,8 +458,8 @@ if bboxlist_only: return found else: - return [read_line(f_id, self.c_mapinfo, self.table, - self.writeable) for f_id in found.ids] + return (read_line(f_id, self.c_mapinfo, self.table, + self.writeable) for f_id in found.ids) @must_be_open def nodes(self, bbox): @@ -482,7 +482,7 @@ # Find nodes in box >>> bbox = Bbox(north=5, south=-1, east=15, west=9) >>> result = test_vect.find_by_bbox.nodes(bbox=bbox) - >>> result + >>> [node for node in result] [Node(2), Node(1), Node(4), Node(3), Node(5), Node(6)] >>> bbox = Bbox(north=20, south=18, east=20, west=18) @@ -494,9 +494,9 @@ if libvect.Vect_select_nodes_by_box(self.c_mapinfo, bbox.c_bbox, found.c_ilist): if len(found) > 0: - return [Node(v_id=n_id, c_mapinfo=self.c_mapinfo, + return (Node(v_id=n_id, c_mapinfo=self.c_mapinfo, table=self.table, writeable=self.writeable) - for n_id in found] + for n_id in found) @must_be_open def areas(self, bbox, boxlist=None, bboxlist_only=False): @@ -526,7 +526,7 @@ # Find areas in box >>> bbox = Bbox(north=5, south=-1, east=9, west=-1) >>> result = test_vect.find_by_bbox.areas(bbox=bbox) - >>> result + >>> [area for area in result] [Area(1), Area(2), Area(3), Area(4)] >>> bbox = Bbox(north=5, south=-1, east=9, west=-1) @@ -552,9 +552,9 @@ if bboxlist_only: return boxlist else: - return [Area(v_id=a_id, c_mapinfo=self.c_mapinfo, + return (Area(v_id=a_id, c_mapinfo=self.c_mapinfo, table=self.table, writeable=self.writeable) - for a_id in boxlist.ids] + for a_id in boxlist.ids) @must_be_open def islands(self, bbox, bboxlist_only=False): @@ -581,7 +581,7 @@ # Find isles in box >>> bbox = Bbox(north=5, south=-1, east=9, west=-1) >>> result = test_vect.find_by_bbox.islands(bbox=bbox) - >>> result + >>> [isle for isle in result] [Isle(1), Isle(2)] >>> bbox = Bbox(north=5, south=-1, east=9, west=-1) @@ -605,9 +605,9 @@ if bboxlist_only: return found else: - return [Isle(v_id=i_id, c_mapinfo=self.c_mapinfo, + return (Isle(v_id=i_id, c_mapinfo=self.c_mapinfo, table=self.table, writeable=self.writeable) - for i_id in found.ids] + for i_id in found.ids) class PolygonFinder(AbstractFinder): Modified: grass/trunk/lib/python/pygrass/vector/table.py =================================================================== --- grass/trunk/lib/python/pygrass/vector/table.py 2015-09-03 21:12:13 UTC (rev 66091) +++ grass/trunk/lib/python/pygrass/vector/table.py 2015-09-03 21:16:30 UTC (rev 66092) @@ -1166,6 +1166,6 @@ """Remove the generated vector map, if exist""" from grass.pygrass.utils import get_mapset_vector from grass.script.core import run_command - #mset = get_mapset_vector(test_vector_name, mapset='') - #if mset: - # run_command("g.remove", flags='f', type='vector', name=test_vector_name) + mset = get_mapset_vector(test_vector_name, mapset='') + if mset: + run_command("g.remove", flags='f', type='vector', name=test_vector_name) From svn_grass at osgeo.org Thu Sep 3 15:06:20 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Thu, 3 Sep 2015 15:06:20 -0700 Subject: [GRASS-SVN] r66093 - grass/trunk/lib/python/pygrass/vector Message-ID: <20150903220620.50D133900A3@trac.osgeo.org> Author: huhabla Date: 2015-09-03 15:06:20 -0700 (Thu, 03 Sep 2015) New Revision: 66093 Modified: grass/trunk/lib/python/pygrass/vector/__init__.py Log: pygrass vector: Added areas_to_wkb_list() and tests Modified: grass/trunk/lib/python/pygrass/vector/__init__.py =================================================================== --- grass/trunk/lib/python/pygrass/vector/__init__.py 2015-09-03 21:16:30 UTC (rev 66092) +++ grass/trunk/lib/python/pygrass/vector/__init__.py 2015-09-03 22:06:20 UTC (rev 66093) @@ -662,7 +662,7 @@ >>> test_vect = VectorTopo(test_vector_name) >>> test_vect.open('r') - >>> bbox = Bbox(north=20, south=-1, east=203, west=-1) + >>> bbox = Bbox(north=20, south=-1, east=20, west=-1) >>> result = test_vect.features_to_wkb_list(bbox=bbox, ... feature_type="point") >>> len(result) @@ -727,7 +727,7 @@ bboxlist = self.find_by_bbox.geos(bbox, type=feature_type, bboxlist_only = True) - if bboxlist is not None: + if bboxlist is not None and len(bboxlist) > 0: l = [] line_p = libvect.line_pnts() @@ -754,7 +754,95 @@ return l return None + + @must_be_open + def areas_to_wkb_list(self, bbox=None, field=1): + """Return all features of type point, line, boundary or centroid + as a list of Well Known Binary representations (WKB) + (id, cat, wkb) triplets located in a specific + bounding box. + + :param bbox: The boundingbox to search for features, + if bbox=None the boundingbox of the whole + vector map layer is used + + :type bbox: grass.pygrass.vector.basic.Bbox + + :param field: The centroid category field + :type field: integer + + :return: A list of triplets, or None if nothing was found + + The well known binary are stored in byte arrays. + + Examples: + + >>> from grass.pygrass.vector import VectorTopo + >>> from grass.pygrass.vector.basic import Bbox + >>> test_vect = VectorTopo(test_vector_name) + >>> test_vect.open('r') + >>> bbox = Bbox(north=20, south=-1, east=20, west=-1) + >>> result = test_vect.areas_to_wkb_list(bbox=bbox) + >>> len(result) + 4 + >>> for entry in result: + ... a_id, cat, wkb = entry + ... print(a_id, cat, len(wkb)) + (1, 3, 225) + (2, 3, 141) + (3, 3, 93) + (4, 3, 141) + + >>> result = test_vect.areas_to_wkb_list() + >>> len(result) + 4 + >>> for entry in result: + ... a_id, cat, wkb = entry + ... print(a_id, cat, len(wkb)) + (1, 3, 225) + (2, 3, 141) + (3, 3, 93) + (4, 3, 141) + + >>> test_vect.close() + + + """ + if bbox is None: + bbox = self.bbox() + + bboxlist = self.find_by_bbox.areas(bbox, bboxlist_only = True) + + if bboxlist is not None and len(bboxlist) > 0: + + l = [] + line_c = libvect.line_cats() + size = ctypes.c_size_t() + cat = ctypes.c_int() + + for a_id in bboxlist.ids: + barray = libvect.Vect_read_area_to_wkb(self.c_mapinfo, + a_id, + ctypes.byref(size)) + if not barray: + raise GrassError(_("Unable to read area with id %i"%(a_id))) + + pcat = None + c_ok = libvect.Vect_get_area_cats(self.c_mapinfo, a_id, + ctypes.byref(line_c)) + if c_ok == 0: # Centroid found + + ok = libvect.Vect_cat_get(ctypes.byref(line_c), field, + ctypes.byref(cat)) + if ok > 0: + pcat = cat.value + + l.append((a_id, pcat, ctypes.string_at(barray, size.value))) + + return l + return None + if __name__ == "__main__": import doctest from grass.pygrass import utils From svn_grass at osgeo.org Thu Sep 3 19:40:46 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Thu, 3 Sep 2015 19:40:46 -0700 Subject: [GRASS-SVN] r66094 - in grass/trunk/raster/r.in.lidar: . test Message-ID: <20150904024046.928273900A4@trac.osgeo.org> Author: wenzeslaus Date: 2015-09-03 19:40:46 -0700 (Thu, 03 Sep 2015) New Revision: 66094 Added: grass/trunk/raster/r.in.lidar/test/ grass/trunk/raster/r.in.lidar/test/sample_test.sh Modified: grass/trunk/raster/r.in.lidar/main.c grass/trunk/raster/r.in.lidar/r.in.lidar.html Log: r.in.lidar: add base raster to get height above ground Modified: grass/trunk/raster/r.in.lidar/main.c =================================================================== --- grass/trunk/raster/r.in.lidar/main.c 2015-09-03 22:06:20 UTC (rev 66093) +++ grass/trunk/raster/r.in.lidar/main.c 2015-09-04 02:40:46 UTC (rev 66094) @@ -99,7 +99,7 @@ int main(int argc, char *argv[]) { - int out_fd; + int out_fd, base_raster; char *infile, *outmap; int percent; int method = -1; @@ -107,11 +107,11 @@ double zrange_min, zrange_max, d_tmp; unsigned long estimated_lines; - RASTER_MAP_TYPE rtype; + RASTER_MAP_TYPE rtype, base_raster_data_type; struct History history; char title[64]; void *n_array, *min_array, *max_array, *sum_array, *sumsq_array, - *index_array; + *index_array, *base_array; void *raster_row, *ptr; struct Cell_head region; int rows, cols; /* scan box size */ @@ -146,7 +146,7 @@ struct GModule *module; struct Option *input_opt, *output_opt, *percent_opt, *type_opt, *filter_opt, *class_opt; - struct Option *method_opt, *zrange_opt, *zscale_opt; + struct Option *method_opt, *base_raster_opt, *zrange_opt, *zscale_opt; struct Option *trim_opt, *pth_opt, *res_opt; struct Flag *print_flag, *scan_flag, *shell_style, *over_flag, *extents_flag, *intens_flag; @@ -197,6 +197,12 @@ type_opt->answer = "FCELL"; type_opt->description = _("Storage type for resultant raster map"); + base_raster_opt = G_define_standard_option(G_OPT_R_INPUT); + base_raster_opt->key = "base_raster"; + base_raster_opt->required = NO; + base_raster_opt->label = _("Subtract raster values from the z coordinates"); + base_raster_opt->description = _("The scale for z is applied beforehand, the filter afterwards"); + zrange_opt = G_define_option(); zrange_opt->key = "zrange"; zrange_opt->type = TYPE_DOUBLE; @@ -507,6 +513,7 @@ sum_array = NULL; sumsq_array = NULL; index_array = NULL; + base_array = NULL; if (strcmp(method_opt->answer, "n") == 0) { method = METHOD_N; @@ -641,6 +648,12 @@ npasses = (int)ceil(1.0 * region.rows / rows); + if (base_raster_opt->answer) { + /* TODO: do we need to test existence first? mapset? */ + base_raster = Rast_open_old(base_raster_opt->answer, ""); + base_raster_data_type = Rast_get_map_type(base_raster); + } + if (!scan_flag->answer) { /* check if rows * (cols + 1) go into a size_t */ if (sizeof(size_t) < 8) { @@ -665,6 +678,10 @@ if (bin_index) index_array = G_calloc((size_t)rows * (cols + 1), Rast_cell_size(CELL_TYPE)); + if (base_raster_opt->answer) + base_array = G_calloc((size_t)rows * (cols + 1), Rast_cell_size(base_raster_data_type)); + /* we don't free the raster, we just use it again */ + /* TODO: perhaps none of them needs to be freed */ /* and then free it again */ if (bin_n) @@ -719,6 +736,13 @@ pass_south = region.south; /* exact copy to avoid fp errors */ } + if (base_array) { + G_debug(2, "filling base raster array"); + for (row = 0; row < rows; row++) { + Rast_get_row(base_raster, base_array + (row * cols * Rast_cell_size(base_raster_data_type)), row, base_raster_data_type); + } + } + G_debug(2, "pass=%d/%d pass_n=%f pass_s=%f rows=%d", pass, npasses, pass_north, pass_south, rows); @@ -832,19 +856,41 @@ z = z * zscale; - if (zrange_opt->answer) { - if (z < zrange_min || z > zrange_max) { - continue; - } - } + /* find the bin in the current array box */ + arr_row = (int)((pass_north - y) / region.ns_res); + arr_col = (int)((x - region.west) / region.ew_res); + if (base_array) { + ptr = base_array; + ptr = + G_incr_void_ptr(ptr, + ((arr_row * cols) + + arr_col) * Rast_cell_size(base_raster_data_type)); + + double base_z; + if (Rast_is_null_value(ptr, base_raster_data_type)) { + continue; + } + else { + if (base_raster_data_type == DCELL_TYPE) + base_z = *(DCELL *) ptr; + else if (base_raster_data_type == FCELL_TYPE) + base_z = (double) *(FCELL *) ptr; + else + base_z = (double) *(CELL *) ptr; + } + z -= base_z; + } + + if (zrange_opt->answer) { + if (z < zrange_min || z > zrange_max) { + continue; + } + } + count++; /* G_debug(5, "x: %f, y: %f, z: %f", x, y, z); */ - /* find the bin in the current array box */ - arr_row = (int)((pass_north - y) / region.ns_res); - arr_col = (int)((x - region.west) / region.ew_res); - if (bin_n) update_n(n_array, cols, arr_row, arr_col); if (bin_min) @@ -1207,7 +1253,8 @@ max_nodes = 0; nodes = NULL; } - + if (base_array) + Rast_close(base_raster); } /* passes loop */ G_percent(1, 1, 1); /* flush */ Modified: grass/trunk/raster/r.in.lidar/r.in.lidar.html =================================================================== --- grass/trunk/raster/r.in.lidar/r.in.lidar.html 2015-09-03 22:06:20 UTC (rev 66093) +++ grass/trunk/raster/r.in.lidar/r.in.lidar.html 2015-09-04 02:40:46 UTC (rev 66094) @@ -200,7 +200,7 @@ r.neighbors to smooth the stddev map before further use.] -

EXAMPLE

+

EXAMPLES

Import of a LAS file into an existing location/mapset (metric): @@ -211,8 +211,9 @@ r.univar lidar_dem_mean +

Serpent Mound dataset

+

-Serpent Mound dataset: This example is analogous to the example used in the GRASS wiki page for importing LAS as raster DEM.

The sample LAS data are in the file "Serpent Mound Model LAS Data.las", @@ -240,6 +241,21 @@ output=Serpent_Mound_Model_LAS_Data method=mean +

Height above ground

+ +

+Compute mean height above ground of the points for each raster cell +(ground elevation is given by the raster map elevation): + +

+g.region raster=elevation
+r.in.lidar input=points.las output=height_above_ground base_raster=elevation
+
+ +In this type of computation, it might be advantageous to change the resolution +to match the precision of the points rather then derive it from the base raster. + +

NOTES

The typical file extensions for the LAS format are .las and .laz (compressed). The compressed LAS (.laz) format can be imported only if libLAS has been compiled Added: grass/trunk/raster/r.in.lidar/test/sample_test.sh =================================================================== --- grass/trunk/raster/r.in.lidar/test/sample_test.sh (rev 0) +++ grass/trunk/raster/r.in.lidar/test/sample_test.sh 2015-09-04 02:40:46 UTC (rev 66094) @@ -0,0 +1,11 @@ +# GNU GPL +# Vaclav Petras +# this is an idea for a test +export GRASS_OVERWRITE=1 +r.in.lidar in=points.las out=test_pure +r.in.lidar in=points.las out=test_hag base=elevation +r.mapcalc "test_difference = (elevation + test_hag) - test_pure" +r.univar test_difference + + +g.region -p -a raster=test_difference at manual res=0.1 zoom=test_difference at manual Property changes on: grass/trunk/raster/r.in.lidar/test/sample_test.sh ___________________________________________________________________ Added: svn:executable + * Added: svn:mime-type + text/x-sh Added: svn:eol-style + native From svn_grass at osgeo.org Fri Sep 4 11:06:01 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Fri, 4 Sep 2015 11:06:01 -0700 Subject: [GRASS-SVN] r66095 - grass/trunk/raster/r.in.lidar Message-ID: <20150904180601.908FC390136@trac.osgeo.org> Author: neteler Date: 2015-09-04 11:06:01 -0700 (Fri, 04 Sep 2015) New Revision: 66095 Modified: grass/trunk/raster/r.in.lidar/r.in.lidar.html Log: r.in.lidar manual: minor fixes Modified: grass/trunk/raster/r.in.lidar/r.in.lidar.html =================================================================== --- grass/trunk/raster/r.in.lidar/r.in.lidar.html 2015-09-04 02:40:46 UTC (rev 66094) +++ grass/trunk/raster/r.in.lidar/r.in.lidar.html 2015-09-04 18:06:01 UTC (rev 66095) @@ -199,10 +199,16 @@ r.mapcalc to remove highly variable points (small n) or run r.neighbors to smooth the stddev map before further use.] +

NOTES

+The typical file extensions for the LAS format are .las and .laz (compressed). +The compressed LAS (.laz) format can be imported only if libLAS has been compiled +with laszip support. It is also recommended to compile libLAS with GDAL which is +used to test if the LAS projection matches that of the GRASS location. +

EXAMPLES

-Import of a LAS file into an existing location/mapset (metric): +Import of a LAS file into an existing location/mapset (metric units):
 # set the computational region automatically, resol. for binning is 5m
@@ -213,12 +219,11 @@
 
 

Serpent Mound dataset

-

This example is analogous to the example used in the GRASS wiki page for importing LAS as raster DEM.

The sample LAS data are in the file "Serpent Mound Model LAS Data.las", available at -appliedimagery.com +appliedimagery.com:

 # print LAS file info
@@ -243,25 +248,19 @@
 
 

Height above ground

-

-Compute mean height above ground of the points for each raster cell -(ground elevation is given by the raster map elevation): +The mean height above ground of the points can be computed for each +raster cell (the ground elevation is given by the raster map +elevation):

-g.region raster=elevation
+g.region raster=elevation -p
 r.in.lidar input=points.las output=height_above_ground base_raster=elevation
 
In this type of computation, it might be advantageous to change the resolution -to match the precision of the points rather then derive it from the base raster. +to match the precision of the points rather than deriving it from the base raster. + - -

NOTES

-The typical file extensions for the LAS format are .las and .laz (compressed). -The compressed LAS (.laz) format can be imported only if libLAS has been compiled -with laszip support. It is also recommended to compile libLAS with GDAL, -needed to test for matching projections. -

TODO

    From svn_grass at osgeo.org Fri Sep 4 11:14:22 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Fri, 4 Sep 2015 11:14:22 -0700 Subject: [GRASS-SVN] r66096 - grass/trunk/gui/icons Message-ID: <20150904181422.08D84390136@trac.osgeo.org> Author: neteler Date: 2015-09-04 11:14:21 -0700 (Fri, 04 Sep 2015) New Revision: 66096 Modified: grass/trunk/gui/icons/grass.desktop Log: grass.desktop: syntax fix Modified: grass/trunk/gui/icons/grass.desktop =================================================================== --- grass/trunk/gui/icons/grass.desktop 2015-09-04 18:06:01 UTC (rev 66095) +++ grass/trunk/gui/icons/grass.desktop 2015-09-04 18:14:21 UTC (rev 66096) @@ -47,7 +47,7 @@ Comment[uk]=??????????????? ??????? Comment[uz]=Geografik axborot tizimi Categories=Education;Science;Geoscience;Geography; -Exec=grass7 +Exec=grass71 Icon=grass Terminal=true -Keywords=wms;wfs;ogc;osgeo +Keywords=wms;wfs;ogc;osgeo;gis; From svn_grass at osgeo.org Fri Sep 4 11:14:27 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Fri, 4 Sep 2015 11:14:27 -0700 Subject: [GRASS-SVN] r66097 - grass/branches/releasebranch_7_0/gui/icons Message-ID: <20150904181427.C3014390136@trac.osgeo.org> Author: neteler Date: 2015-09-04 11:14:27 -0700 (Fri, 04 Sep 2015) New Revision: 66097 Modified: grass/branches/releasebranch_7_0/gui/icons/grass.desktop Log: grass.desktop: syntax fix Modified: grass/branches/releasebranch_7_0/gui/icons/grass.desktop =================================================================== --- grass/branches/releasebranch_7_0/gui/icons/grass.desktop 2015-09-04 18:14:21 UTC (rev 66096) +++ grass/branches/releasebranch_7_0/gui/icons/grass.desktop 2015-09-04 18:14:27 UTC (rev 66097) @@ -47,7 +47,7 @@ Comment[uk]=??????????????? ??????? Comment[uz]=Geografik axborot tizimi Categories=Education;Science;Geoscience;Geography; -Exec=grass7 +Exec=grass70 Icon=grass Terminal=true -Keywords=wms;wfs;ogc;osgeo +Keywords=wms;wfs;ogc;osgeo;gis; From svn_grass at osgeo.org Fri Sep 4 11:14:34 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Fri, 4 Sep 2015 11:14:34 -0700 Subject: [GRASS-SVN] r66098 - grass/branches/releasebranch_6_4/gui/icons Message-ID: <20150904181434.C0F1F390136@trac.osgeo.org> Author: neteler Date: 2015-09-04 11:14:34 -0700 (Fri, 04 Sep 2015) New Revision: 66098 Modified: grass/branches/releasebranch_6_4/gui/icons/grass.desktop Log: grass.desktop: syntax fix Modified: grass/branches/releasebranch_6_4/gui/icons/grass.desktop =================================================================== --- grass/branches/releasebranch_6_4/gui/icons/grass.desktop 2015-09-04 18:14:27 UTC (rev 66097) +++ grass/branches/releasebranch_6_4/gui/icons/grass.desktop 2015-09-04 18:14:34 UTC (rev 66098) @@ -50,3 +50,4 @@ Exec=grass64 Icon=grass Terminal=true +Keywords=wms;wfs;ogc;osgeo;gis; From svn_grass at osgeo.org Fri Sep 4 12:40:31 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Fri, 4 Sep 2015 12:40:31 -0700 Subject: [GRASS-SVN] r66099 - grass/trunk/include/Make Message-ID: <20150904194031.8DD00390151@trac.osgeo.org> Author: wenzeslaus Date: 2015-09-04 12:40:31 -0700 (Fri, 04 Sep 2015) New Revision: 66099 Modified: grass/trunk/include/Make/Doxyfile_arch_html.in Log: dox: do not strip Doxygen comments When generating HTML for source code, do not strip Doxygen comments, so that the license stays there if in this in there. It also reduces switching in between the documentation and code. The disadvanatge is that before the code was just pure code. Modified: grass/trunk/include/Make/Doxyfile_arch_html.in =================================================================== --- grass/trunk/include/Make/Doxyfile_arch_html.in 2015-09-04 18:14:34 UTC (rev 66098) +++ grass/trunk/include/Make/Doxyfile_arch_html.in 2015-09-04 19:40:31 UTC (rev 66099) @@ -826,7 +826,7 @@ # doxygen to hide any special comment blocks from generated source code # fragments. Normal C and C++ comments will always remain visible. -STRIP_CODE_COMMENTS = YES +STRIP_CODE_COMMENTS = NO # If the REFERENCED_BY_RELATION tag is set to YES # then for each documented function all documented From svn_grass at osgeo.org Fri Sep 4 13:00:26 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Fri, 4 Sep 2015 13:00:26 -0700 Subject: [GRASS-SVN] r66100 - grass/trunk/lib/btree2 Message-ID: <20150904200026.9BE6C390151@trac.osgeo.org> Author: wenzeslaus Date: 2015-09-04 13:00:26 -0700 (Fri, 04 Sep 2015) New Revision: 66100 Added: grass/trunk/lib/btree2/btree2.dox Removed: grass/trunk/lib/btree2/README Modified: grass/trunk/lib/btree2/kdtree.h Log: dox: basic Doxygenization of btree2/kdtree docs Include text provided by mmetz in: https://lists.osgeo.org/pipermail/grass-dev/2015-January/072701.html https://lists.osgeo.org/pipermail/grass-dev/2015-January/072784.html Deleted: grass/trunk/lib/btree2/README =================================================================== --- grass/trunk/lib/btree2/README 2015-09-04 19:40:31 UTC (rev 66099) +++ grass/trunk/lib/btree2/README 2015-09-04 20:00:26 UTC (rev 66100) @@ -1,94 +0,0 @@ - -Red-Black tree -============== - -#include - -and link to BTREE2LIB - -to make use of the binary balanced (Red-Black) search tree - -NOTE: duplicates are not supported - -see also grass/rbtree.h for instructions on how to use it - -/* custom compare function */ -int my_compare_fn(const void *a, const void *b) -{ - if ((mydatastruct *) a < (mydatastruct *) b) - return -1; - else if ((mydatastruct *) a > (mydatastruct *) b) - return 1; - else if ((mydatastruct *) a == (mydatastruct *) b) - return 0; -} - -/* create and initialize tree: */ -struct RB_TREE *mytree = rbtree_create(my_compare_fn, item_size); - -/* insert items to tree: */ - struct mydatastruct data = ; - - if (rbtree_insert(mytree, &data) == 0) - G_warning("could not insert data"); - -/* find item in tree: */ - struct mydatastruct data = ; - - if (rbtree_find(mytree, &data) == 0) - G_message("data not found"); - -/* delete item from tree: */ - struct mydatastruct data = ; - - if (rbtree_remove(mytree, &data) == 0) - G_warning("could not find data in tree"); - -/* traverse tree (get all items in tree in ascending order): */ - struct RB_TRAV trav; - - rbtree_init_trav(&trav, tree); - while ((data = rbtree_traverse(&trav)) != NULL) { - if (my_compare_fn(data, threshold_data) == 0) break; - /* do something with data */ - } - -/* get a selection of items: all data > data1 and < data2 - * start in tree where data is last smaller or first larger compared to data1 */ - struct RB_TRAV trav; - - rbtree_init_trav(&trav, tree); - data = rbtree_traverse_start(&trav, &data1); - /* do something with data */ - while ((data = rbtree_traverse(&trav)) != NULL) { - if (data > data2) break; - /* do something with data */ - } - -/* destroy tree: */ - rbtree_destroy(mytree); - -/* debug the whole tree with */ - rbtree_debug(mytree, mytree->root); - - -k-d tree -======== - -#include - -and link to BTREE2LIB - -/* create a new k-d tree, here 3D */ -struct kdtree *t = kdtree_create(3, NULL); - -/* insert items */ -for (i = 0; i < npoints; i++) - kdtree_insert(t, c, i, 1); - -/* find nearest neighbor for each point */ -for (i = 0; i < npoints; i++) - int found = kdtree_knn(t, c, &uid, &dist, 1, i); - -/* destroy the tree */ - kdtree_destroy(t); Copied: grass/trunk/lib/btree2/btree2.dox (from rev 66075, grass/trunk/lib/btree2/README) =================================================================== --- grass/trunk/lib/btree2/btree2.dox (rev 0) +++ grass/trunk/lib/btree2/btree2.dox 2015-09-04 20:00:26 UTC (rev 66100) @@ -0,0 +1,175 @@ +/*! \page btree2 btree2 library + +\tableofcontents + +Red-Black tree +============== + +Include and linking +------------------- + +To make use of the binary balanced (Red-Black) search tree include: + + #include + +and link to `BTREE2LIB` in a Makefile. + +\note + Duplicates are not supported. + +Example +------- + +Define custom compare function: + + int my_compare_fn(const void *a, const void *b) + { + if ((mydatastruct *) a < (mydatastruct *) b) + return -1; + else if ((mydatastruct *) a > (mydatastruct *) b) + return 1; + else if ((mydatastruct *) a == (mydatastruct *) b) + return 0; + } + +Create and initialize tree: + + struct RB_TREE *mytree = rbtree_create(my_compare_fn, item_size); + +Insert items to tree: + + struct mydatastruct data = ; + + if (rbtree_insert(mytree, &data) == 0) + G_warning("could not insert data"); + +Find item in tree: + + struct mydatastruct data = ; + + if (rbtree_find(mytree, &data) == 0) + G_message("data not found"); + +Delete item from tree: + + struct mydatastruct data = ; + + if (rbtree_remove(mytree, &data) == 0) + G_warning("could not find data in tree"); + +Traverse tree (get all items in tree in ascending order): + + struct RB_TRAV trav; + + rbtree_init_trav(&trav, tree); + while ((data = rbtree_traverse(&trav)) != NULL) { + if (my_compare_fn(data, threshold_data) == 0) break; + // do something with data (using C++ comments because of Doxygen) + } + +Get a selection of items: all data > data1 and < data2. +Start in tree where data is last smaller or first larger compared to data1: + + struct RB_TRAV trav; + + rbtree_init_trav(&trav, tree); + data = rbtree_traverse_start(&trav, &data1); + // do something with data + while ((data = rbtree_traverse(&trav)) != NULL) { + if (data > data2) break; + // do something with data + } + +Destroy tree: + + rbtree_destroy(mytree); + +Debug the whole tree with: + + rbtree_debug(mytree, mytree->root); + +See also \ref rbtree.h for more instructions on how to use it. + + +k-d tree +======== + +Description +----------- + +k-d tree is a multidimensional (k-dimensional) binary search tree for +nearest neighbor search. + +This k-d tree finds the exact nearest neighbor(s), not some +approximation. It supports up to 255 dimensions. It is dynamic, i.e. +points can be inserted and removed at any time. It is balanced to +improve search performance. It provides k nearest neighbor search +(find k neighbors to a given coordinate) as well as radius or distance +search (find all neighbors within radius, i.e. not farther away than +radius to a given coordinate). + + +Include and linking +------------------- + +Include: + + #include + +and link to `BTREE2LIB` in a Makefile. + + +Example +------- + +Create a new k-d tree (here 3D): + + struct kdtree *t = kdtree_create(3, NULL); + +Insert items: + + for (i = 0; i < npoints; i++) + kdtree_insert(t, c, i, 1); + +Find nearest neighbor for each point: + + for (i = 0; i < npoints; i++) + int found = kdtree_knn(t, c, &uid, &dist, 1, i); + +Destroy the tree: + + kdtree_destroy(t); + + +Example usages +-------------- + +- Nearest neighbor statistics: test if points are randomly + distributed. For example, an older version of GRASS addon `v.nnstat` + used an external k-d tree from PCL (which in turn uses flann) + which finds the approximate, not the exact nearest neighbor. + The GRASS-native k-d tree always finds the real nearest neighbor. + +- Spatial cluster analysis: a point cloud can be partitioned into + separate clusters where points within each cluster are closer to each + other than to points of another cluster. For example, as used in + \gmod{v.cluster}. + +- %Point cloud thinning: a sample can be generated from a large point + cloud by specifying a minimum distance between sample points. + +- This k-d tree is used by \gmod{v.clean} `tool=snap` (Vect_snap_lines()), + reducing both memory consumption and processing time. + + +See also +======== + +- \ref rbtree.h +- \ref kdtree.h +- \ref rtree.h +- \ref btree.h +- [Wikipedia article on Red-black_tree](https://en.wikipedia.org/wiki/Red-black_tree) +- [Wikipedia article on k-d tree](https://en.wikipedia.org/wiki/K-d_tree) + +*/ Modified: grass/trunk/lib/btree2/kdtree.h =================================================================== --- grass/trunk/lib/btree2/kdtree.h 2015-09-04 19:40:31 UTC (rev 66099) +++ grass/trunk/lib/btree2/kdtree.h 2015-09-04 20:00:26 UTC (rev 66100) @@ -1,152 +1,173 @@ /*! - * \file kdtree.c + * \file kdtree.h * - * \brief binary search tree + * \brief Dynamic balanced k-d tree implementation * - * Dynamic balanced k-d tree implementation + * k-d tree is a multidimensional (k-dimensional) binary search tree for + * nearest neighbor search and is part of \ref btree2. * + * Copyright and license: + * * (C) 2014 by the GRASS Development Team * * This program is free software under the GNU General Public License * (>=v2). Read the file COPYING that comes with GRASS for details. * * \author Markus Metz - */ - -/*********************************************************************** - * k-d tree: - * multidimensional binary search tree for nearest neighbor search - * + * + * \par References * Bentley, J. L. (1975). "Multidimensional binary search trees used for * associative searching". Communications of the ACM 18 (9): 509. * doi:10.1145/361002.361007 + * + * \par Features + * - This k-d tree is a dynamic tree: + * elements can be inserted and removed any time. + * - This k-d tree is balanced: + * subtrees have a similar depth (the difference in subtrees' depths is + * not allowed to be larger than the balancing tolerance). + * + * Here is a structure of basic usage: + * + * Create a new k-d tree: + * + * kdtree_create(...); + * + * Insert points into the tree: + * + * kdtree_insert(...); + * + * Optionally optimize the tree: * - * This k-d tree is a dynamic tree: - * elements can be inserted and removed any time - * - * this k-d tree is balanced: - * subtrees have a similar depth (the difference in subtrees' depths is - * not allowed to be larger than the balancing tolerance) - * - * USAGE: - * create a new k-d tree - * kdtree_create(); - * - * insert points into the tree - * kdtree_insert(); - * - * optionally optimize the tree: - * kdtre_optimize - * - * search k nearest neighbours - * kdtree_knn(); - * - * search all neighbors in radius - * kdtree_dnn(); - * - * destroy the tree: - * kdtree_destroy(); - * - ***********************************************************************/ + * kdtree_optimize(...); + * + * Search k nearest neighbors: + * + * kdtree_knn(...); + * + * Search all neighbors in radius: + * + * kdtree_dnn(...); + * + * Destroy the tree: + * + * kdtree_destroy(...); + * + * \todo + * Doxygen ignores comment for last parameter after `);`. + * The parameter description now goes to the end of function description. + * + * \todo + * Include formatting to function descriptions. + */ +/*! + * \brief Node for k-d tree + */ struct kdnode { - unsigned char dim; /* split dimension of this node */ - unsigned char depth; /* depth at this node */ - double *c; /* coordinates */ - int uid; /* unique id of this node */ - struct kdnode *child[2]; /* link to children: link[0] for smaller, link[1] for larger */ + unsigned char dim; /*!< split dimension of this node */ + unsigned char depth; /*!< depth at this node */ + double *c; /*!< coordinates */ + int uid; /*!< unique id of this node */ + struct kdnode *child[2]; /*!< link to children: `[0]` for smaller, `[1]` for larger */ }; +/*! + * \brief k-d tree + */ struct kdtree { - unsigned char ndims; /* number of dimensions */ - unsigned char *nextdim; /* split dimension of child nodes */ - int csize; /* size of coordinates in bytes */ - int btol; /* balancing tolerance */ - size_t count; /* number of items in the tree */ - struct kdnode *root; /* tree root */ + unsigned char ndims; /*!< number of dimensions */ + unsigned char *nextdim; /*!< split dimension of child nodes */ + int csize; /*!< size of coordinates in bytes */ + int btol; /*!< balancing tolerance */ + size_t count; /*!< number of items in the tree */ + struct kdnode *root; /*!< tree root */ }; +/*! + * \brief k-d tree traversal + */ struct kdtrav { - struct kdtree *tree; /* tree being traversed */ - struct kdnode *curr_node; /* current node */ - struct kdnode *up[256]; /* stack of parent nodes */ - int top; /* index for stack */ - int first; /* little helper flag */ + struct kdtree *tree; /*!< tree being traversed */ + struct kdnode *curr_node; /*!< current node */ + struct kdnode *up[256]; /*!< stack of parent nodes */ + int top; /*!< index for stack */ + int first; /*!< little helper flag */ }; -/* creae a new k-d tree */ -struct kdtree *kdtree_create(char ndims, /* number of dimensions */ - int *btol); /* optional balancing tolerance */ +/*! creae a new k-d tree */ +struct kdtree *kdtree_create(char ndims, /*!< number of dimensions */ + int *btol); /*!< optional balancing tolerance */ -/* destroy a tree */ +/*! destroy a tree */ void kdtree_destroy(struct kdtree *t); -/* clear a tree, removing all entries */ +/*! clear a tree, removing all entries */ void kdtree_clear(struct kdtree *t); -/* insert an item (coordinates c and uid) into the k-d tree */ -int kdtree_insert(struct kdtree *t, /* k-d tree */ - double *c, /* coordinates */ - int uid, /* the point's unique id */ - int dc); /* allow duplicate coordinates */ +/*! insert an item (coordinates c and uid) into the k-d tree */ +int kdtree_insert(struct kdtree *t, /*!< k-d tree */ + double *c, /*!< coordinates */ + int uid, /*!< the point's unique id */ + int dc); /*!< allow duplicate coordinates */ -/* remove an item from the k-d tree +/*! remove an item from the k-d tree * coordinates c and uid must match */ -int kdtree_remove(struct kdtree *t, /* k-d tree */ - double *c, /* coordinates */ - int uid); /* the point's unique id */ +int kdtree_remove(struct kdtree *t, /*!< k-d tree */ + double *c, /*!< coordinates */ + int uid); /*!< the point's unique id */ -/* find k nearest neighbors +/*! find k nearest neighbors * results are stored in uid (uids) and d (squared distances) * optionally an uid to be skipped can be given * useful when searching for the nearest neighbors of an item * that is also in the tree */ -int kdtree_knn(struct kdtree *t, /* k-d tree */ - double *c, /* coordinates */ - int *uid, /* unique ids of the neighbors */ - double *d, /* squared distances to the neighbors */ - int k, /* number of neighbors to find */ - int *skip); /* unique id to skip */ +int kdtree_knn(struct kdtree *t, /*!< k-d tree */ + double *c, /*!< coordinates */ + int *uid, /*!< unique ids of the neighbors */ + double *d, /*!< squared distances to the neighbors */ + int k, /*!< number of neighbors to find */ + int *skip); /*!< unique id to skip */ -/* find all nearest neighbors within distance aka radius search +/*! find all nearest neighbors within distance aka radius search * results are stored in puid (uids) and pd (squared distances) * memory is allocated as needed, the calling fn must free the memory * optionally an uid to be skipped can be given */ -int kdtree_dnn(struct kdtree *t, /* k-d tree */ - double *c, /* coordinates */ - int **puid, /* unique ids of the neighbors */ - double **pd, /* squared distances to the neighbors */ - double maxdist, /* radius to search around the given coordinates */ - int *skip); /* unique id to skip */ +int kdtree_dnn(struct kdtree *t, /*!< k-d tree */ + double *c, /*!< coordinates */ + int **puid, /*!< unique ids of the neighbors */ + double **pd, /*!< squared distances to the neighbors */ + double maxdist, /*!< radius to search around the given coordinates */ + int *skip); /*!< unique id to skip */ -/* find all nearest neighbors within range aka box search +/*! find all nearest neighbors within range aka box search * the range is specified with min and max for each dimension as * (min1, min2, ..., minn, max1, max2, ..., maxn) * results are stored in puid (uids) and pd (squared distances) * memory is allocated as needed, the calling fn must free the memory * optionally an uid to be skipped can be given */ -int kdtree_rnn(struct kdtree *t, /* k-d tree */ - double *c, /* coordinates for range */ - int **puid, /* unique ids of the neighbors */ - int *skip); /* unique id to skip */ +int kdtree_rnn(struct kdtree *t, /*!< k-d tree */ + double *c, /*!< coordinates for range */ + int **puid, /*!< unique ids of the neighbors */ + int *skip); /*!< unique id to skip */ -/* k-d tree optimization, only useful if the tree will be heavily used +/*! k-d tree optimization, only useful if the tree will be heavily used * (more searches than items in the tree) * level 0 = a bit, 1 = more, 2 = a lot */ -void kdtree_optimize(struct kdtree *t, /* k-d tree */ - int level); /* optimization level */ +void kdtree_optimize(struct kdtree *t, /*!< k-d tree */ + int level); /*!< optimization level */ -/* initialize tree traversal +/*! initialize tree traversal * (re-)sets trav structure * returns 0 */ int kdtree_init_trav(struct kdtrav *trav, struct kdtree *tree); -/* traverse the tree +/*! traverse the tree * useful to get all items in the tree non-recursively * struct kdtrav *trav needs to be initialized first * returns 1, 0 when finished From svn_grass at osgeo.org Fri Sep 4 14:28:04 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Fri, 4 Sep 2015 14:28:04 -0700 Subject: [GRASS-SVN] r66101 - in grass-addons/grass7: imagery/i.spec.sam imagery/i.spec.unmix vector/v.kriging vector/v.nnstat Message-ID: <20150904212804.48769390151@trac.osgeo.org> Author: wenzeslaus Date: 2015-09-04 14:28:04 -0700 (Fri, 04 Sep 2015) New Revision: 66101 Modified: grass-addons/grass7/imagery/i.spec.sam/global.h grass-addons/grass7/imagery/i.spec.unmix/global.h grass-addons/grass7/vector/v.kriging/local_proto.h grass-addons/grass7/vector/v.nnstat/local_proto.h Log: remove unnecessary includes of la.h header At least since r10170, la.h is conditionally included as part of gmath.h if BLAS and LAPAK are available. In this way, one gets compile error rather than a link error if GRASS is not configured --with-blas and --with-lapack. Modified: grass-addons/grass7/imagery/i.spec.sam/global.h =================================================================== --- grass-addons/grass7/imagery/i.spec.sam/global.h 2015-09-04 20:00:26 UTC (rev 66100) +++ grass-addons/grass7/imagery/i.spec.sam/global.h 2015-09-04 21:28:04 UTC (rev 66101) @@ -4,7 +4,6 @@ #include #include #include -#include #ifndef GLOBAL #define GLOBAL extern Modified: grass-addons/grass7/imagery/i.spec.unmix/global.h =================================================================== --- grass-addons/grass7/imagery/i.spec.unmix/global.h 2015-09-04 20:00:26 UTC (rev 66100) +++ grass-addons/grass7/imagery/i.spec.unmix/global.h 2015-09-04 21:28:04 UTC (rev 66101) @@ -4,7 +4,6 @@ #include #include #include -#include #ifndef GLOBAL #define GLOBAL extern Modified: grass-addons/grass7/vector/v.kriging/local_proto.h =================================================================== --- grass-addons/grass7/vector/v.kriging/local_proto.h 2015-09-04 20:00:26 UTC (rev 66100) +++ grass-addons/grass7/vector/v.kriging/local_proto.h 2015-09-04 21:28:04 UTC (rev 66101) @@ -13,7 +13,6 @@ #include #include #include -#include #include #include #include Modified: grass-addons/grass7/vector/v.nnstat/local_proto.h =================================================================== --- grass-addons/grass7/vector/v.nnstat/local_proto.h 2015-09-04 20:00:26 UTC (rev 66100) +++ grass-addons/grass7/vector/v.nnstat/local_proto.h 2015-09-04 21:28:04 UTC (rev 66101) @@ -11,7 +11,6 @@ #include #include #include -#include #include #include From svn_grass at osgeo.org Fri Sep 4 14:43:40 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Fri, 4 Sep 2015 14:43:40 -0700 Subject: [GRASS-SVN] r66102 - in grass-addons/grass7/raster: . r.mcda.promethee Message-ID: <20150904214340.A8CDF390136@trac.osgeo.org> Author: gianluca Date: 2015-09-04 14:43:40 -0700 (Fri, 04 Sep 2015) New Revision: 66102 Added: grass-addons/grass7/raster/r.mcda.promethee/ grass-addons/grass7/raster/r.mcda.promethee/Makefile grass-addons/grass7/raster/r.mcda.promethee/local_proto.h grass-addons/grass7/raster/r.mcda.promethee/main.c grass-addons/grass7/raster/r.mcda.promethee/promethee.c grass-addons/grass7/raster/r.mcda.promethee/r.mcda.promethee.html Log: firsth implementation of mcda promethee module Added: grass-addons/grass7/raster/r.mcda.promethee/Makefile =================================================================== --- grass-addons/grass7/raster/r.mcda.promethee/Makefile (rev 0) +++ grass-addons/grass7/raster/r.mcda.promethee/Makefile 2015-09-04 21:43:40 UTC (rev 66102) @@ -0,0 +1,9 @@ +MODULE_TOPDIR = ../.. +PGM = r.mcda.promethee + +LIBES = $(RASTERLIB) $(GISLIB) $(MATHLIB) +DEPENDENCIES = $(RASTERDEP) $(GISDEP) + +include $(MODULE_TOPDIR)/include/Make/Module.make + +default: cmd Added: grass-addons/grass7/raster/r.mcda.promethee/local_proto.h =================================================================== --- grass-addons/grass7/raster/r.mcda.promethee/local_proto.h (rev 0) +++ grass-addons/grass7/raster/r.mcda.promethee/local_proto.h 2015-09-04 21:43:40 UTC (rev 66102) @@ -0,0 +1,24 @@ +#include +#include +#include +#include +#include +#include +#include +#include + + +struct input +{ + char *name, *mapset; /* input raster name and mapset name */ + int infd; + void *inrast; /* input buffer */ +}; + +void build_weight_vect(int ncriteria, struct Option *weight, + double *weight_vect); + +void build_flow_matrix(int nrows, int ncols, int ncriteria, + double *weight_vect, double ***decision_vol, + double ***positive_flow_vol, double ***negative_flow_vol); + Added: grass-addons/grass7/raster/r.mcda.promethee/main.c =================================================================== --- grass-addons/grass7/raster/r.mcda.promethee/main.c (rev 0) +++ grass-addons/grass7/raster/r.mcda.promethee/main.c 2015-09-04 21:43:40 UTC (rev 66102) @@ -0,0 +1,260 @@ +/**************************************************************************** + * + * MODULE: r.mcda.promethee + * AUTHORS: Gianluca Massei (g_massa at libero.it) - Antonio Boggia (boggia at unipg.it) + * + * PURPOSE: Make a multicriteria decision analysis based on PROMETHEE algorithm, + * with concordance and discordance indexes maps + * + * COPYRIGHT: (C) GRASS Development Team (2015) + * + * This program is free software under the GNU General Public + * License (>=v2). Read the file COPYING that comes with GRASS + * for details. + * + *****************************************************************************/ + + + +#include +#include +#include +#include +#include +#include +#include "local_proto.h" + +/* + * main function + */ +int main(int argc, char *argv[]) +{ + struct Cell_head cellhd; /* it stores region information, and header information of rasters */ + char *result_positive_flow, *result_negative_flow, *result_netflow; /* outputs raster name */ + /*char *mapset; mapset name */ + unsigned char *outrast_positive_flow, *outrast_negative_flow, *outrast_netflow; /* output buffer */ + int i,j, ncriteria=0; /* index and files number*/ + int nrows, ncols; + int row1, col1; + int outfd_positive_flow, outfd_negative_flow, outfd_netflow; /* output file descriptor */ + /*RASTER_MAP_TYPE data_type; type of the map (CELL/DCELL/...) */ + double *weight_vect, ***decision_vol, ***positive_flow_vol, ***negative_flow_vol;/* vector and matrix */ + + + struct History history; /* holds meta-data (title, comments,..) */ + + struct GModule *module; /* GRASS module for parsing arguments */ + + struct Option *criteria, *weight, *positiveflow, *negativeflow, *netflow; /* options */ + + struct input *attributes; /*storage alla input criteria GRID files and output concordance and discordance GRID files*/ + + + /* initialize GIS environment */ + G_gisinit(argv[0]); /* reads grass env, stores program name to G_program_name() */ + + /* initialize module */ + module = G_define_module(); + G_add_keyword(_("raster,MCDA")); + module->description = _("Multicirtieria decision analysis based on PROMETHEE method"); + + /* Define the different options as defined in gis.h */ + criteria = G_define_option(); /* Allocates memory for the Option structure and returns a pointer to this memory*/ + criteria->key = "criteria"; + criteria->type = TYPE_STRING; + criteria->required = YES; + criteria->multiple = YES; + criteria->gisprompt = "old,cell,raster" ; + criteria->description = "Input geographics criteria in information system"; + + weight = G_define_option(); /* Allocates memory for the Option structure and returns a pointer to this memory*/ + weight->key = "weight"; + weight->type = TYPE_DOUBLE; + weight->required = YES; + weight->multiple = YES; + weight->description = _("Criteria weight(s) (w1,w2,..,wn)"); + + positiveflow = G_define_option(); /* Allocates memory for the Option structure and returns a pointer to this memory */ + positiveflow->key = "positiveflow"; + positiveflow->type = TYPE_STRING; + positiveflow->required = YES; + positiveflow->gisprompt = "new,cell,raster"; + positiveflow->answer ="positiveflow"; + positiveflow->description = "positive flow output map"; + + negativeflow = G_define_option(); /* Allocates memory for the Option structure and returns a pointer to this memory */ + negativeflow->key = "negativeflow"; + negativeflow->type = TYPE_STRING; + negativeflow->required = YES; + negativeflow->gisprompt = "new,cell,raster"; + negativeflow->answer ="negativeflow"; + negativeflow->description = "negative flow output map"; + + netflow = G_define_option(); /* Allocates memory for the Option structure and returns a pointer to this memory */ + netflow->key = "netflow"; + netflow->type = TYPE_STRING; + netflow->required = YES; + netflow->gisprompt = "new,cell,raster"; + netflow->answer ="netflow"; + netflow->description = "net flow output map"; + + /* options and flags parser */ + if (G_parser(argc, argv)) + exit(EXIT_FAILURE); + + + G_message("Start: %s",G_date()); /*write calculation start time*/ + + /* number of file (=criteria) */ + while (criteria->answers[ncriteria]!=NULL) + { + ncriteria++; + } + + /* process the input maps: stores options and flags to variables */ + /* CRITERIA grid */ + attributes = G_malloc(ncriteria * sizeof(struct input)); /*attributes is input struct defined in top file and store alla criteria files*/ + weight_vect=G_malloc(ncriteria * sizeof(double)); /*allocate memory fron vector weight*/ + + + + build_weight_vect(ncriteria,weight,weight_vect); /*calcolate weight vector*/ + + + + for (i = 0; i < ncriteria; i++) + { + struct input *p = &attributes[i]; + p->name = criteria->answers[i]; + p->mapset = (char *) G_find_raster2(p->name,""); /* Looks for the raster map "name" in the database. */ + if (p->mapset==NULL) /* returns NULL if the map was not found in any mapset, mapset name otherwise */ + G_fatal_error(_("Raster file <%s> not found"), p->name); + + + /* determine the inputmap type (CELL/FCELL/DCELL) */ + /* data_type = Rast_map_type(p->name, p->mapset);*/ + + if ((p->infd = Rast_open_old(p->name, p->mapset))<0) /* Rast_open_cell_old - returns file destriptor (>0) */ + G_fatal_error(_("Unable to open input map <%s> in mapset <%s>"),p->name, p->mapset); + + Rast_get_cellhd(p->name,p->mapset,&cellhd);/* controlling, if we can open input raster */ + G_debug(3, "number of rows %d", cellhd.rows); + + p->inrast = Rast_allocate_buf(DCELL_TYPE); /* Allocate an array of DCELL based on the number of columns in the current region. Return DCELL */ + } + + result_positive_flow=positiveflow->answer; /* store output name in variables*/ + result_negative_flow=negativeflow->answer; + result_netflow=netflow->answer; + + + if (G_legal_filename(result_positive_flow) < 0) /* check for legal database file names */ + G_fatal_error(_("<%s> is an illegal file name"), result_positive_flow); + + if (G_legal_filename(result_negative_flow) < 0) /* check for legal database file names */ + G_fatal_error(_("<%s> is an illegal file name"), result_negative_flow); + + if (G_legal_filename(result_netflow) < 0) /* check for legal database file names */ + G_fatal_error(_("<%s> is an illegal file name"), result_netflow); + + /*values = G_malloc(ncriteria * sizeof(DCELL));*/ + + nrows = Rast_window_rows(); + ncols = Rast_window_cols(); + + /*memory allocation for-three dimensional matrix*/ + decision_vol=G_malloc(nrows * sizeof(double*)); + positive_flow_vol=G_malloc(nrows * sizeof(double*)); + negative_flow_vol=G_malloc(nrows * sizeof(double*)); + + for (i=0; i row %d"), criteria->answers[i], row);*/ + for (col1 = 0; col1 < ncols; col1++) + { + /* viene letto il valore di cella e lo si attribuisce ad una variabile di tipo DCELL e poi ad un array*/ + DCELL v1 = ((DCELL *)attributes[i].inrast)[col1]; + decision_vol[row1][col1][i]=(double)(v1); + G_message("row: %d",row1); + + } + } + } + + + build_flow_matrix(nrows,ncols,ncriteria,weight_vect,decision_vol,positive_flow_vol, negative_flow_vol); /*scan all DCELL, make a pairwise comparatione, buil positive flow matrix*/ + + + for (row1 = 0; row1 < nrows; row1++) + { + for (col1 = 0; col1 < ncols; col1++) + { + ((DCELL *) outrast_positive_flow)[col1] = (DCELL)positive_flow_vol[row1][col1][ncriteria];/*write positive flow map*/ + ((DCELL *) outrast_negative_flow)[col1] = (DCELL)negative_flow_vol[row1][col1][ncriteria];/*write negative flow map*/ + } + Rast_put_row(outfd_positive_flow, outrast_positive_flow, DCELL_TYPE); + Rast_put_row(outfd_negative_flow, outrast_negative_flow, DCELL_TYPE); + } + + + G_message("End: %s",G_date()); + + /* memory cleanup */ + for (i = 0; ianswers[nweight] != NULL) + { + nweight++; + } + + + if (nweight != ncriteria) + G_fatal_error(_("criteria number and weight number are different")); + + + for (i = 0; i < nweight; i++) + { + weight_vect[i] = (atof(weight->answers[i])); /*transfer weight value in double array */ + weight_sum = weight_sum + weight_vect[i]; /*calculate sum weight */ + } + + for (i = 0; i < nweight; i++) + { + weight_vect[i] = weight_vect[i] / weight_sum; /*normalize vector weight */ + + } + +} + + +void build_flow_matrix(int nrows, int ncols, int ncriteria, + double *weight_vect, double ***decision_vol, + double ***positive_flow_vol, double ***negative_flow_vol) +{ + int row1, col1, row2, col2; + int i; + double threshold; + +/* make pairwise comparation and build positive flow matrix */ + for (i = 0; i < ncriteria; i++) + { + G_percent(i, (nrows*ncriteria), 2); + for (row1 = 0; row1 < nrows; row1++) + { + for (col1 = 0; col1 < ncols; col1++) + { + for (row2 = 0; row2 < nrows; row2++) + { + for (col2 = 0; col2 < ncols; col2++) + { + threshold = (decision_vol[row1][col1][i] - decision_vol[row2][col2][i]); + if (threshold>0) + { + positive_flow_vol[row1][col1][i]=threshold*weight_vect[i]; + negative_flow_vol[row1][col1][i]=0; + } + else + { + positive_flow_vol[row1][col1][i]=0; + negative_flow_vol[row1][col1][i]=threshold*weight_vect[i]; + } + } + } + } + } + } + + /*storage preference value in decision_vol */ + for (row1 = 0; row1 < nrows; row1++) + { + G_percent(row1, nrows, 2); + for (col1 = 0; col1 < ncols; col1++) + { + for ( i=0; iDESCRIPTION + +r.mcda.electre is the implementation of the ELECTRE multicriteria +algorithm in GRASS GIS environment. It is one of the available tools in the +r.mcda suite. It requires as an input the list of raster representing the +criteria to be assessed in the multicriteria evaluation and the vector of +weights to be assigned. Every single cell of the GRASS region is considered +as one of the possible alternatives to evaluate and it is described with +the value assumed for the same cell by the raster used as criteria. There +are two output files. One represents the spatial distribution of the +concordance index, the other one of the discordance index. The optimal +solution is the one presenting the maximum concordance value and the minimum +discordance value at the same time. + + +

    NOTES

    +The module does not standardize the raster-criteria. Therefore, they must +be prepared before by using, for example, r.mapcalc. The weights vector +is always normalized so that the sum of the weights is 1. + +

    CITE AS

    +

    Massei, G., Rocchi, L., Paolotti, L., Greco, S., & Boggia, +Decision Support Systems for environmental management: +A case study on wastewater from agriculture, Journal of Environmental Management, +Volume 146, 15 December 2014, Pages 491-504, ISSN 0301-4797

    + + + +

    REFERENCE

    +

    Roy, B. (1971) Problem and methods with multiple objective functions + Mathematical programming 1, 239-266.

    +

    Roy, B. (1990): The outranking approach and the foundations of Electre + methods , Document du LAMSADE, Paris.

    +

    Janssen R. (1994) - Multiobjective decision support for environmental + management, Kluwer Academic Publishers.

    +

    GRASS Development Team (2015)

    + +

    SEE ALSO

    +r.mcda.fuzzy, r.mcda.regime, r.mcda.roughet, r.mapcalc + +

    AUTHORS

    +Antonio Boggia - Gianluca Massei
    +Department of Economics and Appraisal - University of Perugia - Italy + + +

    +Last changed: $Date: 2012-12-04 19:08:17 +0100 (mar, 04 dic 2012) $ From svn_grass at osgeo.org Fri Sep 4 14:44:31 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Fri, 4 Sep 2015 14:44:31 -0700 Subject: [GRASS-SVN] r66103 - grass/trunk/include Message-ID: <20150904214431.6DA7F390136@trac.osgeo.org> Author: wenzeslaus Date: 2015-09-04 14:44:31 -0700 (Fri, 04 Sep 2015) New Revision: 66103 Modified: grass/trunk/include/gmath.h Log: no G2C necessary for la.h This finishes incomplete r54193 and is necessary after r66101. Modified: grass/trunk/include/gmath.h =================================================================== --- grass/trunk/include/gmath.h 2015-09-04 21:43:40 UTC (rev 66102) +++ grass/trunk/include/gmath.h 2015-09-04 21:44:31 UTC (rev 66103) @@ -24,7 +24,7 @@ #define GRASS_GMATH_H #include -#if defined(HAVE_LIBLAPACK) && defined(HAVE_LIBBLAS) && defined(HAVE_G2C_H) +#if defined(HAVE_LIBLAPACK) && defined(HAVE_LIBBLAS) /* only include if available */ #include #endif From svn_grass at osgeo.org Fri Sep 4 17:41:31 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Fri, 4 Sep 2015 17:41:31 -0700 Subject: [GRASS-SVN] r66104 - in grass/trunk/lib/python/pygrass: . rpc rpc/testsuite vector Message-ID: <20150905004131.13D53390151@trac.osgeo.org> Author: huhabla Date: 2015-09-04 17:41:30 -0700 (Fri, 04 Sep 2015) New Revision: 66104 Added: grass/trunk/lib/python/pygrass/rpc/ grass/trunk/lib/python/pygrass/rpc/Makefile grass/trunk/lib/python/pygrass/rpc/__init__.py grass/trunk/lib/python/pygrass/rpc/base.py grass/trunk/lib/python/pygrass/rpc/testsuite/ grass/trunk/lib/python/pygrass/rpc/testsuite/test_doctests.py Modified: grass/trunk/lib/python/pygrass/Makefile grass/trunk/lib/python/pygrass/utils.py grass/trunk/lib/python/pygrass/vector/__init__.py Log: pygrass: Added rpc data provider that deliver WKB representations of vector maps, numpy image representations of raster maps and vector map attribute tables as dict using cats as keys. Modified: grass/trunk/lib/python/pygrass/Makefile =================================================================== --- grass/trunk/lib/python/pygrass/Makefile 2015-09-04 21:44:31 UTC (rev 66103) +++ grass/trunk/lib/python/pygrass/Makefile 2015-09-05 00:41:30 UTC (rev 66104) @@ -9,7 +9,7 @@ MODULES = errors utils orderdict -CLEAN_SUBDIRS = messages modules raster vector gis shell tests +CLEAN_SUBDIRS = messages modules raster vector gis shell tests rpc PYFILES := $(patsubst %,$(DSTDIR)/%.py,$(MODULES) __init__) PYCFILES := $(patsubst %,$(DSTDIR)/%.pyc,$(MODULES) __init__) @@ -22,6 +22,7 @@ -$(MAKE) -C gis || echo $(CURDIR)/gis >> $(ERRORLOG) -$(MAKE) -C shell || echo $(CURDIR)/shell >> $(ERRORLOG) -$(MAKE) -C tests || echo $(CURDIR)/tests >> $(ERRORLOG) + -$(MAKE) -C rpc || echo $(CURDIR)/gis >> $(ERRORLOG) $(PYDIR): $(MKDIR) $@ Added: grass/trunk/lib/python/pygrass/rpc/Makefile =================================================================== --- grass/trunk/lib/python/pygrass/rpc/Makefile (rev 0) +++ grass/trunk/lib/python/pygrass/rpc/Makefile 2015-09-05 00:41:30 UTC (rev 66104) @@ -0,0 +1,32 @@ +MODULE_TOPDIR = ../../../.. + +include $(MODULE_TOPDIR)/include/Make/Other.make +include $(MODULE_TOPDIR)/include/Make/Python.make +include $(MODULE_TOPDIR)/include/Make/Doxygen.make + +PYDIR = $(ETC)/python +GDIR = $(PYDIR)/grass +PGDIR = $(GDIR)/pygrass +DSTDIR= $(PGDIR)/rpc + +MODULES = base + +PYFILES := $(patsubst %,$(DSTDIR)/%.py,$(MODULES) __init__) +PYCFILES := $(patsubst %,$(DSTDIR)/%.pyc,$(MODULES) __init__) + +default: $(PYFILES) $(PYCFILES) $(GDIR)/__init__.py $(GDIR)/__init__.pyc + +$(PYDIR): + $(MKDIR) $@ + +$(GDIR): | $(PYDIR) + $(MKDIR) $@ + +$(DSTDIR): | $(GDIR) + $(MKDIR) $@ + +$(DSTDIR)/%: % | $(DSTDIR) + $(INSTALL_DATA) $< $@ + +#doxygen: +DOXNAME = pythonpygrass Added: grass/trunk/lib/python/pygrass/rpc/__init__.py =================================================================== --- grass/trunk/lib/python/pygrass/rpc/__init__.py (rev 0) +++ grass/trunk/lib/python/pygrass/rpc/__init__.py 2015-09-05 00:41:30 UTC (rev 66104) @@ -0,0 +1,424 @@ +# -*- coding: utf-8 -*- +""" +Fast and exit-safe interface to PyGRASS Raster and Vector layer +using multiprocessing + +(C) 2015 by the GRASS Development Team +This program is free software under the GNU General Public +License (>=v2). Read the file COPYING that comes with GRASS +for details. + +:authors: Soeren Gebbert +""" + +import time +import threading +import sys +from multiprocessing import Process, Lock, Pipe +from ctypes import * + +from grass.exceptions import FatalError +from grass.pygrass.vector import * +from grass.pygrass.raster import * +import grass.lib.gis as libgis +from base import RPCServerBase +from grass.pygrass.gis.region import Region +import logging + +############################################################################### +############################################################################### + +class RPCDefs(object): + # Function identifier and index + STOP = 0 + GET_VECTOR_TABLE_AS_DICT = 1 + GET_VECTOR_FEATURES_AS_WKB = 2 + GET_RASTER_IMAGE_AS_NP = 3 + G_FATAL_ERROR = 14 + + +def _get_raster_image_as_np(lock, conn, data): + """Convert a raster map into an image and return + a numpy array with RGB or Gray values. + + :param lock: A multiprocessing.Lock instance + :param conn: A multiprocessing.Pipe instance used to send True or False + :param data: The list of data entries [function_id, raster_name, extent, color] + """ + raster_name = data[1] + extent = data[2] + color = data[3] + + rast = RasterRow(raster_name) + array = None + + if rast.exist(): + + reg = Region() + reg.from_rast(raster_name) + + if extent is not None: + if "north" in extent: + reg.north = extent["north"] + if "south" in extent: + reg.south = extent["south"] + if "east" in extent: + reg.east = extent["east"] + if "west" in extent: + reg.west = extent["west"] + if "rows" in extent: + reg.rows = extent["rows"] + if "cols" in extent: + reg.cols = extent["cols"] + reg.adjust() + + array = raster2numpy_img(raster_name, reg, color) + + conn.send(array) + +def _get_vector_table_as_dict(lock, conn, data): + """Get the table of a vector map layer as dictionary + + The value to be send via pipe is True in case the map exists and False + if not. + + :param lock: A multiprocessing.Lock instance + :param conn: A multiprocessing.Pipe instance used to send True or False + :param data: The list of data entries [function_id, name, where] + + """ + name = data[1] + where = data[2] + layer = VectorTopo(name) + ret = None + + if layer.exist() is True: + layer.open("r") + columns = None + table = None + if layer.table is not None: + columns = layer.table.columns + table = layer.table_to_dict(where=where) + layer.close() + + ret = {} + ret["table"] = table + ret["columns"] = columns + + conn.send(ret) + +def _get_vector_features_as_wkb_list(lock, conn, data): + """Return vector layer features as wkb list + + supported feature types: + point, centroid, line, boundary, area + + The value to be send via pipe is True in case the map exists and False + if not. + + :param lock: A multiprocessing.Lock instance + :param conn: A multiprocessing.Pipe instance used to send True or False + :param data: The list of data entries [function_id,name,extent, + feature_type, field] + + """ + name = data[1] + extent = data[2] + feature_type = data[3] + field = data[4] + + wkb_list = None + bbox = None + + layer = VectorTopo(name) + + try: + if layer.exist() is True: + if extent is not None: + bbox = basic.Bbox(north=extent["north"], + south=extent["south"], + east=extent["east"], + west=extent["west"]) + logging.warning(str(bbox)) + layer.open("r") + if feature_type.lower() == "area": + wkb_list = layer.areas_to_wkb_list(bbox=bbox, field=field) + else: + wkb_list = layer.features_to_wkb_list(bbox=bbox, + feature_type=feature_type, + field=field) + layer.close() + except Exception, e: + print(e) + + conn.send(wkb_list) + +############################################################################### + +def _fatal_error(lock, conn, data): + """Calls G_fatal_error()""" + libgis.G_fatal_error("Fatal Error in C library server") + + +############################################################################### + +def _stop(lock, conn, data): + conn.close() + lock.release() + sys.exit() + +############################################################################### + +def data_provider_server(lock, conn): + """The PyGRASS data provider server designed to be a target for + multiprocessing.Process + + :param lock: A multiprocessing.Lock + :param conn: A multiprocessing.Pipe + """ + + def error_handler(data): + """This function will be called in case of a fatal error in libgis""" + #sys.stderr.write("Error handler was called\n") + # We send an exeption that will be handled in + # the parent process, then close the pipe + # and release any possible lock + conn.send(FatalError()) + conn.close() + lock.release() + + CALLBACK = CFUNCTYPE(c_void_p, c_void_p) + CALLBACK.restype = c_void_p + CALLBACK.argtypes = c_void_p + + cerror_handler = CALLBACK(error_handler) + + libgis.G_add_error_handler(cerror_handler, None) + + # Crerate the function array + functions = [0]*15 + functions[RPCDefs.GET_VECTOR_TABLE_AS_DICT] = _get_vector_table_as_dict + functions[RPCDefs.GET_VECTOR_FEATURES_AS_WKB] = _get_vector_features_as_wkb_list + functions[RPCDefs.GET_RASTER_IMAGE_AS_NP] = _get_raster_image_as_np + functions[RPCDefs.STOP] = _stop + functions[RPCDefs.G_FATAL_ERROR] = _fatal_error + + while True: + # Avoid busy waiting + conn.poll(None) + data = conn.recv() + lock.acquire() + functions[data[0]](lock, conn, data) + lock.release() + +test_vector_name="data_provider_vector_map" +test_raster_name="data_provider_raster_map" + +class DataProvider(RPCServerBase): + """Fast and exit-safe interface to PyGRASS data delivery functions + + """ + def __init__(self): + RPCServerBase.__init__(self) + + def start_server(self): + """This function must be re-implemented in the subclasses + """ + self.client_conn, self.server_conn = Pipe(True) + self.lock = Lock() + self.server = Process(target=data_provider_server, args=(self.lock, + self.server_conn)) + self.server.daemon = True + self.server.start() + + def get_raster_image_as_np(self, name, extent=None, color="RGB"): + """Return the attribute table of a vector map as dictionary. + + See documentation of: pygrass.raster.raster2numpy_img + + Usage: + + .. code-block:: python + + >>> from grass.pygrass.rpc import DataProvider + >>> provider = DataProvider() + >>> ret = provider.get_raster_image_as_np(name=test_raster_name) + >>> len(ret) + 64 + + >>> extent = {"north":30, "south":10, "east":30, "west":10, + ... "rows":2, "cols":2} + >>> ret = provider.get_raster_image_as_np(name=test_raster_name, + ... extent=extent) + >>> len(ret) + 16 + >>> ret # doctest: +ELLIPSIS +NORMALIZE_WHITESPACE + array([169, 255, 0, 255, 255, 0, 46, 255, 208, 255, + 0, 255, 255, 0, 84, 255], dtype=uint8) + + >>> extent = {"rows":3, "cols":1} + >>> ret = provider.get_raster_image_as_np(name=test_raster_name, + ... extent=extent) + >>> len(ret) + 12 + >>> ret # doctest: +ELLIPSIS +NORMALIZE_WHITESPACE + array([255, 0, 7, 255, 255, 0, 84, 255, 255, + 0, 123, 255], dtype=uint8) + >>> provider.stop() + + .. + """ + self.check_server() + self.client_conn.send([RPCDefs.GET_RASTER_IMAGE_AS_NP, + name, extent, color]) + return self.safe_receive("get_raster_image_as_np") + + def get_vector_table_as_dict(self, name, where=None): + """Return the attribute table of a vector map as dictionary. + + See documentation of: pygrass.vector.VectorTopo::table_to_dict + + Usage: + + .. code-block:: python + + >>> from grass.pygrass.rpc import DataProvider + >>> provider = DataProvider() + >>> ret = provider.get_vector_table_as_dict(name=test_vector_name) + >>> ret["table"] + {1: [1, u'point', 1.0], 2: [2, u'line', 2.0], 3: [3, u'centroid', 3.0]} + >>> ret["columns"] + Columns([(u'cat', u'INTEGER'), (u'name', u'varchar(50)'), (u'value', u'double precision')]) + >>> ret = provider.get_vector_table_as_dict(name=test_vector_name, + ... where="value > 1") + >>> ret["table"] + {2: [2, u'line', 2.0], 3: [3, u'centroid', 3.0]} + >>> ret["columns"] + Columns([(u'cat', u'INTEGER'), (u'name', u'varchar(50)'), (u'value', u'double precision')]) + >>> provider.get_vector_table_as_dict(name="no_map", + ... where="value > 1") + >>> provider.stop() + + .. + """ + self.check_server() + self.client_conn.send([RPCDefs.GET_VECTOR_TABLE_AS_DICT, + name, where]) + return self.safe_receive("get_vector_table_as_dict") + + def get_vector_features_as_wkb_list(self, name, extent=None, + feature_type="point", field=1): + """Return the features of a vector map as wkb list. + + :param extent: A dictionary of {"north":double, "south":double, + "east":double, "west":double} + :param feature_type: point, centroid, line, boundary or area + + See documentation: pygrass.vector.VectorTopo::features_to_wkb_list + pygrass.vector.VectorTopo::areas_to_wkb_list + + + Usage: + + .. code-block:: python + + >>> from grass.pygrass.rpc import DataProvider + >>> provider = DataProvider() + >>> wkb = provider.get_vector_features_as_wkb_list(name=test_vector_name, + ... extent=None, + ... feature_type="point") + >>> for entry in wkb: + ... f_id, cat, string = entry + ... print(f_id, cat, len(string)) + 1 1 21 + 2 1 21 + 3 1 21 + + >>> extent = {"north":6.6, "south":5.5, "east":14.5, "west":13.5} + >>> wkb = provider.get_vector_features_as_wkb_list(name=test_vector_name, + ... extent=extent, + ... feature_type="point") + >>> for entry in wkb: + ... f_id, cat, string = entry + ... print(f_id, cat, len(string)) + 3 1 21 + + >>> wkb = provider.get_vector_features_as_wkb_list(name=test_vector_name, + ... extent=None, + ... feature_type="line") + >>> for entry in wkb: + ... f_id, cat, string = entry + ... print(f_id, cat, len(string)) + 4 2 57 + 5 2 57 + 6 2 57 + + + >>> wkb = provider.get_vector_features_as_wkb_list(name=test_vector_name, + ... extent=None, + ... feature_type="centroid") + >>> for entry in wkb: + ... f_id, cat, string = entry + ... print(f_id, cat, len(string)) + 19 3 21 + 18 3 21 + 20 3 21 + 21 3 21 + + >>> wkb = provider.get_vector_features_as_wkb_list(name=test_vector_name, + ... extent=None, + ... feature_type="area") + >>> for entry in wkb: + ... f_id, cat, string = entry + ... print(f_id, cat, len(string)) + 1 3 225 + 2 3 141 + 3 3 93 + 4 3 141 + + >>> wkb = provider.get_vector_features_as_wkb_list(name=test_vector_name, + ... extent=None, + ... feature_type="boundary") + >>> for entry in wkb: + ... f_id, cat, string = entry + ... print(f_id, cat, len(string)) + 10 None 41 + 7 None 41 + 8 None 41 + 9 None 41 + 11 None 89 + 12 None 41 + 14 None 41 + 13 None 41 + 17 None 41 + 15 None 41 + 16 None 41 + + >>> provider.stop() + + .. + """ + self.check_server() + self.client_conn.send([RPCDefs.GET_VECTOR_FEATURES_AS_WKB, + name, extent, feature_type, field]) + return self.safe_receive("get_vector_features_as_wkb_list") + + +if __name__ == "__main__": + import doctest + from grass.pygrass import utils + from grass.pygrass.modules import Module + Module("g.region", n=40, s=0, e=40, w=0, res=10) + Module("r.mapcalc", expression="%s = row() + (10 * col())"%(test_raster_name), + overwrite=True) + utils.create_test_vector_map(test_vector_name) + + doctest.testmod() + + """Remove the generated maps, if exist""" + mset = utils.get_mapset_raster(test_raster_name, mapset='') + if mset: + Module("g.remove", flags='f', type='raster', name=test_raster_name) + mset = utils.get_mapset_vector(test_vector_name, mapset='') + if mset: + Module("g.remove", flags='f', type='vector', name=test_vector_name) Added: grass/trunk/lib/python/pygrass/rpc/base.py =================================================================== --- grass/trunk/lib/python/pygrass/rpc/base.py (rev 0) +++ grass/trunk/lib/python/pygrass/rpc/base.py 2015-09-05 00:41:30 UTC (rev 66104) @@ -0,0 +1,184 @@ +# -*- coding: utf-8 -*- +""" +Fast and exit-safe interface to PyGRASS Raster and Vector layer +using multiprocessing + +(C) 2015 by the GRASS Development Team +This program is free software under the GNU General Public +License (>=v2). Read the file COPYING that comes with GRASS +for details. + +:authors: Soeren Gebbert +""" + +from grass.exceptions import FatalError +import time +import threading +import sys +from multiprocessing import Process, Lock, Pipe +import logging + +############################################################################### + +def dummy_server(lock, conn): + """Dummy server process + + :param lock: A multiprocessing.Lock + :param conn: A multiprocessing.Pipe + """ + + while True: + # Avoid busy waiting + conn.poll(None) + data = conn.recv() + lock.acquire() + if data[0] == 0: + conn.close() + lock.release() + sys.exit() + if data[0] == 1: + raise Exception("Server process intentionally killed by exception") + lock.release() + +class RPCServerBase(object): + """This is the base class for send and receive RPC server + It uses a Pipe for IPC. + + + >>> import grass.script as gscript + >>> from grass.pygrass.rpc.base import RPCServerBase + >>> provider = RPCServerBase() + + >>> provider.is_server_alive() + True + + >>> provider.is_check_thread_alive() + True + + >>> provider.stop() + >>> provider.is_server_alive() + False + + >>> provider.is_check_thread_alive() + False + + >>> provider = RPCServerBase() + >>> provider.is_server_alive() + True + >>> provider.is_check_thread_alive() + True + + Kill the server process with an exception, it should restart + + >>> provider.client_conn.send([1]) + >>> provider.is_server_alive() + True + + >>> provider.is_check_thread_alive() + True + + """ + + def __init__(self): + self.client_conn = None + self.server_conn = None + self.queue = None + self.server = None + self.checkThread = None + self.threadLock = threading.Lock() + self.start_server() + self.start_checker_thread() + self.stopThread = False + + def is_server_alive(self): + return self.server.is_alive() + + def is_check_thread_alive(self): + return self.checkThread.is_alive() + + def start_checker_thread(self): + if self.checkThread is not None and self.checkThread.is_alive(): + self.stop_checker_thread() + + self.checkThread = threading.Thread(target=self.thread_checker) + self.checkThread.daemon = True + self.stopThread = False + self.checkThread.start() + + def stop_checker_thread(self): + self.threadLock.acquire() + self.stopThread = True + self.threadLock.release() + self.checkThread.join(None) + + def thread_checker(self): + """Check every 200 micro seconds if the server process is alive""" + while True: + time.sleep(0.2) + #sys.stderr.write("Check server process\n") + self._check_restart_server() + self.threadLock.acquire() + if self.stopThread == True: + #sys.stderr.write("Stop thread\n") + self.threadLock.release() + return + self.threadLock.release() + + def start_server(self): + """This function must be re-implemented in the subclasses + """ + self.client_conn, self.server_conn = Pipe(True) + self.lock = Lock() + self.server = Process(target=dummy_server, args=(self.lock, + self.server_conn)) + self.server.daemon = True + self.server.start() + + def check_server(self): + self._check_restart_server() + + def _check_restart_server(self): + """Restart the server if it was terminated + """ + self.threadLock.acquire() + if self.server.is_alive() is True: + self.threadLock.release() + return + self.client_conn.close() + self.server_conn.close() + self.start_server() + + logging.warning("Needed to restart the libgis server") + + self.threadLock.release() + + def safe_receive(self, message): + """Receive the data and throw an FatalError exception in case the server + process was killed and the pipe was closed by the checker thread""" + try: + ret = self.client_conn.recv() + if isinstance(ret, FatalError): + raise FatalError() + return ret + except (EOFError, IOError, FatalError): + # The pipe was closed by the checker thread because + # the server process was killed + raise FatalError(message) + + def stop(self): + """Stop the check thread, the libgis server and close the pipe + + This method should be called at exit using the package atexit + """ + #sys.stderr.write("###### Stop was called\n") + self.stop_checker_thread() + if self.server is not None and self.server.is_alive(): + self.client_conn.send([0, ]) + self.server.join() + if self.client_conn is not None: + self.client_conn.close() + + +if __name__ == "__main__": + import doctest + doctest.testmod() Added: grass/trunk/lib/python/pygrass/rpc/testsuite/test_doctests.py =================================================================== --- grass/trunk/lib/python/pygrass/rpc/testsuite/test_doctests.py (rev 0) +++ grass/trunk/lib/python/pygrass/rpc/testsuite/test_doctests.py 2015-09-05 00:41:30 UTC (rev 66104) @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +""" +Tests checkers +""" + +import doctest + +import grass.gunittest.case +import grass.gunittest.main +import grass.gunittest.utils + +import grass.pygrass.rpc as pygrpc + + +# doctest does not allow changing the base classes of test case, skip test case +# and test suite, so we need to create a new type which inherits from our class +# and contains doctest's methods +# the alternative is to copy 500 from doctest and change what is needed +# (this might be necessary anyway beacuse of the reports and stdout and stderr) +doctest.DocFileCase = type('DocFileCase', + (grass.gunittest.case.TestCase,), + dict(doctest.DocFileCase.__dict__)) +doctest.SkipDocTestCase = type('SkipDocTestCase', + (grass.gunittest.case.TestCase,), + dict(doctest.SkipDocTestCase.__dict__)) + + +def load_tests(loader, tests, ignore): + # TODO: this must be somewhere when doctest is called, not here + # TODO: ultimate solution is not to use _ as a buildin in lib/python + # for now it is the only place where it works + grass.gunittest.utils.do_doctest_gettext_workaround() + # this should be called at some top level + + from grass.pygrass import utils + from grass.pygrass.modules import Module + Module("g.region", n=40, s=0, e=40, w=0, res=10) + Module("r.mapcalc", expression="%s = row() + (10 * col())"%(pygrpc.test_raster_name), + overwrite=True) + utils.create_test_vector_map(pygrpc.test_vector_name) + + + tests.addTests(doctest.DocTestSuite(pygrpc)) + tests.addTests(doctest.DocTestSuite(pygrpc.base)) + return tests + + +if __name__ == '__main__': + grass.gunittest.main.test() Modified: grass/trunk/lib/python/pygrass/utils.py =================================================================== --- grass/trunk/lib/python/pygrass/utils.py 2015-09-04 21:44:31 UTC (rev 66103) +++ grass/trunk/lib/python/pygrass/utils.py 2015-09-05 00:41:30 UTC (rev 66104) @@ -225,8 +225,8 @@ True >>> get_raster_for_points(fire, ele, column=test_raster_name, region=region) True - >>> fire.table.filters.select('LABEL', test_raster_name) - Filters(u'SELECT LABEL, Utils_test_raster FROM test_vect_2;') + >>> fire.table.filters.select('name', test_raster_name) + Filters(u'SELECT name, Utils_test_raster FROM test_vect_2;') >>> cur = fire.table.execute() >>> r = cur.fetchall() >>> r[0] # doctest: +ELLIPSIS @@ -285,8 +285,6 @@ def get_lib_path(modname, libname): """Return the path of the libname contained in the module. - - >>> get_lib_path(modname='r.modis', libname='libmodis') """ from os.path import isdir, join from os import getenv Modified: grass/trunk/lib/python/pygrass/vector/__init__.py =================================================================== --- grass/trunk/lib/python/pygrass/vector/__init__.py 2015-09-04 21:44:31 UTC (rev 66103) +++ grass/trunk/lib/python/pygrass/vector/__init__.py 2015-09-05 00:41:30 UTC (rev 66104) @@ -716,7 +716,7 @@ supported = ['point', 'line', 'boundary', 'centroid'] - if feature_type not in supported: + if feature_type.lower() not in supported: raise GrassError("Unsupported feature type <%s>, "\ "supported are <%s>"%(feature_type, ",".join(supported))) @@ -724,7 +724,7 @@ if bbox is None: bbox = self.bbox() - bboxlist = self.find_by_bbox.geos(bbox, type=feature_type, + bboxlist = self.find_by_bbox.geos(bbox, type=feature_type.lower(), bboxlist_only = True) if bboxlist is not None and len(bboxlist) > 0: From svn_grass at osgeo.org Fri Sep 4 17:42:43 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Fri, 4 Sep 2015 17:42:43 -0700 Subject: [GRASS-SVN] r66105 - grass/trunk/lib/python/temporal Message-ID: <20150905004243.B4261390151@trac.osgeo.org> Author: huhabla Date: 2015-09-04 17:42:43 -0700 (Fri, 04 Sep 2015) New Revision: 66105 Modified: grass/trunk/lib/python/temporal/c_libraries_interface.py Log: temporal framework: CLibrariesInterface inherits RPCServerBase from pygrass.rpc Modified: grass/trunk/lib/python/temporal/c_libraries_interface.py =================================================================== --- grass/trunk/lib/python/temporal/c_libraries_interface.py 2015-09-05 00:41:30 UTC (rev 66104) +++ grass/trunk/lib/python/temporal/c_libraries_interface.py 2015-09-05 00:42:43 UTC (rev 66105) @@ -25,6 +25,7 @@ import grass.lib.date as libdate import grass.lib.raster3d as libraster3d import grass.lib.temporal as libtgis +from grass.pygrass.rpc.base import RPCServerBase ############################################################################### @@ -791,7 +792,7 @@ functions[data[0]](lock, conn, data) lock.release() -class CLibrariesInterface(object): +class CLibrariesInterface(RPCServerBase): """Fast and exit-safe interface to GRASS C-libraries functions This class implements a fast and exit-safe interface to the GRASS @@ -943,44 +944,8 @@ """ def __init__(self): - self.client_conn = None - self.server_conn = None - self.queue = None - self.server = None - self.checkThread = None - self.threadLock = threading.Lock() - self.start_server() - self.start_checker_thread() - self.stopThread = False + RPCServerBase.__init__(self) - def start_checker_thread(self): - if self.checkThread is not None and self.checkThread.is_alive(): - self.stop_checker_thread() - - self.checkThread = threading.Thread(target=self.thread_checker) - self.checkThread.daemon = True - self.stopThread = False - self.checkThread.start() - - def stop_checker_thread(self): - self.threadLock.acquire() - self.stopThread = True - self.threadLock.release() - self.checkThread.join(None) - - def thread_checker(self): - """Check every 200 micro seconds if the server process is alive""" - while True: - time.sleep(0.2) - #sys.stderr.write("Check server process\n") - self._check_restart_server() - self.threadLock.acquire() - if self.stopThread == True: - #sys.stderr.write("Stop thread\n") - self.threadLock.release() - return - self.threadLock.release() - def start_server(self): self.client_conn, self.server_conn = Pipe(True) self.lock = Lock() @@ -989,24 +954,6 @@ self.server.daemon = True self.server.start() - def check_server(self): - self._check_restart_server() - - def _check_restart_server(self): - """Restart the server if it was terminated - """ - self.threadLock.acquire() - if self.server.is_alive() is True: - self.threadLock.release() - return - self.client_conn.close() - self.server_conn.close() - self.start_server() - - logging.warning("Needed to restart the libgis server") - - self.threadLock.release() - def raster_map_exists(self, name, mapset): """Check if a raster map exists in the spatial database @@ -1361,32 +1308,6 @@ # The pipe should be closed in the checker thread return self.safe_receive("Fatal error") - def safe_receive(self, message): - """Receive the data and throw an FatalError exception in case the server - process was killed and the pipe was closed by the checker thread""" - try: - ret = self.client_conn.recv() - if isinstance(ret, FatalError): - raise FatalError() - return ret - except (EOFError, IOError, FatalError): - # The pipe was closed by the checker thread because - # the server process was killed - raise FatalError(message) - - def stop(self): - """Stop the check thread, the libgis server and close the pipe - - This method should be called at exit using the package atexit - """ - #sys.stderr.write("###### Stop was called\n") - self.stop_checker_thread() - if self.server is not None and self.server.is_alive(): - self.client_conn.send([0, ]) - self.server.join() - if self.client_conn is not None: - self.client_conn.close() - if __name__ == "__main__": import doctest doctest.testmod() From svn_grass at osgeo.org Fri Sep 4 23:40:51 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Fri, 4 Sep 2015 23:40:51 -0700 Subject: [GRASS-SVN] r66106 - grass/branches/releasebranch_7_0/lib/python/pygrass/modules/interface Message-ID: <20150905064051.79256390136@trac.osgeo.org> Author: neteler Date: 2015-09-04 23:40:51 -0700 (Fri, 04 Sep 2015) New Revision: 66106 Modified: grass/branches/releasebranch_7_0/lib/python/pygrass/modules/interface/env.py Log: pygrass modules: Fixed #2731 reading gisrc with multiple : in an entry caused problems (trunk, r66061) Modified: grass/branches/releasebranch_7_0/lib/python/pygrass/modules/interface/env.py =================================================================== --- grass/branches/releasebranch_7_0/lib/python/pygrass/modules/interface/env.py 2015-09-05 00:42:43 UTC (rev 66105) +++ grass/branches/releasebranch_7_0/lib/python/pygrass/modules/interface/env.py 2015-09-05 06:40:51 UTC (rev 66106) @@ -16,7 +16,7 @@ raise RuntimeError('You are not in a GRASS session, GISRC not found.') with open(gisrc, mode='r') as grc: env = dict([(k.strip(), v.strip()) - for k, v in [row.split(':') for row in grc if row]]) + for k, v in [row.split(':',1) for row in grc if row]]) return env From svn_grass at osgeo.org Sat Sep 5 00:09:08 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sat, 5 Sep 2015 00:09:08 -0700 Subject: [GRASS-SVN] r66107 - grass-addons/grass7/raster/r.mcda.promethee Message-ID: <20150905070908.BCA84390136@trac.osgeo.org> Author: gianluca Date: 2015-09-05 00:09:08 -0700 (Sat, 05 Sep 2015) New Revision: 66107 Modified: grass-addons/grass7/raster/r.mcda.promethee/main.c Log: develop Modified: grass-addons/grass7/raster/r.mcda.promethee/main.c =================================================================== --- grass-addons/grass7/raster/r.mcda.promethee/main.c 2015-09-05 06:40:51 UTC (rev 66106) +++ grass-addons/grass7/raster/r.mcda.promethee/main.c 2015-09-05 07:09:08 UTC (rev 66107) @@ -202,16 +202,14 @@ /* viene letto il valore di cella e lo si attribuisce ad una variabile di tipo DCELL e poi ad un array*/ DCELL v1 = ((DCELL *)attributes[i].inrast)[col1]; decision_vol[row1][col1][i]=(double)(v1); - G_message("row: %d",row1); - } } } build_flow_matrix(nrows,ncols,ncriteria,weight_vect,decision_vol,positive_flow_vol, negative_flow_vol); /*scan all DCELL, make a pairwise comparatione, buil positive flow matrix*/ + G_message("step ended"); - for (row1 = 0; row1 < nrows; row1++) { for (col1 = 0; col1 < ncols; col1++) From svn_grass at osgeo.org Sat Sep 5 00:47:34 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sat, 5 Sep 2015 00:47:34 -0700 Subject: [GRASS-SVN] r66108 - grass-addons/grass7/raster/r.mcda.promethee Message-ID: <20150905074734.D00B0390151@trac.osgeo.org> Author: gianluca Date: 2015-09-05 00:47:34 -0700 (Sat, 05 Sep 2015) New Revision: 66108 Modified: grass-addons/grass7/raster/r.mcda.promethee/main.c Log: develop Modified: grass-addons/grass7/raster/r.mcda.promethee/main.c =================================================================== --- grass-addons/grass7/raster/r.mcda.promethee/main.c 2015-09-05 07:09:08 UTC (rev 66107) +++ grass-addons/grass7/raster/r.mcda.promethee/main.c 2015-09-05 07:47:34 UTC (rev 66108) @@ -183,7 +183,8 @@ /* Allocate output buffer, use DCELL_TYPE */ outrast_positive_flow = Rast_allocate_buf(DCELL_TYPE); /* Allocate memory for a raster map of type DCELL_TYPE. */ outrast_negative_flow = Rast_allocate_buf(DCELL_TYPE); - + outrast_netflow = Rast_allocate_buf(DCELL_TYPE); + /* controlling, if we can write the raster */ outrast_positive_flow = Rast_open_new(result_positive_flow, DCELL_TYPE); outrast_negative_flow = Rast_open_new(result_negative_flow, DCELL_TYPE); @@ -206,7 +207,7 @@ } } - + G_message("step started"); build_flow_matrix(nrows,ncols,ncriteria,weight_vect,decision_vol,positive_flow_vol, negative_flow_vol); /*scan all DCELL, make a pairwise comparatione, buil positive flow matrix*/ G_message("step ended"); From svn_grass at osgeo.org Sat Sep 5 02:00:50 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sat, 5 Sep 2015 02:00:50 -0700 Subject: [GRASS-SVN] r66109 - grass/branches/releasebranch_7_0/man Message-ID: <20150905090050.AA07D390136@trac.osgeo.org> Author: neteler Date: 2015-09-05 02:00:50 -0700 (Sat, 05 Sep 2015) New Revision: 66109 Modified: grass/branches/releasebranch_7_0/man/Makefile grass/branches/releasebranch_7_0/man/build_topics.py Log: docs: do not add topics with less than 3 modules to the topics index in order to not clutter it (trunk, r66040) Modified: grass/branches/releasebranch_7_0/man/Makefile =================================================================== --- grass/branches/releasebranch_7_0/man/Makefile 2015-09-05 07:47:34 UTC (rev 66108) +++ grass/branches/releasebranch_7_0/man/Makefile 2015-09-05 09:00:50 UTC (rev 66109) @@ -67,7 +67,7 @@ $(PYTHON) ./build_keywords.py $(HTMLDIR) endef -$(HTMLDIR)/topics.html: $(ALL_HTML) +$(HTMLDIR)/topics.html: $(ALL_HTML) build_topics.py $(call build_topics) touch $@ Modified: grass/branches/releasebranch_7_0/man/build_topics.py =================================================================== --- grass/branches/releasebranch_7_0/man/build_topics.py 2015-09-05 07:47:34 UTC (rev 66108) +++ grass/branches/releasebranch_7_0/man/build_topics.py 2015-09-05 09:00:50 UTC (rev 66109) @@ -12,6 +12,8 @@ path = sys.argv[1] year = os.getenv("VERSION_DATE") +min_num_modules_for_topic = 3 + keywords = {} htmlfiles = glob.glob1(path, '*.html') @@ -46,16 +48,19 @@ topicsfile.write(headertopics_tmpl) for key, values in sorted(keywords.iteritems()): - topicsfile.writelines([moduletopics_tmpl.substitute(key=key.lower(), - name=key.replace('_', ' '))]) keyfile = open(os.path.join(path, 'topic_%s.html' % key.lower()), 'w') keyfile.write(header1_tmpl.substitute(title = "GRASS GIS " \ "%s Reference Manual: Topic %s" % (grass_version, key.replace('_', ' ')))) keyfile.write(headerkey_tmpl.substitute(keyword=key.replace('_', ' '))) + num_modules = 0 for mod, desc in sorted(values.iteritems()): + num_modules += 1 keyfile.write(desc1_tmpl.substitute(cmd=mod, desc=desc, basename=mod.replace('.html', ''))) + if num_modules >= min_num_modules_for_topic: + topicsfile.writelines([moduletopics_tmpl.substitute( + key=key.lower(), name=key.replace('_', ' '))]) keyfile.write("\n") write_html_footer(keyfile, "index.html", year) topicsfile.write("

\n") From svn_grass at osgeo.org Sat Sep 5 05:47:33 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sat, 5 Sep 2015 05:47:33 -0700 Subject: [GRASS-SVN] r66110 - grass/trunk/lib/python/pygrass/raster Message-ID: <20150905124733.5C7DF390151@trac.osgeo.org> Author: huhabla Date: 2015-09-05 05:47:33 -0700 (Sat, 05 Sep 2015) New Revision: 66110 Modified: grass/trunk/lib/python/pygrass/raster/__init__.py grass/trunk/lib/python/pygrass/raster/abstract.py grass/trunk/lib/python/pygrass/raster/history.py Log: pygrass raster: Added iterators to iterate over raster info and history Modified: grass/trunk/lib/python/pygrass/raster/__init__.py =================================================================== --- grass/trunk/lib/python/pygrass/raster/__init__.py 2015-09-05 09:00:50 UTC (rev 66109) +++ grass/trunk/lib/python/pygrass/raster/__init__.py 2015-09-05 12:47:33 UTC (rev 66110) @@ -88,6 +88,16 @@ 'A test map' >>> elev.hist.keyword 'This is a test map' + + >>> attrs = list(elev.hist) + >>> attrs[0] + ('name', u'Raster_test_map') + >>> attrs[1] + ('mapset', 'user1') + >>> attrs[2] + ('mtype', '') + >>> attrs[3] + ('creator', 'soeren') Each Raster map have an attribute call ``cats`` that allow user to interact with the raster categories. Modified: grass/trunk/lib/python/pygrass/raster/abstract.py =================================================================== --- grass/trunk/lib/python/pygrass/raster/abstract.py 2015-09-05 09:00:50 UTC (rev 66109) +++ grass/trunk/lib/python/pygrass/raster/abstract.py 2015-09-05 12:47:33 UTC (rev 66110) @@ -189,7 +189,10 @@ def items(self): return [(k, self.__getattribute__(k)) for k in self.keys()] - + + def __iter__(self): + return ((k, self.__getattribute__(k)) for k in self.keys()) + def _repr_html_(self): return dict2html(dict(self.items()), keys=self.keys(), border='1', kdec='b') Modified: grass/trunk/lib/python/pygrass/raster/history.py =================================================================== --- grass/trunk/lib/python/pygrass/raster/history.py 2015-09-05 09:00:50 UTC (rev 66109) +++ grass/trunk/lib/python/pygrass/raster/history.py 2015-09-05 12:47:33 UTC (rev 66110) @@ -27,21 +27,19 @@ self.keyword = keyword self.date = date self.title = title + self.attrs = ['name', 'mapset', 'mtype', 'creator', 'src1', 'src2', + 'keyword', 'date', 'title'] def __repr__(self): - attrs = ['name', 'mapset', 'mtype', 'creator', 'src1', 'src2', - 'keyword', 'date', 'title'] - return "History(%s)" % ', '.join(["%s=%r" % (attr, getattr(self, attr)) - for attr in attrs]) + return "History(%s)" % ', '.join(["%s=%r" % (self.attr, getattr(self, attr)) + for attr in self.attrs]) def __del__(self): """Rast_free_history""" pass def __eq__(self, hist): - attrs = ['name', 'mapset', 'mtype', 'creator', 'src1', 'src2', - 'keyword', 'date', 'title'] - for attr in attrs: + for attr in self.attrs: if getattr(self, attr) != getattr(hist, attr): return False return True @@ -49,6 +47,9 @@ def __len__(self): return self.length() + def __iter__(self): + return ((attr, getattr(self, attr)) for attr in self.attrs) + #---------------------------------------------------------------------- #libraster.HIST_CREATOR def _get_creator(self): From svn_grass at osgeo.org Sat Sep 5 08:56:17 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sat, 5 Sep 2015 08:56:17 -0700 Subject: [GRASS-SVN] r66111 - in grass/branches/releasebranch_7_0: lib/symbol locale/po scripts/d.polar scripts/r.pack scripts/r.unpack scripts/v.krige scripts/v.pack scripts/v.unpack vector/v.build Message-ID: <20150905155620.C5F42390136@trac.osgeo.org> Author: neteler Date: 2015-09-05 08:56:17 -0700 (Sat, 05 Sep 2015) New Revision: 66111 Modified: grass/branches/releasebranch_7_0/lib/symbol/README grass/branches/releasebranch_7_0/locale/po/grassmods_ar.po grass/branches/releasebranch_7_0/locale/po/grassmods_cs.po grass/branches/releasebranch_7_0/locale/po/grassmods_de.po grass/branches/releasebranch_7_0/locale/po/grassmods_el.po grass/branches/releasebranch_7_0/locale/po/grassmods_es.po grass/branches/releasebranch_7_0/locale/po/grassmods_fi.po grass/branches/releasebranch_7_0/locale/po/grassmods_fr.po grass/branches/releasebranch_7_0/locale/po/grassmods_it.po grass/branches/releasebranch_7_0/locale/po/grassmods_ja.po grass/branches/releasebranch_7_0/locale/po/grassmods_ko.po grass/branches/releasebranch_7_0/locale/po/grassmods_lv.po grass/branches/releasebranch_7_0/locale/po/grassmods_pl.po grass/branches/releasebranch_7_0/locale/po/grassmods_pt.po grass/branches/releasebranch_7_0/locale/po/grassmods_pt_br.po grass/branches/releasebranch_7_0/locale/po/grassmods_ro.po grass/branches/releasebranch_7_0/locale/po/grassmods_ru.po grass/branches/releasebranch_7_0/locale/po/grassmods_sl.po grass/branches/releasebranch_7_0/locale/po/grassmods_th.po grass/branches/releasebranch_7_0/locale/po/grassmods_tr.po grass/branches/releasebranch_7_0/locale/po/grassmods_vi.po grass/branches/releasebranch_7_0/locale/po/grassmods_zh.po grass/branches/releasebranch_7_0/locale/po/grasswxpy_cs.po grass/branches/releasebranch_7_0/locale/po/grasswxpy_de.po grass/branches/releasebranch_7_0/locale/po/grasswxpy_el.po grass/branches/releasebranch_7_0/locale/po/grasswxpy_es.po grass/branches/releasebranch_7_0/locale/po/grasswxpy_fi.po grass/branches/releasebranch_7_0/locale/po/grasswxpy_fr.po grass/branches/releasebranch_7_0/locale/po/grasswxpy_id.po grass/branches/releasebranch_7_0/locale/po/grasswxpy_it.po grass/branches/releasebranch_7_0/locale/po/grasswxpy_ja.po grass/branches/releasebranch_7_0/locale/po/grasswxpy_ko.po grass/branches/releasebranch_7_0/locale/po/grasswxpy_lv.po grass/branches/releasebranch_7_0/locale/po/grasswxpy_ml.po grass/branches/releasebranch_7_0/locale/po/grasswxpy_pl.po grass/branches/releasebranch_7_0/locale/po/grasswxpy_pt.po grass/branches/releasebranch_7_0/locale/po/grasswxpy_pt_br.po grass/branches/releasebranch_7_0/locale/po/grasswxpy_ro.po grass/branches/releasebranch_7_0/locale/po/grasswxpy_ru.po grass/branches/releasebranch_7_0/locale/po/grasswxpy_th.po grass/branches/releasebranch_7_0/locale/po/grasswxpy_tr.po grass/branches/releasebranch_7_0/locale/po/grasswxpy_vi.po grass/branches/releasebranch_7_0/locale/po/grasswxpy_zh.po grass/branches/releasebranch_7_0/scripts/d.polar/d.polar.html grass/branches/releasebranch_7_0/scripts/r.pack/r.pack.html grass/branches/releasebranch_7_0/scripts/r.unpack/r.unpack.html grass/branches/releasebranch_7_0/scripts/v.krige/v.krige.html grass/branches/releasebranch_7_0/scripts/v.pack/v.pack.html grass/branches/releasebranch_7_0/scripts/v.unpack/v.unpack.html grass/branches/releasebranch_7_0/vector/v.build/main.c Log: various typo fixes, found by the Debian lintian QA tool (trac #2725) Modified: grass/branches/releasebranch_7_0/lib/symbol/README =================================================================== --- grass/branches/releasebranch_7_0/lib/symbol/README 2015-09-05 12:47:33 UTC (rev 66110) +++ grass/branches/releasebranch_7_0/lib/symbol/README 2015-09-05 15:56:17 UTC (rev 66111) @@ -64,7 +64,7 @@ ARC X Y R A1 A2 [C] Arc specified by center (X Y), radius (R), start/end angle in degrees (A1/A2) - and optionaly direction (C for clockwise, default counter clockwise) + and optionally direction (C for clockwise, default counter clockwise) Note degrees are polar theta not navigational, i.e. 0 is east and values increase counter-clockwise from there. Reducing the angle from a full circle does not make it draw like a pacman but rather Modified: grass/branches/releasebranch_7_0/locale/po/grassmods_ar.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grassmods_ar.po 2015-09-05 12:47:33 UTC (rev 66110) +++ grass/branches/releasebranch_7_0/locale/po/grassmods_ar.po 2015-09-05 15:56:17 UTC (rev 66111) @@ -6765,7 +6765,7 @@ msgstr "??? ??????? ????????? ???????" #: ../vector/v.build/main.c:40 -msgid "Optionaly also checks for topological errors." +msgid "Optionally also checks for topological errors." msgstr "" #: ../vector/v.build/main.c:44 Modified: grass/branches/releasebranch_7_0/locale/po/grassmods_cs.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grassmods_cs.po 2015-09-05 12:47:33 UTC (rev 66110) +++ grass/branches/releasebranch_7_0/locale/po/grassmods_cs.po 2015-09-05 15:56:17 UTC (rev 66111) @@ -6782,7 +6782,7 @@ msgstr "Vytvo?? topologii vektorov? vrstvy." #: ../vector/v.build/main.c:40 -msgid "Optionaly also checks for topological errors." +msgid "Optionally also checks for topological errors." msgstr "" #: ../vector/v.build/main.c:44 Modified: grass/branches/releasebranch_7_0/locale/po/grassmods_de.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grassmods_de.po 2015-09-05 12:47:33 UTC (rev 66110) +++ grass/branches/releasebranch_7_0/locale/po/grassmods_de.po 2015-09-05 15:56:17 UTC (rev 66111) @@ -6674,7 +6674,7 @@ msgstr "Erzeugt Topologie f?r GRASS Vektorkarten." #: ../vector/v.build/main.c:40 -msgid "Optionaly also checks for topological errors." +msgid "Optionally also checks for topological errors." msgstr "" #: ../vector/v.build/main.c:44 Modified: grass/branches/releasebranch_7_0/locale/po/grassmods_el.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grassmods_el.po 2015-09-05 12:47:33 UTC (rev 66110) +++ grass/branches/releasebranch_7_0/locale/po/grassmods_el.po 2015-09-05 15:56:17 UTC (rev 66111) @@ -6515,7 +6515,7 @@ msgstr "???????? ????????? ????????????? ?????" #: ../vector/v.build/main.c:40 -msgid "Optionaly also checks for topological errors." +msgid "Optionally also checks for topological errors." msgstr "" #: ../vector/v.build/main.c:44 Modified: grass/branches/releasebranch_7_0/locale/po/grassmods_es.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grassmods_es.po 2015-09-05 12:47:33 UTC (rev 66110) +++ grass/branches/releasebranch_7_0/locale/po/grassmods_es.po 2015-09-05 15:56:17 UTC (rev 66111) @@ -6771,7 +6771,7 @@ msgstr "Crea topolog?a para mapa vectorial." #: ../vector/v.build/main.c:40 -msgid "Optionaly also checks for topological errors." +msgid "Optionally also checks for topological errors." msgstr "Opcionalmente revisa tambi?n errores topolog?cos." #: ../vector/v.build/main.c:44 Modified: grass/branches/releasebranch_7_0/locale/po/grassmods_fi.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grassmods_fi.po 2015-09-05 12:47:33 UTC (rev 66110) +++ grass/branches/releasebranch_7_0/locale/po/grassmods_fi.po 2015-09-05 15:56:17 UTC (rev 66111) @@ -6247,7 +6247,7 @@ msgstr "" #: ../vector/v.build/main.c:40 -msgid "Optionaly also checks for topological errors." +msgid "Optionally also checks for topological errors." msgstr "" #: ../vector/v.build/main.c:44 Modified: grass/branches/releasebranch_7_0/locale/po/grassmods_fr.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grassmods_fr.po 2015-09-05 12:47:33 UTC (rev 66110) +++ grass/branches/releasebranch_7_0/locale/po/grassmods_fr.po 2015-09-05 15:56:17 UTC (rev 66111) @@ -7039,7 +7039,7 @@ msgstr "Cr?er des icones pour le fichier vecteur GRASS et les attributs li?s" #: ../vector/v.build/main.c:40 -msgid "Optionaly also checks for topological errors." +msgid "Optionally also checks for topological errors." msgstr "" #: ../vector/v.build/main.c:44 Modified: grass/branches/releasebranch_7_0/locale/po/grassmods_it.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grassmods_it.po 2015-09-05 12:47:33 UTC (rev 66110) +++ grass/branches/releasebranch_7_0/locale/po/grassmods_it.po 2015-09-05 15:56:17 UTC (rev 66111) @@ -6670,7 +6670,7 @@ msgstr "Crea etichette per vettoriali GRASS e attributi associati" #: ../vector/v.build/main.c:40 -msgid "Optionaly also checks for topological errors." +msgid "Optionally also checks for topological errors." msgstr "" #: ../vector/v.build/main.c:44 Modified: grass/branches/releasebranch_7_0/locale/po/grassmods_ja.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grassmods_ja.po 2015-09-05 12:47:33 UTC (rev 66110) +++ grass/branches/releasebranch_7_0/locale/po/grassmods_ja.po 2015-09-05 15:56:17 UTC (rev 66111) @@ -6690,7 +6690,7 @@ msgstr "??????????????????????" #: ../vector/v.build/main.c:40 -msgid "Optionaly also checks for topological errors." +msgid "Optionally also checks for topological errors." msgstr "" #: ../vector/v.build/main.c:44 Modified: grass/branches/releasebranch_7_0/locale/po/grassmods_ko.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grassmods_ko.po 2015-09-05 12:47:33 UTC (rev 66110) +++ grass/branches/releasebranch_7_0/locale/po/grassmods_ko.po 2015-09-05 15:56:17 UTC (rev 66111) @@ -6533,7 +6533,7 @@ msgstr "??? ????" #: ../vector/v.build/main.c:40 -msgid "Optionaly also checks for topological errors." +msgid "Optionally also checks for topological errors." msgstr "" #: ../vector/v.build/main.c:44 Modified: grass/branches/releasebranch_7_0/locale/po/grassmods_lv.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grassmods_lv.po 2015-09-05 12:47:33 UTC (rev 66110) +++ grass/branches/releasebranch_7_0/locale/po/grassmods_lv.po 2015-09-05 15:56:17 UTC (rev 66111) @@ -6769,7 +6769,7 @@ msgstr "Vektorkartes nosaukums" #: ../vector/v.build/main.c:40 -msgid "Optionaly also checks for topological errors." +msgid "Optionally also checks for topological errors." msgstr "" #: ../vector/v.build/main.c:44 Modified: grass/branches/releasebranch_7_0/locale/po/grassmods_pl.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grassmods_pl.po 2015-09-05 12:47:33 UTC (rev 66110) +++ grass/branches/releasebranch_7_0/locale/po/grassmods_pl.po 2015-09-05 15:56:17 UTC (rev 66111) @@ -6706,7 +6706,7 @@ msgstr "Tworzy topologi? dla wektorowej mapy GRASS." #: ../vector/v.build/main.c:40 -msgid "Optionaly also checks for topological errors." +msgid "Optionally also checks for topological errors." msgstr "" #: ../vector/v.build/main.c:44 Modified: grass/branches/releasebranch_7_0/locale/po/grassmods_pt.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grassmods_pt.po 2015-09-05 12:47:33 UTC (rev 66110) +++ grass/branches/releasebranch_7_0/locale/po/grassmods_pt.po 2015-09-05 15:56:17 UTC (rev 66111) @@ -6859,7 +6859,7 @@ "relacionados." #: ../vector/v.build/main.c:40 -msgid "Optionaly also checks for topological errors." +msgid "Optionally also checks for topological errors." msgstr "" #: ../vector/v.build/main.c:44 Modified: grass/branches/releasebranch_7_0/locale/po/grassmods_pt_br.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grassmods_pt_br.po 2015-09-05 12:47:33 UTC (rev 66110) +++ grass/branches/releasebranch_7_0/locale/po/grassmods_pt_br.po 2015-09-05 15:56:17 UTC (rev 66111) @@ -6852,7 +6852,7 @@ "relacionados." #: ../vector/v.build/main.c:40 -msgid "Optionaly also checks for topological errors." +msgid "Optionally also checks for topological errors." msgstr "" #: ../vector/v.build/main.c:44 Modified: grass/branches/releasebranch_7_0/locale/po/grassmods_ro.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grassmods_ro.po 2015-09-05 12:47:33 UTC (rev 66110) +++ grass/branches/releasebranch_7_0/locale/po/grassmods_ro.po 2015-09-05 15:56:17 UTC (rev 66111) @@ -6298,7 +6298,7 @@ msgstr "" #: ../vector/v.build/main.c:40 -msgid "Optionaly also checks for topological errors." +msgid "Optionally also checks for topological errors." msgstr "" #: ../vector/v.build/main.c:44 Modified: grass/branches/releasebranch_7_0/locale/po/grassmods_ru.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grassmods_ru.po 2015-09-05 12:47:33 UTC (rev 66110) +++ grass/branches/releasebranch_7_0/locale/po/grassmods_ru.po 2015-09-05 15:56:17 UTC (rev 66111) @@ -6752,7 +6752,7 @@ msgstr "??????? ????????? ??? ?????????? ???? GRASS." #: ../vector/v.build/main.c:40 -msgid "Optionaly also checks for topological errors." +msgid "Optionally also checks for topological errors." msgstr "" #: ../vector/v.build/main.c:44 Modified: grass/branches/releasebranch_7_0/locale/po/grassmods_sl.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grassmods_sl.po 2015-09-05 12:47:33 UTC (rev 66110) +++ grass/branches/releasebranch_7_0/locale/po/grassmods_sl.po 2015-09-05 15:56:17 UTC (rev 66111) @@ -6792,7 +6792,7 @@ msgstr "Ime vhodnega rastrskega sloja" #: ../vector/v.build/main.c:40 -msgid "Optionaly also checks for topological errors." +msgid "Optionally also checks for topological errors." msgstr "" #: ../vector/v.build/main.c:44 Modified: grass/branches/releasebranch_7_0/locale/po/grassmods_th.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grassmods_th.po 2015-09-05 12:47:33 UTC (rev 66110) +++ grass/branches/releasebranch_7_0/locale/po/grassmods_th.po 2015-09-05 15:56:17 UTC (rev 66111) @@ -1018,7 +1018,7 @@ "Either 'from_table' (optionally with 'where') can be used or 'select' " "option, but not 'from_table' and 'select' at the same time." msgstr "" -"???????????. ???????????? 'from_table' (optionaly with 'where') ???? 'select' " +"???????????. ???????????? 'from_table' (optionally with 'where') ???? 'select' " "option, ????????? 'from_table' ??? 'select' ????????" #: ../db/db.copy/main.c:46 @@ -6752,7 +6752,7 @@ msgstr "????? topology ?????? ?????????????? GRASS." #: ../vector/v.build/main.c:40 -msgid "Optionaly also checks for topological errors." +msgid "Optionally also checks for topological errors." msgstr "" #: ../vector/v.build/main.c:44 Modified: grass/branches/releasebranch_7_0/locale/po/grassmods_tr.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grassmods_tr.po 2015-09-05 12:47:33 UTC (rev 66110) +++ grass/branches/releasebranch_7_0/locale/po/grassmods_tr.po 2015-09-05 15:56:17 UTC (rev 66111) @@ -6668,7 +6668,7 @@ msgstr "GRASS vekt?r dosyas? i?in topoloji olu?turur." #: ../vector/v.build/main.c:40 -msgid "Optionaly also checks for topological errors." +msgid "Optionally also checks for topological errors." msgstr "" #: ../vector/v.build/main.c:44 Modified: grass/branches/releasebranch_7_0/locale/po/grassmods_vi.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grassmods_vi.po 2015-09-05 12:47:33 UTC (rev 66110) +++ grass/branches/releasebranch_7_0/locale/po/grassmods_vi.po 2015-09-05 15:56:17 UTC (rev 66111) @@ -6757,7 +6757,7 @@ msgstr "T?o t?p? cho b?n ?? vector c?a GRASS." #: ../vector/v.build/main.c:40 -msgid "Optionaly also checks for topological errors." +msgid "Optionally also checks for topological errors." msgstr "" #: ../vector/v.build/main.c:44 Modified: grass/branches/releasebranch_7_0/locale/po/grassmods_zh.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grassmods_zh.po 2015-09-05 12:47:33 UTC (rev 66110) +++ grass/branches/releasebranch_7_0/locale/po/grassmods_zh.po 2015-09-05 15:56:17 UTC (rev 66111) @@ -6757,7 +6757,7 @@ msgstr "? GRASS ??????????????" #: ../vector/v.build/main.c:40 -msgid "Optionaly also checks for topological errors." +msgid "Optionally also checks for topological errors." msgstr "" #: ../vector/v.build/main.c:44 Modified: grass/branches/releasebranch_7_0/locale/po/grasswxpy_cs.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasswxpy_cs.po 2015-09-05 12:47:33 UTC (rev 66110) +++ grass/branches/releasebranch_7_0/locale/po/grasswxpy_cs.po 2015-09-05 15:56:17 UTC (rev 66111) @@ -11733,7 +11733,7 @@ #: ../gui/wxpython/menustrings.py:560 ../gui/wxpython/menustrings.py:1459 msgid "" -"Creates topology for vector map. Optionaly also checks for topological " +"Creates topology for vector map. Optionally also checks for topological " "errors." msgstr "" "Vytvo?? topologii vektorov? vrstvy. Voliteln? tak? zkontroluje topologick? " Modified: grass/branches/releasebranch_7_0/locale/po/grasswxpy_de.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasswxpy_de.po 2015-09-05 12:47:33 UTC (rev 66110) +++ grass/branches/releasebranch_7_0/locale/po/grasswxpy_de.po 2015-09-05 15:56:17 UTC (rev 66111) @@ -11593,7 +11593,7 @@ #: ../gui/wxpython/menustrings.py:560 ../gui/wxpython/menustrings.py:1459 msgid "" -"Creates topology for vector map. Optionaly also checks for topological " +"Creates topology for vector map. Optionally also checks for topological " "errors." msgstr "" Modified: grass/branches/releasebranch_7_0/locale/po/grasswxpy_el.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasswxpy_el.po 2015-09-05 12:47:33 UTC (rev 66110) +++ grass/branches/releasebranch_7_0/locale/po/grasswxpy_el.po 2015-09-05 15:56:17 UTC (rev 66111) @@ -10931,7 +10931,7 @@ #: ../gui/wxpython/menustrings.py:560 ../gui/wxpython/menustrings.py:1459 msgid "" -"Creates topology for vector map. Optionaly also checks for topological " +"Creates topology for vector map. Optionally also checks for topological " "errors." msgstr "" Modified: grass/branches/releasebranch_7_0/locale/po/grasswxpy_es.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasswxpy_es.po 2015-09-05 12:47:33 UTC (rev 66110) +++ grass/branches/releasebranch_7_0/locale/po/grasswxpy_es.po 2015-09-05 15:56:17 UTC (rev 66111) @@ -11790,7 +11790,7 @@ #: ../gui/wxpython/menustrings.py:560 ../gui/wxpython/menustrings.py:1459 msgid "" -"Creates topology for vector map. Optionaly also checks for topological " +"Creates topology for vector map. Optionally also checks for topological " "errors." msgstr "" Modified: grass/branches/releasebranch_7_0/locale/po/grasswxpy_fi.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasswxpy_fi.po 2015-09-05 12:47:33 UTC (rev 66110) +++ grass/branches/releasebranch_7_0/locale/po/grasswxpy_fi.po 2015-09-05 15:56:17 UTC (rev 66111) @@ -10641,7 +10641,7 @@ #: ../gui/wxpython/menustrings.py:560 ../gui/wxpython/menustrings.py:1459 msgid "" -"Creates topology for vector map. Optionaly also checks for topological " +"Creates topology for vector map. Optionally also checks for topological " "errors." msgstr "" Modified: grass/branches/releasebranch_7_0/locale/po/grasswxpy_fr.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasswxpy_fr.po 2015-09-05 12:47:33 UTC (rev 66110) +++ grass/branches/releasebranch_7_0/locale/po/grasswxpy_fr.po 2015-09-05 15:56:17 UTC (rev 66111) @@ -11446,7 +11446,7 @@ #: ../gui/wxpython/menustrings.py:560 ../gui/wxpython/menustrings.py:1459 msgid "" -"Creates topology for vector map. Optionaly also checks for topological " +"Creates topology for vector map. Optionally also checks for topological " "errors." msgstr "" "Cr?er la topologie pour la carte vecteur. En option, v?rifie les erreurs de " Modified: grass/branches/releasebranch_7_0/locale/po/grasswxpy_id.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasswxpy_id.po 2015-09-05 12:47:33 UTC (rev 66110) +++ grass/branches/releasebranch_7_0/locale/po/grasswxpy_id.po 2015-09-05 15:56:17 UTC (rev 66111) @@ -11934,7 +11934,7 @@ #: ../gui/wxpython/menustrings.py:560 ../gui/wxpython/menustrings.py:1459 msgid "" -"Creates topology for vector map. Optionaly also checks for topological " +"Creates topology for vector map. Optionally also checks for topological " "errors." msgstr "" Modified: grass/branches/releasebranch_7_0/locale/po/grasswxpy_it.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasswxpy_it.po 2015-09-05 12:47:33 UTC (rev 66110) +++ grass/branches/releasebranch_7_0/locale/po/grasswxpy_it.po 2015-09-05 15:56:17 UTC (rev 66111) @@ -11144,7 +11144,7 @@ #: ../gui/wxpython/menustrings.py:560 ../gui/wxpython/menustrings.py:1459 msgid "" -"Creates topology for vector map. Optionaly also checks for topological " +"Creates topology for vector map. Optionally also checks for topological " "errors." msgstr "" Modified: grass/branches/releasebranch_7_0/locale/po/grasswxpy_ja.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasswxpy_ja.po 2015-09-05 12:47:33 UTC (rev 66110) +++ grass/branches/releasebranch_7_0/locale/po/grasswxpy_ja.po 2015-09-05 15:56:17 UTC (rev 66111) @@ -11527,7 +11527,7 @@ #: ../gui/wxpython/menustrings.py:560 ../gui/wxpython/menustrings.py:1459 msgid "" -"Creates topology for vector map. Optionaly also checks for topological " +"Creates topology for vector map. Optionally also checks for topological " "errors." msgstr "" Modified: grass/branches/releasebranch_7_0/locale/po/grasswxpy_ko.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasswxpy_ko.po 2015-09-05 12:47:33 UTC (rev 66110) +++ grass/branches/releasebranch_7_0/locale/po/grasswxpy_ko.po 2015-09-05 15:56:17 UTC (rev 66111) @@ -10632,7 +10632,7 @@ #: ../gui/wxpython/menustrings.py:560 ../gui/wxpython/menustrings.py:1459 msgid "" -"Creates topology for vector map. Optionaly also checks for topological " +"Creates topology for vector map. Optionally also checks for topological " "errors." msgstr "" Modified: grass/branches/releasebranch_7_0/locale/po/grasswxpy_lv.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasswxpy_lv.po 2015-09-05 12:47:33 UTC (rev 66110) +++ grass/branches/releasebranch_7_0/locale/po/grasswxpy_lv.po 2015-09-05 15:56:17 UTC (rev 66111) @@ -10863,7 +10863,7 @@ #: ../gui/wxpython/menustrings.py:560 ../gui/wxpython/menustrings.py:1459 msgid "" -"Creates topology for vector map. Optionaly also checks for topological " +"Creates topology for vector map. Optionally also checks for topological " "errors." msgstr "" Modified: grass/branches/releasebranch_7_0/locale/po/grasswxpy_ml.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasswxpy_ml.po 2015-09-05 12:47:33 UTC (rev 66110) +++ grass/branches/releasebranch_7_0/locale/po/grasswxpy_ml.po 2015-09-05 15:56:17 UTC (rev 66111) @@ -11299,7 +11299,7 @@ #: ../gui/wxpython/menustrings.py:560 ../gui/wxpython/menustrings.py:1459 msgid "" -"Creates topology for vector map. Optionaly also checks for topological " +"Creates topology for vector map. Optionally also checks for topological " "errors." msgstr "" Modified: grass/branches/releasebranch_7_0/locale/po/grasswxpy_pl.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasswxpy_pl.po 2015-09-05 12:47:33 UTC (rev 66110) +++ grass/branches/releasebranch_7_0/locale/po/grasswxpy_pl.po 2015-09-05 15:56:17 UTC (rev 66111) @@ -11326,7 +11326,7 @@ #: ../gui/wxpython/menustrings.py:560 ../gui/wxpython/menustrings.py:1459 msgid "" -"Creates topology for vector map. Optionaly also checks for topological " +"Creates topology for vector map. Optionally also checks for topological " "errors." msgstr "" Modified: grass/branches/releasebranch_7_0/locale/po/grasswxpy_pt.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasswxpy_pt.po 2015-09-05 12:47:33 UTC (rev 66110) +++ grass/branches/releasebranch_7_0/locale/po/grasswxpy_pt.po 2015-09-05 15:56:17 UTC (rev 66111) @@ -12117,7 +12117,7 @@ #: ../gui/wxpython/menustrings.py:560 ../gui/wxpython/menustrings.py:1459 msgid "" -"Creates topology for vector map. Optionaly also checks for topological " +"Creates topology for vector map. Optionally also checks for topological " "errors." msgstr "" Modified: grass/branches/releasebranch_7_0/locale/po/grasswxpy_pt_br.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasswxpy_pt_br.po 2015-09-05 12:47:33 UTC (rev 66110) +++ grass/branches/releasebranch_7_0/locale/po/grasswxpy_pt_br.po 2015-09-05 15:56:17 UTC (rev 66111) @@ -12403,7 +12403,7 @@ #: ../gui/wxpython/menustrings.py:560 ../gui/wxpython/menustrings.py:1459 msgid "" -"Creates topology for vector map. Optionaly also checks for topological " +"Creates topology for vector map. Optionally also checks for topological " "errors." msgstr "" Modified: grass/branches/releasebranch_7_0/locale/po/grasswxpy_ro.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasswxpy_ro.po 2015-09-05 12:47:33 UTC (rev 66110) +++ grass/branches/releasebranch_7_0/locale/po/grasswxpy_ro.po 2015-09-05 15:56:17 UTC (rev 66111) @@ -11646,7 +11646,7 @@ #: ../gui/wxpython/menustrings.py:560 ../gui/wxpython/menustrings.py:1459 msgid "" -"Creates topology for vector map. Optionaly also checks for topological " +"Creates topology for vector map. Optionally also checks for topological " "errors." msgstr "" Modified: grass/branches/releasebranch_7_0/locale/po/grasswxpy_ru.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasswxpy_ru.po 2015-09-05 12:47:33 UTC (rev 66110) +++ grass/branches/releasebranch_7_0/locale/po/grasswxpy_ru.po 2015-09-05 15:56:17 UTC (rev 66111) @@ -11874,7 +11874,7 @@ #: ../gui/wxpython/menustrings.py:560 ../gui/wxpython/menustrings.py:1459 msgid "" -"Creates topology for vector map. Optionaly also checks for topological " +"Creates topology for vector map. Optionally also checks for topological " "errors." msgstr "" Modified: grass/branches/releasebranch_7_0/locale/po/grasswxpy_th.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasswxpy_th.po 2015-09-05 12:47:33 UTC (rev 66110) +++ grass/branches/releasebranch_7_0/locale/po/grasswxpy_th.po 2015-09-05 15:56:17 UTC (rev 66111) @@ -11387,7 +11387,7 @@ #: ../gui/wxpython/menustrings.py:560 ../gui/wxpython/menustrings.py:1459 msgid "" -"Creates topology for vector map. Optionaly also checks for topological " +"Creates topology for vector map. Optionally also checks for topological " "errors." msgstr "" Modified: grass/branches/releasebranch_7_0/locale/po/grasswxpy_tr.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasswxpy_tr.po 2015-09-05 12:47:33 UTC (rev 66110) +++ grass/branches/releasebranch_7_0/locale/po/grasswxpy_tr.po 2015-09-05 15:56:17 UTC (rev 66111) @@ -11812,7 +11812,7 @@ #: ../gui/wxpython/menustrings.py:560 ../gui/wxpython/menustrings.py:1459 msgid "" -"Creates topology for vector map. Optionaly also checks for topological " +"Creates topology for vector map. Optionally also checks for topological " "errors." msgstr "" Modified: grass/branches/releasebranch_7_0/locale/po/grasswxpy_vi.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasswxpy_vi.po 2015-09-05 12:47:33 UTC (rev 66110) +++ grass/branches/releasebranch_7_0/locale/po/grasswxpy_vi.po 2015-09-05 15:56:17 UTC (rev 66111) @@ -11935,7 +11935,7 @@ #: ../gui/wxpython/menustrings.py:560 ../gui/wxpython/menustrings.py:1459 msgid "" -"Creates topology for vector map. Optionaly also checks for topological " +"Creates topology for vector map. Optionally also checks for topological " "errors." msgstr "" Modified: grass/branches/releasebranch_7_0/locale/po/grasswxpy_zh.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasswxpy_zh.po 2015-09-05 12:47:33 UTC (rev 66110) +++ grass/branches/releasebranch_7_0/locale/po/grasswxpy_zh.po 2015-09-05 15:56:17 UTC (rev 66111) @@ -11451,7 +11451,7 @@ #: ../gui/wxpython/menustrings.py:560 ../gui/wxpython/menustrings.py:1459 msgid "" -"Creates topology for vector map. Optionaly also checks for topological " +"Creates topology for vector map. Optionally also checks for topological " "errors." msgstr "" Modified: grass/branches/releasebranch_7_0/scripts/d.polar/d.polar.html =================================================================== --- grass/branches/releasebranch_7_0/scripts/d.polar/d.polar.html 2015-09-05 12:47:33 UTC (rev 66110) +++ grass/branches/releasebranch_7_0/scripts/d.polar/d.polar.html 2015-09-05 15:56:17 UTC (rev 66111) @@ -20,7 +20,7 @@

NOTES

If the output parameter is used, the diagram is generated -as EPS file. If the -x flag is used xgraph is lauched. +as EPS file. If the -x flag is used xgraph is launched. Otherwise d.polar will use d.graph to draw the plot in the current display frame.

If d.polar is used on an aspect map generated by Modified: grass/branches/releasebranch_7_0/scripts/r.pack/r.pack.html =================================================================== --- grass/branches/releasebranch_7_0/scripts/r.pack/r.pack.html 2015-09-05 12:47:33 UTC (rev 66110) +++ grass/branches/releasebranch_7_0/scripts/r.pack/r.pack.html 2015-09-05 15:56:17 UTC (rev 66111) @@ -9,7 +9,7 @@

NOTES

Name of the pack file is determined by default from input -parameter. Optionaly the name can be given by output parameter. +parameter. Optionally the name can be given by output parameter. Currently only 2D raster maps are supported. Modified: grass/branches/releasebranch_7_0/scripts/r.unpack/r.unpack.html =================================================================== --- grass/branches/releasebranch_7_0/scripts/r.unpack/r.unpack.html 2015-09-05 12:47:33 UTC (rev 66110) +++ grass/branches/releasebranch_7_0/scripts/r.unpack/r.unpack.html 2015-09-05 15:56:17 UTC (rev 66111) @@ -5,7 +5,7 @@

NOTES

Name of the raster map is determined by default from pack file -internals. Optionaly the name can be given by output parameter. +internals. Optionally the name can be given by output parameter. Currently only 2D raster maps are supported. Modified: grass/branches/releasebranch_7_0/scripts/v.krige/v.krige.html =================================================================== --- grass/branches/releasebranch_7_0/scripts/v.krige/v.krige.html 2015-09-05 12:47:33 UTC (rev 66110) +++ grass/branches/releasebranch_7_0/scripts/v.krige/v.krige.html 2015-09-05 15:56:17 UTC (rev 66111) @@ -163,12 +163,12 @@

SEE ALSO

R package gstat, -mantained by Edzer J. Pebesma and others +maintained by Edzer J. Pebesma and others
R package spgrass6, -mantained by Roger Bivand +maintained by Roger Bivand
The Short Modified: grass/branches/releasebranch_7_0/scripts/v.pack/v.pack.html =================================================================== --- grass/branches/releasebranch_7_0/scripts/v.pack/v.pack.html 2015-09-05 12:47:33 UTC (rev 66110) +++ grass/branches/releasebranch_7_0/scripts/v.pack/v.pack.html 2015-09-05 15:56:17 UTC (rev 66111) @@ -10,7 +10,7 @@

NOTES

Name of the pack file is determined by default from input -parameter. Optionaly the name can be given by output parameter. +parameter. Optionally the name can be given by output parameter.

EXAMPLE

Modified: grass/branches/releasebranch_7_0/scripts/v.unpack/v.unpack.html =================================================================== --- grass/branches/releasebranch_7_0/scripts/v.unpack/v.unpack.html 2015-09-05 12:47:33 UTC (rev 66110) +++ grass/branches/releasebranch_7_0/scripts/v.unpack/v.unpack.html 2015-09-05 15:56:17 UTC (rev 66111) @@ -5,7 +5,7 @@

NOTES

Name of the vector map is determined by default from pack file -internals. Optionaly the name can be given by output parameter. +internals. Optionally the name can be given by output parameter.

EXAMPLE

Modified: grass/branches/releasebranch_7_0/vector/v.build/main.c =================================================================== --- grass/branches/releasebranch_7_0/vector/v.build/main.c 2015-09-05 12:47:33 UTC (rev 66110) +++ grass/branches/releasebranch_7_0/vector/v.build/main.c 2015-09-05 15:56:17 UTC (rev 66111) @@ -37,7 +37,7 @@ G_add_keyword(_("topology")); G_add_keyword(_("geometry")); module->label = _("Creates topology for vector map."); - module->description = _("Optionaly also checks for topological errors."); + module->description = _("Optionally also checks for topological errors."); map_opt = G_define_standard_option(G_OPT_V_MAP); map_opt->label = NULL; From svn_grass at osgeo.org Sat Sep 5 08:57:08 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sat, 5 Sep 2015 08:57:08 -0700 Subject: [GRASS-SVN] r66112 - in grass/trunk: lib/python/gunittest lib/symbol locale/po scripts/d.polar scripts/r.pack scripts/r.unpack scripts/v.krige scripts/v.pack scripts/v.unpack vector/v.build Message-ID: <20150905155710.E6C33390136@trac.osgeo.org> Author: neteler Date: 2015-09-05 08:57:08 -0700 (Sat, 05 Sep 2015) New Revision: 66112 Modified: grass/trunk/lib/python/gunittest/reporters.py grass/trunk/lib/symbol/README grass/trunk/locale/po/grassmods_ar.po grass/trunk/locale/po/grassmods_cs.po grass/trunk/locale/po/grassmods_de.po grass/trunk/locale/po/grassmods_el.po grass/trunk/locale/po/grassmods_es.po grass/trunk/locale/po/grassmods_fi.po grass/trunk/locale/po/grassmods_fr.po grass/trunk/locale/po/grassmods_it.po grass/trunk/locale/po/grassmods_ja.po grass/trunk/locale/po/grassmods_ko.po grass/trunk/locale/po/grassmods_lv.po grass/trunk/locale/po/grassmods_pl.po grass/trunk/locale/po/grassmods_pt.po grass/trunk/locale/po/grassmods_pt_br.po grass/trunk/locale/po/grassmods_ro.po grass/trunk/locale/po/grassmods_ru.po grass/trunk/locale/po/grassmods_sl.po grass/trunk/locale/po/grassmods_th.po grass/trunk/locale/po/grassmods_tr.po grass/trunk/locale/po/grassmods_vi.po grass/trunk/locale/po/grassmods_zh.po grass/trunk/locale/po/grasswxpy_cs.po grass/trunk/locale/po/grasswxpy_de.po grass/trunk/locale/po/grasswxpy_el.po grass/trunk/locale/po/grasswxpy_es.po grass/trunk/locale/po/grasswxpy_fi.po grass/trunk/locale/po/grasswxpy_fr.po grass/trunk/locale/po/grasswxpy_id.po grass/trunk/locale/po/grasswxpy_it.po grass/trunk/locale/po/grasswxpy_ja.po grass/trunk/locale/po/grasswxpy_ko.po grass/trunk/locale/po/grasswxpy_lv.po grass/trunk/locale/po/grasswxpy_ml.po grass/trunk/locale/po/grasswxpy_pl.po grass/trunk/locale/po/grasswxpy_pt.po grass/trunk/locale/po/grasswxpy_pt_br.po grass/trunk/locale/po/grasswxpy_ro.po grass/trunk/locale/po/grasswxpy_ru.po grass/trunk/locale/po/grasswxpy_th.po grass/trunk/locale/po/grasswxpy_tr.po grass/trunk/locale/po/grasswxpy_vi.po grass/trunk/locale/po/grasswxpy_zh.po grass/trunk/scripts/d.polar/d.polar.html grass/trunk/scripts/r.pack/r.pack.html grass/trunk/scripts/r.unpack/r.unpack.html grass/trunk/scripts/v.krige/v.krige.html grass/trunk/scripts/v.pack/v.pack.html grass/trunk/scripts/v.unpack/v.unpack.html grass/trunk/vector/v.build/main.c Log: various typo fixes, found by the Debian lintian QA tool (trac #2725) Modified: grass/trunk/lib/python/gunittest/reporters.py =================================================================== --- grass/trunk/lib/python/gunittest/reporters.py 2015-09-05 15:56:17 UTC (rev 66111) +++ grass/trunk/lib/python/gunittest/reporters.py 2015-09-05 15:57:08 UTC (rev 66112) @@ -690,7 +690,7 @@ status=returncode_to_success_html_par(returncode), )) - # TODO: include optionaly hyper link to test suite + # TODO: include optionally hyper link to test suite # TODO: file_path is reconstucted in a naive way # file_path should be stored in the module/test file object and just used here summary_section = ( Modified: grass/trunk/lib/symbol/README =================================================================== --- grass/trunk/lib/symbol/README 2015-09-05 15:56:17 UTC (rev 66111) +++ grass/trunk/lib/symbol/README 2015-09-05 15:57:08 UTC (rev 66112) @@ -64,7 +64,7 @@ ARC X Y R A1 A2 [C] Arc specified by center (X Y), radius (R), start/end angle in degrees (A1/A2) - and optionaly direction (C for clockwise, default counter clockwise) + and optionally direction (C for clockwise, default counter clockwise) Note degrees are polar theta not navigational, i.e. 0 is east and values increase counter-clockwise from there. Reducing the angle from a full circle does not make it draw like a pacman but rather Modified: grass/trunk/locale/po/grassmods_ar.po =================================================================== --- grass/trunk/locale/po/grassmods_ar.po 2015-09-05 15:56:17 UTC (rev 66111) +++ grass/trunk/locale/po/grassmods_ar.po 2015-09-05 15:57:08 UTC (rev 66112) @@ -6863,7 +6863,7 @@ msgstr "??? ??????? ????????? ???????" #: ../vector/v.build/main.c:40 -msgid "Optionaly also checks for topological errors." +msgid "Optionally also checks for topological errors." msgstr "" #: ../vector/v.build/main.c:44 Modified: grass/trunk/locale/po/grassmods_cs.po =================================================================== --- grass/trunk/locale/po/grassmods_cs.po 2015-09-05 15:56:17 UTC (rev 66111) +++ grass/trunk/locale/po/grassmods_cs.po 2015-09-05 15:57:08 UTC (rev 66112) @@ -6880,7 +6880,7 @@ msgstr "Vytvo?? topologii vektorov? vrstvy." #: ../vector/v.build/main.c:40 -msgid "Optionaly also checks for topological errors." +msgid "Optionally also checks for topological errors." msgstr "" #: ../vector/v.build/main.c:44 Modified: grass/trunk/locale/po/grassmods_de.po =================================================================== --- grass/trunk/locale/po/grassmods_de.po 2015-09-05 15:56:17 UTC (rev 66111) +++ grass/trunk/locale/po/grassmods_de.po 2015-09-05 15:57:08 UTC (rev 66112) @@ -6775,7 +6775,7 @@ msgstr "Erzeugt Topologie f?r GRASS Vektorkarten." #: ../vector/v.build/main.c:40 -msgid "Optionaly also checks for topological errors." +msgid "Optionally also checks for topological errors." msgstr "" #: ../vector/v.build/main.c:44 Modified: grass/trunk/locale/po/grassmods_el.po =================================================================== --- grass/trunk/locale/po/grassmods_el.po 2015-09-05 15:56:17 UTC (rev 66111) +++ grass/trunk/locale/po/grassmods_el.po 2015-09-05 15:57:08 UTC (rev 66112) @@ -6613,7 +6613,7 @@ msgstr "???????? ????????? ????????????? ?????" #: ../vector/v.build/main.c:40 -msgid "Optionaly also checks for topological errors." +msgid "Optionally also checks for topological errors." msgstr "" #: ../vector/v.build/main.c:44 Modified: grass/trunk/locale/po/grassmods_es.po =================================================================== --- grass/trunk/locale/po/grassmods_es.po 2015-09-05 15:56:17 UTC (rev 66111) +++ grass/trunk/locale/po/grassmods_es.po 2015-09-05 15:57:08 UTC (rev 66112) @@ -6870,7 +6870,7 @@ msgstr "Crea topolog?a para mapa vectorial." #: ../vector/v.build/main.c:40 -msgid "Optionaly also checks for topological errors." +msgid "Optionally also checks for topological errors." msgstr "Opcionalmente revisa tambi?n errores topolog?cos." #: ../vector/v.build/main.c:44 Modified: grass/trunk/locale/po/grassmods_fi.po =================================================================== --- grass/trunk/locale/po/grassmods_fi.po 2015-09-05 15:56:17 UTC (rev 66111) +++ grass/trunk/locale/po/grassmods_fi.po 2015-09-05 15:57:08 UTC (rev 66112) @@ -6341,7 +6341,7 @@ msgstr "" #: ../vector/v.build/main.c:40 -msgid "Optionaly also checks for topological errors." +msgid "Optionally also checks for topological errors." msgstr "" #: ../vector/v.build/main.c:44 Modified: grass/trunk/locale/po/grassmods_fr.po =================================================================== --- grass/trunk/locale/po/grassmods_fr.po 2015-09-05 15:56:17 UTC (rev 66111) +++ grass/trunk/locale/po/grassmods_fr.po 2015-09-05 15:57:08 UTC (rev 66112) @@ -7139,7 +7139,7 @@ msgstr "Cr?er des icones pour le fichier vecteur GRASS et les attributs li?s" #: ../vector/v.build/main.c:40 -msgid "Optionaly also checks for topological errors." +msgid "Optionally also checks for topological errors." msgstr "" #: ../vector/v.build/main.c:44 Modified: grass/trunk/locale/po/grassmods_it.po =================================================================== --- grass/trunk/locale/po/grassmods_it.po 2015-09-05 15:56:17 UTC (rev 66111) +++ grass/trunk/locale/po/grassmods_it.po 2015-09-05 15:57:08 UTC (rev 66112) @@ -6769,7 +6769,7 @@ msgstr "Crea etichette per vettoriali GRASS e attributi associati" #: ../vector/v.build/main.c:40 -msgid "Optionaly also checks for topological errors." +msgid "Optionally also checks for topological errors." msgstr "" #: ../vector/v.build/main.c:44 Modified: grass/trunk/locale/po/grassmods_ja.po =================================================================== --- grass/trunk/locale/po/grassmods_ja.po 2015-09-05 15:56:17 UTC (rev 66111) +++ grass/trunk/locale/po/grassmods_ja.po 2015-09-05 15:57:08 UTC (rev 66112) @@ -6789,7 +6789,7 @@ msgstr "??????????????????????" #: ../vector/v.build/main.c:40 -msgid "Optionaly also checks for topological errors." +msgid "Optionally also checks for topological errors." msgstr "" #: ../vector/v.build/main.c:44 Modified: grass/trunk/locale/po/grassmods_ko.po =================================================================== --- grass/trunk/locale/po/grassmods_ko.po 2015-09-05 15:56:17 UTC (rev 66111) +++ grass/trunk/locale/po/grassmods_ko.po 2015-09-05 15:57:08 UTC (rev 66112) @@ -6630,7 +6630,7 @@ msgstr "??? ????" #: ../vector/v.build/main.c:40 -msgid "Optionaly also checks for topological errors." +msgid "Optionally also checks for topological errors." msgstr "" #: ../vector/v.build/main.c:44 Modified: grass/trunk/locale/po/grassmods_lv.po =================================================================== --- grass/trunk/locale/po/grassmods_lv.po 2015-09-05 15:56:17 UTC (rev 66111) +++ grass/trunk/locale/po/grassmods_lv.po 2015-09-05 15:57:08 UTC (rev 66112) @@ -6870,7 +6870,7 @@ msgstr "Vektorkartes nosaukums" #: ../vector/v.build/main.c:40 -msgid "Optionaly also checks for topological errors." +msgid "Optionally also checks for topological errors." msgstr "" #: ../vector/v.build/main.c:44 Modified: grass/trunk/locale/po/grassmods_pl.po =================================================================== --- grass/trunk/locale/po/grassmods_pl.po 2015-09-05 15:56:17 UTC (rev 66111) +++ grass/trunk/locale/po/grassmods_pl.po 2015-09-05 15:57:08 UTC (rev 66112) @@ -6805,7 +6805,7 @@ msgstr "Tworzy topologi? dla wektorowej mapy GRASS." #: ../vector/v.build/main.c:40 -msgid "Optionaly also checks for topological errors." +msgid "Optionally also checks for topological errors." msgstr "" #: ../vector/v.build/main.c:44 Modified: grass/trunk/locale/po/grassmods_pt.po =================================================================== --- grass/trunk/locale/po/grassmods_pt.po 2015-09-05 15:56:17 UTC (rev 66111) +++ grass/trunk/locale/po/grassmods_pt.po 2015-09-05 15:57:08 UTC (rev 66112) @@ -6958,7 +6958,7 @@ "relacionados." #: ../vector/v.build/main.c:40 -msgid "Optionaly also checks for topological errors." +msgid "Optionally also checks for topological errors." msgstr "" #: ../vector/v.build/main.c:44 Modified: grass/trunk/locale/po/grassmods_pt_br.po =================================================================== --- grass/trunk/locale/po/grassmods_pt_br.po 2015-09-05 15:56:17 UTC (rev 66111) +++ grass/trunk/locale/po/grassmods_pt_br.po 2015-09-05 15:57:08 UTC (rev 66112) @@ -6951,7 +6951,7 @@ "relacionados." #: ../vector/v.build/main.c:40 -msgid "Optionaly also checks for topological errors." +msgid "Optionally also checks for topological errors." msgstr "" #: ../vector/v.build/main.c:44 Modified: grass/trunk/locale/po/grassmods_ro.po =================================================================== --- grass/trunk/locale/po/grassmods_ro.po 2015-09-05 15:56:17 UTC (rev 66111) +++ grass/trunk/locale/po/grassmods_ro.po 2015-09-05 15:57:08 UTC (rev 66112) @@ -6394,7 +6394,7 @@ msgstr "" #: ../vector/v.build/main.c:40 -msgid "Optionaly also checks for topological errors." +msgid "Optionally also checks for topological errors." msgstr "" #: ../vector/v.build/main.c:44 Modified: grass/trunk/locale/po/grassmods_ru.po =================================================================== --- grass/trunk/locale/po/grassmods_ru.po 2015-09-05 15:56:17 UTC (rev 66111) +++ grass/trunk/locale/po/grassmods_ru.po 2015-09-05 15:57:08 UTC (rev 66112) @@ -6853,7 +6853,7 @@ msgstr "??????? ????????? ??? ?????????? ???? GRASS." #: ../vector/v.build/main.c:40 -msgid "Optionaly also checks for topological errors." +msgid "Optionally also checks for topological errors." msgstr "" #: ../vector/v.build/main.c:44 Modified: grass/trunk/locale/po/grassmods_sl.po =================================================================== --- grass/trunk/locale/po/grassmods_sl.po 2015-09-05 15:56:17 UTC (rev 66111) +++ grass/trunk/locale/po/grassmods_sl.po 2015-09-05 15:57:08 UTC (rev 66112) @@ -6892,7 +6892,7 @@ msgstr "Ime vhodnega rastrskega sloja" #: ../vector/v.build/main.c:40 -msgid "Optionaly also checks for topological errors." +msgid "Optionally also checks for topological errors." msgstr "" #: ../vector/v.build/main.c:44 Modified: grass/trunk/locale/po/grassmods_th.po =================================================================== --- grass/trunk/locale/po/grassmods_th.po 2015-09-05 15:56:17 UTC (rev 66111) +++ grass/trunk/locale/po/grassmods_th.po 2015-09-05 15:57:08 UTC (rev 66112) @@ -1041,7 +1041,7 @@ "Either 'from_table' (optionally with 'where') can be used or 'select' " "option, but not 'from_table' and 'select' at the same time." msgstr "" -"???????????. ???????????? 'from_table' (optionaly with 'where') ???? 'select' " +"???????????. ???????????? 'from_table' (optionally with 'where') ???? 'select' " "option, ????????? 'from_table' ??? 'select' ????????" #: ../db/db.copy/main.c:46 @@ -6853,7 +6853,7 @@ msgstr "????? topology ?????? ?????????????? GRASS." #: ../vector/v.build/main.c:40 -msgid "Optionaly also checks for topological errors." +msgid "Optionally also checks for topological errors." msgstr "" #: ../vector/v.build/main.c:44 Modified: grass/trunk/locale/po/grassmods_tr.po =================================================================== --- grass/trunk/locale/po/grassmods_tr.po 2015-09-05 15:56:17 UTC (rev 66111) +++ grass/trunk/locale/po/grassmods_tr.po 2015-09-05 15:57:08 UTC (rev 66112) @@ -6767,7 +6767,7 @@ msgstr "GRASS vekt?r dosyas? i?in topoloji olu?turur." #: ../vector/v.build/main.c:40 -msgid "Optionaly also checks for topological errors." +msgid "Optionally also checks for topological errors." msgstr "" #: ../vector/v.build/main.c:44 Modified: grass/trunk/locale/po/grassmods_vi.po =================================================================== --- grass/trunk/locale/po/grassmods_vi.po 2015-09-05 15:56:17 UTC (rev 66111) +++ grass/trunk/locale/po/grassmods_vi.po 2015-09-05 15:57:08 UTC (rev 66112) @@ -6857,7 +6857,7 @@ msgstr "T?o t?p? cho b?n ?? vector c?a GRASS." #: ../vector/v.build/main.c:40 -msgid "Optionaly also checks for topological errors." +msgid "Optionally also checks for topological errors." msgstr "" #: ../vector/v.build/main.c:44 Modified: grass/trunk/locale/po/grassmods_zh.po =================================================================== --- grass/trunk/locale/po/grassmods_zh.po 2015-09-05 15:56:17 UTC (rev 66111) +++ grass/trunk/locale/po/grassmods_zh.po 2015-09-05 15:57:08 UTC (rev 66112) @@ -6856,7 +6856,7 @@ msgstr "? GRASS ??????????????" #: ../vector/v.build/main.c:40 -msgid "Optionaly also checks for topological errors." +msgid "Optionally also checks for topological errors." msgstr "" #: ../vector/v.build/main.c:44 Modified: grass/trunk/locale/po/grasswxpy_cs.po =================================================================== --- grass/trunk/locale/po/grasswxpy_cs.po 2015-09-05 15:56:17 UTC (rev 66111) +++ grass/trunk/locale/po/grasswxpy_cs.po 2015-09-05 15:57:08 UTC (rev 66112) @@ -12207,7 +12207,7 @@ #: ../gui/wxpython/menustrings.py:560 ../gui/wxpython/menustrings.py:1461 msgid "" -"Creates topology for vector map. Optionaly also checks for topological " +"Creates topology for vector map. Optionally also checks for topological " "errors." msgstr "" "Vytvo?? topologii vektorov? vrstvy. Voliteln? tak? zkontroluje topologick? " Modified: grass/trunk/locale/po/grasswxpy_de.po =================================================================== --- grass/trunk/locale/po/grasswxpy_de.po 2015-09-05 15:56:17 UTC (rev 66111) +++ grass/trunk/locale/po/grasswxpy_de.po 2015-09-05 15:57:08 UTC (rev 66112) @@ -12065,7 +12065,7 @@ #: ../gui/wxpython/menustrings.py:560 ../gui/wxpython/menustrings.py:1461 msgid "" -"Creates topology for vector map. Optionaly also checks for topological " +"Creates topology for vector map. Optionally also checks for topological " "errors." msgstr "" Modified: grass/trunk/locale/po/grasswxpy_el.po =================================================================== --- grass/trunk/locale/po/grasswxpy_el.po 2015-09-05 15:56:17 UTC (rev 66111) +++ grass/trunk/locale/po/grasswxpy_el.po 2015-09-05 15:57:08 UTC (rev 66112) @@ -11401,7 +11401,7 @@ #: ../gui/wxpython/menustrings.py:560 ../gui/wxpython/menustrings.py:1461 msgid "" -"Creates topology for vector map. Optionaly also checks for topological " +"Creates topology for vector map. Optionally also checks for topological " "errors." msgstr "" Modified: grass/trunk/locale/po/grasswxpy_es.po =================================================================== --- grass/trunk/locale/po/grasswxpy_es.po 2015-09-05 15:56:17 UTC (rev 66111) +++ grass/trunk/locale/po/grasswxpy_es.po 2015-09-05 15:57:08 UTC (rev 66112) @@ -12262,7 +12262,7 @@ #: ../gui/wxpython/menustrings.py:560 ../gui/wxpython/menustrings.py:1461 msgid "" -"Creates topology for vector map. Optionaly also checks for topological " +"Creates topology for vector map. Optionally also checks for topological " "errors." msgstr "" Modified: grass/trunk/locale/po/grasswxpy_fi.po =================================================================== --- grass/trunk/locale/po/grasswxpy_fi.po 2015-09-05 15:56:17 UTC (rev 66111) +++ grass/trunk/locale/po/grasswxpy_fi.po 2015-09-05 15:57:08 UTC (rev 66112) @@ -11067,7 +11067,7 @@ #: ../gui/wxpython/menustrings.py:560 ../gui/wxpython/menustrings.py:1461 msgid "" -"Creates topology for vector map. Optionaly also checks for topological " +"Creates topology for vector map. Optionally also checks for topological " "errors." msgstr "" Modified: grass/trunk/locale/po/grasswxpy_fr.po =================================================================== --- grass/trunk/locale/po/grasswxpy_fr.po 2015-09-05 15:56:17 UTC (rev 66111) +++ grass/trunk/locale/po/grasswxpy_fr.po 2015-09-05 15:57:08 UTC (rev 66112) @@ -11909,7 +11909,7 @@ #: ../gui/wxpython/menustrings.py:560 ../gui/wxpython/menustrings.py:1461 msgid "" -"Creates topology for vector map. Optionaly also checks for topological " +"Creates topology for vector map. Optionally also checks for topological " "errors." msgstr "" "Cr?er la topologie pour la carte vecteur. En option, v?rifie les erreurs de " Modified: grass/trunk/locale/po/grasswxpy_id.po =================================================================== --- grass/trunk/locale/po/grasswxpy_id.po 2015-09-05 15:56:17 UTC (rev 66111) +++ grass/trunk/locale/po/grasswxpy_id.po 2015-09-05 15:57:08 UTC (rev 66112) @@ -12403,7 +12403,7 @@ #: ../gui/wxpython/menustrings.py:560 ../gui/wxpython/menustrings.py:1461 msgid "" -"Creates topology for vector map. Optionaly also checks for topological " +"Creates topology for vector map. Optionally also checks for topological " "errors." msgstr "" Modified: grass/trunk/locale/po/grasswxpy_it.po =================================================================== --- grass/trunk/locale/po/grasswxpy_it.po 2015-09-05 15:56:17 UTC (rev 66111) +++ grass/trunk/locale/po/grasswxpy_it.po 2015-09-05 15:57:08 UTC (rev 66112) @@ -11574,7 +11574,7 @@ #: ../gui/wxpython/menustrings.py:560 ../gui/wxpython/menustrings.py:1461 msgid "" -"Creates topology for vector map. Optionaly also checks for topological " +"Creates topology for vector map. Optionally also checks for topological " "errors." msgstr "" Modified: grass/trunk/locale/po/grasswxpy_ja.po =================================================================== --- grass/trunk/locale/po/grasswxpy_ja.po 2015-09-05 15:56:17 UTC (rev 66111) +++ grass/trunk/locale/po/grasswxpy_ja.po 2015-09-05 15:57:08 UTC (rev 66112) @@ -11996,7 +11996,7 @@ #: ../gui/wxpython/menustrings.py:560 ../gui/wxpython/menustrings.py:1461 msgid "" -"Creates topology for vector map. Optionaly also checks for topological " +"Creates topology for vector map. Optionally also checks for topological " "errors." msgstr "" Modified: grass/trunk/locale/po/grasswxpy_ko.po =================================================================== --- grass/trunk/locale/po/grasswxpy_ko.po 2015-09-05 15:56:17 UTC (rev 66111) +++ grass/trunk/locale/po/grasswxpy_ko.po 2015-09-05 15:57:08 UTC (rev 66112) @@ -11047,7 +11047,7 @@ #: ../gui/wxpython/menustrings.py:560 ../gui/wxpython/menustrings.py:1461 msgid "" -"Creates topology for vector map. Optionaly also checks for topological " +"Creates topology for vector map. Optionally also checks for topological " "errors." msgstr "" Modified: grass/trunk/locale/po/grasswxpy_lv.po =================================================================== --- grass/trunk/locale/po/grasswxpy_lv.po 2015-09-05 15:56:17 UTC (rev 66111) +++ grass/trunk/locale/po/grasswxpy_lv.po 2015-09-05 15:57:08 UTC (rev 66112) @@ -11326,7 +11326,7 @@ #: ../gui/wxpython/menustrings.py:560 ../gui/wxpython/menustrings.py:1461 msgid "" -"Creates topology for vector map. Optionaly also checks for topological " +"Creates topology for vector map. Optionally also checks for topological " "errors." msgstr "" Modified: grass/trunk/locale/po/grasswxpy_ml.po =================================================================== --- grass/trunk/locale/po/grasswxpy_ml.po 2015-09-05 15:56:17 UTC (rev 66111) +++ grass/trunk/locale/po/grasswxpy_ml.po 2015-09-05 15:57:08 UTC (rev 66112) @@ -11768,7 +11768,7 @@ #: ../gui/wxpython/menustrings.py:560 ../gui/wxpython/menustrings.py:1461 msgid "" -"Creates topology for vector map. Optionaly also checks for topological " +"Creates topology for vector map. Optionally also checks for topological " "errors." msgstr "" Modified: grass/trunk/locale/po/grasswxpy_pl.po =================================================================== --- grass/trunk/locale/po/grasswxpy_pl.po 2015-09-05 15:56:17 UTC (rev 66111) +++ grass/trunk/locale/po/grasswxpy_pl.po 2015-09-05 15:57:08 UTC (rev 66112) @@ -11784,7 +11784,7 @@ #: ../gui/wxpython/menustrings.py:560 ../gui/wxpython/menustrings.py:1461 msgid "" -"Creates topology for vector map. Optionaly also checks for topological " +"Creates topology for vector map. Optionally also checks for topological " "errors." msgstr "" Modified: grass/trunk/locale/po/grasswxpy_pt.po =================================================================== --- grass/trunk/locale/po/grasswxpy_pt.po 2015-09-05 15:56:17 UTC (rev 66111) +++ grass/trunk/locale/po/grasswxpy_pt.po 2015-09-05 15:57:08 UTC (rev 66112) @@ -12586,7 +12586,7 @@ #: ../gui/wxpython/menustrings.py:560 ../gui/wxpython/menustrings.py:1461 msgid "" -"Creates topology for vector map. Optionaly also checks for topological " +"Creates topology for vector map. Optionally also checks for topological " "errors." msgstr "" Modified: grass/trunk/locale/po/grasswxpy_pt_br.po =================================================================== --- grass/trunk/locale/po/grasswxpy_pt_br.po 2015-09-05 15:56:17 UTC (rev 66111) +++ grass/trunk/locale/po/grasswxpy_pt_br.po 2015-09-05 15:57:08 UTC (rev 66112) @@ -12873,7 +12873,7 @@ #: ../gui/wxpython/menustrings.py:560 ../gui/wxpython/menustrings.py:1461 msgid "" -"Creates topology for vector map. Optionaly also checks for topological " +"Creates topology for vector map. Optionally also checks for topological " "errors." msgstr "" Modified: grass/trunk/locale/po/grasswxpy_ro.po =================================================================== --- grass/trunk/locale/po/grasswxpy_ro.po 2015-09-05 15:56:17 UTC (rev 66111) +++ grass/trunk/locale/po/grasswxpy_ro.po 2015-09-05 15:57:08 UTC (rev 66112) @@ -12118,7 +12118,7 @@ #: ../gui/wxpython/menustrings.py:560 ../gui/wxpython/menustrings.py:1461 msgid "" -"Creates topology for vector map. Optionaly also checks for topological " +"Creates topology for vector map. Optionally also checks for topological " "errors." msgstr "" Modified: grass/trunk/locale/po/grasswxpy_ru.po =================================================================== --- grass/trunk/locale/po/grasswxpy_ru.po 2015-09-05 15:56:17 UTC (rev 66111) +++ grass/trunk/locale/po/grasswxpy_ru.po 2015-09-05 15:57:08 UTC (rev 66112) @@ -12343,7 +12343,7 @@ #: ../gui/wxpython/menustrings.py:560 ../gui/wxpython/menustrings.py:1461 msgid "" -"Creates topology for vector map. Optionaly also checks for topological " +"Creates topology for vector map. Optionally also checks for topological " "errors." msgstr "" Modified: grass/trunk/locale/po/grasswxpy_th.po =================================================================== --- grass/trunk/locale/po/grasswxpy_th.po 2015-09-05 15:56:17 UTC (rev 66111) +++ grass/trunk/locale/po/grasswxpy_th.po 2015-09-05 15:57:08 UTC (rev 66112) @@ -11854,7 +11854,7 @@ #: ../gui/wxpython/menustrings.py:560 ../gui/wxpython/menustrings.py:1461 msgid "" -"Creates topology for vector map. Optionaly also checks for topological " +"Creates topology for vector map. Optionally also checks for topological " "errors." msgstr "" Modified: grass/trunk/locale/po/grasswxpy_tr.po =================================================================== --- grass/trunk/locale/po/grasswxpy_tr.po 2015-09-05 15:56:17 UTC (rev 66111) +++ grass/trunk/locale/po/grasswxpy_tr.po 2015-09-05 15:57:08 UTC (rev 66112) @@ -12283,7 +12283,7 @@ #: ../gui/wxpython/menustrings.py:560 ../gui/wxpython/menustrings.py:1461 msgid "" -"Creates topology for vector map. Optionaly also checks for topological " +"Creates topology for vector map. Optionally also checks for topological " "errors." msgstr "" Modified: grass/trunk/locale/po/grasswxpy_vi.po =================================================================== --- grass/trunk/locale/po/grasswxpy_vi.po 2015-09-05 15:56:17 UTC (rev 66111) +++ grass/trunk/locale/po/grasswxpy_vi.po 2015-09-05 15:57:08 UTC (rev 66112) @@ -12406,7 +12406,7 @@ #: ../gui/wxpython/menustrings.py:560 ../gui/wxpython/menustrings.py:1461 msgid "" -"Creates topology for vector map. Optionaly also checks for topological " +"Creates topology for vector map. Optionally also checks for topological " "errors." msgstr "" Modified: grass/trunk/locale/po/grasswxpy_zh.po =================================================================== --- grass/trunk/locale/po/grasswxpy_zh.po 2015-09-05 15:56:17 UTC (rev 66111) +++ grass/trunk/locale/po/grasswxpy_zh.po 2015-09-05 15:57:08 UTC (rev 66112) @@ -11919,7 +11919,7 @@ #: ../gui/wxpython/menustrings.py:560 ../gui/wxpython/menustrings.py:1461 msgid "" -"Creates topology for vector map. Optionaly also checks for topological " +"Creates topology for vector map. Optionally also checks for topological " "errors." msgstr "" Modified: grass/trunk/scripts/d.polar/d.polar.html =================================================================== --- grass/trunk/scripts/d.polar/d.polar.html 2015-09-05 15:56:17 UTC (rev 66111) +++ grass/trunk/scripts/d.polar/d.polar.html 2015-09-05 15:57:08 UTC (rev 66112) @@ -20,7 +20,7 @@

NOTES

If the output parameter is used, the diagram is generated -as EPS file. If the -x flag is used xgraph is lauched. +as EPS file. If the -x flag is used xgraph is launched. Otherwise d.polar will use d.graph to draw the plot in the current display frame.

If d.polar is used on an aspect map generated by Modified: grass/trunk/scripts/r.pack/r.pack.html =================================================================== --- grass/trunk/scripts/r.pack/r.pack.html 2015-09-05 15:56:17 UTC (rev 66111) +++ grass/trunk/scripts/r.pack/r.pack.html 2015-09-05 15:57:08 UTC (rev 66112) @@ -9,7 +9,7 @@

NOTES

Name of the pack file is determined by default from input -parameter. Optionaly the name can be given by output parameter. +parameter. Optionally the name can be given by output parameter. Currently only 2D raster maps are supported. Modified: grass/trunk/scripts/r.unpack/r.unpack.html =================================================================== --- grass/trunk/scripts/r.unpack/r.unpack.html 2015-09-05 15:56:17 UTC (rev 66111) +++ grass/trunk/scripts/r.unpack/r.unpack.html 2015-09-05 15:57:08 UTC (rev 66112) @@ -5,7 +5,7 @@

NOTES

Name of the raster map is determined by default from pack file -internals. Optionaly the name can be given by output parameter. +internals. Optionally the name can be given by output parameter. Currently only 2D raster maps are supported. Modified: grass/trunk/scripts/v.krige/v.krige.html =================================================================== --- grass/trunk/scripts/v.krige/v.krige.html 2015-09-05 15:56:17 UTC (rev 66111) +++ grass/trunk/scripts/v.krige/v.krige.html 2015-09-05 15:57:08 UTC (rev 66112) @@ -163,12 +163,12 @@

SEE ALSO

R package
gstat, -mantained by Edzer J. Pebesma and others +maintained by Edzer J. Pebesma and others
R package spgrass6, -mantained by Roger Bivand +maintained by Roger Bivand
The Short Modified: grass/trunk/scripts/v.pack/v.pack.html =================================================================== --- grass/trunk/scripts/v.pack/v.pack.html 2015-09-05 15:56:17 UTC (rev 66111) +++ grass/trunk/scripts/v.pack/v.pack.html 2015-09-05 15:57:08 UTC (rev 66112) @@ -10,7 +10,7 @@

NOTES

Name of the pack file is determined by default from input -parameter. Optionaly the name can be given by output parameter. +parameter. Optionally the name can be given by output parameter.

EXAMPLE

Modified: grass/trunk/scripts/v.unpack/v.unpack.html =================================================================== --- grass/trunk/scripts/v.unpack/v.unpack.html 2015-09-05 15:56:17 UTC (rev 66111) +++ grass/trunk/scripts/v.unpack/v.unpack.html 2015-09-05 15:57:08 UTC (rev 66112) @@ -5,7 +5,7 @@

NOTES

Name of the vector map is determined by default from pack file -internals. Optionaly the name can be given by output parameter. +internals. Optionally the name can be given by output parameter.

EXAMPLE

Modified: grass/trunk/vector/v.build/main.c =================================================================== --- grass/trunk/vector/v.build/main.c 2015-09-05 15:56:17 UTC (rev 66111) +++ grass/trunk/vector/v.build/main.c 2015-09-05 15:57:08 UTC (rev 66112) @@ -37,7 +37,7 @@ G_add_keyword(_("topology")); G_add_keyword(_("geometry")); module->label = _("Creates topology for vector map."); - module->description = _("Optionaly also checks for topological errors."); + module->description = _("Optionally also checks for topological errors."); map_opt = G_define_standard_option(G_OPT_V_MAP); map_opt->label = NULL; From svn_grass at osgeo.org Sat Sep 5 09:13:18 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sat, 5 Sep 2015 09:13:18 -0700 Subject: [GRASS-SVN] r66113 - in grass/trunk: doc general/g.list general/g.remove general/g.remove/testsuite general/g.rename/testsuite gui/images gui/wxpython/core/testsuite gui/wxpython/docs/wxgui_sphinx gui/wxpython/docs/wxgui_sphinx/src imagery/i.albedo imagery/i.modis.qc lib/cdhc lib/cluster lib/gis/testsuite lib/manage lib/pngdriver lib/psdriver lib/python/docs/src lib/python/exceptions lib/python/exceptions/testsuite lib/python/gunittest lib/python/gunittest/testsuite lib/python/gunittest/testsuite/data lib/python/pygrass/gis/testsuite lib/python/pygrass/messages/testsuite lib/python/pygrass/modules/grid/testsuite lib/python/pygrass/modules/interface lib/python/pygrass/modules/interface/testsuite lib/python/pygrass/modules/testsuite lib/python/pygrass/raster/testsuite lib/python/pygrass/raster/testsuite/data lib/python/pygrass/rpc lib/python/pygrass/rpc/testsuite lib/python/pygrass/shell/testsuite lib/python/pygrass/testsuite lib/python/pygrass/vector/testsuite lib/python/script/testsuite lib/python/temporal lib/python/temporal/testsuite lib/raster lib/raster3d lib/raster3d/testsuite lib/vector lib/vector/Vlib lib/vector/testsuite man raster/r.gwflow/testsuite raster/r.horizon raster/r.horizon/testsuite raster/r.mapcalc/testsuite raster/r.series.interp/testsuite raster/r.series.interp/testsuite/data raster/r.slope.aspect/testsuite/data raster3d/r3.flow/testsuite/data scripts/d.what.rast scripts/d.what.vect scripts/g.extension/testsuite scripts/g.extension/testsuite/data scripts/g.extension/testsuite/data/sample_modules/r.plus.example scripts/r.import/testsuite scripts/r.import/testsuite/data scripts/v.what.strds/testsuite temporal/t.connect/testsuite temporal/t.rast.aggregate/testsuite temporal/t.rast.algebra/testsuite temporal/t.rast.contour temporal/t.rast.contour/testsuite temporal/t.rast.extract/testsuite temporal/t.rast.gapfill/testsuite temporal/t.rast.to.rast3/testsuite temporal/t.rast.to.vect temporal/t.rast.to.vect/testsuite temporal/t.rast.what temporal/t. rast.what/testsuite temporal/t.rast3d.algebra/testsuite temporal/t.rast3d.extract/testsuite temporal/t.unregister/testsuite temporal/t.vect.algebra/testsuite vector/v.category/testsuite vector/v.edit/testsuite vector/v.in.ascii/testsuite vector/v.net/testsuite vector/v.to.3d/testsuite vector/v.what/testsuite/data Message-ID: <20150905161318.9420C390136@trac.osgeo.org> Author: neteler Date: 2015-09-05 09:13:18 -0700 (Sat, 05 Sep 2015) New Revision: 66113 Modified: grass/trunk/doc/README grass/trunk/doc/gi_3dview.jpg grass/trunk/doc/gi_c.jpg grass/trunk/doc/gi_cartography.jpg grass/trunk/doc/gi_database.jpg grass/trunk/doc/gi_display.jpg grass/trunk/doc/gi_gallery.jpg grass/trunk/doc/gi_general.jpg grass/trunk/doc/gi_gui.jpg grass/trunk/doc/gi_imagery.jpg grass/trunk/doc/gi_misc.jpg grass/trunk/doc/gi_python.jpg grass/trunk/doc/gi_raster.jpg grass/trunk/doc/gi_raster3d.jpg grass/trunk/doc/gi_temporal.jpg grass/trunk/doc/gi_vector.jpg grass/trunk/doc/grass_database.svg grass/trunk/general/g.list/global.h grass/trunk/general/g.list/list.c grass/trunk/general/g.remove/construct_pattern.c grass/trunk/general/g.remove/testsuite/test_g_remove.py grass/trunk/general/g.rename/testsuite/test_overwrite.py grass/trunk/gui/images/startup_banner.txt grass/trunk/gui/wxpython/core/testsuite/toolboxes.sh grass/trunk/gui/wxpython/docs/wxgui_sphinx/Makefile grass/trunk/gui/wxpython/docs/wxgui_sphinx/conf.py grass/trunk/gui/wxpython/docs/wxgui_sphinx/make.bat grass/trunk/gui/wxpython/docs/wxgui_sphinx/src/index.rst grass/trunk/gui/wxpython/docs/wxgui_sphinx/src/wxgui_libraries.rst grass/trunk/gui/wxpython/docs/wxgui_sphinx/src/wxgui_toolboxes.rst grass/trunk/gui/wxpython/docs/wxgui_sphinx/src/wxgui_tools.rst grass/trunk/imagery/i.albedo/bb_alb_landsat8.c grass/trunk/imagery/i.modis.qc/mod09CMGa.c grass/trunk/imagery/i.modis.qc/mod09CMGc.c grass/trunk/imagery/i.modis.qc/mod09CMGd.c grass/trunk/imagery/i.modis.qc/mod09CMGe.c grass/trunk/imagery/i.modis.qc/mod09CMGia.c grass/trunk/imagery/i.modis.qc/mod09CMGib.c grass/trunk/imagery/i.modis.qc/mod09CMGic.c grass/trunk/imagery/i.modis.qc/mod09CMGid.c grass/trunk/imagery/i.modis.qc/mod09CMGie.c grass/trunk/imagery/i.modis.qc/mod09CMGif.c grass/trunk/imagery/i.modis.qc/mod09CMGig.c grass/trunk/imagery/i.modis.qc/mod09CMGih.c grass/trunk/imagery/i.modis.qc/mod09CMGii.c grass/trunk/imagery/i.modis.qc/mod09CMGij.c grass/trunk/imagery/i.modis.qc/mod09CMGik.c grass/trunk/imagery/i.modis.qc/mod09CMGil.c grass/trunk/imagery/i.modis.qc/mod09CMGim.c grass/trunk/imagery/i.modis.qc/mod09CMGin.c grass/trunk/lib/cdhc/cdhclib.dox grass/trunk/lib/cluster/clusterlib.dox grass/trunk/lib/gis/testsuite/gis_lib_env_test.py grass/trunk/lib/gis/testsuite/gis_lib_tokenize.py grass/trunk/lib/manage/managelib.dox grass/trunk/lib/pngdriver/pngdriverlib.dox grass/trunk/lib/psdriver/psdriverlib.dox grass/trunk/lib/python/docs/src/gunittest_testing.rst grass/trunk/lib/python/docs/src/script_intro.rst grass/trunk/lib/python/docs/src/temporal_framework.rst grass/trunk/lib/python/exceptions/Makefile grass/trunk/lib/python/exceptions/__init__.py grass/trunk/lib/python/exceptions/testsuite/test_ScriptError.py grass/trunk/lib/python/gunittest/gmodules.py grass/trunk/lib/python/gunittest/main.py grass/trunk/lib/python/gunittest/testsuite/data/simple_vector_map_ascii_4p_2l_2c_3b_dp14.txt grass/trunk/lib/python/gunittest/testsuite/data/simple_vector_map_ascii_4p_2l_2c_3b_dp14_diff_header.txt grass/trunk/lib/python/gunittest/testsuite/data/simple_vector_map_ascii_4p_2l_2c_3b_dp14_modified.txt grass/trunk/lib/python/gunittest/testsuite/test_module_assertions.py grass/trunk/lib/python/gunittest/utils.py grass/trunk/lib/python/pygrass/gis/testsuite/test_doctests.py grass/trunk/lib/python/pygrass/gis/testsuite/test_gis.py grass/trunk/lib/python/pygrass/messages/testsuite/test_doctests.py grass/trunk/lib/python/pygrass/modules/grid/testsuite/test_doctests.py grass/trunk/lib/python/pygrass/modules/interface/docstring.py grass/trunk/lib/python/pygrass/modules/interface/testsuite/test_doctests.py grass/trunk/lib/python/pygrass/modules/testsuite/test_doctests.py grass/trunk/lib/python/pygrass/raster/testsuite/data/a.png grass/trunk/lib/python/pygrass/raster/testsuite/data/b.png grass/trunk/lib/python/pygrass/raster/testsuite/data/c.png grass/trunk/lib/python/pygrass/raster/testsuite/data/d.png grass/trunk/lib/python/pygrass/raster/testsuite/data/e.png grass/trunk/lib/python/pygrass/raster/testsuite/test_category.py grass/trunk/lib/python/pygrass/raster/testsuite/test_doctests.py grass/trunk/lib/python/pygrass/raster/testsuite/test_history.py grass/trunk/lib/python/pygrass/raster/testsuite/test_numpy.py grass/trunk/lib/python/pygrass/raster/testsuite/test_raster.py grass/trunk/lib/python/pygrass/raster/testsuite/test_raster_img.py grass/trunk/lib/python/pygrass/raster/testsuite/test_raster_region.py grass/trunk/lib/python/pygrass/rpc/Makefile grass/trunk/lib/python/pygrass/rpc/__init__.py grass/trunk/lib/python/pygrass/rpc/base.py grass/trunk/lib/python/pygrass/rpc/testsuite/test_doctests.py grass/trunk/lib/python/pygrass/shell/testsuite/test_doctests.py grass/trunk/lib/python/pygrass/testsuite/test_doctests.py grass/trunk/lib/python/pygrass/vector/testsuite/test_doctests.py grass/trunk/lib/python/script/testsuite/test_doctests.py grass/trunk/lib/python/temporal/temporal_operator.py grass/trunk/lib/python/temporal/testsuite/test_doctests.py grass/trunk/lib/python/temporal/testsuite/unittests_temporal_algebra.py grass/trunk/lib/python/temporal/testsuite/unittests_temporal_algebra_grs.py grass/trunk/lib/python/temporal/testsuite/unittests_temporal_conditionals.py grass/trunk/lib/python/temporal/testsuite/unittests_temporal_raster3d_algebra.py grass/trunk/lib/python/temporal/testsuite/unittests_temporal_raster_algebra.py grass/trunk/lib/python/temporal/testsuite/unittests_temporal_raster_algebra_grs.py grass/trunk/lib/python/temporal/testsuite/unittests_temporal_raster_conditionals.py grass/trunk/lib/python/temporal/testsuite/unittests_temporal_vector_algebra.py grass/trunk/lib/raster/rast_to_img_string.c grass/trunk/lib/raster3d/gradient.c grass/trunk/lib/raster3d/testsuite/raster3d_lib_test.py grass/trunk/lib/vector/Vlib/geos_to_wktb.c grass/trunk/lib/vector/testsuite/test_topology_vgeneralize.sh grass/trunk/lib/vector/vectorlib_faq.dox grass/trunk/lib/vector/vectorlib_lists.dox grass/trunk/man/build_class_graphical.py grass/trunk/man/build_graphical_index.py grass/trunk/man/build_manual_gallery.py grass/trunk/raster/r.gwflow/testsuite/validation_7x7_grid.py grass/trunk/raster/r.gwflow/testsuite/validation_excavation.py grass/trunk/raster/r.horizon/rhorizon_polar_plot.png grass/trunk/raster/r.horizon/testsuite/test_r_horizon.py grass/trunk/raster/r.mapcalc/testsuite/test_r3_mapcalc.py grass/trunk/raster/r.series.interp/testsuite/data/infile_2.txt grass/trunk/raster/r.series.interp/testsuite/data/outfile_1.txt grass/trunk/raster/r.series.interp/testsuite/data/outfile_2.txt grass/trunk/raster/r.series.interp/testsuite/data/outfile_corrupt.txt grass/trunk/raster/r.series.interp/testsuite/interp_test.py grass/trunk/raster/r.slope.aspect/testsuite/data/fractal_surf.ascii grass/trunk/raster3d/r3.flow/testsuite/data/flowline.ascii grass/trunk/scripts/d.what.rast/Makefile grass/trunk/scripts/d.what.rast/d.what.rast.html grass/trunk/scripts/d.what.rast/d.what.rast.py grass/trunk/scripts/d.what.vect/Makefile grass/trunk/scripts/d.what.vect/d.what.vect.html grass/trunk/scripts/d.what.vect/d.what.vect.py grass/trunk/scripts/g.extension/testsuite/data/modules.xml grass/trunk/scripts/g.extension/testsuite/data/sample_modules/r.plus.example/Makefile grass/trunk/scripts/g.extension/testsuite/data/sample_modules/r.plus.example/r.plus.example.html grass/trunk/scripts/g.extension/testsuite/data/sample_modules/r.plus.example/r.plus.example.py grass/trunk/scripts/g.extension/testsuite/data/toolboxes.xml grass/trunk/scripts/g.extension/testsuite/doctest.sh grass/trunk/scripts/g.extension/testsuite/test_addons_modules.py grass/trunk/scripts/g.extension/testsuite/test_addons_toolboxes.py grass/trunk/scripts/r.import/testsuite/data/data2.asc.aux.xml grass/trunk/scripts/r.import/testsuite/test_r_import.py grass/trunk/scripts/v.what.strds/testsuite/test_what_strds.py grass/trunk/temporal/t.connect/testsuite/test_distr_tgis_db_raster.py grass/trunk/temporal/t.connect/testsuite/test_distr_tgis_db_raster3d.py grass/trunk/temporal/t.connect/testsuite/test_distr_tgis_db_vector.py grass/trunk/temporal/t.rast.aggregate/testsuite/test_aggregation_absolute.py grass/trunk/temporal/t.rast.aggregate/testsuite/test_aggregation_absolute_parallel.py grass/trunk/temporal/t.rast.aggregate/testsuite/test_aggregation_relative.py grass/trunk/temporal/t.rast.algebra/testsuite/test_raster_algebra.py grass/trunk/temporal/t.rast.algebra/testsuite/test_raster_algebra_fails.py grass/trunk/temporal/t.rast.algebra/testsuite/test_raster_algebra_granularity.py grass/trunk/temporal/t.rast.algebra/testsuite/test_raster_algebra_granularity_fails.py grass/trunk/temporal/t.rast.contour/Makefile grass/trunk/temporal/t.rast.contour/t.rast.contour.html grass/trunk/temporal/t.rast.contour/t.rast.contour.py grass/trunk/temporal/t.rast.contour/testsuite/test_convert.py grass/trunk/temporal/t.rast.extract/testsuite/test_extract.py grass/trunk/temporal/t.rast.gapfill/testsuite/test_gapfill.py grass/trunk/temporal/t.rast.to.rast3/testsuite/test_strds_to_rast3.py grass/trunk/temporal/t.rast.to.vect/Makefile grass/trunk/temporal/t.rast.to.vect/t.rast.to.vect.html grass/trunk/temporal/t.rast.to.vect/t.rast.to.vect.py grass/trunk/temporal/t.rast.to.vect/testsuite/test_to_vect.py grass/trunk/temporal/t.rast.what/Makefile grass/trunk/temporal/t.rast.what/t.rast.what.html grass/trunk/temporal/t.rast.what/t.rast.what.py grass/trunk/temporal/t.rast.what/testsuite/test_what.py grass/trunk/temporal/t.rast3d.algebra/testsuite/test_raster3d_algebra.py grass/trunk/temporal/t.rast3d.extract/testsuite/test_extract.py grass/trunk/temporal/t.unregister/testsuite/test_unregister.py grass/trunk/temporal/t.vect.algebra/testsuite/test_vector_algebra.py grass/trunk/vector/v.category/testsuite/copy_multiple_cats.sh grass/trunk/vector/v.edit/testsuite/select_all_flag.sh grass/trunk/vector/v.in.ascii/testsuite/test_csv.py grass/trunk/vector/v.net/testsuite/test_v_net.py grass/trunk/vector/v.to.3d/testsuite/test_vto3d.py grass/trunk/vector/v.what/testsuite/data/testing.ascii Log: svn propset Property changes on: grass/trunk/doc/README ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Added: svn:eol-style + native Property changes on: grass/trunk/doc/gi_3dview.jpg ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/jpeg Property changes on: grass/trunk/doc/gi_c.jpg ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/jpeg Property changes on: grass/trunk/doc/gi_cartography.jpg ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/jpeg Property changes on: grass/trunk/doc/gi_database.jpg ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/jpeg Property changes on: grass/trunk/doc/gi_display.jpg ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/jpeg Property changes on: grass/trunk/doc/gi_gallery.jpg ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/jpeg Property changes on: grass/trunk/doc/gi_general.jpg ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/jpeg Property changes on: grass/trunk/doc/gi_gui.jpg ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/jpeg Property changes on: grass/trunk/doc/gi_imagery.jpg ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/jpeg Property changes on: grass/trunk/doc/gi_misc.jpg ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/jpeg Property changes on: grass/trunk/doc/gi_python.jpg ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/jpeg Property changes on: grass/trunk/doc/gi_raster.jpg ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/jpeg Property changes on: grass/trunk/doc/gi_raster3d.jpg ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/jpeg Property changes on: grass/trunk/doc/gi_temporal.jpg ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/jpeg Property changes on: grass/trunk/doc/gi_vector.jpg ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/jpeg Property changes on: grass/trunk/doc/grass_database.svg ___________________________________________________________________ Added: svn:mime-type + image/svg+xml Property changes on: grass/trunk/general/g.list/global.h ___________________________________________________________________ Added: svn:mime-type + text/x-chdr Added: svn:eol-style + native Property changes on: grass/trunk/general/g.list/list.c ___________________________________________________________________ Added: svn:mime-type + text/x-csrc Added: svn:eol-style + native Property changes on: grass/trunk/general/g.remove/construct_pattern.c ___________________________________________________________________ Added: svn:mime-type + text/x-csrc Added: svn:eol-style + native Property changes on: grass/trunk/general/g.remove/testsuite/test_g_remove.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/general/g.rename/testsuite/test_overwrite.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/gui/images/startup_banner.txt ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Added: svn:eol-style + native Property changes on: grass/trunk/gui/wxpython/core/testsuite/toolboxes.sh ___________________________________________________________________ Added: svn:executable + * Added: svn:mime-type + text/x-sh Added: svn:eol-style + native Property changes on: grass/trunk/gui/wxpython/docs/wxgui_sphinx/Makefile ___________________________________________________________________ Added: svn:mime-type + text/x-makefile Added: svn:eol-style + native Property changes on: grass/trunk/gui/wxpython/docs/wxgui_sphinx/conf.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/gui/wxpython/docs/wxgui_sphinx/make.bat ___________________________________________________________________ Added: svn:mime-type + text/x-bat Added: svn:eol-style + CRLF Property changes on: grass/trunk/gui/wxpython/docs/wxgui_sphinx/src/index.rst ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Added: svn:eol-style + native Property changes on: grass/trunk/gui/wxpython/docs/wxgui_sphinx/src/wxgui_libraries.rst ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Added: svn:eol-style + native Property changes on: grass/trunk/gui/wxpython/docs/wxgui_sphinx/src/wxgui_toolboxes.rst ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Added: svn:eol-style + native Property changes on: grass/trunk/gui/wxpython/docs/wxgui_sphinx/src/wxgui_tools.rst ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Added: svn:eol-style + native Property changes on: grass/trunk/imagery/i.albedo/bb_alb_landsat8.c ___________________________________________________________________ Added: svn:mime-type + text/x-csrc Added: svn:eol-style + native Property changes on: grass/trunk/imagery/i.modis.qc/mod09CMGa.c ___________________________________________________________________ Added: svn:mime-type + text/x-csrc Added: svn:eol-style + native Property changes on: grass/trunk/imagery/i.modis.qc/mod09CMGc.c ___________________________________________________________________ Added: svn:mime-type + text/x-csrc Added: svn:eol-style + native Property changes on: grass/trunk/imagery/i.modis.qc/mod09CMGd.c ___________________________________________________________________ Added: svn:mime-type + text/x-csrc Added: svn:eol-style + native Property changes on: grass/trunk/imagery/i.modis.qc/mod09CMGe.c ___________________________________________________________________ Added: svn:mime-type + text/x-csrc Added: svn:eol-style + native Property changes on: grass/trunk/imagery/i.modis.qc/mod09CMGia.c ___________________________________________________________________ Added: svn:mime-type + text/x-csrc Added: svn:eol-style + native Property changes on: grass/trunk/imagery/i.modis.qc/mod09CMGib.c ___________________________________________________________________ Added: svn:mime-type + text/x-csrc Added: svn:eol-style + native Property changes on: grass/trunk/imagery/i.modis.qc/mod09CMGic.c ___________________________________________________________________ Added: svn:mime-type + text/x-csrc Added: svn:eol-style + native Property changes on: grass/trunk/imagery/i.modis.qc/mod09CMGid.c ___________________________________________________________________ Added: svn:mime-type + text/x-csrc Added: svn:eol-style + native Property changes on: grass/trunk/imagery/i.modis.qc/mod09CMGie.c ___________________________________________________________________ Added: svn:mime-type + text/x-csrc Added: svn:eol-style + native Property changes on: grass/trunk/imagery/i.modis.qc/mod09CMGif.c ___________________________________________________________________ Added: svn:mime-type + text/x-csrc Added: svn:eol-style + native Property changes on: grass/trunk/imagery/i.modis.qc/mod09CMGig.c ___________________________________________________________________ Added: svn:mime-type + text/x-csrc Added: svn:eol-style + native Property changes on: grass/trunk/imagery/i.modis.qc/mod09CMGih.c ___________________________________________________________________ Added: svn:mime-type + text/x-csrc Added: svn:eol-style + native Property changes on: grass/trunk/imagery/i.modis.qc/mod09CMGii.c ___________________________________________________________________ Added: svn:mime-type + text/x-csrc Added: svn:eol-style + native Property changes on: grass/trunk/imagery/i.modis.qc/mod09CMGij.c ___________________________________________________________________ Added: svn:mime-type + text/x-csrc Added: svn:eol-style + native Property changes on: grass/trunk/imagery/i.modis.qc/mod09CMGik.c ___________________________________________________________________ Added: svn:mime-type + text/x-csrc Added: svn:eol-style + native Property changes on: grass/trunk/imagery/i.modis.qc/mod09CMGil.c ___________________________________________________________________ Added: svn:mime-type + text/x-csrc Added: svn:eol-style + native Property changes on: grass/trunk/imagery/i.modis.qc/mod09CMGim.c ___________________________________________________________________ Added: svn:mime-type + text/x-csrc Added: svn:eol-style + native Property changes on: grass/trunk/imagery/i.modis.qc/mod09CMGin.c ___________________________________________________________________ Added: svn:mime-type + text/x-csrc Added: svn:eol-style + native Property changes on: grass/trunk/lib/cdhc/cdhclib.dox ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Added: svn:eol-style + native Property changes on: grass/trunk/lib/cluster/clusterlib.dox ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Added: svn:eol-style + native Property changes on: grass/trunk/lib/gis/testsuite/gis_lib_env_test.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/lib/gis/testsuite/gis_lib_tokenize.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/lib/manage/managelib.dox ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Added: svn:eol-style + native Property changes on: grass/trunk/lib/pngdriver/pngdriverlib.dox ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Added: svn:eol-style + native Property changes on: grass/trunk/lib/psdriver/psdriverlib.dox ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Added: svn:eol-style + native Property changes on: grass/trunk/lib/python/docs/src/gunittest_testing.rst ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Added: svn:eol-style + native Property changes on: grass/trunk/lib/python/docs/src/script_intro.rst ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Added: svn:eol-style + native Property changes on: grass/trunk/lib/python/docs/src/temporal_framework.rst ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Added: svn:eol-style + native Property changes on: grass/trunk/lib/python/exceptions/Makefile ___________________________________________________________________ Added: svn:mime-type + text/x-makefile Added: svn:eol-style + native Property changes on: grass/trunk/lib/python/exceptions/__init__.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/lib/python/exceptions/testsuite/test_ScriptError.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/lib/python/gunittest/gmodules.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/lib/python/gunittest/main.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/lib/python/gunittest/testsuite/data/simple_vector_map_ascii_4p_2l_2c_3b_dp14.txt ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Added: svn:eol-style + native Property changes on: grass/trunk/lib/python/gunittest/testsuite/data/simple_vector_map_ascii_4p_2l_2c_3b_dp14_diff_header.txt ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Added: svn:eol-style + native Property changes on: grass/trunk/lib/python/gunittest/testsuite/data/simple_vector_map_ascii_4p_2l_2c_3b_dp14_modified.txt ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Added: svn:eol-style + native Property changes on: grass/trunk/lib/python/gunittest/testsuite/test_module_assertions.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/lib/python/gunittest/utils.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/lib/python/pygrass/gis/testsuite/test_doctests.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/lib/python/pygrass/gis/testsuite/test_gis.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/lib/python/pygrass/messages/testsuite/test_doctests.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/lib/python/pygrass/modules/grid/testsuite/test_doctests.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/lib/python/pygrass/modules/interface/docstring.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/lib/python/pygrass/modules/interface/testsuite/test_doctests.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/lib/python/pygrass/modules/testsuite/test_doctests.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/lib/python/pygrass/raster/testsuite/data/a.png ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/png Property changes on: grass/trunk/lib/python/pygrass/raster/testsuite/data/b.png ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/png Property changes on: grass/trunk/lib/python/pygrass/raster/testsuite/data/c.png ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/png Property changes on: grass/trunk/lib/python/pygrass/raster/testsuite/data/d.png ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/png Property changes on: grass/trunk/lib/python/pygrass/raster/testsuite/data/e.png ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/png Property changes on: grass/trunk/lib/python/pygrass/raster/testsuite/test_category.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/lib/python/pygrass/raster/testsuite/test_doctests.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/lib/python/pygrass/raster/testsuite/test_history.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/lib/python/pygrass/raster/testsuite/test_numpy.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/lib/python/pygrass/raster/testsuite/test_raster.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/lib/python/pygrass/raster/testsuite/test_raster_img.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/lib/python/pygrass/raster/testsuite/test_raster_region.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/lib/python/pygrass/rpc/Makefile ___________________________________________________________________ Added: svn:mime-type + text/x-makefile Added: svn:eol-style + native Property changes on: grass/trunk/lib/python/pygrass/rpc/__init__.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/lib/python/pygrass/rpc/base.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/lib/python/pygrass/rpc/testsuite/test_doctests.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/lib/python/pygrass/shell/testsuite/test_doctests.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/lib/python/pygrass/testsuite/test_doctests.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/lib/python/pygrass/vector/testsuite/test_doctests.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/lib/python/script/testsuite/test_doctests.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/lib/python/temporal/temporal_operator.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/lib/python/temporal/testsuite/test_doctests.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/lib/python/temporal/testsuite/unittests_temporal_algebra.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/lib/python/temporal/testsuite/unittests_temporal_algebra_grs.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/lib/python/temporal/testsuite/unittests_temporal_conditionals.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/lib/python/temporal/testsuite/unittests_temporal_raster3d_algebra.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/lib/python/temporal/testsuite/unittests_temporal_raster_algebra.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/lib/python/temporal/testsuite/unittests_temporal_raster_algebra_grs.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/lib/python/temporal/testsuite/unittests_temporal_raster_conditionals.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/lib/python/temporal/testsuite/unittests_temporal_vector_algebra.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/lib/raster/rast_to_img_string.c ___________________________________________________________________ Added: svn:mime-type + text/x-csrc Added: svn:eol-style + native Property changes on: grass/trunk/lib/raster3d/gradient.c ___________________________________________________________________ Added: svn:mime-type + text/x-csrc Added: svn:eol-style + native Property changes on: grass/trunk/lib/raster3d/testsuite/raster3d_lib_test.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/lib/vector/Vlib/geos_to_wktb.c ___________________________________________________________________ Added: svn:mime-type + text/x-csrc Added: svn:eol-style + native Property changes on: grass/trunk/lib/vector/testsuite/test_topology_vgeneralize.sh ___________________________________________________________________ Added: svn:executable + * Added: svn:mime-type + text/x-sh Added: svn:eol-style + native Property changes on: grass/trunk/lib/vector/vectorlib_faq.dox ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Added: svn:eol-style + native Property changes on: grass/trunk/lib/vector/vectorlib_lists.dox ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Added: svn:eol-style + native Property changes on: grass/trunk/man/build_class_graphical.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/man/build_graphical_index.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/man/build_manual_gallery.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/raster/r.gwflow/testsuite/validation_7x7_grid.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/raster/r.gwflow/testsuite/validation_excavation.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/raster/r.horizon/rhorizon_polar_plot.png ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/png Property changes on: grass/trunk/raster/r.horizon/testsuite/test_r_horizon.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/raster/r.mapcalc/testsuite/test_r3_mapcalc.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/raster/r.series.interp/testsuite/data/infile_2.txt ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Added: svn:eol-style + native Property changes on: grass/trunk/raster/r.series.interp/testsuite/data/outfile_1.txt ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Added: svn:eol-style + native Property changes on: grass/trunk/raster/r.series.interp/testsuite/data/outfile_2.txt ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Added: svn:eol-style + native Property changes on: grass/trunk/raster/r.series.interp/testsuite/data/outfile_corrupt.txt ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Added: svn:eol-style + native Property changes on: grass/trunk/raster/r.series.interp/testsuite/interp_test.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/raster/r.slope.aspect/testsuite/data/fractal_surf.ascii ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Added: svn:eol-style + native Property changes on: grass/trunk/raster3d/r3.flow/testsuite/data/flowline.ascii ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Added: svn:eol-style + native Property changes on: grass/trunk/scripts/d.what.rast/Makefile ___________________________________________________________________ Added: svn:mime-type + text/x-makefile Added: svn:eol-style + native Modified: grass/trunk/scripts/d.what.rast/d.what.rast.html =================================================================== --- grass/trunk/scripts/d.what.rast/d.what.rast.html 2015-09-05 15:57:08 UTC (rev 66112) +++ grass/trunk/scripts/d.what.rast/d.what.rast.html 2015-09-05 16:13:18 UTC (rev 66113) @@ -19,4 +19,4 @@ Anna Petrasova,
NCSU OSGeoREL -

Last changed: $Date: 2014-03-26 11:49:20 -0400 (Wed, 26 Mar 2014) $ +

Last changed: $Date$ Property changes on: grass/trunk/scripts/d.what.rast/d.what.rast.html ___________________________________________________________________ Added: svn:mime-type + text/html Added: svn:keywords + Author Date Id Added: svn:eol-style + native Property changes on: grass/trunk/scripts/d.what.rast/d.what.rast.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/scripts/d.what.vect/Makefile ___________________________________________________________________ Added: svn:mime-type + text/x-makefile Added: svn:eol-style + native Modified: grass/trunk/scripts/d.what.vect/d.what.vect.html =================================================================== --- grass/trunk/scripts/d.what.vect/d.what.vect.html 2015-09-05 15:57:08 UTC (rev 66112) +++ grass/trunk/scripts/d.what.vect/d.what.vect.html 2015-09-05 16:13:18 UTC (rev 66113) @@ -19,4 +19,4 @@ Anna Petrasova, NCSU OSGeoREL -

Last changed: $Date: 2014-03-26 11:49:20 -0400 (Wed, 26 Mar 2014) $ +

Last changed: $Date$ Property changes on: grass/trunk/scripts/d.what.vect/d.what.vect.html ___________________________________________________________________ Added: svn:mime-type + text/html Added: svn:keywords + Author Date Id Added: svn:eol-style + native Property changes on: grass/trunk/scripts/d.what.vect/d.what.vect.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/scripts/g.extension/testsuite/data/modules.xml ___________________________________________________________________ Added: svn:mime-type + text/xml Added: svn:eol-style + native Property changes on: grass/trunk/scripts/g.extension/testsuite/data/sample_modules/r.plus.example/Makefile ___________________________________________________________________ Added: svn:mime-type + text/x-makefile Added: svn:eol-style + native Modified: grass/trunk/scripts/g.extension/testsuite/data/sample_modules/r.plus.example/r.plus.example.html =================================================================== --- grass/trunk/scripts/g.extension/testsuite/data/sample_modules/r.plus.example/r.plus.example.html 2015-09-05 15:57:08 UTC (rev 66112) +++ grass/trunk/scripts/g.extension/testsuite/data/sample_modules/r.plus.example/r.plus.example.html 2015-09-05 16:13:18 UTC (rev 66113) @@ -22,4 +22,4 @@ Vaclav Petras, NCSU OSGeoREL

-Last changed: $Date: 2015-06-07 07:21:31 -0400 (Sun, 07 Jun 2015) $ +Last changed: $Date$ Property changes on: grass/trunk/scripts/g.extension/testsuite/data/sample_modules/r.plus.example/r.plus.example.html ___________________________________________________________________ Added: svn:mime-type + text/html Added: svn:keywords + Author Date Id Added: svn:eol-style + native Property changes on: grass/trunk/scripts/g.extension/testsuite/data/sample_modules/r.plus.example/r.plus.example.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/scripts/g.extension/testsuite/data/toolboxes.xml ___________________________________________________________________ Added: svn:mime-type + text/xml Added: svn:eol-style + native Property changes on: grass/trunk/scripts/g.extension/testsuite/doctest.sh ___________________________________________________________________ Added: svn:executable + * Added: svn:mime-type + text/x-sh Added: svn:eol-style + native Property changes on: grass/trunk/scripts/g.extension/testsuite/test_addons_modules.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/scripts/g.extension/testsuite/test_addons_toolboxes.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/scripts/r.import/testsuite/data/data2.asc.aux.xml ___________________________________________________________________ Added: svn:mime-type + text/xml Added: svn:eol-style + native Property changes on: grass/trunk/scripts/r.import/testsuite/test_r_import.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/scripts/v.what.strds/testsuite/test_what_strds.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/temporal/t.connect/testsuite/test_distr_tgis_db_raster.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/temporal/t.connect/testsuite/test_distr_tgis_db_raster3d.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/temporal/t.connect/testsuite/test_distr_tgis_db_vector.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/temporal/t.rast.aggregate/testsuite/test_aggregation_absolute.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/temporal/t.rast.aggregate/testsuite/test_aggregation_absolute_parallel.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/temporal/t.rast.aggregate/testsuite/test_aggregation_relative.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/temporal/t.rast.algebra/testsuite/test_raster_algebra.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/temporal/t.rast.algebra/testsuite/test_raster_algebra_fails.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/temporal/t.rast.algebra/testsuite/test_raster_algebra_granularity.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/temporal/t.rast.algebra/testsuite/test_raster_algebra_granularity_fails.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/temporal/t.rast.contour/Makefile ___________________________________________________________________ Added: svn:mime-type + text/x-makefile Added: svn:eol-style + native Modified: grass/trunk/temporal/t.rast.contour/t.rast.contour.html =================================================================== --- grass/trunk/temporal/t.rast.contour/t.rast.contour.html 2015-09-05 15:57:08 UTC (rev 66112) +++ grass/trunk/temporal/t.rast.contour/t.rast.contour.html 2015-09-05 16:13:18 UTC (rev 66113) @@ -40,4 +40,4 @@ Sören Gebbert, Geoinformatikbüro Dassau -

Last changed: $Date: 2014-12-03 20:39:26 +0100 (Mi, 03. Dez 2014) $ +

Last changed: $Date$ Property changes on: grass/trunk/temporal/t.rast.contour/t.rast.contour.html ___________________________________________________________________ Added: svn:mime-type + text/html Added: svn:keywords + Author Date Id Added: svn:eol-style + native Property changes on: grass/trunk/temporal/t.rast.contour/t.rast.contour.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/temporal/t.rast.contour/testsuite/test_convert.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/temporal/t.rast.extract/testsuite/test_extract.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/temporal/t.rast.gapfill/testsuite/test_gapfill.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/temporal/t.rast.to.rast3/testsuite/test_strds_to_rast3.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/temporal/t.rast.to.vect/Makefile ___________________________________________________________________ Added: svn:mime-type + text/x-makefile Added: svn:eol-style + native Modified: grass/trunk/temporal/t.rast.to.vect/t.rast.to.vect.html =================================================================== --- grass/trunk/temporal/t.rast.to.vect/t.rast.to.vect.html 2015-09-05 15:57:08 UTC (rev 66112) +++ grass/trunk/temporal/t.rast.to.vect/t.rast.to.vect.html 2015-09-05 16:13:18 UTC (rev 66113) @@ -39,4 +39,4 @@ Sören Gebbert, Geoinformatikbüro Dassau -

Last changed: $Date: 2014-12-03 20:39:26 +0100 (Mi, 03. Dez 2014) $ +

Last changed: $Date$ Property changes on: grass/trunk/temporal/t.rast.to.vect/t.rast.to.vect.html ___________________________________________________________________ Added: svn:mime-type + text/html Added: svn:keywords + Author Date Id Added: svn:eol-style + native Property changes on: grass/trunk/temporal/t.rast.to.vect/t.rast.to.vect.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/temporal/t.rast.to.vect/testsuite/test_to_vect.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/temporal/t.rast.what/Makefile ___________________________________________________________________ Added: svn:mime-type + text/x-makefile Added: svn:eol-style + native Modified: grass/trunk/temporal/t.rast.what/t.rast.what.html =================================================================== --- grass/trunk/temporal/t.rast.what/t.rast.what.html 2015-09-05 15:57:08 UTC (rev 66112) +++ grass/trunk/temporal/t.rast.what/t.rast.what.html 2015-09-05 16:13:18 UTC (rev 66113) @@ -130,4 +130,4 @@ Sören Gebbert, Thünen Institute of Climate-Smart Agriculture -

Last changed: $Date: 2014-12-03 20:39:26 +0100 (Mi, 03. Dez 2014) $ +

Last changed: $Date$ Property changes on: grass/trunk/temporal/t.rast.what/t.rast.what.html ___________________________________________________________________ Added: svn:mime-type + text/html Added: svn:keywords + Author Date Id Added: svn:eol-style + native Property changes on: grass/trunk/temporal/t.rast.what/t.rast.what.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/temporal/t.rast.what/testsuite/test_what.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/temporal/t.rast3d.algebra/testsuite/test_raster3d_algebra.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/temporal/t.rast3d.extract/testsuite/test_extract.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/temporal/t.unregister/testsuite/test_unregister.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/temporal/t.vect.algebra/testsuite/test_vector_algebra.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/vector/v.category/testsuite/copy_multiple_cats.sh ___________________________________________________________________ Added: svn:mime-type + text/x-sh Added: svn:eol-style + native Property changes on: grass/trunk/vector/v.edit/testsuite/select_all_flag.sh ___________________________________________________________________ Added: svn:mime-type + text/x-sh Added: svn:eol-style + native Property changes on: grass/trunk/vector/v.in.ascii/testsuite/test_csv.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/vector/v.net/testsuite/test_v_net.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/vector/v.to.3d/testsuite/test_vto3d.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/trunk/vector/v.what/testsuite/data/testing.ascii ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Added: svn:eol-style + native From svn_grass at osgeo.org Sat Sep 5 09:21:26 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sat, 5 Sep 2015 09:21:26 -0700 Subject: [GRASS-SVN] r66114 - in grass/branches/releasebranch_7_0: gui/images gui/wxpython/docs/wxgui_sphinx gui/wxpython/docs/wxgui_sphinx/_templates gui/wxpython/docs/wxgui_sphinx/src lib/python/docs/src lib/python/exceptions/testsuite lib/python/pygrass/modules/interface lib/python/pygrass/vector/testsuite lib/python/temporal/testsuite raster/r.series.interp/testsuite/data raster/r.slope.aspect/testsuite/data raster/r.viewshed/testsuite/data scripts/v.what.strds/testsuite vector/v.what/testsuite/data Message-ID: <20150905162126.1BD24390136@trac.osgeo.org> Author: neteler Date: 2015-09-05 09:21:25 -0700 (Sat, 05 Sep 2015) New Revision: 66114 Modified: grass/branches/releasebranch_7_0/gui/images/startup_banner.txt grass/branches/releasebranch_7_0/gui/wxpython/docs/wxgui_sphinx/Makefile grass/branches/releasebranch_7_0/gui/wxpython/docs/wxgui_sphinx/_templates/oholosidebar.html grass/branches/releasebranch_7_0/gui/wxpython/docs/wxgui_sphinx/conf.py grass/branches/releasebranch_7_0/gui/wxpython/docs/wxgui_sphinx/make.bat grass/branches/releasebranch_7_0/gui/wxpython/docs/wxgui_sphinx/src/index.rst grass/branches/releasebranch_7_0/gui/wxpython/docs/wxgui_sphinx/src/wxgui_libraries.rst grass/branches/releasebranch_7_0/gui/wxpython/docs/wxgui_sphinx/src/wxgui_toolboxes.rst grass/branches/releasebranch_7_0/gui/wxpython/docs/wxgui_sphinx/src/wxgui_tools.rst grass/branches/releasebranch_7_0/lib/python/docs/src/script_intro.rst grass/branches/releasebranch_7_0/lib/python/docs/src/temporal_framework.rst grass/branches/releasebranch_7_0/lib/python/exceptions/testsuite/test_ScriptError.py grass/branches/releasebranch_7_0/lib/python/pygrass/modules/interface/docstring.py grass/branches/releasebranch_7_0/lib/python/pygrass/vector/testsuite/test_geometry.py grass/branches/releasebranch_7_0/lib/python/pygrass/vector/testsuite/test_vector3d.py grass/branches/releasebranch_7_0/lib/python/temporal/testsuite/test_doctests.py grass/branches/releasebranch_7_0/lib/python/temporal/testsuite/unittests_temporal_algebra.py grass/branches/releasebranch_7_0/lib/python/temporal/testsuite/unittests_temporal_algebra_grs.py grass/branches/releasebranch_7_0/lib/python/temporal/testsuite/unittests_temporal_conditionals.py grass/branches/releasebranch_7_0/lib/python/temporal/testsuite/unittests_temporal_raster_algebra_grs.py grass/branches/releasebranch_7_0/lib/python/temporal/testsuite/unittests_temporal_raster_conditionals.py grass/branches/releasebranch_7_0/lib/python/temporal/testsuite/unittests_temporal_vector_algebra.py grass/branches/releasebranch_7_0/raster/r.series.interp/testsuite/data/infile_2.txt grass/branches/releasebranch_7_0/raster/r.series.interp/testsuite/data/outfile_1.txt grass/branches/releasebranch_7_0/raster/r.series.interp/testsuite/data/outfile_2.txt grass/branches/releasebranch_7_0/raster/r.series.interp/testsuite/data/outfile_corrupt.txt grass/branches/releasebranch_7_0/raster/r.slope.aspect/testsuite/data/fractal_surf.ascii grass/branches/releasebranch_7_0/raster/r.slope.aspect/testsuite/data/gdal_aspect.grd.aux.xml grass/branches/releasebranch_7_0/raster/r.slope.aspect/testsuite/data/gdal_slope.grd.aux.xml grass/branches/releasebranch_7_0/raster/r.viewshed/testsuite/data/elevation.ascii grass/branches/releasebranch_7_0/raster/r.viewshed/testsuite/data/lake_viewshed.ascii grass/branches/releasebranch_7_0/scripts/v.what.strds/testsuite/test_what_strds.py grass/branches/releasebranch_7_0/vector/v.what/testsuite/data/testing.ascii Log: svn propset Property changes on: grass/branches/releasebranch_7_0/gui/images/startup_banner.txt ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Added: svn:eol-style + native Property changes on: grass/branches/releasebranch_7_0/gui/wxpython/docs/wxgui_sphinx/Makefile ___________________________________________________________________ Added: svn:mime-type + text/x-makefile Added: svn:eol-style + native Property changes on: grass/branches/releasebranch_7_0/gui/wxpython/docs/wxgui_sphinx/_templates/oholosidebar.html ___________________________________________________________________ Added: svn:mime-type + text/html Added: svn:keywords + Author Date Id Added: svn:eol-style + native Property changes on: grass/branches/releasebranch_7_0/gui/wxpython/docs/wxgui_sphinx/conf.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/branches/releasebranch_7_0/gui/wxpython/docs/wxgui_sphinx/make.bat ___________________________________________________________________ Added: svn:mime-type + text/x-bat Added: svn:eol-style + CRLF Property changes on: grass/branches/releasebranch_7_0/gui/wxpython/docs/wxgui_sphinx/src/index.rst ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Added: svn:eol-style + native Property changes on: grass/branches/releasebranch_7_0/gui/wxpython/docs/wxgui_sphinx/src/wxgui_libraries.rst ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Added: svn:eol-style + native Property changes on: grass/branches/releasebranch_7_0/gui/wxpython/docs/wxgui_sphinx/src/wxgui_toolboxes.rst ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Added: svn:eol-style + native Property changes on: grass/branches/releasebranch_7_0/gui/wxpython/docs/wxgui_sphinx/src/wxgui_tools.rst ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Added: svn:eol-style + native Property changes on: grass/branches/releasebranch_7_0/lib/python/docs/src/script_intro.rst ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Added: svn:eol-style + native Property changes on: grass/branches/releasebranch_7_0/lib/python/docs/src/temporal_framework.rst ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Added: svn:eol-style + native Property changes on: grass/branches/releasebranch_7_0/lib/python/exceptions/testsuite/test_ScriptError.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/branches/releasebranch_7_0/lib/python/pygrass/modules/interface/docstring.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/branches/releasebranch_7_0/lib/python/pygrass/vector/testsuite/test_geometry.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/branches/releasebranch_7_0/lib/python/pygrass/vector/testsuite/test_vector3d.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/branches/releasebranch_7_0/lib/python/temporal/testsuite/test_doctests.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/branches/releasebranch_7_0/lib/python/temporal/testsuite/unittests_temporal_algebra.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/branches/releasebranch_7_0/lib/python/temporal/testsuite/unittests_temporal_algebra_grs.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/branches/releasebranch_7_0/lib/python/temporal/testsuite/unittests_temporal_conditionals.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/branches/releasebranch_7_0/lib/python/temporal/testsuite/unittests_temporal_raster_algebra_grs.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/branches/releasebranch_7_0/lib/python/temporal/testsuite/unittests_temporal_raster_conditionals.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/branches/releasebranch_7_0/lib/python/temporal/testsuite/unittests_temporal_vector_algebra.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/branches/releasebranch_7_0/raster/r.series.interp/testsuite/data/infile_2.txt ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Added: svn:eol-style + native Property changes on: grass/branches/releasebranch_7_0/raster/r.series.interp/testsuite/data/outfile_1.txt ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Added: svn:eol-style + native Property changes on: grass/branches/releasebranch_7_0/raster/r.series.interp/testsuite/data/outfile_2.txt ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Added: svn:eol-style + native Property changes on: grass/branches/releasebranch_7_0/raster/r.series.interp/testsuite/data/outfile_corrupt.txt ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Added: svn:eol-style + native Property changes on: grass/branches/releasebranch_7_0/raster/r.slope.aspect/testsuite/data/fractal_surf.ascii ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Added: svn:eol-style + native Property changes on: grass/branches/releasebranch_7_0/raster/r.slope.aspect/testsuite/data/gdal_aspect.grd.aux.xml ___________________________________________________________________ Added: svn:mime-type + text/xml Added: svn:eol-style + native Property changes on: grass/branches/releasebranch_7_0/raster/r.slope.aspect/testsuite/data/gdal_slope.grd.aux.xml ___________________________________________________________________ Added: svn:mime-type + text/xml Added: svn:eol-style + native Property changes on: grass/branches/releasebranch_7_0/raster/r.viewshed/testsuite/data/elevation.ascii ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Added: svn:eol-style + native Property changes on: grass/branches/releasebranch_7_0/raster/r.viewshed/testsuite/data/lake_viewshed.ascii ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Added: svn:eol-style + native Property changes on: grass/branches/releasebranch_7_0/scripts/v.what.strds/testsuite/test_what_strds.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass/branches/releasebranch_7_0/vector/v.what/testsuite/data/testing.ascii ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Added: svn:eol-style + native From svn_grass at osgeo.org Sat Sep 5 09:33:02 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sat, 5 Sep 2015 09:33:02 -0700 Subject: [GRASS-SVN] r66115 - grass/branches/releasebranch_7_0/lib/python/temporal Message-ID: <20150905163302.6A29E390136@trac.osgeo.org> Author: neteler Date: 2015-09-05 09:33:02 -0700 (Sat, 05 Sep 2015) New Revision: 66115 Modified: grass/branches/releasebranch_7_0/lib/python/temporal/c_libraries_interface.py Log: temporal library: Fixed wrong mapset access method (partial backport from trunk, r66014) Modified: grass/branches/releasebranch_7_0/lib/python/temporal/c_libraries_interface.py =================================================================== --- grass/branches/releasebranch_7_0/lib/python/temporal/c_libraries_interface.py 2015-09-05 16:21:25 UTC (rev 66114) +++ grass/branches/releasebranch_7_0/lib/python/temporal/c_libraries_interface.py 2015-09-05 16:33:02 UTC (rev 66115) @@ -133,7 +133,7 @@ # This behavior is in conjunction with db.connect dbstring = dbstring.replace("$GISDBASE", libgis.G_gisdbase()) dbstring = dbstring.replace("$LOCATION_NAME", libgis.G_location()) - dbstring = dbstring.replace("$MAPSET", libgis.G_mapset()) + dbstring = dbstring.replace("$MAPSET", mapset) conn.send(dbstring) ############################################################################### @@ -148,15 +148,17 @@ :returns: Names of available mapsets as list of strings """ - + count = 0 mapset_list = [] try: + # Initilaize the accessable mapset list, this is bad C design!!! + libgis.G_get_mapset_name(0) mapsets = libgis.G_get_available_mapsets() while mapsets[count]: char_list = "" mapset = mapsets[count] - if libgis.G_mapset_permissions(mapset) > 0: + if libgis.G_mapset_permissions(mapset) == 1 and libgis.G_is_mapset_in_search_path(mapset) == 1: c = 0 while mapset[c] != "\x00": char_list += mapset[c] From svn_grass at osgeo.org Sat Sep 5 09:44:11 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sat, 5 Sep 2015 09:44:11 -0700 Subject: [GRASS-SVN] r66116 - grass-addons/grass7/raster/r.meb Message-ID: <20150905164411.EE50B390108@trac.osgeo.org> Author: neteler Date: 2015-09-05 09:44:11 -0700 (Sat, 05 Sep 2015) New Revision: 66116 Added: grass-addons/grass7/raster/r.meb/r_meb_concept_v2.svg Removed: grass-addons/grass7/raster/r.meb/r_meb_concept v2.svg Log: r.meb: avoid white space in file names Deleted: grass-addons/grass7/raster/r.meb/r_meb_concept v2.svg =================================================================== --- grass-addons/grass7/raster/r.meb/r_meb_concept v2.svg 2015-09-05 16:33:02 UTC (rev 66115) +++ grass-addons/grass7/raster/r.meb/r_meb_concept v2.svg 2015-09-05 16:44:11 UTC (rev 66116) @@ -1,158 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - Region A - Sub-region B - - - |Median(MESA) - Median(MESB)| - - MAD(MESA) - EB = - - - - Copied: grass-addons/grass7/raster/r.meb/r_meb_concept_v2.svg (from rev 66112, grass-addons/grass7/raster/r.meb/r_meb_concept v2.svg) =================================================================== --- grass-addons/grass7/raster/r.meb/r_meb_concept_v2.svg (rev 0) +++ grass-addons/grass7/raster/r.meb/r_meb_concept_v2.svg 2015-09-05 16:44:11 UTC (rev 66116) @@ -0,0 +1,158 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + Region A + Sub-region B + + + |Median(MESA) - Median(MESB)| + + MAD(MESA) + EB = + + + + From svn_grass at osgeo.org Sat Sep 5 09:47:51 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sat, 5 Sep 2015 09:47:51 -0700 Subject: [GRASS-SVN] r66117 - in grass-addons: grass7/general/g.proj.identify grass7/gui/wxpython/wx.metadata grass7/imagery/i.nightlights.intercalibration grass7/raster/r.agent.aco grass7/raster/r.agent.aco/libagent grass7/raster/r.futures grass7/raster/r.futures/r.futures.calib grass7/raster/r.futures/r.futures.devpressure grass7/raster/r.futures/r.futures.pga grass7/raster/r.mcda.electre grass7/raster/r.mcda.promethee grass7/raster/r.mcda.topsis grass7/raster/r.meb grass7/raster/r.soils.texture grass7/raster/r.wateroutlet.lessmem grass7/vector/v.kriging grass7/vector/v.kriging/images grass7/vector/v.kriging/images/small grass7/vector/v.nnstat tools tools/grass-ci Message-ID: <20150905164751.7E4E8390108@trac.osgeo.org> Author: neteler Date: 2015-09-05 09:47:51 -0700 (Sat, 05 Sep 2015) New Revision: 66117 Modified: grass-addons/grass7/general/g.proj.identify/g.proj.identify.html grass-addons/grass7/general/g.proj.identify/g.proj.identify.py grass-addons/grass7/gui/wxpython/wx.metadata/dependency.py grass-addons/grass7/imagery/i.nightlights.intercalibration/Makefile grass-addons/grass7/imagery/i.nightlights.intercalibration/i.nightlights.intercalibration.html grass-addons/grass7/imagery/i.nightlights.intercalibration/i.nightlights.intercalibration.py grass-addons/grass7/imagery/i.nightlights.intercalibration/intercalibration_coefficients.py grass-addons/grass7/imagery/i.nightlights.intercalibration/intercalibration_equations.py grass-addons/grass7/imagery/i.nightlights.intercalibration/intercalibration_models.py grass-addons/grass7/imagery/i.nightlights.intercalibration/test_intercalibration_models.py grass-addons/grass7/raster/r.agent.aco/Makefile grass-addons/grass7/raster/r.agent.aco/libagent/Makefile grass-addons/grass7/raster/r.agent.aco/r.agent.aco.py grass-addons/grass7/raster/r.futures/FUTURES_inputs_diagram.png grass-addons/grass7/raster/r.futures/Makefile grass-addons/grass7/raster/r.futures/r.futures.calib/Makefile grass-addons/grass7/raster/r.futures/r.futures.calib/r.futures.calib.html grass-addons/grass7/raster/r.futures/r.futures.calib/r.futures.calib.py grass-addons/grass7/raster/r.futures/r.futures.devpressure/Makefile grass-addons/grass7/raster/r.futures/r.futures.devpressure/devpressure_example.png grass-addons/grass7/raster/r.futures/r.futures.devpressure/r.futures.devpressure.html grass-addons/grass7/raster/r.futures/r.futures.devpressure/r.futures.devpressure.py grass-addons/grass7/raster/r.futures/r.futures.html grass-addons/grass7/raster/r.futures/r.futures.pga/incentive.png grass-addons/grass7/raster/r.mcda.electre/Makefile grass-addons/grass7/raster/r.mcda.electre/dominance.c grass-addons/grass7/raster/r.mcda.electre/local_proto.h grass-addons/grass7/raster/r.mcda.electre/main.c grass-addons/grass7/raster/r.mcda.electre/r.mcda.electre.html grass-addons/grass7/raster/r.mcda.promethee/Makefile grass-addons/grass7/raster/r.mcda.promethee/local_proto.h grass-addons/grass7/raster/r.mcda.promethee/main.c grass-addons/grass7/raster/r.mcda.promethee/promethee.c grass-addons/grass7/raster/r.mcda.promethee/r.mcda.promethee.html grass-addons/grass7/raster/r.mcda.topsis/Makefile grass-addons/grass7/raster/r.mcda.topsis/r.mcda.topsis.html grass-addons/grass7/raster/r.mcda.topsis/r.mcda.topsis.py grass-addons/grass7/raster/r.meb/r_meb_concept_v2.svg grass-addons/grass7/raster/r.soils.texture/Makefile grass-addons/grass7/raster/r.soils.texture/local_include.h grass-addons/grass7/raster/r.soils.texture/main.c grass-addons/grass7/raster/r.soils.texture/r.soils.texture.html grass-addons/grass7/raster/r.wateroutlet.lessmem/Makefile grass-addons/grass7/raster/r.wateroutlet.lessmem/global.h grass-addons/grass7/raster/r.wateroutlet.lessmem/main.c grass-addons/grass7/raster/r.wateroutlet.lessmem/over_cells.c grass-addons/grass7/raster/r.wateroutlet.lessmem/r.wateroutlet.lessmem.html grass-addons/grass7/vector/v.kriging/README grass-addons/grass7/vector/v.kriging/geostat.c grass-addons/grass7/vector/v.kriging/getval.c grass-addons/grass7/vector/v.kriging/images/small/v_kriging_result_exponential.png grass-addons/grass7/vector/v.kriging/images/small/v_kriging_result_exponential_2.png grass-addons/grass7/vector/v.kriging/images/small/v_kriging_result_gauss_1.png grass-addons/grass7/vector/v.kriging/images/small/v_kriging_result_gauss_2.png grass-addons/grass7/vector/v.kriging/images/small/v_kriging_result_linear_1.png grass-addons/grass7/vector/v.kriging/images/small/v_kriging_result_spherical_2.png grass-addons/grass7/vector/v.kriging/images/small/v_kriging_variogram_exponential.png grass-addons/grass7/vector/v.kriging/images/small/v_kriging_variogram_exponential_1.png grass-addons/grass7/vector/v.kriging/images/small/v_kriging_variogram_exponential_2.png grass-addons/grass7/vector/v.kriging/images/small/v_kriging_variogram_gauss.png grass-addons/grass7/vector/v.kriging/images/small/v_kriging_variogram_gauss_1.png grass-addons/grass7/vector/v.kriging/images/small/v_kriging_variogram_gauss_2.png grass-addons/grass7/vector/v.kriging/images/small/v_kriging_variogram_hz_15000.png grass-addons/grass7/vector/v.kriging/images/small/v_kriging_variogram_hz_20000.png grass-addons/grass7/vector/v.kriging/images/small/v_kriging_variogram_linear.png grass-addons/grass7/vector/v.kriging/images/small/v_kriging_variogram_linear_1.png grass-addons/grass7/vector/v.kriging/images/small/v_kriging_variogram_spherical.png grass-addons/grass7/vector/v.kriging/images/small/v_kriging_variogram_spherical_1.png grass-addons/grass7/vector/v.kriging/images/small/v_kriging_variogram_spherical_2.png grass-addons/grass7/vector/v.kriging/images/small/v_kriging_variogram_vertical_1200.png grass-addons/grass7/vector/v.kriging/images/v_kriging_diff_lid792_500_rst.png grass-addons/grass7/vector/v.kriging/images/v_kriging_diff_lid792_500_surfer.png grass-addons/grass7/vector/v.kriging/images/v_kriging_result_exponential.png grass-addons/grass7/vector/v.kriging/images/v_kriging_result_gauss.png grass-addons/grass7/vector/v.kriging/images/v_kriging_result_lid792_500.png grass-addons/grass7/vector/v.kriging/images/v_kriging_result_linear.png grass-addons/grass7/vector/v.kriging/images/v_kriging_result_spherical.png grass-addons/grass7/vector/v.kriging/images/v_kriging_variogram_exponential.png grass-addons/grass7/vector/v.kriging/images/v_kriging_variogram_gaussian.png grass-addons/grass7/vector/v.kriging/images/v_kriging_variogram_hz_100000.png grass-addons/grass7/vector/v.kriging/images/v_kriging_variogram_lid792_500_linear.png grass-addons/grass7/vector/v.kriging/images/v_kriging_variogram_lid792_500_surfer.png grass-addons/grass7/vector/v.kriging/images/v_kriging_variogram_linear.png grass-addons/grass7/vector/v.kriging/images/v_kriging_variogram_spherical.png grass-addons/grass7/vector/v.kriging/images/v_kriging_variogram_vertical_1600.png grass-addons/grass7/vector/v.kriging/images/v_kriging_xvalid_rst_krig.png grass-addons/grass7/vector/v.kriging/main.c grass-addons/grass7/vector/v.kriging/quantile.c grass-addons/grass7/vector/v.kriging/spatial_index.c grass-addons/grass7/vector/v.kriging/stat.c grass-addons/grass7/vector/v.kriging/utils.c grass-addons/grass7/vector/v.kriging/utils_kriging.c grass-addons/grass7/vector/v.kriging/utils_raster.c grass-addons/grass7/vector/v.kriging/utils_write.c grass-addons/grass7/vector/v.nnstat/README grass-addons/grass7/vector/v.nnstat/getval.c grass-addons/grass7/vector/v.nnstat/main.c grass-addons/grass7/vector/v.nnstat/mbb.c grass-addons/grass7/vector/v.nnstat/mbr.c grass-addons/grass7/vector/v.nnstat/nearest_neighbour.c grass-addons/grass7/vector/v.nnstat/spatial_index.c grass-addons/grass7/vector/v.nnstat/utils.c grass-addons/tools/grass-ci/authors-prog.sh grass-addons/tools/grass-ci/grass-ci.sh grass-addons/tools/grass-ci/ssh.sh grass-addons/tools/std_dataset_display.py Log: svn propset Property changes on: grass-addons/grass7/general/g.proj.identify/g.proj.identify.html ___________________________________________________________________ Added: svn:mime-type + text/html Added: svn:keywords + Author Date Id Added: svn:eol-style + native Property changes on: grass-addons/grass7/general/g.proj.identify/g.proj.identify.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass-addons/grass7/gui/wxpython/wx.metadata/dependency.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass-addons/grass7/imagery/i.nightlights.intercalibration/Makefile ___________________________________________________________________ Added: svn:mime-type + text/x-makefile Added: svn:eol-style + native Property changes on: grass-addons/grass7/imagery/i.nightlights.intercalibration/i.nightlights.intercalibration.html ___________________________________________________________________ Added: svn:mime-type + text/html Added: svn:keywords + Author Date Id Added: svn:eol-style + native Property changes on: grass-addons/grass7/imagery/i.nightlights.intercalibration/i.nightlights.intercalibration.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass-addons/grass7/imagery/i.nightlights.intercalibration/intercalibration_coefficients.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass-addons/grass7/imagery/i.nightlights.intercalibration/intercalibration_equations.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass-addons/grass7/imagery/i.nightlights.intercalibration/intercalibration_models.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass-addons/grass7/imagery/i.nightlights.intercalibration/test_intercalibration_models.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass-addons/grass7/raster/r.agent.aco/Makefile ___________________________________________________________________ Added: svn:mime-type + text/x-makefile Added: svn:eol-style + native Property changes on: grass-addons/grass7/raster/r.agent.aco/libagent/Makefile ___________________________________________________________________ Added: svn:mime-type + text/x-makefile Added: svn:eol-style + native Property changes on: grass-addons/grass7/raster/r.agent.aco/r.agent.aco.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass-addons/grass7/raster/r.futures/FUTURES_inputs_diagram.png ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/png Property changes on: grass-addons/grass7/raster/r.futures/Makefile ___________________________________________________________________ Added: svn:mime-type + text/x-makefile Added: svn:eol-style + native Property changes on: grass-addons/grass7/raster/r.futures/r.futures.calib/Makefile ___________________________________________________________________ Added: svn:mime-type + text/x-makefile Added: svn:eol-style + native Modified: grass-addons/grass7/raster/r.futures/r.futures.calib/r.futures.calib.html =================================================================== --- grass-addons/grass7/raster/r.futures/r.futures.calib/r.futures.calib.html 2015-09-05 16:44:11 UTC (rev 66116) +++ grass-addons/grass7/raster/r.futures/r.futures.calib/r.futures.calib.html 2015-09-05 16:47:51 UTC (rev 66117) @@ -111,4 +111,4 @@ Anna Petrasova, NCSU OSGeoREL
-

Last changed: $Date: 2015-02-12 14:32:45 -0500 (Thu, 12 Feb 2015) $ +

Last changed: $Date$ Property changes on: grass-addons/grass7/raster/r.futures/r.futures.calib/r.futures.calib.html ___________________________________________________________________ Added: svn:mime-type + text/html Added: svn:keywords + Author Date Id Added: svn:eol-style + native Property changes on: grass-addons/grass7/raster/r.futures/r.futures.calib/r.futures.calib.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass-addons/grass7/raster/r.futures/r.futures.devpressure/Makefile ___________________________________________________________________ Added: svn:mime-type + text/x-makefile Added: svn:eol-style + native Property changes on: grass-addons/grass7/raster/r.futures/r.futures.devpressure/devpressure_example.png ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/png Modified: grass-addons/grass7/raster/r.futures/r.futures.devpressure/r.futures.devpressure.html =================================================================== --- grass-addons/grass7/raster/r.futures/r.futures.devpressure/r.futures.devpressure.html 2015-09-05 16:44:11 UTC (rev 66116) +++ grass-addons/grass7/raster/r.futures/r.futures.devpressure/r.futures.devpressure.html 2015-09-05 16:47:51 UTC (rev 66117) @@ -78,4 +78,4 @@ Anna Petrasova, NCSU OSGeoREL
-

Last changed: $Date: 2015-02-12 14:32:45 -0500 (Thu, 12 Feb 2015) $ +

Last changed: $Date$ Property changes on: grass-addons/grass7/raster/r.futures/r.futures.devpressure/r.futures.devpressure.html ___________________________________________________________________ Added: svn:mime-type + text/html Added: svn:keywords + Author Date Id Added: svn:eol-style + native Property changes on: grass-addons/grass7/raster/r.futures/r.futures.devpressure/r.futures.devpressure.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Modified: grass-addons/grass7/raster/r.futures/r.futures.html =================================================================== --- grass-addons/grass7/raster/r.futures/r.futures.html 2015-09-05 16:44:11 UTC (rev 66116) +++ grass-addons/grass7/raster/r.futures/r.futures.html 2015-09-05 16:47:51 UTC (rev 66117) @@ -153,4 +153,4 @@

-Last changed: $Date: 2014-03-25 20:16:47 -0400 (Tue, 25 Mar 2014) $ +Last changed: $Date$ Property changes on: grass-addons/grass7/raster/r.futures/r.futures.html ___________________________________________________________________ Added: svn:mime-type + text/html Added: svn:keywords + Author Date Id Added: svn:eol-style + native Property changes on: grass-addons/grass7/raster/r.futures/r.futures.pga/incentive.png ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/png Property changes on: grass-addons/grass7/raster/r.mcda.electre/Makefile ___________________________________________________________________ Added: svn:mime-type + text/x-makefile Added: svn:eol-style + native Property changes on: grass-addons/grass7/raster/r.mcda.electre/dominance.c ___________________________________________________________________ Added: svn:mime-type + text/x-csrc Added: svn:eol-style + native Property changes on: grass-addons/grass7/raster/r.mcda.electre/local_proto.h ___________________________________________________________________ Added: svn:mime-type + text/x-chdr Added: svn:eol-style + native Property changes on: grass-addons/grass7/raster/r.mcda.electre/main.c ___________________________________________________________________ Added: svn:mime-type + text/x-csrc Added: svn:eol-style + native Modified: grass-addons/grass7/raster/r.mcda.electre/r.mcda.electre.html =================================================================== --- grass-addons/grass7/raster/r.mcda.electre/r.mcda.electre.html 2015-09-05 16:44:11 UTC (rev 66116) +++ grass-addons/grass7/raster/r.mcda.electre/r.mcda.electre.html 2015-09-05 16:47:51 UTC (rev 66117) @@ -44,4 +44,4 @@

-Last changed: $Date: 2012-12-04 19:08:17 +0100 (mar, 04 dic 2012) $ +Last changed: $Date$ Property changes on: grass-addons/grass7/raster/r.mcda.electre/r.mcda.electre.html ___________________________________________________________________ Added: svn:mime-type + text/html Added: svn:keywords + Author Date Id Added: svn:eol-style + native Property changes on: grass-addons/grass7/raster/r.mcda.promethee/Makefile ___________________________________________________________________ Added: svn:mime-type + text/x-makefile Added: svn:eol-style + native Property changes on: grass-addons/grass7/raster/r.mcda.promethee/local_proto.h ___________________________________________________________________ Added: svn:mime-type + text/x-chdr Added: svn:eol-style + native Property changes on: grass-addons/grass7/raster/r.mcda.promethee/main.c ___________________________________________________________________ Added: svn:mime-type + text/x-csrc Added: svn:eol-style + native Property changes on: grass-addons/grass7/raster/r.mcda.promethee/promethee.c ___________________________________________________________________ Added: svn:mime-type + text/x-csrc Added: svn:eol-style + native Modified: grass-addons/grass7/raster/r.mcda.promethee/r.mcda.promethee.html =================================================================== --- grass-addons/grass7/raster/r.mcda.promethee/r.mcda.promethee.html 2015-09-05 16:44:11 UTC (rev 66116) +++ grass-addons/grass7/raster/r.mcda.promethee/r.mcda.promethee.html 2015-09-05 16:47:51 UTC (rev 66117) @@ -44,4 +44,4 @@

-Last changed: $Date: 2012-12-04 19:08:17 +0100 (mar, 04 dic 2012) $ +Last changed: $Date$ Property changes on: grass-addons/grass7/raster/r.mcda.promethee/r.mcda.promethee.html ___________________________________________________________________ Added: svn:mime-type + text/html Added: svn:keywords + Author Date Id Added: svn:eol-style + native Property changes on: grass-addons/grass7/raster/r.mcda.topsis/Makefile ___________________________________________________________________ Added: svn:mime-type + text/x-makefile Added: svn:eol-style + native Modified: grass-addons/grass7/raster/r.mcda.topsis/r.mcda.topsis.html =================================================================== --- grass-addons/grass7/raster/r.mcda.topsis/r.mcda.topsis.html 2015-09-05 16:44:11 UTC (rev 66116) +++ grass-addons/grass7/raster/r.mcda.topsis/r.mcda.topsis.html 2015-09-05 16:47:51 UTC (rev 66117) @@ -18,4 +18,4 @@ Department of Economics and Appraisal - University of Perugia - Italy

-Last changed: $Date: 2014-01-21 23:14:02 +0100 (mar, 21 gen 2014) $ +Last changed: $Date$ Property changes on: grass-addons/grass7/raster/r.mcda.topsis/r.mcda.topsis.html ___________________________________________________________________ Added: svn:mime-type + text/html Added: svn:keywords + Author Date Id Added: svn:eol-style + native Property changes on: grass-addons/grass7/raster/r.mcda.topsis/r.mcda.topsis.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Property changes on: grass-addons/grass7/raster/r.meb/r_meb_concept_v2.svg ___________________________________________________________________ Added: svn:mime-type + image/svg+xml Property changes on: grass-addons/grass7/raster/r.soils.texture/Makefile ___________________________________________________________________ Added: svn:mime-type + text/x-makefile Added: svn:eol-style + native Property changes on: grass-addons/grass7/raster/r.soils.texture/local_include.h ___________________________________________________________________ Added: svn:mime-type + text/x-chdr Added: svn:eol-style + native Property changes on: grass-addons/grass7/raster/r.soils.texture/main.c ___________________________________________________________________ Added: svn:mime-type + text/x-csrc Added: svn:eol-style + native Modified: grass-addons/grass7/raster/r.soils.texture/r.soils.texture.html =================================================================== --- grass-addons/grass7/raster/r.soils.texture/r.soils.texture.html 2015-09-05 16:44:11 UTC (rev 66116) +++ grass-addons/grass7/raster/r.soils.texture/r.soils.texture.html 2015-09-05 16:47:51 UTC (rev 66117) @@ -34,4 +34,4 @@

-Last changed: $Date: 2015-08-11 00:46:52 +0200 $ +Last changed: $Date$ Property changes on: grass-addons/grass7/raster/r.soils.texture/r.soils.texture.html ___________________________________________________________________ Added: svn:mime-type + text/html Added: svn:keywords + Author Date Id Added: svn:eol-style + native Property changes on: grass-addons/grass7/raster/r.wateroutlet.lessmem/Makefile ___________________________________________________________________ Added: svn:mime-type + text/x-makefile Added: svn:eol-style + native Property changes on: grass-addons/grass7/raster/r.wateroutlet.lessmem/global.h ___________________________________________________________________ Added: svn:mime-type + text/x-chdr Added: svn:eol-style + native Property changes on: grass-addons/grass7/raster/r.wateroutlet.lessmem/main.c ___________________________________________________________________ Added: svn:mime-type + text/x-csrc Added: svn:eol-style + native Property changes on: grass-addons/grass7/raster/r.wateroutlet.lessmem/over_cells.c ___________________________________________________________________ Added: svn:mime-type + text/x-csrc Added: svn:eol-style + native Property changes on: grass-addons/grass7/raster/r.wateroutlet.lessmem/r.wateroutlet.lessmem.html ___________________________________________________________________ Added: svn:mime-type + text/html Added: svn:eol-style + native Property changes on: grass-addons/grass7/vector/v.kriging/README ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Added: svn:eol-style + native Property changes on: grass-addons/grass7/vector/v.kriging/geostat.c ___________________________________________________________________ Added: svn:mime-type + text/x-csrc Added: svn:eol-style + native Property changes on: grass-addons/grass7/vector/v.kriging/getval.c ___________________________________________________________________ Added: svn:mime-type + text/x-csrc Added: svn:eol-style + native Property changes on: grass-addons/grass7/vector/v.kriging/images/small/v_kriging_result_exponential.png ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/png Property changes on: grass-addons/grass7/vector/v.kriging/images/small/v_kriging_result_exponential_2.png ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/png Property changes on: grass-addons/grass7/vector/v.kriging/images/small/v_kriging_result_gauss_1.png ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/png Property changes on: grass-addons/grass7/vector/v.kriging/images/small/v_kriging_result_gauss_2.png ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/png Property changes on: grass-addons/grass7/vector/v.kriging/images/small/v_kriging_result_linear_1.png ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/png Property changes on: grass-addons/grass7/vector/v.kriging/images/small/v_kriging_result_spherical_2.png ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/png Property changes on: grass-addons/grass7/vector/v.kriging/images/small/v_kriging_variogram_exponential.png ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/png Property changes on: grass-addons/grass7/vector/v.kriging/images/small/v_kriging_variogram_exponential_1.png ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/png Property changes on: grass-addons/grass7/vector/v.kriging/images/small/v_kriging_variogram_exponential_2.png ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/png Property changes on: grass-addons/grass7/vector/v.kriging/images/small/v_kriging_variogram_gauss.png ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/png Property changes on: grass-addons/grass7/vector/v.kriging/images/small/v_kriging_variogram_gauss_1.png ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/png Property changes on: grass-addons/grass7/vector/v.kriging/images/small/v_kriging_variogram_gauss_2.png ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/png Property changes on: grass-addons/grass7/vector/v.kriging/images/small/v_kriging_variogram_hz_15000.png ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/png Property changes on: grass-addons/grass7/vector/v.kriging/images/small/v_kriging_variogram_hz_20000.png ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/png Property changes on: grass-addons/grass7/vector/v.kriging/images/small/v_kriging_variogram_linear.png ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/png Property changes on: grass-addons/grass7/vector/v.kriging/images/small/v_kriging_variogram_linear_1.png ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/png Property changes on: grass-addons/grass7/vector/v.kriging/images/small/v_kriging_variogram_spherical.png ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/png Property changes on: grass-addons/grass7/vector/v.kriging/images/small/v_kriging_variogram_spherical_1.png ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/png Property changes on: grass-addons/grass7/vector/v.kriging/images/small/v_kriging_variogram_spherical_2.png ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/png Property changes on: grass-addons/grass7/vector/v.kriging/images/small/v_kriging_variogram_vertical_1200.png ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/png Property changes on: grass-addons/grass7/vector/v.kriging/images/v_kriging_diff_lid792_500_rst.png ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/png Property changes on: grass-addons/grass7/vector/v.kriging/images/v_kriging_diff_lid792_500_surfer.png ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/png Property changes on: grass-addons/grass7/vector/v.kriging/images/v_kriging_result_exponential.png ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/png Property changes on: grass-addons/grass7/vector/v.kriging/images/v_kriging_result_gauss.png ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/png Property changes on: grass-addons/grass7/vector/v.kriging/images/v_kriging_result_lid792_500.png ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/png Property changes on: grass-addons/grass7/vector/v.kriging/images/v_kriging_result_linear.png ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/png Property changes on: grass-addons/grass7/vector/v.kriging/images/v_kriging_result_spherical.png ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/png Property changes on: grass-addons/grass7/vector/v.kriging/images/v_kriging_variogram_exponential.png ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/png Property changes on: grass-addons/grass7/vector/v.kriging/images/v_kriging_variogram_gaussian.png ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/png Property changes on: grass-addons/grass7/vector/v.kriging/images/v_kriging_variogram_hz_100000.png ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/png Property changes on: grass-addons/grass7/vector/v.kriging/images/v_kriging_variogram_lid792_500_linear.png ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/png Property changes on: grass-addons/grass7/vector/v.kriging/images/v_kriging_variogram_lid792_500_surfer.png ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/png Property changes on: grass-addons/grass7/vector/v.kriging/images/v_kriging_variogram_linear.png ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/png Property changes on: grass-addons/grass7/vector/v.kriging/images/v_kriging_variogram_spherical.png ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/png Property changes on: grass-addons/grass7/vector/v.kriging/images/v_kriging_variogram_vertical_1600.png ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/png Property changes on: grass-addons/grass7/vector/v.kriging/images/v_kriging_xvalid_rst_krig.png ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/png Property changes on: grass-addons/grass7/vector/v.kriging/main.c ___________________________________________________________________ Added: svn:mime-type + text/x-csrc Added: svn:eol-style + native Property changes on: grass-addons/grass7/vector/v.kriging/quantile.c ___________________________________________________________________ Added: svn:mime-type + text/x-csrc Added: svn:eol-style + native Property changes on: grass-addons/grass7/vector/v.kriging/spatial_index.c ___________________________________________________________________ Added: svn:mime-type + text/x-csrc Added: svn:eol-style + native Property changes on: grass-addons/grass7/vector/v.kriging/stat.c ___________________________________________________________________ Added: svn:mime-type + text/x-csrc Added: svn:eol-style + native Property changes on: grass-addons/grass7/vector/v.kriging/utils.c ___________________________________________________________________ Added: svn:mime-type + text/x-csrc Added: svn:eol-style + native Property changes on: grass-addons/grass7/vector/v.kriging/utils_kriging.c ___________________________________________________________________ Added: svn:mime-type + text/x-csrc Added: svn:eol-style + native Property changes on: grass-addons/grass7/vector/v.kriging/utils_raster.c ___________________________________________________________________ Added: svn:mime-type + text/x-csrc Added: svn:eol-style + native Property changes on: grass-addons/grass7/vector/v.kriging/utils_write.c ___________________________________________________________________ Added: svn:mime-type + text/x-csrc Added: svn:eol-style + native Property changes on: grass-addons/grass7/vector/v.nnstat/README ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Added: svn:eol-style + native Property changes on: grass-addons/grass7/vector/v.nnstat/getval.c ___________________________________________________________________ Added: svn:mime-type + text/x-csrc Added: svn:eol-style + native Property changes on: grass-addons/grass7/vector/v.nnstat/main.c ___________________________________________________________________ Added: svn:mime-type + text/x-csrc Added: svn:eol-style + native Property changes on: grass-addons/grass7/vector/v.nnstat/mbb.c ___________________________________________________________________ Added: svn:mime-type + text/x-csrc Added: svn:eol-style + native Property changes on: grass-addons/grass7/vector/v.nnstat/mbr.c ___________________________________________________________________ Added: svn:mime-type + text/x-csrc Added: svn:eol-style + native Property changes on: grass-addons/grass7/vector/v.nnstat/nearest_neighbour.c ___________________________________________________________________ Added: svn:mime-type + text/x-csrc Added: svn:eol-style + native Property changes on: grass-addons/grass7/vector/v.nnstat/spatial_index.c ___________________________________________________________________ Added: svn:mime-type + text/x-csrc Added: svn:eol-style + native Property changes on: grass-addons/grass7/vector/v.nnstat/utils.c ___________________________________________________________________ Added: svn:mime-type + text/x-csrc Added: svn:eol-style + native Property changes on: grass-addons/tools/grass-ci/authors-prog.sh ___________________________________________________________________ Added: svn:mime-type + text/x-sh Added: svn:eol-style + native Property changes on: grass-addons/tools/grass-ci/grass-ci.sh ___________________________________________________________________ Added: svn:mime-type + text/x-sh Added: svn:eol-style + native Property changes on: grass-addons/tools/grass-ci/ssh.sh ___________________________________________________________________ Added: svn:mime-type + text/x-sh Added: svn:eol-style + native Property changes on: grass-addons/tools/std_dataset_display.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native From svn_grass at osgeo.org Sat Sep 5 15:39:31 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sat, 5 Sep 2015 15:39:31 -0700 Subject: [GRASS-SVN] r66118 - in grass-addons/grass7/vector: v.kriging v.nnstat Message-ID: <20150905223931.F04EF390136@trac.osgeo.org> Author: wenzeslaus Date: 2015-09-05 15:39:31 -0700 (Sat, 05 Sep 2015) New Revision: 66118 Modified: grass-addons/grass7/vector/v.kriging/Makefile grass-addons/grass7/vector/v.nnstat/Makefile Log: v.kriging and v.nnstat: remove C++ related makefile code and unused libs Modified: grass-addons/grass7/vector/v.kriging/Makefile =================================================================== --- grass-addons/grass7/vector/v.kriging/Makefile 2015-09-05 16:47:51 UTC (rev 66117) +++ grass-addons/grass7/vector/v.kriging/Makefile 2015-09-05 22:39:31 UTC (rev 66118) @@ -8,13 +8,6 @@ EXTRA_INC = $(VECT_INC) $(PROJINC) EXTRA_CFLAGS = $(VECT_CFLAGS) -EXTRA_CFLAGS=-fopenmp -EXTRA_LIBS=$(GISLIB) -lgomp $(MATHLIB) -lboost_system - include $(MODULE_TOPDIR)/include/Make/Module.make -LINK = $(CXX) - -ifneq ($(strip $(CXX)),) default: cmd -endif Modified: grass-addons/grass7/vector/v.nnstat/Makefile =================================================================== --- grass-addons/grass7/vector/v.nnstat/Makefile 2015-09-05 16:47:51 UTC (rev 66117) +++ grass-addons/grass7/vector/v.nnstat/Makefile 2015-09-05 22:39:31 UTC (rev 66118) @@ -9,8 +9,4 @@ include $(MODULE_TOPDIR)/include/Make/Module.make -LINK = $(CXX) - -ifneq ($(strip $(CXX)),) default: cmd -endif From svn_grass at osgeo.org Sat Sep 5 19:43:23 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sat, 5 Sep 2015 19:43:23 -0700 Subject: [GRASS-SVN] r66119 - in grass/trunk/lib/python/pygrass: raster rpc vector Message-ID: <20150906024323.5162F390136@trac.osgeo.org> Author: huhabla Date: 2015-09-05 19:43:23 -0700 (Sat, 05 Sep 2015) New Revision: 66119 Modified: grass/trunk/lib/python/pygrass/raster/history.py grass/trunk/lib/python/pygrass/rpc/__init__.py grass/trunk/lib/python/pygrass/vector/abstract.py Log: pygrass rpc,raster,vector: Added try/except/finally to RPC server functions and date conversion functions Modified: grass/trunk/lib/python/pygrass/raster/history.py =================================================================== --- grass/trunk/lib/python/pygrass/raster/history.py 2015-09-05 22:39:31 UTC (rev 66118) +++ grass/trunk/lib/python/pygrass/raster/history.py 2015-09-06 02:43:23 UTC (rev 66119) @@ -112,7 +112,10 @@ date_str = libraster.Rast_get_history(self.c_hist, libraster.HIST_MAPID) if date_str: - return datetime.datetime.strptime(date_str, self.date_fmt) + try: + return datetime.datetime.strptime(date_str, self.date_fmt) + except: + return date_str def _set_date(self, datetimeobj): if datetimeobj: Modified: grass/trunk/lib/python/pygrass/rpc/__init__.py =================================================================== --- grass/trunk/lib/python/pygrass/rpc/__init__.py 2015-09-05 22:39:31 UTC (rev 66118) +++ grass/trunk/lib/python/pygrass/rpc/__init__.py 2015-09-06 02:43:23 UTC (rev 66119) @@ -45,101 +45,100 @@ :param conn: A multiprocessing.Pipe instance used to send True or False :param data: The list of data entries [function_id, raster_name, extent, color] """ - raster_name = data[1] - extent = data[2] - color = data[3] - - rast = RasterRow(raster_name) array = None - - if rast.exist(): + try: + raster_name = data[1] + extent = data[2] + color = data[3] + + rast = RasterRow(raster_name) - reg = Region() - reg.from_rast(raster_name) - - if extent is not None: - if "north" in extent: - reg.north = extent["north"] - if "south" in extent: - reg.south = extent["south"] - if "east" in extent: - reg.east = extent["east"] - if "west" in extent: - reg.west = extent["west"] - if "rows" in extent: - reg.rows = extent["rows"] - if "cols" in extent: - reg.cols = extent["cols"] - reg.adjust() + if rast.exist(): + + reg = Region() + reg.from_rast(raster_name) + + if extent is not None: + if "north" in extent: + reg.north = extent["north"] + if "south" in extent: + reg.south = extent["south"] + if "east" in extent: + reg.east = extent["east"] + if "west" in extent: + reg.west = extent["west"] + if "rows" in extent: + reg.rows = extent["rows"] + if "cols" in extent: + reg.cols = extent["cols"] + reg.adjust() - array = raster2numpy_img(raster_name, reg, color) - - conn.send(array) + array = raster2numpy_img(raster_name, reg, color) + except: + raise + finally: + conn.send(array) def _get_vector_table_as_dict(lock, conn, data): """Get the table of a vector map layer as dictionary - The value to be send via pipe is True in case the map exists and False - if not. - :param lock: A multiprocessing.Lock instance :param conn: A multiprocessing.Pipe instance used to send True or False :param data: The list of data entries [function_id, name, where] """ - name = data[1] - where = data[2] - layer = VectorTopo(name) ret = None - - if layer.exist() is True: - layer.open("r") - columns = None - table = None - if layer.table is not None: - columns = layer.table.columns - table = layer.table_to_dict(where=where) - layer.close() + try: + name = data[1] + where = data[2] + layer = VectorTopo(name) - ret = {} - ret["table"] = table - ret["columns"] = columns + if layer.exist() is True: + layer.open("r") + columns = None + table = None + if layer.table is not None: + columns = layer.table.columns + table = layer.table_to_dict(where=where) + layer.close() + + ret = {} + ret["table"] = table + ret["columns"] = columns + except: + raise + finally: + conn.send(ret) - conn.send(ret) - def _get_vector_features_as_wkb_list(lock, conn, data): """Return vector layer features as wkb list supported feature types: point, centroid, line, boundary, area - The value to be send via pipe is True in case the map exists and False - if not. - :param lock: A multiprocessing.Lock instance :param conn: A multiprocessing.Pipe instance used to send True or False :param data: The list of data entries [function_id,name,extent, feature_type, field] """ - name = data[1] - extent = data[2] - feature_type = data[3] - field = data[4] - wkb_list = None - bbox = None - - layer = VectorTopo(name) - try: + name = data[1] + extent = data[2] + feature_type = data[3] + field = data[4] + bbox = None + + layer = VectorTopo(name) + if layer.exist() is True: if extent is not None: bbox = basic.Bbox(north=extent["north"], south=extent["south"], east=extent["east"], west=extent["west"]) - logging.warning(str(bbox)) + layer.open("r") if feature_type.lower() == "area": wkb_list = layer.areas_to_wkb_list(bbox=bbox, field=field) @@ -148,10 +147,10 @@ feature_type=feature_type, field=field) layer.close() - except Exception, e: - print(e) - - conn.send(wkb_list) + except: + raise + finally: + conn.send(wkb_list) ############################################################################### Modified: grass/trunk/lib/python/pygrass/vector/abstract.py =================================================================== --- grass/trunk/lib/python/pygrass/vector/abstract.py 2015-09-05 22:39:31 UTC (rev 66118) +++ grass/trunk/lib/python/pygrass/vector/abstract.py 2015-09-06 02:43:23 UTC (rev 66119) @@ -162,7 +162,10 @@ def _get_map_date(self): """Private method to obtain the Vector map date""" date_str = libvect.Vect_get_map_date(self.c_mapinfo) - return datetime.datetime.strptime(date_str, self.date_fmt) + try: + return datetime.datetime.strptime(date_str, self.date_fmt) + except: + return date_str def _set_map_date(self, datetimeobj): """Private method to change the Vector map date""" From svn_grass at osgeo.org Sat Sep 5 19:44:34 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sat, 5 Sep 2015 19:44:34 -0700 Subject: [GRASS-SVN] r66120 - grass/trunk/lib/python/temporal Message-ID: <20150906024434.90D65390136@trac.osgeo.org> Author: huhabla Date: 2015-09-05 19:44:34 -0700 (Sat, 05 Sep 2015) New Revision: 66120 Modified: grass/trunk/lib/python/temporal/c_libraries_interface.py Log: temporal framework: Added new function to C-library RPC Server that are based on PyGRASS to receive full raster and vector map layer info Modified: grass/trunk/lib/python/temporal/c_libraries_interface.py =================================================================== --- grass/trunk/lib/python/temporal/c_libraries_interface.py 2015-09-06 02:43:23 UTC (rev 66119) +++ grass/trunk/lib/python/temporal/c_libraries_interface.py 2015-09-06 02:44:34 UTC (rev 66120) @@ -26,6 +26,8 @@ import grass.lib.raster3d as libraster3d import grass.lib.temporal as libtgis from grass.pygrass.rpc.base import RPCServerBase +from grass.pygrass.raster import RasterRow +from grass.pygrass.vector import VectorTopo ############################################################################### @@ -46,7 +48,8 @@ G_MAPSET = 11 G_LOCATION = 12 G_GISDBASE = 13 - G_FATAL_ERROR = 14 + READ_MAP_FULL_INFO = 14 + G_FATAL_ERROR = 49 TYPE_RASTER = 0 TYPE_RASTER3D = 1 @@ -54,7 +57,95 @@ ############################################################################### +def _read_map_full_info(lock, conn, data): + """Read full map specific metadata from the spatial database using + PyGRASS functions. + :param lock: A multiprocessing.Lock instance + :param conn: A multiprocessing.Pipe instance used to send True or False + :param data: The list of data entries [function_id, maptype, name, mapset] + """ + info = None + try: + maptype = data[1] + name = data[2] + mapset = data[3] + if maptype == RPCDefs.TYPE_RASTER: + info = _read_raster_full_info(name, mapset) + elif maptype == RPCDefs.TYPE_VECTOR: + info = _read_vector_full_info(name, mapset) + except: + raise + finally: + conn.send(info) + +def _read_raster_full_info(name, mapset): + """Read raster info, history and cats using PyGRASS RasterRow + and return a dictionary. Colors should be supported in the + future. + """ + + info = {} + r = RasterRow(name=name, mapset=mapset) + if r.exist() is True: + r.open("r") + + for item in r.info: + info[item[0]] = item[1] + + for item in r.hist: + info[item[0]] = item[1] + + info["full_name"] = r.name_mapset() + info["mtype"] = r.mtype + if r.cats: + info["cats_title"] = r.cats_title + info["cats"] = list(r.cats) + r.close() + + return(info) + +def _read_vector_full_info(name, mapset): + """Read vector info using PyGRASS VectorTopo + and return a dictionary. C + """ + + info = {} + + v = VectorTopo(name=name, mapset=mapset) + if v.exist() is True: + v.open("r") + # Bounding box + for item in v.bbox().items(): + info[item[0]] = item[1] + + info["name"] = v.name + info["mapset"] = v.mapset + info["comment"] = v.comment + info["full_name"] = v.full_name + info["is_3d"] = v.is_3D() + info["map_date"] = v.map_date + info["maptype"] = v.maptype + info["organization"] = v.organization + info["person"] = v.person + info["proj"] = v.proj + info["proj_name"] = v.proj_name + info["title"] = v.title + info["thresh"] = v.thresh + info["zone"] = v.zone + vtypes = ['areas', 'dblinks', 'faces', 'holes', 'islands', + 'kernels', 'lines', 'nodes', 'points', 'updated_lines', + 'updated_nodes', 'volumes'] + for vtype in vtypes: + info[vtype] = v.number_of(vtype) + + info.update(v.num_primitives()) + + if v.table is not None: + info["columns"] = v.table.columns + + return(info) + def _fatal_error(lock, conn, data): """Calls G_fatal_error()""" libgis.G_fatal_error("Fatal Error in C library server") @@ -127,18 +218,23 @@ :returns: Name of the database or None if no temporal database present """ - mapset = data[1] - if not mapset: - mapset = libgis.G_mapset() - dbstring = libtgis.tgis_get_mapset_database_name(mapset) + dbstring = None + try: + mapset = data[1] + if not mapset: + mapset = libgis.G_mapset() + dbstring = libtgis.tgis_get_mapset_database_name(mapset) - if dbstring: - # We substitute GRASS variables if they are located in the database string - # This behavior is in conjunction with db.connect - dbstring = dbstring.replace("$GISDBASE", libgis.G_gisdbase()) - dbstring = dbstring.replace("$LOCATION_NAME", libgis.G_location()) - dbstring = dbstring.replace("$MAPSET", mapset) - conn.send(dbstring) + if dbstring: + # We substitute GRASS variables if they are located in the database string + # This behavior is in conjunction with db.connect + dbstring = dbstring.replace("$GISDBASE", libgis.G_gisdbase()) + dbstring = dbstring.replace("$LOCATION_NAME", libgis.G_location()) + dbstring = dbstring.replace("$MAPSET", mapset) + except: + raise + finally: + conn.send(dbstring) ############################################################################### @@ -195,21 +291,25 @@ mapset, layer] """ - maptype = data[1] - name = data[2] - mapset = data[3] - layer = data[4] check = False - if maptype == RPCDefs.TYPE_RASTER: - if libgis.G_has_raster_timestamp(name, mapset) == 1: - check = True - elif maptype == RPCDefs.TYPE_VECTOR: - if libgis.G_has_vector_timestamp(name, layer, mapset) == 1: - check = True - elif maptype == RPCDefs.TYPE_RASTER3D: - if libgis.G_has_raster3d_timestamp(name, mapset) == 1: - check = True - conn.send(check) + try: + maptype = data[1] + name = data[2] + mapset = data[3] + layer = data[4] + if maptype == RPCDefs.TYPE_RASTER: + if libgis.G_has_raster_timestamp(name, mapset) == 1: + check = True + elif maptype == RPCDefs.TYPE_VECTOR: + if libgis.G_has_vector_timestamp(name, layer, mapset) == 1: + check = True + elif maptype == RPCDefs.TYPE_RASTER3D: + if libgis.G_has_raster3d_timestamp(name, mapset) == 1: + check = True + except: + raise + finally: + conn.send(check) ############################################################################### @@ -239,21 +339,26 @@ mapset, layer] """ - maptype = data[1] - name = data[2] - mapset = data[3] - layer = data[4] check = False - ts = libgis.TimeStamp() - if maptype == RPCDefs.TYPE_RASTER: - check = libgis.G_read_raster_timestamp(name, mapset, byref(ts)) - elif maptype == RPCDefs.TYPE_VECTOR: - check = libgis.G_read_vector_timestamp(name, layer, mapset, byref(ts)) - elif maptype == RPCDefs.TYPE_RASTER3D: - check = libgis.G_read_raster3d_timestamp(name, mapset, byref(ts)) + dates = None + try: + maptype = data[1] + name = data[2] + mapset = data[3] + layer = data[4] + ts = libgis.TimeStamp() + if maptype == RPCDefs.TYPE_RASTER: + check = libgis.G_read_raster_timestamp(name, mapset, byref(ts)) + elif maptype == RPCDefs.TYPE_VECTOR: + check = libgis.G_read_vector_timestamp(name, layer, mapset, byref(ts)) + elif maptype == RPCDefs.TYPE_RASTER3D: + check = libgis.G_read_raster3d_timestamp(name, mapset, byref(ts)) - dates = _convert_timestamp_from_grass(ts) - conn.send((check, dates)) + dates = _convert_timestamp_from_grass(ts) + except: + raise + finally: + conn.send((check, dates)) ############################################################################### @@ -273,28 +378,31 @@ :param data: The list of data entries [function_id, maptype, name, mapset, layer, timestring] """ - maptype = data[1] - name = data[2] - mapset = data[3] - layer = data[4] - timestring = data[5] check = -3 - ts = libgis.TimeStamp() - check = libgis.G_scan_timestamp(byref(ts), timestring) + try: + maptype = data[1] + name = data[2] + mapset = data[3] + layer = data[4] + timestring = data[5] + ts = libgis.TimeStamp() + check = libgis.G_scan_timestamp(byref(ts), timestring) - if check != 1: - logging.error("Unable to convert the timestamp: " + timestring) - return -2 + if check != 1: + logging.error("Unable to convert the timestamp: " + timestring) + return -2 - if maptype == RPCDefs.TYPE_RASTER: - check = libgis.G_write_raster_timestamp(name, byref(ts)) - elif maptype == RPCDefs.TYPE_VECTOR: - check = libgis.G_write_vector_timestamp(name, layer, byref(ts)) - elif maptype == RPCDefs.TYPE_RASTER3D: - check = libgis.G_write_raster3d_timestamp(name, byref(ts)) + if maptype == RPCDefs.TYPE_RASTER: + check = libgis.G_write_raster_timestamp(name, byref(ts)) + elif maptype == RPCDefs.TYPE_VECTOR: + check = libgis.G_write_vector_timestamp(name, layer, byref(ts)) + elif maptype == RPCDefs.TYPE_RASTER3D: + check = libgis.G_write_raster3d_timestamp(name, byref(ts)) + except: + raise + finally: + conn.send(check) - conn.send(check) - ############################################################################### @@ -314,20 +422,23 @@ mapset, layer] """ - maptype = data[1] - name = data[2] - mapset = data[3] - layer = data[4] check = False - if maptype == RPCDefs.TYPE_RASTER: - check = libgis.G_remove_raster_timestamp(name, mapset) - elif maptype == RPCDefs.TYPE_VECTOR: - check = libgis.G_remove_vector_timestamp(name, layer, mapset) - elif maptype == RPCDefs.TYPE_RASTER3D: - check = libgis.G_remove_raster3d_timestamp(name, mapset) + try: + maptype = data[1] + name = data[2] + mapset = data[3] + layer = data[4] + if maptype == RPCDefs.TYPE_RASTER: + check = libgis.G_remove_raster_timestamp(name, mapset) + elif maptype == RPCDefs.TYPE_VECTOR: + check = libgis.G_remove_vector_timestamp(name, layer, mapset) + elif maptype == RPCDefs.TYPE_RASTER3D: + check = libgis.G_remove_raster3d_timestamp(name, mapset) + except: + raise + finally: + conn.send(check) - conn.send(check) - ############################################################################### @@ -342,22 +453,25 @@ :param data: The list of data entries [function_id, maptype, name, mapset] """ - maptype = data[1] - name = data[2] - mapset = data[3] check = False - if maptype == RPCDefs.TYPE_RASTER: - mapset = libgis.G_find_raster(name, mapset) - elif maptype == RPCDefs.TYPE_VECTOR: - mapset = libgis.G_find_vector(name, mapset) - elif maptype == RPCDefs.TYPE_RASTER3D: - mapset = libgis.G_find_raster3d(name, mapset) + try: + maptype = data[1] + name = data[2] + mapset = data[3] + if maptype == RPCDefs.TYPE_RASTER: + mapset = libgis.G_find_raster(name, mapset) + elif maptype == RPCDefs.TYPE_VECTOR: + mapset = libgis.G_find_vector(name, mapset) + elif maptype == RPCDefs.TYPE_RASTER3D: + mapset = libgis.G_find_raster3d(name, mapset) - if mapset: - check = True + if mapset: + check = True + except: + raise + finally: + conn.send(check) - conn.send(check) - ############################################################################### @@ -369,18 +483,22 @@ :param conn: A multiprocessing.Pipe instance used to send True or False :param data: The list of data entries [function_id, maptype, name, mapset] """ - maptype = data[1] - name = data[2] - mapset = data[3] - if maptype == RPCDefs.TYPE_RASTER: - kvp = _read_raster_info(name, mapset) - elif maptype == RPCDefs.TYPE_VECTOR: - kvp = _read_vector_info(name, mapset) - elif maptype == RPCDefs.TYPE_RASTER3D: - kvp = _read_raster3d_info(name, mapset) + kvp = None + try: + maptype = data[1] + name = data[2] + mapset = data[3] + if maptype == RPCDefs.TYPE_RASTER: + kvp = _read_raster_info(name, mapset) + elif maptype == RPCDefs.TYPE_VECTOR: + kvp = _read_vector_info(name, mapset) + elif maptype == RPCDefs.TYPE_RASTER3D: + kvp = _read_raster3d_info(name, mapset) + except: + raise + finally: + conn.send(kvp) - conn.send(kvp) - ############################################################################### @@ -765,7 +883,7 @@ libgis.G_add_error_handler(cerror_handler, None) # Crerate the function array - functions = [0]*15 + functions = [0]*50 functions[RPCDefs.STOP] = _stop functions[RPCDefs.HAS_TIMESTAMP] = _has_timestamp functions[RPCDefs.WRITE_TIMESTAMP] = _write_timestamp @@ -779,6 +897,7 @@ functions[RPCDefs.G_MAPSET] = _get_mapset functions[RPCDefs.G_LOCATION] = _get_location functions[RPCDefs.G_GISDBASE] = _get_gisdbase + functions[RPCDefs.READ_MAP_FULL_INFO] = _read_map_full_info functions[RPCDefs.G_FATAL_ERROR] = _fatal_error libgis.G_gisinit("c_library_server") @@ -843,6 +962,10 @@ True >>> ciface.read_raster_info("test", tgis.get_current_mapset()) {'rows': 12, 'north': 80.0, 'min': 1, 'datatype': 'CELL', 'max': 1, 'ewres': 10.0, 'cols': 8, 'west': 0.0, 'east': 120.0, 'nsres': 10.0, 'south': 0.0} + + >>> ciface.read_raster_full_info("test", tgis.get_current_mapset()) # doctest: +ELLIPSIS +NORMALIZE_WHITESPACE + {u'tbres': 1.0, ... 'title': 'test', u'south': 0.0} + >>> check = ciface.has_raster_timestamp("test", tgis.get_current_mapset()) >>> print check True @@ -890,8 +1013,23 @@ >>> print check True >>> kvp = ciface.read_vector_info("test", tgis.get_current_mapset()) + >>> kvp['points'] + 10 + + >>> kvp = ciface.read_vector_full_info("test", tgis.get_current_mapset()) >>> print kvp['points'] 10 + >>> kvp['point'] + 10 + >>> kvp['area'] + 0 + >>> kvp['lines'] + 10 + >>> kvp['line'] + 0 + >>> 'columns' in kvp + False + >>> check = ciface.has_vector_timestamp("test", tgis.get_current_mapset(), None) >>> print check True @@ -979,7 +1117,23 @@ self.client_conn.send([RPCDefs.READ_MAP_INFO, RPCDefs.TYPE_RASTER, name, mapset, None]) return self.safe_receive("read_raster_info") + + def read_raster_full_info(self, name, mapset): + """Read raster info, history and cats using PyGRASS RasterRow + and return a dictionary. Colors should be supported in the + future. + :param name: The name of the map + :param mapset: The mapset of the map + :returns: The key value pairs of the map specific metadata, + or None in case of an error + """ + self.check_server() + self.client_conn.send([RPCDefs.READ_MAP_FULL_INFO, + RPCDefs.TYPE_RASTER, + name, mapset, None]) + return self.safe_receive("read_raster_full_info") + def has_raster_timestamp(self, name, mapset): """Check if a file based raster timetamp exists @@ -1168,6 +1322,21 @@ name, mapset, None]) return self.safe_receive("read_vector_info") + def read_vector_full_info(self, name, mapset): + """Read vector info using PyGRASS VectorTopo + and return a dictionary. + + :param name: The name of the map + :param mapset: The mapset of the map + :returns: The key value pairs of the map specific metadata, + or None in case of an error + """ + self.check_server() + self.client_conn.send([RPCDefs.READ_MAP_FULL_INFO, + RPCDefs.TYPE_VECTOR, + name, mapset, None]) + return self.safe_receive("read_vector_full_info") + def has_vector_timestamp(self, name, mapset, layer=None): """Check if a file based vector timetamp exists From svn_grass at osgeo.org Sun Sep 6 02:29:29 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sun, 6 Sep 2015 02:29:29 -0700 Subject: [GRASS-SVN] r66121 - grass-addons/grass7/raster/r.mcda.promethee Message-ID: <20150906092929.AD0A43900CB@trac.osgeo.org> Author: gianluca Date: 2015-09-06 02:29:29 -0700 (Sun, 06 Sep 2015) New Revision: 66121 Modified: grass-addons/grass7/raster/r.mcda.promethee/local_proto.h grass-addons/grass7/raster/r.mcda.promethee/main.c grass-addons/grass7/raster/r.mcda.promethee/promethee.c Log: first almost usable version 0.1 Modified: grass-addons/grass7/raster/r.mcda.promethee/local_proto.h =================================================================== --- grass-addons/grass7/raster/r.mcda.promethee/local_proto.h 2015-09-06 02:44:34 UTC (rev 66120) +++ grass-addons/grass7/raster/r.mcda.promethee/local_proto.h 2015-09-06 09:29:29 UTC (rev 66121) @@ -20,5 +20,5 @@ void build_flow_matrix(int nrows, int ncols, int ncriteria, double *weight_vect, double ***decision_vol, - double ***positive_flow_vol, double ***negative_flow_vol); + double **positive_flow_vol, double **negative_flow_vol); Modified: grass-addons/grass7/raster/r.mcda.promethee/main.c =================================================================== --- grass-addons/grass7/raster/r.mcda.promethee/main.c 2015-09-06 02:44:34 UTC (rev 66120) +++ grass-addons/grass7/raster/r.mcda.promethee/main.c 2015-09-06 09:29:29 UTC (rev 66121) @@ -3,9 +3,8 @@ * MODULE: r.mcda.promethee * AUTHORS: Gianluca Massei (g_massa at libero.it) - Antonio Boggia (boggia at unipg.it) * - * PURPOSE: Make a multicriteria decision analysis based on PROMETHEE algorithm, - * with concordance and discordance indexes maps - * + * PURPOSE: Make a multicriteria decision analysis based on PROMETHEE algorithm. + * * COPYRIGHT: (C) GRASS Development Team (2015) * * This program is free software under the GNU General Public @@ -38,7 +37,7 @@ int row1, col1; int outfd_positive_flow, outfd_negative_flow, outfd_netflow; /* output file descriptor */ /*RASTER_MAP_TYPE data_type; type of the map (CELL/DCELL/...) */ - double *weight_vect, ***decision_vol, ***positive_flow_vol, ***negative_flow_vol;/* vector and matrix */ + double *weight_vect, ***decision_vol, **positive_flow_vol, **negative_flow_vol;/* vector and matrix */ struct History history; /* holds meta-data (title, comments,..) */ @@ -164,19 +163,20 @@ /*memory allocation for-three dimensional matrix*/ decision_vol=G_malloc(nrows * sizeof(double*)); - positive_flow_vol=G_malloc(nrows * sizeof(double*)); - negative_flow_vol=G_malloc(nrows * sizeof(double*)); + positive_flow_vol=G_calloc(nrows, sizeof(double*)); /*Allocates aligned block of memory and initializes the allocated memory to zero.*/ + negative_flow_vol=G_calloc(nrows, sizeof(double*)); + for (i=0; i row %d"), criteria->answers[i], row);*/ for (col1 = 0; col1 < ncols; col1++) @@ -206,17 +208,18 @@ } } } - - G_message("step started"); + + G_message("run algorithm"); build_flow_matrix(nrows,ncols,ncriteria,weight_vect,decision_vol,positive_flow_vol, negative_flow_vol); /*scan all DCELL, make a pairwise comparatione, buil positive flow matrix*/ - G_message("step ended"); + G_message("buil mcda maps"); for (row1 = 0; row1 < nrows; row1++) { + G_percent(row1, nrows, 2); for (col1 = 0; col1 < ncols; col1++) { - ((DCELL *) outrast_positive_flow)[col1] = (DCELL)positive_flow_vol[row1][col1][ncriteria];/*write positive flow map*/ - ((DCELL *) outrast_negative_flow)[col1] = (DCELL)negative_flow_vol[row1][col1][ncriteria];/*write negative flow map*/ + ((DCELL *) outrast_positive_flow)[col1] = (DCELL)positive_flow_vol[row1][col1];/*write positive flow map*/ + ((DCELL *) outrast_negative_flow)[col1] = (DCELL)negative_flow_vol[row1][col1];/*write negative flow map*/ } Rast_put_row(outfd_positive_flow, outrast_positive_flow, DCELL_TYPE); Rast_put_row(outfd_negative_flow, outrast_negative_flow, DCELL_TYPE); Modified: grass-addons/grass7/raster/r.mcda.promethee/promethee.c =================================================================== --- grass-addons/grass7/raster/r.mcda.promethee/promethee.c 2015-09-06 02:44:34 UTC (rev 66120) +++ grass-addons/grass7/raster/r.mcda.promethee/promethee.c 2015-09-06 09:29:29 UTC (rev 66121) @@ -9,7 +9,7 @@ void build_flow_matrix(int nrows, int ncols, int ncriteria, double *weight_vect, double ***decision_vol, - double ***positive_flow_vol, double ***negative_flow_vol); + double **positive_flow_vol, double **negative_flow_vol); /* @@ -50,7 +50,7 @@ void build_flow_matrix(int nrows, int ncols, int ncriteria, double *weight_vect, double ***decision_vol, - double ***positive_flow_vol, double ***negative_flow_vol) + double **positive_flow_vol, double **negative_flow_vol) { int row1, col1, row2, col2; int i; @@ -66,37 +66,45 @@ { for (row2 = 0; row2 < nrows; row2++) { + //G_percent(row2, (nrows), 2); for (col2 = 0; col2 < ncols; col2++) { threshold = (decision_vol[row1][col1][i] - decision_vol[row2][col2][i]); + //G_message("thersold:%f;r1:%d;c1:%d // r2:%d;c2:%d ",threshold,row1,col1,row2,col2); if (threshold>0) { - positive_flow_vol[row1][col1][i]=threshold*weight_vect[i]; - negative_flow_vol[row1][col1][i]=0; + //positive_flow_vol[row1][col1][i]=threshold*weight_vect[i]; + //negative_flow_vol[row1][col1][i]=0; + positive_flow_vol[row1][col1]=positive_flow_vol[row1][col1]+(threshold*weight_vect[i]); + negative_flow_vol[row1][col1]=negative_flow_vol[row1][col1]; + } else { - positive_flow_vol[row1][col1][i]=0; - negative_flow_vol[row1][col1][i]=threshold*weight_vect[i]; + negative_flow_vol[row1][col1]=negative_flow_vol[row1][col1]+(threshold*weight_vect[i]); + positive_flow_vol[row1][col1]=positive_flow_vol[row1][col1]; + //positive_flow_vol[row1][col1][i]=0; + //negative_flow_vol[row1][col1][i]=threshold*weight_vect[i]; } } } } } } - + G_message("check"); + /*storage preference value in decision_vol */ - for (row1 = 0; row1 < nrows; row1++) +/* for (row1 = 0; row1 < nrows; row1++) { G_percent(row1, nrows, 2); for (col1 = 0; col1 < ncols; col1++) { for ( i=0; i Author: neteler Date: 2015-09-06 05:20:42 -0700 (Sun, 06 Sep 2015) New Revision: 66122 Modified: grass/branches/releasebranch_7_0/man/build_html.py grass/branches/releasebranch_7_0/tools/mkhtml.py Log: docs: sync capital latter for indexes in footer and make it more readble in the code (trunk, r65995) Modified: grass/branches/releasebranch_7_0/man/build_html.py =================================================================== --- grass/branches/releasebranch_7_0/man/build_html.py 2015-09-06 09:29:29 UTC (rev 66121) +++ grass/branches/releasebranch_7_0/man/build_html.py 2015-09-06 12:20:42 UTC (rev 66122) @@ -187,8 +187,17 @@ footer_tmpl = string.Template(\ r"""


-

Manual main page | Topics Index | Keywords Index | Full Index

-

© 2003-${year} GRASS Development Team, GRASS GIS ${grass_version} Reference Manual

+

+Main index | +Topics index | +Keywords index | +Full index +

+

+© 2003-${year} +GRASS Development Team, +GRASS GIS ${grass_version} Reference Manual +

Modified: grass/branches/releasebranch_7_0/tools/mkhtml.py =================================================================== --- grass/branches/releasebranch_7_0/tools/mkhtml.py 2015-09-06 09:29:29 UTC (rev 66121) +++ grass/branches/releasebranch_7_0/tools/mkhtml.py 2015-09-06 12:20:42 UTC (rev 66122) @@ -55,8 +55,19 @@ footer_index = string.Template(\ """
-

Main index | ${INDEXNAMECAP} index | Topics index | Keywords index | Full index

-

© 2003-${YEAR} GRASS Development Team, GRASS GIS ${GRASS_VERSION} Reference Manual

+

+Main index | +${INDEXNAMECAP} index | +Topics index | +Keywords index | +Full index +

+

+© 2003-${YEAR} +GRASS Development Team, +GRASS GIS ${GRASS_VERSION} Reference Manual +

+
@@ -64,8 +75,18 @@ footer_noindex = string.Template(\ """
-

Main index | Topics index | Keywords index | Full index

-

© 2003-${YEAR} GRASS Development Team, GRASS GIS ${GRASS_VERSION} Reference Manual

+

+Main index | +Topics index | +Keywords index | +Full index +

+

+© 2003-${YEAR} +GRASS Development Team, +GRASS GIS ${GRASS_VERSION} Reference Manual +

+ From svn_grass at osgeo.org Sun Sep 6 05:24:19 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sun, 6 Sep 2015 05:24:19 -0700 Subject: [GRASS-SVN] r66123 - grass/branches/releasebranch_7_0/gui/wxpython/docs Message-ID: <20150906122419.096DE390136@trac.osgeo.org> Author: neteler Date: 2015-09-06 05:24:18 -0700 (Sun, 06 Sep 2015) New Revision: 66123 Modified: grass/branches/releasebranch_7_0/gui/wxpython/docs/wxGUI.html Log: wxGUI manual: sync to trunk incl. r66004 Modified: grass/branches/releasebranch_7_0/gui/wxpython/docs/wxGUI.html =================================================================== --- grass/branches/releasebranch_7_0/gui/wxpython/docs/wxGUI.html 2015-09-06 12:20:42 UTC (rev 66122) +++ grass/branches/releasebranch_7_0/gui/wxpython/docs/wxGUI.html 2015-09-06 12:24:18 UTC (rev 66123) @@ -1,55 +1,11 @@

DESCRIPTION

-wxGUI is native Graphical User Interface (GUI) for -GRASS GIS written in Python -using wxPython library. +wxGUI is a native Graphical User Interface (GUI) for +GRASS GIS. Its main features include displaying geographical data +in 2D and 3D, calling GRASS GIS modules, and interacting with data. -

Starting the graphical user interface

-If the wxGUI is not the default user interface, it can defined as default by -typing at the GRASS GIS command line prompt: -
-g.gui -u wxpython
-
- -Alternatively it may be defined in GISRC file -($HOME/.grass7/rc on GNU/Linux, $APPDATA\GRASS7\rc -on MS Windows) by GUI variable - -
-GUI: wxpython
-
- -or by the environmental variable GRASS_GUI. -

-The GUI can be quit by selecting the 'File -> Exit GUI' menu item. - -On MS Windows when GRASS is launched without an interactive command line -this will end the entire GRASS session. In other cases the terminal -window will remain running; type exit at the command prompt -to end the GRASS session. -

-The GUI can be restarted from the GRASS command line prompt by typing - -

-g.gui wxpython
-
- -To restart with previously saved workspace file: - -
-g.gui wxpython workspace=file.gxw
-
- -

-The user can also start GRASS from the shell command line with the wxGUI -specifying the -gui (or -wxpython) switch: - -

-grass70 -gui
-
-

Overview

The GUI is composed of two main components: @@ -412,7 +368,14 @@
icon  Pointer
Select arrow cursor for map display.
- + +
icon  + Select features from vector map
+
Interactively select features from given vector map. Selection + can be stored to a new vector map, + see v.what + and v.extract.
+
icon  Query raster/vector maps
Query selected raster, RGB raster (all three map channels will be @@ -660,6 +623,67 @@
Fullscreen mode (toggle on/off)
+ +

Starting the graphical user interface

+ +If the wxGUI is not the default user interface, it can defined as default by +typing at the GRASS GIS command line prompt: + +
+g.gui -u wxpython
+
+ +Alternatively it may be defined in GISRC file +($HOME/.grass7/rc on GNU/Linux, $APPDATA\GRASS7\rc +on MS Windows) by GUI variable + +
+GUI: wxpython
+
+ +or by the environmental variable GRASS_GUI. +

+The GUI can be quit by selecting the 'File -> Exit GUI' menu item. + +On MS Windows when GRASS is launched without an interactive command line +this will end the entire GRASS session. In other cases the terminal +window will remain running; type exit at the command prompt +to end the GRASS session. +

+The GUI can be restarted from the GRASS command line prompt by typing + +

+g.gui
+
+ +or + +
+g.gui wxpython
+
+ +To restart with previously saved workspace file: + +
+g.gui wxpython workspace=file.gxw
+
+ +

+The user can also start GRASS from the shell command line with the wxGUI +specifying the -gui (or -wxpython) switch: + +

+grass71 -gui
+
+ + +

Background information

+ +wxGUI is a native Graphical User Interface (GUI) for +GRASS GIS written in Python +using wxPython library. + +

SEE ALSO

@@ -682,10 +706,11 @@ Daniel Calvelo Aros
Jachym Cepicky
Markus Metz, Germany
-Anna Kratochvilova, Czech Technical University in Prague, Czech Republic
-Vaclav Petras, Czech Technical University in Prague, Czech Republic
-Stepan Turek, Czech Technical University in Prague, Czech Republic
-Tereza Fiedlerova, Czech Technical University in Prague, Czech Republic

+Anna Kratochvilova, OSGeoREL, Czech Technical University in Prague, Czech Republic
+Vaclav Petras, OSGeoREL, Czech Technical University in Prague, Czech Republic
+Stepan Turek, OSGeoREL, Czech Technical University in Prague, Czech Republic
+Tereza Fiedlerova, OSGeoREL, Czech Technical University in Prague, Czech Republic
+Matej Krejci, OSGeoREL, Czech Technical University in Prague, Czech Republic

Icons created by Robert Szczepanek, Poland (SVN) From svn_grass at osgeo.org Sun Sep 6 05:28:47 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sun, 6 Sep 2015 05:28:47 -0700 Subject: [GRASS-SVN] r66124 - grass/branches/releasebranch_7_0/lib/python/temporal Message-ID: <20150906122847.B29AB390136@trac.osgeo.org> Author: neteler Date: 2015-09-06 05:28:47 -0700 (Sun, 06 Sep 2015) New Revision: 66124 Modified: grass/branches/releasebranch_7_0/lib/python/temporal/stds_import.py Log: temporal library: Fixed import of STRDS generated from R (trunk, r65967) Modified: grass/branches/releasebranch_7_0/lib/python/temporal/stds_import.py =================================================================== --- grass/branches/releasebranch_7_0/lib/python/temporal/stds_import.py 2015-09-06 12:24:18 UTC (rev 66123) +++ grass/branches/releasebranch_7_0/lib/python/temporal/stds_import.py 2015-09-06 12:28:47 UTC (rev 66124) @@ -211,12 +211,14 @@ # Check for important files members = tar.getnames() + # Make sure that the basenames of the files are used for comparison + member_basenames = [os.path.basename(name) for name in members] - if init_file_name not in members: + if init_file_name not in member_basenames: gscript.fatal(_("Unable to find init file <%s>") % init_file_name) - if list_file_name not in members: + if list_file_name not in member_basenames: gscript.fatal(_("Unable to find list file <%s>") % list_file_name) - if proj_file_name not in members: + if proj_file_name not in member_basenames: gscript.fatal(_("Unable to find projection file <%s>") % proj_file_name) tar.extractall(path=directory) @@ -236,11 +238,26 @@ temp_file = open(temp_name, "w") proj_name = os.path.abspath(proj_file_name) + # We need to convert projection strings generated + # from other programms than g.proj into + # new line format so that the grass file comparison function + # can be used to compare the projections + proj_name_tmp = temp_name + "_in_projection" + proj_file = open(proj_name, "r") + proj_content = proj_file.read() + proj_content = proj_content.replace(" +", "\n+") + proj_content = proj_content.replace("\t+", "\n+") + proj_file.close() + + proj_file = open(proj_name_tmp, "w") + proj_file.write(proj_content) + proj_file.close() + p = gscript.start_command("g.proj", flags="j", stdout=temp_file) p.communicate() temp_file.close() - if not gscript.compare_key_value_text_files(temp_name, proj_name, + if not gscript.compare_key_value_text_files(temp_name, proj_name_tmp, sep="="): if overr: gscript.warning(_("Projection information does not match. " From svn_grass at osgeo.org Sun Sep 6 05:30:23 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sun, 6 Sep 2015 05:30:23 -0700 Subject: [GRASS-SVN] r66125 - grass/branches/releasebranch_7_0/lib/gis Message-ID: <20150906123023.18847390136@trac.osgeo.org> Author: neteler Date: 2015-09-06 05:30:22 -0700 (Sun, 06 Sep 2015) New Revision: 66125 Modified: grass/branches/releasebranch_7_0/lib/gis/get_window.c Log: libgis: catch empty region file (suggested in https://lists.osgeo.org/pipermail/grass-dev/2015-August/075933.html) (trunk, r65962) Modified: grass/branches/releasebranch_7_0/lib/gis/get_window.c =================================================================== --- grass/branches/releasebranch_7_0/lib/gis/get_window.c 2015-09-06 12:28:47 UTC (rev 66124) +++ grass/branches/releasebranch_7_0/lib/gis/get_window.c 2015-09-06 12:30:22 UTC (rev 66125) @@ -118,6 +118,10 @@ G_fatal_error(_("Unable to open element file <%s> for <%s@%s>"), element, name, mapset); + G_fseek(fp, 0, SEEK_END); + if (!G_ftell(fp)) + G_fatal_error(_("Region file %s/%s/%s is empty"), mapset, element, name); + G_fseek(fp, 0, SEEK_SET); G__read_Cell_head(fp, window, 0); fclose(fp); } From svn_grass at osgeo.org Sun Sep 6 06:05:48 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sun, 6 Sep 2015 06:05:48 -0700 Subject: [GRASS-SVN] r66126 - grass/trunk/raster/r.resamp.filter Message-ID: <20150906130548.083903900CB@trac.osgeo.org> Author: neteler Date: 2015-09-06 06:05:47 -0700 (Sun, 06 Sep 2015) New Revision: 66126 Modified: grass/trunk/raster/r.resamp.filter/r.resamp.filter.html Log: r.resamp.filter manual: expanded based on Glynn's comments in https://trac.osgeo.org/grass/ticket/1401#comment:8 Modified: grass/trunk/raster/r.resamp.filter/r.resamp.filter.html =================================================================== --- grass/trunk/raster/r.resamp.filter/r.resamp.filter.html 2015-09-06 12:30:22 UTC (rev 66125) +++ grass/trunk/raster/r.resamp.filter/r.resamp.filter.html 2015-09-06 13:05:47 UTC (rev 66126) @@ -1,43 +1,91 @@

DESCRIPTION

-

r.resamp.filter resamples an input raster, filtering the -input with an analytic kernel. +r.resamp.filter resamples an input raster, filtering the +input with an analytic kernel. Each output cell is typically calculated +based upon a small subset of the input cells, not the entire input. +r.resamp.filter performs convolution (i.e. a weighted sum is +calculated for every raster cell). -

All of the kernels specified by the filter= option are multiplied -together. Typical usage will use either a single kernel or an infinite -kernel along with a finite window. +

+The module maps the input range to the width of the window function, so +wider windows will be "sharper" (have a higher cut-off frequency), e.g. +lanczos3 will be sharper than lanczos2. +

+r.resamp.filter implements FIR (finite impulse response) filtering. All +of the functions are low-pass filters, as they are symmetric. See +Wikipedia: Window function +for examples of common window functions and their frequency responses. +

+A piecewise-continuous function defined by sampled data can be considered +a mixture (sum) of the underlying signal and quantisation noise. The +intent of a low pass filter is to discard the quantisation noise while +retaining the signal. + +The cut-off frequency is normally chosen according to the sampling +frequency, as the quantisation noise is dominated by the sampling +frequency and its harmonics. In general, the cut-off frequency is +inversely proportional to the width of the central "lobe" of the window +function. + +

+When using r.resamp.filter with a specific radius, a specific +cut-off frequency regardless of the method is chosen. So while lanczos3 +uses 3 times as large a window as lanczos1, the cut-off frequency remains +the same. Effectively, the radius is "normalised". + +

+All of the kernels specified by the filter parameter are +multiplied together. Typical usage will use either a single kernel or an +infinite kernel along with a finite window. + +

NOTES

-

Resampling modules (r.resample, r.resamp.stats, r.resamp.interp, +Resampling modules (r.resample, r.resamp.stats, r.resamp.interp, r.resamp.rst, r.resamp.filter) resample the map to match the current region settings. - -

When using a kernel which can have negative values (sinc, Lanczos), +

+When using a kernel which can have negative values (sinc, Lanczos), the -n flag should be used. Otherwise, extreme values can arise due to the total weight being close (or even equal) to zero. - -

Kernels with infinite extent (Gauss, normal, sinc, Hann, Hamming, +

+Kernels with infinite extent (Gauss, normal, sinc, Hann, Hamming, Blackman) must be used in conjunction with a finite windowing function -(box, Bartlett, Hermite, Lanczos) +(box, Bartlett, Hermite, Lanczos). +

+The way that Lanczos filters are defined, the number of samples is +supposed to be proportional to the order ("a" parameter), so lanczos3 +should use 3 times as many samples (at the same sampling frequency, i.e. +cover 3 times as large a time interval) as lanczos1 in order to get a +similar frequency response (higher-order filters will fall off faster, but +the frequency at which the fall-off starts should be the same). See +Wikipedia: Lanczos-kernel.svg +for an illustration. If both graphs were drawn on the same axes, they +would have roughly the same shape, but the a=3 window would have a longer +tail. By scaling the axes to the same width, the a=3 window has a narrower +central lobe. -

For longitude-latitude locations, the interpolation algorithm is based on +

+For longitude-latitude locations, the interpolation algorithm is based on degree fractions, not on the absolute distances between cell centers. Any attempt to implement the latter would violate the integrity of the interpolation method. -

SEE ALSO

-g.region, -r.resample, -r.resamp.rst -r.resamp.stats + +g.region, +r.resample, +r.resamp.interp, +r.resamp.rst, +r.resamp.stats +

AUTHOR

From svn_grass at osgeo.org Sun Sep 6 06:06:27 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sun, 6 Sep 2015 06:06:27 -0700 Subject: [GRASS-SVN] r66127 - grass/branches/releasebranch_7_0/raster/r.resamp.filter Message-ID: <20150906130627.483C43900CB@trac.osgeo.org> Author: neteler Date: 2015-09-06 06:06:27 -0700 (Sun, 06 Sep 2015) New Revision: 66127 Modified: grass/branches/releasebranch_7_0/raster/r.resamp.filter/r.resamp.filter.html Log: r.resamp.filter manual: expanded based on Glynn's comments in https://trac.osgeo.org/grass/ticket/1401#comment:8 Modified: grass/branches/releasebranch_7_0/raster/r.resamp.filter/r.resamp.filter.html =================================================================== --- grass/branches/releasebranch_7_0/raster/r.resamp.filter/r.resamp.filter.html 2015-09-06 13:05:47 UTC (rev 66126) +++ grass/branches/releasebranch_7_0/raster/r.resamp.filter/r.resamp.filter.html 2015-09-06 13:06:27 UTC (rev 66127) @@ -1,43 +1,91 @@

DESCRIPTION

-

r.resamp.filter resamples an input raster, filtering the -input with an analytic kernel. +r.resamp.filter resamples an input raster, filtering the +input with an analytic kernel. Each output cell is typically calculated +based upon a small subset of the input cells, not the entire input. +r.resamp.filter performs convolution (i.e. a weighted sum is +calculated for every raster cell). -

All of the kernels specified by the filter= option are multiplied -together. Typical usage will use either a single kernel or an infinite -kernel along with a finite window. +

+The module maps the input range to the width of the window function, so +wider windows will be "sharper" (have a higher cut-off frequency), e.g. +lanczos3 will be sharper than lanczos2. +

+r.resamp.filter implements FIR (finite impulse response) filtering. All +of the functions are low-pass filters, as they are symmetric. See +Wikipedia: Window function +for examples of common window functions and their frequency responses. +

+A piecewise-continuous function defined by sampled data can be considered +a mixture (sum) of the underlying signal and quantisation noise. The +intent of a low pass filter is to discard the quantisation noise while +retaining the signal. + +The cut-off frequency is normally chosen according to the sampling +frequency, as the quantisation noise is dominated by the sampling +frequency and its harmonics. In general, the cut-off frequency is +inversely proportional to the width of the central "lobe" of the window +function. + +

+When using r.resamp.filter with a specific radius, a specific +cut-off frequency regardless of the method is chosen. So while lanczos3 +uses 3 times as large a window as lanczos1, the cut-off frequency remains +the same. Effectively, the radius is "normalised". + +

+All of the kernels specified by the filter parameter are +multiplied together. Typical usage will use either a single kernel or an +infinite kernel along with a finite window. + +

NOTES

-

Resampling modules (r.resample, r.resamp.stats, r.resamp.interp, +Resampling modules (r.resample, r.resamp.stats, r.resamp.interp, r.resamp.rst, r.resamp.filter) resample the map to match the current region settings. - -

When using a kernel which can have negative values (sinc, Lanczos), +

+When using a kernel which can have negative values (sinc, Lanczos), the -n flag should be used. Otherwise, extreme values can arise due to the total weight being close (or even equal) to zero. - -

Kernels with infinite extent (Gauss, normal, sinc, Hann, Hamming, +

+Kernels with infinite extent (Gauss, normal, sinc, Hann, Hamming, Blackman) must be used in conjunction with a finite windowing function -(box, Bartlett, Hermite, Lanczos) +(box, Bartlett, Hermite, Lanczos). +

+The way that Lanczos filters are defined, the number of samples is +supposed to be proportional to the order ("a" parameter), so lanczos3 +should use 3 times as many samples (at the same sampling frequency, i.e. +cover 3 times as large a time interval) as lanczos1 in order to get a +similar frequency response (higher-order filters will fall off faster, but +the frequency at which the fall-off starts should be the same). See +Wikipedia: Lanczos-kernel.svg +for an illustration. If both graphs were drawn on the same axes, they +would have roughly the same shape, but the a=3 window would have a longer +tail. By scaling the axes to the same width, the a=3 window has a narrower +central lobe. -

For longitude-latitude locations, the interpolation algorithm is based on +

+For longitude-latitude locations, the interpolation algorithm is based on degree fractions, not on the absolute distances between cell centers. Any attempt to implement the latter would violate the integrity of the interpolation method. -

SEE ALSO

-g.region, -r.resample, -r.resamp.rst -r.resamp.stats + +g.region, +r.resample, +r.resamp.interp, +r.resamp.rst, +r.resamp.stats +

AUTHOR

From svn_grass at osgeo.org Sun Sep 6 08:12:27 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sun, 6 Sep 2015 08:12:27 -0700 Subject: [GRASS-SVN] r66128 - in grass/trunk/gui/wxpython: . datacatalog docs lmgr Message-ID: <20150906151227.EBE733900A3@trac.osgeo.org> Author: martinl Date: 2015-09-06 08:12:27 -0700 (Sun, 06 Sep 2015) New Revision: 66128 Added: grass/trunk/gui/wxpython/datacatalog/ grass/trunk/gui/wxpython/datacatalog/Makefile grass/trunk/gui/wxpython/datacatalog/__init__.py grass/trunk/gui/wxpython/datacatalog/catalog.py grass/trunk/gui/wxpython/datacatalog/frame.py grass/trunk/gui/wxpython/datacatalog/g.gui.datacatalog.html grass/trunk/gui/wxpython/datacatalog/g.gui.datacatalog.py grass/trunk/gui/wxpython/datacatalog/tree.py Removed: grass/trunk/gui/wxpython/lmgr/datacatalog.py Modified: grass/trunk/gui/wxpython/Makefile grass/trunk/gui/wxpython/docs/wxGUI.components.html grass/trunk/gui/wxpython/lmgr/frame.py Log: wxGUI: data catalog now also available as standalone tool (g.gui.datacatalog) note: the tool needs a lot of improvements, please free to contribute! Modified: grass/trunk/gui/wxpython/Makefile =================================================================== --- grass/trunk/gui/wxpython/Makefile 2015-09-06 13:06:27 UTC (rev 66127) +++ grass/trunk/gui/wxpython/Makefile 2015-09-06 15:12:27 UTC (rev 66128) @@ -1,6 +1,6 @@ MODULE_TOPDIR = ../.. -SUBDIRS = docs animation mapswipe gmodeler rlisetup psmap dbmgr vdigit iclass gcp timeline tplot +SUBDIRS = docs animation datacatalog mapswipe gmodeler rlisetup psmap dbmgr vdigit iclass gcp timeline tplot EXTRA_CLEAN_FILES = menustrings.py build_ext.pyc xml/menudata.xml xml/module_tree_menudata.xml */*.pyc include $(MODULE_TOPDIR)/include/Make/Dir.make @@ -9,7 +9,7 @@ DSTDIR = $(GUIDIR)/wxpython SRCFILES := $(wildcard icons/*.py scripts/*.py xml/*) \ - $(wildcard animation/* core/*.py dbmgr/* gcp/*.py gmodeler/* \ + $(wildcard animation/* core/*.py datacatalog/* dbmgr/* gcp/*.py gmodeler/* \ gui_core/*.py iclass/* lmgr/*.py location_wizard/*.py mapwin/*.py mapdisp/*.py \ mapswipe/* modules/*.py nviz/*.py psmap/* rdigit/* rlisetup/* timeline/* vdigit/* \ vnet/*.py web_services/*.py wxplot/*.py iscatt/*.py tplot/*) \ @@ -18,7 +18,7 @@ DSTFILES := $(patsubst %,$(DSTDIR)/%,$(SRCFILES)) \ $(patsubst %.py,$(DSTDIR)/%.pyc,$(filter %.py,$(SRCFILES))) -PYDSTDIRS := $(patsubst %,$(DSTDIR)/%,animation core dbmgr gcp gmodeler \ +PYDSTDIRS := $(patsubst %,$(DSTDIR)/%,animation core datacatalog dbmgr gcp gmodeler \ gui_core iclass lmgr location_wizard mapwin mapdisp modules nviz psmap \ mapswipe vdigit wxplot web_services rdigit rlisetup vnet timeline iscatt tplot) Added: grass/trunk/gui/wxpython/datacatalog/Makefile =================================================================== --- grass/trunk/gui/wxpython/datacatalog/Makefile (rev 0) +++ grass/trunk/gui/wxpython/datacatalog/Makefile 2015-09-06 15:12:27 UTC (rev 66128) @@ -0,0 +1,5 @@ +MODULE_TOPDIR = ../../.. + +include $(MODULE_TOPDIR)/include/Make/GuiScript.make + +default: guiscript Property changes on: grass/trunk/gui/wxpython/datacatalog/Makefile ___________________________________________________________________ Added: svn:mime-type + text/x-makefile Added: svn:eol-style + native Added: grass/trunk/gui/wxpython/datacatalog/__init__.py =================================================================== --- grass/trunk/gui/wxpython/datacatalog/__init__.py (rev 0) +++ grass/trunk/gui/wxpython/datacatalog/__init__.py 2015-09-06 15:12:27 UTC (rev 66128) @@ -0,0 +1,5 @@ +all = [ + 'catalog', + 'frame', + 'tree', +] Property changes on: grass/trunk/gui/wxpython/datacatalog/__init__.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Copied: grass/trunk/gui/wxpython/datacatalog/catalog.py (from rev 66127, grass/trunk/gui/wxpython/lmgr/datacatalog.py) =================================================================== --- grass/trunk/gui/wxpython/datacatalog/catalog.py (rev 0) +++ grass/trunk/gui/wxpython/datacatalog/catalog.py 2015-09-06 15:12:27 UTC (rev 66128) @@ -0,0 +1,69 @@ +""" + at package datacatalog::catalog + + at brief Data catalog + +Classes: + - datacatalog::DataCatalog + +(C) 2014 by Tereza Fiedlerova, and the GRASS Development Team + +This program is free software under the GNU General Public +License (>=v2). Read the file COPYING that comes with GRASS +for details. + + at author Tereza Fiedlerova +""" + +import wx + +from core.gthread import gThread +from core.debug import Debug +from datacatalog.tree import DataCatalogTree + +from grass.pydispatch.signal import Signal + +class DataCatalog(wx.Panel): + """Data catalog panel""" + def __init__(self, parent, giface=None, id = wx.ID_ANY, title=_("Data catalog"), + name='catalog', **kwargs): + """Panel constructor """ + self.showNotification = Signal('DataCatalog.showNotification') + self.parent = parent + self.baseTitle = title + wx.Panel.__init__(self, parent = parent, id = id, **kwargs) + self.SetName("DataCatalog") + + Debug.msg(1, "DataCatalog.__init__()") + + # tree with layers + self.tree = DataCatalogTree(self, giface=giface) + self.thread = gThread() + self._loaded = False + self.tree.showNotification.connect(self.showNotification) + + # some layout + self._layout() + + def _layout(self): + """Do layout""" + sizer = wx.BoxSizer(wx.VERTICAL) + + sizer.Add(item = self.tree.GetControl(), proportion = 1, + flag = wx.EXPAND) + + self.SetAutoLayout(True) + self.SetSizer(sizer) + + self.Layout() + + def LoadItems(self): + if self._loaded: + return + + self.thread.Run(callable=self.tree.InitTreeItems, + ondone=lambda event: self.LoadItemsDone()) + + def LoadItemsDone(self): + self._loaded = True + self.tree.ExpandCurrentLocation() Added: grass/trunk/gui/wxpython/datacatalog/frame.py =================================================================== --- grass/trunk/gui/wxpython/datacatalog/frame.py (rev 0) +++ grass/trunk/gui/wxpython/datacatalog/frame.py 2015-09-06 15:12:27 UTC (rev 66128) @@ -0,0 +1,72 @@ +""" + at package datacatalog::frame + + at brief Data catalog frame class + +Classes: + - datacatalog::DataCatalogTree + - datacatalog::DataCatalogFrame + +(C) 2014-2015 by Tereza Fiedlerova, and the GRASS Development Team + +This program is free software under the GNU General Public +License (>=v2). Read the file COPYING that comes with GRASS +for details. + + at author Tereza Fiedlerova +""" + +import wx + +from grass.script import core as gcore + +from core.utils import _ +from datacatalog.tree import DataCatalogTree + +class DataCatalogFrame(wx.Frame): + """Frame for testing purposes only.""" + def __init__(self, parent, giface=None): + wx.Frame.__init__(self, parent=parent, + title=_('GRASS GIS Data Catalog (experimetal)')) + + self._giface = giface + self.panel = wx.Panel(self) + + # tree + self.tree = DataCatalogTree(parent=self.panel, giface=self._giface) + self.tree.InitTreeItems() + + # buttons + self.btnClose = wx.Button(parent=self.panel, id=wx.ID_CLOSE) + self.btnClose.SetToolTipString(_("Close GRASS GIS Data Catalog")) + self.btnClose.SetDefault() + + # events + + self.btnClose.Bind(wx.EVT_BUTTON, self.OnCloseWindow) + self.Bind(wx.EVT_CLOSE, self.OnCloseWindow) + + self._layout() + + def _layout(self): + sizer = wx.BoxSizer(wx.VERTICAL) + sizer.Add(self.tree, proportion=1, flag=wx.EXPAND) + + btnSizer = wx.BoxSizer(wx.HORIZONTAL) + btnSizer.Add(self.btnClose) + + sizer.Add(item = btnSizer, proportion = 0, + flag = wx.ALL | wx.ALIGN_RIGHT, + border = 5) + + self.panel.SetSizerAndFit(sizer) + sizer.SetSizeHints(self.panel) + + self.SetMinSize((400, 500)) + + def OnCloseWindow(self, event): + """Cancel button pressed""" + if not isinstance(event, wx.CloseEvent): + self.Destroy() + + event.Skip() Property changes on: grass/trunk/gui/wxpython/datacatalog/frame.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Added: grass/trunk/gui/wxpython/datacatalog/g.gui.datacatalog.html =================================================================== --- grass/trunk/gui/wxpython/datacatalog/g.gui.datacatalog.html (rev 0) +++ grass/trunk/gui/wxpython/datacatalog/g.gui.datacatalog.html 2015-09-06 15:12:27 UTC (rev 66128) @@ -0,0 +1,58 @@ + + +

DESCRIPTION

+ +The Data Catalog is a wxGUI component +for browsing, modifying and managing GRASS maps. + +

+Data Catalog allows you to: + +

    +
  • browse GRASS locations and mapsets in the current GIS directory
  • +
  • browse GRASS 2D/3D raster and vector maps
  • +
  • rename GRASS maps in the current mapset
  • +
  • copy GRASS maps from different mapsets into current mapsets (within the same location)
  • +
  • delete GRASS maps located in the current mapset
  • +
+ +

NOTES

+ +

WARNING

+ +Data Catalog is experimental and requires significant +developement!, see +the trac +wiki page. + +

TODO

+ +
    +
  • Extend this manual, add screenshot
  • +
  • Improve this tool, +see trac +wiki page
  • +
+ +

SEE ALSO

+ + + wxGUI
+ wxGUI components +
+ +

+ + g.copy, + g.rename, + g.remove, + g.list + + +

AUTHOR

+ +Tereza Fiedlerova, OSGeoREL, Czech Technical University in Prague, +Czech Republic + +

+$Date$ Property changes on: grass/trunk/gui/wxpython/datacatalog/g.gui.datacatalog.html ___________________________________________________________________ Added: svn:mime-type + text/html Added: svn:keywords + Author Date Id Added: svn:eol-style + native Added: grass/trunk/gui/wxpython/datacatalog/g.gui.datacatalog.py =================================================================== --- grass/trunk/gui/wxpython/datacatalog/g.gui.datacatalog.py (rev 0) +++ grass/trunk/gui/wxpython/datacatalog/g.gui.datacatalog.py 2015-09-06 15:12:27 UTC (rev 66128) @@ -0,0 +1,48 @@ +#!/usr/bin/env python +############################################################################ +# +# MODULE: Data catalog +# AUTHOR(S): Tereza Fiedlerova +# PURPOSE: GRASS data catalog for browsing, modifying and managing GRASS maps +# COPYRIGHT: (C) 2014-2015 by Tereza Fiedlerova, and the GRASS Development Team +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +############################################################################ + +#%module +#% description: Tool for browsing, modifying and managing GRASS maps. +#% keyword: general +#% keyword: GUI +#% keyword: map management +#%end + +import grass.script as gscript + +def main(): + options, flags = gscript.parser() + + # import wx only after running parser + # to avoid issues when only interface is needed + import wx + + from core.giface import StandaloneGrassInterface + from datacatalog.frame import DataCatalogFrame + + app = wx.App() + + frame = DataCatalogFrame(parent=None, giface=StandaloneGrassInterface()) + frame.CentreOnScreen() + frame.Show() + app.MainLoop() + +if __name__ == '__main__': + main() Property changes on: grass/trunk/gui/wxpython/datacatalog/g.gui.datacatalog.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Added: grass/trunk/gui/wxpython/datacatalog/tree.py =================================================================== --- grass/trunk/gui/wxpython/datacatalog/tree.py (rev 0) +++ grass/trunk/gui/wxpython/datacatalog/tree.py 2015-09-06 15:12:27 UTC (rev 66128) @@ -0,0 +1,511 @@ +""" + at package datacatalog::tree + + at brief Data catalog tree classes + +Classes: + - datacatalog::LocationMapTree + - datacatalog::DataCatalogTree + + at todo: + - use gui_core/treeview.py + +(C) 2014-2015 by Tereza Fiedlerova, and the GRASS Development Team + +This program is free software under the GNU General Public +License (>=v2). Read the file COPYING that comes with GRASS +for details. + + at author Tereza Fiedlerova +""" + +import wx + +from core.gcmd import RunCommand, GError, GMessage +from core.utils import GetListOfLocations, ListOfMapsets +from core.debug import Debug +from gui_core.dialogs import TextEntryDialog +from core.giface import StandaloneGrassInterface + +from grass.pydispatch.signal import Signal + +import grass.script as grass + +class LocationMapTree(wx.TreeCtrl): + def __init__(self, parent, style=wx.TR_HIDE_ROOT | wx.TR_EDIT_LABELS | + wx.TR_HAS_BUTTONS | wx.TR_FULL_ROW_HIGHLIGHT | wx.TR_SINGLE): + """Location Map Tree constructor.""" + super(LocationMapTree, self).__init__(parent, id=wx.ID_ANY, style=style) + self.showNotification = Signal('Tree.showNotification') + self.parent = parent + self.root = self.AddRoot('Catalog') # will not be displayed when we use TR_HIDE_ROOT flag + + self._initVariables() + self.MakeBackup() + + wx.EVT_TREE_ITEM_RIGHT_CLICK(self, wx.ID_ANY, self.OnRightClick) + + self.Bind(wx.EVT_LEFT_DCLICK, self.OnDoubleClick) + self.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown) + self.Bind(wx.EVT_KEY_UP, self.OnKeyUp) + + def _initTreeItems(self, locations = [], mapsets = []): + """Add locations, mapsets and layers to the tree.""" + if not locations: + locations = GetListOfLocations(self.gisdbase) + if not mapsets: + mapsets = ['*'] + + first = True + for loc in locations: + location = loc + if first: + self.ChangeEnvironment(location, 'PERMANENT') + first = False + else: + self.ChangeEnvironment(location) + + varloc = self.AppendItem(self.root, loc) + # add all mapsets + mapsets = ListOfMapsets() + if mapsets: + for mapset in mapsets: + self.AppendItem(varloc, mapset) + else: + self.AppendItem(varloc, _("No mapsets readable")) + continue + + # get list of all maps in location + maplist = RunCommand('g.list', flags='mt', type='raster,raster_3d,vector', mapset=','.join(mapsets), + quiet=True, read=True) + maplist = maplist.splitlines() + for ml in maplist: + # parse + parts1 = ml.split('/') + parts2 = parts1[1].split('@') + mapset = parts2[1] + mlayer = parts2[0] + ltype = parts1[0] + + # add mapset + if self.itemExists(mapset, varloc) == False: + varmapset = self.AppendItem(varloc, mapset) + else: + varmapset = self.getItemByName(mapset, varloc) + + # add type node if not exists + if self.itemExists(ltype, varmapset) == False: + vartype = self.AppendItem(varmapset, ltype) + + self.AppendItem(vartype, mlayer) + + self.RestoreBackup() + Debug.msg(1, "Tree filled") + + def InitTreeItems(self): + """Create popup menu for layers""" + raise NotImplementedError() + + def _popupMenuLayer(self): + """Create popup menu for layers""" + raise NotImplementedError() + + def _popupMenuMapset(self): + """Create popup menu for mapsets""" + raise NotImplementedError() + + def _initVariables(self): + """Init variables.""" + self.selected_layer = None + self.selected_type = None + self.selected_mapset = None + self.selected_location = None + + self.gisdbase = grass.gisenv()['GISDBASE'] + self.ctrldown = False + + def GetControl(self): + """Returns control itself.""" + return self + + def DefineItems(self, item0): + """Set selected items.""" + self.selected_layer = None + self.selected_type = None + self.selected_mapset = None + self.selected_location = None + items = [] + item = item0 + while (self.GetItemParent(item)): + items.insert(0,item) + item = self.GetItemParent(item) + + self.selected_location = items[0] + length = len(items) + if (length > 1): + self.selected_mapset = items[1] + if (length > 2): + self.selected_type = items[2] + if (length > 3): + self.selected_layer = items[3] + + def getItemByName(self, match, root): + """Return match item from the root.""" + item, cookie = self.GetFirstChild(root) + while item.IsOk(): + if self.GetItemText(item) == match: + return item + item, cookie = self.GetNextChild(root, cookie) + return None + + def itemExists(self, match, root): + """Return true if match item exists in the root item.""" + item, cookie = self.GetFirstChild(root) + while item.IsOk(): + if self.GetItemText(item) == match: + return True + item, cookie = self.GetNextChild(root, cookie) + return False + + def UpdateTree(self): + """Update whole tree.""" + self.DeleteAllItems() + self.root = self.AddRoot('Tree') + self.AddTreeItems() + label = "Tree updated." + self.showNotification.emit(message=label) + + def OnSelChanged(self, event): + self.selected_layer = None + + def OnRightClick(self, event): + """Display popup menu.""" + self.DefineItems(event.GetItem()) + if(self.selected_layer): + self._popupMenuLayer() + elif(self.selected_mapset and self.selected_type==None): + self._popupMenuMapset() + + def OnDoubleClick(self, event): + """Double click""" + Debug.msg(1, "Double CLICK") + + def OnKeyDown(self, event): + """Set key event and check if control key is down""" + keycode = event.GetKeyCode() + if keycode == wx.WXK_CONTROL: + self.ctrldown = True + Debug.msg(1,"CONTROL ON") + + def OnKeyUp(self, event): + """Check if control key is up""" + keycode = event.GetKeyCode() + if keycode == wx.WXK_CONTROL: + self.ctrldown = False + Debug.msg(1,"CONTROL OFF") + + def MakeBackup(self): + """Make backup for case of change""" + gisenv = grass.gisenv() + self.glocation = gisenv['LOCATION_NAME'] + self.gmapset = gisenv['MAPSET'] + + def RestoreBackup(self): + """Restore backup""" + stringl = 'LOCATION_NAME='+self.glocation + RunCommand('g.gisenv', set=stringl) + stringm = 'MAPSET='+self.gmapset + RunCommand('g.gisenv', set=stringm) + + def ChangeEnvironment(self, location, mapset=None): + """Change gisenv variables -> location, mapset""" + stringl = 'LOCATION_NAME='+location + RunCommand('g.gisenv', set=stringl) + if mapset: + stringm = 'MAPSET='+mapset + RunCommand('g.gisenv', set=stringm) + + def ExpandCurrentLocation(self): + """Expand current location""" + location = grass.gisenv()['LOCATION_NAME'] + item = self.getItemByName(location, self.root) + if item is not None: + self.SelectItem(item) + self.ExpandAllChildren(item) + self.EnsureVisible(item) + else: + Debug.msg(1, "Location <%s> not found" % location) + +class DataCatalogTree(LocationMapTree): + def __init__(self, parent, giface=None): + """Data Catalog Tree constructor.""" + super(DataCatalogTree, self).__init__(parent) + self._giface = giface + + self._initVariablesCatalog() + + wx.EVT_TREE_BEGIN_DRAG(self, wx.ID_ANY, self.OnBeginDrag) + wx.EVT_TREE_END_DRAG(self, wx.ID_ANY, self.OnEndDrag) + + wx.EVT_TREE_END_LABEL_EDIT(self, wx.ID_ANY, self.OnEditLabel) + wx.EVT_TREE_BEGIN_LABEL_EDIT(self, wx.ID_ANY, self.OnStartEditLabel) + + def _initVariablesCatalog(self): + """Init variables.""" + self.copy_layer = None + self.copy_type = None + self.copy_mapset = None + self.copy_location = None + + def InitTreeItems(self): + """Add locations, mapsets and layers to the tree.""" + self._initTreeItems() + + def OnCopy(self, event): + """Copy layer or mapset (just save it temporarily, copying is done by paste)""" + self.copy_layer = self.selected_layer + self.copy_type = self.selected_type + self.copy_mapset = self.selected_mapset + self.copy_location = self.selected_location + label = "Layer "+self.GetItemText(self.copy_layer)+" copied to clipboard. You can paste it to selected mapset." + self.showNotification.emit(message=label) + + def OnRename(self, event): + """Rename levent with dialog""" + if (self.selected_layer): + self.old_name = self.GetItemText(self.selected_layer) + self.new_name = self._getUserEntry(_('New name'), _('Rename map'), self.old_name) + self.rename() + + def OnStartEditLabel(self, event): + """Start label editing""" + item = event.GetItem() + self.DefineItems(item) + Debug.msg(1, "Start label edit "+self.GetItemText(item)) + label = _("Editing") + " " + self.GetItemText(item) + self.showNotification.emit(message=label) + if (self.selected_layer == None): + event.Veto() + + def OnEditLabel(self, event): + """End label editing""" + if (self.selected_layer): + item = event.GetItem() + self.old_name = self.GetItemText(item) + Debug.msg(1, "End label edit "+self.old_name) + wx.CallAfter(self.afterEdit, self, item) + + def afterEdit(pro, self, item): + self.new_name = self.GetItemText(item) + self.rename() + + def rename(self): + """Rename layer""" + if self.selected_layer and self.new_name: + string = self.old_name+','+self.new_name + self.ChangeEnvironment(self.GetItemText(self.selected_location), self.GetItemText(self.selected_mapset)) + renamed = 0 + label = _("Renaming") + " " + string + " ..." + self.showNotification.emit(message=label) + if (self.GetItemText(self.selected_type)=='vector'): + renamed = RunCommand('g.rename', vector=string) + elif (self.GetItemText(self.selected_type)=='raster'): + renamed = RunCommand('g.rename', raster=string) + else: + renamed = RunCommand('g.rename', raster3d=string) + if (renamed==0): + self.SetItemText(self.selected_layer,self.new_name) + label = "g.rename "+self.GetItemText(self.selected_type)+"="+string+" -- completed" + self.showNotification.emit(message=label) + Debug.msg(1,"LAYER RENAMED TO: "+self.new_name) + self.RestoreBackup() + + def OnPaste(self, event): + """Paste layer or mapset""" + # copying between mapsets of one location + if (self.copy_layer == None): + return + if (self.selected_location == self.copy_location and self.selected_mapset): + if (self.selected_type != None): + if (self.GetItemText(self.copy_type) != self.GetItemText(self.selected_type)): # copy raster to vector or vice versa + GError(_("Failed to copy layer: invalid type."), parent = self) + return + self.new_name = self._getUserEntry(_('New name'), _('Copy map'), + self.GetItemText(self.copy_layer) + '_copy') + if not self.new_name: + return + if (self.GetItemText(self.copy_layer) == self.new_name): + GMessage(_("Layer was not copied: new layer has the same name"), parent=self) + return + string = self.GetItemText(self.copy_layer)+'@'+self.GetItemText(self.copy_mapset)+','+self.new_name + self.ChangeEnvironment(self.GetItemText(self.selected_location), self.GetItemText(self.selected_mapset)) + pasted = 0 + type = None + label = _("Copying") + " " + string + " ..." + self.showNotification.emit(message=label) + if (self.GetItemText(self.copy_type)=='vector'): + pasted = RunCommand('g.copy', vector=string) + node = 'vector' + elif (self.GetItemText(self.copy_type)=='raster'): + pasted = RunCommand('g.copy', raster=string) + node = 'raster' + else: + pasted = RunCommand('g.copy', raster_3d=string) + node = 'raster_3d' + if pasted == 0: + if self.selected_type == None: + self.selected_type = self.getItemByName(node, self.selected_mapset) + if self.selected_type == None: + # add type node if not exists + self.selected_type = self.AppendItem(self.selected_mapset, node) + self.AppendItem(self.selected_type,self.new_name) + self.SortChildren(self.selected_type) + Debug.msg(1,"COPIED TO: "+self.new_name) + label = "g.copy "+self.GetItemText(self.copy_type)+"="+string+" -- completed" # generate this message (command) automatically? + self.showNotification.emit(message=label) + else: + GError(_("Failed to copy layer: action is allowed only within the same location."), + parent=self) + + # expand selected mapset + self.ExpandAllChildren(self.selected_mapset) + self.EnsureVisible(self.selected_mapset) + + self.RestoreBackup() + + + def OnDelete(self, event): + """Delete layer or mapset""" + if (self.selected_layer): + string = self.GetItemText(self.selected_layer) + self.ChangeEnvironment(self.GetItemText(self.selected_location), self.GetItemText(self.selected_mapset)) + removed = 0 + # TODO: rewrite this that it will tell map type in the dialog + if (self._confirmDialog(question=_('Do you really want to delete map <{m}>?').format(m=string), + title=_('Delete map')) == wx.ID_YES): + label = _("Deleting") + " " + string + " ..." + self.showNotification.emit(message=label) + if (self.GetItemText(self.selected_type)=='vector'): + removed = RunCommand('g.remove', flags='f', type='vector', + name=string) + elif (self.GetItemText(self.selected_type)=='raster'): + removed = RunCommand('g.remove', flags='f', type='raster', + name=string) + else: + removed = RunCommand('g.remove', flags='f', type='raster_3d', + name=string) + if (removed==0): + self.Delete(self.selected_layer) + Debug.msg(1,"LAYER "+string+" DELETED") + label = "g.remove -f type="+self.GetItemText(self.selected_type)+" name="+string+" -- completed" # generate this message (command) automatically? + self.showNotification.emit(message=label) + self.RestoreBackup() + + def OnDisplayLayer(self, event): + """Display layer in current graphics view""" + layerName = [] + if (self.GetItemText(self.selected_location) == self.glocation and self.selected_mapset): + string = self.GetItemText(self.selected_layer)+'@'+self.GetItemText(self.selected_mapset) + layerName.append(string) + label = _("Displaying") + " " + string + " ..." + self.showNotification.emit(message=label) + label = "d."+self.GetItemText(self.selected_type)+" --q map="+string+" -- completed. Go to Map layers for further operations." + if (self.GetItemText(self.selected_type)=='vector'): + self._giface.lmgr.AddMaps(layerName, 'vector', True) + elif (self.GetItemText(self.selected_type)=='raster'): + self._giface.lmgr.AddMaps(layerName, 'raster', True) + else: + self._giface.lmgr.AddMaps(layerName, 'raster_3d', True) + label = "d.rast --q map="+string+" -- completed. Go to 'Map layers' for further operations." # generate this message (command) automatically? + self.showNotification.emit(message=label) + Debug.msg(1,"LAYER "+self.GetItemText(self.selected_layer)+" DISPLAYED") + else: + GError(_("Failed to display layer: not in current mapset or invalid layer"), + parent = self) + + def OnBeginDrag(self, event): + """Just copy necessary data""" + if (self.ctrldown): + #cursor = wx.StockCursor(wx.CURSOR_HAND) + #self.SetCursor(cursor) + event.Allow() + self.DefineItems(event.GetItem()) + self.OnCopy(event) + Debug.msg(1,"DRAG") + else: + event.Veto() + Debug.msg(1,"DRAGGING without ctrl key does nothing") + + def OnEndDrag(self, event): + """Copy layer into target""" + #cursor = wx.StockCursor(wx.CURSOR_ARROW) + #self.SetCursor(cursor) + if (event.GetItem()): + self.DefineItems(event.GetItem()) + if (self.selected_location == self.copy_location and self.selected_mapset): + event.Allow() + self.OnPaste(event) + self.ctrldown = False + #cursor = wx.StockCursor(wx.CURSOR_DEFAULT) + #self.SetCursor(cursor) # TODO: change cursor while dragging and then back, this is not working + Debug.msg(1,"DROP DONE") + else: + event.Veto() + + def _getUserEntry(self, message, title, value): + """Dialog for simple text entry""" + dlg = TextEntryDialog(self, message, title) + dlg.SetValue(value) + if dlg.ShowModal() == wx.ID_OK: + name = dlg.GetValue() + else: + name = None + dlg.Destroy() + + return name + + def _confirmDialog(self, question, title): + """Confirm dialog""" + dlg = wx.MessageDialog(self, question, title, wx.YES_NO) + res = dlg.ShowModal() + dlg.Destroy() + return res + + def _popupMenuLayer(self): + """Create popup menu for layers""" + menu = wx.Menu() + + item = wx.MenuItem(menu, wx.NewId(), _("&Copy")) + menu.AppendItem(item) + self.Bind(wx.EVT_MENU, self.OnCopy, item) + + item = wx.MenuItem(menu, wx.NewId(), _("&Paste")) + menu.AppendItem(item) + self.Bind(wx.EVT_MENU, self.OnPaste, item) + + item = wx.MenuItem(menu, wx.NewId(), _("&Delete")) + menu.AppendItem(item) + self.Bind(wx.EVT_MENU, self.OnDelete, item) + + item = wx.MenuItem(menu, wx.NewId(), _("&Rename")) + menu.AppendItem(item) + self.Bind(wx.EVT_MENU, self.OnRename, item) + + if not isinstance(self._giface, StandaloneGrassInterface): + item = wx.MenuItem(menu, wx.NewId(), _("&Display layer")) + menu.AppendItem(item) + self.Bind(wx.EVT_MENU, self.OnDisplayLayer, item) + + self.PopupMenu(menu) + menu.Destroy() + + def _popupMenuMapset(self): + """Create popup menu for mapsets""" + menu = wx.Menu() + + item = wx.MenuItem(menu, wx.NewId(), _("&Paste")) + menu.AppendItem(item) + self.Bind(wx.EVT_MENU, self.OnPaste, item) + + self.PopupMenu(menu) + menu.Destroy() Property changes on: grass/trunk/gui/wxpython/datacatalog/tree.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Modified: grass/trunk/gui/wxpython/docs/wxGUI.components.html =================================================================== --- grass/trunk/gui/wxpython/docs/wxGUI.components.html 2015-09-06 13:06:27 UTC (rev 66127) +++ grass/trunk/gui/wxpython/docs/wxGUI.components.html 2015-09-06 15:12:27 UTC (rev 66128) @@ -11,6 +11,8 @@ available also as a command line tool g.gui.dbmgr

  • Cartographic Composer, available also as a command line tool g.gui.psmap
  • +
  • Data Catalog, + available also as a command line tool g.gui.datacatalog
  • Graphical Modeler, available also as a command line tool g.gui.gmodeler
  • Ground Control Points Manager, Deleted: grass/trunk/gui/wxpython/lmgr/datacatalog.py =================================================================== --- grass/trunk/gui/wxpython/lmgr/datacatalog.py 2015-09-06 13:06:27 UTC (rev 66127) +++ grass/trunk/gui/wxpython/lmgr/datacatalog.py 2015-09-06 15:12:27 UTC (rev 66128) @@ -1,609 +0,0 @@ -""" - at package lmgr::datacatalog - - at brief Data catalog - -Classes: - - datacatalog::DataCatalog - - datacatalog::LocationMapTree - - datacatalog::DataCatalogTree - - at todo: - - use gui_core/treeview.py - -(C) 2014 by Tereza Fiedlerova, and the GRASS Development Team - -This program is free software under the GNU General Public -License (>=v2). Read the file COPYING that comes with GRASS -for details. - - at author Tereza Fiedlerova -""" - -import os -import sys - -import wx -import wx.gizmos as gizmos - -from core.gcmd import RunCommand, GError, GMessage -from core.utils import GetListOfLocations, ListOfMapsets -from core.gthread import gThread -from core.debug import Debug -from gui_core.dialogs import TextEntryDialog - -from grass.pydispatch.signal import Signal - -import grass.script as grass - -class DataCatalog(wx.Panel): - """Data catalog panel""" - def __init__(self, parent, giface=None, id = wx.ID_ANY, title=_("Data catalog"), - name='catalog', **kwargs): - """Panel constructor """ - self.showNotification = Signal('DataCatalog.showNotification') - self.parent = parent - self.baseTitle = title - wx.Panel.__init__(self, parent = parent, id = id, **kwargs) - self.SetName("DataCatalog") - - Debug.msg(1, "DataCatalog.__init__()") - - # tree with layers - self.tree = DataCatalogTree(self) - self.thread = gThread() - self._loaded = False - self.tree.showNotification.connect(self.showNotification) - - # some layout - self._layout() - - def _layout(self): - """Do layout""" - sizer = wx.BoxSizer(wx.VERTICAL) - - sizer.Add(item = self.tree.GetControl(), proportion = 1, - flag = wx.EXPAND) - - self.SetAutoLayout(True) - self.SetSizer(sizer) - - self.Layout() - - def LoadItems(self): - if self._loaded: - return - - self.thread.Run(callable=self.tree.InitTreeItems, - ondone=lambda event: self.LoadItemsDone()) - - def LoadItemsDone(self): - self._loaded = True - self.tree.ExpandCurrentLocation() - -class LocationMapTree(wx.TreeCtrl): - def __init__(self, parent, style=wx.TR_HIDE_ROOT | wx.TR_EDIT_LABELS | - wx.TR_HAS_BUTTONS | wx.TR_FULL_ROW_HIGHLIGHT | wx.TR_COLUMN_LINES | wx.TR_SINGLE): - """Location Map Tree constructor.""" - super(LocationMapTree, self).__init__(parent, id=wx.ID_ANY, style=style) - self.showNotification = Signal('Tree.showNotification') - self.parent = parent - self.root = self.AddRoot('Catalog') # will not be displayed when we use TR_HIDE_ROOT flag - - self._initVariables() - self.MakeBackup() - - wx.EVT_TREE_ITEM_RIGHT_CLICK(self, wx.ID_ANY, self.OnRightClick) - - self.Bind(wx.EVT_LEFT_DCLICK, self.OnDoubleClick) - self.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown) - self.Bind(wx.EVT_KEY_UP, self.OnKeyUp) - - def _initTreeItems(self, locations = [], mapsets = []): - """Add locations, mapsets and layers to the tree.""" - if not locations: - locations = GetListOfLocations(self.gisdbase) - if not mapsets: - mapsets = ['*'] - - first = True - for loc in locations: - location = loc - if first: - self.ChangeEnvironment(location, 'PERMANENT') - first = False - else: - self.ChangeEnvironment(location) - - varloc = self.AppendItem(self.root, loc) - # add all mapsets - mapsets = ListOfMapsets() - if mapsets: - for mapset in mapsets: - self.AppendItem(varloc, mapset) - else: - self.AppendItem(varloc, _("No mapsets readable")) - continue - - # get list of all maps in location - maplist = RunCommand('g.list', flags='mt', type='raster,raster_3d,vector', mapset=','.join(mapsets), - quiet=True, read=True) - maplist = maplist.splitlines() - for ml in maplist: - # parse - parts1 = ml.split('/') - parts2 = parts1[1].split('@') - mapset = parts2[1] - mlayer = parts2[0] - ltype = parts1[0] - - # add mapset - if self.itemExists(mapset, varloc) == False: - varmapset = self.AppendItem(varloc, mapset) - else: - varmapset = self.getItemByName(mapset, varloc) - - # add type node if not exists - if self.itemExists(ltype, varmapset) == False: - vartype = self.AppendItem(varmapset, ltype) - - self.AppendItem(vartype, mlayer) - - self.RestoreBackup() - Debug.msg(1, "Tree filled") - - def InitTreeItems(self): - """Create popup menu for layers""" - raise NotImplementedError() - - def _popupMenuLayer(self): - """Create popup menu for layers""" - raise NotImplementedError() - - def _popupMenuMapset(self): - """Create popup menu for mapsets""" - raise NotImplementedError() - - def _initVariables(self): - """Init variables.""" - self.selected_layer = None - self.selected_type = None - self.selected_mapset = None - self.selected_location = None - - self.gisdbase = grass.gisenv()['GISDBASE'] - self.ctrldown = False - - def GetControl(self): - """Returns control itself.""" - return self - - def DefineItems(self, item0): - """Set selected items.""" - self.selected_layer = None - self.selected_type = None - self.selected_mapset = None - self.selected_location = None - items = [] - item = item0 - while (self.GetItemParent(item)): - items.insert(0,item) - item = self.GetItemParent(item) - - self.selected_location = items[0] - length = len(items) - if (length > 1): - self.selected_mapset = items[1] - if (length > 2): - self.selected_type = items[2] - if (length > 3): - self.selected_layer = items[3] - - def getItemByName(self, match, root): - """Return match item from the root.""" - item, cookie = self.GetFirstChild(root) - while item.IsOk(): - if self.GetItemText(item) == match: - return item - item, cookie = self.GetNextChild(root, cookie) - return None - - def itemExists(self, match, root): - """Return true if match item exists in the root item.""" - item, cookie = self.GetFirstChild(root) - while item.IsOk(): - if self.GetItemText(item) == match: - return True - item, cookie = self.GetNextChild(root, cookie) - return False - - def UpdateTree(self): - """Update whole tree.""" - self.DeleteAllItems() - self.root = self.AddRoot('Tree') - self.AddTreeItems() - label = "Tree updated." - self.showNotification.emit(message=label) - - def OnSelChanged(self, event): - self.selected_layer = None - - def OnRightClick(self, event): - """Display popup menu.""" - self.DefineItems(event.GetItem()) - if(self.selected_layer): - self._popupMenuLayer() - elif(self.selected_mapset and self.selected_type==None): - self._popupMenuMapset() - - def OnDoubleClick(self, event): - """Double click""" - Debug.msg(1, "Double CLICK") - - def OnKeyDown(self, event): - """Set key event and check if control key is down""" - keycode = event.GetKeyCode() - if keycode == wx.WXK_CONTROL: - self.ctrldown = True - Debug.msg(1,"CONTROL ON") - - def OnKeyUp(self, event): - """Check if control key is up""" - keycode = event.GetKeyCode() - if keycode == wx.WXK_CONTROL: - self.ctrldown = False - Debug.msg(1,"CONTROL OFF") - - def MakeBackup(self): - """Make backup for case of change""" - gisenv = grass.gisenv() - self.glocation = gisenv['LOCATION_NAME'] - self.gmapset = gisenv['MAPSET'] - - def RestoreBackup(self): - """Restore backup""" - stringl = 'LOCATION_NAME='+self.glocation - RunCommand('g.gisenv', set=stringl) - stringm = 'MAPSET='+self.gmapset - RunCommand('g.gisenv', set=stringm) - - def ChangeEnvironment(self, location, mapset=None): - """Change gisenv variables -> location, mapset""" - stringl = 'LOCATION_NAME='+location - RunCommand('g.gisenv', set=stringl) - if mapset: - stringm = 'MAPSET='+mapset - RunCommand('g.gisenv', set=stringm) - - def ExpandCurrentLocation(self): - """Expand current location""" - location = grass.gisenv()['LOCATION_NAME'] - item = self.getItemByName(location, self.root) - if item is not None: - self.SelectItem(item) - self.ExpandAllChildren(item) - self.EnsureVisible(item) - else: - Debug.msg(1, "Location <%s> not found" % location) - -class DataCatalogTree(LocationMapTree): - def __init__(self, parent): - """Data Catalog Tree constructor.""" - super(DataCatalogTree, self).__init__(parent) - - self._initVariablesCatalog() - - wx.EVT_TREE_BEGIN_DRAG(self, wx.ID_ANY, self.OnBeginDrag) - wx.EVT_TREE_END_DRAG(self, wx.ID_ANY, self.OnEndDrag) - - wx.EVT_TREE_END_LABEL_EDIT(self, wx.ID_ANY, self.OnEditLabel) - wx.EVT_TREE_BEGIN_LABEL_EDIT(self, wx.ID_ANY, self.OnStartEditLabel) - - def _initVariablesCatalog(self): - """Init variables.""" - self.copy_layer = None - self.copy_type = None - self.copy_mapset = None - self.copy_location = None - - def InitTreeItems(self): - """Add locations, mapsets and layers to the tree.""" - self._initTreeItems() - - def OnCopy(self, event): - """Copy layer or mapset (just save it temporarily, copying is done by paste)""" - self.copy_layer = self.selected_layer - self.copy_type = self.selected_type - self.copy_mapset = self.selected_mapset - self.copy_location = self.selected_location - label = "Layer "+self.GetItemText(self.copy_layer)+" copied to clipboard. You can paste it to selected mapset." - self.showNotification.emit(message=label) - - def OnRename(self, event): - """Rename levent with dialog""" - if (self.selected_layer): - self.old_name = self.GetItemText(self.selected_layer) - self.new_name = self._getUserEntry(_('New name'), _('Rename map'), self.old_name) - self.rename() - - def OnStartEditLabel(self, event): - """Start label editing""" - item = event.GetItem() - self.DefineItems(item) - Debug.msg(1, "Start label edit "+self.GetItemText(item)) - label = _("Editing") + " " + self.GetItemText(item) - self.showNotification.emit(message=label) - if (self.selected_layer == None): - event.Veto() - - def OnEditLabel(self, event): - """End label editing""" - if (self.selected_layer): - item = event.GetItem() - self.old_name = self.GetItemText(item) - Debug.msg(1, "End label edit "+self.old_name) - wx.CallAfter(self.afterEdit, self, item) - - def afterEdit(pro, self, item): - self.new_name = self.GetItemText(item) - self.rename() - - def rename(self): - """Rename layer""" - if self.selected_layer and self.new_name: - string = self.old_name+','+self.new_name - self.ChangeEnvironment(self.GetItemText(self.selected_location), self.GetItemText(self.selected_mapset)) - renamed = 0 - label = _("Renaming") + " " + string + " ..." - self.showNotification.emit(message=label) - if (self.GetItemText(self.selected_type)=='vector'): - renamed = RunCommand('g.rename', vector=string) - elif (self.GetItemText(self.selected_type)=='raster'): - renamed = RunCommand('g.rename', raster=string) - else: - renamed = RunCommand('g.rename', raster3d=string) - if (renamed==0): - self.SetItemText(self.selected_layer,self.new_name) - label = "g.rename "+self.GetItemText(self.selected_type)+"="+string+" -- completed" - self.showNotification.emit(message=label) - Debug.msg(1,"LAYER RENAMED TO: "+self.new_name) - self.RestoreBackup() - - def OnPaste(self, event): - """Paste layer or mapset""" - # copying between mapsets of one location - if (self.copy_layer == None): - return - if (self.selected_location == self.copy_location and self.selected_mapset): - if (self.selected_type != None): - if (self.GetItemText(self.copy_type) != self.GetItemText(self.selected_type)): # copy raster to vector or vice versa - GError(_("Failed to copy layer: invalid type."), parent = self) - return - self.new_name = self._getUserEntry(_('New name'), _('Copy map'), - self.GetItemText(self.copy_layer) + '_copy') - if not self.new_name: - return - if (self.GetItemText(self.copy_layer) == self.new_name): - GMessage(_("Layer was not copied: new layer has the same name"), parent=self) - return - string = self.GetItemText(self.copy_layer)+'@'+self.GetItemText(self.copy_mapset)+','+self.new_name - self.ChangeEnvironment(self.GetItemText(self.selected_location), self.GetItemText(self.selected_mapset)) - pasted = 0 - type = None - label = _("Copying") + " " + string + " ..." - self.showNotification.emit(message=label) - if (self.GetItemText(self.copy_type)=='vector'): - pasted = RunCommand('g.copy', vector=string) - node = 'vector' - elif (self.GetItemText(self.copy_type)=='raster'): - pasted = RunCommand('g.copy', raster=string) - node = 'raster' - else: - pasted = RunCommand('g.copy', raster_3d=string) - node = 'raster_3d' - if pasted == 0: - if self.selected_type == None: - self.selected_type = self.getItemByName(node, self.selected_mapset) - if self.selected_type == None: - # add type node if not exists - self.selected_type = self.AppendItem(self.selected_mapset, node) - self.AppendItem(self.selected_type,self.new_name) - self.SortChildren(self.selected_type) - Debug.msg(1,"COPIED TO: "+self.new_name) - label = "g.copy "+self.GetItemText(self.copy_type)+"="+string+" -- completed" # generate this message (command) automatically? - self.showNotification.emit(message=label) - else: - GError(_("Failed to copy layer: action is allowed only within the same location."), - parent=self) - - # expand selected mapset - self.ExpandAllChildren(self.selected_mapset) - self.EnsureVisible(self.selected_mapset) - - self.RestoreBackup() - - - def OnDelete(self, event): - """Delete layer or mapset""" - if (self.selected_layer): - string = self.GetItemText(self.selected_layer) - self.ChangeEnvironment(self.GetItemText(self.selected_location), self.GetItemText(self.selected_mapset)) - removed = 0 - # TODO: rewrite this that it will tell map type in the dialog - if (self._confirmDialog(question=_('Do you really want to delete map <{m}>?').format(m=string), - title=_('Delete map')) == wx.ID_YES): - label = _("Deleting") + " " + string + " ..." - self.showNotification.emit(message=label) - if (self.GetItemText(self.selected_type)=='vector'): - removed = RunCommand('g.remove', flags='f', type='vector', - name=string) - elif (self.GetItemText(self.selected_type)=='raster'): - removed = RunCommand('g.remove', flags='f', type='raster', - name=string) - else: - removed = RunCommand('g.remove', flags='f', type='raster_3d', - name=string) - if (removed==0): - self.Delete(self.selected_layer) - Debug.msg(1,"LAYER "+string+" DELETED") - label = "g.remove -f type="+self.GetItemText(self.selected_type)+" name="+string+" -- completed" # generate this message (command) automatically? - self.showNotification.emit(message=label) - self.RestoreBackup() - - def OnDisplayLayer(self, event): - """Display layer in current graphics view""" - layerName = [] - if (self.GetItemText(self.selected_location) == self.glocation and self.selected_mapset): - string = self.GetItemText(self.selected_layer)+'@'+self.GetItemText(self.selected_mapset) - layerName.append(string) - label = _("Displaying") + " " + string + " ..." - self.showNotification.emit(message=label) - label = "d."+self.GetItemText(self.selected_type)+" --q map="+string+" -- completed. Go to Map layers for further operations." - if (self.GetItemText(self.selected_type)=='vector'): - self.parent.parent.AddMaps(layerName, 'vector', True) - elif (self.GetItemText(self.selected_type)=='raster'): - self.parent.parent.AddMaps(layerName, 'raster', True) - else: - self.parent.parent.AddMaps(layerName, 'raster_3d', True) - label = "d.rast --q map="+string+" -- completed. Go to 'Map layers' for further operations." # generate this message (command) automatically? - self.showNotification.emit(message=label) - Debug.msg(1,"LAYER "+self.GetItemText(self.selected_layer)+" DISPLAYED") - else: - GError(_("Failed to display layer: not in current mapset or invalid layer"), - parent = self) - - def OnBeginDrag(self, event): - """Just copy necessary data""" - if (self.ctrldown): - #cursor = wx.StockCursor(wx.CURSOR_HAND) - #self.SetCursor(cursor) - event.Allow() - self.DefineItems(event.GetItem()) - self.OnCopy(event) - Debug.msg(1,"DRAG") - else: - event.Veto() - Debug.msg(1,"DRAGGING without ctrl key does nothing") - - def OnEndDrag(self, event): - """Copy layer into target""" - #cursor = wx.StockCursor(wx.CURSOR_ARROW) - #self.SetCursor(cursor) - if (event.GetItem()): - self.DefineItems(event.GetItem()) - if (self.selected_location == self.copy_location and self.selected_mapset): - event.Allow() - self.OnPaste(event) - self.ctrldown = False - #cursor = wx.StockCursor(wx.CURSOR_DEFAULT) - #self.SetCursor(cursor) # TODO: change cursor while dragging and then back, this is not working - Debug.msg(1,"DROP DONE") - else: - event.Veto() - - def _getUserEntry(self, message, title, value): - """Dialog for simple text entry""" - dlg = TextEntryDialog(self, message, title) - dlg.SetValue(value) - if dlg.ShowModal() == wx.ID_OK: - name = dlg.GetValue() - else: - name = None - dlg.Destroy() - - return name - - def _confirmDialog(self, question, title): - """Confirm dialog""" - dlg = wx.MessageDialog(self, question, title, wx.YES_NO) - res = dlg.ShowModal() - dlg.Destroy() - return res - - def _popupMenuLayer(self): - """Create popup menu for layers""" - menu = wx.Menu() - - item = wx.MenuItem(menu, wx.NewId(), _("&Copy")) - menu.AppendItem(item) - self.Bind(wx.EVT_MENU, self.OnCopy, item) - - item = wx.MenuItem(menu, wx.NewId(), _("&Paste")) - menu.AppendItem(item) - self.Bind(wx.EVT_MENU, self.OnPaste, item) - - item = wx.MenuItem(menu, wx.NewId(), _("&Delete")) - menu.AppendItem(item) - self.Bind(wx.EVT_MENU, self.OnDelete, item) - - item = wx.MenuItem(menu, wx.NewId(), _("&Rename")) - menu.AppendItem(item) - self.Bind(wx.EVT_MENU, self.OnRename, item) - - item = wx.MenuItem(menu, wx.NewId(), _("&Display layer")) - menu.AppendItem(item) - self.Bind(wx.EVT_MENU, self.OnDisplayLayer, item) - - self.PopupMenu(menu) - menu.Destroy() - - def _popupMenuMapset(self): - """Create popup menu for mapsets""" - menu = wx.Menu() - - item = wx.MenuItem(menu, wx.NewId(), _("&Paste")) - menu.AppendItem(item) - self.Bind(wx.EVT_MENU, self.OnPaste, item) - - self.PopupMenu(menu) - menu.Destroy() - -# testing... -if __name__ == "__main__": - class TestTree(LocationMapTree): - def __init__(self, parent): - """Test Tree constructor.""" - super(TestTree, self).__init__(parent, style=wx.TR_HIDE_ROOT | wx.TR_EDIT_LABELS | - wx.TR_HAS_BUTTONS | wx.TR_FULL_ROW_HIGHLIGHT | wx.TR_COLUMN_LINES | - wx.TR_MULTIPLE) - - def InitTreeItems(self): - """Add locations, mapsets and layers to the tree.""" - gisenv = grass.gisenv() - location = gisenv['LOCATION_NAME'] - mapset = gisenv['MAPSET'] - self._initTreeItems(locations=[location], - mapsets=[mapset]) - - self.ExpandAll() - - def _popupMenuLayer(self): - """Create popup menu for layers""" - pass - - def _popupMenuMapset(self): - """Create popup menu for mapsets""" - pass - - class TestFrame(wx.Frame): - """Frame for testing purposes only.""" - def __init__(self, model=None): - wx.Frame.__init__(self, None, title='Test tree') - - panel = wx.Panel(self) - self.tree = TestTree(parent=self) - self.tree.SetMinSize((300, 500)) - self.tree.InitTreeItems() - - szr = wx.BoxSizer(wx.VERTICAL) - szr.Add(self.tree, 1, wx.ALIGN_CENTER) - panel.SetSizerAndFit(szr) - szr.SetSizeHints(self) - - def main(): - app = wx.App() - frame = TestFrame() - frame.Show() - app.MainLoop() - - main() Modified: grass/trunk/gui/wxpython/lmgr/frame.py =================================================================== --- grass/trunk/gui/wxpython/lmgr/frame.py 2015-09-06 13:06:27 UTC (rev 66127) +++ grass/trunk/gui/wxpython/lmgr/frame.py 2015-09-06 15:12:27 UTC (rev 66128) @@ -70,7 +70,7 @@ from lmgr.toolbars import LMMiscToolbar, LMVectorToolbar, LMNvizToolbar from lmgr.pyshell import PyShellWindow from lmgr.giface import LayerManagerGrassInterface -from lmgr.datacatalog import DataCatalog +from datacatalog.catalog import DataCatalog from gui_core.forms import GUI from gcp.manager import GCPWizard from nviz.main import haveNviz From svn_grass at osgeo.org Sun Sep 6 08:32:02 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sun, 6 Sep 2015 08:32:02 -0700 Subject: [GRASS-SVN] r66129 - grass/trunk/gui/wxpython/docs Message-ID: <20150906153202.C382D3900A3@trac.osgeo.org> Author: martinl Date: 2015-09-06 08:32:02 -0700 (Sun, 06 Sep 2015) New Revision: 66129 Modified: grass/trunk/gui/wxpython/docs/wxGUI.html Log: wxGUI: update manual, 'display map' tool has been removed in r65774 Modified: grass/trunk/gui/wxpython/docs/wxGUI.html =================================================================== --- grass/trunk/gui/wxpython/docs/wxGUI.html 2015-09-06 15:12:27 UTC (rev 66128) +++ grass/trunk/gui/wxpython/docs/wxGUI.html 2015-09-06 15:32:02 UTC (rev 66129) @@ -349,20 +349,14 @@
    -
    icon  - Display map
    -
    Displays all active layers from layer tree and re-renders for display - any layers that have changed since the last time the display was updated, - including layers added or removed.
    -
    icon  - Re-render map
    -
    Re-renders all active layers regardless of whether they have changed - or not.
    + Re-render display +
    Re-renders all active map layers regardless of whether they have changed + or not, see d.redraw.
    icon  Erase display
    -
    Erases the currently selected map display to a white background. +
    Erases the currently selected map display to a white background, see d.erase.
    icon  From svn_grass at osgeo.org Sun Sep 6 10:54:45 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sun, 6 Sep 2015 10:54:45 -0700 Subject: [GRASS-SVN] r66130 - grass-addons/grass7/raster/r.mcda.promethee Message-ID: <20150906175445.4601E390092@trac.osgeo.org> Author: gianluca Date: 2015-09-06 10:54:45 -0700 (Sun, 06 Sep 2015) New Revision: 66130 Modified: grass-addons/grass7/raster/r.mcda.promethee/main.c grass-addons/grass7/raster/r.mcda.promethee/promethee.c grass-addons/grass7/raster/r.mcda.promethee/r.mcda.promethee.html Log: first usable version 0.1 Modified: grass-addons/grass7/raster/r.mcda.promethee/main.c =================================================================== --- grass-addons/grass7/raster/r.mcda.promethee/main.c 2015-09-06 15:32:02 UTC (rev 66129) +++ grass-addons/grass7/raster/r.mcda.promethee/main.c 2015-09-06 17:54:45 UTC (rev 66130) @@ -3,10 +3,11 @@ * MODULE: r.mcda.promethee * AUTHORS: Gianluca Massei (g_massa at libero.it) - Antonio Boggia (boggia at unipg.it) * - * PURPOSE: Make a multicriteria decision analysis based on PROMETHEE algorithm. + * PURPOSE: Make a multicriteria decision analysis based on PROMETHEE algorithm. + * J.P. Brans and P. Vincke (1985). "A preference ranking organisation method: + * The PROMETHEE method for MCDM". Management Science. * - * COPYRIGHT: (C) GRASS Development Team (2015) - * + * COPYRIGHT: Gianluca Massei (g_massa at libero.it) and (C) GRASS Development Team (2015) * This program is free software under the GNU General Public * License (>=v2). Read the file COPYING that comes with GRASS * for details. Modified: grass-addons/grass7/raster/r.mcda.promethee/promethee.c =================================================================== --- grass-addons/grass7/raster/r.mcda.promethee/promethee.c 2015-09-06 15:32:02 UTC (rev 66129) +++ grass-addons/grass7/raster/r.mcda.promethee/promethee.c 2015-09-06 17:54:45 UTC (rev 66130) @@ -70,21 +70,16 @@ for (col2 = 0; col2 < ncols; col2++) { threshold = (decision_vol[row1][col1][i] - decision_vol[row2][col2][i]); - //G_message("thersold:%f;r1:%d;c1:%d // r2:%d;c2:%d ",threshold,row1,col1,row2,col2); - if (threshold>0) + if (threshold>0) /* if therehold is positive, it fill the positive flow*/ { - //positive_flow_vol[row1][col1][i]=threshold*weight_vect[i]; - //negative_flow_vol[row1][col1][i]=0; positive_flow_vol[row1][col1]=positive_flow_vol[row1][col1]+(threshold*weight_vect[i]); negative_flow_vol[row1][col1]=negative_flow_vol[row1][col1]; } - else + else /* if thershold is negative, it fill the negative flow*/ { - negative_flow_vol[row1][col1]=negative_flow_vol[row1][col1]+(threshold*weight_vect[i]); + negative_flow_vol[row1][col1]=negative_flow_vol[row1][col1]+(-threshold*weight_vect[i]); positive_flow_vol[row1][col1]=positive_flow_vol[row1][col1]; - //positive_flow_vol[row1][col1][i]=0; - //negative_flow_vol[row1][col1][i]=threshold*weight_vect[i]; } } } Modified: grass-addons/grass7/raster/r.mcda.promethee/r.mcda.promethee.html =================================================================== --- grass-addons/grass7/raster/r.mcda.promethee/r.mcda.promethee.html 2015-09-06 15:32:02 UTC (rev 66129) +++ grass-addons/grass7/raster/r.mcda.promethee/r.mcda.promethee.html 2015-09-06 17:54:45 UTC (rev 66130) @@ -1,13 +1,10 @@

    DESCRIPTION

    -r.mcda.electre is the implementation of the ELECTRE multicriteria -algorithm in GRASS GIS environment. It is one of the available tools in the -r.mcda suite. It requires as an input the list of raster representing the -criteria to be assessed in the multicriteria evaluation and the vector of -weights to be assigned. Every single cell of the GRASS region is considered -as one of the possible alternatives to evaluate and it is described with +r.mcda.promethee is the implementation of the a multicriteria decision analysis based on PROMETHEE algorithm (J.P. Brans and P. Vincke (1985). "A preference ranking organisation method:The PROMETHEE method for MCDM". Management Science) in GRASS GIS environment. +It is one of the available tools in the r.mcda suite. It requires as an input the list of raster representing the criteria to be assessed in the multicriteria evaluation and the vector of weights to be assigned. +Every single cell of the GRASS region is considered as one of the possible alternatives to evaluate and it is described with the value assumed for the same cell by the raster used as criteria. There -are two output files. One represents the spatial distribution of the +are three output files. One represents the spatial distribution of the concordance index, the other one of the discordance index. The optimal solution is the one presenting the maximum concordance value and the minimum discordance value at the same time. @@ -27,16 +24,11 @@

    REFERENCE

    -

    Roy, B. (1971) Problem and methods with multiple objective functions - Mathematical programming 1, 239-266.

    -

    Roy, B. (1990): The outranking approach and the foundations of Electre - methods , Document du LAMSADE, Paris.

    -

    Janssen R. (1994) - Multiobjective decision support for environmental - management, Kluwer Academic Publishers.

    +

    J.P. Brans and P. Vincke (1985). "A preference ranking organisation method:The PROMETHEE method for MCDM". Management Science.

    GRASS Development Team (2015)

    SEE ALSO

    -r.mcda.fuzzy, r.mcda.regime, r.mcda.roughet, r.mapcalc +r.mcda.ahp, r.mcda.electre, r.mcda.roughet, r.mapcalc

    AUTHORS

    Antonio Boggia - Gianluca Massei
    From svn_grass at osgeo.org Sun Sep 6 12:08:11 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sun, 6 Sep 2015 12:08:11 -0700 Subject: [GRASS-SVN] r66131 - grass/trunk/man Message-ID: <20150906190811.471323900A3@trac.osgeo.org> Author: martinl Date: 2015-09-06 12:08:11 -0700 (Sun, 06 Sep 2015) New Revision: 66131 Modified: grass/trunk/man/build_topics.py Log: fix topics: allow uppercase (fix eg. GUI vs. gui topic) Modified: grass/trunk/man/build_topics.py =================================================================== --- grass/trunk/man/build_topics.py 2015-09-06 17:54:45 UTC (rev 66130) +++ grass/trunk/man/build_topics.py 2015-09-06 19:08:11 UTC (rev 66131) @@ -28,7 +28,7 @@ except: continue try: - key = lines[index_keys].split(',')[1].strip().capitalize().replace(' ', '_') + key = lines[index_keys].split(',')[1].strip().replace(' ', '_') key = key.split('>')[1].split('<')[0] except: continue @@ -47,8 +47,8 @@ "%s Reference Manual: Topics index" % grass_version)) topicsfile.write(headertopics_tmpl) -for key, values in sorted(keywords.iteritems()): - keyfile = open(os.path.join(path, 'topic_%s.html' % key.lower()), 'w') +for key, values in sorted(keywords.iteritems(), key=lambda s: s[0].lower()): + keyfile = open(os.path.join(path, 'topic_%s.html' % key), 'w') keyfile.write(header1_tmpl.substitute(title = "GRASS GIS " \ "%s Reference Manual: Topic %s" % (grass_version, key.replace('_', ' ')))) @@ -60,7 +60,7 @@ basename=mod.replace('.html', ''))) if num_modules >= min_num_modules_for_topic: topicsfile.writelines([moduletopics_tmpl.substitute( - key=key.lower(), name=key.replace('_', ' '))]) + key=key, name=key.replace('_', ' '))]) keyfile.write("\n") # link to the keywords index # TODO: the labels in keywords index are with spaces and capitals From svn_grass at osgeo.org Sun Sep 6 12:15:30 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sun, 6 Sep 2015 12:15:30 -0700 Subject: [GRASS-SVN] r66132 - grass/branches/releasebranch_7_0/man Message-ID: <20150906191530.5E6353900A3@trac.osgeo.org> Author: martinl Date: 2015-09-06 12:15:30 -0700 (Sun, 06 Sep 2015) New Revision: 66132 Modified: grass/branches/releasebranch_7_0/man/build_topics.py Log: fix topics: allow uppercase (fix eg. GUI vs. gui topic) (merge r66131 from trunk) Modified: grass/branches/releasebranch_7_0/man/build_topics.py =================================================================== --- grass/branches/releasebranch_7_0/man/build_topics.py 2015-09-06 19:08:11 UTC (rev 66131) +++ grass/branches/releasebranch_7_0/man/build_topics.py 2015-09-06 19:15:30 UTC (rev 66132) @@ -28,7 +28,7 @@ except: continue try: - key = lines[index_keys].split(',')[1].strip().capitalize().replace(' ', '_') + key = lines[index_keys].split(',')[1].strip().replace(' ', '_') key = key.split('>')[1].split('<')[0] except: continue @@ -47,8 +47,8 @@ "%s Reference Manual: Topics index" % grass_version)) topicsfile.write(headertopics_tmpl) -for key, values in sorted(keywords.iteritems()): - keyfile = open(os.path.join(path, 'topic_%s.html' % key.lower()), 'w') +for key, values in sorted(keywords.iteritems(), key=lambda s: s[0].lower()): + keyfile = open(os.path.join(path, 'topic_%s.html' % key), 'w') keyfile.write(header1_tmpl.substitute(title = "GRASS GIS " \ "%s Reference Manual: Topic %s" % (grass_version, key.replace('_', ' ')))) @@ -60,7 +60,7 @@ basename=mod.replace('.html', ''))) if num_modules >= min_num_modules_for_topic: topicsfile.writelines([moduletopics_tmpl.substitute( - key=key.lower(), name=key.replace('_', ' '))]) + key=key, name=key.replace('_', ' '))]) keyfile.write("\n") write_html_footer(keyfile, "index.html", year) topicsfile.write("\n") From svn_grass at osgeo.org Sun Sep 6 12:21:08 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sun, 6 Sep 2015 12:21:08 -0700 Subject: [GRASS-SVN] r66133 - in grass/trunk/vector/v.lrs: v.lrs.create v.lrs.label v.lrs.segment v.lrs.where Message-ID: <20150906192108.5C2483900A3@trac.osgeo.org> Author: martinl Date: 2015-09-06 12:21:08 -0700 (Sun, 06 Sep 2015) New Revision: 66133 Modified: grass/trunk/vector/v.lrs/v.lrs.create/main.c grass/trunk/vector/v.lrs/v.lrs.label/main.c grass/trunk/vector/v.lrs/v.lrs.segment/main.c grass/trunk/vector/v.lrs/v.lrs.where/main.c Log: keywords cosmetics: Linear Reference System -> linear reference system (looks more consistent at topics page) Modified: grass/trunk/vector/v.lrs/v.lrs.create/main.c =================================================================== --- grass/trunk/vector/v.lrs/v.lrs.create/main.c 2015-09-06 19:15:30 UTC (rev 66132) +++ grass/trunk/vector/v.lrs/v.lrs.create/main.c 2015-09-06 19:21:08 UTC (rev 66133) @@ -119,7 +119,7 @@ module = G_define_module(); G_add_keyword(_("vector")); - G_add_keyword(_("Linear Reference System")); + G_add_keyword(_("linear reference system")); G_add_keyword(_("network")); module->description = _("Creates a linear reference system."); Modified: grass/trunk/vector/v.lrs/v.lrs.label/main.c =================================================================== --- grass/trunk/vector/v.lrs/v.lrs.label/main.c 2015-09-06 19:15:30 UTC (rev 66132) +++ grass/trunk/vector/v.lrs/v.lrs.label/main.c 2015-09-06 19:21:08 UTC (rev 66133) @@ -100,7 +100,7 @@ module = G_define_module(); G_add_keyword(_("vector")); - G_add_keyword(_("Linear Reference System")); + G_add_keyword(_("linear reference system")); G_add_keyword(_("network")); module->description = _("Creates stationing from input lines, " "and linear reference system."); Modified: grass/trunk/vector/v.lrs/v.lrs.segment/main.c =================================================================== --- grass/trunk/vector/v.lrs/v.lrs.segment/main.c 2015-09-06 19:15:30 UTC (rev 66132) +++ grass/trunk/vector/v.lrs/v.lrs.segment/main.c 2015-09-06 19:21:08 UTC (rev 66133) @@ -69,7 +69,7 @@ module = G_define_module(); G_add_keyword(_("vector")); - G_add_keyword(_("Linear Reference System")); + G_add_keyword(_("linear reference system")); G_add_keyword(_("network")); module->description = _("Creates points/segments from input lines, linear reference " Modified: grass/trunk/vector/v.lrs/v.lrs.where/main.c =================================================================== --- grass/trunk/vector/v.lrs/v.lrs.where/main.c 2015-09-06 19:15:30 UTC (rev 66132) +++ grass/trunk/vector/v.lrs/v.lrs.where/main.c 2015-09-06 19:21:08 UTC (rev 66133) @@ -55,7 +55,7 @@ module = G_define_module(); G_add_keyword(_("vector")); - G_add_keyword(_("Linear Reference System")); + G_add_keyword(_("linear reference system")); G_add_keyword(_("network")); module->description = _("Finds line id and real km+offset for given points in vector map " From svn_grass at osgeo.org Sun Sep 6 12:25:05 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sun, 6 Sep 2015 12:25:05 -0700 Subject: [GRASS-SVN] r66134 - in grass/branches/releasebranch_7_0/vector/v.lrs: v.lrs.create v.lrs.label v.lrs.segment v.lrs.where Message-ID: <20150906192505.2A7D43900A3@trac.osgeo.org> Author: martinl Date: 2015-09-06 12:25:04 -0700 (Sun, 06 Sep 2015) New Revision: 66134 Modified: grass/branches/releasebranch_7_0/vector/v.lrs/v.lrs.create/main.c grass/branches/releasebranch_7_0/vector/v.lrs/v.lrs.label/main.c grass/branches/releasebranch_7_0/vector/v.lrs/v.lrs.segment/main.c grass/branches/releasebranch_7_0/vector/v.lrs/v.lrs.where/main.c Log: keywords cosmetics: Linear Reference System -> linear reference system (looks more consistent at topics page) (merge r66133 from trunk) Modified: grass/branches/releasebranch_7_0/vector/v.lrs/v.lrs.create/main.c =================================================================== --- grass/branches/releasebranch_7_0/vector/v.lrs/v.lrs.create/main.c 2015-09-06 19:21:08 UTC (rev 66133) +++ grass/branches/releasebranch_7_0/vector/v.lrs/v.lrs.create/main.c 2015-09-06 19:25:04 UTC (rev 66134) @@ -119,7 +119,7 @@ module = G_define_module(); G_add_keyword(_("vector")); - G_add_keyword(_("Linear Reference System")); + G_add_keyword(_("linear reference system")); G_add_keyword(_("network")); module->description = _("Creates a linear reference system."); Modified: grass/branches/releasebranch_7_0/vector/v.lrs/v.lrs.label/main.c =================================================================== --- grass/branches/releasebranch_7_0/vector/v.lrs/v.lrs.label/main.c 2015-09-06 19:21:08 UTC (rev 66133) +++ grass/branches/releasebranch_7_0/vector/v.lrs/v.lrs.label/main.c 2015-09-06 19:25:04 UTC (rev 66134) @@ -100,7 +100,7 @@ module = G_define_module(); G_add_keyword(_("vector")); - G_add_keyword(_("Linear Reference System")); + G_add_keyword(_("linear reference system")); G_add_keyword(_("network")); module->description = _("Creates stationing from input lines, " "and linear reference system."); Modified: grass/branches/releasebranch_7_0/vector/v.lrs/v.lrs.segment/main.c =================================================================== --- grass/branches/releasebranch_7_0/vector/v.lrs/v.lrs.segment/main.c 2015-09-06 19:21:08 UTC (rev 66133) +++ grass/branches/releasebranch_7_0/vector/v.lrs/v.lrs.segment/main.c 2015-09-06 19:25:04 UTC (rev 66134) @@ -69,7 +69,7 @@ module = G_define_module(); G_add_keyword(_("vector")); - G_add_keyword(_("Linear Reference System")); + G_add_keyword(_("linear reference system")); G_add_keyword(_("network")); module->description = _("Creates points/segments from input lines, linear reference " Modified: grass/branches/releasebranch_7_0/vector/v.lrs/v.lrs.where/main.c =================================================================== --- grass/branches/releasebranch_7_0/vector/v.lrs/v.lrs.where/main.c 2015-09-06 19:21:08 UTC (rev 66133) +++ grass/branches/releasebranch_7_0/vector/v.lrs/v.lrs.where/main.c 2015-09-06 19:25:04 UTC (rev 66134) @@ -55,7 +55,7 @@ module = G_define_module(); G_add_keyword(_("vector")); - G_add_keyword(_("Linear Reference System")); + G_add_keyword(_("linear reference system")); G_add_keyword(_("network")); module->description = _("Finds line id and real km+offset for given points in vector map " From svn_grass at osgeo.org Sun Sep 6 14:34:02 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sun, 6 Sep 2015 14:34:02 -0700 Subject: [GRASS-SVN] r66135 - grass/trunk/lib/python/temporal Message-ID: <20150906213402.7F2EF390092@trac.osgeo.org> Author: huhabla Date: 2015-09-06 14:34:02 -0700 (Sun, 06 Sep 2015) New Revision: 66135 Modified: grass/trunk/lib/python/temporal/c_libraries_interface.py Log: temporal framework: add time stamp support in read_*_full_info() functions Modified: grass/trunk/lib/python/temporal/c_libraries_interface.py =================================================================== --- grass/trunk/lib/python/temporal/c_libraries_interface.py 2015-09-06 19:25:04 UTC (rev 66134) +++ grass/trunk/lib/python/temporal/c_libraries_interface.py 2015-09-06 21:34:02 UTC (rev 66135) @@ -57,6 +57,7 @@ ############################################################################### + def _read_map_full_info(lock, conn, data): """Read full map specific metadata from the spatial database using PyGRASS functions. @@ -79,6 +80,9 @@ finally: conn.send(info) +############################################################################### + + def _read_raster_full_info(name, mapset): """Read raster info, history and cats using PyGRASS RasterRow and return a dictionary. Colors should be supported in the @@ -103,9 +107,22 @@ info["cats"] = list(r.cats) r.close() + ts = libgis.TimeStamp() + check = libgis.G_read_raster_timestamp(name, mapset, byref(ts)) + + if check: + dates = _convert_timestamp_from_grass(ts) + info["start_time"] = dates[0] + info["end_time"] = dates[1] + if len(dates) > 2: + info["time_unit"] = dates[2] + return(info) -def _read_vector_full_info(name, mapset): +############################################################################### + + +def _read_vector_full_info(name, mapset, layer = None): """Read vector info using PyGRASS VectorTopo and return a dictionary. C """ @@ -144,13 +161,25 @@ if v.table is not None: info["columns"] = v.table.columns + ts = libgis.TimeStamp() + check = libgis.G_read_vector_timestamp(name, layer, mapset, byref(ts)) + + if check: + dates = _convert_timestamp_from_grass(ts) + info["start_time"] = dates[0] + info["end_time"] = dates[1] + if len(dates) > 2: + info["time_unit"] = dates[2] + return(info) def _fatal_error(lock, conn, data): """Calls G_fatal_error()""" libgis.G_fatal_error("Fatal Error in C library server") +############################################################################### + def _get_mapset(lock, conn, data): """Return the current mapset @@ -163,7 +192,9 @@ mapset = libgis.G_mapset() conn.send(mapset) +############################################################################### + def _get_location(lock, conn, data): """Return the current location @@ -176,7 +207,9 @@ location = libgis.G_location() conn.send(location) +############################################################################### + def _get_gisdbase(lock, conn, data): """Return the current gisdatabase @@ -189,7 +222,9 @@ gisdbase = libgis.G_gisdbase() conn.send(gisdbase) +############################################################################### + def _get_driver_name(lock, conn, data): """Return the temporal database driver of a specific mapset @@ -280,7 +315,9 @@ finally: conn.send(mapset_list) +############################################################################### + def _has_timestamp(lock, conn, data): """Check if the file based GRASS timestamp is present and send True or False using the provided pipe. @@ -963,9 +1000,15 @@ >>> ciface.read_raster_info("test", tgis.get_current_mapset()) {'rows': 12, 'north': 80.0, 'min': 1, 'datatype': 'CELL', 'max': 1, 'ewres': 10.0, 'cols': 8, 'west': 0.0, 'east': 120.0, 'nsres': 10.0, 'south': 0.0} - >>> ciface.read_raster_full_info("test", tgis.get_current_mapset()) # doctest: +ELLIPSIS +NORMALIZE_WHITESPACE - {u'tbres': 1.0, ... 'title': 'test', u'south': 0.0} + >>> info = ciface.read_raster_full_info("test", tgis.get_current_mapset()) + >>> info # doctest: +ELLIPSIS +NORMALIZE_WHITESPACE + {u'tbres': 1.0, ... 'keyword': 'generated by r.mapcalc', + u'bottom': 0.0, 'end_time': None, 'title': 'test', u'south': 0.0} + >>> info["start_time"] + datetime.datetime(1995, 3, 12, 10, 34, 40) + >>> info["end_time"] + >>> check = ciface.has_raster_timestamp("test", tgis.get_current_mapset()) >>> print check True @@ -1029,6 +1072,9 @@ 0 >>> 'columns' in kvp False + >>> kvp["start_time"] + datetime.datetime(1995, 3, 12, 10, 34, 40) + >>> kvp["end_time"] >>> check = ciface.has_vector_timestamp("test", tgis.get_current_mapset(), None) >>> print check From svn_grass at osgeo.org Sun Sep 6 15:43:02 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sun, 6 Sep 2015 15:43:02 -0700 Subject: [GRASS-SVN] r66136 - grass/trunk/vector/v.cluster Message-ID: <20150906224302.DBC363900A3@trac.osgeo.org> Author: wenzeslaus Date: 2015-09-06 15:43:02 -0700 (Sun, 06 Sep 2015) New Revision: 66136 Added: grass/trunk/vector/v.cluster/v_cluster_4_methods.png Modified: grass/trunk/vector/v.cluster/v.cluster.html Log: v.cluster: add image to manual make simple example primary, show how to display, add see also Modified: grass/trunk/vector/v.cluster/v.cluster.html =================================================================== --- grass/trunk/vector/v.cluster/v.cluster.html 2015-09-06 21:34:02 UTC (rev 66135) +++ grass/trunk/vector/v.cluster/v.cluster.html 2015-09-06 22:43:02 UTC (rev 66136) @@ -91,55 +91,113 @@ urbanarea (North Carolina sample dataset).

    -10000 random points within the areas the vector urbanarea and within the -subregion: +First generate 1000 random points within the areas the vector urbanarea +and within the subregion, then do clustering and visualize the result:

     # pick a subregion of the vector urbanarea
     g.region -p n=272950 s=188330 w=574720 e=703090 res=10
     
    -# create clustered points
    -v.random output=rand_clust npoints=10000 restrict=urbanarea at PERMANENT
    +# create random points in areas
    +v.random output=random_points npoints=1000 restrict=urbanarea
     
     # identify clusters
    -v.cluster in=rand_clust out=rand_clusters method=dbscan
    +v.cluster input=random_points output=clusters_optics method=optics
     
    -# create colors for clusters
    -v.db.addtable map=rand_clusters layer=2 columns="cat integer,grassrgb varchar(11)"
    -v.colors map=rand_clusters layer=2 use=cat color=random rgb_column=grassrgb
    +# set random vector color table for the clusters
    +v.colors map=clusters_optics layer=2 use=cat color=random
     
    -# display with your preferred method
    +# display in command line
    +d.mon wx0
    +
    +# note the second layer and transparent (none) color of the circle border
    +d.vect map=clusters_optics layer=2 icon=basic/point size=10 color=none
     
    -

    -100 random points for each area in the vector urbanarea and within the -subregion: +

    + +

    + Figure: Four different methods with default settings applied to + 1000 random points generated in the same way as in the example. +

    +
    + + + +Generate random points for analysis (100 points per area), use different +method for clustering and visualize using color stored the attribute table.
     # pick a subregion of the vector urbanarea
     g.region -p n=272950 s=188330 w=574720 e=703090 res=10
     
    -# create 100 clustered points
    -v.random output=rand_clust npoints=100 restrict=urbanarea at PERMANENT -a
    +# create clustered points
    +v.random output=rand_clust npoints=100 restrict=urbanarea -a
     
     # identify clusters
    -v.cluster input=rand_clust output=rand_clusters method=density
    +v.cluster in=rand_clust out=rand_clusters method=dbscan
     
     # create colors for clusters
    -v.db.addtable map=rand_clusters layer=2 columns="cat integer"
    -v.colors map=rand_clusters layer=2 use=cat color=random
    +v.db.addtable map=rand_clusters layer=2 columns="cat integer,grassrgb varchar(11)"
    +v.colors map=rand_clusters layer=2 use=cat color=random rgb_column=grassrgb
     
     # display with your preferred method
    -d.mon wx0
    -# show clusters by color
    -d.vect rand_clusters layer=2
    +# remember to use the second layer and RGB column
    +# for example use
    +d.vect map=rand_clusters layer=2 color=none rgb_column=grassrgb icon=basic/circle
     

    SEE ALSO

    -r.clump +r.clump, +v.hull, +v.distance

    AUTHOR

    Added: grass/trunk/vector/v.cluster/v_cluster_4_methods.png =================================================================== (Binary files differ) Property changes on: grass/trunk/vector/v.cluster/v_cluster_4_methods.png ___________________________________________________________________ Added: svn:mime-type + image/png From svn_grass at osgeo.org Sun Sep 6 21:23:32 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sun, 6 Sep 2015 21:23:32 -0700 Subject: [GRASS-SVN] r66137 - grass/trunk/gui/wxpython Message-ID: <20150907042332.455783900A3@trac.osgeo.org> Author: wenzeslaus Date: 2015-09-06 21:23:32 -0700 (Sun, 06 Sep 2015) New Revision: 66137 Modified: grass/trunk/gui/wxpython/Makefile Log: wxGUI/toolboxes: build_modules_xml script has no validation (fixes r65199) Modified: grass/trunk/gui/wxpython/Makefile =================================================================== --- grass/trunk/gui/wxpython/Makefile 2015-09-06 22:43:02 UTC (rev 66136) +++ grass/trunk/gui/wxpython/Makefile 2015-09-07 04:23:32 UTC (rev 66137) @@ -54,7 +54,6 @@ $(DSTDIR)/xml/module_items.xml: tools/build_modules_xml.py @echo "Generating interface description for all modules..." $(call run_grass,$(PYTHON) $< > $@) - $(call run_grass,$(PYTHON) $< "validate" $@) $(PYDSTDIRS): %: | $(DSTDIR) $(MKDIR) $@ From svn_grass at osgeo.org Sun Sep 6 21:47:34 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sun, 6 Sep 2015 21:47:34 -0700 Subject: [GRASS-SVN] r66138 - grass/trunk/lib/rst/interp_float Message-ID: <20150907044734.EEBDF390092@trac.osgeo.org> Author: wenzeslaus Date: 2015-09-06 21:47:34 -0700 (Sun, 06 Sep 2015) New Revision: 66138 Modified: grass/trunk/lib/rst/interp_float/DESCRIPTION.INTERP grass/trunk/lib/rst/interp_float/func2d.c grass/trunk/lib/rst/interp_float/init2d.c grass/trunk/lib/rst/interp_float/input2d.c grass/trunk/lib/rst/interp_float/interp2d.c grass/trunk/lib/rst/interp_float/interpf.h grass/trunk/lib/rst/interp_float/matrix.c grass/trunk/lib/rst/interp_float/output2d.c grass/trunk/lib/rst/interp_float/point2d.c grass/trunk/lib/rst/interp_float/secpar2d.c grass/trunk/lib/rst/interp_float/segmen2d.c grass/trunk/lib/rst/interp_float/vinput2d.c grass/trunk/lib/rst/interp_float/write2d.c Log: dox: Doxygen documentation for lib rst interp float Using existing documentation in source code or text files. Inline Doxygen docs seems as appropriate for paramters since already used without Doxygen but it requries slight divergence of what grass_indent would like to see. Modified: grass/trunk/lib/rst/interp_float/DESCRIPTION.INTERP =================================================================== --- grass/trunk/lib/rst/interp_float/DESCRIPTION.INTERP 2015-09-07 04:23:32 UTC (rev 66137) +++ grass/trunk/lib/rst/interp_float/DESCRIPTION.INTERP 2015-09-07 04:47:34 UTC (rev 66138) @@ -10,110 +10,12 @@ divided into several libraries to provide better functionality. +V. Petras (2015): Removed all functions which are documented elsewhere +in source code (Doxygen style) or clearly deleted. This file can be +deleted after resolving IL_input_data_2d function. +The TODO for changes 1997 still applies. -DATA STRUCTURES: ----------------- - -struct interp_params -{ - double zmult; /* multiplier for z-values */ - FILE *fdinp; /* input stream */ - int kmin; /* min number of points per segment for interpolation */ - int kmax; /* max number of points per segment */ - char *maskmap; /* name of mask */ - int nsizr,nsizc; /* number of rows and columns */ - double *az,*adx,*ady,*adxx,*adyy,*adxy; /* array for interpolated values */ - double fi; /* tension */ - int KMAX2; /* max num. of points for interp.*/ - int scik1,scik2,scik3; /* multipliers for interp. values*/ - double rsm; /* smoothing, for rsm<0 use variable smooth from sites */ - char *elev,*slope,*aspect,*pcurv,*tcurv,*mcurv; /* output files */ - double dmin; /* min distance between points */ - double x_orig, y_orig; /* origin */ - int deriv; /* 1 if compute partial derivs */ - FILE *Tmp_fd_z,*Tmp_fd_dx,*Tmp_fd_dy, /* temp files for writing interp.*/ - *Tmp_fd_xx,*Tmp_fd_yy,*Tmp_fd_xy; /* values */ - FILE *fddevi; /* pointer to deviations file */ - - int (*grid_calc) (); /*calculates grid for given segm*/ - int (*matrix_create) (); /*creates matrix for a given segm*/ - int (*check_points) (); /*checks interp. func. at points */ - int (*secpar) (); /* calculates aspect,slope,curv. */ - double (*interp) (); /* radial basis function */ - int (*interpder) (); /* derivatives of radial basis function */ - int (*wr_temp) (); /* writes temp files */ - int c, /* cross validation */ - char *wheresql /* SQL WHERE */ -}; - - -FUNCTIONS: ----------- - -void -IL_init_params_2d(params,inp,zm,k1,k2,msk,rows,cols,ar1,ar2,ar3,ar4,ar5,ar6, - tension,k3,sc1,sc2,sc3,sm,f1,f2,f3,f4,f5,f6,dm,x_or,y_or, - der,t1,t2,t3,t4,t5,t6,dev) - - struct interp_params *params; - FILE *inp; /* input stream */ - double zm; /* multiplier for z-values */ - int k1; /* min number of points per segment for interpolation */ - int k2; /* max number of points per segment */ - char *msk; /* name of mask */ - int rows,cols; /* number of rows and columns */ - double *ar1,*ar2,*ar3,*ar4,*ar5,*ar6; /* arrays for interpolated values */ - double tension; /* tension */ - int k3; /* max num. of points for interp.*/ - int sc1,sc2,sc3; /* multipliers for interp. values*/ - double sm; /* smoothing, if sm<0 take it from sites file input */ - char *f1,*f2,*f3,*f4,*f5,*f6; /*output files */ - double dm; /* min distance between points */ - double x_or, y_or; /* origin */ - int der; /* 1 if compute partial derivs */ - FILE *t1,*t2,*t3,*t4,*t5,*t6; /* temp files for writing interp. values */ - FILE *dev; /* pointer to deviations file */ - -Initializes parameters called by the library - - -void -IL_init_func_2d(params,grid_f,matr_f,point_f,secp_f,interp_f, - interpder_f,temp_f) - - struct interp_params *params; - int (*grid_f) (); /*calculates grid for given segm*/ - int (*matr_f) (); /*creates matrix for a given segm*/ - int (*point_f) (); /*checks interp. func. at points */ - int (*secp_f) (); /* calculates aspect,slope,curv. */ - double (*interp_f) (); /* radial basis function*/ - int (*interpder_f) (); /* derivatives of radial basis fucntion */ - int (*temp_f) (); /* writes temp files */ - -Initializes functions called by the library - - - - -double -IL_crst (r,fi) - double r; /* distance squared*/ - double fi; /* tension */ - -Radial basis function - regularized spline with tension (d=2) - - int -IL_crstg (r, fi, gd1, gd2) - double r; /* distance squared*/ - double fi; /* tension */ - double *gd1; - double *gd2; - -Derivatives of radial basis function - regularized spline with tension(d=2) - - -int IL_input_data_2d(params,info,xmin,xmax,ymin,ymax,zmin,zmax,MAXPOINTS,n_points) struct interp_params *params; struct tree_info *info; /* quadtree info */ @@ -124,195 +26,3 @@ Inserts input data inside the region into a quad tree. Also translates data. Returns number of segments in the quad tree. - - - - -int IL_vector_input_data_2d(params,Map,dmax,cats,iselev,info,xmin, - xmax,ymin,ymax,zmin,zmax,n_points) - - struct interp_params *params; - struct Map_info *Map; /* input vector file */ - double dmax; /* max distance between points */ - struct Categories *cats; /* Cats file */ - int iselev; /* do zeroes represent elevation? */ - struct tree_info *info; /* quadtree info */ - double *xmin,*xmax,*ymin,*ymax,*zmin,*zmax; - int *n_points; /* number of points used for interpolation */ - -Inserts input data inside the region into a quad tree. -Also translates data. -Returns number of segments in the quad tree. - - - - - - - -struct BM * -IL_create_bitmask(params) - struct interp_params *params; - -Creates a bitmap mask from maskmap raster file and/or current MASK if -present and returns a pointer to the bitmask. If no mask is in force returns -NULL. - - - -int -IL_grid_calc_2d(params,data,bitmask,zmin,zmax,zminac,zmaxac,gmin,gmax, - c1min,c1max,c2min,c2max,ertot,b,offset1) - struct interp_params *params; - struct quaddata *data; /* given segment */ - struct BM *bitmask; /* bitmask */ - double zmin,zmax; /* min and max input z-values */ - double *zminac,*zmaxac, /* min and max interp. z-values */ - *gmin,*gmax, /* min and max inperp. slope val.*/ - *c1min,*c1max,*c2min,*c2max; /* min and max interp. curv. val.*/ - double *ertot; /* rms deviation of the interpolated surface */ - double *b; /* solutions of linear equations */ - int offset1; /* offset for temp file writing */ - -Calculates grid for the given segment represented by data (contains n_rows, -n_cols, ew_res,ns_res, and all points inside + overlap) using solutions of -system of lin. equations and interpolating functions interp() and interpder(). -Also calls secpar() to compute slope, aspect and curvatures if required. - - - - -int -IL_matrix_create(params,points,n_points,matrix,indx) - struct interp_params *params; - struct triple *points; /* points for interpolation */ - int n_points; /* number of points */ - double **matrix; /* matrix */ - int *indx; - -Creates system of linear equations represented by matrix using given points -and interpolating function interp() - - - - - -int -IL_check_at_points_2d (params,n_points,points,b,ertot,zmin) - struct interp_params *params; - int n_points; /* number of points */ - struct triple *points; /* points for interpolation */ - double *b; /* solution of linear equations */ - double *ertot; /* rms deviation of the interpolated surface */ - double zmin; /* min z-value */ - -Checks if interpolating function interp() evaluates correct z-values at given -points. If smoothing is used calculate the maximum and rms deviation caused by smoothing. - - - - - - -int -IL_secpar_loop_2d(params,ngstc,nszc,k,bitmask,gmin,gmax,c1min,c1max,c2min, - c2max,cond1,cond2) - struct interp_params *params; - int ngstc; /* starting column */ - int nszc; /* ending column */ - int k; /* current row */ - struct BM *bitmask; - double *gmin,*gmax,*c1min,*c1max,*c2min,*c2max; /* min,max interp. values */ - int cond1,cond2; /*determine if particular values need to be computed*/ - -Computes slope, aspect and curvatures (depending on cond1, cond2) for derivative -arrays adx,...,adxy between columns ngstc and nszc. - - - -int -IL_write_temp_2d(params,ngstc,nszc,offset2) - struct interp_params *params; - int ngstc,nszc,offset2; /* begin. and end. column, offset */ - -Writes az,adx,...,adxy into appropriate place (depending on ngstc, nszc and -offset) in corresponding temp file */ - - - - -int -IL_interp_segments_2d (params,info,tree,bitmask,zmin,zmax,zminac,zmaxac, - gmin,gmax,c1min,c1max,c2min,c2max,ertot,totsegm,offset1,dnorm) - struct interp_params *params; - struct tree_info *info; /* info for the quad tree */ - struct multtree *tree; /* current leaf of the quad tree */ - struct BM *bitmask; /* bitmask */ - double zmin,zmax; /* min and max input z-values */ - double *zminac,*zmaxac, /* min and max interp. z-values */ - *gmin,*gmax, /* min and max inperp. slope val.*/ - *c1min,*c1max,*c2min,*c2max; /* min and max interp. curv. val.*/ - double *ertot; /* rms deviation of the interpolated surface*/ - int totsegm; /* total number of segments */ - int offset1; /* offset for temp file writing */ - double dnorm; /* normalization factor */ - -Recursively processes each segment in a tree by - a) finding points from neighbouring segments so that the total number of - points is between KMIN and KMAX2 by calling tree function MT_get_region(). - b) creating and solving the system of linear equations using these points - and interp() by calling matrix_create() and G_ludcmp(). - c) checking the interpolated values at given points by calling - check_points(). - d) computing grid for this segment using points and interp() by calling - grid_calc(). - -int -IL_interp_segments_new_2d (params,info,tree,bitmask, - zmin,zmax,zminac,zmaxac,gmin,gmax,c1min,c1max, - c2min,c2max,ertot,totsegm,offset1,dnorm) - - struct interp_params *params; - struct tree_info *info; /* info for the quad tree */ - struct multtree *tree; /* current leaf of the quad tree */ - struct BM *bitmask; /* bitmask */ - double zmin,zmax; /* min and max input z-values */ - double *zminac,*zmaxac, /* min and max interp. z-values */ - *gmin,*gmax, /* min and max inperp. slope val.*/ - *c1min,*c1max,*c2min,*c2max; /* min and max interp. curv. val.*/ - double *ertot; /* rms deviation of the interpolated surface*/ - int totsegm; /* total number of segments */ - int offset1; /* offset for temp file writing */ - double dnorm; /* normalization factor */ - -The difference between this function and IL_interp_segments_2d() is making -sure that additional points are taken from all directions, i.e. it finds -equal number of points from neigbouring segments in each of 8 neigbourhoods. - -Recursively processes each segment in a tree by - a) finding points from neighbouring segments so that the total number of - points is between KMIN and KMAX2 by calling tree function MT_get_region(). - b) creating and solving the system of linear equations using these points - and interp() by calling matrix_create() and G_ludcmp(). - c) checking the interpolated function values at points by calling - check_points(). - d) computing grid for this segment using points and interp() by calling - grid_calc(). - - - -int -IL_output_2d (params,cellhd,zmin,zmax,zminac,zmaxac,c1min,c1max,c2min,c2max, - gmin,gmax,ertot,dnorm) - struct interp_params *params; - struct Cell_head *cellhd; /* current region */ - double zmin,zmax, /* min,max input z-values */ - zminac,zmaxac,c1min,c1max, /* min,max interpolated values */ - c2min,c2max,gmin,gmax; - double *ertot; /* rms deviation of the interpolated surface*/ - double dnorm; /* normalization factor */ - -Creates output files as well as history files and color tables for them. - - - Modified: grass/trunk/lib/rst/interp_float/func2d.c =================================================================== --- grass/trunk/lib/rst/interp_float/func2d.c 2015-09-07 04:23:32 UTC (rev 66137) +++ grass/trunk/lib/rst/interp_float/func2d.c 2015-09-07 04:47:34 UTC (rev 66138) @@ -1,36 +1,53 @@ -/*- +/*! + * \file func2d.c + * + * \author + * Lubos Mitas (original program and various modifications) * - * Original program and various modifications: - * Lubos Mitas - * - * GRASS4.1 version of the program and GRASS4.2 modifications: + * \author * H. Mitasova, - * I. Kosinovsky, D. Gerdes - * D. McCauley + * I. Kosinovsky, D. Gerdes, + * D. McCauley + * (GRASS4.1 version of the program and GRASS4.2 modifications) * - * Copyright 1993, 1995: + * \author * L. Mitas , * H. Mitasova , * I. Kosinovsky, * D.Gerdes - * D. McCauley + * D. McCauley (1993, 1995) * - * modified by McCauley in August 1995 - * modified by Mitasova in August 1995, Nov. 1996 + * \author modified by McCauley in August 1995 + * \author modified by Mitasova in August 1995, Nov. 1996 * + * \copyright + * (C) 1993-1999 by Lubos Mitas and the GRASS Development Team + * + * \copyright + * This program is free software under the + * GNU General Public License (>=v2). + * Read the file COPYING that comes with GRASS + * for details. */ + #include #include #include #include -double IL_crst(double r, double fi) -/* - * Radial basis function - completely regularized spline with - * tension (d=2) + +/* parameter description from DESCRIPTION.INTERP */ +/*! + * Radial basis function + * + * Radial basis function - completely regularized spline with tension (d=2) + * */ +double IL_crst(double r, /**< distance squared */ + double fi /**< tension */ + ) { double rfsta2 = fi * fi * r / 4.; @@ -81,15 +98,16 @@ } - -int IL_crstg(double r, double fi, double *gd1, /* G1(r) */ - double *gd2 /* G2(r) */ - ) - - -/* +/*! * Function for calculating derivatives (d=2) + * + * Derivatives of radial basis function - regularized spline with tension(d=2) */ +int IL_crstg(double r, /**< distance squared */ + double fi, /**< tension */ + double *gd1, /**< G1(r) */ + double *gd2 /**< G2(r) */ + ) { double r2 = r; double rfsta2 = fi * fi * r / 4.; Modified: grass/trunk/lib/rst/interp_float/init2d.c =================================================================== --- grass/trunk/lib/rst/interp_float/init2d.c 2015-09-07 04:23:32 UTC (rev 66137) +++ grass/trunk/lib/rst/interp_float/init2d.c 2015-09-07 04:47:34 UTC (rev 66138) @@ -1,13 +1,23 @@ -/*- - * Written by H. Mitasova, I. Kosinovsky, D. Gerdes Fall 1993 - * Copyright 1993, H. Mitasova , - * I. Kosinovsky, and D.Gerdes +/*! + * \file init2d.c * - * modified by McCauley in August 1995 - * modified by Mitasova in August 1995 - * modified by Brown in June 1999 - added elatt & smatt + * \brief Initialization of interpolation library data structures * + * \author H. Mitasova, I. Kosinovsky, D. Gerdes Fall 1993 (original authors) + * \author modified by McCauley in August 1995 + * \author modified by Mitasova in August 1995 + * \author modified by Brown in June 1999 - added elatt & smatt + * + * \copyright + * (C) 1993-1999 by Helena Mitasova and the GRASS Development Team + * + * \copyright + * This program is free software under the + * GNU General Public License (>=v2). + * Read the file COPYING that comes with GRASS + * for details. + * */ #include @@ -16,41 +26,38 @@ #include #include -void IL_init_params_2d( - /* initialize parameters */ - struct interp_params *params, - FILE * inp, /* input stream */ - int elatt, /* which fp att in sites file? 1 = first */ - int smatt, /* which fp att in sites file to use for - * smoothing? (if zero use sm) 1 = first */ - double zm, /* multiplier for z-values */ - int k1, /* min number of points per segment for - * interpolation */ - int k2, /* max number of points per segment */ - char *msk, /* name of mask */ - int rows, int cols, /* number of rows and columns */ - DCELL * ar1, DCELL * ar2, - DCELL * ar3, DCELL * ar4, - DCELL * ar5, DCELL * ar6, /* arrays for interpolated values */ - double tension, /* tension */ - int k3, /* max num. of points for interp. */ - int sc1, int sc2, int sc3, /* multipliers for interp. values */ - double sm, /* smoothing */ - char *f1, char *f2, - char *f3, char *f4, - char *f5, char *f6, /* output files */ - double dm, /* min distance between points */ - double x_or, double y_or, /* origin */ - int der, /* 1 if compute partial derivs */ - double tet, /* anisotropy angle, 0=East,counter-clockwise */ - double scl, /* anisotropy scaling factor */ - FILE * t1, FILE * t2, - FILE * t3, FILE * t4, - FILE * t5, FILE * t6, /* temp files for writing interp. values */ - FILE * dev, /* pointer to deviations file */ - struct TimeStamp *ts, - int c, /* cross validation */ - const char *wheresql /* SQL WHERE */ + +/*! Initializes parameters used by the library */ +void IL_init_params_2d(struct interp_params *params, + FILE * inp, /*!< input stream */ + int elatt, /*!< which fp att in sites file? 1 = first */ + int smatt, /*!< which fp att in sites file to use for + * smoothing? (if zero use sm) 1 = first */ + double zm, /*!< multiplier for z-values */ + int k1, /*!< min number of points per segment for interpolation */ + int k2, /*!< max number of points per segment */ + char *msk, /*!< name of mask */ + int rows, int cols, /*!< number of rows and columns */ + DCELL * ar1, DCELL * ar2, DCELL * ar3, DCELL * ar4, DCELL * ar5, + DCELL * ar6, /*!< arrays for interpolated values (ar1-ar6) */ + double tension, /*!< tension */ + int k3, /*!< max number of points for interpolation */ + int sc1, int sc2, int sc3, /*!< multipliers for interpolation values */ + double sm, /*!< smoothing */ + char *f1, char *f2, char *f3, char *f4, char *f5, + char *f6, /*!< output files (f1-f6) */ + double dm, /*!< min distance between points */ + double x_or, /*!< x of origin */ + double y_or, /*!< y of origin */ + int der, /*!< 1 if compute partial derivatives */ + double tet, /*!< anisotropy angle (0 is East, counter-clockwise) */ + double scl, /*!< anisotropy scaling factor */ + FILE * t1, FILE * t2, FILE * t3, FILE * t4, FILE * t5, + FILE * t6, /*!< temp files for writing interp. values (t1-t6) */ + FILE * dev, /*!< pointer to deviations file */ + struct TimeStamp *ts, + int c, /*!< cross validation */ + const char *wheresql /*!< SQL WHERE statement */ ) { params->fdinp = inp; @@ -98,16 +105,16 @@ params->wheresql = wheresql; } +/*! Initializes functions used by the library */ void IL_init_func_2d(struct interp_params *params, - grid_calc_fn *grid_f, /* calculates grid for given segm */ - matrix_create_fn *matr_f, /* creates matrix for a given segm */ - check_points_fn *point_f, /* checks interp. func. at points */ - secpar_fn *secp_f, /* calculates aspect,slope,curv. */ - interp_fn *interp_f, /* radial basis function */ - interpder_fn *interpder_f, /* derivatives of radial basis func. */ - wr_temp_fn *temp_f /* writes temp files */ + grid_calc_fn * grid_f, /*!< calculates grid for given segment */ + matrix_create_fn * matr_f, /*!< creates matrix for a given segment */ + check_points_fn * point_f, /*!< checks interpolation function at points */ + secpar_fn * secp_f, /*!< calculates aspect, slope, curvature */ + interp_fn * interp_f, /*!< radial basis function */ + interpder_fn * interpder_f, /*!< derivatives of radial basis function */ + wr_temp_fn * temp_f /*!< writes temp files */ ) -/* initialize functions */ { params->grid_calc = grid_f; params->matrix_create = matr_f; @@ -118,5 +125,3 @@ params->wr_temp = temp_f; } - - Modified: grass/trunk/lib/rst/interp_float/input2d.c =================================================================== --- grass/trunk/lib/rst/interp_float/input2d.c 2015-09-07 04:23:32 UTC (rev 66137) +++ grass/trunk/lib/rst/interp_float/input2d.c 2015-09-07 04:47:34 UTC (rev 66138) @@ -1,16 +1,20 @@ -/*- - * Written by H. Mitasova, I. Kosinovsky, D. Gerdes Fall 1993 - * University of Illinois - * US Army Construction Engineering Research Lab - * Copyright 1993, H. Mitasova (University of Illinois), - * I. Kosinovsky, (USA-CERL), and D.Gerdes (USA-CERL) +/*! + * \file input2d.c * - * modified by McCauley in August 1995 - * modified by Mitasova in August 1995 - * modified by Mitasova in November 1996 to include variable smoothing - * modified by Brown in June 1999 - added elatt & smatt + * \author H. Mitasova, I. Kosinovsky, D. Gerdes Fall 1993 (original authors) + * \author modified by McCauley in August 1995 + * \author modified by Mitasova in August 1995 + * \author modified by Brown in June 1999 - added elatt & smatt * + * \copyright + * (C) 1993-1999 by Helena Mitasova and the GRASS Development Team + * + * \copyright + * This program is free software under the + * GNU General Public License (>=v2). + * Read the file COPYING that comes with GRASS + * for details. */ @@ -25,9 +29,15 @@ #include #include + +/*! + * Creates a bitmap mask from given raster map + * + * Creates a bitmap mask from maskmap raster file and/or current MASK if + * present and returns a pointer to the bitmask. If no mask is in force + * returns NULL. + */ struct BM *IL_create_bitmask(struct interp_params *params) - -/** Creates a bitmap mask from given raster map **/ { int i, j, cfmask = -1, irev, MASKfd; const char *mapsetm; Modified: grass/trunk/lib/rst/interp_float/interp2d.c =================================================================== --- grass/trunk/lib/rst/interp_float/interp2d.c 2015-09-07 04:23:32 UTC (rev 66137) +++ grass/trunk/lib/rst/interp_float/interp2d.c 2015-09-07 04:47:34 UTC (rev 66138) @@ -1,25 +1,38 @@ -/*- +/*! + * \file interp2d.c * - * Original program and various modifications: - * Lubos Mitas + * \author + * Lubos Mitas (original program and various modifications) * - * GRASS4.1 version of the program and GRASS4.2 modifications: + * \author * H. Mitasova, - * I. Kosinovsky, D. Gerdes - * D. McCauley + * I. Kosinovsky, D. Gerdes, + * D. McCauley + * (GRASS4.1 version of the program and GRASS4.2 modifications) * - * Copyright 1993, 1995: - * L. Mitas , + * \author + * L. Mitas, * H. Mitasova, * I. Kosinovsky, - * D.Gerdes + * D.Gerdes, * D. McCauley + * (1993, 1995) * - * modified by McCauley in August 1995 - * modified by Mitasova in August 1995, Nov. 1996 - * bug fixes(mask) and modif. for variable smoothing Mitasova Jan 1997 + * \author modified by McCauley in August 1995 + * \author modified by Mitasova in August 1995, Nov. 1996 + * \author + * bug fixes(mask) and modification for variable smoothing + * Mitasova (Jan 1997) * + * \copyright + * (C) 1993-1999 by Lubos Mitas and the GRASS Development Team + * + * \copyright + * This program is free software under the + * GNU General Public License (>=v2). + * Read the file COPYING that comes with GRASS + * for details. */ @@ -38,24 +51,29 @@ #define CEULER .57721566 -int IL_grid_calc_2d(struct interp_params *params, struct quaddata *data, /* given segment */ - struct BM *bitmask, /* bitmask */ - double zmin, double zmax, /* min and max input z-values */ - double *zminac, double *zmaxac, /* min and max interp. z-values */ - double *gmin, double *gmax, /* min and max inperp. slope val. */ - double *c1min, double *c1max, double *c2min, double *c2max, /* min and max interp. curv. val. */ - double *ertot, /* total interplating func. error */ - double *b, /* solutions of linear equations */ - off_t offset1, /* offset for temp file writing */ - double dnorm) - -/* +/*! + * Calculates grid values for a given segment + * * Calculates grid for the given segment represented by data (contains * n_rows, n_cols, ew_res,ns_res, and all points inside + overlap) using - * solutions of system of lin. equations and interpolating functions + * solutions of system of linear equations and interpolating functions * interp() and interpder(). Also calls secpar() to compute slope, aspect * and curvatures if required. + * + * *ertot* can be also called *RMS deviation of the interpolated surface* */ +int IL_grid_calc_2d(struct interp_params *params, + struct quaddata *data, /*!< given segment */ + struct BM *bitmask, /*!< bitmask */ + double zmin, double zmax, /*!< min and max input z-values */ + double *zminac, double *zmaxac, /*!< min and max interp. z-values */ + double *gmin, double *gmax, /*!< min and max interp. slope val. */ + double *c1min, double *c1max, /*!< min and max interp. curv. val. */ + double *c2min, double *c2max, /*!< min and max interp. curv. val. */ + double *ertot, /*!< total interpolating func. error */ + double *b, /*!< solutions of linear equations */ + off_t offset1, /*!< offset for temp file writing */ + double dnorm) { /* Modified: grass/trunk/lib/rst/interp_float/interpf.h =================================================================== --- grass/trunk/lib/rst/interp_float/interpf.h 2015-09-07 04:23:32 UTC (rev 66137) +++ grass/trunk/lib/rst/interp_float/interpf.h 2015-09-07 04:47:34 UTC (rev 66138) @@ -67,41 +67,41 @@ struct interp_params { - double zmult; /* multiplier for z-values */ - FILE *fdinp; /* input stream */ - int elatt; /* which floating point attr to use? first = 1, second = 2, etc */ - int smatt; /* which floating point attr to use for smoothing? first = 1, second = 2, etc */ - int kmin; /* min number of points per segment for interpolation */ - int kmax; /* max number of points per segment */ - char *maskmap; /* name of mask */ - int nsizr, nsizc; /* number of rows and columns */ + double zmult; /**< multiplier for z-values */ + FILE *fdinp; /**< input stream */ + int elatt; /**< which floating point attr to use? first = 1, second = 2, etc */ + int smatt; /**< which floating point attr to use for smoothing? first = 1, second = 2, etc */ + int kmin; /**< min number of points per segment for interpolation */ + int kmax; /**< max number of points per segment */ + char *maskmap; /**< name of mask */ + int nsizr, nsizc; /**< number of rows and columns */ DCELL *az, *adx, *ady, - *adxx, *adyy, *adxy; /* array for interpolated values */ - double fi; /* tension */ - int KMAX2; /* max num. of points for interp. */ - int scik1, scik2, scik3; /* multipliers for interp. values */ - double rsm; /* smoothing */ + *adxx, *adyy, *adxy; /**< array for interpolated values */ + double fi; /**< tension */ + int KMAX2; /**< max num. of points for interp. */ + int scik1, scik2, scik3; /**< multipliers for interp. values */ + double rsm; /**< smoothing */ char *elev, *slope, *aspect, - *pcurv, *tcurv, *mcurv; /* output files */ - double dmin; /* min distance between points */ - double x_orig, y_orig; /* origin */ - int deriv, cv; /* 1 if compute partial derivs */ - double theta; /* anisotropy angle, 0=East,counter-clockwise */ - double scalex; /* anisotropy scaling factor */ - struct TimeStamp *ts; /* timestamp for raster files */ + *pcurv, *tcurv, *mcurv; /**< output files */ + double dmin; /**< min distance between points */ + double x_orig, y_orig; /**< origin */ + int deriv, cv; /**< 1 if compute partial derivs */ + double theta; /**< anisotropy angle, 0=East,counter-clockwise */ + double scalex; /**< anisotropy scaling factor */ + struct TimeStamp *ts; /**< timestamp for raster files */ FILE *Tmp_fd_z, *Tmp_fd_dx, *Tmp_fd_dy, *Tmp_fd_xx, - *Tmp_fd_yy, *Tmp_fd_xy; /* temp files for writing interp. values */ - FILE *fddevi; /* pointer to deviations file */ + *Tmp_fd_yy, *Tmp_fd_xy; /**< temp files for writing interp. values */ + FILE *fddevi; /**< pointer to deviations file */ - grid_calc_fn *grid_calc; /*calculates grid for given segm */ - matrix_create_fn *matrix_create; /*creates matrix for a given segm */ - check_points_fn *check_points; /*checks interp. func. at points */ - secpar_fn *secpar; /* calculates aspect,slope,curv. */ - interp_fn *interp; /* radial based interp. function */ - interpder_fn *interpder; /* interp. func. for derivatives */ - wr_temp_fn *wr_temp; /* writes temp files */ - const char *wheresql; /* SQL statement to select input points */ + grid_calc_fn *grid_calc; /**< calculates grid for given segm */ + matrix_create_fn *matrix_create; /**< creates matrix for a given segm */ + check_points_fn *check_points; /**< checks interp. func. at points */ + secpar_fn *secpar; /**< calculates aspect,slope,curv. */ + interp_fn *interp; /**< radial based interp. function */ + interpder_fn *interpder; /**< interp. func. for derivatives */ + wr_temp_fn *wr_temp; /**< writes temp files */ + const char *wheresql; /**< SQL statement to select input points */ }; /* distance.c */ Modified: grass/trunk/lib/rst/interp_float/matrix.c =================================================================== --- grass/trunk/lib/rst/interp_float/matrix.c 2015-09-07 04:23:32 UTC (rev 66137) +++ grass/trunk/lib/rst/interp_float/matrix.c 2015-09-07 04:47:34 UTC (rev 66138) @@ -1,23 +1,33 @@ -/* - * Original program and various modifications: - * Lubos Mitas +/*! + * \author + * Lubos Mitas (original program and various modifications) * - * GRASS4.1 version of the program and GRASS4.2 modifications: + * \author * H. Mitasova, - * I. Kosinovsky, D. Gerdes - * D. McCauley + * I. Kosinovsky, D. Gerdes, + * D. McCauley + * (GRASS4.1 version of the program and GRASS4.2 modifications) * - * Copyright 1993, 1995: - * L. Mitas , - * H. Mitasova , + * \author + * L. Mitas, + * H. Mitasova, * I. Kosinovsky, - * D.Gerdes - * D. McCauley + * D.Gerdes, + * D. McCauley + * (1993, 1995) * - * modified by McCauley in August 1995 - * modified by Mitasova in August 1995, Nov. 1996 + * \author modified by McCauley in August 1995 + * \author modified by Mitasova in August 1995, Nov. 1996 + * + * \copyright + * (C) 1993-1996 by Lubos Mitas and the GRASS Development Team + * + * \copyright + * This program is free software under the GNU General Public License (>=v2). + * Read the file COPYING that comes with GRASS for details. */ + #include #include #include @@ -25,6 +35,7 @@ #include #include + /*! * \brief Creates system of linear equations from interpolated points * @@ -32,9 +43,10 @@ * points and interpolating function interp() * * \param params struct interp_params * - * \param points struct triple * : points for interpolation - * \param n_points int : number of points - * \param matrix double ** + * \param points points for interpolation as struct triple + * \param n_points number of points + * \param[out] matrix the matrix + * \param indx * * \return -1 on failure, 1 on success */ @@ -43,10 +55,6 @@ int n_points, /* number of points */ double **matrix, /* matrix */ int *indx) -/* - Creates system of linear equations represented by matrix using given points - and interpolating function interp() - */ { double xx, yy; double rfsta2, r; Modified: grass/trunk/lib/rst/interp_float/output2d.c =================================================================== --- grass/trunk/lib/rst/interp_float/output2d.c 2015-09-07 04:23:32 UTC (rev 66137) +++ grass/trunk/lib/rst/interp_float/output2d.c 2015-09-07 04:47:34 UTC (rev 66138) @@ -1,18 +1,22 @@ - -/*- - * Written by H. Mitasova, I. Kosinovsky, D. Gerdes Summer 1992 - * Copyright 1992, H. Mitasova - * I. Kosinovsky, and D.Gerdes +/*! + * \file output2d.c * - * modified by McCauley in August 1995 - * modified by Mitasova in August 1995 - * modified by Mitasova in August 1999 (fix for elev color) - * modified by Brown in September 1999 (fix for Timestamps) - * Modified by Mitasova in Nov. 1999 (write given tension into hist) - * Last modification: 2006-12-13 + * \author H. Mitasova, I. Kosinovsky, D. Gerdesm, Summer 1992 (original authors) + * \author modified by McCauley in August 1995 + * \author modified by Mitasova in August 1995 + * \author modified by Mitasova in August 1999 (fix for elev color) + * \author modified by Brown in September 1999 (fix for Timestamps) + * \author modified by Mitasova in Nov. 1999 (write given tension into hist) * + * \copyright + * (C) 1992-2006 by Helena Mitasova and the GRASS Development Team + * + * \copyright + * This program is free software under the + * GNU General Public License (>=v2). + * Read the file COPYING that comes with GRASS for details. */ - + #include #include @@ -46,17 +50,24 @@ Rast_free_history(&hist); } -int IL_output_2d(struct interp_params *params, struct Cell_head *cellhd, /* current region */ - double zmin, double zmax, /* min,max input z-values */ - double zminac, double zmaxac, double c1min, double c1max, /* min,max interpolated values */ - double c2min, double c2max, double gmin, double gmax, double ertot, /* total interplating func. error */ - char *input, /* input file name */ - double dnorm, int dtens, int vect, int n_points) -/* - * Creates output files as well as history files and color tables for - * them. +/*! + * Creates output files as well as history files and color tables for them. + * + * *ertot* can be also called *RMS deviation of the interpolated surface*. */ +int IL_output_2d(struct interp_params *params, + struct Cell_head *cellhd, /*!< current region */ + double zmin, double zmax, /*!< min,max input z-values */ + double zminac, double zmaxac, + double c1min, double c1max, /*!< min,max interpolated values */ + double c2min, double c2max, + double gmin, double gmax, + double ertot, /*!< total interpolating func. error */ + char *input, /*!< input file name */ + double dnorm, /*!< normalization factor */ + int dtens, int vect, int n_points + ) { FCELL *cell1; int cf1 = -1, cf2 = -1, cf3 = -1, cf4 = -1, cf5 = -1, cf6 = -1; Modified: grass/trunk/lib/rst/interp_float/point2d.c =================================================================== --- grass/trunk/lib/rst/interp_float/point2d.c 2015-09-07 04:23:32 UTC (rev 66137) +++ grass/trunk/lib/rst/interp_float/point2d.c 2015-09-07 04:47:34 UTC (rev 66138) @@ -1,24 +1,26 @@ - -/*- +/*! + * \file point2d.c * - * Original program and various modifications: - * Lubos Mitas + * \author + * Lubos Mitas (original program and various modifications) * - * GRASS4.1 version of the program and GRASS4.2 modifications: - * H. Mitasova - * I. Kosinovsky, D. Gerdes - * D. McCauley - * - * Copyright 1993, 1995: - * L. Mitas , - * H. Mitasova , - * I. Kosinovsky, , - * D.Gerdes + * \author + * H. Mitasova, + * I. Kosinovsky, + * D. Gerdes, * D. McCauley + * (GRASS4.1 version of the program and GRASS4.2 modifications) * - * modified by McCauley in August 1995 - * modified by Mitasova in August 1995, Nov. 1996 + * \author modified by McCauley in August 1995 + * \author modified by Mitasova in August 1995, Nov. 1996 * + * \copyright + * (C) 1993-2006 by Helena Mitasova and the GRASS Development Team + * + * \copyright + * This program is free software under the + * GNU General Public License (>=v2). + * Read the file COPYING that comes with GRASS for details. */ @@ -37,17 +39,25 @@ #undef hz #endif -int IL_check_at_points_2d(struct interp_params *params, struct quaddata *data, /* current region */ - double *b, /* solution of linear equations */ - double *ertot, /* total error */ - double zmin, /* min z-value */ - double dnorm, struct triple skip_point) - -/* +/*! * Checks if interpolating function interp() evaluates correct z-values at * given points. If smoothing is used calculate the maximum error caused * by smoothing. + * + * *ertot* is a RMS deviation of the interpolated surface. + * + * \todo + * Alternative description: + * ...calculate the maximum and RMS deviation caused by smoothing. */ +int IL_check_at_points_2d(struct interp_params *params, + struct quaddata *data, /*!< current region */ + double *b, /*!< solution of linear equations */ + double *ertot, /*!< total error */ + double zmin, /*!< min z-value */ + double dnorm, + struct triple skip_point + ) { int n_points = data->n_points; /* number of points */ struct triple *points = data->points; /* points for interpolation */ Modified: grass/trunk/lib/rst/interp_float/secpar2d.c =================================================================== --- grass/trunk/lib/rst/interp_float/secpar2d.c 2015-09-07 04:23:32 UTC (rev 66137) +++ grass/trunk/lib/rst/interp_float/secpar2d.c 2015-09-07 04:47:34 UTC (rev 66138) @@ -1,17 +1,27 @@ -/*- - * Written by H. Mitasova, L. Mitas, I. Kosinovsky, D. Gerdes Fall 1994 - * University of Illinois - * US Army Construction Engineering Research Lab - * Copyright 1994, H. Mitasova (University of Illinois), - * L. Mitas (University of Illinois), - * I. Kosinovsky, (USA-CERL), and D.Gerdes (USA-CERL) +/*! + * \file secpar2d.c * - * modified by McCauley in August 1995 - * modified by Mitasova in August 1995 + * \author H. Mitasova, L. Mitas, I. Kosinovsky, D. Gerdes Fall 1994 (original authors) + * \author modified by McCauley in August 1995 + * \author modified by Mitasova in August 1995 + * \author H. Mitasova (University of Illinois) + * \author L. Mitas (University of Illinois) + * \author I. Kosinovsky, (USA-CERL) + * \author D.Gerdes (USA-CERL) * + * \copyright + * (C) 1994-1995 by Helena Mitasova and the GRASS Development Team + * + * \copyright + * This program is free software under the + * GNU General Public License (>=v2). + * Read the file COPYING that comes with GRASS + * for details. + * */ + #include #include #include @@ -19,19 +29,24 @@ #include #include -int IL_secpar_loop_2d(struct interp_params *params, int ngstc, /* starting column */ - int nszc, /* ending column */ - int k, /* current row */ - struct BM *bitmask, double *gmin, double *gmax, double *c1min, double *c1max, double *c2min, double *c2max, /* min,max interp. - * values */ - int cond1, int cond2 /* determine if particular values need to - * be computed */ - ) -/* +/*! + * Compute slope aspect and curvatures + * * Computes slope, aspect and curvatures (depending on cond1, cond2) for * derivative arrays adx,...,adxy between columns ngstc and nszc. */ +int IL_secpar_loop_2d(struct interp_params *params, + int ngstc, /*!< starting column */ + int nszc, /*!< ending column */ + int k, /*!< current row */ + struct BM *bitmask, + double *gmin, double *gmax, + double *c1min, double *c1max, + double *c2min, double *c2max, /*!< min,max interp. values */ + int cond1, + int cond2 /*!< determine if particular values need to be computed */ + ) { double dnorm1, ro, /* rad to deg conv */ dx2 = 0, dy2 = 0, grad2 = 0, /* gradient squared */ Modified: grass/trunk/lib/rst/interp_float/segmen2d.c =================================================================== --- grass/trunk/lib/rst/interp_float/segmen2d.c 2015-09-07 04:23:32 UTC (rev 66137) +++ grass/trunk/lib/rst/interp_float/segmen2d.c 2015-09-07 04:47:34 UTC (rev 66138) @@ -1,8 +1,20 @@ -/* - ** Written by H. Mitasova, I. Kosinovsky, D. Gerdes Fall 1993 - ** Copyright H. Mitasova, I. Kosinovsky, D.Gerdes +/*! + * \file segmen2d.c + * + * \author H. Mitasova, I. Kosinovsky, D. Gerdes + * + * \copyright + * (C) 1993 by Helena Mitasova and the GRASS Development Team + * + * \copyright + * This program is free software under the + * GNU General Public License (>=v2). + * Read the file COPYING that comes with GRASS + * for details. + * */ + #include #include #include @@ -14,34 +26,39 @@ static double smallest_segment(struct multtree *, int); -/* +/*! + * Interpolate recursively a tree of segments * * Recursively processes each segment in a tree by: - * - * a) finding points from neighbouring segments so that the total number of - * points is between KMIN and KMAX2 by calling tree function MT_get_region(). - * - * b) creating and solving the system of linear equations using these points - * and interp() by calling matrix_create() and G_ludcmp(). - * - * c) checking the interpolating function values at points by calling - * check_points(). - * - * d) computing grid for this segment using points and interp() by calling - * grid_calc(). - * + * - finding points from neighbouring segments so that the total number of + * points is between KMIN and KMAX2 by calling tree function MT_get_region(). + * - creating and solving the system of linear equations using these points + * and interp() by calling matrix_create() and G_ludcmp(). + * - checking the interpolating function values at points by calling + * check_points(). + * - computing grid for this segment using points and interp() by calling + * grid_calc(). + * + * \todo + * Isn't this in fact the updated version of the function (IL_interp_segments_new_2d)? + * The function IL_interp_segments_new_2d has the following, better behavior: + * The difference between this function and IL_interp_segments_2d() is making + * sure that additional points are taken from all directions, i.e. it finds + * equal number of points from neighboring segments in each of 8 neighborhoods. */ -int IL_interp_segments_2d(struct interp_params *params, struct tree_info *info, /* info for the quad tree */ - struct multtree *tree, /* current leaf of the quad tree */ - struct BM *bitmask, /* bitmask */ - double zmin, double zmax, /* min and max input z-values */ - double *zminac, double *zmaxac, /* min and max interp. z-values */ - double *gmin, double *gmax, /* min and max inperp. slope val. */ - double *c1min, double *c1max, double *c2min, double *c2max, /* min and max interp. curv. val. */ - double *ertot, /* total interplating func. error */ - int totsegm, /* total number of segments */ - off_t offset1, /* offset for temp file writing */ - double dnorm) +int IL_interp_segments_2d(struct interp_params *params, + struct tree_info *info, /*!< info for the quad tree */ + struct multtree *tree, /*!< current leaf of the quad tree */ + struct BM *bitmask, /*!< bitmask */ + double zmin, double zmax, /*!< min and max input z-values */ + double *zminac, double *zmaxac, /*!< min and max interp. z-values */ + double *gmin, double *gmax, /*!< min and max inperp. slope val. */ + double *c1min, double *c1max, /*!< min and max interp. curv. val. */ + double *c2min, double *c2max, /*!< min and max interp. curv. val. */ + double *ertot, /*!< total interplating func. error */ + int totsegm, /*!< total number of segments */ + off_t offset1, /*!< offset for temp file writing */ + double dnorm) { double xmn, xmx, ymn, ymx, distx, disty, distxp, distyp, temp1, temp2; int i, npt, nptprev, MAXENC; Modified: grass/trunk/lib/rst/interp_float/vinput2d.c =================================================================== --- grass/trunk/lib/rst/interp_float/vinput2d.c 2015-09-07 04:23:32 UTC (rev 66137) +++ grass/trunk/lib/rst/interp_float/vinput2d.c 2015-09-07 04:47:34 UTC (rev 66138) @@ -1,15 +1,28 @@ -/*- +/*! + * \file vinput2d.c + * + * \author * Written by H. Mitasova, I. Kosinovsky, D. Gerdes Fall 1993 * University of Illinois - * US Army Construction Engineering Research Lab - * Copyright 1993, H. Mitasova (University of Illinois), - * I. Kosinovsky, (USA-CERL), and D.Gerdes (USA-CERL) + * US Army Construction Engineering Research Lab + * + * \author + * Mitasova (University of Illinois), + * I. Kosinovsky, (USA-CERL), and D.Gerdes (USA-CERL) * - * modified by McCauley in August 1995 - * modified by Mitasova in August 1995 - * modofied by Mitasova in Nov 1999 (dmax fix) + * \author modified by McCauley in August 1995 + * \author modified by Mitasova in August 1995 + * \author modofied by Mitasova in Nov 1999 (dmax fix) * + * \copyright + * (C) 1993-1999 by Helena Mitasova and the GRASS Development Team + * + * \copyright + * This program is free software under the + * GNU General Public License (>=v2). + * Read the file COPYING that comes with GRASS + * for details. */ #include @@ -24,21 +37,29 @@ #include -int IL_vector_input_data_2d(struct interp_params *params, struct Map_info *Map, /* input vector map */ - /* as z values may be used: 1) z coordinates in 3D file -> field = 0 - * 2) categories -> field > 0, zcol = NULL - * 3) attributes -> field > 0, zcol != NULL */ - int field, /* category field number */ - char *zcol, /* name of the column containing z values */ - char *scol, /* name of the column containing smooth values */ - struct tree_info *info, /* quadtree info */ - double *xmin, double *xmax, double *ymin, double *ymax, double *zmin, double *zmax, int *n_points, /* number of points used for interpolation */ - double *dmax) - -/* +/*! + * Insert into a quad tree + * * Inserts input data inside the region into a quad tree. Also translates * data. Returns number of segments in the quad tree. + * + * As z values may be used (in *Map*): + * - z coordinates in 3D file -> field = 0 + * - categories -> field > 0, zcol = NULL + * - attributes -> field > 0, zcol != NULL */ +int IL_vector_input_data_2d(struct interp_params *params, /*!< interpolation parameters */ + struct Map_info *Map, /*!< input vector map */ + int field, /*!< category field number */ + char *zcol, /*!< name of the column containing z values */ + char *scol, /*!< name of the column containing smooth values */ + struct tree_info *info, /*!< quadtree info */ + double *xmin, double *xmax, + double *ymin, double *ymax, + double *zmin, double *zmax, + int *n_points, /*!< number of points used for interpolation */ + double *dmax /*!< max distance between points */ + ) { double dmax2; /* max distance between points squared */ double c1, c2, c3, c4; Modified: grass/trunk/lib/rst/interp_float/write2d.c =================================================================== --- grass/trunk/lib/rst/interp_float/write2d.c 2015-09-07 04:23:32 UTC (rev 66137) +++ grass/trunk/lib/rst/interp_float/write2d.c 2015-09-07 04:47:34 UTC (rev 66138) @@ -1,16 +1,23 @@ - -/*- - * Written by H. Mitasova, I. Kosinovsky, D. Gerdes Fall 1993 - * University of Illinois - * US Army Construction Engineering Research Lab - * Copyright 1993, H. Mitasova (University of Illinois), - * I. Kosinovsky, (USA-CERL), and D.Gerdes (USA-CERL) +/*! + * \file secpar2d.c * - * modified by McCauley in August 1995 - * modified by Mitasova in August 1995 + * \author H. Mitasova, I. Kosinovsky, D. Gerdes Fall 1993 (original authors) + * \author modified by McCauley in August 1995 + * \author modified by Mitasova in August 1995 + * \author H. Mitasova (University of Illinois) + * \author I. Kosinovsky, (USA-CERL) + * \author D.Gerdes (USA-CERL) * + * \copyright + * (C) 1993-1995 by Helena Mitasova and the GRASS Development Team + * + * \copyright + * This program is free software under the + * GNU General Public License (>=v2). + * Read the file COPYING that comes with GRASS for details. */ + #include #include #include @@ -20,11 +27,17 @@ #include #include -/* + +/* parameter descriptions takes from a strange comment */ +/*! * Writes az,adx,...,adxy into appropriate place (depending on ngstc, nszc * and offset) in corresponding temp file */ -int IL_write_temp_2d(struct interp_params *params, int ngstc, int nszc, off_t offset2) /* begin. and end. column, offset */ +int IL_write_temp_2d(struct interp_params *params, + int ngstc, /*!< begin. column */ + int nszc, /*!< end. column */ + off_t offset2 /*!< offset */ + ) { int j; static FCELL *array_cell = NULL; From svn_grass at osgeo.org Mon Sep 7 00:46:29 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Mon, 7 Sep 2015 00:46:29 -0700 Subject: [GRASS-SVN] r66139 - grass/trunk/vector/v.cluster Message-ID: <20150907074629.815723900A3@trac.osgeo.org> Author: neteler Date: 2015-09-07 00:46:29 -0700 (Mon, 07 Sep 2015) New Revision: 66139 Modified: grass/trunk/vector/v.cluster/v_cluster_4_methods.png Log: v.cluster manual: shrink image to 600px width Modified: grass/trunk/vector/v.cluster/v_cluster_4_methods.png =================================================================== (Binary files differ) From svn_grass at osgeo.org Mon Sep 7 01:01:31 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Mon, 7 Sep 2015 01:01:31 -0700 Subject: [GRASS-SVN] r66140 - grass/branches/releasebranch_7_0/raster/r.water.outlet Message-ID: <20150907080131.C571A3900A3@trac.osgeo.org> Author: neteler Date: 2015-09-07 01:01:31 -0700 (Mon, 07 Sep 2015) New Revision: 66140 Removed: grass/branches/releasebranch_7_0/raster/r.water.outlet/flag.h grass/branches/releasebranch_7_0/raster/r.water.outlet/flag_clr_all.c grass/branches/releasebranch_7_0/raster/r.water.outlet/flag_create.c grass/branches/releasebranch_7_0/raster/r.water.outlet/flag_destroy.c grass/branches/releasebranch_7_0/raster/r.water.outlet/flag_get.c grass/branches/releasebranch_7_0/raster/r.water.outlet/flag_set.c grass/branches/releasebranch_7_0/raster/r.water.outlet/flag_unset.c Modified: grass/branches/releasebranch_7_0/raster/r.water.outlet/basin.h grass/branches/releasebranch_7_0/raster/r.water.outlet/main.c Log: r.water.outlet: Remove unused files and variables (trunk, r65984) Modified: grass/branches/releasebranch_7_0/raster/r.water.outlet/basin.h =================================================================== --- grass/branches/releasebranch_7_0/raster/r.water.outlet/basin.h 2015-09-07 07:46:29 UTC (rev 66139) +++ grass/branches/releasebranch_7_0/raster/r.water.outlet/basin.h 2015-09-07 08:01:31 UTC (rev 66140) @@ -1,52 +1,10 @@ -#include #include #include "ramseg.h" -#include "flag.h" -#define NODE struct _n_o_d_e_ -#define AR_SIZE 16 -#define AR_INCR 64 -#define ABS(x) (((x) < 0) ? -(x) : (x)) -#ifdef MIN - #undef MIN - #define MIN(x,y) (((x) < (y)) ? (x) : (y)) -#endif -#define MAX_RAM 1000000 -#define SROW 11 -#define SCOL 10 -#define SHORT int -#define NOMASK 1 -#define MIN_SLOPE .00001 -#define MIN_GRADIENT_DEGREES 1 -#define DEG_TO_RAD .017453293 /* pi / 180 */ -#define METER_TO_FOOT 3.281 -#define PAGE_BLOCK 512 -#define RITE 1 -#define LEFT 2 -#define NEITHER 0 +#define SHORT int -NODE { - int row, col; -}; - extern SHORT drain[3][3]; -extern SHORT updrain[3][3]; -extern char dr_mod[9]; -extern char dc_mod[9]; -extern char basin_name[GNAME_MAX], swale_name[GNAME_MAX], - half_name[GNAME_MAX], elev_name[GNAME_MAX], armsed_name[GNAME_MAX]; -extern int nrows, ncols, done, total; -extern int array_size, high_index, do_index; -extern char *drain_ptrs, ha_f, el_f, ar_f; -extern RAMSEG ba_seg, pt_seg, sl_seg; -extern int ncols_less_one, nrows_less_one; -extern NODE *to_do; -extern FILE *arm_fd, *fp; -extern FLAG *doner, *swale, *left; +extern int nrows, ncols; +extern char *drain_ptrs; +extern RAMSEG ba_seg, pt_seg; extern CELL *bas; -extern double half_res, diag, max_length, dep_slope; -extern struct Cell_head window; - -/* - GLOBAL CELL *dis, *alt, *wat, *asp, *bas, *haf, *r_h, *dep, *ril_buf; - */ Deleted: grass/branches/releasebranch_7_0/raster/r.water.outlet/flag.h =================================================================== --- grass/branches/releasebranch_7_0/raster/r.water.outlet/flag.h 2015-09-07 07:46:29 UTC (rev 66139) +++ grass/branches/releasebranch_7_0/raster/r.water.outlet/flag.h 2015-09-07 08:01:31 UTC (rev 66140) @@ -1,70 +0,0 @@ -/* flag.[ch] is a set of routines which will set up an array of bits - ** that allow the programmer to "flag" cells in a raster map. - ** - ** FLAG * - ** flag_create(nrows,ncols) - ** int nrows, ncols; - ** opens the structure flag. - ** The flag structure will be a two dimensional array of bits the - ** size of nrows by ncols. Will initalize flags to zero (unset). - ** - ** flag_destroy(flags) - ** FLAG *flags; - ** closes flags and gives the memory back to the system. - ** - ** flag_clear_all(flags) - ** FLAG *flags; - ** sets all values in flags to zero. - ** - ** flag_unset(flags, row, col) - ** FLAG *flags; - ** int row, col; - ** sets the value of (row, col) in flags to zero. - ** - ** flag_set(flags, row, col) - ** FLAG *flags; - ** int row, col; - ** will set the value of (row, col) in flags to one. - ** - ** int - ** flag_get(flags, row, col) - ** FLAG *flags; - ** int row, col; - ** returns the value in flags that is at (row, col). - ** - ** idea by Michael Shapiro - ** code by Chuck Ehlschlaeger - ** April 03, 1989 - */ -#define FLAG struct _flagsss_ -FLAG { - int nrows, ncols, leng; - unsigned char **array; -}; - -#define FLAG_UNSET(flags,row,col) \ - (flags)->array[(row)][(col)>>3] &= ~(1<<((col) & 7)) - -#define FLAG_SET(flags,row,col) \ - (flags)->array[(row)][(col)>>3] |= (1<<((col) & 7)) - -#define FLAG_GET(flags,row,col) \ - (flags)->array[(row)][(col)>>3] & (1<<((col) & 7)) - -/* flag_clr_all.c */ -int flag_clear_all(FLAG *); - -/* flag_create.c */ -FLAG *flag_create(int, int); - -/* flag_destroy.c */ -int flag_destroy(FLAG *); - -/* flag_get.c */ -int flag_get(FLAG *, int, int); - -/* flag_set.c */ -int flag_set(FLAG *, int, int); - -/* flag_unset.c */ -int flag_unset(FLAG *, int, int); Deleted: grass/branches/releasebranch_7_0/raster/r.water.outlet/flag_clr_all.c =================================================================== --- grass/branches/releasebranch_7_0/raster/r.water.outlet/flag_clr_all.c 2015-09-07 07:46:29 UTC (rev 66139) +++ grass/branches/releasebranch_7_0/raster/r.water.outlet/flag_clr_all.c 2015-09-07 08:01:31 UTC (rev 66140) @@ -1,15 +0,0 @@ -#include "flag.h" - -int flag_clear_all(FLAG * flags) -{ - register int r, c; - - r = flags->nrows - 1; - while (r--) { - c = flags->leng - 1; - while (c--) - flags->array[r][c] = 0; - } - - return 0; -} Deleted: grass/branches/releasebranch_7_0/raster/r.water.outlet/flag_create.c =================================================================== --- grass/branches/releasebranch_7_0/raster/r.water.outlet/flag_create.c 2015-09-07 07:46:29 UTC (rev 66139) +++ grass/branches/releasebranch_7_0/raster/r.water.outlet/flag_create.c 2015-09-07 08:01:31 UTC (rev 66140) @@ -1,39 +0,0 @@ -#include -#include "flag.h" - -FLAG *flag_create(int nrows, int ncols) -{ - unsigned char *temp; - FLAG *new_flag; - register int i; - - new_flag = (FLAG *) G_malloc(sizeof(FLAG)); - if (!new_flag) { - G_warning("Memory error in flag_create() at FLAG"); - return (NULL); - } - new_flag->nrows = nrows; - new_flag->ncols = ncols; - new_flag->leng = (ncols + 7) / 8; - new_flag->array = - (unsigned char **)G_malloc(nrows * sizeof(unsigned char *)); - if (!new_flag->array) { - G_warning("Memory error in flag_create() at array"); - G_free(new_flag); - return (NULL); - } - temp = - (unsigned char *)G_calloc(nrows * new_flag->leng, - sizeof(unsigned char)); - if (!temp) { - G_warning("Memory error in flag_create() at temp"); - G_free(new_flag->array); - G_free(new_flag); - return (NULL); - } - for (i = 0; i < nrows; i++) { - new_flag->array[i] = temp; - temp += new_flag->leng; - } - return (new_flag); -} Deleted: grass/branches/releasebranch_7_0/raster/r.water.outlet/flag_destroy.c =================================================================== --- grass/branches/releasebranch_7_0/raster/r.water.outlet/flag_destroy.c 2015-09-07 07:46:29 UTC (rev 66139) +++ grass/branches/releasebranch_7_0/raster/r.water.outlet/flag_destroy.c 2015-09-07 08:01:31 UTC (rev 66140) @@ -1,11 +0,0 @@ -#include -#include "flag.h" - -int flag_destroy(FLAG * flags) -{ - G_free(flags->array[0]); - G_free(flags->array); - G_free(flags); - - return 0; -} Deleted: grass/branches/releasebranch_7_0/raster/r.water.outlet/flag_get.c =================================================================== --- grass/branches/releasebranch_7_0/raster/r.water.outlet/flag_get.c 2015-09-07 07:46:29 UTC (rev 66139) +++ grass/branches/releasebranch_7_0/raster/r.water.outlet/flag_get.c 2015-09-07 08:01:31 UTC (rev 66140) @@ -1,6 +0,0 @@ -#include "flag.h" - -int flag_get(FLAG * flags, int row, int col) -{ - return (flags->array[row][col >> 3] & (1 << (col & 7))); -} Deleted: grass/branches/releasebranch_7_0/raster/r.water.outlet/flag_set.c =================================================================== --- grass/branches/releasebranch_7_0/raster/r.water.outlet/flag_set.c 2015-09-07 07:46:29 UTC (rev 66139) +++ grass/branches/releasebranch_7_0/raster/r.water.outlet/flag_set.c 2015-09-07 08:01:31 UTC (rev 66140) @@ -1,8 +0,0 @@ -#include "flag.h" - -int flag_set(FLAG * flags, int row, int col) -{ - flags->array[row][col >> 3] |= (1 << (col & 7)); - - return 0; -} Deleted: grass/branches/releasebranch_7_0/raster/r.water.outlet/flag_unset.c =================================================================== --- grass/branches/releasebranch_7_0/raster/r.water.outlet/flag_unset.c 2015-09-07 07:46:29 UTC (rev 66139) +++ grass/branches/releasebranch_7_0/raster/r.water.outlet/flag_unset.c 2015-09-07 08:01:31 UTC (rev 66140) @@ -1,8 +0,0 @@ -#include "flag.h" - -int flag_unset(FLAG * flags, int row, int col) -{ - flags->array[row][col >> 3] &= ~(1 << (col & 7)); - - return 0; -} Modified: grass/branches/releasebranch_7_0/raster/r.water.outlet/main.c =================================================================== --- grass/branches/releasebranch_7_0/raster/r.water.outlet/main.c 2015-09-07 07:46:29 UTC (rev 66139) +++ grass/branches/releasebranch_7_0/raster/r.water.outlet/main.c 2015-09-07 08:01:31 UTC (rev 66140) @@ -31,34 +31,23 @@ #include "basin.h" #include "outletP.h" -SHORT drain[3][3] = {{ 7,6,5 },{ 8,-17,4 },{ 1,2,3 }}; -SHORT updrain[3][3] = {{ 3,2,1 },{ 4,-17,8 },{ 5,6,7 }}; -char dr_mod[9] = {0,1,1,1,0,-1,-1,-1,0}; -char dc_mod[9] = {0,1,0,-1,-1,-1,0,1,1}; -char basin_name[GNAME_MAX], swale_name[GNAME_MAX], - half_name[GNAME_MAX], elev_name[GNAME_MAX], armsed_name[GNAME_MAX]; -int nrows, ncols, done, total; -int array_size, high_index, do_index; -char *drain_ptrs, ha_f, el_f, ar_f; -RAMSEG ba_seg, pt_seg, sl_seg; -int ncols_less_one, nrows_less_one; -NODE *to_do; -FILE *arm_fd, *fp; -FLAG *doner, *swale, *left; +SHORT drain[3][3] = {{ 7,6,5 },{ 8,-17,4 },{ 1,2,3 }}; +int nrows, ncols; +char *drain_ptrs; +RAMSEG ba_seg, pt_seg; CELL *bas; -double half_res, diag, max_length, dep_slope; -struct Cell_head window; int main(int argc, char *argv[]) { - double N, E; - int row, col, basin_fd, drain_fd; - CELL *cell_buf; - char drain_name[GNAME_MAX]; struct GModule *module; struct { struct Option *input, *output, *coords; } opt; + double N, E; + int row, col, basin_fd, drain_fd; + CELL *cell_buf; + char drain_name[GNAME_MAX], basin_name[GNAME_MAX]; + struct Cell_head window; G_gisinit(argv[0]); @@ -103,9 +92,6 @@ nrows = Rast_window_rows(); ncols = Rast_window_cols(); - total = nrows * ncols; - nrows_less_one = nrows - 1; - ncols_less_one = ncols - 1; drain_fd = Rast_open_old(drain_name, ""); drain_ptrs = @@ -116,8 +102,6 @@ for (row = 0; row < nrows; row++) { Rast_get_c_row(drain_fd, cell_buf, row); for (col = 0; col < ncols; col++) { - if (cell_buf[col] == 0) - total--; drain_ptrs[SEG_INDEX(pt_seg, row, col)] = cell_buf[col]; } } From svn_grass at osgeo.org Mon Sep 7 01:09:13 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Mon, 7 Sep 2015 01:09:13 -0700 Subject: [GRASS-SVN] r66141 - grass/trunk/vector/v.cluster Message-ID: <20150907080913.7C4903900A3@trac.osgeo.org> Author: martinl Date: 2015-09-07 01:09:13 -0700 (Mon, 07 Sep 2015) New Revision: 66141 Modified: grass/trunk/vector/v.cluster/main.c grass/trunk/vector/v.cluster/v.cluster.html Log: v.cluster: module description wording options in bold (manual cosmetics) Modified: grass/trunk/vector/v.cluster/main.c =================================================================== --- grass/trunk/vector/v.cluster/main.c 2015-09-07 08:01:31 UTC (rev 66140) +++ grass/trunk/vector/v.cluster/main.c 2015-09-07 08:09:13 UTC (rev 66141) @@ -90,7 +90,7 @@ G_add_keyword(_("point cloud")); G_add_keyword(_("cluster")); G_add_keyword(_("clump")); - module->description = _("Cluster identification"); + module->description = _("Performs cluster identification."); /* Define the different options as defined in gis.h */ input = G_define_standard_option(G_OPT_V_INPUT); Modified: grass/trunk/vector/v.cluster/v.cluster.html =================================================================== --- grass/trunk/vector/v.cluster/v.cluster.html 2015-09-07 08:01:31 UTC (rev 66140) +++ grass/trunk/vector/v.cluster/v.cluster.html 2015-09-07 08:09:13 UTC (rev 66141) @@ -3,21 +3,21 @@ v.cluster partitions a point cloud into clusters or clumps.

    -If the minimum number of points is not specified with the min +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 +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 +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 +distance or method=density if clusters should be created separately for each observed density (distance to the farthest neighbor).

    dbscan

    @@ -31,14 +31,14 @@

    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 -cluster has at least min -1 neighbors within distance. +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 +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 From svn_grass at osgeo.org Mon Sep 7 10:28:32 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Mon, 7 Sep 2015 10:28:32 -0700 Subject: [GRASS-SVN] r66142 - in grass/trunk/lib/python/pygrass: raster rpc vector Message-ID: <20150907172832.1C7403901C5@trac.osgeo.org> Author: huhabla Date: 2015-09-07 10:28:31 -0700 (Mon, 07 Sep 2015) New Revision: 66142 Modified: grass/trunk/lib/python/pygrass/raster/__init__.py grass/trunk/lib/python/pygrass/rpc/__init__.py grass/trunk/lib/python/pygrass/vector/__init__.py grass/trunk/lib/python/pygrass/vector/abstract.py grass/trunk/lib/python/pygrass/vector/table.py Log: pygrass: Using name and mapset in the rpc module, fixed two tests, editor removed white spaces Modified: grass/trunk/lib/python/pygrass/raster/__init__.py =================================================================== --- grass/trunk/lib/python/pygrass/raster/__init__.py 2015-09-07 08:09:13 UTC (rev 66141) +++ grass/trunk/lib/python/pygrass/raster/__init__.py 2015-09-07 17:28:31 UTC (rev 66142) @@ -88,16 +88,12 @@ 'A test map' >>> elev.hist.keyword 'This is a test map' - + >>> attrs = list(elev.hist) >>> attrs[0] ('name', u'Raster_test_map') - >>> attrs[1] - ('mapset', 'user1') >>> attrs[2] ('mtype', '') - >>> attrs[3] - ('creator', 'soeren') Each Raster map have an attribute call ``cats`` that allow user to interact with the raster categories. Modified: grass/trunk/lib/python/pygrass/rpc/__init__.py =================================================================== --- grass/trunk/lib/python/pygrass/rpc/__init__.py 2015-09-07 08:09:13 UTC (rev 66141) +++ grass/trunk/lib/python/pygrass/rpc/__init__.py 2015-09-07 17:28:31 UTC (rev 66142) @@ -23,6 +23,7 @@ import grass.lib.gis as libgis from base import RPCServerBase from grass.pygrass.gis.region import Region +import grass.pygrass.utils as utils import logging ############################################################################### @@ -38,26 +39,32 @@ def _get_raster_image_as_np(lock, conn, data): - """Convert a raster map into an image and return + """Convert a raster map into an image and return a numpy array with RGB or Gray values. - + :param lock: A multiprocessing.Lock instance :param conn: A multiprocessing.Pipe instance used to send True or False :param data: The list of data entries [function_id, raster_name, extent, color] """ array = None try: - raster_name = data[1] - extent = data[2] - color = data[3] + name = data[1] + mapset = data[2] + extent = data[3] + color = data[4] - rast = RasterRow(raster_name) - + mapset = utils.get_mapset_raster(name, mapset) + + if not mapset: + raise ValueError("Unable to find raster map <%s>"%(name)) + + rast = RasterRow(name, mapset) + if rast.exist(): - + reg = Region() - reg.from_rast(raster_name) - + reg.from_rast(name) + if extent is not None: if "north" in extent: reg.north = extent["north"] @@ -73,27 +80,34 @@ reg.cols = extent["cols"] reg.adjust() - array = raster2numpy_img(raster_name, reg, color) + array = raster2numpy_img(name, reg, color) except: raise finally: conn.send(array) - + def _get_vector_table_as_dict(lock, conn, data): """Get the table of a vector map layer as dictionary :param lock: A multiprocessing.Lock instance :param conn: A multiprocessing.Pipe instance used to send True or False - :param data: The list of data entries [function_id, name, where] + :param data: The list of data entries [function_id, name, mapset, where] """ ret = None try: name = data[1] - where = data[2] - layer = VectorTopo(name) - - if layer.exist() is True: + mapset = data[2] + where = data[3] + + mapset = utils.get_mapset_vector(name, mapset) + + if not mapset: + raise ValueError("Unable to find vector map <%s>"%(name)) + + layer = VectorTopo(name, mapset) + + if layer.exist() is True: layer.open("r") columns = None table = None @@ -101,7 +115,7 @@ columns = layer.table.columns table = layer.table_to_dict(where=where) layer.close() - + ret = {} ret["table"] = table ret["columns"] = columns @@ -112,26 +126,32 @@ def _get_vector_features_as_wkb_list(lock, conn, data): """Return vector layer features as wkb list - + supported feature types: point, centroid, line, boundary, area :param lock: A multiprocessing.Lock instance :param conn: A multiprocessing.Pipe instance used to send True or False - :param data: The list of data entries [function_id,name,extent, + :param data: The list of data entries [function_id,name,mapset,extent, feature_type, field] """ wkb_list = None try: name = data[1] - extent = data[2] - feature_type = data[3] - field = data[4] + mapset = data[2] + extent = data[3] + feature_type = data[4] + field = data[5] bbox = None - - layer = VectorTopo(name) - + + mapset = utils.get_mapset_vector(name, mapset) + + if not mapset: + raise ValueError("Unable to find vector map <%s>"%(name)) + + layer = VectorTopo(name, mapset) + if layer.exist() is True: if extent is not None: bbox = basic.Bbox(north=extent["north"], @@ -144,7 +164,7 @@ wkb_list = layer.areas_to_wkb_list(bbox=bbox, field=field) else: wkb_list = layer.features_to_wkb_list(bbox=bbox, - feature_type=feature_type, + feature_type=feature_type, field=field) layer.close() except: @@ -219,7 +239,7 @@ """ def __init__(self): RPCServerBase.__init__(self) - + def start_server(self): """This function must be re-implemented in the subclasses """ @@ -229,12 +249,12 @@ self.server_conn)) self.server.daemon = True self.server.start() - - def get_raster_image_as_np(self, name, extent=None, color="RGB"): + + def get_raster_image_as_np(self, name, mapset=None, extent=None, color="RGB"): """Return the attribute table of a vector map as dictionary. - + See documentation of: pygrass.raster.raster2numpy_img - + Usage: .. code-block:: python @@ -244,39 +264,34 @@ >>> ret = provider.get_raster_image_as_np(name=test_raster_name) >>> len(ret) 64 - - >>> extent = {"north":30, "south":10, "east":30, "west":10, + + >>> extent = {"north":30, "south":10, "east":30, "west":10, ... "rows":2, "cols":2} - >>> ret = provider.get_raster_image_as_np(name=test_raster_name, + >>> ret = provider.get_raster_image_as_np(name=test_raster_name, ... extent=extent) >>> len(ret) 16 - >>> ret # doctest: +ELLIPSIS +NORMALIZE_WHITESPACE - array([169, 255, 0, 255, 255, 0, 46, 255, 208, 255, - 0, 255, 255, 0, 84, 255], dtype=uint8) - + >>> extent = {"rows":3, "cols":1} - >>> ret = provider.get_raster_image_as_np(name=test_raster_name, + >>> ret = provider.get_raster_image_as_np(name=test_raster_name, ... extent=extent) >>> len(ret) 12 - >>> ret # doctest: +ELLIPSIS +NORMALIZE_WHITESPACE - array([255, 0, 7, 255, 255, 0, 84, 255, 255, - 0, 123, 255], dtype=uint8) + >>> provider.stop() - + .. """ self.check_server() self.client_conn.send([RPCDefs.GET_RASTER_IMAGE_AS_NP, - name, extent, color]) + name, mapset, extent, color]) return self.safe_receive("get_raster_image_as_np") - - def get_vector_table_as_dict(self, name, where=None): + + def get_vector_table_as_dict(self, name, mapset=None, where=None): """Return the attribute table of a vector map as dictionary. - + See documentation of: pygrass.vector.VectorTopo::table_to_dict - + Usage: .. code-block:: python @@ -297,26 +312,26 @@ >>> provider.get_vector_table_as_dict(name="no_map", ... where="value > 1") >>> provider.stop() - + .. """ self.check_server() self.client_conn.send([RPCDefs.GET_VECTOR_TABLE_AS_DICT, - name, where]) + name, mapset, where]) return self.safe_receive("get_vector_table_as_dict") - def get_vector_features_as_wkb_list(self, name, extent=None, + def get_vector_features_as_wkb_list(self, name, mapset=None, extent=None, feature_type="point", field=1): """Return the features of a vector map as wkb list. - + :param extent: A dictionary of {"north":double, "south":double, "east":double, "west":double} :param feature_type: point, centroid, line, boundary or area - + See documentation: pygrass.vector.VectorTopo::features_to_wkb_list pygrass.vector.VectorTopo::areas_to_wkb_list - + Usage: .. code-block:: python @@ -392,14 +407,14 @@ 17 None 41 15 None 41 16 None 41 - + >>> provider.stop() - + .. """ self.check_server() self.client_conn.send([RPCDefs.GET_VECTOR_FEATURES_AS_WKB, - name, extent, feature_type, field]) + name, mapset, extent, feature_type, field]) return self.safe_receive("get_vector_features_as_wkb_list") @@ -411,7 +426,7 @@ Module("r.mapcalc", expression="%s = row() + (10 * col())"%(test_raster_name), overwrite=True) utils.create_test_vector_map(test_vector_name) - + doctest.testmod() """Remove the generated maps, if exist""" Modified: grass/trunk/lib/python/pygrass/vector/__init__.py =================================================================== --- grass/trunk/lib/python/pygrass/vector/__init__.py 2015-09-07 08:09:13 UTC (rev 66141) +++ grass/trunk/lib/python/pygrass/vector/__init__.py 2015-09-07 17:28:31 UTC (rev 66142) @@ -577,34 +577,34 @@ if release: libvect.Vect_set_release_support(self.c_mapinfo) super(VectorTopo, self).close(build=build) - + @must_be_open def table_to_dict(self, where=None): """Return the attribute table as a dictionary with the category as keys - + The columns have the order of the self.table.columns.names() list. - + Examples - + >>> from grass.pygrass.vector import VectorTopo >>> from grass.pygrass.vector.basic import Bbox >>> test_vect = VectorTopo(test_vector_name) >>> test_vect.open('r') - + >>> test_vect.table_to_dict() {1: [1, u'point', 1.0], 2: [2, u'line', 2.0], 3: [3, u'centroid', 3.0]} - + >>> test_vect.table_to_dict(where="value > 2") {3: [3, u'centroid', 3.0]} >>> test_vect.table_to_dict(where="value > 0") {1: [1, u'point', 1.0], 2: [2, u'line', 2.0], 3: [3, u'centroid', 3.0]} - + >>> test_vect.table.filters.get_sql() u'SELECT cat,name,value FROM vector_doctest_map WHERE value > 0 ORDER BY cat;' """ - + if self.table is not None: table_dict = {} # Get the category index @@ -622,24 +622,24 @@ # Generate the dictionary for entry in l: table_dict[entry[cat_index]] = list(entry) - + return(table_dict) - + return None - + @must_be_open def features_to_wkb_list(self, bbox=None, feature_type="point", field=1): - """Return all features of type point, line, boundary or centroid + """Return all features of type point, line, boundary or centroid as a list of Well Known Binary representations (WKB) - (id, cat, wkb) triplets located in a specific + (id, cat, wkb) triplets located in a specific bounding box. - - :param bbox: The boundingbox to search for features, + + :param bbox: The boundingbox to search for features, if bbox=None the boundingbox of the whole vector map layer is used - + :type bbox: grass.pygrass.vector.basic.Bbox - + :param feature_type: The type of feature that should be converted to the Well Known Binary (WKB) format. Supported are: 'point' -> libvect.GV_POINT 1 @@ -647,23 +647,23 @@ 'boundary' -> libvect.GV_BOUNDARY 3 'centroid' -> libvect.GV_CENTROID 4 :type type: string - + :param field: The category field :type field: integer - - :return: A list of triplets, or None if nothing was found - + + :return: A list of triplets, or None if nothing was found + The well known binary are stored in byte arrays. - + Examples: - + >>> from grass.pygrass.vector import VectorTopo >>> from grass.pygrass.vector.basic import Bbox >>> test_vect = VectorTopo(test_vector_name) >>> test_vect.open('r') >>> bbox = Bbox(north=20, south=-1, east=20, west=-1) - >>> result = test_vect.features_to_wkb_list(bbox=bbox, + >>> result = test_vect.features_to_wkb_list(bbox=bbox, ... feature_type="point") >>> len(result) 3 @@ -674,7 +674,7 @@ (2, 1, 21) (3, 1, 21) - >>> result = test_vect.features_to_wkb_list(bbox=None, + >>> result = test_vect.features_to_wkb_list(bbox=None, ... feature_type="line") >>> len(result) 3 @@ -685,16 +685,16 @@ (5, 2, 57) (6, 2, 57) - >>> result = test_vect.features_to_wkb_list(bbox=bbox, + >>> result = test_vect.features_to_wkb_list(bbox=bbox, ... feature_type="boundary") >>> len(result) 11 - - >>> result = test_vect.features_to_wkb_list(bbox=None, + + >>> result = test_vect.features_to_wkb_list(bbox=None, ... feature_type="centroid") >>> len(result) 4 - + >>> for entry in result: ... f_id, cat, wkb = entry ... print(f_id, cat, len(wkb)) @@ -703,32 +703,32 @@ (20, 3, 21) (21, 3, 21) - >>> result = test_vect.features_to_wkb_list(bbox=bbox, + >>> result = test_vect.features_to_wkb_list(bbox=bbox, ... feature_type="blub") Traceback (most recent call last): ... GrassError: Unsupported feature type , supported are >>> test_vect.close() - - + + """ - + supported = ['point', 'line', 'boundary', 'centroid'] - + if feature_type.lower() not in supported: raise GrassError("Unsupported feature type <%s>, "\ - "supported are <%s>"%(feature_type, + "supported are <%s>"%(feature_type, ",".join(supported))) - + if bbox is None: bbox = self.bbox() - - bboxlist = self.find_by_bbox.geos(bbox, type=feature_type.lower(), + + bboxlist = self.find_by_bbox.geos(bbox, type=feature_type.lower(), bboxlist_only = True) - + if bboxlist is not None and len(bboxlist) > 0: - + l = [] line_p = libvect.line_pnts() line_c = libvect.line_cats() @@ -743,7 +743,7 @@ if not barray: raise GrassError(_("Unable to read line of feature %i"%(f_id))) - ok = libvect.Vect_cat_get(ctypes.byref(line_c), field, + ok = libvect.Vect_cat_get(ctypes.byref(line_c), field, ctypes.byref(cat)) if ok < 1: pcat = None @@ -751,32 +751,33 @@ pcat = cat.value l.append((f_id, pcat, ctypes.string_at(barray, size.value))) + libgis.G_free(barray) return l return None - + @must_be_open def areas_to_wkb_list(self, bbox=None, field=1): - """Return all features of type point, line, boundary or centroid + """Return all features of type point, line, boundary or centroid as a list of Well Known Binary representations (WKB) - (id, cat, wkb) triplets located in a specific + (id, cat, wkb) triplets located in a specific bounding box. - - :param bbox: The boundingbox to search for features, + + :param bbox: The boundingbox to search for features, if bbox=None the boundingbox of the whole vector map layer is used - + :type bbox: grass.pygrass.vector.basic.Bbox - + :param field: The centroid category field :type field: integer - - :return: A list of triplets, or None if nothing was found - + + :return: A list of triplets, or None if nothing was found + The well known binary are stored in byte arrays. - + Examples: - + >>> from grass.pygrass.vector import VectorTopo >>> from grass.pygrass.vector.basic import Bbox >>> test_vect = VectorTopo(test_vector_name) @@ -806,39 +807,40 @@ (4, 3, 141) >>> test_vect.close() - - + + """ if bbox is None: bbox = self.bbox() - + bboxlist = self.find_by_bbox.areas(bbox, bboxlist_only = True) - + if bboxlist is not None and len(bboxlist) > 0: - + l = [] line_c = libvect.line_cats() size = ctypes.c_size_t() cat = ctypes.c_int() for a_id in bboxlist.ids: - barray = libvect.Vect_read_area_to_wkb(self.c_mapinfo, - a_id, + barray = libvect.Vect_read_area_to_wkb(self.c_mapinfo, + a_id, ctypes.byref(size)) if not barray: raise GrassError(_("Unable to read area with id %i"%(a_id))) pcat = None - c_ok = libvect.Vect_get_area_cats(self.c_mapinfo, a_id, + c_ok = libvect.Vect_get_area_cats(self.c_mapinfo, a_id, ctypes.byref(line_c)) if c_ok == 0: # Centroid found - - ok = libvect.Vect_cat_get(ctypes.byref(line_c), field, + + ok = libvect.Vect_cat_get(ctypes.byref(line_c), field, ctypes.byref(cat)) if ok > 0: pcat = cat.value l.append((a_id, pcat, ctypes.string_at(barray, size.value))) + libgis.G_free(barray) return l return None Modified: grass/trunk/lib/python/pygrass/vector/abstract.py =================================================================== --- grass/trunk/lib/python/pygrass/vector/abstract.py 2015-09-07 08:09:13 UTC (rev 66141) +++ grass/trunk/lib/python/pygrass/vector/abstract.py 2015-09-07 17:28:31 UTC (rev 66142) @@ -96,8 +96,6 @@ if not utils.is_clean_name(newname): str_err = _("Map name {0} not valid") raise ValueError(str_err.format(newname)) - if self.exist(): - self.rename(newname) self._name = newname name = property(fget=_get_name, fset=_set_name, Modified: grass/trunk/lib/python/pygrass/vector/table.py =================================================================== --- grass/trunk/lib/python/pygrass/vector/table.py 2015-09-07 08:09:13 UTC (rev 66141) +++ grass/trunk/lib/python/pygrass/vector/table.py 2015-09-07 17:28:31 UTC (rev 66142) @@ -47,8 +47,9 @@ >>> import os >>> new_path2 = os.path.join(gisenv()['GISDBASE'], gisenv()['LOCATION_NAME'], ... gisenv()['MAPSET'], 'sqlite', 'sqlite.db') - >>> new_path == new_path2 + >>> new_path.replace("//","/") == new_path2.replace("//","/") True + """ if "$" not in path: return path From svn_grass at osgeo.org Mon Sep 7 13:11:46 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Mon, 7 Sep 2015 13:11:46 -0700 Subject: [GRASS-SVN] r66143 - in grass/trunk/lib/rst: . data interp_float qtree Message-ID: <20150907201146.D6AAF3900A3@trac.osgeo.org> Author: wenzeslaus Date: 2015-09-07 13:11:46 -0700 (Mon, 07 Sep 2015) New Revision: 66143 Added: grass/trunk/lib/rst/rst.dox Removed: grass/trunk/lib/rst/data/DESCRIPTION.DATA grass/trunk/lib/rst/interp_float/DESCRIPTION.INTERP grass/trunk/lib/rst/qtree/DESCRIPTION.TREE Modified: grass/trunk/lib/rst/data/dataquad.c grass/trunk/lib/rst/data/dataquad.h grass/trunk/lib/rst/qtree/qtree.c grass/trunk/lib/rst/qtree/qtree.h Log: dox: Doxygen documentation for lib rst qtree and data Using existing documentation in source code or text files plus some observations. Also creating a general library page. Deleted: grass/trunk/lib/rst/data/DESCRIPTION.DATA =================================================================== --- grass/trunk/lib/rst/data/DESCRIPTION.DATA 2015-09-07 17:28:31 UTC (rev 66142) +++ grass/trunk/lib/rst/data/DESCRIPTION.DATA 2015-09-07 20:11:46 UTC (rev 66143) @@ -1,135 +0,0 @@ -/* updated by Mitasova Nov. 96 */ - -DATA STRUCTURES: ----------------- - -#define NW 1 -#define NE 2 -#define SW 3 -#define SE 4 - -/* added sm for spatially variable smoothing by Mitasova 10.96 */ -struct triple { - double x; - double y; - double z; - double sm; -}; - -struct quaddata { - double x_orig; - double y_orig; - double xmax; - double ymax; - int n_rows; - int n_cols; - int n_points; - struct triple *points; -}; - - - - -FUNCTIONS: ----------- - -struct triple * -quad_point_new (x, y, z, sm) - double x; - double y; - double z; - double sm; -/* Initializes POINT structure with given arguments, -s was added for variable smoothing 10.96 helena */ - - - - -struct quaddata * -quad_data_new(x_or,y_or,xmax,ymax,rows,cols,n_points,kmax) - double x_or; - double y_or; - double xmax; - double ymax; - int rows; - int cols; - int n_points; -/* Initializes QUADDATA structure with given arguments*/ - - - - - - -int -quad_compare (point, data) - struct triple *point; - struct quaddata *data; -/* returns the quadrant the point should be inserted in */ -/* called by divide() */ - - - - - - -int -quad_add_data (point, data, dmin) - struct triple *point; - struct quaddata *data; - double dmin; -/* Adds POINT to a given DATA . Called by tree function insert_quad() */ -/* and by data function quad_divide_data() */ - - - - - - -int -quad_intersect (data_inter, data) - struct quaddata *data_inter; - struct quaddata *data; -/* Checks if region defined by DATA intersects the region defined - by data_inter. Called by tree function MT_region_data() */ - - - - - -int quad_division_check(data,kmax) - struct quaddata *data; - int kmax; -/* Checks if DATA needs to be divided. If data->points is empty, - returns -1; if its not empty but there aren't enough points - in DATA for division returns 0. Othervise (if its not empty and - there are too many points) returns 1. Called by MT_insert() */ - - - - - - -struct quaddata **quad_divide_data(data,kmax,dmin) - struct quaddata *data; - int kmax; - double dmin; -/* Divides DATA into 4 new datas reinserting data->points in - them by calling data function quad_compare() to detrmine - were to insert. Called by MT_divide(). Returns array of 4 new datas */ - - - - - - - -int quad_get_points(data_inter,data,MAX) - struct quaddata *data_inter; - struct quaddata *data; - int MAX; -/* Gets such points from DATA that lie within region determined by - data_inter. Called by tree function region_data(). */ - - - Modified: grass/trunk/lib/rst/data/dataquad.c =================================================================== --- grass/trunk/lib/rst/data/dataquad.c 2015-09-07 17:28:31 UTC (rev 66142) +++ grass/trunk/lib/rst/data/dataquad.c 2015-09-07 20:11:46 UTC (rev 66143) @@ -1,22 +1,41 @@ - -/*- - * Written by H. Mitasova, I. Kosinovsky, D. Gerdes Fall 1993 - * University of Illinois - * US Army Construction Engineering Research Lab - * Copyright 1993, H. Mitasova (University of Illinois), - * I. Kosinovsky, (USA-CERL), and D.Gerdes (USA-CERL) +/*! + * \file qtree.c * - * Modified by H.Mitasova November 1996 to include variable smoothing - * + * \author + * H. Mitasova, I. Kosinovsky, D. Gerdes, Fall 1993, + * University of Illinois and + * US Army Construction Engineering Research Lab + * + * \author H. Mitasova (University of Illinois), + * \author I. Kosinovsky, (USA-CERL) + * \author D.Gerdes (USA-CERL) + * + * \author modified by H. Mitasova, November 1996 (include variable smoothing) + * + * \copyright + * (C) 1993-1996 by Helena Mitasova and the GRASS Development Team + * + * \copyright + * This program is free software under the + * GNU General Public License (>=v2). + * Read the file COPYING that comes with GRASS for details. */ + #include #include #include -/* sm added to point structure */ + +/*! + * Initialize point structure with given arguments + * + * This is a constructor of the point structure and it allocates memory. + * + * \note + * Smoothing is part of the point structure + */ struct triple *quad_point_new(double x, double y, double z, double sm) -/* Initializes POINT structure with given arguments */ { struct triple *point; @@ -33,10 +52,16 @@ } +/*! + * Initialize quaddata structure with given arguments + * + * This is a constructor of the quaddata structure and it allocates memory. + * It also creates (and allocates memory for) the given number of points + * (given by *kmax*). The point attributes are set to zero. + */ struct quaddata *quad_data_new(double x_or, double y_or, double xmax, double ymax, int rows, int cols, int n_points, int kmax) -/* Initializes QUADDATA structure with given arguments */ { struct quaddata *data; int i; @@ -67,12 +92,10 @@ } - - - +/*! + * Return the quadrant the point should be inserted in + */ int quad_compare(struct triple *point, struct quaddata *data) -/* returns the quadrant the point should be inserted in */ -/* called by divide() */ { int cond1, cond2, cond3, cond4, rows, cols; double ew_res, ns_res; @@ -114,9 +137,10 @@ } +/*! + * Add point to a given *data*. + */ int quad_add_data(struct triple *point, struct quaddata *data, double dmin) -/* Adds POINT to a given DATA . Called by tree function insert_quad() */ -/* and by data function quad_divide_data() */ { int n, i, cond; double xx, yy, r; @@ -147,11 +171,13 @@ } - - +/*! + * Check intersection of two quaddata structures + * + * Checks if region defined by *data* intersects the region defined + * by *data_inter*. + */ int quad_intersect(struct quaddata *data_inter, struct quaddata *data) -/* Checks if region defined by DATA intersects the region defined - by data_inter. Called by tree function MT_region_data() */ { double xmin, xmax, ymin, ymax; @@ -178,13 +204,19 @@ } - - +/*! + * Check if *data* needs to be divided + * + * Checks if *data* needs to be divided. If `data->points` is empty, + * returns -1; if its not empty but there aren't enough points + * in *data* for division returns 0. Otherwise (if its not empty and + * there are too many points) returns 1. + * + * \returns 1 if division is needed + * \returns 0 if division is not needed + * \returns -1 if there are no points + */ int quad_division_check(struct quaddata *data, int kmax) -/* Checks if DATA needs to be divided. If data->points is empty, - returns -1; if its not empty but there aren't enough points - in DATA for division returns 0. Othervise (if its not empty and - there are too many points) returns 1. Called by MT_insert() */ { if (data->points == NULL) return -1; @@ -195,12 +227,15 @@ } - +/*! + * Divide *data* into four new ones + * + * Divides *data* into 4 new datas reinserting `data->points` in + * them by calling data function `quad_compare()` to determine + * were to insert. Returns array of 4 new datas (allocates memory). + */ struct quaddata **quad_divide_data(struct quaddata *data, int kmax, double dmin) -/* Divides DATA into 4 new datas reinserting data->points in - them by calling data function quad_compare() to detrmine - were to insert. Called by MT_divide(). Returns array of 4 new datas */ { struct quaddata **datas; int cols1, cols2, rows1, rows2, i; /*j1, j2, jmin = 0; */ @@ -280,12 +315,12 @@ } - - +/*! + * Gets such points from *data* that lie within region determined by + * *data_inter*. Called by tree function `region_data()`. + */ int quad_get_points(struct quaddata *data_inter, struct quaddata *data, int MAX) -/* Gets such points from DATA that lie within region determined by - data_inter. Called by tree function region_data(). */ { int i, ind; int n = 0; Modified: grass/trunk/lib/rst/data/dataquad.h =================================================================== --- grass/trunk/lib/rst/data/dataquad.h 2015-09-07 17:28:31 UTC (rev 66142) +++ grass/trunk/lib/rst/data/dataquad.h 2015-09-07 20:11:46 UTC (rev 66143) @@ -1,12 +1,24 @@ - -/*- - * Written by H. Mitasova, I. Kosinovsky, D. Gerdes Fall 1992 - * University of Illinois - * US Army Construction Engineering Research Lab - * Copyright 1992, H. Mitasova (University of Illinois), - * I. Kosinovsky, (USA-CERL), and D.Gerdes (USA-CERL) +/*! + * \file qtree.c * - * Modified by H.Mitasova November 1996 to include variable smoothing + * \author + * H. Mitasova, I. Kosinovsky, D. Gerdes, Fall 1993, + * University of Illinois and + * US Army Construction Engineering Research Lab + * + * \author H. Mitasova (University of Illinois), + * \author I. Kosinovsky, (USA-CERL) + * \author D.Gerdes (USA-CERL) + * + * \author modified by H. Mitasova, November 1996 (include variable smoothing) + * + * \copyright + * (C) 1993-1996 by Helena Mitasova and the GRASS Development Team + * + * \copyright + * This program is free software under the + * GNU General Public License (>=v2). + * Read the file COPYING that comes with GRASS for details. */ @@ -19,12 +31,18 @@ #define SW 3 #define SE 4 + +/*! + * Point structure to keep coordinates + * + * It also contains smoothing for the given point. + */ struct triple { double x; double y; double z; - double sm; /* structure extended to incl. variable smoothing */ + double sm; /*!< variable smoothing */ }; struct quaddata Deleted: grass/trunk/lib/rst/interp_float/DESCRIPTION.INTERP =================================================================== --- grass/trunk/lib/rst/interp_float/DESCRIPTION.INTERP 2015-09-07 17:28:31 UTC (rev 66142) +++ grass/trunk/lib/rst/interp_float/DESCRIPTION.INTERP 2015-09-07 20:11:46 UTC (rev 66143) @@ -1,28 +0,0 @@ - DESCRIPTION OF INTERPOLATION LIBRARY - - written by Irina Kosinovsky 1993 - updated by Mitasova Nov. 96 - NEEDS UPDATE FOR spatially variable smoothing and other changes - done by Helena in 1997 - -Note by Irina in 1993: Below is the collection of functions -needed for interpolation programs. It should be -divided into several libraries to provide better -functionality. - -V. Petras (2015): Removed all functions which are documented elsewhere -in source code (Doxygen style) or clearly deleted. This file can be -deleted after resolving IL_input_data_2d function. -The TODO for changes 1997 still applies. - -int -IL_input_data_2d(params,info,xmin,xmax,ymin,ymax,zmin,zmax,MAXPOINTS,n_points) - struct interp_params *params; - struct tree_info *info; /* quadtree info */ - double *xmin,*xmax,*ymin,*ymax,*zmin,*zmax; - int maxpoints; /* max number of points per segment for interpolation */ - int *n_points; /* number of points used for interpolation */ - -Inserts input data inside the region into a quad tree. -Also translates data. -Returns number of segments in the quad tree. Deleted: grass/trunk/lib/rst/qtree/DESCRIPTION.TREE =================================================================== --- grass/trunk/lib/rst/qtree/DESCRIPTION.TREE 2015-09-07 17:28:31 UTC (rev 66142) +++ grass/trunk/lib/rst/qtree/DESCRIPTION.TREE 2015-09-07 20:11:46 UTC (rev 66143) @@ -1,128 +0,0 @@ -/* updated by Mitasova Nov. 96, no changes necessary */ - -DATa STRUCTURES: ----------------- - -#define VOID_T char - -struct multfunc { - int (*compare) (); - VOID_T **(*divide_data) (); - int (*add_data) (); - int (*intersect) (); - int (*division_check) (); - int (*get_points) (); -}; - -struct tree_info { - struct multfunc *functions; - double dmin; - int kmax; - struct multtree *root; -}; - -struct multtree { - VOID_T *data; - struct multtree **leafs; - struct multtree *parent; - int multant; -}; - - - - -FUNCTIONS: ----------- - -struct multfunc * MT_functions_new(compare,divide_data,add_data, - intersect,division_check,get_points) - int (*compare) (); - VOID_T **(*divide_data) (); - int (*add_data) (); - int (*intersect) (); - int (*division_check) (); - int (*get_points) (); -/* Initializes FUNCTIONS structure with given arguments*/ - - - - -struct tree_info * MT_tree_info_new (root,functions,dmin,kmax) - struct multtree *root; - struct multfunc *functions; - double dmin; - int kmax; -/*Initializes TREE_INFO using given arguments*/ - - - - - -struct multtree * MT_tree_new (data, leafs, parent, multant) - VOID_T *data; - struct multtree **leafs; - struct multtree *parent; - int multant; -/*Initializes TREE using given arguments*/ - - - - - - -int -MT_insert (point,info,tree,n_leafs) - VOID_T *point; - struct tree_info *info; - struct multtree *tree; - int n_leafs; -/*First checks for dividing cond. (if n_points>=KMAX) and TREE is a leaf - by calling one of tree's functions (division_check()). - If TREE is not a leaf (is a node) uses function compare to determine - into which "son" we need to insert the point and calls MT_insert() - with this son as a n argument. - If TREE is a leaf but we don't need to divide it (n_points=v2). + * Read the file COPYING that comes with GRASS for details. */ #include @@ -16,6 +28,7 @@ #include #include +/*! Initializes multfunc structure with given arguments */ struct multfunc *MT_functions_new(int (*compare) (struct triple *, struct quaddata *), struct quaddata **(*divide_data) (struct quaddata *, @@ -26,7 +39,6 @@ int (*division_check) (struct quaddata *, int), int (*get_points) (struct quaddata *, struct quaddata *, int)) -/* Initializes FUNCTIONS structure with given arguments */ { struct multfunc *functions; if (!(functions = (struct multfunc *)malloc(sizeof(struct multfunc)))) { @@ -41,10 +53,10 @@ return functions; } +/*! Initializes tree_info using given arguments */ struct tree_info *MT_tree_info_new(struct multtree *root, struct multfunc *functions, double dmin, int kmax) -/*Initializes TREE_INFO using given arguments */ { struct tree_info *info; if (!(info = (struct tree_info *)malloc(sizeof(struct tree_info)))) { @@ -57,10 +69,10 @@ return info; } +/** Initializes multtree using given arguments */ struct multtree *MT_tree_new(struct quaddata *data, struct multtree **leafs, struct multtree *parent, int multant) -/*Initializes TREE using given arguments */ { struct multtree *tree; if (!(tree = (struct multtree *)malloc(sizeof(struct multtree)))) { @@ -74,21 +86,24 @@ } - +/*! + * First checks for dividing cond. (if n_points>=KMAX) and tree + * is a leaf by calling one of tree's functions (`division_check()`). + * If tree is not a leaf (is a node) uses function compare to determine + * into which "son" we need to insert the point and calls MT_insert() + * with this son as a n argument. + * + * If TREE is a leaf but we don't need to divide it (n_points=KMAX) and TREE is a leaf - by calling one of tree's functions (division_check()). - If TREE is not a leaf (is a node) uses function compare to determine - into which "son" we need to insert the point and calls MT_insert() - with this son as a n argument. - If TREE is a leaf but we don't need to divide it (n_points=v2). + * Read the file COPYING that comes with GRASS for details. */ @@ -17,6 +29,12 @@ #define VOID_T char +/*! + * Function table for a tree + * + * From object oriented point of view, this structure represents + * a class or a virtual table of functions/methods for a class. + */ struct multfunc { int (*compare) (); Added: grass/trunk/lib/rst/rst.dox =================================================================== --- grass/trunk/lib/rst/rst.dox (rev 0) +++ grass/trunk/lib/rst/rst.dox 2015-09-07 20:11:46 UTC (rev 66143) @@ -0,0 +1,66 @@ +/*! \page rst Regularized spline with tension interpolation library + +\tableofcontents + + +Including and linking +===================== + +Include interpf.h, qtree.h and dataquad.h header files according +to which you need: + + #include + #include + #include + +Extend `LIBES` and `DEPENDENCIES` in your `Makefile` by the following: + + LIBES = $(INTERPFLLIB) $(GMATHLIB) + DEPENDENCIES = $(INTERPFLDEP) $(GMATHDEP) + + +Main functions and structures +============================= + +Main functions include: +- IL_init_params_2d() +- IL_init_func_2d() +- IL_vector_input_data_2d() +- IL_create_bitmask() +- IL_resample_interp_segments_2d() +- IL_resample_output_2d() +- IL_output_2d() + +Main data structures include: +- interp_params +- tree_info +- \ref multtree + + +Example usages +============== + +- \gmod{v.surf.rst} +- \gmod{r.resamp.rst} + + +References +========== + +The methods are described in the following papers. +Please, use these papers as references in your publications when you +used the library or derived modules. + +- 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. +- Mitasova, H., Mitas, L., Brown, W.M., Gerdes, D.P., Kosinovsky, I., + Baker, T., 1995, Modeling spatially and temporally + distributed phenomena: New methods and tools for GRASS GIS. + International Journal of Geographic Information Systems,9(4), 433-46. + +*/ From svn_grass at osgeo.org Mon Sep 7 13:46:47 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Mon, 7 Sep 2015 13:46:47 -0700 Subject: [GRASS-SVN] r66144 - grass/trunk/locale/po Message-ID: <20150907204649.1D2823901C5@trac.osgeo.org> Author: neteler Date: 2015-09-07 13:46:47 -0700 (Mon, 07 Sep 2015) New Revision: 66144 Modified: grass/trunk/locale/po/grassmods_ar.po grass/trunk/locale/po/grassmods_cs.po grass/trunk/locale/po/grassmods_de.po grass/trunk/locale/po/grassmods_el.po grass/trunk/locale/po/grassmods_es.po grass/trunk/locale/po/grassmods_fi.po grass/trunk/locale/po/grassmods_fr.po grass/trunk/locale/po/grassmods_it.po grass/trunk/locale/po/grassmods_ja.po grass/trunk/locale/po/grassmods_ko.po grass/trunk/locale/po/grassmods_lv.po grass/trunk/locale/po/grassmods_pl.po grass/trunk/locale/po/grassmods_pt.po grass/trunk/locale/po/grassmods_pt_br.po grass/trunk/locale/po/grassmods_ro.po grass/trunk/locale/po/grassmods_ru.po grass/trunk/locale/po/grassmods_sl.po grass/trunk/locale/po/grassmods_th.po grass/trunk/locale/po/grassmods_tr.po grass/trunk/locale/po/grassmods_vi.po grass/trunk/locale/po/grassmods_zh.po Log: keywords cosmetics: completing r66133 Modified: grass/trunk/locale/po/grassmods_ar.po =================================================================== --- grass/trunk/locale/po/grassmods_ar.po 2015-09-07 20:11:46 UTC (rev 66143) +++ grass/trunk/locale/po/grassmods_ar.po 2015-09-07 20:46:47 UTC (rev 66144) @@ -13628,7 +13628,7 @@ #: ../vector/v.lrs/v.lrs.create/main.c:122 #: ../vector/v.lrs/v.lrs.label/main.c:103 #, fuzzy -msgid "Linear Reference System" +msgid "linear reference system" msgstr "?????? ?????? ?????????????? ????????????????" #: ../vector/v.lrs/v.lrs.segment/main.c:75 Modified: grass/trunk/locale/po/grassmods_cs.po =================================================================== --- grass/trunk/locale/po/grassmods_cs.po 2015-09-07 20:11:46 UTC (rev 66143) +++ grass/trunk/locale/po/grassmods_cs.po 2015-09-07 20:46:47 UTC (rev 66144) @@ -13690,7 +13690,7 @@ #: ../vector/v.lrs/v.lrs.create/main.c:122 #: ../vector/v.lrs/v.lrs.label/main.c:103 #, fuzzy -msgid "Linear Reference System" +msgid "linear reference system" msgstr "Line??rn?? referen??n?? syst??m" #: ../vector/v.lrs/v.lrs.segment/main.c:75 Modified: grass/trunk/locale/po/grassmods_de.po =================================================================== --- grass/trunk/locale/po/grassmods_de.po 2015-09-07 20:11:46 UTC (rev 66143) +++ grass/trunk/locale/po/grassmods_de.po 2015-09-07 20:46:47 UTC (rev 66144) @@ -13676,9 +13676,8 @@ #: ../vector/v.lrs/v.lrs.where/main.c:58 #: ../vector/v.lrs/v.lrs.create/main.c:122 #: ../vector/v.lrs/v.lrs.label/main.c:103 -#, fuzzy -msgid "Linear Reference System" -msgstr "Erzeuge Linearesreferenzsystem" +msgid "linear reference system" +msgstr "Lineares Referenzsystem" #: ../vector/v.lrs/v.lrs.segment/main.c:75 msgid "" Modified: grass/trunk/locale/po/grassmods_el.po =================================================================== --- grass/trunk/locale/po/grassmods_el.po 2015-09-07 20:11:46 UTC (rev 66143) +++ grass/trunk/locale/po/grassmods_el.po 2015-09-07 20:46:47 UTC (rev 66144) @@ -13072,7 +13072,7 @@ #: ../vector/v.lrs/v.lrs.where/main.c:58 #: ../vector/v.lrs/v.lrs.create/main.c:122 #: ../vector/v.lrs/v.lrs.label/main.c:103 -msgid "Linear Reference System" +msgid "linear reference system" msgstr "" #: ../vector/v.lrs/v.lrs.segment/main.c:75 Modified: grass/trunk/locale/po/grassmods_es.po =================================================================== --- grass/trunk/locale/po/grassmods_es.po 2015-09-07 20:11:46 UTC (rev 66143) +++ grass/trunk/locale/po/grassmods_es.po 2015-09-07 20:46:47 UTC (rev 66144) @@ -13757,7 +13757,7 @@ #: ../vector/v.lrs/v.lrs.create/main.c:122 #: ../vector/v.lrs/v.lrs.label/main.c:103 #, fuzzy -msgid "Linear Reference System" +msgid "linear reference system" msgstr "Crear Sistema de Referencia Lineal (LRS)" #: ../vector/v.lrs/v.lrs.segment/main.c:75 Modified: grass/trunk/locale/po/grassmods_fi.po =================================================================== --- grass/trunk/locale/po/grassmods_fi.po 2015-09-07 20:11:46 UTC (rev 66143) +++ grass/trunk/locale/po/grassmods_fi.po 2015-09-07 20:46:47 UTC (rev 66144) @@ -12584,7 +12584,7 @@ #: ../vector/v.lrs/v.lrs.where/main.c:58 #: ../vector/v.lrs/v.lrs.create/main.c:122 #: ../vector/v.lrs/v.lrs.label/main.c:103 -msgid "Linear Reference System" +msgid "linear reference system" msgstr "" #: ../vector/v.lrs/v.lrs.segment/main.c:75 Modified: grass/trunk/locale/po/grassmods_fr.po =================================================================== --- grass/trunk/locale/po/grassmods_fr.po 2015-09-07 20:11:46 UTC (rev 66143) +++ grass/trunk/locale/po/grassmods_fr.po 2015-09-07 20:46:47 UTC (rev 66144) @@ -14344,7 +14344,7 @@ #: ../vector/v.lrs/v.lrs.create/main.c:122 #: ../vector/v.lrs/v.lrs.label/main.c:103 #, fuzzy -msgid "Linear Reference System" +msgid "linear reference system" msgstr "Nom de fichier des classes de r??f??rence" #: ../vector/v.lrs/v.lrs.segment/main.c:75 Modified: grass/trunk/locale/po/grassmods_it.po =================================================================== --- grass/trunk/locale/po/grassmods_it.po 2015-09-07 20:11:46 UTC (rev 66143) +++ grass/trunk/locale/po/grassmods_it.po 2015-09-07 20:46:47 UTC (rev 66144) @@ -13504,7 +13504,7 @@ #: ../vector/v.lrs/v.lrs.create/main.c:122 #: ../vector/v.lrs/v.lrs.label/main.c:103 #, fuzzy -msgid "Linear Reference System" +msgid "linear reference system" msgstr "Crea sistema di riferimento lineare" #: ../vector/v.lrs/v.lrs.segment/main.c:75 Modified: grass/trunk/locale/po/grassmods_ja.po =================================================================== --- grass/trunk/locale/po/grassmods_ja.po 2015-09-07 20:11:46 UTC (rev 66143) +++ grass/trunk/locale/po/grassmods_ja.po 2015-09-07 20:46:47 UTC (rev 66144) @@ -13510,7 +13510,7 @@ #: ../vector/v.lrs/v.lrs.create/main.c:122 #: ../vector/v.lrs/v.lrs.label/main.c:103 #, fuzzy -msgid "Linear Reference System" +msgid "linear reference system" msgstr "????????????????????????" #: ../vector/v.lrs/v.lrs.segment/main.c:75 Modified: grass/trunk/locale/po/grassmods_ko.po =================================================================== --- grass/trunk/locale/po/grassmods_ko.po 2015-09-07 20:11:46 UTC (rev 66143) +++ grass/trunk/locale/po/grassmods_ko.po 2015-09-07 20:46:47 UTC (rev 66144) @@ -13147,7 +13147,7 @@ #: ../vector/v.lrs/v.lrs.where/main.c:58 #: ../vector/v.lrs/v.lrs.create/main.c:122 #: ../vector/v.lrs/v.lrs.label/main.c:103 -msgid "Linear Reference System" +msgid "linear reference system" msgstr "" #: ../vector/v.lrs/v.lrs.segment/main.c:75 Modified: grass/trunk/locale/po/grassmods_lv.po =================================================================== --- grass/trunk/locale/po/grassmods_lv.po 2015-09-07 20:11:46 UTC (rev 66143) +++ grass/trunk/locale/po/grassmods_lv.po 2015-09-07 20:46:47 UTC (rev 66144) @@ -13663,7 +13663,7 @@ #: ../vector/v.lrs/v.lrs.where/main.c:58 #: ../vector/v.lrs/v.lrs.create/main.c:122 #: ../vector/v.lrs/v.lrs.label/main.c:103 -msgid "Linear Reference System" +msgid "linear reference system" msgstr "" #: ../vector/v.lrs/v.lrs.segment/main.c:75 Modified: grass/trunk/locale/po/grassmods_pl.po =================================================================== --- grass/trunk/locale/po/grassmods_pl.po 2015-09-07 20:11:46 UTC (rev 66143) +++ grass/trunk/locale/po/grassmods_pl.po 2015-09-07 20:46:47 UTC (rev 66144) @@ -13532,7 +13532,7 @@ #: ../vector/v.lrs/v.lrs.create/main.c:122 #: ../vector/v.lrs/v.lrs.label/main.c:103 #, fuzzy -msgid "Linear Reference System" +msgid "linear reference system" msgstr "Utw??rz Linear Reference System" #: ../vector/v.lrs/v.lrs.segment/main.c:75 Modified: grass/trunk/locale/po/grassmods_pt.po =================================================================== --- grass/trunk/locale/po/grassmods_pt.po 2015-09-07 20:11:46 UTC (rev 66143) +++ grass/trunk/locale/po/grassmods_pt.po 2015-09-07 20:46:47 UTC (rev 66144) @@ -13909,7 +13909,7 @@ #: ../vector/v.lrs/v.lrs.create/main.c:122 #: ../vector/v.lrs/v.lrs.label/main.c:103 #, fuzzy -msgid "Linear Reference System" +msgid "linear reference system" msgstr "Nome do arquivo para as classes de refer?ncia" #: ../vector/v.lrs/v.lrs.segment/main.c:75 Modified: grass/trunk/locale/po/grassmods_pt_br.po =================================================================== --- grass/trunk/locale/po/grassmods_pt_br.po 2015-09-07 20:11:46 UTC (rev 66143) +++ grass/trunk/locale/po/grassmods_pt_br.po 2015-09-07 20:46:47 UTC (rev 66144) @@ -13909,7 +13909,7 @@ #: ../vector/v.lrs/v.lrs.create/main.c:122 #: ../vector/v.lrs/v.lrs.label/main.c:103 #, fuzzy -msgid "Linear Reference System" +msgid "linear reference system" msgstr "Nome do arquivo para as classes de refer?ncia" #: ../vector/v.lrs/v.lrs.segment/main.c:75 Modified: grass/trunk/locale/po/grassmods_ro.po =================================================================== --- grass/trunk/locale/po/grassmods_ro.po 2015-09-07 20:11:46 UTC (rev 66143) +++ grass/trunk/locale/po/grassmods_ro.po 2015-09-07 20:46:47 UTC (rev 66144) @@ -12748,7 +12748,7 @@ #: ../vector/v.lrs/v.lrs.where/main.c:58 #: ../vector/v.lrs/v.lrs.create/main.c:122 #: ../vector/v.lrs/v.lrs.label/main.c:103 -msgid "Linear Reference System" +msgid "linear reference system" msgstr "" #: ../vector/v.lrs/v.lrs.segment/main.c:75 Modified: grass/trunk/locale/po/grassmods_ru.po =================================================================== --- grass/trunk/locale/po/grassmods_ru.po 2015-09-07 20:11:46 UTC (rev 66143) +++ grass/trunk/locale/po/grassmods_ru.po 2015-09-07 20:46:47 UTC (rev 66144) @@ -13721,7 +13721,7 @@ #: ../vector/v.lrs/v.lrs.create/main.c:122 #: ../vector/v.lrs/v.lrs.label/main.c:103 #, fuzzy -msgid "Linear Reference System" +msgid "linear reference system" msgstr "?????????????? ???????????????? ?????????????? ??????????????????" #: ../vector/v.lrs/v.lrs.segment/main.c:75 Modified: grass/trunk/locale/po/grassmods_sl.po =================================================================== --- grass/trunk/locale/po/grassmods_sl.po 2015-09-07 20:11:46 UTC (rev 66143) +++ grass/trunk/locale/po/grassmods_sl.po 2015-09-07 20:46:47 UTC (rev 66144) @@ -13686,7 +13686,7 @@ #: ../vector/v.lrs/v.lrs.create/main.c:122 #: ../vector/v.lrs/v.lrs.label/main.c:103 #, fuzzy -msgid "Linear Reference System" +msgid "linear reference system" msgstr "Ime datoteke z referen?nimi razredi" #: ../vector/v.lrs/v.lrs.segment/main.c:75 Modified: grass/trunk/locale/po/grassmods_th.po =================================================================== --- grass/trunk/locale/po/grassmods_th.po 2015-09-07 20:11:46 UTC (rev 66143) +++ grass/trunk/locale/po/grassmods_th.po 2015-09-07 20:46:47 UTC (rev 66144) @@ -13635,7 +13635,7 @@ #: ../vector/v.lrs/v.lrs.create/main.c:122 #: ../vector/v.lrs/v.lrs.label/main.c:103 #, fuzzy -msgid "Linear Reference System" +msgid "linear reference system" msgstr "??????????????? ???????????????????????????????????????????????????????????????????????????????????????" #: ../vector/v.lrs/v.lrs.segment/main.c:75 Modified: grass/trunk/locale/po/grassmods_tr.po =================================================================== --- grass/trunk/locale/po/grassmods_tr.po 2015-09-07 20:11:46 UTC (rev 66143) +++ grass/trunk/locale/po/grassmods_tr.po 2015-09-07 20:46:47 UTC (rev 66144) @@ -13409,7 +13409,7 @@ #: ../vector/v.lrs/v.lrs.where/main.c:58 #: ../vector/v.lrs/v.lrs.create/main.c:122 #: ../vector/v.lrs/v.lrs.label/main.c:103 -msgid "Linear Reference System" +msgid "linear reference system" msgstr "" #: ../vector/v.lrs/v.lrs.segment/main.c:75 Modified: grass/trunk/locale/po/grassmods_vi.po =================================================================== --- grass/trunk/locale/po/grassmods_vi.po 2015-09-07 20:11:46 UTC (rev 66143) +++ grass/trunk/locale/po/grassmods_vi.po 2015-09-07 20:46:47 UTC (rev 66144) @@ -13712,7 +13712,7 @@ #: ../vector/v.lrs/v.lrs.create/main.c:122 #: ../vector/v.lrs/v.lrs.label/main.c:103 #, fuzzy -msgid "Linear Reference System" +msgid "linear reference system" msgstr "T???o H??? tham chi???u Tuy???n t??nh" #: ../vector/v.lrs/v.lrs.segment/main.c:75 Modified: grass/trunk/locale/po/grassmods_zh.po =================================================================== --- grass/trunk/locale/po/grassmods_zh.po 2015-09-07 20:11:46 UTC (rev 66143) +++ grass/trunk/locale/po/grassmods_zh.po 2015-09-07 20:46:47 UTC (rev 66144) @@ -13645,7 +13645,7 @@ #: ../vector/v.lrs/v.lrs.create/main.c:122 #: ../vector/v.lrs/v.lrs.label/main.c:103 #, fuzzy -msgid "Linear Reference System" +msgid "linear reference system" msgstr "???????????????????????????" #: ../vector/v.lrs/v.lrs.segment/main.c:75 From svn_grass at osgeo.org Mon Sep 7 13:51:26 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Mon, 7 Sep 2015 13:51:26 -0700 Subject: [GRASS-SVN] r66145 - grass/branches/releasebranch_7_0/locale/po Message-ID: <20150907205129.249B43901C5@trac.osgeo.org> Author: neteler Date: 2015-09-07 13:51:26 -0700 (Mon, 07 Sep 2015) New Revision: 66145 Modified: grass/branches/releasebranch_7_0/locale/po/grassmods_ar.po grass/branches/releasebranch_7_0/locale/po/grassmods_cs.po grass/branches/releasebranch_7_0/locale/po/grassmods_de.po grass/branches/releasebranch_7_0/locale/po/grassmods_el.po grass/branches/releasebranch_7_0/locale/po/grassmods_es.po grass/branches/releasebranch_7_0/locale/po/grassmods_fi.po grass/branches/releasebranch_7_0/locale/po/grassmods_fr.po grass/branches/releasebranch_7_0/locale/po/grassmods_it.po grass/branches/releasebranch_7_0/locale/po/grassmods_ja.po grass/branches/releasebranch_7_0/locale/po/grassmods_ko.po grass/branches/releasebranch_7_0/locale/po/grassmods_lv.po grass/branches/releasebranch_7_0/locale/po/grassmods_pl.po grass/branches/releasebranch_7_0/locale/po/grassmods_pt.po grass/branches/releasebranch_7_0/locale/po/grassmods_pt_br.po grass/branches/releasebranch_7_0/locale/po/grassmods_ro.po grass/branches/releasebranch_7_0/locale/po/grassmods_ru.po grass/branches/releasebranch_7_0/locale/po/grassmods_sl.po grass/branches/releasebranch_7_0/locale/po/grassmods_th.po grass/branches/releasebranch_7_0/locale/po/grassmods_tr.po grass/branches/releasebranch_7_0/locale/po/grassmods_vi.po grass/branches/releasebranch_7_0/locale/po/grassmods_zh.po Log: keywords cosmetics: completing r66134 Modified: grass/branches/releasebranch_7_0/locale/po/grassmods_ar.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grassmods_ar.po 2015-09-07 20:46:47 UTC (rev 66144) +++ grass/branches/releasebranch_7_0/locale/po/grassmods_ar.po 2015-09-07 20:51:26 UTC (rev 66145) @@ -13224,7 +13224,7 @@ #: ../vector/v.lrs/v.lrs.create/main.c:122 #: ../vector/v.lrs/v.lrs.label/main.c:103 #, fuzzy -msgid "Linear Reference System" +msgid "linear reference system" msgstr "?????? ?????? ?????????????? ????????????????" #: ../vector/v.lrs/v.lrs.segment/main.c:75 Modified: grass/branches/releasebranch_7_0/locale/po/grassmods_cs.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grassmods_cs.po 2015-09-07 20:46:47 UTC (rev 66144) +++ grass/branches/releasebranch_7_0/locale/po/grassmods_cs.po 2015-09-07 20:51:26 UTC (rev 66145) @@ -13285,7 +13285,7 @@ #: ../vector/v.lrs/v.lrs.create/main.c:122 #: ../vector/v.lrs/v.lrs.label/main.c:103 #, fuzzy -msgid "Linear Reference System" +msgid "linear reference system" msgstr "Line??rn?? referen??n?? syst??m" #: ../vector/v.lrs/v.lrs.segment/main.c:75 Modified: grass/branches/releasebranch_7_0/locale/po/grassmods_de.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grassmods_de.po 2015-09-07 20:46:47 UTC (rev 66144) +++ grass/branches/releasebranch_7_0/locale/po/grassmods_de.po 2015-09-07 20:51:26 UTC (rev 66145) @@ -13270,9 +13270,8 @@ #: ../vector/v.lrs/v.lrs.where/main.c:58 #: ../vector/v.lrs/v.lrs.create/main.c:122 #: ../vector/v.lrs/v.lrs.label/main.c:103 -#, fuzzy -msgid "Linear Reference System" -msgstr "Erzeuge Linearesreferenzsystem" +msgid "linear reference system" +msgstr "Lineares Referenzsystem" #: ../vector/v.lrs/v.lrs.segment/main.c:75 msgid "" Modified: grass/branches/releasebranch_7_0/locale/po/grassmods_el.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grassmods_el.po 2015-09-07 20:46:47 UTC (rev 66144) +++ grass/branches/releasebranch_7_0/locale/po/grassmods_el.po 2015-09-07 20:51:26 UTC (rev 66145) @@ -12672,7 +12672,7 @@ #: ../vector/v.lrs/v.lrs.where/main.c:58 #: ../vector/v.lrs/v.lrs.create/main.c:122 #: ../vector/v.lrs/v.lrs.label/main.c:103 -msgid "Linear Reference System" +msgid "linear reference system" msgstr "" #: ../vector/v.lrs/v.lrs.segment/main.c:75 Modified: grass/branches/releasebranch_7_0/locale/po/grassmods_es.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grassmods_es.po 2015-09-07 20:46:47 UTC (rev 66144) +++ grass/branches/releasebranch_7_0/locale/po/grassmods_es.po 2015-09-07 20:51:26 UTC (rev 66145) @@ -13349,7 +13349,7 @@ #: ../vector/v.lrs/v.lrs.create/main.c:122 #: ../vector/v.lrs/v.lrs.label/main.c:103 #, fuzzy -msgid "Linear Reference System" +msgid "linear reference system" msgstr "Crear Sistema de Referencia Lineal (LRS)" #: ../vector/v.lrs/v.lrs.segment/main.c:75 Modified: grass/branches/releasebranch_7_0/locale/po/grassmods_fi.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grassmods_fi.po 2015-09-07 20:46:47 UTC (rev 66144) +++ grass/branches/releasebranch_7_0/locale/po/grassmods_fi.po 2015-09-07 20:51:26 UTC (rev 66145) @@ -12206,7 +12206,7 @@ #: ../vector/v.lrs/v.lrs.where/main.c:58 #: ../vector/v.lrs/v.lrs.create/main.c:122 #: ../vector/v.lrs/v.lrs.label/main.c:103 -msgid "Linear Reference System" +msgid "linear reference system" msgstr "" #: ../vector/v.lrs/v.lrs.segment/main.c:75 Modified: grass/branches/releasebranch_7_0/locale/po/grassmods_fr.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grassmods_fr.po 2015-09-07 20:46:47 UTC (rev 66144) +++ grass/branches/releasebranch_7_0/locale/po/grassmods_fr.po 2015-09-07 20:51:26 UTC (rev 66145) @@ -13925,7 +13925,7 @@ #: ../vector/v.lrs/v.lrs.create/main.c:122 #: ../vector/v.lrs/v.lrs.label/main.c:103 #, fuzzy -msgid "Linear Reference System" +msgid "linear reference system" msgstr "Nom de fichier des classes de r??f??rence" #: ../vector/v.lrs/v.lrs.segment/main.c:75 Modified: grass/branches/releasebranch_7_0/locale/po/grassmods_it.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grassmods_it.po 2015-09-07 20:46:47 UTC (rev 66144) +++ grass/branches/releasebranch_7_0/locale/po/grassmods_it.po 2015-09-07 20:51:26 UTC (rev 66145) @@ -13097,7 +13097,7 @@ #: ../vector/v.lrs/v.lrs.create/main.c:122 #: ../vector/v.lrs/v.lrs.label/main.c:103 #, fuzzy -msgid "Linear Reference System" +msgid "linear reference system" msgstr "Crea sistema di riferimento lineare" #: ../vector/v.lrs/v.lrs.segment/main.c:75 Modified: grass/branches/releasebranch_7_0/locale/po/grassmods_ja.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grassmods_ja.po 2015-09-07 20:46:47 UTC (rev 66144) +++ grass/branches/releasebranch_7_0/locale/po/grassmods_ja.po 2015-09-07 20:51:26 UTC (rev 66145) @@ -13104,7 +13104,7 @@ #: ../vector/v.lrs/v.lrs.create/main.c:122 #: ../vector/v.lrs/v.lrs.label/main.c:103 #, fuzzy -msgid "Linear Reference System" +msgid "linear reference system" msgstr "????????????????????????" #: ../vector/v.lrs/v.lrs.segment/main.c:75 Modified: grass/branches/releasebranch_7_0/locale/po/grassmods_ko.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grassmods_ko.po 2015-09-07 20:46:47 UTC (rev 66144) +++ grass/branches/releasebranch_7_0/locale/po/grassmods_ko.po 2015-09-07 20:51:26 UTC (rev 66145) @@ -12747,7 +12747,7 @@ #: ../vector/v.lrs/v.lrs.where/main.c:58 #: ../vector/v.lrs/v.lrs.create/main.c:122 #: ../vector/v.lrs/v.lrs.label/main.c:103 -msgid "Linear Reference System" +msgid "linear reference system" msgstr "" #: ../vector/v.lrs/v.lrs.segment/main.c:75 Modified: grass/branches/releasebranch_7_0/locale/po/grassmods_lv.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grassmods_lv.po 2015-09-07 20:46:47 UTC (rev 66144) +++ grass/branches/releasebranch_7_0/locale/po/grassmods_lv.po 2015-09-07 20:51:26 UTC (rev 66145) @@ -13256,7 +13256,7 @@ #: ../vector/v.lrs/v.lrs.where/main.c:58 #: ../vector/v.lrs/v.lrs.create/main.c:122 #: ../vector/v.lrs/v.lrs.label/main.c:103 -msgid "Linear Reference System" +msgid "linear reference system" msgstr "" #: ../vector/v.lrs/v.lrs.segment/main.c:75 Modified: grass/branches/releasebranch_7_0/locale/po/grassmods_pl.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grassmods_pl.po 2015-09-07 20:46:47 UTC (rev 66144) +++ grass/branches/releasebranch_7_0/locale/po/grassmods_pl.po 2015-09-07 20:51:26 UTC (rev 66145) @@ -13122,7 +13122,7 @@ #: ../vector/v.lrs/v.lrs.create/main.c:122 #: ../vector/v.lrs/v.lrs.label/main.c:103 #, fuzzy -msgid "Linear Reference System" +msgid "linear reference system" msgstr "Utw??rz Linear Reference System" #: ../vector/v.lrs/v.lrs.segment/main.c:75 Modified: grass/branches/releasebranch_7_0/locale/po/grassmods_pt.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grassmods_pt.po 2015-09-07 20:46:47 UTC (rev 66144) +++ grass/branches/releasebranch_7_0/locale/po/grassmods_pt.po 2015-09-07 20:51:26 UTC (rev 66145) @@ -13502,7 +13502,7 @@ #: ../vector/v.lrs/v.lrs.create/main.c:122 #: ../vector/v.lrs/v.lrs.label/main.c:103 #, fuzzy -msgid "Linear Reference System" +msgid "linear reference system" msgstr "Nome do arquivo para as classes de refer?ncia" #: ../vector/v.lrs/v.lrs.segment/main.c:75 Modified: grass/branches/releasebranch_7_0/locale/po/grassmods_pt_br.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grassmods_pt_br.po 2015-09-07 20:46:47 UTC (rev 66144) +++ grass/branches/releasebranch_7_0/locale/po/grassmods_pt_br.po 2015-09-07 20:51:26 UTC (rev 66145) @@ -13502,7 +13502,7 @@ #: ../vector/v.lrs/v.lrs.create/main.c:122 #: ../vector/v.lrs/v.lrs.label/main.c:103 #, fuzzy -msgid "Linear Reference System" +msgid "linear reference system" msgstr "Nome do arquivo para as classes de refer?ncia" #: ../vector/v.lrs/v.lrs.segment/main.c:75 Modified: grass/branches/releasebranch_7_0/locale/po/grassmods_ro.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grassmods_ro.po 2015-09-07 20:46:47 UTC (rev 66144) +++ grass/branches/releasebranch_7_0/locale/po/grassmods_ro.po 2015-09-07 20:51:26 UTC (rev 66145) @@ -12353,7 +12353,7 @@ #: ../vector/v.lrs/v.lrs.where/main.c:58 #: ../vector/v.lrs/v.lrs.create/main.c:122 #: ../vector/v.lrs/v.lrs.label/main.c:103 -msgid "Linear Reference System" +msgid "linear reference system" msgstr "" #: ../vector/v.lrs/v.lrs.segment/main.c:75 Modified: grass/branches/releasebranch_7_0/locale/po/grassmods_ru.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grassmods_ru.po 2015-09-07 20:46:47 UTC (rev 66144) +++ grass/branches/releasebranch_7_0/locale/po/grassmods_ru.po 2015-09-07 20:51:26 UTC (rev 66145) @@ -13314,7 +13314,7 @@ #: ../vector/v.lrs/v.lrs.create/main.c:122 #: ../vector/v.lrs/v.lrs.label/main.c:103 #, fuzzy -msgid "Linear Reference System" +msgid "linear reference system" msgstr "?????????????? ???????????????? ?????????????? ??????????????????" #: ../vector/v.lrs/v.lrs.segment/main.c:75 Modified: grass/branches/releasebranch_7_0/locale/po/grassmods_sl.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grassmods_sl.po 2015-09-07 20:46:47 UTC (rev 66144) +++ grass/branches/releasebranch_7_0/locale/po/grassmods_sl.po 2015-09-07 20:51:26 UTC (rev 66145) @@ -13280,7 +13280,7 @@ #: ../vector/v.lrs/v.lrs.create/main.c:122 #: ../vector/v.lrs/v.lrs.label/main.c:103 #, fuzzy -msgid "Linear Reference System" +msgid "linear reference system" msgstr "Ime datoteke z referen?nimi razredi" #: ../vector/v.lrs/v.lrs.segment/main.c:75 Modified: grass/branches/releasebranch_7_0/locale/po/grassmods_th.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grassmods_th.po 2015-09-07 20:46:47 UTC (rev 66144) +++ grass/branches/releasebranch_7_0/locale/po/grassmods_th.po 2015-09-07 20:51:26 UTC (rev 66145) @@ -13225,7 +13225,7 @@ #: ../vector/v.lrs/v.lrs.create/main.c:122 #: ../vector/v.lrs/v.lrs.label/main.c:103 #, fuzzy -msgid "Linear Reference System" +msgid "linear reference system" msgstr "??????????????? ???????????????????????????????????????????????????????????????????????????????????????" #: ../vector/v.lrs/v.lrs.segment/main.c:75 Modified: grass/branches/releasebranch_7_0/locale/po/grassmods_tr.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grassmods_tr.po 2015-09-07 20:46:47 UTC (rev 66144) +++ grass/branches/releasebranch_7_0/locale/po/grassmods_tr.po 2015-09-07 20:51:26 UTC (rev 66145) @@ -13004,7 +13004,7 @@ #: ../vector/v.lrs/v.lrs.where/main.c:58 #: ../vector/v.lrs/v.lrs.create/main.c:122 #: ../vector/v.lrs/v.lrs.label/main.c:103 -msgid "Linear Reference System" +msgid "linear reference system" msgstr "" #: ../vector/v.lrs/v.lrs.segment/main.c:75 Modified: grass/branches/releasebranch_7_0/locale/po/grassmods_vi.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grassmods_vi.po 2015-09-07 20:46:47 UTC (rev 66144) +++ grass/branches/releasebranch_7_0/locale/po/grassmods_vi.po 2015-09-07 20:51:26 UTC (rev 66145) @@ -13304,7 +13304,7 @@ #: ../vector/v.lrs/v.lrs.create/main.c:122 #: ../vector/v.lrs/v.lrs.label/main.c:103 #, fuzzy -msgid "Linear Reference System" +msgid "linear reference system" msgstr "T???o H??? tham chi???u Tuy???n t??nh" #: ../vector/v.lrs/v.lrs.segment/main.c:75 Modified: grass/branches/releasebranch_7_0/locale/po/grassmods_zh.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grassmods_zh.po 2015-09-07 20:46:47 UTC (rev 66144) +++ grass/branches/releasebranch_7_0/locale/po/grassmods_zh.po 2015-09-07 20:51:26 UTC (rev 66145) @@ -13240,7 +13240,7 @@ #: ../vector/v.lrs/v.lrs.create/main.c:122 #: ../vector/v.lrs/v.lrs.label/main.c:103 #, fuzzy -msgid "Linear Reference System" +msgid "linear reference system" msgstr "???????????????????????????" #: ../vector/v.lrs/v.lrs.segment/main.c:75 From svn_grass at osgeo.org Mon Sep 7 13:51:53 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Mon, 7 Sep 2015 13:51:53 -0700 Subject: [GRASS-SVN] r66146 - in grass/trunk: . lib/gis lib/rst Message-ID: <20150907205153.9132F3901C5@trac.osgeo.org> Author: wenzeslaus Date: 2015-09-07 13:51:53 -0700 (Mon, 07 Sep 2015) New Revision: 66146 Added: grass/trunk/lib/rst/rstlib.dox Removed: grass/trunk/lib/rst/rst.dox Modified: grass/trunk/grasslib.dox grass/trunk/lib/gis/gislib.dox Log: dox: improve index and add rst lib Modified: grass/trunk/grasslib.dox =================================================================== --- grass/trunk/grasslib.dox 2015-09-07 20:51:26 UTC (rev 66145) +++ grass/trunk/grasslib.dox 2015-09-07 20:51:53 UTC (rev 66146) @@ -59,24 +59,24 @@ \subsection displaylibs Display Libraries and Drivers - - display: \ref displaylib (general displaylibrary) - - cairodriver: \ref cairodriver (cairo graphics driver) + - display: \ref displaylib (general display library) + - cairodriver: \ref cairodriver - %driver: Graphics monitor driver - htmldriver: \ref htmldriverlib (HTML graphics driver) - - pngdriver: \ref pngdriverlib (PNG graphics driver) - - psdriver: \ref psdriverlib (Postscript graphics driver) + - pngdriver: \ref pngdriverlib + - psdriver: \ref psdriverlib \subsection statslibs Math and Statisctics Libraries - arraystats: \ref arraystatslib (library of statistics for arrays of doubles) - - cdhc: \ref cdhclib (library for testing normality and exponentiality) + - cdhc: \ref cdhclib - gmath: \ref gmathlib (generic mathematical functions and BLAS/LAPACK library wrapper) - - gpde: \ref gpdelib (partial differential equations library) + - gpde: \ref gpdelib \subsection rasteribs Raster Libraries - raster: \ref rasterlib (2D raster library) - - raster3d: \ref raster3dlib (3D raster library - voxels) + - raster3d: \ref raster3dlib (3D raster aka voxels or volumes) - rowio: \ref rowiolib (library for reading/writing raster rows) - rst: \ref rstlib (library for interpolation with regularized splines with tension) - segment: \ref segmentlib (segment library for segmented raster reading) @@ -90,11 +90,17 @@ \subsection vectoribs Vector Libraries - %vector: \ref vectorlib (architecture description) - - dglib: \ref dglib (directed graph library) + - dglib: \ref dglib - vedit: \ref veditlib (vector editing library) - - neta: \ref netalib (network analysis library) - - rtree: \ref rtree (R search tree library) + - neta: \ref netalib + - rtree: \ref rtree.h (R search tree library) +\subsection treelibs Search tree libraries + + - btree: \ref btree.h + - btree2: \ref btree2 + - rtree: \ref rtree.h (R search tree library) + \subsection dblibs Database Management Libraries - db: \ref dbmilib @@ -112,14 +118,14 @@ - proj: \ref projlib (wrapper to PROJ4 projection library) -\subsection misclibs Misc Libraries +\subsection misclibs Miscellaneous Libraries - datetime: \ref datetime (DateTime library) - external: \ref external (External libraries from other projects such as shapelib and \ref ccmathlib) - fonts: \ref fonts (GRASS fonts library) - init: \ref init (GRASS initialization code + scripts) - iostream: \ref iostream (fast I/O library) - - lidar: \ref lidar (LiDAR data related library) + - lidar: \ref lidar.h (LiDAR data related library) - linkm: \ref linkm (linked list memory manager) - manage: \ref managelib - symbol: \ref symbol (Drawing symbols for %point %vector data library) Modified: grass/trunk/lib/gis/gislib.dox =================================================================== --- grass/trunk/lib/gis/gislib.dox 2015-09-07 20:51:26 UTC (rev 66145) +++ grass/trunk/lib/gis/gislib.dox 2015-09-07 20:51:53 UTC (rev 66146) @@ -1,4 +1,4 @@ -/*! \page gislib GRASS GIS Library +/*! \page gislib GRASS GIS General Library (aka GIS Library) Deleted: grass/trunk/lib/rst/rst.dox =================================================================== --- grass/trunk/lib/rst/rst.dox 2015-09-07 20:51:26 UTC (rev 66145) +++ grass/trunk/lib/rst/rst.dox 2015-09-07 20:51:53 UTC (rev 66146) @@ -1,66 +0,0 @@ -/*! \page rst Regularized spline with tension interpolation library - -\tableofcontents - - -Including and linking -===================== - -Include interpf.h, qtree.h and dataquad.h header files according -to which you need: - - #include - #include - #include - -Extend `LIBES` and `DEPENDENCIES` in your `Makefile` by the following: - - LIBES = $(INTERPFLLIB) $(GMATHLIB) - DEPENDENCIES = $(INTERPFLDEP) $(GMATHDEP) - - -Main functions and structures -============================= - -Main functions include: -- IL_init_params_2d() -- IL_init_func_2d() -- IL_vector_input_data_2d() -- IL_create_bitmask() -- IL_resample_interp_segments_2d() -- IL_resample_output_2d() -- IL_output_2d() - -Main data structures include: -- interp_params -- tree_info -- \ref multtree - - -Example usages -============== - -- \gmod{v.surf.rst} -- \gmod{r.resamp.rst} - - -References -========== - -The methods are described in the following papers. -Please, use these papers as references in your publications when you -used the library or derived modules. - -- 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. -- Mitasova, H., Mitas, L., Brown, W.M., Gerdes, D.P., Kosinovsky, I., - Baker, T., 1995, Modeling spatially and temporally - distributed phenomena: New methods and tools for GRASS GIS. - International Journal of Geographic Information Systems,9(4), 433-46. - -*/ Copied: grass/trunk/lib/rst/rstlib.dox (from rev 66143, grass/trunk/lib/rst/rst.dox) =================================================================== --- grass/trunk/lib/rst/rstlib.dox (rev 0) +++ grass/trunk/lib/rst/rstlib.dox 2015-09-07 20:51:53 UTC (rev 66146) @@ -0,0 +1,66 @@ +/*! \page rstlib Library for interpolation with regularized splines with tension + +\tableofcontents + + +Including and linking +===================== + +Include interpf.h, qtree.h and dataquad.h header files according +to which you need: + + #include + #include + #include + +Extend `LIBES` and `DEPENDENCIES` in your `Makefile` by the following: + + LIBES = $(INTERPFLLIB) $(GMATHLIB) + DEPENDENCIES = $(INTERPFLDEP) $(GMATHDEP) + + +Main functions and structures +============================= + +Main functions include: +- IL_init_params_2d() +- IL_init_func_2d() +- IL_vector_input_data_2d() +- IL_create_bitmask() +- IL_resample_interp_segments_2d() +- IL_resample_output_2d() +- IL_output_2d() + +Main data structures include: +- interp_params +- tree_info +- \ref multtree + + +Example usages +============== + +- \gmod{v.surf.rst} +- \gmod{r.resamp.rst} + + +References +========== + +The methods are described in the following papers. +Please, use these papers as references in your publications when you +used the library or derived modules. + +- 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. +- Mitasova, H., Mitas, L., Brown, W.M., Gerdes, D.P., Kosinovsky, I., + Baker, T., 1995, Modeling spatially and temporally + distributed phenomena: New methods and tools for GRASS GIS. + International Journal of Geographic Information Systems,9(4), 433-46. + +*/ From svn_grass at osgeo.org Mon Sep 7 19:45:02 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Mon, 7 Sep 2015 19:45:02 -0700 Subject: [GRASS-SVN] r66147 - in grass/trunk/vector: v.lidar.correction v.lidar.edgedetection v.lidar.growing Message-ID: <20150908024502.13E8A3901C5@trac.osgeo.org> Author: wenzeslaus Date: 2015-09-07 19:45:01 -0700 (Mon, 07 Sep 2015) New Revision: 66147 Added: grass/trunk/vector/v.lidar.edgedetection/v_lidar_edgedetection.png grass/trunk/vector/v.lidar.edgedetection/v_lidar_edgedetection_objects.png Modified: grass/trunk/vector/v.lidar.correction/v.lidar.correction.html grass/trunk/vector/v.lidar.edgedetection/v.lidar.edgedetection.html grass/trunk/vector/v.lidar.growing/v.lidar.growing.html Log: v.lidar.edgedetection: complete example and 2D and 3D picture Modified: grass/trunk/vector/v.lidar.correction/v.lidar.correction.html =================================================================== --- grass/trunk/vector/v.lidar.correction/v.lidar.correction.html 2015-09-07 20:51:53 UTC (rev 66146) +++ grass/trunk/vector/v.lidar.correction/v.lidar.correction.html 2015-09-08 02:45:01 UTC (rev 66147) @@ -57,7 +57,7 @@

    Second correction procedure

    -v.lidar.correction input=correction output=correction_bis out_terrain=only_terrain_bis
    +v.lidar.correction input=correction output=correction_bis terrain=only_terrain_bis
     
    @@ -66,7 +66,10 @@ v.lidar.edgedetection, v.lidar.growing, -v.surf.bspline +v.surf.bspline, +v.surf.rst, +v.in.lidar, +v.in.ascii Modified: grass/trunk/vector/v.lidar.edgedetection/v.lidar.edgedetection.html =================================================================== --- grass/trunk/vector/v.lidar.edgedetection/v.lidar.edgedetection.html 2015-09-07 20:51:53 UTC (rev 66146) +++ grass/trunk/vector/v.lidar.edgedetection/v.lidar.edgedetection.html 2015-09-08 02:45:01 UTC (rev 66147) @@ -33,6 +33,7 @@ v.lidar.growing module. +

    NOTES

    In this module, an external table will be created which will be useful for @@ -68,13 +69,69 @@ v.lidar.edgedetection input=vector_last output=edge ew_step=8 ns_step=8 lambda_g=0.5 +

    Complete workflow

    +
    +# region settings (using an existing raster)
    +g.region raster=elev_lid792_1m
    +
    +# import
    +v.in.lidar -tr input=points.las output=points
    +v.in.lidar -tr input=points.las output=points_first return_filter=first
    +
    +# detection
    +v.lidar.edgedetection input=points output=edge ew_step=8 ns_step=8 lambda_g=0.5
    +v.lidar.growing input=edge output=growing first=points_first
    +v.lidar.correction input=growing output=correction terrain=only_terrain
    +
    +# visualization of selected points
    +# zoom somewhere first, to make it faster
    +d.rast map=orthophoto
    +d.vect map=correction layer=2 cats=2,3,4 color=red size=0.25
    +d.vect map=correction layer=2 cats=1 color=0:128:0 size=0.5
    +
    +# interpolation (this may take some time)
    +v.surf.rst input=only_terrain elevation=terrain
    +
    +# get object points for 3D visualization
    +v.extract input=correction layer=2 cats=2,3,4 output=objects
    +
    + + +
    + +

    Figure 1: Example output from complete workflow (red: objects, green: terrain)

    +
    + +
    + +

    + Figure 2: 3D visualization of filtered object points (red) + and terrain created from terrain points (gray) +

    +
    + +

    SEE ALSO

    v.lidar.growing, v.lidar.correction, -v.surf.bspline +v.surf.bspline, +v.surf.rst, +v.in.lidar, +v.in.ascii Added: grass/trunk/vector/v.lidar.edgedetection/v_lidar_edgedetection.png =================================================================== (Binary files differ) Property changes on: grass/trunk/vector/v.lidar.edgedetection/v_lidar_edgedetection.png ___________________________________________________________________ Added: svn:mime-type + image/png Added: grass/trunk/vector/v.lidar.edgedetection/v_lidar_edgedetection_objects.png =================================================================== (Binary files differ) Property changes on: grass/trunk/vector/v.lidar.edgedetection/v_lidar_edgedetection_objects.png ___________________________________________________________________ Added: svn:mime-type + image/png Modified: grass/trunk/vector/v.lidar.growing/v.lidar.growing.html =================================================================== --- grass/trunk/vector/v.lidar.growing/v.lidar.growing.html 2015-09-07 20:51:53 UTC (rev 66146) +++ grass/trunk/vector/v.lidar.growing/v.lidar.growing.html 2015-09-08 02:45:01 UTC (rev 66147) @@ -50,9 +50,12 @@

    SEE ALSO

    -v.lidar.edgedetection, -v.lidar.correction, -v.surf.bspline +v.lidar.edgedetection, +v.lidar.correction, +v.surf.bspline, +v.surf.rst, +v.in.lidar, +v.in.ascii

    AUTHOR

    From svn_grass at osgeo.org Tue Sep 8 01:32:24 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Tue, 8 Sep 2015 01:32:24 -0700 Subject: [GRASS-SVN] r66148 - grass/trunk/mswindows Message-ID: <20150908083224.A00053901C5@trac.osgeo.org> Author: hellik Date: 2015-09-08 01:32:24 -0700 (Tue, 08 Sep 2015) New Revision: 66148 Modified: grass/trunk/mswindows/GRASS-Installer.nsi.tmpl Log: GRASS-Installer.nsi: SetOnFile -> GrantOnFile Modified: grass/trunk/mswindows/GRASS-Installer.nsi.tmpl =================================================================== --- grass/trunk/mswindows/GRASS-Installer.nsi.tmpl 2015-09-08 02:45:01 UTC (rev 66147) +++ grass/trunk/mswindows/GRASS-Installer.nsi.tmpl 2015-09-08 08:32:24 UTC (rev 66148) @@ -529,7 +529,7 @@ File /r ${PACKAGE_FOLDER}\*.* ;grant modifying/overwriting fontcap file - AccessControl::SetOnFile "$INSTDIR\etc\fontcap" "(BU)" "GenericRead + GenericWrite + Delete" + AccessControl::GrantOnFile "$INSTDIR\etc\fontcap" "(BU)" "GenericRead + GenericWrite + Delete" ;create run_gmkfontcap.bat ClearErrors From svn_grass at osgeo.org Tue Sep 8 01:34:49 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Tue, 8 Sep 2015 01:34:49 -0700 Subject: [GRASS-SVN] r66149 - grass/branches/releasebranch_7_0/mswindows Message-ID: <20150908083449.8AA1B3901C5@trac.osgeo.org> Author: hellik Date: 2015-09-08 01:34:49 -0700 (Tue, 08 Sep 2015) New Revision: 66149 Modified: grass/branches/releasebranch_7_0/mswindows/GRASS-Installer.nsi.tmpl Log: GRASS-Installer.nsi: SetOnFile -> GrantOnFile Modified: grass/branches/releasebranch_7_0/mswindows/GRASS-Installer.nsi.tmpl =================================================================== --- grass/branches/releasebranch_7_0/mswindows/GRASS-Installer.nsi.tmpl 2015-09-08 08:32:24 UTC (rev 66148) +++ grass/branches/releasebranch_7_0/mswindows/GRASS-Installer.nsi.tmpl 2015-09-08 08:34:49 UTC (rev 66149) @@ -529,7 +529,7 @@ File /r ${PACKAGE_FOLDER}\*.* ;grant modifying/overwriting fontcap file - AccessControl::SetOnFile "$INSTDIR\etc\fontcap" "(BU)" "GenericRead + GenericWrite + Delete" + AccessControl::GrantOnFile "$INSTDIR\etc\fontcap" "(BU)" "GenericRead + GenericWrite + Delete" ;create run_gmkfontcap.bat ClearErrors From svn_grass at osgeo.org Tue Sep 8 09:35:14 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Tue, 8 Sep 2015 09:35:14 -0700 Subject: [GRASS-SVN] r66150 - grass/trunk/lib/init Message-ID: <20150908163515.024F03901C5@trac.osgeo.org> Author: neteler Date: 2015-09-08 09:35:14 -0700 (Tue, 08 Sep 2015) New Revision: 66150 Modified: grass/trunk/lib/init/grass7.html Log: grass7 manual: minor cosmetics Modified: grass/trunk/lib/init/grass7.html =================================================================== --- grass/trunk/lib/init/grass7.html 2015-09-08 08:34:49 UTC (rev 66149) +++ grass/trunk/lib/init/grass7.html 2015-09-08 16:35:14 UTC (rev 66150) @@ -186,7 +186,7 @@
    LOCATION
    A fully qualified path to a mapset - (eg /usr/local/share/grassdata/spearfish60/PERMANENT). This + (eg /usr/local/share/grassdata/spearfish70/PERMANENT). This environment variable overrides the GISDBASE, LOCATION_NAME, and MAPSET variables.
    GISDBASE @@ -229,7 +229,7 @@
    Start GRASS using the text-based user interface. The user will be prompted to choose the appropriate location and mapset. -
    grass71 $HOME/grassdata/spearfish60/user1 +
    grass71 $HOME/grassdata/spearfish70/user1
    Start GRASS using the default user interface and automatically launch into the given mapset, bypassing the mapset selection menu. @@ -299,9 +299,9 @@ The environment variables are defined as follows:
    -LOCATION = /usr/local/share/grassdata/spearfish60/PERMANENT
    +LOCATION = /usr/local/share/grassdata/spearfish70/PERMANENT
     GISDBASE = /usr/local/share/grassdata
    -LOCATION_NAME = spearfish60
    +LOCATION_NAME = spearfish70
     MAPSET = PERMANENT
     
    @@ -320,7 +320,7 @@
     GISDBASE = /usr/local/share/grassdata
    -LOCATION_NAME = spearfish60
    +LOCATION_NAME = spearfish70
     MAPSET = PERMANENT
     
    From svn_grass at osgeo.org Tue Sep 8 20:29:32 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Tue, 8 Sep 2015 20:29:32 -0700 Subject: [GRASS-SVN] r66151 - grass/trunk/raster/r.in.lidar Message-ID: <20150909032932.69DD03900F0@trac.osgeo.org> Author: wenzeslaus Date: 2015-09-08 20:29:32 -0700 (Tue, 08 Sep 2015) New Revision: 66151 Modified: grass/trunk/raster/r.in.lidar/Makefile grass/trunk/raster/r.in.lidar/main.c Log: r.in.lidar: use segment lib to enable different resolution for output Using Segment library is easier than implementing another segmentation similar to the existing one (based on rows); the impl. would also require way of getting the right row/col based on corrdinates. Leaving there the raster row based approach for cases when resolution of output is not set. It is faster since it does not create the segments. This fixes segfault and fatal when the resolution option was lower or higher than the current one (introduced in r66094). Deliberately not using the old formatting style. Modified: grass/trunk/raster/r.in.lidar/Makefile =================================================================== --- grass/trunk/raster/r.in.lidar/Makefile 2015-09-08 16:35:14 UTC (rev 66150) +++ grass/trunk/raster/r.in.lidar/Makefile 2015-09-09 03:29:32 UTC (rev 66151) @@ -2,8 +2,8 @@ PGM = r.in.lidar -LIBES = $(RASTERLIB) $(GISLIB) $(MATHLIB) $(GPROJLIB) $(LASLIBS) -DEPENDENCIES = $(RASTERDEP) $(GISDEP) +LIBES = $(RASTERLIB) $(GISLIB) $(MATHLIB) $(GPROJLIB) $(LASLIBS) $(SEGMENTLIB) +DEPENDENCIES = $(RASTERDEP) $(GISDEP) $(SEGMENTDEP) EXTRA_INC = $(PROJINC) $(LASINC) EXTRA_CFLAGS = $(GDALCFLAGS) Modified: grass/trunk/raster/r.in.lidar/main.c =================================================================== --- grass/trunk/raster/r.in.lidar/main.c 2015-09-08 16:35:14 UTC (rev 66150) +++ grass/trunk/raster/r.in.lidar/main.c 2015-09-09 03:29:32 UTC (rev 66151) @@ -24,6 +24,7 @@ #include #include #include +#include #include #include #include @@ -110,10 +111,12 @@ RASTER_MAP_TYPE rtype, base_raster_data_type; struct History history; char title[64]; + SEGMENT base_segment; void *n_array, *min_array, *max_array, *sum_array, *sumsq_array, *index_array, *base_array; void *raster_row, *ptr; struct Cell_head region; + struct Cell_head input_region; int rows, cols; /* scan box size */ int row, col; /* counters */ @@ -648,11 +651,34 @@ npasses = (int)ceil(1.0 * region.rows / rows); + /* using row-based chunks (used for output) when input and output + * region matches and using segment library when they don't */ + int use_segment = 0; + if (base_raster_opt->answer && res_opt->answer) + use_segment = 1; if (base_raster_opt->answer) { /* TODO: do we need to test existence first? mapset? */ base_raster = Rast_open_old(base_raster_opt->answer, ""); base_raster_data_type = Rast_get_map_type(base_raster); } + if (base_raster_opt->answer && use_segment) { + Rast_get_input_window(&input_region); /* we have split window */ + /* TODO: these numbers does not fit with what we promise about percentage */ + int segment_rows = 64; + /* writing goes row by row, so we use long segments as well */ + int segment_cols = cols; + int segments_in_memory = 4; + if (Segment_open(&base_segment, G_tempfile(), input_region.rows, input_region.cols, + segment_rows, segment_cols, + Rast_cell_size(base_raster_data_type), segments_in_memory) != 1) + G_fatal_error(_("Cannot create temporary file with segments of a raster map")); + for (row = 0; row < input_region.rows; row++) { + raster_row = Rast_allocate_input_buf(base_raster_data_type); + Rast_get_row(base_raster, raster_row, row, base_raster_data_type); + Segment_put_row(&base_segment, raster_row, row); + } + Rast_close(base_raster); /* we won't need the raster again */ + } if (!scan_flag->answer) { /* check if rows * (cols + 1) go into a size_t */ @@ -678,7 +704,7 @@ if (bin_index) index_array = G_calloc((size_t)rows * (cols + 1), Rast_cell_size(CELL_TYPE)); - if (base_raster_opt->answer) + if (base_raster_opt->answer && !use_segment) base_array = G_calloc((size_t)rows * (cols + 1), Rast_cell_size(base_raster_data_type)); /* we don't free the raster, we just use it again */ /* TODO: perhaps none of them needs to be freed */ @@ -881,6 +907,41 @@ } z -= base_z; } + else if (use_segment) { + double base_z; + off_t base_row = Rast_northing_to_row(y, &input_region); + off_t base_col = Rast_easting_to_col(x, &input_region); + /* skip points which are outside the base raster + * (null propagation) */ + if (base_row < 0 || base_col < 0 || + base_row >= input_region.rows || + base_col >= input_region.cols) + continue; + if (base_raster_data_type == DCELL_TYPE) { + DCELL value; + Segment_get(&base_segment, &value, base_row, base_col); + if (Rast_is_null_value(&value, base_raster_data_type)) + continue; + base_z = value; + } + else if (base_raster_data_type == FCELL_TYPE) { + + + FCELL value; + Segment_get(&base_segment, &value, base_row, base_col); + if (Rast_is_null_value(&value, base_raster_data_type)) + continue; + base_z = value; + } + else { + CELL value; + Segment_get(&base_segment, &value, base_row, base_col); + if (Rast_is_null_value(&value, base_raster_data_type)) + continue; + base_z = value; + } + z -= base_z; + } if (zrange_opt->answer) { if (z < zrange_min || z > zrange_max) { @@ -1255,6 +1316,8 @@ } if (base_array) Rast_close(base_raster); + if (use_segment) + Segment_close(&base_segment); } /* passes loop */ G_percent(1, 1, 1); /* flush */ From svn_grass at osgeo.org Wed Sep 9 02:16:14 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Wed, 9 Sep 2015 02:16:14 -0700 Subject: [GRASS-SVN] r66152 - grass-addons/grass7/raster/r.subdayprecip.design Message-ID: <20150909091614.B68333901C5@trac.osgeo.org> Author: martinl Date: 2015-09-09 02:16:14 -0700 (Wed, 09 Sep 2015) New Revision: 66152 Added: grass-addons/grass7/raster/r.subdayprecip.design/r_subdayprecip_design_basin.png grass-addons/grass7/raster/r.subdayprecip.design/r_subdayprecip_design_h_rast.png grass-addons/grass7/raster/r.subdayprecip.design/r_subdayprecip_design_result.png Modified: grass-addons/grass7/raster/r.subdayprecip.design/r.subdayprecip.design.html Log: r.subdayprecip.design: manual improved Modified: grass-addons/grass7/raster/r.subdayprecip.design/r.subdayprecip.design.html =================================================================== --- grass-addons/grass7/raster/r.subdayprecip.design/r.subdayprecip.design.html 2015-09-09 03:29:32 UTC (rev 66151) +++ grass-addons/grass7/raster/r.subdayprecip.design/r.subdayprecip.design.html 2015-09-09 09:16:14 UTC (rev 66152) @@ -1,31 +1,91 @@

    DESCRIPTION

    -r.subdayprecip.design computes subday design precipitation series. +r.subdayprecip.design computes reduction of subday design +precipitation series.

    -TODO +The tool uses methods of zonal statistics to compute average values of +design 24 hours precipitation for a selected area or for a spot. This +value is reduced to the chosen length design rain for selected period +of repetition. +

    NOTES

    + +Subday design precipitation series are important for hydrological +modelling and soil erosion problems in a small catchment scale when +designing common measures for promoting water retention, landscape +drainage systems, etc. + +

    +First automatization has been implemented by well-known method +which is based on reduction of 24 hours design precipitation to +shorter time. GIS is used for spatial supervised classification of +point values of specified repetition periods (2, 10, 20, 50 a 100 +years) over the area of the Czech Republic. + +

    + + + + + + + + + +
    Figure: Basins (in orange) with orthophoto
    on background
    Figure: Repetition periods (2, 10, 20, 50 years)
    in the area of the Czech Republic
    + + + +

    +Figure: Basins colored by H_002_60 value + +

    +

    EXAMPLE

     r.subdayprecip.design map=basin raster=H_002,H_005,H_010,H_020 rainlength=60
     
    +

    REFERENCES

    + + + +

    Acknowledgement

    + +This work has been supported by the research project QJ1520265 - +"Variability of Short-term Precipitation and Runoff in Small +Czech Drainage Basins and its Influence on Water Resources +Management". +

    SEE ALSO

    v.rast.stats -

    REFERENCES

    - - -

    AUTHORS

    -Martin Landa, OSGeoREL, Czech Technical University in Prague, Czech Republic
    +Martin Landa, OSGeoREL, Czech Technical University in Prague, Czech +Republic
    The module is inspired by Python script developed for +Esri ArcGIS platform by M. Tomasu in 2013 (see REFERENCES).

    Last changed: $Date $ Added: grass-addons/grass7/raster/r.subdayprecip.design/r_subdayprecip_design_basin.png =================================================================== (Binary files differ) Property changes on: grass-addons/grass7/raster/r.subdayprecip.design/r_subdayprecip_design_basin.png ___________________________________________________________________ Added: svn:mime-type + image/png Added: grass-addons/grass7/raster/r.subdayprecip.design/r_subdayprecip_design_h_rast.png =================================================================== (Binary files differ) Property changes on: grass-addons/grass7/raster/r.subdayprecip.design/r_subdayprecip_design_h_rast.png ___________________________________________________________________ Added: svn:mime-type + image/png Added: grass-addons/grass7/raster/r.subdayprecip.design/r_subdayprecip_design_result.png =================================================================== (Binary files differ) Property changes on: grass-addons/grass7/raster/r.subdayprecip.design/r_subdayprecip_design_result.png ___________________________________________________________________ Added: svn:mime-type + image/png From svn_grass at osgeo.org Wed Sep 9 09:29:19 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Wed, 9 Sep 2015 09:29:19 -0700 Subject: [GRASS-SVN] r66153 - in grass-addons/grass7/raster: . r.biodiversity Message-ID: <20150909162920.02BF33901C5@trac.osgeo.org> Author: pvanbosgeo Date: 2015-09-09 09:29:19 -0700 (Wed, 09 Sep 2015) New Revision: 66153 Added: grass-addons/grass7/raster/r.biodiversity/ grass-addons/grass7/raster/r.biodiversity/Makefile grass-addons/grass7/raster/r.biodiversity/r.biodiversity.py grass-addons/grass7/raster/r.biodiversity/r_biodiversity.html Log: Addon to calculate few (bio)diversity indici across layers (different from r.diversity, which computes landscape diversity using moving window). Suggestions to improve this much welcome. I am planning to add other indici later. Added: grass-addons/grass7/raster/r.biodiversity/Makefile =================================================================== --- grass-addons/grass7/raster/r.biodiversity/Makefile (rev 0) +++ grass-addons/grass7/raster/r.biodiversity/Makefile 2015-09-09 16:29:19 UTC (rev 66153) @@ -0,0 +1,7 @@ +MODULE_TOPDIR = ../.. + +PGM = r.biodiversity + +include $(MODULE_TOPDIR)/include/Make/Script.make + +default: script Property changes on: grass-addons/grass7/raster/r.biodiversity/Makefile ___________________________________________________________________ Added: svn:mime-type + text/x-makefile Added: svn:eol-style + native Added: grass-addons/grass7/raster/r.biodiversity/r.biodiversity.py =================================================================== --- grass-addons/grass7/raster/r.biodiversity/r.biodiversity.py (rev 0) +++ grass-addons/grass7/raster/r.biodiversity/r.biodiversity.py 2015-09-09 16:29:19 UTC (rev 66153) @@ -0,0 +1,319 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +######################################################################## +# +# MODULE: r.biodiversity +# AUTHOR(S): Paulo van Breugel +# PURPOSE: Compute biodiversity indici over input layers +# +# COPYRIGHT: (C) 2014 Paulo van Breugel +# http://ecodiv.org +# http://pvanb.wordpress.com/ +# +# This program is free software under the GNU General Public +# License (>=v2). Read the file COPYING that comes with GRASS +# for details. +# +######################################################################## +# +#%Module +#% description: Compute biodiversity indici over input layers +#% keyword: raster +#% keyword: diversity index +#% keyword: renyi entrophy +#% keyword: shannon +#% keyword: simpson +#% keyword: richness +#% keyword: biodiversity +#%End + +#%option +#% key: input +#% type: string +#% gisprompt: old,cell,raster +#% description: input layers +#% label: input layers +#% key_desc: name +#% required: yes +#% multiple: yes +#%end + +#%option +#% key: output +#% type: string +#% gisprompt: new,cell,raster +#% description: prefix name output layer +#% key_desc: name +#% required: yes +#% multiple: no +#%end + +#%flag +#% key: r +#% description: Compute the renyi enthropy index +#% guisection: Indices +#%end + +#%option +#% key: alpha +#% type: double +#% description: Order of generalized entropy +#% key_desc: number(s) +#% multiple: yes +#% options: 0.0-* +#% guisection: Indices +#%end + +#%rules +#% collective: -r,alpha +#%end + +#%flag +#% key: s +#% description: Compute the richness index +#% guisection: Indices +#%end + +#%flag +#% key: h +#% description: Compute the Shannon index +#% guisection: Indices +#%end + +#%flag +#% key: d +#% description: Compute the Simpson index +#% guisection: Indices +#%end + +#%flag +#% key: p +#% description: Compute the Reversed Simpson index +#% guisection: Indices +#%end + +#%flag +#% key: g +#% description: Compute the Gini-Simpson index +#% guisection: Indices +#%end + +#%rules +#% required: -r,-s,-h,-d,-p,-g +#%end + +#---------------------------------------------------------------------------- +# Standard +#---------------------------------------------------------------------------- + +# import libraries +import os +import sys +import uuid +import atexit +import string +import grass.script as grass +if not os.environ.has_key("GISBASE"): + grass.message( "You must be in GRASS GIS to run this program." ) + sys.exit(1) + +#---------------------------------------------------------------------------- +# Functions +#---------------------------------------------------------------------------- + +# create set to store names of temporary maps to be deleted upon exit +clean_rast = set() +def cleanup(): + for rast in clean_rast: + grass.run_command("g.remove", + type="rast", name = rast, quiet = True) + +def CheckLayer(envlay): + for chl in xrange(len(envlay)): + ffile = grass.find_file(envlay[chl], element = 'cell') + if ffile['fullname'] == '': + grass.fatal("The layer " + envlay[chl] + " does not exist.") + +# Create temporary name +def tmpname(name): + tmpf = name + "_" + str(uuid.uuid4()) + tmpf = string.replace(tmpf, '-', '_') + clean_rast.add(tmpf) + return tmpf + +#---------------------------------------------------------------------------- +# main function +#---------------------------------------------------------------------------- + +def main(): + #options = {"input":"spec1,spec2", "output":"test", "alpha":""} + #flags = {"r":"False", "s":True, "h":True, "d":True, "p":True, "g":False} + + #-------------------------------------------------------------------------- + # Variables + #-------------------------------------------------------------------------- + + # Layers + OUT = options['output'] + IN = options['input'] + IN = IN.split(',') + CheckLayer(IN) + + # Diversity indici + flag_r = flags['r'] + flag_s = flags['s'] + flag_h = flags['h'] + flag_d = flags['d'] + flag_p = flags['p'] + flag_g = flags['g'] + if options['alpha']: + Q = map(float, options['alpha'].split(',')) + else: + Q = map(float, []) + Qoriginal = list(Q) + + #-------------------------------------------------------------------------- + # Create list of what need to be computed + #-------------------------------------------------------------------------- + if not flag_r: + flag_r = [] + if flag_s and not 0.0 in Q: + Q.append(0.0) + if flag_h and not 1.0 in Q: + Q.append(1.0) + if flag_d and not 2.0 in Q: + Q.append(2.0) + if flag_p and not 2.0 in Q: + Q.append(2.0) + if flag_g and not 2.0 in Q: + Q.append(2.0) + + #-------------------------------------------------------------------------- + # Renyi entropy + #-------------------------------------------------------------------------- + tmpt = tmpname("sht") + clean_rast.add(tmpt) + grass.run_command("r.series", quiet=True, output=tmpt, + input=IN, method="sum") + + for n in xrange(len(Q)): + + Qn = str(Q[n]) + Qn = Qn.replace('.', '_') + out_renyi = OUT + "_Renyi_" + Qn + tmpl = [] + + if Q[n] == 1: + # When alpha = 1 + for i in xrange(len(IN)): + tmpi = tmpname('shi' + str(i) + "_") + tmpl.append(tmpi) + clean_rast.add(tmpi) + grass.mapcalc("$tmpi = ($inl/$tmpt) * log(($inl/$tmpt))", + tmpi=tmpi, + inl=IN[i], + tmpt=tmpt, + quiet=True) + grass.run_command("r.series", output=out_renyi, input=tmpl, + method="sum", quiet=True) + grass.mapcalc("$outl = -1 * $outl", + outl=out_renyi, + overwrite=True, + quiet=True) + else: + # If alpha != 1 + for i in xrange(len(IN)): + tmpi = tmpname('reni') + tmpl.append(tmpi) + grass.mapcalc("$tmpi = pow($inl/$tmpt,$alpha)", + tmpi=tmpi, + tmpt=tmpt, + inl=IN[i], + alpha=Q[n], + quiet=True) + grass.run_command("r.series", output=out_renyi, input=tmpl, + method="sum", quiet=True, overwrite=True) + grass.mapcalc("$outl = (1/(1-$alpha)) * log($outl)", + outl=out_renyi, + alpha=Q[n], + overwrite=True, + quiet=True) + grass.run_command("g.remove", type="raster", + name=tmpl, flags="f", quiet=True) + + #-------------------------------------------------------------------------- + # Species richness + #-------------------------------------------------------------------------- + if flag_s: + out_div = OUT + "_richness" + in_div = OUT + "_Renyi_0_0" + grass.mapcalc("$out_div = exp($in_div)", + out_div=out_div, + in_div=in_div, + quiet=True) + if 0.0 not in Qoriginal: + grass.run_command("g.remove", flags="f", type="raster", + name=in_div, quiet=True) + + #-------------------------------------------------------------------------- + # Shannon index + #-------------------------------------------------------------------------- + if flag_h: + out_div = OUT + "_shannon" + in_div = OUT + "_Renyi_1_0" + if 1.0 in Qoriginal: + grass.run_command("g.copy", raster=(in_div,out_div), quiet=True) + else: + grass.run_command("g.rename", raster=(in_div,out_div), quiet=True) + + #-------------------------------------------------------------------------- + # Simpson index + #-------------------------------------------------------------------------- + if flag_d: + out_div = OUT + "_simpson" + in_div = OUT + "_Renyi_2_0" + grass.mapcalc("$out_div = 1.0 / (exp($in_div))", + out_div=out_div, + in_div=in_div, + quiet=True) + if 2.0 not in Qoriginal: + grass.run_command("g.remove", flags="f", type="raster", + name=in_div, quiet=True) + + #-------------------------------------------------------------------------- + # Inversed Simpson index + #-------------------------------------------------------------------------- + if flag_d: + out_div = OUT + "_invsimpson" + in_div = OUT + "_Renyi_2_0" + grass.mapcalc("$out_div = exp($in_div)", + out_div=out_div, + in_div=in_div, + quiet=True) + if 2.0 not in Qoriginal: + grass.run_command("g.remove", flags="f", type="raster", + name=in_div, quiet=True) + + #-------------------------------------------------------------------------- + # Gini Simpson index + #-------------------------------------------------------------------------- + if flag_d: + out_div = OUT + "_ginisimpson" + in_div = OUT + "_Renyi_2_0" + grass.mapcalc("$out_div = 1.0 - (1.0 / exp($in_div))", + out_div=out_div, + in_div=in_div, + quiet=True) + if 2.0 not in Qoriginal: + grass.run_command("g.remove", flags="f", type="raster", + name=in_div, quiet=True) + + # Clean up temporary files + grass.run_command("g.remove", type="raster", name=tmpt, + flags="f", quiet=True) + +if __name__ == "__main__": + options, flags = grass.parser() + atexit.register(cleanup) + sys.exit(main()) Property changes on: grass-addons/grass7/raster/r.biodiversity/r.biodiversity.py ___________________________________________________________________ Added: svn:executable + * Added: svn:mime-type + text/x-python Added: svn:eol-style + native Added: grass-addons/grass7/raster/r.biodiversity/r_biodiversity.html =================================================================== --- grass-addons/grass7/raster/r.biodiversity/r_biodiversity.html (rev 0) +++ grass-addons/grass7/raster/r.biodiversity/r_biodiversity.html 2015-09-09 16:29:19 UTC (rev 66153) @@ -0,0 +1,140 @@ +

    DESCRIPTION

    + +

    r.biodiversity computes one or more biodiversity indici +based on 2 or more input layers. Each layer should represents a +species (or other categories being used), and its raster values the +species count. The name of the output layers will consist of the +base name provided by the user. + +

    Currently implemented are the R?nyi entropy index and three +specialized cases of the Renyi enthropy, viz.the species richness, the +Shannon index and the Simpson index (Legendre & Legendre, 1998). + +

    The Renyi enthropy

    + +This index uantify the diversity, uncertainty, or randomness of a +system. The user can define the order of diversity by setting the +order (alpha) value. The order of a diversity indicates its +sensitivity to common and rare species. The diversity of order zero +( alpha = 0) is completely insensitive to species +frequencies and is better known as species richness. Increasing the +order diminishes the relative weights of rare species in the +resulting index (Jost 2006, Legendre & Legendre 1998). The name of +the output layer is composed of the basename + renyi + alpha. + +

    Species richness

    + +

    The species richness is simply the count of the number of layers. +It is a special case of the Reny enthropy:

    s = exp(R0)
    , +whereby s is the species richness R0 the renyi index +for alpha=0. The name of the output layer is composed of the basename + +richness. + +

    Shannon index

    + +

    The Shannon (also called the Shannon?Weaver or Shannon?Wiener) +index is defined as

    H = -sum(p_i x log(p_i))
    , where p_i + is the proportional abundance of species i. The +r.biodiversity uses the natural logarithm (one can also use other +bases for the log, but that is currently not implemented, and +doesn't make a real difference). Note the Shannon index is a special +case of the Renyi enthropy for alpha = 2. The name of the output +layer is composed of the basename + shannon. + +

    Simpson (concentration) index

    + +

    The Simpson's index is defined as

    D = sum p_i^2
    . This +is equivalent to
    -1 * 1 / exp(R2)
    , with R2 the renyi +index for alpha=2. With this index, 0 represents infinite +diversity and 1, no diversity. The name of the output +layer is composed of the basename + simpson. + +

    Inverse Simpson index (Simpson's Reciprocal Index)

    + +

    D obtains small values in datasets of high diversity and large +values in datasets of low diversity. This is counterintuitive +behavior for a diversity index. An alternative is the inverse +Simpson index, which is

    ID = 1 / D)
    . The index represents +the probability that two individuals randomly selected from a sample +will belong to different species. The value ranges between 0 and 1, +but now, the greater the value, the greater the sample diversity. +The name of the output layer is composed of the basename + invsimpson. + +

    Gini?Simpson index

    + +

    An alternative way to overcome the problem of the +counter-intuitive nature of Simpson's Index is to use

    1 - D)
    . The lowest value of +this index is 1 and represent a community containing only one +species. The higher the value, the greater the diversity. The +maximum value is the number of species in the sample. The name of the output +layer is composed of the basename + ginisimpson. + +

    NOTES

    + +

    Note that if you are interested in the landscape diversity, you +should have a look at the +r.diversity addon or the various related r.li.* addons (see +below). These functions requires one input layer and compute the +diversity using a moving window. + +

    EXAMPLES

    + +

    Suppose we have five layers, each representing number of +individuals of a different species. To keep it simple, let's assume +individuals of all five species are homogeneous distributed, with +respectively 60, 10, 25, 1 and 4 individuals / raster cell densities. + +

    +r.mapcalc "spec1 = 60"
    +r.mapcalc "spec2 = 10"
    +r.mapcalc "spec3 = 25"
    +r.mapcalc "spec4 = 1"
    +r.mapcalc "spec5 = 4"
    +
    + +Now we can calculate the renyi index for alpha is 0, 1 and 2 (this +will give you 1.61, 1.06 and 0.83 respectively) + +
    +r.biodiversity in=spec1,spec2,spec3,spec4,spec5 out=renyi alpha=0,1,2
    +
    + +You can also compute the species richness, shannon, simpson, inverse +simpson and gini-simpson indici + +
    +r.biodiversity -s -h -d -p -g in=spec1,spec2,spec3,spec4,spec5 out=biodiversity
    +
    + +The species richness you get should of course be 5. The shannon +index is the same as the renyi index with alpha=1 (1.06). The +simpson should be 0.43, and inverse simpson and gini-simpson will be +2.3 and 0.57 respectively. + +

    SEE ALSO

    +1 +r.li, +60 r.li.pielou, +61 r.li.renyi, +62 r.li.shannon, +63 r.li.simpson + +153 + +

    CITATION

    Suggested citation:

    van Breugel P, +r.biodiversity, a grass addon to compute biodiversity indici based +on 2 or more input layers. Available from +https://grass.osgeo.org/grass70/manuals/addons/r.biodiversity.html + +

    REFERENCES

    +
      +
    • Jost L. 2006. Entropy and diversity. Oikos 113:363?75
    • +
    • Legendre P, Legendre L. 1998. Numerical Ecology. Second English edition. Elsevier, Amsterdam
    • +
    + + +

    AUTHOR

    +Paulo van Breugel, paulo at ecodiv.org + +

    Last changed: $Date$ Property changes on: grass-addons/grass7/raster/r.biodiversity/r_biodiversity.html ___________________________________________________________________ Added: svn:mime-type + text/html Added: svn:keywords + Author Date Id Added: svn:eol-style + native From svn_grass at osgeo.org Wed Sep 9 09:30:02 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Wed, 9 Sep 2015 09:30:02 -0700 Subject: [GRASS-SVN] r66154 - grass-addons/grass7/raster/r.biodiversity Message-ID: <20150909163002.19D593901C5@trac.osgeo.org> Author: pvanbosgeo Date: 2015-09-09 09:30:02 -0700 (Wed, 09 Sep 2015) New Revision: 66154 Added: grass-addons/grass7/raster/r.biodiversity/r.biodiversity.html Removed: grass-addons/grass7/raster/r.biodiversity/r_biodiversity.html Log: Sorry, typo in name html file Copied: grass-addons/grass7/raster/r.biodiversity/r.biodiversity.html (from rev 66153, grass-addons/grass7/raster/r.biodiversity/r_biodiversity.html) =================================================================== --- grass-addons/grass7/raster/r.biodiversity/r.biodiversity.html (rev 0) +++ grass-addons/grass7/raster/r.biodiversity/r.biodiversity.html 2015-09-09 16:30:02 UTC (rev 66154) @@ -0,0 +1,140 @@ +

    DESCRIPTION

    + +

    r.biodiversity computes one or more biodiversity indici +based on 2 or more input layers. Each layer should represents a +species (or other categories being used), and its raster values the +species count. The name of the output layers will consist of the +base name provided by the user. + +

    Currently implemented are the R?nyi entropy index and three +specialized cases of the Renyi enthropy, viz.the species richness, the +Shannon index and the Simpson index (Legendre & Legendre, 1998). + +

    The Renyi enthropy

    + +This index uantify the diversity, uncertainty, or randomness of a +system. The user can define the order of diversity by setting the +order (alpha) value. The order of a diversity indicates its +sensitivity to common and rare species. The diversity of order zero +( alpha = 0) is completely insensitive to species +frequencies and is better known as species richness. Increasing the +order diminishes the relative weights of rare species in the +resulting index (Jost 2006, Legendre & Legendre 1998). The name of +the output layer is composed of the basename + renyi + alpha. + +

    Species richness

    + +

    The species richness is simply the count of the number of layers. +It is a special case of the Reny enthropy:

    s = exp(R0)
    , +whereby s is the species richness R0 the renyi index +for alpha=0. The name of the output layer is composed of the basename + +richness. + +

    Shannon index

    + +

    The Shannon (also called the Shannon?Weaver or Shannon?Wiener) +index is defined as

    H = -sum(p_i x log(p_i))
    , where p_i + is the proportional abundance of species i. The +r.biodiversity uses the natural logarithm (one can also use other +bases for the log, but that is currently not implemented, and +doesn't make a real difference). Note the Shannon index is a special +case of the Renyi enthropy for alpha = 2. The name of the output +layer is composed of the basename + shannon. + +

    Simpson (concentration) index

    + +

    The Simpson's index is defined as

    D = sum p_i^2
    . This +is equivalent to
    -1 * 1 / exp(R2)
    , with R2 the renyi +index for alpha=2. With this index, 0 represents infinite +diversity and 1, no diversity. The name of the output +layer is composed of the basename + simpson. + +

    Inverse Simpson index (Simpson's Reciprocal Index)

    + +

    D obtains small values in datasets of high diversity and large +values in datasets of low diversity. This is counterintuitive +behavior for a diversity index. An alternative is the inverse +Simpson index, which is

    ID = 1 / D)
    . The index represents +the probability that two individuals randomly selected from a sample +will belong to different species. The value ranges between 0 and 1, +but now, the greater the value, the greater the sample diversity. +The name of the output layer is composed of the basename + invsimpson. + +

    Gini?Simpson index

    + +

    An alternative way to overcome the problem of the +counter-intuitive nature of Simpson's Index is to use

    1 - D)
    . The lowest value of +this index is 1 and represent a community containing only one +species. The higher the value, the greater the diversity. The +maximum value is the number of species in the sample. The name of the output +layer is composed of the basename + ginisimpson. + +

    NOTES

    + +

    Note that if you are interested in the landscape diversity, you +should have a look at the +r.diversity addon or the various related r.li.* addons (see +below). These functions requires one input layer and compute the +diversity using a moving window. + +

    EXAMPLES

    + +

    Suppose we have five layers, each representing number of +individuals of a different species. To keep it simple, let's assume +individuals of all five species are homogeneous distributed, with +respectively 60, 10, 25, 1 and 4 individuals / raster cell densities. + +

    +r.mapcalc "spec1 = 60"
    +r.mapcalc "spec2 = 10"
    +r.mapcalc "spec3 = 25"
    +r.mapcalc "spec4 = 1"
    +r.mapcalc "spec5 = 4"
    +
    + +Now we can calculate the renyi index for alpha is 0, 1 and 2 (this +will give you 1.61, 1.06 and 0.83 respectively) + +
    +r.biodiversity in=spec1,spec2,spec3,spec4,spec5 out=renyi alpha=0,1,2
    +
    + +You can also compute the species richness, shannon, simpson, inverse +simpson and gini-simpson indici + +
    +r.biodiversity -s -h -d -p -g in=spec1,spec2,spec3,spec4,spec5 out=biodiversity
    +
    + +The species richness you get should of course be 5. The shannon +index is the same as the renyi index with alpha=1 (1.06). The +simpson should be 0.43, and inverse simpson and gini-simpson will be +2.3 and 0.57 respectively. + +

    SEE ALSO

    +1 +r.li, +60 r.li.pielou, +61 r.li.renyi, +62 r.li.shannon, +63 r.li.simpson + +153 + +

    CITATION

    Suggested citation:

    van Breugel P, +r.biodiversity, a grass addon to compute biodiversity indici based +on 2 or more input layers. Available from +https://grass.osgeo.org/grass70/manuals/addons/r.biodiversity.html + +

    REFERENCES

    +
      +
    • Jost L. 2006. Entropy and diversity. Oikos 113:363?75
    • +
    • Legendre P, Legendre L. 1998. Numerical Ecology. Second English edition. Elsevier, Amsterdam
    • +
    + + +

    AUTHOR

    +Paulo van Breugel, paulo at ecodiv.org + +

    Last changed: $Date$ Deleted: grass-addons/grass7/raster/r.biodiversity/r_biodiversity.html =================================================================== --- grass-addons/grass7/raster/r.biodiversity/r_biodiversity.html 2015-09-09 16:29:19 UTC (rev 66153) +++ grass-addons/grass7/raster/r.biodiversity/r_biodiversity.html 2015-09-09 16:30:02 UTC (rev 66154) @@ -1,140 +0,0 @@ -

    DESCRIPTION

    - -

    r.biodiversity computes one or more biodiversity indici -based on 2 or more input layers. Each layer should represents a -species (or other categories being used), and its raster values the -species count. The name of the output layers will consist of the -base name provided by the user. - -

    Currently implemented are the R?nyi entropy index and three -specialized cases of the Renyi enthropy, viz.the species richness, the -Shannon index and the Simpson index (Legendre & Legendre, 1998). - -

    The Renyi enthropy

    - -This index uantify the diversity, uncertainty, or randomness of a -system. The user can define the order of diversity by setting the -order (alpha) value. The order of a diversity indicates its -sensitivity to common and rare species. The diversity of order zero -( alpha = 0) is completely insensitive to species -frequencies and is better known as species richness. Increasing the -order diminishes the relative weights of rare species in the -resulting index (Jost 2006, Legendre & Legendre 1998). The name of -the output layer is composed of the basename + renyi + alpha. - -

    Species richness

    - -

    The species richness is simply the count of the number of layers. -It is a special case of the Reny enthropy:

    s = exp(R0)
    , -whereby s is the species richness R0 the renyi index -for alpha=0. The name of the output layer is composed of the basename + -richness. - -

    Shannon index

    - -

    The Shannon (also called the Shannon?Weaver or Shannon?Wiener) -index is defined as

    H = -sum(p_i x log(p_i))
    , where p_i - is the proportional abundance of species i. The -r.biodiversity uses the natural logarithm (one can also use other -bases for the log, but that is currently not implemented, and -doesn't make a real difference). Note the Shannon index is a special -case of the Renyi enthropy for alpha = 2. The name of the output -layer is composed of the basename + shannon. - -

    Simpson (concentration) index

    - -

    The Simpson's index is defined as

    D = sum p_i^2
    . This -is equivalent to
    -1 * 1 / exp(R2)
    , with R2 the renyi -index for alpha=2. With this index, 0 represents infinite -diversity and 1, no diversity. The name of the output -layer is composed of the basename + simpson. - -

    Inverse Simpson index (Simpson's Reciprocal Index)

    - -

    D obtains small values in datasets of high diversity and large -values in datasets of low diversity. This is counterintuitive -behavior for a diversity index. An alternative is the inverse -Simpson index, which is

    ID = 1 / D)
    . The index represents -the probability that two individuals randomly selected from a sample -will belong to different species. The value ranges between 0 and 1, -but now, the greater the value, the greater the sample diversity. -The name of the output layer is composed of the basename + invsimpson. - -

    Gini?Simpson index

    - -

    An alternative way to overcome the problem of the -counter-intuitive nature of Simpson's Index is to use

    1 - D)
    . The lowest value of -this index is 1 and represent a community containing only one -species. The higher the value, the greater the diversity. The -maximum value is the number of species in the sample. The name of the output -layer is composed of the basename + ginisimpson. - -

    NOTES

    - -

    Note that if you are interested in the landscape diversity, you -should have a look at the -r.diversity addon or the various related r.li.* addons (see -below). These functions requires one input layer and compute the -diversity using a moving window. - -

    EXAMPLES

    - -

    Suppose we have five layers, each representing number of -individuals of a different species. To keep it simple, let's assume -individuals of all five species are homogeneous distributed, with -respectively 60, 10, 25, 1 and 4 individuals / raster cell densities. - -

    -r.mapcalc "spec1 = 60"
    -r.mapcalc "spec2 = 10"
    -r.mapcalc "spec3 = 25"
    -r.mapcalc "spec4 = 1"
    -r.mapcalc "spec5 = 4"
    -
    - -Now we can calculate the renyi index for alpha is 0, 1 and 2 (this -will give you 1.61, 1.06 and 0.83 respectively) - -
    -r.biodiversity in=spec1,spec2,spec3,spec4,spec5 out=renyi alpha=0,1,2
    -
    - -You can also compute the species richness, shannon, simpson, inverse -simpson and gini-simpson indici - -
    -r.biodiversity -s -h -d -p -g in=spec1,spec2,spec3,spec4,spec5 out=biodiversity
    -
    - -The species richness you get should of course be 5. The shannon -index is the same as the renyi index with alpha=1 (1.06). The -simpson should be 0.43, and inverse simpson and gini-simpson will be -2.3 and 0.57 respectively. - -

    SEE ALSO

    -1 -r.li, -60 r.li.pielou, -61 r.li.renyi, -62 r.li.shannon, -63 r.li.simpson - -153 - -

    CITATION

    Suggested citation:

    van Breugel P, -r.biodiversity, a grass addon to compute biodiversity indici based -on 2 or more input layers. Available from -https://grass.osgeo.org/grass70/manuals/addons/r.biodiversity.html - -

    REFERENCES

    -
      -
    • Jost L. 2006. Entropy and diversity. Oikos 113:363?75
    • -
    • Legendre P, Legendre L. 1998. Numerical Ecology. Second English edition. Elsevier, Amsterdam
    • -
    - - -

    AUTHOR

    -Paulo van Breugel, paulo at ecodiv.org - -

    Last changed: $Date$ From svn_grass at osgeo.org Wed Sep 9 11:21:10 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Wed, 9 Sep 2015 11:21:10 -0700 Subject: [GRASS-SVN] r66155 - in grass/trunk: . lib/rst lib/vector/dglib Message-ID: <20150909182110.BAD99390108@trac.osgeo.org> Author: neteler Date: 2015-09-09 11:21:10 -0700 (Wed, 09 Sep 2015) New Revision: 66155 Modified: grass/trunk/grasslib.dox grass/trunk/lib/rst/rstlib.dox grass/trunk/lib/vector/dglib/dglib.dox Log: progman: title cosmetics Modified: grass/trunk/grasslib.dox =================================================================== --- grass/trunk/grasslib.dox 2015-09-09 16:30:02 UTC (rev 66154) +++ grass/trunk/grasslib.dox 2015-09-09 18:21:10 UTC (rev 66155) @@ -66,7 +66,7 @@ - pngdriver: \ref pngdriverlib - psdriver: \ref psdriverlib -\subsection statslibs Math and Statisctics Libraries +\subsection statslibs Math and Statistics Libraries - arraystats: \ref arraystatslib (library of statistics for arrays of doubles) - cdhc: \ref cdhclib Modified: grass/trunk/lib/rst/rstlib.dox =================================================================== --- grass/trunk/lib/rst/rstlib.dox 2015-09-09 16:30:02 UTC (rev 66154) +++ grass/trunk/lib/rst/rstlib.dox 2015-09-09 18:21:10 UTC (rev 66155) @@ -1,4 +1,4 @@ -/*! \page rstlib Library for interpolation with regularized splines with tension +/*! \page rstlib GRASS Library for interpolation with regularized splines with tension \tableofcontents Modified: grass/trunk/lib/vector/dglib/dglib.dox =================================================================== --- grass/trunk/lib/vector/dglib/dglib.dox 2015-09-09 16:30:02 UTC (rev 66154) +++ grass/trunk/lib/vector/dglib/dglib.dox 2015-09-09 18:21:10 UTC (rev 66155) @@ -1,4 +1,4 @@ -/*! \page dglib Directed Graph Library +/*! \page dglib GRASS Directed Graph Library by GRASS Development Team (http://grass.osgeo.org) From svn_grass at osgeo.org Thu Sep 10 01:35:30 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Thu, 10 Sep 2015 01:35:30 -0700 Subject: [GRASS-SVN] r66156 - grass-addons/grass7/raster/r.biodiversity Message-ID: <20150910083530.CB67239012E@trac.osgeo.org> Author: pvanbosgeo Date: 2015-09-10 01:35:30 -0700 (Thu, 10 Sep 2015) New Revision: 66156 Modified: grass-addons/grass7/raster/r.biodiversity/r.biodiversity.py Log: Bug fix Modified: grass-addons/grass7/raster/r.biodiversity/r.biodiversity.py =================================================================== --- grass-addons/grass7/raster/r.biodiversity/r.biodiversity.py 2015-09-09 18:21:10 UTC (rev 66155) +++ grass-addons/grass7/raster/r.biodiversity/r.biodiversity.py 2015-09-10 08:35:30 UTC (rev 66156) @@ -277,28 +277,28 @@ out_div=out_div, in_div=in_div, quiet=True) - if 2.0 not in Qoriginal: + if 2.0 not in Qoriginal and not flag_p and not flag_g: grass.run_command("g.remove", flags="f", type="raster", name=in_div, quiet=True) #-------------------------------------------------------------------------- # Inversed Simpson index #-------------------------------------------------------------------------- - if flag_d: + if flag_p: out_div = OUT + "_invsimpson" in_div = OUT + "_Renyi_2_0" grass.mapcalc("$out_div = exp($in_div)", out_div=out_div, in_div=in_div, quiet=True) - if 2.0 not in Qoriginal: + if 2.0 not in Qoriginal and not flag_g: grass.run_command("g.remove", flags="f", type="raster", name=in_div, quiet=True) #-------------------------------------------------------------------------- # Gini Simpson index #-------------------------------------------------------------------------- - if flag_d: + if flag_g: out_div = OUT + "_ginisimpson" in_div = OUT + "_Renyi_2_0" grass.mapcalc("$out_div = 1.0 - (1.0 / exp($in_div))", From svn_grass at osgeo.org Thu Sep 10 03:51:03 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Thu, 10 Sep 2015 03:51:03 -0700 Subject: [GRASS-SVN] r66157 - grass/trunk/vector/v.what.rast Message-ID: <20150910105103.F102C39012E@trac.osgeo.org> Author: neteler Date: 2015-09-10 03:51:03 -0700 (Thu, 10 Sep 2015) New Revision: 66157 Modified: grass/trunk/vector/v.what.rast/v.what.rast.html Log: v.what.rast manual: improved examples Modified: grass/trunk/vector/v.what.rast/v.what.rast.html =================================================================== --- grass/trunk/vector/v.what.rast/v.what.rast.html 2015-09-10 08:35:30 UTC (rev 66156) +++ grass/trunk/vector/v.what.rast/v.what.rast.html 2015-09-10 10:51:03 UTC (rev 66157) @@ -43,37 +43,52 @@

    EXAMPLES

    -A) Reading values from raster map at position of vector points, - writing these values into a column of the attribute table - connected to the vector map: -
    +

    Transferring raster values into existing attribute table of vector points map

    +Reading values from raster map at position of vector points, +writing these values into a column of the attribute table +connected to the vector map: +

    +

    -v.what.rast map=pnts raster=elevation column=heights
    +# work on copy of original geodetic points map
    +g.copy vector=geodetic_pts,mygeodetic_pts
    +
    +# set computational region to raster map to be queried
    +g.region raster=elev_state_500m -p
    +
    +# add new column to existing table
    +v.db.addcolumn map=mygeodetic_pts column="height double precision"
    +v.what.rast map=mygeodetic_pts raster=elev_state_500m column=height
    +
    +# compare official geodetic heights to those of elevation model
    +v.db.select map=mygeodetic_pts columns=Z_VALUE,height separator=comma
     
    +

    Transferring raster values into new vector points map

    + +In case of a vector map without attached attribute table, first add +a new attribute table. This table is then populated with values +queried from the raster map:

    -B) In case of a vector map without attached attribute table, first add - a new attribute table. This table is then populated with values - queried from the raster map: -

     # create new random vector points map
     v.random pnts n=100
     
     # add new table, link to map
    -v.db.addtable pnts column="heights double precision"
    +v.db.addtable map=pnts column="height double precision"
     
    +# set computational region to raster map to be queried
    +g.region raster=elevation -p
     # query raster map and upload values to vector table into specified column
    -g.region raster=elevation -p
    -v.what.rast map=pnts raster=elevation column=heights
    +v.what.rast map=pnts raster=elevation column=height
     
     # verify new attribute table:
     v.db.select pnts
     
     # verify statistics of uploaded values:
    -v.univar map=pnts column=heights type=point
    +v.univar map=pnts column=height type=point
     
    From svn_grass at osgeo.org Thu Sep 10 03:51:40 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Thu, 10 Sep 2015 03:51:40 -0700 Subject: [GRASS-SVN] r66158 - grass/branches/releasebranch_7_0/vector/v.what.rast Message-ID: <20150910105140.870A939012E@trac.osgeo.org> Author: neteler Date: 2015-09-10 03:51:40 -0700 (Thu, 10 Sep 2015) New Revision: 66158 Modified: grass/branches/releasebranch_7_0/vector/v.what.rast/v.what.rast.html Log: v.what.rast manual: improved examples Modified: grass/branches/releasebranch_7_0/vector/v.what.rast/v.what.rast.html =================================================================== --- grass/branches/releasebranch_7_0/vector/v.what.rast/v.what.rast.html 2015-09-10 10:51:03 UTC (rev 66157) +++ grass/branches/releasebranch_7_0/vector/v.what.rast/v.what.rast.html 2015-09-10 10:51:40 UTC (rev 66158) @@ -43,37 +43,52 @@

    EXAMPLES

    -A) Reading values from raster map at position of vector points, - writing these values into a column of the attribute table - connected to the vector map: -
    +

    Transferring raster values into existing attribute table of vector points map

    +Reading values from raster map at position of vector points, +writing these values into a column of the attribute table +connected to the vector map: +

    +

    -v.what.rast map=pnts raster=elevation column=heights
    +# work on copy of original geodetic points map
    +g.copy vector=geodetic_pts,mygeodetic_pts
    +
    +# set computational region to raster map to be queried
    +g.region raster=elev_state_500m -p
    +
    +# add new column to existing table
    +v.db.addcolumn map=mygeodetic_pts column="height double precision"
    +v.what.rast map=mygeodetic_pts raster=elev_state_500m column=height
    +
    +# compare official geodetic heights to those of elevation model
    +v.db.select map=mygeodetic_pts columns=Z_VALUE,height separator=comma
     
    +

    Transferring raster values into new vector points map

    + +In case of a vector map without attached attribute table, first add +a new attribute table. This table is then populated with values +queried from the raster map:

    -B) In case of a vector map without attached attribute table, first add - a new attribute table. This table is then populated with values - queried from the raster map: -

     # create new random vector points map
     v.random pnts n=100
     
     # add new table, link to map
    -v.db.addtable pnts column="heights double precision"
    +v.db.addtable map=pnts column="height double precision"
     
    +# set computational region to raster map to be queried
    +g.region raster=elevation -p
     # query raster map and upload values to vector table into specified column
    -g.region raster=elevation -p
    -v.what.rast map=pnts raster=elevation column=heights
    +v.what.rast map=pnts raster=elevation column=height
     
     # verify new attribute table:
     v.db.select pnts
     
     # verify statistics of uploaded values:
    -v.univar map=pnts column=heights type=point
    +v.univar map=pnts column=height type=point
     
    From svn_grass at osgeo.org Thu Sep 10 07:27:33 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Thu, 10 Sep 2015 07:27:33 -0700 Subject: [GRASS-SVN] r66159 - grass-addons/grass7/raster Message-ID: <20150910142733.E81933900A4@trac.osgeo.org> Author: pvanbosgeo Date: 2015-09-10 07:27:33 -0700 (Thu, 10 Sep 2015) New Revision: 66159 Modified: grass-addons/grass7/raster/Makefile Log: added r.biodiversity to the list of directories Modified: grass-addons/grass7/raster/Makefile =================================================================== --- grass-addons/grass7/raster/Makefile 2015-09-10 10:51:40 UTC (rev 66158) +++ grass-addons/grass7/raster/Makefile 2015-09-10 14:27:33 UTC (rev 66159) @@ -18,6 +18,7 @@ r.area \ r.basin \ r.bioclim \ + r.biodiversity \ r.bitpattern \ r.convergence \ r.crater \ From svn_grass at osgeo.org Thu Sep 10 07:41:05 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Thu, 10 Sep 2015 07:41:05 -0700 Subject: [GRASS-SVN] r66160 - grass-addons Message-ID: <20150910144105.7D61E39012E@trac.osgeo.org> Author: neteler Date: 2015-09-10 07:41:05 -0700 (Thu, 10 Sep 2015) New Revision: 66160 Modified: grass-addons/README Log: README addons: updated Modified: grass-addons/README =================================================================== --- grass-addons/README 2015-09-10 14:27:33 UTC (rev 66159) +++ grass-addons/README 2015-09-10 14:41:05 UTC (rev 66160) @@ -43,61 +43,42 @@ ######################################################################## -To submit your GRASS project here, please write to +To submit your GRASS GIS module here, please check - Markus Neteler - or any other GRASS developer with write access. + https://grass.osgeo.org/development/ The submmission must be compliant with the GRASS submission rules as found in the GRASS source code and RFC2 (Legal aspects of submission): - http://trac.osgeo.org/grass/wiki/RfcList + https://trac.osgeo.org/grass/wiki/RFC Also read submitting instructions before committing any changes! - http://trac.osgeo.org/grass/browser/grass/trunk/SUBMITTING - http://trac.osgeo.org/grass/browser/grass/trunk/SUBMITTING_DOCS - http://trac.osgeo.org/grass/browser/grass/trunk/SUBMITTING_SCRIPTS - http://trac.osgeo.org/grass/browser/grass/trunk/SUBMITTING_TCLTK - http://trac.osgeo.org/grass/browser/grass/trunk/SUBMITTING_PYTHON + https://trac.osgeo.org/grass/wiki/Submitting +######################################################################## +How to get write access here? +############################# + Read access is granted to the public, write access -must be requested, see below for details. +must be requested, see here for details: + https://trac.osgeo.org/grass/wiki/HowToContribute#WriteaccesstotheGRASS-Addons-SVNrepository -Checkout of entire Addons repository: +Checkout of the entire Addons SVN repository: svn checkout https://svn.osgeo.org/grass/grass-addons grass-addons ######################################################################## Mime-types ########## -# To avoid PDF mime-type recognition problems, -# each new (!) PDF file has to be modified like this: -# (unsure how to exclude PDF from the 'diff' email) +# To avoid mime-type recognition problems in SVN, +# each new file's mime-type has to be updated with "svn propset": -svn propset svn:mime-type application/x-pdf *.pdf -svn commit *.pdf +Prior to svn commit (first time only), run on your new file(s) -######################################################################## -How to get write access here? -############################# + grass-addons/tools/module_svn_propset.sh -Write access is only granted to developers who agree to abide by -RFC2 - Legal aspects of code contributions -http://download.osgeo.org/grass/grass6_progman/rfc/rfc2_psc.html -and the code submission guidelines (file SUBMITTING in this -directory). +or, simply on all of your new files: -This needs to be communicated to a GRASS developer. S/he will -then possibly propose you to the GRASS Project Steering committee -after a period of evaluation. For details, see -http://download.osgeo.org/grass/grass6_progman/rfc/main.html + grass-addons/tools/module_svn_propset.sh * -Once write access is granted, you, the new developer need to -obtain an "osgeo_id" at http://www.osgeo.org/osgeo_userid -If you already have an "osgeo_id" but forgot it, search for it at -Search at http://www.osgeo.org/cgi-bin/ldap_web_search.py - -If there are no objections, the write access is then activated -by a GRASS developer in the OSGeo LDAP for GRASS Addons. - From svn_grass at osgeo.org Thu Sep 10 07:42:07 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Thu, 10 Sep 2015 07:42:07 -0700 Subject: [GRASS-SVN] r66161 - grass-addons/grass7/vector Message-ID: <20150910144207.D938639012E@trac.osgeo.org> Author: hellik Date: 2015-09-10 07:42:07 -0700 (Thu, 10 Sep 2015) New Revision: 66161 Modified: grass-addons/grass7/vector/Makefile Log: vector/Makefile: add new addon g.in.gbif Modified: grass-addons/grass7/vector/Makefile =================================================================== --- grass-addons/grass7/vector/Makefile 2015-09-10 14:41:05 UTC (rev 66160) +++ grass-addons/grass7/vector/Makefile 2015-09-10 14:42:07 UTC (rev 66161) @@ -21,6 +21,7 @@ v.flexure \ v.habitat.dem \ v.import \ + v.in.gbif \ v.in.geopaparazzi \ v.in.gps \ v.in.ply \ From svn_grass at osgeo.org Thu Sep 10 07:43:22 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Thu, 10 Sep 2015 07:43:22 -0700 Subject: [GRASS-SVN] r66162 - grass-addons Message-ID: <20150910144322.CCE3F39012E@trac.osgeo.org> Author: neteler Date: 2015-09-10 07:43:22 -0700 (Thu, 10 Sep 2015) New Revision: 66162 Modified: grass-addons/SVN_HOWTO.txt Log: SVN_HOWTO.txt addons: updated Modified: grass-addons/SVN_HOWTO.txt =================================================================== --- grass-addons/SVN_HOWTO.txt 2015-09-10 14:42:07 UTC (rev 66161) +++ grass-addons/SVN_HOWTO.txt 2015-09-10 14:43:22 UTC (rev 66162) @@ -5,9 +5,10 @@ Write access is only granted to developers who agree to abide by RFC2 - Legal aspects of code contributions -http://download.osgeo.org/grass/grass6_progman/rfc/rfc2_psc.html +https://trac.osgeo.org/grass/wiki/RFC/2_LegalAspectsOfCodeContributions -This needs to be communicated to a GRASS developer. +This needs to be communicated to a GRASS developer. For details, see +https://trac.osgeo.org/grass/wiki/HowToContribute#WriteaccesstotheGRASS-Addons-SVNrepository Then you, the new developer need to obtain an "osgeo_id" at http://www.osgeo.org/osgeo_userid @@ -60,17 +61,7 @@ 4. Read submitting instructions before committing any changes! - trunk - - http://trac.osgeo.org/grass/browser/grass/trunk/SUBMITTING - http://trac.osgeo.org/grass/browser/grass/trunk/SUBMITTING_DOCS - http://trac.osgeo.org/grass/browser/grass/trunk/SUBMITTING_PYTHON - http://trac.osgeo.org/grass/browser/grass/trunk/SUBMITTING_WXGUI - - grass6 - - http://trac.osgeo.org/grass/browser/grass/branches/releasebranch_6_4/SUBMITTING_SCRIPTS - http://trac.osgeo.org/grass/browser/grass/branches/releasebranch_6_4/SUBMITTING_TCLTK + https://trac.osgeo.org/grass/wiki/Submitting 5. Now work on the repository (see below). @@ -82,8 +73,6 @@ If you want a graphical tool for SVN, get it here: http://en.wikipedia.org/wiki/Subversion_%28software%29#GUI_front-ends.2Fclients - (MN prefers command line since this is fast and easy...). - ######################## Change notification: Every change in the repository issues an email which indicates @@ -201,3 +190,4 @@ http://svnbook.red-bean.com/nightly/en/index.html Version Control with Subversion + From svn_grass at osgeo.org Thu Sep 10 07:54:46 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Thu, 10 Sep 2015 07:54:46 -0700 Subject: [GRASS-SVN] r66163 - grass/trunk/raster/r.resamp.rst Message-ID: <20150910145446.3402839012E@trac.osgeo.org> Author: neteler Date: 2015-09-10 07:54:46 -0700 (Thu, 10 Sep 2015) New Revision: 66163 Modified: grass/trunk/raster/r.resamp.rst/r.resamp.rst.html Log: r.resamp.rst manual: hint added about extent and resolution of computational region Modified: grass/trunk/raster/r.resamp.rst/r.resamp.rst.html =================================================================== --- grass/trunk/raster/r.resamp.rst/r.resamp.rst.html 2015-09-10 14:43:22 UTC (rev 66162) +++ grass/trunk/raster/r.resamp.rst/r.resamp.rst.html 2015-09-10 14:54:46 UTC (rev 66163) @@ -6,6 +6,13 @@ to a different resolution rather than for interpolation from scattered data (use the v.surf.* modules for that purpose). +

    +The extent of all resulting raster maps is taken from the settings of the +actual computational region (which may differ from the extent of the input +raster map). The resolution of the computational region however has to be +aligned to the resolution of the input map to avoid artefacts. + +

    Reinterpolation (resampling) is done to higher, same or lower resolution specified by the ew_res and ns_res parameters.

    All resulting raster maps are created using the settings of the current From svn_grass at osgeo.org Thu Sep 10 07:55:17 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Thu, 10 Sep 2015 07:55:17 -0700 Subject: [GRASS-SVN] r66164 - grass/branches/releasebranch_7_0/raster/r.resamp.rst Message-ID: <20150910145517.7C69739012E@trac.osgeo.org> Author: neteler Date: 2015-09-10 07:55:17 -0700 (Thu, 10 Sep 2015) New Revision: 66164 Modified: grass/branches/releasebranch_7_0/raster/r.resamp.rst/r.resamp.rst.html Log: r.resamp.rst manual: hint added about extent and resolution of computational region Modified: grass/branches/releasebranch_7_0/raster/r.resamp.rst/r.resamp.rst.html =================================================================== --- grass/branches/releasebranch_7_0/raster/r.resamp.rst/r.resamp.rst.html 2015-09-10 14:54:46 UTC (rev 66163) +++ grass/branches/releasebranch_7_0/raster/r.resamp.rst/r.resamp.rst.html 2015-09-10 14:55:17 UTC (rev 66164) @@ -6,6 +6,13 @@ to a different resolution rather than for interpolation from scattered data (use the v.surf.* modules for that purpose). +

    +The extent of all resulting raster maps is taken from the settings of the +actual computational region (which may differ from the extent of the input +raster map). The resolution of the computational region however has to be +aligned to the resolution of the input map to avoid artefacts. + +

    Reinterpolation (resampling) is done to higher, same or lower resolution specified by the ew_res and ns_res parameters.

    All resulting raster maps are created using the settings of the current From svn_grass at osgeo.org Thu Sep 10 10:53:44 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Thu, 10 Sep 2015 10:53:44 -0700 Subject: [GRASS-SVN] r66165 - grass/trunk/mswindows Message-ID: <20150910175344.9E16B3900A4@trac.osgeo.org> Author: hellik Date: 2015-09-10 10:53:44 -0700 (Thu, 10 Sep 2015) New Revision: 66165 Modified: grass/trunk/mswindows/GRASS-Installer.nsi.tmpl Log: GRASS-Installer.nsi.tmpl: (BU) -> (S-1-5-32-545) see https://support.microsoft.com/en-us/kb/243330 Well-known security identifiers in Windows operating systems SID: S-1-5-32-545 Name: Users Modified: grass/trunk/mswindows/GRASS-Installer.nsi.tmpl =================================================================== --- grass/trunk/mswindows/GRASS-Installer.nsi.tmpl 2015-09-10 14:55:17 UTC (rev 66164) +++ grass/trunk/mswindows/GRASS-Installer.nsi.tmpl 2015-09-10 17:53:44 UTC (rev 66165) @@ -529,7 +529,7 @@ File /r ${PACKAGE_FOLDER}\*.* ;grant modifying/overwriting fontcap file - AccessControl::GrantOnFile "$INSTDIR\etc\fontcap" "(BU)" "GenericRead + GenericWrite + Delete" + AccessControl::GrantOnFile "$INSTDIR\etc\fontcap" "(S-1-5-32-545)" "GenericRead + GenericWrite + Delete" ;create run_gmkfontcap.bat ClearErrors From svn_grass at osgeo.org Thu Sep 10 11:14:34 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Thu, 10 Sep 2015 11:14:34 -0700 Subject: [GRASS-SVN] r66166 - grass/trunk/mswindows Message-ID: <20150910181434.2CF9D3900A4@trac.osgeo.org> Author: hellik Date: 2015-09-10 11:14:34 -0700 (Thu, 10 Sep 2015) New Revision: 66166 Modified: grass/trunk/mswindows/GRASS-Installer.nsi.tmpl Log: GRASS-Installer.nsi.tmpl: attempt to fix #2448 make folder and file writeable before run g.mkfontcap change after g.mkfontcap run back to only readable Modified: grass/trunk/mswindows/GRASS-Installer.nsi.tmpl =================================================================== --- grass/trunk/mswindows/GRASS-Installer.nsi.tmpl 2015-09-10 17:53:44 UTC (rev 66165) +++ grass/trunk/mswindows/GRASS-Installer.nsi.tmpl 2015-09-10 18:14:34 UTC (rev 66166) @@ -528,7 +528,9 @@ SetOutPath "$INSTALL_DIR" File /r ${PACKAGE_FOLDER}\*.* - ;grant modifying/overwriting fontcap file + ;grant $INSTDIR\etc read write accessible + AccessControl::GrantOnFile "$INSTDIR\etc" "(S-1-5-32-545)" "GenericRead + GenericWrite" + ;grant modifying/overwriting fontcap file AccessControl::GrantOnFile "$INSTDIR\etc\fontcap" "(S-1-5-32-545)" "GenericRead + GenericWrite + Delete" ;create run_gmkfontcap.bat @@ -590,6 +592,9 @@ ;Run g.mkfontcap outside a grass session during installation to catch all fonts ExecWait '"$INSTALL_DIR\etc\run_gmkfontcap.bat"' + + ;set $INSTDIR\etc back to read accessible + AccessControl::SetOnFile "$INSTDIR\etc" "(S-1-5-32-545)" "GenericRead + GenericExecute" ;Install demolocation into the GIS_DATABASE directory SetOutPath "$GIS_DATABASE\demolocation" From svn_grass at osgeo.org Thu Sep 10 17:58:12 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Thu, 10 Sep 2015 17:58:12 -0700 Subject: [GRASS-SVN] r66167 - in grass-addons/grass7/raster: . r.cpt2grass Message-ID: <20150911005812.623103900A4@trac.osgeo.org> Author: annakrat Date: 2015-09-10 17:58:12 -0700 (Thu, 10 Sep 2015) New Revision: 66167 Added: grass-addons/grass7/raster/r.cpt2grass/ grass-addons/grass7/raster/r.cpt2grass/Makefile grass-addons/grass7/raster/r.cpt2grass/r.cpt2grass.html grass-addons/grass7/raster/r.cpt2grass/r.cpt2grass.py grass-addons/grass7/raster/r.cpt2grass/r_cpt2grass_color_table_DEM_screen.png grass-addons/grass7/raster/r.cpt2grass/r_cpt2grass_color_table_YlOrBr_09.png Modified: grass-addons/grass7/raster/Makefile Log: r.cpt2grass to convert cpt color tables rewritten to GRASS 7 and Python Modified: grass-addons/grass7/raster/Makefile =================================================================== --- grass-addons/grass7/raster/Makefile 2015-09-10 18:14:34 UTC (rev 66166) +++ grass-addons/grass7/raster/Makefile 2015-09-11 00:58:12 UTC (rev 66167) @@ -21,6 +21,7 @@ r.biodiversity \ r.bitpattern \ r.convergence \ + r.cpt2grass \ r.crater \ r.damflood \ r.divergence \ Added: grass-addons/grass7/raster/r.cpt2grass/Makefile =================================================================== --- grass-addons/grass7/raster/r.cpt2grass/Makefile (rev 0) +++ grass-addons/grass7/raster/r.cpt2grass/Makefile 2015-09-11 00:58:12 UTC (rev 66167) @@ -0,0 +1,7 @@ +MODULE_TOPDIR = ../.. + +PGM = r.cpt2grass + +include $(MODULE_TOPDIR)/include/Make/Script.make + +default: script Property changes on: grass-addons/grass7/raster/r.cpt2grass/Makefile ___________________________________________________________________ Added: svn:mime-type + text/x-makefile Added: svn:eol-style + native Added: grass-addons/grass7/raster/r.cpt2grass/r.cpt2grass.html =================================================================== --- grass-addons/grass7/raster/r.cpt2grass/r.cpt2grass.html (rev 0) +++ grass-addons/grass7/raster/r.cpt2grass/r.cpt2grass.html 2015-09-11 00:58:12 UTC (rev 66167) @@ -0,0 +1,92 @@ +

    DESCRIPTION

    + +Module r.cpt2grass converts +GMT color palette +(*.cpt) format +to GRASS color table format and assigns it to given raster map. + +Input can be either cpt file given in input option or +a URL of the cpt file specified in url option. +Specifying URL is particularly useful when using color tables +from cpt-city, +because many color tables can be quickly tested without +downloading the files. + +When option map is specified r.cpt2grass +assigns the color rules to the given raster map. +Depending on the values of the original cpt file, +it may be advantageous to use the -s to stretch the +colors based on the range of values of the map. + + + + + +

    NOTES

    +RGB and HSV models are supported. +The expected format of the cpt file is: +
    +# COLOR_MODEL = RGB
    +value1 R G B value2 R G B
    +value2 R G B value3 R G B
    +...
    +
    +Named colors are not supported. + +

    EXAMPLES

    + +From cpt-city +we download a +rainfall +color table and convert it to GRASS color table. +If we don't specify output file, it is printed to standard output: + +
    +r.cpt2grass input=rainfall.cpt
    +
    +
    +0.000 229:180:44
    +20.000 229:180:44
    +20.000 242:180:100
    +40.000 242:180:100
    +40.000 243:233:119
    +60.000 243:233:119
    +60.000 145:206:126
    +80.000 145:206:126
    +80.000 67:190:135
    +100.000 67:190:135
    +100.000 52:180:133
    +120.000 52:180:133
    +120.000 6:155:66
    +140.000 6:155:66
    +
    + +We set two different elevation color tables - continuous and discrete gradients. +We have to stretch the color tables to fit the raster map range: + +
    +r.cpt2grass url=http://soliton.vm.bytemark.co.uk/pub/cpt-city/td/DEM_screen.cpt map=elevation -s
    +r.cpt2grass url=http://soliton.vm.bytemark.co.uk/pub/cpt-city/cb/seq/YlOrBr_09.cpt map=elevation -s
    +
    + +We can display legend: +
    +d.legend raster=elevation labelnum=10 at=5,50,7,10
    +
    + +
    +DEM color table +yellow to brown color table +
    + +

    SEE ALSO

    + + +r.colors + + +

    AUTHORS

    +Anna Petrasova, NCSU OSGeoREL + +

    +Last changed: $Date$ Property changes on: grass-addons/grass7/raster/r.cpt2grass/r.cpt2grass.html ___________________________________________________________________ Added: svn:mime-type + text/html Added: svn:keywords + Author Date Id Added: svn:eol-style + native Added: grass-addons/grass7/raster/r.cpt2grass/r.cpt2grass.py =================================================================== --- grass-addons/grass7/raster/r.cpt2grass/r.cpt2grass.py (rev 0) +++ grass-addons/grass7/raster/r.cpt2grass/r.cpt2grass.py 2015-09-11 00:58:12 UTC (rev 66167) @@ -0,0 +1,194 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +############################################################################ +# +# MODULE: r.cpt2grass +# AUTHOR(S): M. Hamish Bowman, Otago University, New Zealand +# (original GRASS 6 implementation) +# Anna Petrasova (rewritten to GRASS 7 in Python) +# PURPOSE: Convert a GMT color table into a GRASS color rules file +# COPYRIGHT: (c) 2007 by Hamish Bowman, Anna Petrasova +# and the GRASS Development Team +# This program is free software under the GNU General Public +# License (>=v2). Read the file COPYING that comes with GRASS +# for details. +# +# SEE ALSO: GMT: The Generic Mapping Tools +# http://gmt.soest.hawaii.edu +# +############################################################################# + +#%module +#% description: Convert or apply a GMT color table to a GRASS raster map +#%end +#%option G_OPT_F_INPUT +#% description: Name of input GMT color table (.cpt file) +#% required: no +#% guisection: Input +#%end +#%option +#% key: url +#% type: string +#% description: URL of the color table +#% required: no +#% guisection: Input +#%end +#%option G_OPT_R_INPUT +#% key: map +#% description: Raster map to apply it to +#% required: no +#% guisection: Input +#%end +#%option G_OPT_F_OUTPUT +#% description: Name for new rules file +#% required: no +#%end +#%flag +#% key: s +#% description: Stretch color scale to match map data extent +#%end +#%rules +#% required: input,url +#% exclusive: input,url +#% requires: -s,map +#%end + +import sys +import grass.script as gscript + + +def HSVtoRGB(h, s, v): + """Converts HSV to RGB. + Based on the Foley and Van Dam HSV algorithm used + by James Westervelt's (CERL) hsv.rgb.sh script from GRASS 4/5.""" + # Hue: 0-360 degrees + # Satuaration: 0.0-1.0 + # Value: 0.0-1.0 + if v == 0.0: + return (0, 0, 0) + if v == 1.0: + return (255, 255, 255) + + if h >= 360: + h -= 360 + h = h / 60.0 + i = int(h) + f = h - i + p = v * (1 - s) + q = v * (1 - s * f) + t = v * (1 - s * (1 - f)) + + # init/fallback + R = G = B = 0 + # red + if i == 0: + R = v + if i == 1: + R = q + if i == 2: + R = p + if i == 3: + R = p + if i == 4: + R = t + if i == 5: + R = v + + # green + if i == 0: + G = t + if i == 1: + G = v + if i == 2: + G = v + if i == 3: + G = q + if i == 4: + G = p + if i == 5: + G = p + + # blue + if i == 0: + B = p + if i == 1: + B = p + if i == 2: + B = t + if i == 3: + B = v + if i == 4: + B = v + if i == 5: + B = q + + return (R * 255, G * 255, B * 255) + + +def main(options, flags): + input_file = options['input'] + input_url = options['url'] + if input_url: + try: + from urllib.request import urlopen + except ImportError: + from urllib import urlopen + + txt = urlopen(input_url).readlines() + else: + with open(input_file, 'r') as f: + txt = f.readlines() + + model = 'RGB' # assuming RGB + cpt_rules = [] + for line in txt: + if not line.strip(): + continue + if 'COLOR_MODEL' in line: + model = line.split('=')[-1].strip() + elif line[0] in ('B', 'F', 'N', '#'): + continue + else: + cpt_rules.append(line.strip()) + + if model not in ('RGB', 'HSV'): + gscript.fatal(_("Only the RGB and HSV color models are supported")) + + rules = [] + if flags['s']: + # sort? + cpt_min = float(cpt_rules[0].split()[0]) + cpt_max = float(cpt_rules[-1].split()[4]) + cpt_range = cpt_max - cpt_min + for line in cpt_rules: + try: + v1, r1, g1, b1, v2, r2, g2, b2 = line.split() + except ValueError: + gscript.fatal(_("Parsing input failed. The expected format is 'value1 R G B value2 R G B'")) + v1 = float(v1) + v2 = float(v2) + if model == 'HSV': + r1, b1, g1 = HSVtoRGB(int(r1), int(g1), int(b1)) + r2, b2, g2 = HSVtoRGB(int(r2), int(g2), int(b2)) + if flags['s']: + v1 = 100 * (cpt_range - (cpt_max - v1)) / cpt_range + v2 = 100 * (cpt_range - (cpt_max - v2)) / cpt_range + rules.append("{v:.3f}{perc} {r}:{g}:{b}".format(v=v1, perc='%' if flags['s'] else '', + r=r1, g=g1, b=b1)) + rules.append("{v:.3f}{perc} {r}:{g}:{b}".format(v=v2, perc='%' if flags['s'] else '', + r=r2, g=g2, b=b2)) + if options['map']: + gscript.write_command('r.colors', map=options['map'], + rules='-', stdin='\n'.join(rules)) + if options['output']: + with open(options['output'], 'w') as f: + f.write('\n'.join(rules)) + f.write('\n') + elif not options['map']: + print '\n'.join(rules) + '\n' + + +if __name__ == '__main__': + options, flags = gscript.parser() + sys.exit(main(options, flags)) Property changes on: grass-addons/grass7/raster/r.cpt2grass/r.cpt2grass.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native Added: grass-addons/grass7/raster/r.cpt2grass/r_cpt2grass_color_table_DEM_screen.png =================================================================== (Binary files differ) Property changes on: grass-addons/grass7/raster/r.cpt2grass/r_cpt2grass_color_table_DEM_screen.png ___________________________________________________________________ Added: svn:mime-type + image/png Added: grass-addons/grass7/raster/r.cpt2grass/r_cpt2grass_color_table_YlOrBr_09.png =================================================================== (Binary files differ) Property changes on: grass-addons/grass7/raster/r.cpt2grass/r_cpt2grass_color_table_YlOrBr_09.png ___________________________________________________________________ Added: svn:mime-type + image/png From svn_grass at osgeo.org Thu Sep 10 19:25:09 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Thu, 10 Sep 2015 19:25:09 -0700 Subject: [GRASS-SVN] r66168 - grass/trunk/gui/wxpython/docs Message-ID: <20150911022509.382C63900A4@trac.osgeo.org> Author: annakrat Date: 2015-09-10 19:25:09 -0700 (Thu, 10 Sep 2015) New Revision: 66168 Modified: grass/trunk/gui/wxpython/docs/wxGUI_map_display.jpg Log: wxGUI: update screenshot of map window in manual Modified: grass/trunk/gui/wxpython/docs/wxGUI_map_display.jpg =================================================================== (Binary files differ) From svn_grass at osgeo.org Fri Sep 11 08:06:18 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Fri, 11 Sep 2015 08:06:18 -0700 Subject: [GRASS-SVN] r66169 - grass/trunk/raster/r.watershed/front Message-ID: <20150911150618.807B7390112@trac.osgeo.org> Author: neteler Date: 2015-09-11 08:06:18 -0700 (Fri, 11 Sep 2015) New Revision: 66169 Modified: grass/trunk/raster/r.watershed/front/main.c grass/trunk/raster/r.watershed/front/r.watershed.html Log: r.watershed manual: mention 'depression' parameter properly Modified: grass/trunk/raster/r.watershed/front/main.c =================================================================== --- grass/trunk/raster/r.watershed/front/main.c 2015-09-11 02:25:09 UTC (rev 66168) +++ grass/trunk/raster/r.watershed/front/main.c 2015-09-11 15:06:18 UTC (rev 66169) @@ -314,7 +314,9 @@ new_argv[new_argc++] = NULL; G_debug(1, "Mode: %s", flag_seg->answer ? "Segmented" : "All in RAM"); - +/* if (flag_seg->answer) + G_message(_("Using memory cache size: %.1f MB"), atof(opt16->answer)); +*/ ret = G_vspawn_ex(new_argv[0], new_argv); if (ret != EXIT_SUCCESS) Modified: grass/trunk/raster/r.watershed/front/r.watershed.html =================================================================== --- grass/trunk/raster/r.watershed/front/r.watershed.html 2015-09-11 02:25:09 UTC (rev 66168) +++ grass/trunk/raster/r.watershed/front/r.watershed.html 2015-09-11 15:06:18 UTC (rev 66169) @@ -59,7 +59,8 @@ the module uses a least-cost algorithm.

    -Map of actual depressions or sinkholes in the landscape that are large +Option depression specifies the optional map of actual +depressions or sinkholes in the landscape that are large enough to slow and store surface runoff from a storm event. All cells that are not NULL and not zero indicate depressions. Water will flow into but not out of depressions. From svn_grass at osgeo.org Fri Sep 11 08:06:45 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Fri, 11 Sep 2015 08:06:45 -0700 Subject: [GRASS-SVN] r66170 - grass/branches/releasebranch_7_0/raster/r.watershed/front Message-ID: <20150911150645.67831390112@trac.osgeo.org> Author: neteler Date: 2015-09-11 08:06:45 -0700 (Fri, 11 Sep 2015) New Revision: 66170 Modified: grass/branches/releasebranch_7_0/raster/r.watershed/front/r.watershed.html Log: r.watershed manual: mention 'depression' parameter properly Modified: grass/branches/releasebranch_7_0/raster/r.watershed/front/r.watershed.html =================================================================== --- grass/branches/releasebranch_7_0/raster/r.watershed/front/r.watershed.html 2015-09-11 15:06:18 UTC (rev 66169) +++ grass/branches/releasebranch_7_0/raster/r.watershed/front/r.watershed.html 2015-09-11 15:06:45 UTC (rev 66170) @@ -59,7 +59,8 @@ the module uses a least-cost algorithm.

    -Map of actual depressions or sinkholes in the landscape that are large +Option depression specifies the optional map of actual +depressions or sinkholes in the landscape that are large enough to slow and store surface runoff from a storm event. All cells that are not NULL and not zero indicate depressions. Water will flow into but not out of depressions. From svn_grass at osgeo.org Fri Sep 11 10:24:14 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Fri, 11 Sep 2015 10:24:14 -0700 Subject: [GRASS-SVN] r66171 - grass-addons/grass7/raster/r.biodiversity Message-ID: <20150911172414.EECF0390112@trac.osgeo.org> Author: pvanbosgeo Date: 2015-09-11 10:24:14 -0700 (Fri, 11 Sep 2015) New Revision: 66171 Modified: grass-addons/grass7/raster/r.biodiversity/r.biodiversity.html Log: fixed some problematic characters in html file Modified: grass-addons/grass7/raster/r.biodiversity/r.biodiversity.html =================================================================== --- grass-addons/grass7/raster/r.biodiversity/r.biodiversity.html 2015-09-11 15:06:45 UTC (rev 66170) +++ grass-addons/grass7/raster/r.biodiversity/r.biodiversity.html 2015-09-11 17:24:14 UTC (rev 66171) @@ -25,50 +25,70 @@

    Species richness

    The species richness is simply the count of the number of layers. -It is a special case of the Reny enthropy:

    s = exp(R0)
    , +It is a special case of the Reny enthropy: + +
    s = exp(R0)
    + whereby s is the species richness R0 the renyi index for alpha=0. The name of the output layer is composed of the basename + richness.

    Shannon index

    -

    The Shannon (also called the Shannon?Weaver or Shannon?Wiener) -index is defined as

    H = -sum(p_i x log(p_i))
    , where p_i - is the proportional abundance of species i. The -r.biodiversity uses the natural logarithm (one can also use other -bases for the log, but that is currently not implemented, and +

    The Shannon (also called the Shannon-Weaver or Shannon-Wiener) +index is defined as + +

    H = -sum(p_i x log(p_i))
    + +where p_i is the proportional abundance of species i. +The r.biodiversity uses the natural logarithm (one can also use +other bases for the log, but that is currently not implemented, and doesn't make a real difference). Note the Shannon index is a special -case of the Renyi enthropy for alpha = 2. The name of the output -layer is composed of the basename + shannon. +case of the Renyi enthropy for alpha = 2. The name of the +output layer is composed of the basename + shannon.

    Simpson (concentration) index

    -

    The Simpson's index is defined as

    D = sum p_i^2
    . This -is equivalent to
    -1 * 1 / exp(R2)
    , with R2 the renyi -index for alpha=2. With this index, 0 represents infinite -diversity and 1, no diversity. The name of the output -layer is composed of the basename + simpson. +

    The Simpson's index is defined as +

    D = sum p_i^2
    . + +This is equivalent to + +
    -1 * 1 / exp(R2)
    + +with R2 the renyi index for alpha=2. With this index, +0 represents infinite diversity and 1, no diversity. The name of the +output layer is composed of the basename + simpson. +

    Inverse Simpson index (Simpson's Reciprocal Index)

    D obtains small values in datasets of high diversity and large values in datasets of low diversity. This is counterintuitive behavior for a diversity index. An alternative is the inverse -Simpson index, which is

    ID = 1 / D)
    . The index represents -the probability that two individuals randomly selected from a sample -will belong to different species. The value ranges between 0 and 1, -but now, the greater the value, the greater the sample diversity. -The name of the output layer is composed of the basename + invsimpson. +Simpson index, which is -

    Gini?Simpson index

    +
    ID = 1 / D)
    . +The index represents the probability that two individuals randomly +selected from a sample will belong to different species. The value +ranges between 0 and 1, but now, the greater the value, the greater +the sample diversity. The name of the output layer is composed of +the basename + invsimpson. + +

    Gini-Simpson index

    +

    An alternative way to overcome the problem of the -counter-intuitive nature of Simpson's Index is to use

    1 - D)
    . The lowest value of -this index is 1 and represent a community containing only one -species. The higher the value, the greater the diversity. The -maximum value is the number of species in the sample. The name of the output -layer is composed of the basename + ginisimpson. +counter-intuitive nature of Simpson's Index is to use +
    1 - D)
    . + +The lowest value of this index is 1 and represent a community +containing only one species. The higher the value, the greater the +diversity. The maximum value is the number of species in the sample. +The name of the output layer is composed of the basename + +ginisimpson. +

    NOTES

    Note that if you are interested in the landscape diversity, you @@ -113,23 +133,12 @@ 2.3 and 0.57 respectively.

    SEE ALSO

    -1 -r.li, -60 r.li.pielou, -61 r.li.renyi, -62 r.li.shannon, -63 r.li.simpson - -153 -

    CITATION

    Suggested citation:

    van Breugel P, -r.biodiversity, a grass addon to compute biodiversity indici based -on 2 or more input layers. Available from -https://grass.osgeo.org/grass70/manuals/addons/r.biodiversity.html +r.li, r.li.pielou, r.li.renyi, r.li.shannon, r.li.simpson are all add-ons that compute landscape diversity indici.

    REFERENCES

      -
    • Jost L. 2006. Entropy and diversity. Oikos 113:363?75
    • +
    • Jost L. 2006. Entropy and diversity. Oikos 113:363-75
    • Legendre P, Legendre L. 1998. Numerical Ecology. Second English edition. Elsevier, Amsterdam
    From svn_grass at osgeo.org Sat Sep 12 02:02:55 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sat, 12 Sep 2015 02:02:55 -0700 Subject: [GRASS-SVN] r66172 - in grass/trunk: raster/r.proj vector/v.proj Message-ID: <20150912090255.AEB24390112@trac.osgeo.org> Author: neteler Date: 2015-09-12 02:02:55 -0700 (Sat, 12 Sep 2015) New Revision: 66172 Modified: grass/trunk/raster/r.proj/r.proj.html grass/trunk/vector/v.proj/v.proj.html Log: r.proj, v.proj manuals: references updated Modified: grass/trunk/raster/r.proj/r.proj.html =================================================================== --- grass/trunk/raster/r.proj/r.proj.html 2015-09-11 17:24:14 UTC (rev 66171) +++ grass/trunk/raster/r.proj/r.proj.html 2015-09-12 09:02:55 UTC (rev 66172) @@ -281,16 +281,17 @@ Springer-Verlag, Berlin, 2nd edition. -

    PROJ.4: Projection/datum support -library. +PROJ 4: Projection/datum support library. -

    Further reading +

    +Further reading

    SEE ALSO

    Modified: grass/trunk/vector/v.proj/v.proj.html =================================================================== --- grass/trunk/vector/v.proj/v.proj.html 2015-09-11 17:24:14 UTC (rev 66171) +++ grass/trunk/vector/v.proj/v.proj.html 2015-09-12 09:02:55 UTC (rev 66172) @@ -49,23 +49,36 @@

    REFERENCES

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

    Further reading

    SEE ALSO

    r.proj, +m.proj, g.proj, -i.rectify, -r.stats, +i.rectify, +r.stats, v.sample, v.split, v.surf.idw, From svn_grass at osgeo.org Sat Sep 12 02:03:45 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sat, 12 Sep 2015 02:03:45 -0700 Subject: [GRASS-SVN] r66173 - in grass/branches/releasebranch_7_0: raster/r.proj vector/v.proj Message-ID: <20150912090345.3F32A390112@trac.osgeo.org> Author: neteler Date: 2015-09-12 02:03:45 -0700 (Sat, 12 Sep 2015) New Revision: 66173 Modified: grass/branches/releasebranch_7_0/raster/r.proj/r.proj.html grass/branches/releasebranch_7_0/vector/v.proj/v.proj.html Log: r.proj, v.proj manuals: references updated Modified: grass/branches/releasebranch_7_0/raster/r.proj/r.proj.html =================================================================== --- grass/branches/releasebranch_7_0/raster/r.proj/r.proj.html 2015-09-12 09:02:55 UTC (rev 66172) +++ grass/branches/releasebranch_7_0/raster/r.proj/r.proj.html 2015-09-12 09:03:45 UTC (rev 66173) @@ -281,16 +281,17 @@ Springer-Verlag, Berlin, 2nd edition. -

    PROJ.4: Projection/datum support -library. +PROJ 4: Projection/datum support library. -

    Further reading +

    +Further reading

    SEE ALSO

    Modified: grass/branches/releasebranch_7_0/vector/v.proj/v.proj.html =================================================================== --- grass/branches/releasebranch_7_0/vector/v.proj/v.proj.html 2015-09-12 09:02:55 UTC (rev 66172) +++ grass/branches/releasebranch_7_0/vector/v.proj/v.proj.html 2015-09-12 09:03:45 UTC (rev 66173) @@ -49,23 +49,36 @@

    REFERENCES

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

    Further reading

    SEE ALSO

    r.proj, +m.proj, g.proj, -i.rectify, -r.stats, +i.rectify, +r.stats, v.sample, v.split, v.surf.idw, From svn_grass at osgeo.org Sat Sep 12 02:38:35 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sat, 12 Sep 2015 02:38:35 -0700 Subject: [GRASS-SVN] r66174 - in grass/trunk/temporal: t.connect t.list t.rast.aggregate.ds t.rast.extract t.rast.gapfill t.rast.import t.rast.mapcalc t.rast.to.rast3 t.register t.rename t.sample t.shift Message-ID: <20150912093835.DE033390112@trac.osgeo.org> Author: neteler Date: 2015-09-12 02:38:35 -0700 (Sat, 12 Sep 2015) New Revision: 66174 Modified: grass/trunk/temporal/t.connect/t.connect.html grass/trunk/temporal/t.list/t.list.html grass/trunk/temporal/t.rast.aggregate.ds/t.rast.aggregate.ds.html grass/trunk/temporal/t.rast.extract/t.rast.extract.html grass/trunk/temporal/t.rast.gapfill/t.rast.gapfill.html grass/trunk/temporal/t.rast.import/t.rast.import.html grass/trunk/temporal/t.rast.mapcalc/t.rast.mapcalc.html grass/trunk/temporal/t.rast.to.rast3/t.rast.to.rast3.html grass/trunk/temporal/t.register/t.register.html grass/trunk/temporal/t.rename/t.rename.html grass/trunk/temporal/t.sample/t.sample.html grass/trunk/temporal/t.shift/t.shift.html Log: temporal manual: explain absolute and relative time; HTML cosmetics Modified: grass/trunk/temporal/t.connect/t.connect.html =================================================================== --- grass/trunk/temporal/t.connect/t.connect.html 2015-09-12 09:03:45 UTC (rev 66173) +++ grass/trunk/temporal/t.connect/t.connect.html 2015-09-12 09:38:35 UTC (rev 66174) @@ -11,7 +11,7 @@ parameters have been set, and if not will set them to use GRASS's default values. -

    NOTE

    +

    NOTES

    Setting the connection with t.connect will not test the connection for validity. Hence a database connection will not be established. Modified: grass/trunk/temporal/t.list/t.list.html =================================================================== --- grass/trunk/temporal/t.list/t.list.html 2015-09-12 09:03:45 UTC (rev 66173) +++ grass/trunk/temporal/t.list/t.list.html 2015-09-12 09:38:35 UTC (rev 66174) @@ -11,7 +11,7 @@ order of the datasets. In addition a SQL WHERE statement can be specified to select a subset of the requested datasets. -

    NOTE

    +

    NOTES

    The SQL where and sort expression will be applied for each temporal database that was found in accessible mapsets. Hence sorting works only Modified: grass/trunk/temporal/t.rast.aggregate.ds/t.rast.aggregate.ds.html =================================================================== --- grass/trunk/temporal/t.rast.aggregate.ds/t.rast.aggregate.ds.html 2015-09-12 09:03:45 UTC (rev 66173) +++ grass/trunk/temporal/t.rast.aggregate.ds/t.rast.aggregate.ds.html 2015-09-12 09:38:35 UTC (rev 66174) @@ -7,7 +7,7 @@ STRDS, STR3DS or STVDS) are used to aggregate the maps of the input space time raster dataset. -

    NOTE

    +

    NOTES

    The sampling method must be specified from the sampler dataset point of view. It defines the temporal relations hips between intervals of the sampling dataset and the input space time raster dataset. Modified: grass/trunk/temporal/t.rast.extract/t.rast.extract.html =================================================================== --- grass/trunk/temporal/t.rast.extract/t.rast.extract.html 2015-09-12 09:03:45 UTC (rev 66173) +++ grass/trunk/temporal/t.rast.extract/t.rast.extract.html 2015-09-12 09:38:35 UTC (rev 66174) @@ -19,7 +19,7 @@ simply registered in the new created output space time raster dataset to avoid data duplication. -

    Note

    +

    NOTES

    The r.mapcalc sub-expression should not contain the left side "map =" of a full r.mapcalc expression, only the right Modified: grass/trunk/temporal/t.rast.gapfill/t.rast.gapfill.html =================================================================== --- grass/trunk/temporal/t.rast.gapfill/t.rast.gapfill.html 2015-09-12 09:03:45 UTC (rev 66173) +++ grass/trunk/temporal/t.rast.gapfill/t.rast.gapfill.html 2015-09-12 09:38:35 UTC (rev 66174) @@ -6,7 +6,7 @@ of the gaps will be identified and used to linear interpolate the raster map between them. -

    Note

    +

    NOTES

    This module uses r.series.interp to perform the interpolation for each gap independently. Hence several interpolation processes can be run in parallel. Modified: grass/trunk/temporal/t.rast.import/t.rast.import.html =================================================================== --- grass/trunk/temporal/t.rast.import/t.rast.import.html 2015-09-12 09:03:45 UTC (rev 66173) +++ grass/trunk/temporal/t.rast.import/t.rast.import.html 2015-09-12 09:38:35 UTC (rev 66174) @@ -3,7 +3,7 @@ t.rast.import imports a space time raster dataset archive that was exported with t.rast.export. -

    NOTE

    +

    NOTES

    Optionally a base map name can be provided to avoid that existing raster maps are overwritten by the map names that are used in the STRDS Modified: grass/trunk/temporal/t.rast.mapcalc/t.rast.mapcalc.html =================================================================== --- grass/trunk/temporal/t.rast.mapcalc/t.rast.mapcalc.html 2015-09-12 09:03:45 UTC (rev 66173) +++ grass/trunk/temporal/t.rast.mapcalc/t.rast.mapcalc.html 2015-09-12 09:38:35 UTC (rev 66174) @@ -77,7 +77,7 @@ The end_* functions are represented by the null() internal variables in case of time instances. -

    NOTE

    +

    NOTES

    We will discuss the internal work of t.rast.mapcalc with an example. Imagine we have two STRDS as input, each with monthly Modified: grass/trunk/temporal/t.rast.to.rast3/t.rast.to.rast3.html =================================================================== --- grass/trunk/temporal/t.rast.to.rast3/t.rast.to.rast3.html 2015-09-12 09:03:45 UTC (rev 66173) +++ grass/trunk/temporal/t.rast.to.rast3/t.rast.to.rast3.html 2015-09-12 09:38:35 UTC (rev 66174) @@ -15,7 +15,7 @@ be represented by NULL values in the voxel map layer. -

    NOTE

    +

    NOTES

    The reference time for all space time voxel cubes is 1900-01-0100:00:00. This allows the alignment space time voxel cubes Modified: grass/trunk/temporal/t.register/t.register.html =================================================================== --- grass/trunk/temporal/t.register/t.register.html 2015-09-12 09:03:45 UTC (rev 66173) +++ grass/trunk/temporal/t.register/t.register.html 2015-09-12 09:38:35 UTC (rev 66174) @@ -12,10 +12,15 @@ works only for maps that are not already registered in the temporal database.

    -This module supports absolute and relative time. Maps can be registered -by command line argument (a list of comma separated map names) or using -an input file. The start time, the end time and a temporal increment -can be provided by command line or in the input file. End time and +This module supports absolute and relative time. The absolute temporal type +refers to a fixed date while the relative temporal type refers to data +without fixed time stamps (e.g., sequential maps used to calculate +multi-decadal averages). + +

    +Maps can be registered by command line argument (a list of comma separated map +names) or using an input file. The start time, the end time and a temporal +increment can be provided by command line or in the input file. End time and increment are mutual exclusive. The user can register single maps or a list of maps at once. Maps can be registered in several space time datasets using the same timestamp. @@ -26,7 +31,7 @@ unit (years, months, days, hours, minutes or seconds) must be provided. The relative start time, end time and the increment are integers. -

    Note

    +

    NOTES

    The timestamps of registered maps will be stored in the temporal database and in the metadata of the grass maps in the spatial database. @@ -48,7 +53,8 @@ prec_6 -Specification of map names and the absolute start time (date) of the time instances: +Specification of map names and the absolute start time (date) of the +time instances:
     prec_1|2001-01-01
     prec_2|2001-02-01
    @@ -67,7 +73,8 @@
     terra_lst_day20020117|2002-01-17 10:30
     
    -Specification of the map name and the absolute time interval with start and end time: +Specification of the map name and the absolute time interval with start +and end time:
     prec_1|2001-01-01|2001-04-01
     prec_2|2001-04-01|2001-07-01
    @@ -91,7 +98,12 @@
     
     

    Synthetic maps

    -In this example we create 6 raster maps that will be registered in a single space time raster dataset named precip_abs using a monthly temporal granularity. The -i flag generates interval time. The generated timestamps will be inspected using r.timestamp and t.rast.list. We will register an additional map with a timetsamp that was set with r.timestamp. +In this example we create 6 raster maps that will be registered in a +single space time raster dataset named precip_abs using a monthly +temporal granularity. The -i flag generates interval time. The +generated timestamps will be inspected using r.timestamp and +t.rast.list. We will register an additional map with a timestamp +that was set with r.timestamp.
     r.mapcalc expr="prec_1 = 100"
    
    Modified: grass/trunk/temporal/t.rename/t.rename.html
    ===================================================================
    --- grass/trunk/temporal/t.rename/t.rename.html	2015-09-12 09:03:45 UTC (rev 66173)
    +++ grass/trunk/temporal/t.rename/t.rename.html	2015-09-12 09:38:35 UTC (rev 66174)
    @@ -3,7 +3,7 @@
     This module renames space time datasets of different types (STRDS, STVDS, STR3DS)
     and updates the space time dataset register entries of the registered maps.
     
    -

    NOTE

    +

    NOTES

    Renaming of space time datasets works only for SQLite based temporal databases. Modified: grass/trunk/temporal/t.sample/t.sample.html =================================================================== --- grass/trunk/temporal/t.sample/t.sample.html 2015-09-12 09:03:45 UTC (rev 66173) +++ grass/trunk/temporal/t.sample/t.sample.html 2015-09-12 09:38:35 UTC (rev 66174) @@ -12,7 +12,7 @@ spatio-temporal topology, so that only spatio-temporal related map layers of space time datasets are considered in the analysis. -

    NOTE

    +

    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 Modified: grass/trunk/temporal/t.shift/t.shift.html =================================================================== --- grass/trunk/temporal/t.shift/t.shift.html 2015-09-12 09:03:45 UTC (rev 66173) +++ grass/trunk/temporal/t.shift/t.shift.html 2015-09-12 09:38:35 UTC (rev 66174) @@ -11,7 +11,7 @@ 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. -

    Note

    +

    NOTES

    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 From svn_grass at osgeo.org Sat Sep 12 02:38:58 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sat, 12 Sep 2015 02:38:58 -0700 Subject: [GRASS-SVN] r66175 - in grass/branches/releasebranch_7_0/temporal: t.connect t.list t.rast.aggregate.ds t.rast.extract t.rast.gapfill t.rast.import t.rast.mapcalc t.rast.to.rast3 t.register t.rename t.sample t.shift Message-ID: <20150912093859.04280390112@trac.osgeo.org> Author: neteler Date: 2015-09-12 02:38:58 -0700 (Sat, 12 Sep 2015) New Revision: 66175 Modified: grass/branches/releasebranch_7_0/temporal/t.connect/t.connect.html grass/branches/releasebranch_7_0/temporal/t.list/t.list.html grass/branches/releasebranch_7_0/temporal/t.rast.aggregate.ds/t.rast.aggregate.ds.html grass/branches/releasebranch_7_0/temporal/t.rast.extract/t.rast.extract.html grass/branches/releasebranch_7_0/temporal/t.rast.gapfill/t.rast.gapfill.html grass/branches/releasebranch_7_0/temporal/t.rast.import/t.rast.import.html grass/branches/releasebranch_7_0/temporal/t.rast.mapcalc/t.rast.mapcalc.html grass/branches/releasebranch_7_0/temporal/t.rast.to.rast3/t.rast.to.rast3.html grass/branches/releasebranch_7_0/temporal/t.register/t.register.html grass/branches/releasebranch_7_0/temporal/t.rename/t.rename.html grass/branches/releasebranch_7_0/temporal/t.sample/t.sample.html grass/branches/releasebranch_7_0/temporal/t.shift/t.shift.html Log: temporal manual: explain absolute and relative time; HTML cosmetics Modified: grass/branches/releasebranch_7_0/temporal/t.connect/t.connect.html =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.connect/t.connect.html 2015-09-12 09:38:35 UTC (rev 66174) +++ grass/branches/releasebranch_7_0/temporal/t.connect/t.connect.html 2015-09-12 09:38:58 UTC (rev 66175) @@ -11,7 +11,7 @@ parameters have been set, and if not will set them to use GRASS's default values. -

    NOTE

    +

    NOTES

    Setting the connection with t.connect will not test the connection for validity. Hence a database connection will not be established. Modified: grass/branches/releasebranch_7_0/temporal/t.list/t.list.html =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.list/t.list.html 2015-09-12 09:38:35 UTC (rev 66174) +++ grass/branches/releasebranch_7_0/temporal/t.list/t.list.html 2015-09-12 09:38:58 UTC (rev 66175) @@ -11,7 +11,7 @@ order of the datasets. In addition a SQL WHERE statement can be specified to select a subset of the requested datasets. -

    NOTE

    +

    NOTES

    The SQL where and sort expression will be applied for each temporal database that was found in accessible mapsets. Hence sorting works only Modified: grass/branches/releasebranch_7_0/temporal/t.rast.aggregate.ds/t.rast.aggregate.ds.html =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.rast.aggregate.ds/t.rast.aggregate.ds.html 2015-09-12 09:38:35 UTC (rev 66174) +++ grass/branches/releasebranch_7_0/temporal/t.rast.aggregate.ds/t.rast.aggregate.ds.html 2015-09-12 09:38:58 UTC (rev 66175) @@ -7,7 +7,7 @@ STRDS, STR3DS or STVDS) are used to aggregate the maps of the input space time raster dataset. -

    NOTE

    +

    NOTES

    The sampling method must be specified from the sampler dataset point of view. It defines the temporal relations hips between intervals of the sampling dataset and the input space time raster dataset. Modified: grass/branches/releasebranch_7_0/temporal/t.rast.extract/t.rast.extract.html =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.rast.extract/t.rast.extract.html 2015-09-12 09:38:35 UTC (rev 66174) +++ grass/branches/releasebranch_7_0/temporal/t.rast.extract/t.rast.extract.html 2015-09-12 09:38:58 UTC (rev 66175) @@ -19,7 +19,7 @@ simply registered in the new created output space time raster dataset to avoid data duplication. -

    Note

    +

    NOTES

    The r.mapcalc sub-expression should not contain the left side "map =" of a full r.mapcalc expression, only the right Modified: grass/branches/releasebranch_7_0/temporal/t.rast.gapfill/t.rast.gapfill.html =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.rast.gapfill/t.rast.gapfill.html 2015-09-12 09:38:35 UTC (rev 66174) +++ grass/branches/releasebranch_7_0/temporal/t.rast.gapfill/t.rast.gapfill.html 2015-09-12 09:38:58 UTC (rev 66175) @@ -6,7 +6,7 @@ of the gaps will be identified and used to linear interpolate the raster map between them. -

    Note

    +

    NOTES

    This module uses r.series.interp to perform the interpolation for each gap independently. Hence several interpolation processes can be run in parallel. Modified: grass/branches/releasebranch_7_0/temporal/t.rast.import/t.rast.import.html =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.rast.import/t.rast.import.html 2015-09-12 09:38:35 UTC (rev 66174) +++ grass/branches/releasebranch_7_0/temporal/t.rast.import/t.rast.import.html 2015-09-12 09:38:58 UTC (rev 66175) @@ -3,7 +3,7 @@ t.rast.import imports a space time raster dataset archive that was exported with t.rast.export. -

    NOTE

    +

    NOTES

    Optionally a base map name can be provided to avoid that existing raster maps are overwritten by the map names that are used in the STRDS Modified: grass/branches/releasebranch_7_0/temporal/t.rast.mapcalc/t.rast.mapcalc.html =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.rast.mapcalc/t.rast.mapcalc.html 2015-09-12 09:38:35 UTC (rev 66174) +++ grass/branches/releasebranch_7_0/temporal/t.rast.mapcalc/t.rast.mapcalc.html 2015-09-12 09:38:58 UTC (rev 66175) @@ -77,7 +77,7 @@ The end_* functions are represented by the null() internal variables in case of time instances. -

    NOTE

    +

    NOTES

    We will discuss the internal work of t.rast.mapcalc with an example. Imagine we have two STRDS as input, each with monthly Modified: grass/branches/releasebranch_7_0/temporal/t.rast.to.rast3/t.rast.to.rast3.html =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.rast.to.rast3/t.rast.to.rast3.html 2015-09-12 09:38:35 UTC (rev 66174) +++ grass/branches/releasebranch_7_0/temporal/t.rast.to.rast3/t.rast.to.rast3.html 2015-09-12 09:38:58 UTC (rev 66175) @@ -15,7 +15,7 @@ be represented by NULL values in the voxel map layer. -

    NOTE

    +

    NOTES

    The reference time for all space time voxel cubes is 1900-01-0100:00:00. This allows the alignment space time voxel cubes Modified: grass/branches/releasebranch_7_0/temporal/t.register/t.register.html =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.register/t.register.html 2015-09-12 09:38:35 UTC (rev 66174) +++ grass/branches/releasebranch_7_0/temporal/t.register/t.register.html 2015-09-12 09:38:58 UTC (rev 66175) @@ -12,10 +12,15 @@ works only for maps that are not already registered in the temporal database.

    -This module supports absolute and relative time. Maps can be registered -by command line argument (a list of comma separated map names) or using -an input file. The start time, the end time and a temporal increment -can be provided by command line or in the input file. End time and +This module supports absolute and relative time. The absolute temporal type +refers to a fixed date while the relative temporal type refers to data +without fixed time stamps (e.g., sequential maps used to calculate +multi-decadal averages). + +

    +Maps can be registered by command line argument (a list of comma separated map +names) or using an input file. The start time, the end time and a temporal +increment can be provided by command line or in the input file. End time and increment are mutual exclusive. The user can register single maps or a list of maps at once. Maps can be registered in several space time datasets using the same timestamp. @@ -26,7 +31,7 @@ unit (years, months, days, hours, minutes or seconds) must be provided. The relative start time, end time and the increment are integers. -

    Note

    +

    NOTES

    The timestamps of registered maps will be stored in the temporal database and in the metadata of the grass maps in the spatial database. @@ -48,7 +53,8 @@ prec_6
    -Specification of map names and the absolute start time (date) of the time instances: +Specification of map names and the absolute start time (date) of the +time instances:
     prec_1|2001-01-01
     prec_2|2001-02-01
    @@ -67,7 +73,8 @@
     terra_lst_day20020117|2002-01-17 10:30
     
    -Specification of the map name and the absolute time interval with start and end time: +Specification of the map name and the absolute time interval with start +and end time:
     prec_1|2001-01-01|2001-04-01
     prec_2|2001-04-01|2001-07-01
    @@ -91,7 +98,12 @@
     
     

    Synthetic maps

    -In this example we create 6 raster maps that will be registered in a single space time raster dataset named precip_abs using a monthly temporal granularity. The -i flag generates interval time. The generated timestamps will be inspected using r.timestamp and t.rast.list. We will register an additional map with a timetsamp that was set with r.timestamp. +In this example we create 6 raster maps that will be registered in a +single space time raster dataset named precip_abs using a monthly +temporal granularity. The -i flag generates interval time. The +generated timestamps will be inspected using r.timestamp and +t.rast.list. We will register an additional map with a timestamp +that was set with r.timestamp.
     r.mapcalc expr="prec_1 = 100"
    
    Modified: grass/branches/releasebranch_7_0/temporal/t.rename/t.rename.html
    ===================================================================
    --- grass/branches/releasebranch_7_0/temporal/t.rename/t.rename.html	2015-09-12 09:38:35 UTC (rev 66174)
    +++ grass/branches/releasebranch_7_0/temporal/t.rename/t.rename.html	2015-09-12 09:38:58 UTC (rev 66175)
    @@ -3,7 +3,7 @@
     This module renames space time datasets of different types (STRDS, STVDS, STR3DS)
     and updates the space time dataset register entries of the registered maps.
     
    -

    NOTE

    +

    NOTES

    Renaming of space time datasets works only for SQLite based temporal databases. Modified: grass/branches/releasebranch_7_0/temporal/t.sample/t.sample.html =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.sample/t.sample.html 2015-09-12 09:38:35 UTC (rev 66174) +++ grass/branches/releasebranch_7_0/temporal/t.sample/t.sample.html 2015-09-12 09:38:58 UTC (rev 66175) @@ -12,7 +12,7 @@ spatio-temporal topology, so that only spatio-temporal related map layers of space time datasets are considered in the analysis. -

    NOTE

    +

    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 Modified: grass/branches/releasebranch_7_0/temporal/t.shift/t.shift.html =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.shift/t.shift.html 2015-09-12 09:38:35 UTC (rev 66174) +++ grass/branches/releasebranch_7_0/temporal/t.shift/t.shift.html 2015-09-12 09:38:58 UTC (rev 66175) @@ -11,7 +11,7 @@ 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. -

    Note

    +

    NOTES

    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 From svn_grass at osgeo.org Sat Sep 12 04:46:35 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sat, 12 Sep 2015 04:46:35 -0700 Subject: [GRASS-SVN] r66176 - grass-addons Message-ID: <20150912114635.D587F390151@trac.osgeo.org> Author: martinl Date: 2015-09-12 04:46:35 -0700 (Sat, 12 Sep 2015) New Revision: 66176 Removed: grass-addons/wxgui_modeler/ Log: remove leftover (wxgui models outdated) From svn_grass at osgeo.org Sat Sep 12 05:21:02 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sat, 12 Sep 2015 05:21:02 -0700 Subject: [GRASS-SVN] r66177 - grass-addons/tools/addons Message-ID: <20150912122102.CB8AE390151@trac.osgeo.org> Author: martinl Date: 2015-09-12 05:21:02 -0700 (Sat, 12 Sep 2015) New Revision: 66177 Modified: grass-addons/tools/addons/grass-addons.sh Log: addons cronjob scripts: better check when to compile (script runs every 15min) Modified: grass-addons/tools/addons/grass-addons.sh =================================================================== --- grass-addons/tools/addons/grass-addons.sh 2015-09-12 11:46:35 UTC (rev 66176) +++ grass-addons/tools/addons/grass-addons.sh 2015-09-12 12:21:02 UTC (rev 66177) @@ -7,6 +7,7 @@ MANDIR=/var/www/grass/grass-cms/ XMLDIR=/var/www/grass/addons/ #??? MANDIR=/var/www/grass +CHECK_EVERY_MIN=15 if [ ! -d "$XMLDIR" ]; then mkdir -p $XMLDIR @@ -76,8 +77,16 @@ cd $DIR/grass-addons/ -nup=`(svn up || (svn cleanup && svn up)) | wc -l` -if [ "$nup" -gt 1 ] || [ "$1" = "f" ] ; then +# update +svn up || (svn cleanup && svn up) + +# check last change +date_last=`svn info --incremental --xml | grep date | cut -d '>' -f2 | cut -d '<' -f1` +num_last=`date --date="$date_last" +%s` +num_now=`date -u +%s` +count=$(echo "($num_now - $num_last) / 60." | bc) + +if [ "$count" -lt "$CHECK_EVERY_MIN" ] || [ "$1" = "f" ] ; then build_addons $1 exit 0 fi From svn_grass at osgeo.org Sat Sep 12 05:37:18 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sat, 12 Sep 2015 05:37:18 -0700 Subject: [GRASS-SVN] r66178 - grass-addons/tools/addons Message-ID: <20150912123718.A0C39390151@trac.osgeo.org> Author: martinl Date: 2015-09-12 05:37:18 -0700 (Sat, 12 Sep 2015) New Revision: 66178 Modified: grass-addons/tools/addons/grass-addons.sh Log: addons build script: be less verbose (cosmetics) Modified: grass-addons/tools/addons/grass-addons.sh =================================================================== --- grass-addons/tools/addons/grass-addons.sh 2015-09-12 12:21:02 UTC (rev 66177) +++ grass-addons/tools/addons/grass-addons.sh 2015-09-12 12:37:18 UTC (rev 66178) @@ -78,7 +78,7 @@ cd $DIR/grass-addons/ # update -svn up || (svn cleanup && svn up) +svn up -q || (svn cleanup && svn up) # check last change date_last=`svn info --incremental --xml | grep date | cut -d '>' -f2 | cut -d '<' -f1` @@ -87,6 +87,7 @@ count=$(echo "($num_now - $num_last) / 60." | bc) if [ "$count" -lt "$CHECK_EVERY_MIN" ] || [ "$1" = "f" ] ; then + echo "TIME DIFF (min): $count" build_addons $1 exit 0 fi From svn_grass at osgeo.org Sat Sep 12 11:04:42 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sat, 12 Sep 2015 11:04:42 -0700 Subject: [GRASS-SVN] r66179 - in grass/trunk/temporal: t.list t.rast.list t.rast.univar t.rast3d.list t.rast3d.univar t.register t.vect.db.select t.vect.list t.vect.univar Message-ID: <20150912180442.C450D390151@trac.osgeo.org> Author: neteler Date: 2015-09-12 11:04:42 -0700 (Sat, 12 Sep 2015) New Revision: 66179 Modified: grass/trunk/temporal/t.list/t.list.py grass/trunk/temporal/t.rast.list/t.rast.list.html grass/trunk/temporal/t.rast.list/t.rast.list.py grass/trunk/temporal/t.rast.univar/t.rast.univar.py grass/trunk/temporal/t.rast3d.list/t.rast3d.list.py grass/trunk/temporal/t.rast3d.univar/t.rast3d.univar.py grass/trunk/temporal/t.register/t.register.py grass/trunk/temporal/t.vect.db.select/t.vect.db.select.py grass/trunk/temporal/t.vect.list/t.vect.list.py grass/trunk/temporal/t.vect.univar/t.vect.univar.py Log: temporal separator parameter: use label to re-enable standard description Modified: grass/trunk/temporal/t.list/t.list.py =================================================================== --- grass/trunk/temporal/t.list/t.list.py 2015-09-12 12:37:18 UTC (rev 66178) +++ grass/trunk/temporal/t.list/t.list.py 2015-09-12 18:04:42 UTC (rev 66179) @@ -66,7 +66,7 @@ #%end #%option G_OPT_F_SEP -#% description: Field separator character between the output columns +#% label: Field separator character between the output columns #% guisection: Formatting #%end Modified: grass/trunk/temporal/t.rast.list/t.rast.list.html =================================================================== --- grass/trunk/temporal/t.rast.list/t.rast.list.html 2015-09-12 12:37:18 UTC (rev 66178) +++ grass/trunk/temporal/t.rast.list/t.rast.list.html 2015-09-12 18:04:42 UTC (rev 66179) @@ -21,7 +21,7 @@ map layer sampled by a user defined granule. As default the granularity of the space time raster dataset is used for sampling. -For user defined column separator can be specified with the separator +The output column separator can be specified with the separator option.

    EXAMPLE

    Modified: grass/trunk/temporal/t.rast.list/t.rast.list.py =================================================================== --- grass/trunk/temporal/t.rast.list/t.rast.list.py 2015-09-12 12:37:18 UTC (rev 66178) +++ grass/trunk/temporal/t.rast.list/t.rast.list.py 2015-09-12 18:04:42 UTC (rev 66179) @@ -70,7 +70,7 @@ #%end #%option G_OPT_F_SEP -#% description: Field separator character between the output columns +#% label: Field separator character between the output columns #% guisection: Formatting #%end Modified: grass/trunk/temporal/t.rast.univar/t.rast.univar.py =================================================================== --- grass/trunk/temporal/t.rast.univar/t.rast.univar.py 2015-09-12 12:37:18 UTC (rev 66178) +++ grass/trunk/temporal/t.rast.univar/t.rast.univar.py 2015-09-12 18:04:42 UTC (rev 66179) @@ -29,7 +29,7 @@ #%end #%option G_OPT_F_SEP -#% description: Field separator character between the output columns +#% label: Field separator character between the output columns #% guisection: Formatting #%end Modified: grass/trunk/temporal/t.rast3d.list/t.rast3d.list.py =================================================================== --- grass/trunk/temporal/t.rast3d.list/t.rast3d.list.py 2015-09-12 12:37:18 UTC (rev 66178) +++ grass/trunk/temporal/t.rast3d.list/t.rast3d.list.py 2015-09-12 18:04:42 UTC (rev 66179) @@ -62,7 +62,7 @@ #%end #%option G_OPT_F_SEP -#% description: Field separator character between the output columns +#% label: Field separator character between the output columns #% guisection: Formatting #%end Modified: grass/trunk/temporal/t.rast3d.univar/t.rast3d.univar.py =================================================================== --- grass/trunk/temporal/t.rast3d.univar/t.rast3d.univar.py 2015-09-12 12:37:18 UTC (rev 66178) +++ grass/trunk/temporal/t.rast3d.univar/t.rast3d.univar.py 2015-09-12 18:04:42 UTC (rev 66179) @@ -31,7 +31,7 @@ #%end #%option G_OPT_F_SEP -#% description: Field separator character between the output columns +#% label: Field separator character between the output columns #% guisection: Formatting #%end Modified: grass/trunk/temporal/t.register/t.register.py =================================================================== --- grass/trunk/temporal/t.register/t.register.py 2015-09-12 12:37:18 UTC (rev 66178) +++ grass/trunk/temporal/t.register/t.register.py 2015-09-12 18:04:42 UTC (rev 66179) @@ -87,7 +87,7 @@ #%end #%option G_OPT_F_SEP -#% description: Field separator character of the input file +#% label: Field separator character of the input file #% guisection: Input #%end Modified: grass/trunk/temporal/t.vect.db.select/t.vect.db.select.py =================================================================== --- grass/trunk/temporal/t.vect.db.select/t.vect.db.select.py 2015-09-12 12:37:18 UTC (rev 66178) +++ grass/trunk/temporal/t.vect.db.select/t.vect.db.select.py 2015-09-12 18:04:42 UTC (rev 66179) @@ -30,7 +30,7 @@ #%end #%option G_OPT_F_SEP -#% description: Field separator character between the output columns +#% label: Field separator character between the output columns #%end #%option G_OPT_V_FIELD Modified: grass/trunk/temporal/t.vect.list/t.vect.list.py =================================================================== --- grass/trunk/temporal/t.vect.list/t.vect.list.py 2015-09-12 12:37:18 UTC (rev 66178) +++ grass/trunk/temporal/t.vect.list/t.vect.list.py 2015-09-12 18:04:42 UTC (rev 66179) @@ -62,7 +62,7 @@ #%end #%option G_OPT_F_SEP -#% description: Field separator character between the output columns +#% label: Field separator character between the output columns #% guisection: Formatting #%end Modified: grass/trunk/temporal/t.vect.univar/t.vect.univar.py =================================================================== --- grass/trunk/temporal/t.vect.univar/t.vect.univar.py 2015-09-12 12:37:18 UTC (rev 66178) +++ grass/trunk/temporal/t.vect.univar/t.vect.univar.py 2015-09-12 18:04:42 UTC (rev 66179) @@ -47,7 +47,7 @@ #%end #%option G_OPT_F_SEP -#% description: Field separator character between the output columns +#% label: Field separator character between the output columns #% guisection: Formatting #%end From svn_grass at osgeo.org Sat Sep 12 11:05:17 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sat, 12 Sep 2015 11:05:17 -0700 Subject: [GRASS-SVN] r66180 - in grass/branches/releasebranch_7_0/temporal: t.list t.rast.list t.rast.univar t.rast3d.list t.rast3d.univar t.register t.vect.db.select t.vect.list t.vect.univar Message-ID: <20150912180518.0DF08390151@trac.osgeo.org> Author: neteler Date: 2015-09-12 11:05:17 -0700 (Sat, 12 Sep 2015) New Revision: 66180 Modified: grass/branches/releasebranch_7_0/temporal/t.list/t.list.py grass/branches/releasebranch_7_0/temporal/t.rast.list/t.rast.list.html grass/branches/releasebranch_7_0/temporal/t.rast.list/t.rast.list.py grass/branches/releasebranch_7_0/temporal/t.rast.univar/t.rast.univar.py grass/branches/releasebranch_7_0/temporal/t.rast3d.list/t.rast3d.list.py grass/branches/releasebranch_7_0/temporal/t.rast3d.univar/t.rast3d.univar.py grass/branches/releasebranch_7_0/temporal/t.register/t.register.py grass/branches/releasebranch_7_0/temporal/t.vect.db.select/t.vect.db.select.py grass/branches/releasebranch_7_0/temporal/t.vect.list/t.vect.list.py grass/branches/releasebranch_7_0/temporal/t.vect.univar/t.vect.univar.py Log: temporal separator parameter: use label to re-enable standard description Modified: grass/branches/releasebranch_7_0/temporal/t.list/t.list.py =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.list/t.list.py 2015-09-12 18:04:42 UTC (rev 66179) +++ grass/branches/releasebranch_7_0/temporal/t.list/t.list.py 2015-09-12 18:05:17 UTC (rev 66180) @@ -66,7 +66,7 @@ #%end #%option G_OPT_F_SEP -#% description: Field separator character between the output columns +#% label: Field separator character between the output columns #% guisection: Formatting #%end Modified: grass/branches/releasebranch_7_0/temporal/t.rast.list/t.rast.list.html =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.rast.list/t.rast.list.html 2015-09-12 18:04:42 UTC (rev 66179) +++ grass/branches/releasebranch_7_0/temporal/t.rast.list/t.rast.list.html 2015-09-12 18:05:17 UTC (rev 66180) @@ -21,7 +21,7 @@ map layer sampled by a user defined granule. As default the granularity of the space time raster dataset is used for sampling. -For user defined column separator can be specified with the separator +The output column separator can be specified with the separator option.

    EXAMPLE

    Modified: grass/branches/releasebranch_7_0/temporal/t.rast.list/t.rast.list.py =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.rast.list/t.rast.list.py 2015-09-12 18:04:42 UTC (rev 66179) +++ grass/branches/releasebranch_7_0/temporal/t.rast.list/t.rast.list.py 2015-09-12 18:05:17 UTC (rev 66180) @@ -70,7 +70,7 @@ #%end #%option G_OPT_F_SEP -#% description: Field separator character between the output columns +#% label: Field separator character between the output columns #% guisection: Formatting #%end Modified: grass/branches/releasebranch_7_0/temporal/t.rast.univar/t.rast.univar.py =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.rast.univar/t.rast.univar.py 2015-09-12 18:04:42 UTC (rev 66179) +++ grass/branches/releasebranch_7_0/temporal/t.rast.univar/t.rast.univar.py 2015-09-12 18:05:17 UTC (rev 66180) @@ -29,7 +29,7 @@ #%end #%option G_OPT_F_SEP -#% description: Field separator character between the output columns +#% label: Field separator character between the output columns #% guisection: Formatting #%end Modified: grass/branches/releasebranch_7_0/temporal/t.rast3d.list/t.rast3d.list.py =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.rast3d.list/t.rast3d.list.py 2015-09-12 18:04:42 UTC (rev 66179) +++ grass/branches/releasebranch_7_0/temporal/t.rast3d.list/t.rast3d.list.py 2015-09-12 18:05:17 UTC (rev 66180) @@ -62,7 +62,7 @@ #%end #%option G_OPT_F_SEP -#% description: Field separator character between the output columns +#% label: Field separator character between the output columns #% guisection: Formatting #%end Modified: grass/branches/releasebranch_7_0/temporal/t.rast3d.univar/t.rast3d.univar.py =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.rast3d.univar/t.rast3d.univar.py 2015-09-12 18:04:42 UTC (rev 66179) +++ grass/branches/releasebranch_7_0/temporal/t.rast3d.univar/t.rast3d.univar.py 2015-09-12 18:05:17 UTC (rev 66180) @@ -31,7 +31,7 @@ #%end #%option G_OPT_F_SEP -#% description: Field separator character between the output columns +#% label: Field separator character between the output columns #% guisection: Formatting #%end Modified: grass/branches/releasebranch_7_0/temporal/t.register/t.register.py =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.register/t.register.py 2015-09-12 18:04:42 UTC (rev 66179) +++ grass/branches/releasebranch_7_0/temporal/t.register/t.register.py 2015-09-12 18:05:17 UTC (rev 66180) @@ -87,7 +87,7 @@ #%end #%option G_OPT_F_SEP -#% description: Field separator character of the input file +#% label: Field separator character of the input file #% guisection: Input #%end Modified: grass/branches/releasebranch_7_0/temporal/t.vect.db.select/t.vect.db.select.py =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.vect.db.select/t.vect.db.select.py 2015-09-12 18:04:42 UTC (rev 66179) +++ grass/branches/releasebranch_7_0/temporal/t.vect.db.select/t.vect.db.select.py 2015-09-12 18:05:17 UTC (rev 66180) @@ -30,7 +30,7 @@ #%end #%option G_OPT_F_SEP -#% description: Field separator character between the output columns +#% label: Field separator character between the output columns #%end #%option G_OPT_V_FIELD Modified: grass/branches/releasebranch_7_0/temporal/t.vect.list/t.vect.list.py =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.vect.list/t.vect.list.py 2015-09-12 18:04:42 UTC (rev 66179) +++ grass/branches/releasebranch_7_0/temporal/t.vect.list/t.vect.list.py 2015-09-12 18:05:17 UTC (rev 66180) @@ -62,7 +62,7 @@ #%end #%option G_OPT_F_SEP -#% description: Field separator character between the output columns +#% label: Field separator character between the output columns #% guisection: Formatting #%end Modified: grass/branches/releasebranch_7_0/temporal/t.vect.univar/t.vect.univar.py =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.vect.univar/t.vect.univar.py 2015-09-12 18:04:42 UTC (rev 66179) +++ grass/branches/releasebranch_7_0/temporal/t.vect.univar/t.vect.univar.py 2015-09-12 18:05:17 UTC (rev 66180) @@ -47,7 +47,7 @@ #%end #%option G_OPT_F_SEP -#% description: Field separator character between the output columns +#% label: Field separator character between the output columns #% guisection: Formatting #%end From svn_grass at osgeo.org Sat Sep 12 11:35:45 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sat, 12 Sep 2015 11:35:45 -0700 Subject: [GRASS-SVN] r66181 - grass/trunk/vector/v.in.lidar Message-ID: <20150912183545.2C46D390151@trac.osgeo.org> Author: wenzeslaus Date: 2015-09-12 11:35:45 -0700 (Sat, 12 Sep 2015) New Revision: 66181 Modified: grass/trunk/vector/v.in.lidar/main.c Log: v.in.lidar: add decimation based on counting Simple decimation using skipping or preserving every n-nt, ignoring points at the beginning or limiting number of points. Four new options added to group Decimation. The rest reordered and put into groups Selection and Speed. Modified: grass/trunk/vector/v.in.lidar/main.c =================================================================== --- grass/trunk/vector/v.in.lidar/main.c 2015-09-12 18:05:17 UTC (rev 66180) +++ grass/trunk/vector/v.in.lidar/main.c 2015-09-12 18:35:45 UTC (rev 66181) @@ -112,6 +112,7 @@ float xmin = 0., ymin = 0., xmax = 0., ymax = 0.; struct GModule *module; struct Option *in_opt, *out_opt, *spat_opt, *filter_opt, *class_opt; + struct Option *skip_opt, *preserve_opt, *offset_opt, *limit_opt; struct Option *outloc_opt; struct Flag *print_flag, *notab_flag, *region_flag, *notopo_flag; struct Flag *over_flag, *extend_flag, *no_import_flag; @@ -171,17 +172,10 @@ spat_opt->required = NO; spat_opt->key_desc = "xmin,ymin,xmax,ymax"; spat_opt->label = _("Import subregion only"); - spat_opt->guisection = _("Subregion"); + spat_opt->guisection = _("Selection"); spat_opt->description = _("Format: xmin,ymin,xmax,ymax - usually W,S,E,N"); - outloc_opt = G_define_option(); - outloc_opt->key = "location"; - outloc_opt->type = TYPE_STRING; - outloc_opt->required = NO; - outloc_opt->description = _("Name for new location to create"); - outloc_opt->key_desc = "name"; - filter_opt = G_define_option(); filter_opt->key = "return_filter"; filter_opt->type = TYPE_STRING; @@ -189,6 +183,7 @@ filter_opt->label = _("Only import points of selected return type"); filter_opt->description = _("If not specified, all points are imported"); filter_opt->options = "first,last,mid"; + filter_opt->guisection = _("Selection"); class_opt = G_define_option(); class_opt->key = "class_filter"; @@ -198,33 +193,82 @@ class_opt->label = _("Only import points of selected class(es)"); class_opt->description = _("Input is comma separated integers. " "If not specified, all points are imported."); + class_opt->guisection = _("Selection"); + skip_opt = G_define_option(); + skip_opt->key = "skip"; + skip_opt->type = TYPE_INTEGER; + skip_opt->multiple = NO; + skip_opt->required = NO; + skip_opt->label = _("Do not import every n-th point"); + skip_opt->description = _("For example, 5 will import 80 percent of points. " + "If not specified, all points are imported"); + skip_opt->guisection = _("Decimation"); + + preserve_opt = G_define_option(); + preserve_opt->key = "preserve"; + preserve_opt->type = TYPE_INTEGER; + preserve_opt->multiple = NO; + preserve_opt->required = NO; + preserve_opt->label = _("Import only every n-th point"); + preserve_opt->description = _("For example, 4 will import 25 percent of points. " + "If not specified, all points are imported"); + preserve_opt->guisection = _("Decimation"); + + offset_opt = G_define_option(); + offset_opt->key = "offset"; + offset_opt->type = TYPE_INTEGER; + offset_opt->multiple = NO; + offset_opt->required = NO; + offset_opt->label = _("Skip first n points"); + offset_opt->description = _("Skips the given number of points at the beginning."); + offset_opt->guisection = _("Decimation"); + + limit_opt = G_define_option(); + limit_opt->key = "limit"; + limit_opt->type = TYPE_INTEGER; + limit_opt->multiple = NO; + limit_opt->required = NO; + limit_opt->label = _("Import only n points"); + limit_opt->description = _("Imports only the given number of points"); + limit_opt->guisection = _("Decimation"); + + outloc_opt = G_define_option(); + outloc_opt->key = "location"; + outloc_opt->type = TYPE_STRING; + outloc_opt->required = NO; + outloc_opt->description = _("Name for new location to create"); + outloc_opt->key_desc = "name"; + print_flag = G_define_flag(); print_flag->key = 'p'; print_flag->description = _("Print LAS file info and exit"); print_flag->suppress_required = YES; - - notab_flag = G_define_standard_flag(G_FLG_V_TABLE); - notab_flag->guisection = _("Attributes"); - over_flag = G_define_flag(); - over_flag->key = 'o'; - over_flag->label = - _("Override projection check (use current location's projection)"); - over_flag->description = - _("Assume that the dataset has same projection as the current location"); - region_flag = G_define_flag(); region_flag->key = 'r'; - region_flag->guisection = _("Subregion"); + region_flag->guisection = _("Selection"); region_flag->description = _("Limit import to the current region"); extend_flag = G_define_flag(); extend_flag->key = 'e'; extend_flag->description = - _("Extend region extents based on new dataset"); + _("Extend region extents based on new dataset"); + notab_flag = G_define_standard_flag(G_FLG_V_TABLE); + notab_flag->guisection = _("Speed"); + + notopo_flag = G_define_standard_flag(G_FLG_V_TOPO); + notopo_flag->guisection = _("Speed"); + + over_flag = G_define_flag(); + over_flag->key = 'o'; + over_flag->label = + _("Override projection check (use current location's projection)"); + over_flag->description = + _("Assume that the dataset has same projection as the current location"); + no_import_flag = G_define_flag(); no_import_flag->key = 'i'; no_import_flag->description = @@ -232,7 +276,7 @@ " Do not import the vector data."); no_import_flag->suppress_required = YES; - notopo_flag = G_define_standard_flag(G_FLG_V_TOPO); + G_option_exclusive(skip_opt, preserve_opt, NULL); /* The parser checks if the map already exists in current mapset, this is * wrong if location options is used, so we switch out the check and do it @@ -638,7 +682,26 @@ Points = Vect_new_line_struct(); Cats = Vect_new_cats_struct(); - + + /* counters used by both but that's ok, the filters are exclusive */ + int skip_every = 0; + int preserve_every = 0; + int every_counter = 0; + int n_count_filtered = 0; + int offset_n = 0; + int offset_n_counter = 0; + int limit_n = 0; + /* we are not counting it elsewhere except for cat */ + int limit_n_counter = 0; + if (skip_opt->answer) + skip_every = atoi(skip_opt->answer); + if (preserve_opt->answer) + preserve_every = atoi(preserve_opt->answer); + if (offset_opt->answer) + offset_n = atoi(offset_opt->answer); + if (limit_opt->answer) + limit_n = atoi(limit_opt->answer); + G_important_message(_("Scanning %d points..."), n_features); while ((LAS_point = LASReader_GetNextPoint(LAS_reader)) != NULL) { double x, y, z; @@ -704,6 +767,31 @@ continue; } } + if (offset_n) { + offset_n_counter++; + if (offset_n_counter < offset_n) + continue; + else + offset_n = 0; /* disable offset check */ + } + if (skip_every) { + every_counter++; + if (every_counter == skip_every) { + n_count_filtered++; + every_counter = 0; + continue; + } + } + else if (preserve_every) { + every_counter++; + if (every_counter == preserve_every) { + every_counter = 0; + } + else { + n_count_filtered++; + continue; + } + } Vect_append_point(Points, x, y, z); Vect_cat_set(Cats, 1, cat); @@ -788,6 +876,12 @@ } } + if (limit_n) { + limit_n_counter++; + /* this matches the last successfully imported point */ + if (limit_n_counter == limit_n) + break; + } cat++; } G_percent(n_features, n_features, 1); /* finish it */ @@ -805,9 +899,13 @@ if (!notopo_flag->answer) Vect_build(&Map); Vect_close(&Map); - - G_message(_("%d points imported"), - n_features - not_valid - n_outside - n_filtered - n_class_filtered); + + if (limit_n) + G_message(_("%d points imported (limit was %d)"), limit_n_counter, limit_n); + else + G_message(_("%d points imported"), + n_features - not_valid - n_outside - n_filtered - n_class_filtered + - offset_n_counter - n_count_filtered); if (not_valid) G_message(_("%d input points were not valid"), not_valid); if (n_outside) @@ -816,6 +914,12 @@ G_message(_("%d input points were filtered out by return number"), n_filtered); if (n_class_filtered) G_message(_("%d input points were filtered out by class number"), n_class_filtered); + if (offset_n_counter) + G_message(_("%d input points were skipped at the begging using offset"), offset_n_counter); + if (n_count_filtered) + G_message(_("%d input points were skipped by count-based decimation"), n_count_filtered); + if (limit_n) + G_message(_("The rest of points was ignored")); /* -------------------------------------------------------------------- */ /* Extend current window based on dataset. */ From svn_grass at osgeo.org Sat Sep 12 11:50:59 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sat, 12 Sep 2015 11:50:59 -0700 Subject: [GRASS-SVN] r66182 - grass/trunk/temporal/t.info Message-ID: <20150912185059.878823901BD@trac.osgeo.org> Author: neteler Date: 2015-09-12 11:50:59 -0700 (Sat, 12 Sep 2015) New Revision: 66182 Modified: grass/trunk/temporal/t.info/t.info.html Log: t.info manual: remark about granularity added Modified: grass/trunk/temporal/t.info/t.info.html =================================================================== --- grass/trunk/temporal/t.info/t.info.html 2015-09-12 18:35:45 UTC (rev 66181) +++ grass/trunk/temporal/t.info/t.info.html 2015-09-12 18:50:59 UTC (rev 66182) @@ -33,7 +33,7 @@ +----------------------------------------------------------------------------+
    -

    space time dataset information

    +

    Space time dataset information

    In order to obtain information about a space time dataset, run: @@ -90,6 +90,9 @@ +----------------------------------------------------------------------------+
    +The "granularity" is the smallest gap size between the found time instances, i.e. +it the greatest common divisor between all gaps in the time series. +

    Temporal maps information

    In order to obtain information about a map in a space time dataset, run: From svn_grass at osgeo.org Sat Sep 12 11:51:40 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sat, 12 Sep 2015 11:51:40 -0700 Subject: [GRASS-SVN] r66183 - grass/branches/releasebranch_7_0/temporal/t.info Message-ID: <20150912185140.A29CA3901BD@trac.osgeo.org> Author: neteler Date: 2015-09-12 11:51:40 -0700 (Sat, 12 Sep 2015) New Revision: 66183 Modified: grass/branches/releasebranch_7_0/temporal/t.info/t.info.html Log: t.info manual: remark about granularity added Modified: grass/branches/releasebranch_7_0/temporal/t.info/t.info.html =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.info/t.info.html 2015-09-12 18:50:59 UTC (rev 66182) +++ grass/branches/releasebranch_7_0/temporal/t.info/t.info.html 2015-09-12 18:51:40 UTC (rev 66183) @@ -33,7 +33,7 @@ +----------------------------------------------------------------------------+
    -

    space time dataset information

    +

    Space time dataset information

    In order to obtain information about a space time dataset, run: @@ -90,6 +90,9 @@ +----------------------------------------------------------------------------+ +The "granularity" is the smallest gap size between the found time instances, i.e. +it the greatest common divisor between all gaps in the time series. +

    Temporal maps information

    In order to obtain information about a map in a space time dataset, run: From svn_grass at osgeo.org Sat Sep 12 15:09:48 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sat, 12 Sep 2015 15:09:48 -0700 Subject: [GRASS-SVN] r66184 - grass/trunk/vector/v.in.ogr Message-ID: <20150912220948.C6E8D390151@trac.osgeo.org> Author: martinl Date: 2015-09-12 15:09:48 -0700 (Sat, 12 Sep 2015) New Revision: 66184 Modified: grass/trunk/vector/v.in.ogr/main.c Log: v.in.ogr: wrong projection check when importing geometry column from table with multiple geometry columns (#2740) Modified: grass/trunk/vector/v.in.ogr/main.c =================================================================== --- grass/trunk/vector/v.in.ogr/main.c 2015-09-12 18:51:40 UTC (rev 66183) +++ grass/trunk/vector/v.in.ogr/main.c 2015-09-12 22:09:48 UTC (rev 66184) @@ -544,9 +544,25 @@ /* Fetch input map projection in GRASS form. */ proj_info = NULL; proj_units = NULL; +#if GDAL_VERSION_NUM >= 1110000 + if (param.geom->answer) { + OGRGeomFieldDefnH Ogr_geomdefn; + + Ogr_featuredefn = OGR_L_GetLayerDefn(Ogr_layer); + igeom = OGR_FD_GetGeomFieldIndex(Ogr_featuredefn, param.geom->answer); + if (igeom < 0) + G_fatal_error(_("Geometry column <%s> not found in OGR layer <%s>"), + param.geom->answer, OGR_L_GetName(Ogr_layer)); + Ogr_geomdefn = OGR_FD_GetGeomFieldDefn(Ogr_featuredefn, igeom); + Ogr_projection = OGR_GFld_GetSpatialRef(Ogr_geomdefn); + } + else { + Ogr_projection = OGR_L_GetSpatialRef(Ogr_layer); + } +#else Ogr_projection = OGR_L_GetSpatialRef(Ogr_layer); /* should not be freed later */ +#endif - /* fetch boundaries */ G_get_window(&cellhd); if ((OGR_L_GetExtent(Ogr_layer, &oExt, 1)) == OGRERR_NONE) { From svn_grass at osgeo.org Sat Sep 12 16:01:26 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sat, 12 Sep 2015 16:01:26 -0700 Subject: [GRASS-SVN] r66185 - grass-addons/grass7/raster/r.subdayprecip.design Message-ID: <20150912230126.971A93901BD@trac.osgeo.org> Author: martinl Date: 2015-09-12 16:01:26 -0700 (Sat, 12 Sep 2015) New Revision: 66185 Modified: grass-addons/grass7/raster/r.subdayprecip.design/r.subdayprecip.design.html Log: r.subdayprecip.design: fix syntax typo Modified: grass-addons/grass7/raster/r.subdayprecip.design/r.subdayprecip.design.html =================================================================== --- grass-addons/grass7/raster/r.subdayprecip.design/r.subdayprecip.design.html 2015-09-12 22:09:48 UTC (rev 66184) +++ grass-addons/grass7/raster/r.subdayprecip.design/r.subdayprecip.design.html 2015-09-12 23:01:26 UTC (rev 66185) @@ -88,4 +88,4 @@ Esri ArcGIS platform by M. Tomasu in 2013 (see REFERENCES).

    -Last changed: $Date $ +Last changed: $Date$ From svn_grass at osgeo.org Sat Sep 12 16:09:23 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sat, 12 Sep 2015 16:09:23 -0700 Subject: [GRASS-SVN] r66186 - grass/branches/releasebranch_7_0/vector/v.what Message-ID: <20150912230923.1C0503901BD@trac.osgeo.org> Author: neteler Date: 2015-09-12 16:09:23 -0700 (Sat, 12 Sep 2015) New Revision: 66186 Modified: grass/branches/releasebranch_7_0/vector/v.what/what.c Log: v.what: gettext (trunk, r66010) Modified: grass/branches/releasebranch_7_0/vector/v.what/what.c =================================================================== --- grass/branches/releasebranch_7_0/vector/v.what/what.c 2015-09-12 23:01:26 UTC (rev 66185) +++ grass/branches/releasebranch_7_0/vector/v.what/what.c 2015-09-12 23:09:23 UTC (rev 66186) @@ -41,7 +41,7 @@ G_debug(2, "Open driver"); driver = db_start_driver(drvname); if (!driver) - G_fatal_error("Cannot open driver"); + G_fatal_error(_("Cannot open driver")); G_debug(2, "Driver opened"); @@ -49,7 +49,7 @@ db_set_handle(&handle, dbname, NULL); G_debug(2, "Open database"); if (db_open_database(driver, &handle) != DB_OK) - G_fatal_error("Cannot open database"); + G_fatal_error(_("Cannot open database")); db_set_error_handler_driver(driver); G_debug(2, "Database opened"); @@ -62,17 +62,17 @@ G_debug(2, "%s", buf); db_set_string(&sql, buf); if (db_open_select_cursor(driver, &sql, &cursor, DB_SEQUENTIAL) != DB_OK) - G_fatal_error("Cannot open select cursor"); + G_fatal_error(_("Cannot open select cursor")); G_debug(2, "Select Cursor opened"); table = db_get_cursor_table(&cursor); if (db_fetch(&cursor, DB_NEXT, &more) != DB_OK) - G_fatal_error("Cannot fetch next record"); + G_fatal_error(_("Cannot fetch next record")); if (!more) { - G_warning("No database record"); + G_warning(_("No database record")); *form = G_store("No record selected."); } else { From svn_grass at osgeo.org Sun Sep 13 05:24:32 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sun, 13 Sep 2015 05:24:32 -0700 Subject: [GRASS-SVN] r66187 - grass/branches/releasebranch_7_0/vector/v.in.ogr Message-ID: <20150913122432.A861D390151@trac.osgeo.org> Author: martinl Date: 2015-09-13 05:24:32 -0700 (Sun, 13 Sep 2015) New Revision: 66187 Modified: grass/branches/releasebranch_7_0/vector/v.in.ogr/main.c Log: v.in.ogr: wrong projection check when importing geometry column from table with multiple geometry columns (#2740) (merge r66184 from trunk) Modified: grass/branches/releasebranch_7_0/vector/v.in.ogr/main.c =================================================================== --- grass/branches/releasebranch_7_0/vector/v.in.ogr/main.c 2015-09-12 23:09:23 UTC (rev 66186) +++ grass/branches/releasebranch_7_0/vector/v.in.ogr/main.c 2015-09-13 12:24:32 UTC (rev 66187) @@ -531,9 +531,25 @@ /* Fetch input map projection in GRASS form. */ proj_info = NULL; proj_units = NULL; +#if GDAL_VERSION_NUM >= 1110000 + if (param.geom->answer) { + OGRGeomFieldDefnH Ogr_geomdefn; + + Ogr_featuredefn = OGR_L_GetLayerDefn(Ogr_layer); + igeom = OGR_FD_GetGeomFieldIndex(Ogr_featuredefn, param.geom->answer); + if (igeom < 0) + G_fatal_error(_("Geometry column <%s> not found in OGR layer <%s>"), + param.geom->answer, OGR_L_GetName(Ogr_layer)); + Ogr_geomdefn = OGR_FD_GetGeomFieldDefn(Ogr_featuredefn, igeom); + Ogr_projection = OGR_GFld_GetSpatialRef(Ogr_geomdefn); + } + else { + Ogr_projection = OGR_L_GetSpatialRef(Ogr_layer); + } +#else Ogr_projection = OGR_L_GetSpatialRef(Ogr_layer); /* should not be freed later */ +#endif - /* fetch boundaries */ G_get_window(&cellhd); if ((OGR_L_GetExtent(Ogr_layer, &oExt, 1)) == OGRERR_NONE) { From svn_grass at osgeo.org Sun Sep 13 05:47:50 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sun, 13 Sep 2015 05:47:50 -0700 Subject: [GRASS-SVN] r66188 - grass/trunk/vector/v.lidar.edgedetection Message-ID: <20150913124751.000203901BD@trac.osgeo.org> Author: martinl Date: 2015-09-13 05:47:50 -0700 (Sun, 13 Sep 2015) New Revision: 66188 Modified: grass/trunk/vector/v.lidar.edgedetection/v.lidar.edgedetection.html Log: v.lidar.edgedetection: manual cosmetics (authors last) Modified: grass/trunk/vector/v.lidar.edgedetection/v.lidar.edgedetection.html =================================================================== --- grass/trunk/vector/v.lidar.edgedetection/v.lidar.edgedetection.html 2015-09-13 12:24:32 UTC (rev 66187) +++ grass/trunk/vector/v.lidar.edgedetection/v.lidar.edgedetection.html 2015-09-13 12:47:50 UTC (rev 66188) @@ -4,8 +4,8 @@ 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 @@ -26,13 +26,12 @@ 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 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. +v.lidar.growing module. -

    NOTES

    @@ -40,31 +39,29 @@ 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: -
    -
    + +
     TERRAIN (cat = 1, layer = 1)
    -
    EDGE (cat = 2, layer = 1) -
    UNKNOWN (cat = 3, layer = 1) -
    -The final result of the whole procedure (v.lidar.edgedetection, -v.lidar.growing, v.lidar.correction) will be a point classification in -four categories: -
    -
    +
    + +The final result of the whole procedure (v.lidar.edgedetection, +v.lidar.growing, +v.lidar.correction) +will be a point classification in four categories: + +
     TERRAIN SINGLE PULSE (cat = 1, layer = 2)
    -
    TERRAIN DOUBLE PULSE (cat = 2, layer = 2) -
    OBJECT SINGLE PULSE (cat = 3, layer = 2) -
    OBJECT DOUBLE PULSE (cat = 4, layer = 2) +
    -

    EXAMPLES

    Basic edge detection

    +
     v.lidar.edgedetection input=vector_last output=edge ew_step=8 ns_step=8 lambda_g=0.5
     
    @@ -122,7 +119,27 @@

    +

    REFERENCES

    +
      +
    • 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 +report by Sithole, G. and Vosselman, G., 2003.
    • +
    +

    SEE ALSO

    @@ -134,8 +151,8 @@ v.in.ascii -

    AUTHORS

    + Original version of program in GRASS 5.4:
    Maria Antonia Brovelli, Massimiliano Cannata, Ulisse Longoni and Mirko Reguzzoni @@ -144,35 +161,5 @@
    Roberto Antolin and Gonzalo Moreno - -

    REFERENCES

    - -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 -report by Sithole, G. and Vosselman, G., 2003. - -
    -

    Last changed: $Date$ +

    +Last changed: $Date$ From svn_grass at osgeo.org Sun Sep 13 05:57:05 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sun, 13 Sep 2015 05:57:05 -0700 Subject: [GRASS-SVN] r66189 - grass-addons/grass7/raster/r.subdayprecip.design Message-ID: <20150913125705.8A3563901BD@trac.osgeo.org> Author: martinl Date: 2015-09-13 05:57:05 -0700 (Sun, 13 Sep 2015) New Revision: 66189 Modified: grass-addons/grass7/raster/r.subdayprecip.design/r.subdayprecip.design.html Log: r.subdayprecip.design: add link to the poster Modified: grass-addons/grass7/raster/r.subdayprecip.design/r.subdayprecip.design.html =================================================================== --- grass-addons/grass7/raster/r.subdayprecip.design/r.subdayprecip.design.html 2015-09-13 12:47:50 UTC (rev 66188) +++ grass-addons/grass7/raster/r.subdayprecip.design/r.subdayprecip.design.html 2015-09-13 12:57:05 UTC (rev 66189) @@ -51,9 +51,10 @@

    REFERENCES

      -
    • Landa M., Kavka P., Strouhal L. (2015). A - GIS tool for reduction day precipitation to subday (Geomatics - Workbooks 12)
    • +
    • Landa M., Kavka P., Strouhal + L. (2015). A + GIS tool for reduction day precipitation to subday + (poster)
    • Tomasu M. (2013). Tvorba nastoje pro sestaveni kratkodobych navrhovych destu na zaklade From svn_grass at osgeo.org Sun Sep 13 06:27:23 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sun, 13 Sep 2015 06:27:23 -0700 Subject: [GRASS-SVN] r66190 - grass-addons/grass7/raster/r.subdayprecip.design Message-ID: <20150913132723.86D4839011D@trac.osgeo.org> Author: martinl Date: 2015-09-13 06:27:23 -0700 (Sun, 13 Sep 2015) New Revision: 66190 Modified: grass-addons/grass7/raster/r.subdayprecip.design/r.subdayprecip.design.py Log: r.subdayprecip.design: module syntax cosmetics Modified: grass-addons/grass7/raster/r.subdayprecip.design/r.subdayprecip.design.py =================================================================== --- grass-addons/grass7/raster/r.subdayprecip.design/r.subdayprecip.design.py 2015-09-13 12:57:05 UTC (rev 66189) +++ grass-addons/grass7/raster/r.subdayprecip.design/r.subdayprecip.design.py 2015-09-13 13:27:23 UTC (rev 66190) @@ -24,12 +24,13 @@ #%end #%option G_OPT_V_MAP -#% description: Name of basin vector map +#% label: Name of vector map to be updated #%end #%option G_OPT_R_INPUTS #% key: raster -#% description: Name of input raster map(s) (H_002,H_005,H_010,H_020,H_050,H_100) +#% label: Name of repetition periods raster map(s) +#% options: H_002,H_005,H_010,H_020,H_050,H_100 #%end #%option From svn_grass at osgeo.org Sun Sep 13 06:28:36 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sun, 13 Sep 2015 06:28:36 -0700 Subject: [GRASS-SVN] r66191 - grass-addons/grass7/raster/r.subdayprecip.design Message-ID: <20150913132836.0FE4039011D@trac.osgeo.org> Author: martinl Date: 2015-09-13 06:28:35 -0700 (Sun, 13 Sep 2015) New Revision: 66191 Modified: grass-addons/grass7/raster/r.subdayprecip.design/r.subdayprecip.design.py Log: r.subdayprecip.design: module syntax cosmetics (label -> description) Modified: grass-addons/grass7/raster/r.subdayprecip.design/r.subdayprecip.design.py =================================================================== --- grass-addons/grass7/raster/r.subdayprecip.design/r.subdayprecip.design.py 2015-09-13 13:27:23 UTC (rev 66190) +++ grass-addons/grass7/raster/r.subdayprecip.design/r.subdayprecip.design.py 2015-09-13 13:28:35 UTC (rev 66191) @@ -29,7 +29,7 @@ #%option G_OPT_R_INPUTS #% key: raster -#% label: Name of repetition periods raster map(s) +#% description: Name of repetition periods raster map(s) #% options: H_002,H_005,H_010,H_020,H_050,H_100 #%end From svn_grass at osgeo.org Sun Sep 13 13:42:44 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sun, 13 Sep 2015 13:42:44 -0700 Subject: [GRASS-SVN] r66192 - grass-addons/grass7/raster/r.mcda.promethee Message-ID: <20150913204244.607C9390151@trac.osgeo.org> Author: gianluca Date: 2015-09-13 13:42:44 -0700 (Sun, 13 Sep 2015) New Revision: 66192 Modified: grass-addons/grass7/raster/r.mcda.promethee/local_proto.h grass-addons/grass7/raster/r.mcda.promethee/main.c grass-addons/grass7/raster/r.mcda.promethee/promethee.c Log: all output performed Modified: grass-addons/grass7/raster/r.mcda.promethee/local_proto.h =================================================================== --- grass-addons/grass7/raster/r.mcda.promethee/local_proto.h 2015-09-13 13:28:35 UTC (rev 66191) +++ grass-addons/grass7/raster/r.mcda.promethee/local_proto.h 2015-09-13 20:42:44 UTC (rev 66192) @@ -20,5 +20,5 @@ void build_flow_matrix(int nrows, int ncols, int ncriteria, double *weight_vect, double ***decision_vol, - double **positive_flow_vol, double **negative_flow_vol); - + double **positive_flow_vol, double **negative_flow_vol, + double **net_flow_vol); Modified: grass-addons/grass7/raster/r.mcda.promethee/main.c =================================================================== --- grass-addons/grass7/raster/r.mcda.promethee/main.c 2015-09-13 13:28:35 UTC (rev 66191) +++ grass-addons/grass7/raster/r.mcda.promethee/main.c 2015-09-13 20:42:44 UTC (rev 66192) @@ -30,15 +30,15 @@ int main(int argc, char *argv[]) { struct Cell_head cellhd; /* it stores region information, and header information of rasters */ - char *result_positive_flow, *result_negative_flow, *result_netflow; /* outputs raster name */ + char *result_positive_flow, *result_negative_flow, *result_net_flow; /* outputs raster name */ /*char *mapset; mapset name */ - unsigned char *outrast_positive_flow, *outrast_negative_flow, *outrast_netflow; /* output buffer */ + unsigned char *outrast_positive_flow, *outrast_negative_flow, *outrast_net_flow; /* output buffer */ int i,j, ncriteria=0; /* index and files number*/ int nrows, ncols; int row1, col1; - int outfd_positive_flow, outfd_negative_flow, outfd_netflow; /* output file descriptor */ + int outfd_positive_flow, outfd_negative_flow, outfd_net_flow; /* output file descriptor */ /*RASTER_MAP_TYPE data_type; type of the map (CELL/DCELL/...) */ - double *weight_vect, ***decision_vol, **positive_flow_vol, **negative_flow_vol;/* vector and matrix */ + double *weight_vect, ***decision_vol, **positive_flow_vol, **negative_flow_vol, **net_flow_vol;/* vector and matrix */ struct History history; /* holds meta-data (title, comments,..) */ @@ -145,7 +145,7 @@ result_positive_flow=positiveflow->answer; /* store output name in variables*/ result_negative_flow=negativeflow->answer; - result_netflow=netflow->answer; + result_net_flow=netflow->answer; if (G_legal_filename(result_positive_flow) < 0) /* check for legal database file names */ @@ -154,8 +154,8 @@ if (G_legal_filename(result_negative_flow) < 0) /* check for legal database file names */ G_fatal_error(_("<%s> is an illegal file name"), result_negative_flow); - if (G_legal_filename(result_netflow) < 0) /* check for legal database file names */ - G_fatal_error(_("<%s> is an illegal file name"), result_netflow); + if (G_legal_filename(result_net_flow) < 0) /* check for legal database file names */ + G_fatal_error(_("<%s> is an illegal file name"), result_net_flow); /*values = G_malloc(ncriteria * sizeof(DCELL));*/ @@ -166,6 +166,8 @@ decision_vol=G_malloc(nrows * sizeof(double*)); positive_flow_vol=G_calloc(nrows, sizeof(double*)); /*Allocates aligned block of memory and initializes the allocated memory to zero.*/ negative_flow_vol=G_calloc(nrows, sizeof(double*)); + net_flow_vol=G_calloc(nrows, sizeof(double*)); + //negative_flow_vol=G_calloc(nrows, sizeof(double*)); for (i=0; i Author: gianluca Date: 2015-09-13 13:48:17 -0700 (Sun, 13 Sep 2015) New Revision: 66193 Modified: grass-addons/grass7/raster/r.mcda.promethee/promethee.c Log: - Modified: grass-addons/grass7/raster/r.mcda.promethee/promethee.c =================================================================== --- grass-addons/grass7/raster/r.mcda.promethee/promethee.c 2015-09-13 20:42:44 UTC (rev 66192) +++ grass-addons/grass7/raster/r.mcda.promethee/promethee.c 2015-09-13 20:48:17 UTC (rev 66193) @@ -61,6 +61,7 @@ /* make pairwise comparation and build positive flow matrix */ for (i = 0; i < ncriteria; i++) { + G_percent(i, (ncriteria), 1); for (row1 = 0; row1 < nrows; row1++) { for (col1 = 0; col1 < ncols; col1++) @@ -68,7 +69,7 @@ //G_percent(i, (nrows*ncriteria), 2); for (row2 = 0; row2 < nrows; row2++) { - G_percent(row2, (nrows), 2); + //G_percent(row2, (nrows), 2); for (col2 = 0; col2 < ncols; col2++) { threshold = (decision_vol[row1][col1][i] - decision_vol[row2][col2][i]); From svn_grass at osgeo.org Sun Sep 13 13:54:52 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sun, 13 Sep 2015 13:54:52 -0700 Subject: [GRASS-SVN] r66194 - grass-addons/grass7/raster/r.mcda.promethee Message-ID: <20150913205452.938F5390151@trac.osgeo.org> Author: gianluca Date: 2015-09-13 13:54:52 -0700 (Sun, 13 Sep 2015) New Revision: 66194 Modified: grass-addons/grass7/raster/r.mcda.promethee/promethee.c Log: - Modified: grass-addons/grass7/raster/r.mcda.promethee/promethee.c =================================================================== --- grass-addons/grass7/raster/r.mcda.promethee/promethee.c 2015-09-13 20:48:17 UTC (rev 66193) +++ grass-addons/grass7/raster/r.mcda.promethee/promethee.c 2015-09-13 20:54:52 UTC (rev 66194) @@ -94,6 +94,7 @@ { for (col1 = 0; col1 < ncols; col1++) { + G_percent(col1, (ncols), 2) positive_flow_vol[row1][col1]=positive_flow_vol[row1][col1]/ncriteria; negative_flow_vol[row1][col1]=negative_flow_vol[row1][col1]/ncriteria; net_flow_vol[row1][col1]=positive_flow_vol[row1][col1]-negative_flow_vol[row1][col1]; From svn_grass at osgeo.org Sun Sep 13 13:55:24 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sun, 13 Sep 2015 13:55:24 -0700 Subject: [GRASS-SVN] r66195 - grass-addons/grass7/raster/r.mcda.promethee Message-ID: <20150913205524.C75F3390151@trac.osgeo.org> Author: gianluca Date: 2015-09-13 13:55:24 -0700 (Sun, 13 Sep 2015) New Revision: 66195 Modified: grass-addons/grass7/raster/r.mcda.promethee/promethee.c Log: - Modified: grass-addons/grass7/raster/r.mcda.promethee/promethee.c =================================================================== --- grass-addons/grass7/raster/r.mcda.promethee/promethee.c 2015-09-13 20:54:52 UTC (rev 66194) +++ grass-addons/grass7/raster/r.mcda.promethee/promethee.c 2015-09-13 20:55:24 UTC (rev 66195) @@ -94,7 +94,7 @@ { for (col1 = 0; col1 < ncols; col1++) { - G_percent(col1, (ncols), 2) + G_percent(col1, (ncols), 2); positive_flow_vol[row1][col1]=positive_flow_vol[row1][col1]/ncriteria; negative_flow_vol[row1][col1]=negative_flow_vol[row1][col1]/ncriteria; net_flow_vol[row1][col1]=positive_flow_vol[row1][col1]-negative_flow_vol[row1][col1]; From svn_grass at osgeo.org Sun Sep 13 14:00:27 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sun, 13 Sep 2015 14:00:27 -0700 Subject: [GRASS-SVN] r66196 - grass-addons/grass7/raster/r.mcda.promethee Message-ID: <20150913210027.CA4D0390151@trac.osgeo.org> Author: gianluca Date: 2015-09-13 14:00:27 -0700 (Sun, 13 Sep 2015) New Revision: 66196 Modified: grass-addons/grass7/raster/r.mcda.promethee/main.c grass-addons/grass7/raster/r.mcda.promethee/promethee.c Log: - Modified: grass-addons/grass7/raster/r.mcda.promethee/main.c =================================================================== --- grass-addons/grass7/raster/r.mcda.promethee/main.c 2015-09-13 20:55:24 UTC (rev 66195) +++ grass-addons/grass7/raster/r.mcda.promethee/main.c 2015-09-13 21:00:27 UTC (rev 66196) @@ -186,7 +186,6 @@ outrast_positive_flow = Rast_allocate_buf(DCELL_TYPE); /* Allocate memory for a raster map of type DCELL_TYPE. */ outrast_negative_flow = Rast_allocate_buf(DCELL_TYPE); outrast_net_flow = Rast_allocate_buf(DCELL_TYPE); - //outrast_net_flow = Rast_allocate_buf(DCELL_TYPE); /* controlling, if we can write the raster */ outfd_positive_flow = Rast_open_new(result_positive_flow, DCELL_TYPE); Modified: grass-addons/grass7/raster/r.mcda.promethee/promethee.c =================================================================== --- grass-addons/grass7/raster/r.mcda.promethee/promethee.c 2015-09-13 20:55:24 UTC (rev 66195) +++ grass-addons/grass7/raster/r.mcda.promethee/promethee.c 2015-09-13 21:00:27 UTC (rev 66196) @@ -89,7 +89,7 @@ } } } - + G_message("check"); for(row1 = 0; row1 < nrows; row1++) { for (col1 = 0; col1 < ncols; col1++) From svn_grass at osgeo.org Sun Sep 13 14:02:32 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sun, 13 Sep 2015 14:02:32 -0700 Subject: [GRASS-SVN] r66197 - grass-addons/grass7/raster/r.mcda.promethee Message-ID: <20150913210232.63AD7390151@trac.osgeo.org> Author: gianluca Date: 2015-09-13 14:02:32 -0700 (Sun, 13 Sep 2015) New Revision: 66197 Modified: grass-addons/grass7/raster/r.mcda.promethee/promethee.c Log: - Modified: grass-addons/grass7/raster/r.mcda.promethee/promethee.c =================================================================== --- grass-addons/grass7/raster/r.mcda.promethee/promethee.c 2015-09-13 21:00:27 UTC (rev 66196) +++ grass-addons/grass7/raster/r.mcda.promethee/promethee.c 2015-09-13 21:02:32 UTC (rev 66197) @@ -89,7 +89,7 @@ } } } - G_message("check"); + for(row1 = 0; row1 < nrows; row1++) { for (col1 = 0; col1 < ncols; col1++) @@ -98,6 +98,7 @@ positive_flow_vol[row1][col1]=positive_flow_vol[row1][col1]/ncriteria; negative_flow_vol[row1][col1]=negative_flow_vol[row1][col1]/ncriteria; net_flow_vol[row1][col1]=positive_flow_vol[row1][col1]-negative_flow_vol[row1][col1]; + G_message("%f-%f=%f",positive_flow_vol[row1][col1],negative_flow_vol[row1][col1],net_flow_vol[row1][col1]); } } } From svn_grass at osgeo.org Sun Sep 13 14:04:24 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sun, 13 Sep 2015 14:04:24 -0700 Subject: [GRASS-SVN] r66198 - grass-addons/grass7/raster/r.mcda.promethee Message-ID: <20150913210424.2B8C7390151@trac.osgeo.org> Author: gianluca Date: 2015-09-13 14:04:24 -0700 (Sun, 13 Sep 2015) New Revision: 66198 Modified: grass-addons/grass7/raster/r.mcda.promethee/promethee.c Log: - Modified: grass-addons/grass7/raster/r.mcda.promethee/promethee.c =================================================================== --- grass-addons/grass7/raster/r.mcda.promethee/promethee.c 2015-09-13 21:02:32 UTC (rev 66197) +++ grass-addons/grass7/raster/r.mcda.promethee/promethee.c 2015-09-13 21:04:24 UTC (rev 66198) @@ -97,8 +97,8 @@ G_percent(col1, (ncols), 2); positive_flow_vol[row1][col1]=positive_flow_vol[row1][col1]/ncriteria; negative_flow_vol[row1][col1]=negative_flow_vol[row1][col1]/ncriteria; - net_flow_vol[row1][col1]=positive_flow_vol[row1][col1]-negative_flow_vol[row1][col1]; - G_message("%f-%f=%f",positive_flow_vol[row1][col1],negative_flow_vol[row1][col1],net_flow_vol[row1][col1]); + net_flow_vol[row1][col1]=0; //positive_flow_vol[row1][col1]-negative_flow_vol[row1][col1]; + //G_message("%f-%f=%f",positive_flow_vol[row1][col1],negative_flow_vol[row1][col1],net_flow_vol[row1][col1]); } } } From svn_grass at osgeo.org Sun Sep 13 14:05:33 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sun, 13 Sep 2015 14:05:33 -0700 Subject: [GRASS-SVN] r66199 - grass-addons/grass7/raster/r.mcda.promethee Message-ID: <20150913210533.CF8E8390151@trac.osgeo.org> Author: gianluca Date: 2015-09-13 14:05:33 -0700 (Sun, 13 Sep 2015) New Revision: 66199 Modified: grass-addons/grass7/raster/r.mcda.promethee/promethee.c Log: - Modified: grass-addons/grass7/raster/r.mcda.promethee/promethee.c =================================================================== --- grass-addons/grass7/raster/r.mcda.promethee/promethee.c 2015-09-13 21:04:24 UTC (rev 66198) +++ grass-addons/grass7/raster/r.mcda.promethee/promethee.c 2015-09-13 21:05:33 UTC (rev 66199) @@ -94,7 +94,7 @@ { for (col1 = 0; col1 < ncols; col1++) { - G_percent(col1, (ncols), 2); + //G_percent(col1, (ncols), 2); positive_flow_vol[row1][col1]=positive_flow_vol[row1][col1]/ncriteria; negative_flow_vol[row1][col1]=negative_flow_vol[row1][col1]/ncriteria; net_flow_vol[row1][col1]=0; //positive_flow_vol[row1][col1]-negative_flow_vol[row1][col1]; From svn_grass at osgeo.org Sun Sep 13 14:06:49 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sun, 13 Sep 2015 14:06:49 -0700 Subject: [GRASS-SVN] r66200 - grass-addons/grass7/raster/r.mcda.promethee Message-ID: <20150913210649.9C1A0390151@trac.osgeo.org> Author: gianluca Date: 2015-09-13 14:06:49 -0700 (Sun, 13 Sep 2015) New Revision: 66200 Modified: grass-addons/grass7/raster/r.mcda.promethee/promethee.c Log: - Modified: grass-addons/grass7/raster/r.mcda.promethee/promethee.c =================================================================== --- grass-addons/grass7/raster/r.mcda.promethee/promethee.c 2015-09-13 21:05:33 UTC (rev 66199) +++ grass-addons/grass7/raster/r.mcda.promethee/promethee.c 2015-09-13 21:06:49 UTC (rev 66200) @@ -92,6 +92,7 @@ for(row1 = 0; row1 < nrows; row1++) { + G_message("--"); for (col1 = 0; col1 < ncols; col1++) { //G_percent(col1, (ncols), 2); From svn_grass at osgeo.org Sun Sep 13 14:11:44 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sun, 13 Sep 2015 14:11:44 -0700 Subject: [GRASS-SVN] r66201 - grass-addons/grass7/raster/r.mcda.promethee Message-ID: <20150913211144.C5C01390151@trac.osgeo.org> Author: gianluca Date: 2015-09-13 14:11:44 -0700 (Sun, 13 Sep 2015) New Revision: 66201 Modified: grass-addons/grass7/raster/r.mcda.promethee/main.c grass-addons/grass7/raster/r.mcda.promethee/promethee.c Log: - Modified: grass-addons/grass7/raster/r.mcda.promethee/main.c =================================================================== --- grass-addons/grass7/raster/r.mcda.promethee/main.c 2015-09-13 21:06:49 UTC (rev 66200) +++ grass-addons/grass7/raster/r.mcda.promethee/main.c 2015-09-13 21:11:44 UTC (rev 66201) @@ -187,6 +187,7 @@ outrast_negative_flow = Rast_allocate_buf(DCELL_TYPE); outrast_net_flow = Rast_allocate_buf(DCELL_TYPE); + /* controlling, if we can write the raster */ outfd_positive_flow = Rast_open_new(result_positive_flow, DCELL_TYPE); outfd_negative_flow = Rast_open_new(result_negative_flow, DCELL_TYPE); Modified: grass-addons/grass7/raster/r.mcda.promethee/promethee.c =================================================================== --- grass-addons/grass7/raster/r.mcda.promethee/promethee.c 2015-09-13 21:06:49 UTC (rev 66200) +++ grass-addons/grass7/raster/r.mcda.promethee/promethee.c 2015-09-13 21:11:44 UTC (rev 66201) @@ -9,8 +9,7 @@ void build_flow_matrix(int nrows, int ncols, int ncriteria, double *weight_vect, double ***decision_vol, - double **positive_flow_vol, double **negative_flow_vol, - double **net_flow_vol); + double **positive_flow_vol, double **negative_flow_vol); /* @@ -51,8 +50,7 @@ void build_flow_matrix(int nrows, int ncols, int ncriteria, double *weight_vect, double ***decision_vol, - double **positive_flow_vol, double **negative_flow_vol, - double **net_flow_vol) + double **positive_flow_vol, double **negative_flow_vol) { int row1, col1, row2, col2; int i; @@ -95,11 +93,8 @@ G_message("--"); for (col1 = 0; col1 < ncols; col1++) { - //G_percent(col1, (ncols), 2); positive_flow_vol[row1][col1]=positive_flow_vol[row1][col1]/ncriteria; negative_flow_vol[row1][col1]=negative_flow_vol[row1][col1]/ncriteria; - net_flow_vol[row1][col1]=0; //positive_flow_vol[row1][col1]-negative_flow_vol[row1][col1]; - //G_message("%f-%f=%f",positive_flow_vol[row1][col1],negative_flow_vol[row1][col1],net_flow_vol[row1][col1]); } } } From svn_grass at osgeo.org Sun Sep 13 14:12:18 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sun, 13 Sep 2015 14:12:18 -0700 Subject: [GRASS-SVN] r66202 - grass-addons/grass7/raster/r.mcda.promethee Message-ID: <20150913211218.9FF5D390151@trac.osgeo.org> Author: gianluca Date: 2015-09-13 14:12:18 -0700 (Sun, 13 Sep 2015) New Revision: 66202 Modified: grass-addons/grass7/raster/r.mcda.promethee/promethee.c Log: - Modified: grass-addons/grass7/raster/r.mcda.promethee/promethee.c =================================================================== --- grass-addons/grass7/raster/r.mcda.promethee/promethee.c 2015-09-13 21:11:44 UTC (rev 66201) +++ grass-addons/grass7/raster/r.mcda.promethee/promethee.c 2015-09-13 21:12:18 UTC (rev 66202) @@ -9,7 +9,8 @@ void build_flow_matrix(int nrows, int ncols, int ncriteria, double *weight_vect, double ***decision_vol, - double **positive_flow_vol, double **negative_flow_vol); + double **positive_flow_vol, double **negative_flow_vol, + double **net_flow_vol); /* @@ -50,7 +51,8 @@ void build_flow_matrix(int nrows, int ncols, int ncriteria, double *weight_vect, double ***decision_vol, - double **positive_flow_vol, double **negative_flow_vol) + double **positive_flow_vol, double **negative_flow_vol, + double **net_flow_vol) { int row1, col1, row2, col2; int i; @@ -93,8 +95,11 @@ G_message("--"); for (col1 = 0; col1 < ncols; col1++) { + //G_percent(col1, (ncols), 2); positive_flow_vol[row1][col1]=positive_flow_vol[row1][col1]/ncriteria; negative_flow_vol[row1][col1]=negative_flow_vol[row1][col1]/ncriteria; + net_flow_vol[row1][col1]=0; //positive_flow_vol[row1][col1]-negative_flow_vol[row1][col1]; + //G_message("%f-%f=%f",positive_flow_vol[row1][col1],negative_flow_vol[row1][col1],net_flow_vol[row1][col1]); } } } From svn_grass at osgeo.org Sun Sep 13 15:14:57 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sun, 13 Sep 2015 15:14:57 -0700 Subject: [GRASS-SVN] r66203 - grass-addons/grass7/raster/r.cpt2grass Message-ID: <20150913221457.14D07390136@trac.osgeo.org> Author: annakrat Date: 2015-09-13 15:14:56 -0700 (Sun, 13 Sep 2015) New Revision: 66203 Modified: grass-addons/grass7/raster/r.cpt2grass/r.cpt2grass.html Log: r.cpt2grass: add original author in manual Modified: grass-addons/grass7/raster/r.cpt2grass/r.cpt2grass.html =================================================================== --- grass-addons/grass7/raster/r.cpt2grass/r.cpt2grass.html 2015-09-13 21:12:18 UTC (rev 66202) +++ grass-addons/grass7/raster/r.cpt2grass/r.cpt2grass.html 2015-09-13 22:14:56 UTC (rev 66203) @@ -86,7 +86,8 @@

      AUTHORS

      -Anna Petrasova,
      NCSU OSGeoREL +Anna Petrasova, NCSU OSGeoREL
      +Hamish Bowman (original Bash script)

      Last changed: $Date$ From svn_grass at osgeo.org Sun Sep 13 19:49:57 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sun, 13 Sep 2015 19:49:57 -0700 Subject: [GRASS-SVN] r66204 - in grass/trunk/gui/wxpython: core tplot Message-ID: <20150914024958.0143F390151@trac.osgeo.org> Author: annakrat Date: 2015-09-13 19:49:57 -0700 (Sun, 13 Sep 2015) New Revision: 66204 Modified: grass/trunk/gui/wxpython/core/toolboxes.py grass/trunk/gui/wxpython/tplot/g.gui.tplot.py Log: workaround some compilation problems on Mac (see #2142, #1819) Modified: grass/trunk/gui/wxpython/core/toolboxes.py =================================================================== --- grass/trunk/gui/wxpython/core/toolboxes.py 2015-09-13 22:14:56 UTC (rev 66203) +++ grass/trunk/gui/wxpython/core/toolboxes.py 2015-09-14 02:49:57 UTC (rev 66204) @@ -62,14 +62,20 @@ # (these files are always check for existence here) return "" -userToolboxesFile = os.path.join(GetSettingsPath(), 'toolboxes', 'toolboxes.xml') -userMainMenuFile = os.path.join(GetSettingsPath(), 'toolboxes', 'main_menu.xml') -if not os.path.exists(userToolboxesFile): - userToolboxesFile = None -if not os.path.exists(userMainMenuFile): - userMainMenuFile = None +def _getUserToolboxesFile(): + userToolboxesFile = os.path.join(GetSettingsPath(), 'toolboxes', 'toolboxes.xml') + if not os.path.exists(userToolboxesFile): + userToolboxesFile = None + return userToolboxesFile +def _getUserMainMenuFile(): + userMainMenuFile = os.path.join(GetSettingsPath(), 'toolboxes', 'main_menu.xml') + if not os.path.exists(userMainMenuFile): + userMainMenuFile = None + return userMainMenuFile + + def _(string): """Get translated version of a string""" # is attribute initialized to actual value? @@ -156,27 +162,27 @@ if os.path.exists(menudataFile): # remove menu file when there is no main_menu and toolboxes - if not userToolboxesFile and not userRootFile: + if not _getUserToolboxesFile() and not userRootFile: os.remove(menudataFile) _debug(2, "toolboxes.getMenudataFile: no user defined files, menudata deleted") return fallback - if bool(userToolboxesFile) != bool(userRootFile): + if bool(_getUserToolboxesFile()) != bool(userRootFile): # always generate new because we don't know if there has been any change generateNew = True _debug(2, "toolboxes.getMenudataFile: only one of the user defined files") else: # if newer files -> generate new menudataTime = os.path.getmtime(menudataFile) - if userToolboxesFile: - if os.path.getmtime(userToolboxesFile) > menudataTime: + if _getUserToolboxesFile(): + if os.path.getmtime(_getUserToolboxesFile()) > menudataTime: _debug(2, "toolboxes.getMenudataFile: user toolboxes is newer than menudata") generateNew = True if userRootFile: if os.path.getmtime(userRootFile) > menudataTime: _debug(2, "toolboxes.getMenudataFile: user root file is newer than menudata") generateNew = True - elif userToolboxesFile or userRootFile: + elif _getUserToolboxesFile() or userRootFile: _debug(2, "toolboxes.getMenudataFile: no menudata") generateNew = True else: @@ -256,8 +262,8 @@ toolboxes = etree.parse(toolboxesFile) - if userDefined and userToolboxesFile: - userToolboxes = etree.parse(userToolboxesFile) + if userDefined and _getUserToolboxesFile(): + userToolboxes = etree.parse(_getUserToolboxesFile()) else: userToolboxes = None @@ -604,9 +610,11 @@ hasErrors = True if hasErrors: - sys.stderr.write(_("WARNING: Some addons failed when loading. " - "Please consider to update your addons by running 'g.extension.all -f'.\n")) - + # not translatable until toolboxes compilation on Mac is fixed + # translating causes importing globalvar, where sys.exit is called + sys.stderr.write("WARNING: Some addons failed when loading. " + "Please consider to update your addons by running 'g.extension.all -f'.\n") + def _escapeXML(text): """Helper function for correct escaping characters for XML. Modified: grass/trunk/gui/wxpython/tplot/g.gui.tplot.py =================================================================== --- grass/trunk/gui/wxpython/tplot/g.gui.tplot.py 2015-09-13 22:14:56 UTC (rev 66203) +++ grass/trunk/gui/wxpython/tplot/g.gui.tplot.py 2015-09-14 02:49:57 UTC (rev 66204) @@ -72,7 +72,6 @@ #%end import grass.script as gscript -from core.giface import StandaloneGrassInterface def main(): @@ -80,6 +79,7 @@ import wx from core.utils import _ + from core.giface import StandaloneGrassInterface try: from tplot.frame import TplotFrame except ImportError as e: From svn_grass at osgeo.org Mon Sep 14 03:22:07 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Mon, 14 Sep 2015 03:22:07 -0700 Subject: [GRASS-SVN] r66205 - in grass/trunk/lib/python/temporal: . testsuite Message-ID: <20150914102207.5F1AE390136@trac.osgeo.org> Author: huhabla Date: 2015-09-14 03:22:07 -0700 (Mon, 14 Sep 2015) New Revision: 66205 Added: grass/trunk/lib/python/temporal/testsuite/unittests_temporal_algebra_mixed_stds.py Modified: grass/trunk/lib/python/temporal/c_libraries_interface.py grass/trunk/lib/python/temporal/core.py grass/trunk/lib/python/temporal/list_stds.py Log: temporal library: Added more debug messages, added new map algebra tests, list_stds supports now user created database interfaces Modified: grass/trunk/lib/python/temporal/c_libraries_interface.py =================================================================== --- grass/trunk/lib/python/temporal/c_libraries_interface.py 2015-09-14 02:49:57 UTC (rev 66204) +++ grass/trunk/lib/python/temporal/c_libraries_interface.py 2015-09-14 10:22:07 UTC (rev 66205) @@ -287,18 +287,27 @@ count = 0 mapset_list = [] try: - # Initilaize the accessable mapset list, this is bad C design!!! + # Initialize the accessable mapset list, this is bad C design!!! libgis.G_get_mapset_name(0) mapsets = libgis.G_get_available_mapsets() while mapsets[count]: char_list = "" mapset = mapsets[count] - if libgis.G_mapset_permissions(mapset) == 1 and libgis.G_is_mapset_in_search_path(mapset) == 1: - c = 0 - while mapset[c] != "\x00": - char_list += mapset[c] - c += 1 + + permission = libgis.G_mapset_permissions(mapset) + in_search_path = libgis.G_is_mapset_in_search_path(mapset) + + c = 0 + while mapset[c] != "\x00": + char_list += mapset[c] + c += 1 + + if permission == 1 and permission == 1: mapset_list.append(char_list) + + libgis.G_debug(1, "c_library_server._available_mapsets: \n mapset: %s\n"\ + " has permission %i\n in search path: %i"%(char_list, + permission, in_search_path)) count += 1 # We need to sort the mapset list, but the first one should be Modified: grass/trunk/lib/python/temporal/core.py =================================================================== --- grass/trunk/lib/python/temporal/core.py 2015-09-14 02:49:57 UTC (rev 66204) +++ grass/trunk/lib/python/temporal/core.py 2015-09-14 10:22:07 UTC (rev 66205) @@ -28,6 +28,7 @@ :author: Soeren Gebbert """ +#import traceback import os # i18N import gettext @@ -446,6 +447,10 @@ for mapset in mapsets: driver = c_library_interface.get_driver_name(mapset) database = c_library_interface.get_database_name(mapset) + + message_interface.debug(1, "get_available_temporal_mapsets: "\ + "\n mapset %s\n driver %s\n database %s"%(mapset, + driver, database)) if driver and database: # Check if the temporal sqlite database exists @@ -548,6 +553,7 @@ _init_tgis_c_library_interface() msgr = get_tgis_message_interface() msgr.debug(1, "Initiate the temporal database") + #"\n traceback:%s"%(str(" \n".join(traceback.format_stack())))) ciface = get_tgis_c_library_interface() driver_string = ciface.get_driver_name() @@ -1048,9 +1054,15 @@ if dbstring is None: global tgis_database_string self.dbstring = tgis_database_string + + self.dbstring = dbstring self.msgr = get_tgis_message_interface() - self.msgr.debug(1, "SQLDatabaseInterfaceConnection constructor") + self.msgr.debug(1, "DBConnection constructor:"\ + "\n backend: %s"\ + "\n dbstring: %s"%(backend, self.dbstring)) + #"\n traceback:%s"%(backend, self.dbstring, + #str(" \n".join(traceback.format_stack())))) def __del__(self): if self.connected is True: Modified: grass/trunk/lib/python/temporal/list_stds.py =================================================================== --- grass/trunk/lib/python/temporal/list_stds.py 2015-09-14 02:49:57 UTC (rev 66204) +++ grass/trunk/lib/python/temporal/list_stds.py 2015-09-14 10:22:07 UTC (rev 66205) @@ -26,7 +26,7 @@ def get_dataset_list(type, temporal_type, columns=None, where=None, - order=None): + order=None, dbif=None): """ Return a list of time stamped maps or space time datasets of a specific temporal type that are registred in the temporal database @@ -41,6 +41,7 @@ :param where: A where statement for selected listing without "WHERE" :param order: A comma separated list of columns to order the datasets by category + :param dbif: The database interface to be used :return: A dictionary with the rows of the SQL query for each available mapset @@ -71,8 +72,7 @@ id = None sp = dataset_factory(type, id) - dbif = SQLDatabaseInterfaceConnection() - dbif.connect() + dbif, connected = init_dbif(dbif) mapsets = get_available_temporal_mapsets() @@ -105,13 +105,16 @@ if rows: result[mapset] = rows + if connected: + dbif.close() + return result ############################################################################### def list_maps_of_stds(type, input, columns, order, where, separator, - method, no_header=False, gran=None): + method, no_header=False, gran=None, dbif=None): """ List the maps of a space time dataset using diffetent methods :param type: The type of the maps raster, raster3d or vector @@ -124,6 +127,7 @@ :param separator: The field separator character between the columns :param method: String identifier to select a method out of cols, comma,delta or deltagaps + :param dbif: The database interface to be used - "cols" Print preselected columns specified by columns - "comma" Print the map ids ("name at mapset") as comma separated string @@ -141,7 +145,7 @@ dataset is used """ - dbif, connected = init_dbif(None) + dbif, connected = init_dbif(dbif) msgr = get_tgis_message_interface() sp = open_old_stds(input, type, dbif) Added: grass/trunk/lib/python/temporal/testsuite/unittests_temporal_algebra_mixed_stds.py =================================================================== --- grass/trunk/lib/python/temporal/testsuite/unittests_temporal_algebra_mixed_stds.py (rev 0) +++ grass/trunk/lib/python/temporal/testsuite/unittests_temporal_algebra_mixed_stds.py 2015-09-14 10:22:07 UTC (rev 66205) @@ -0,0 +1,206 @@ +""" +(C) 2013 by the GRASS Development Team +This program is free software under the GNU General Public +License (>=v2). Read the file COPYING that comes with GRASS +for details. + +:authors: Soeren Gebbert and Thomas Leppelt +""" + +import grass.script +import grass.temporal as tgis +from grass.gunittest.case import TestCase +from grass.gunittest.main import test +import datetime +import os + +class TestTemporalAlgebraMixedDatasets(TestCase): + + @classmethod + def setUpClass(cls): + """Initiate the temporal GIS and set the region + """ + tgis.init(True) # Raise on error instead of exit(1) + cls.use_temp_region() + cls.runModule("g.region", n=80.0, s=0.0, e=120.0, + w=0.0, t=1.0, b=0.0, res=10.0) + + cls.runModule("r3.mapcalc", overwrite=True, quiet=True, expression="a1 = 1") + cls.runModule("r3.mapcalc", overwrite=True, quiet=True, expression="a2 = 2") + cls.runModule("r3.mapcalc", overwrite=True, quiet=True, expression="a3 = 3") + cls.runModule("r3.mapcalc", overwrite=True, quiet=True, expression="a4 = 4") + + tgis.open_new_stds(name="A", type="str3ds", temporaltype="absolute", + title="A", descr="A", semantic="field", overwrite=True) + + tgis.register_maps_in_space_time_dataset(type="raster3d", name="A", maps="a1,a2,a3,a4", + start="2001-01-01", increment="1 day", interval=True) + + + cls.runModule("r.mapcalc", overwrite=True, quiet=True, expression="b1 = 5") + cls.runModule("r.mapcalc", overwrite=True, quiet=True, expression="b2 = 6") + + tgis.open_new_stds(name="B", type="strds", temporaltype="absolute", + title="B", descr="B", semantic="field", overwrite=True) + + tgis.register_maps_in_space_time_dataset(type="raster", name="B", maps="b1,b2", + start="2001-01-01", increment="2 day", interval=True) + + + cls.runModule("v.random", overwrite=True, quiet=True, npoints=20, seed=3, output='c1') + + tgis.open_new_stds(name="C", type="stvds", temporaltype="absolute", + title="B", descr="C", semantic="field", overwrite=True) + + tgis.register_maps_in_space_time_dataset(type="vector", name="C", maps="c1", + start="2001-01-02", increment="2 day", interval=True) + + @classmethod + def tearDownClass(cls): + """Remove the temporary region + """ + cls.runModule("t.remove", flags="rf", type="str3ds", inputs="A", quiet=True) + cls.runModule("t.remove", flags="rf", type="strds", inputs="B", quiet=True) + cls.runModule("t.remove", flags="rf", type="stvds", inputs="C", quiet=True) + cls.del_temp_region() + + def test_temporal_select_operators1(self): + """Testing the temporal select operator. Including temporal relations. """ + ta = tgis.TemporalAlgebraParser(run = True, debug = True) + ta.parse(expression="R = A {:,during} stvds(C)", stdstype = 'str3ds', basename="r", overwrite=True) + + D = tgis.open_old_stds("R", type="str3ds") + D.select() + self.assertEqual(D.metadata.get_number_of_maps(), 2) + self.assertEqual(D.metadata.get_min_min(), 2) + self.assertEqual(D.metadata.get_max_max(), 3) + start, end = D.get_absolute_time() + self.assertEqual(start, datetime.datetime(2001, 1, 2)) + self.assertEqual(end, datetime.datetime(2001, 1, 4)) + self.assertEqual( D.check_temporal_topology(), True) + self.assertEqual(D.get_granularity(), u'1 day') + + def test_temporal_select_operators2(self): + """Testing the temporal select operator. Including temporal relations. """ + ta = tgis.TemporalAlgebraParser(run = True, debug = True) + ta.parse(expression="R = A {:,equal|during} stvds(C)", stdstype = 'str3ds', basename="r", overwrite=True) + + D = tgis.open_old_stds("R", type="str3ds") + D.select() + self.assertEqual(D.metadata.get_number_of_maps(), 2) + self.assertEqual(D.metadata.get_min_min(), 2) + self.assertEqual(D.metadata.get_max_max(), 3) + start, end = D.get_absolute_time() + self.assertEqual(start, datetime.datetime(2001, 1, 2)) + self.assertEqual(end, datetime.datetime(2001, 1, 4)) + self.assertEqual( D.check_temporal_topology(), True) + self.assertEqual(D.get_granularity(), u'1 day') + + def test_temporal_select_operators3(self): + """Testing the temporal select operator. Including temporal relations + and negation operation. """ + ta = tgis.TemporalAlgebraParser(run = True, debug = True) + ta.parse(expression="R = A {!:,during} stvds(C)", stdstype = 'str3ds', basename="r", overwrite=True) + + D = tgis.open_old_stds("R", type="str3ds") + D.select() + self.assertEqual(D.metadata.get_number_of_maps(), 2) + self.assertEqual(D.metadata.get_min_min(), 1) + self.assertEqual(D.metadata.get_max_max(), 4) + start, end = D.get_absolute_time() + self.assertEqual(start, datetime.datetime(2001, 1, 1)) + self.assertEqual(end, datetime.datetime(2001, 1, 5)) + self.assertEqual( D.check_temporal_topology(), True) + self.assertEqual(D.get_granularity(), u'1 day') + + def test_temporal_select_operators4(self): + """Testing the temporal select operator. Including temporal relations and + temporal operators. """ + ta = tgis.TemporalAlgebraParser(run = True, debug = True) + ta.parse(expression="V = C {:,contains} str3ds(A)", + stdstype = 'stvds', basename="r", overwrite=True) + + D = tgis.open_old_stds("V", type="stvds") + D.select() + maplist = D.get_registered_maps_as_objects() + self.assertEqual(D.metadata.get_number_of_maps(), 1) + start, end = D.get_absolute_time() + self.assertEqual(start, datetime.datetime(2001, 1, 2)) + self.assertEqual(end, datetime.datetime(2001, 1, 4)) + self.assertEqual( D.check_temporal_topology(), True) + self.assertEqual(D.get_granularity(), u'2 days') + + def test_temporal_select_operators5(self): + """Testing the temporal select operator. Including temporal relations and + temporal operators. """ + ta = tgis.TemporalAlgebraParser(run = True, debug = True) + ta.parse(expression="R = A {:,during} strds(B)", + stdstype = 'str3ds', basename="r", overwrite=True) + + D = tgis.open_old_stds("R", type="str3ds") + D.select() + maplist = D.get_registered_maps_as_objects() + self.assertEqual(D.metadata.get_number_of_maps(), 4) + start, end = D.get_absolute_time() + self.assertEqual(start, datetime.datetime(2001, 1, 1)) + self.assertEqual(end, datetime.datetime(2001, 1, 5)) + self.assertEqual( D.check_temporal_topology(), True) + self.assertEqual(D.get_granularity(), u'1 day') + + def test_temporal_hash_operator1(self): + """Testing the hash operator function in conditional statement. """ + ta = tgis.TemporalAlgebraParser(run = True, debug = True) + ta.parse(expression="R = if(A {#,during} stvds(C) == 1, A)", + stdstype = 'str3ds', + basename="r", overwrite=True) + + D = tgis.open_old_stds("R", type="str3ds") + D.select() + maplist = D.get_registered_maps_as_objects() + self.assertEqual(D.metadata.get_number_of_maps(), 2) + self.assertEqual(D.metadata.get_min_min(), 2) + self.assertEqual(D.metadata.get_max_max(), 3) + start, end = D.get_absolute_time() + self.assertEqual(start, datetime.datetime(2001, 1, 2)) + self.assertEqual(end, datetime.datetime(2001, 1, 4)) + self.assertEqual( D.check_temporal_topology(), True) + self.assertEqual(D.get_granularity(), u'1 day') + + def test_temporal_hash_operator2(self): + """Testing the hash operator function in conditional statement. """ + ta = tgis.TemporalAlgebraParser(run = True, debug = True) + ta.parse(expression="R = if({during}, stvds(C) {#,contains} A == 2, A)", + stdstype = 'str3ds', basename="r", overwrite=True) + + D = tgis.open_old_stds("R", type="str3ds") + D.select() + maplist = D.get_registered_maps_as_objects() + self.assertEqual(D.metadata.get_number_of_maps(), 2) + self.assertEqual(D.metadata.get_min_min(), 2) + self.assertEqual(D.metadata.get_max_max(), 3) + start, end = D.get_absolute_time() + self.assertEqual(start, datetime.datetime(2001, 1, 2)) + self.assertEqual(end, datetime.datetime(2001, 1, 4)) + self.assertEqual( D.check_temporal_topology(), True) + self.assertEqual(D.get_granularity(), u'1 day') + + def test_different_stds_handling(self): + """Testing the handling of different stds types as output. """ + ta = tgis.TemporalAlgebraParser(run = True, debug = True) + ta.parse(expression="R = if({during}, stvds(C) {#,contains} str3ds(A) == 2, str3ds(A))", + stdstype = 'strds', basename="r", overwrite=True) + + D = tgis.open_old_stds("R", type="str3ds") + D.select() + maplist = D.get_registered_maps_as_objects() + self.assertEqual(D.metadata.get_number_of_maps(), 2) + self.assertEqual(D.metadata.get_min_min(), 2) + self.assertEqual(D.metadata.get_max_max(), 3) + start, end = D.get_absolute_time() + self.assertEqual(start, datetime.datetime(2001, 1, 2)) + self.assertEqual(end, datetime.datetime(2001, 1, 4)) + self.assertEqual( D.check_temporal_topology(), True) + self.assertEqual(D.get_granularity(), u'1 day') + +if __name__ == '__main__': + test() From svn_grass at osgeo.org Mon Sep 14 04:32:14 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Mon, 14 Sep 2015 04:32:14 -0700 Subject: [GRASS-SVN] r66206 - grass/trunk/lib/python/temporal Message-ID: <20150914113214.259FE390151@trac.osgeo.org> Author: huhabla Date: 2015-09-14 04:32:14 -0700 (Mon, 14 Sep 2015) New Revision: 66206 Modified: grass/trunk/lib/python/temporal/c_libraries_interface.py Log: temporal library: Fixed wrong check in _available_mapsets() function Modified: grass/trunk/lib/python/temporal/c_libraries_interface.py =================================================================== --- grass/trunk/lib/python/temporal/c_libraries_interface.py 2015-09-14 10:22:07 UTC (rev 66205) +++ grass/trunk/lib/python/temporal/c_libraries_interface.py 2015-09-14 11:32:14 UTC (rev 66206) @@ -302,7 +302,7 @@ char_list += mapset[c] c += 1 - if permission == 1 and permission == 1: + if permission >= 0 and in_search_path == 1: mapset_list.append(char_list) libgis.G_debug(1, "c_library_server._available_mapsets: \n mapset: %s\n"\ From svn_grass at osgeo.org Mon Sep 14 04:33:10 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Mon, 14 Sep 2015 04:33:10 -0700 Subject: [GRASS-SVN] r66207 - grass-addons/grass7/raster/r.subdayprecip.design Message-ID: <20150914113310.0EC74390151@trac.osgeo.org> Author: martinl Date: 2015-09-14 04:33:09 -0700 (Mon, 14 Sep 2015) New Revision: 66207 Modified: grass-addons/grass7/raster/r.subdayprecip.design/r.subdayprecip.design.html grass-addons/grass7/raster/r.subdayprecip.design/r.subdayprecip.design.py grass-addons/grass7/raster/r.subdayprecip.design/r_subdayprecip_design_basin.png grass-addons/grass7/raster/r.subdayprecip.design/r_subdayprecip_design_h_rast.png Log: r.subdayprecip.design: manual improvements (thanks to Ludek Strouhal) Modified: grass-addons/grass7/raster/r.subdayprecip.design/r.subdayprecip.design.html =================================================================== --- grass-addons/grass7/raster/r.subdayprecip.design/r.subdayprecip.design.html 2015-09-14 11:32:14 UTC (rev 66206) +++ grass-addons/grass7/raster/r.subdayprecip.design/r.subdayprecip.design.html 2015-09-14 11:33:09 UTC (rev 66207) @@ -1,26 +1,29 @@

      DESCRIPTION

      -r.subdayprecip.design computes reduction of subday design -precipitation series. +r.subdayprecip.design computes subday design precipitation +totals based on Hradek's method of reduction of daily maximums to +chosen duration.

      The tool uses methods of zonal statistics to compute average values of -design 24 hours precipitation for a selected area or for a spot. This -value is reduced to the chosen length design rain for selected period -of repetition. +24 hours precipitation amounts of specified return period for a +provided area or a spot. Rasters of daily maxima were derived from +statistics published by Samaj et al. in 1985, which were based on +precipitation series observed in 1901-1980. Calculated average value +is then reduced to the chosen length of design rain event.

      NOTES

      Subday design precipitation series are important for hydrological modelling and soil erosion problems in a small catchment scale when designing common measures for promoting water retention, landscape -drainage systems, etc. +drainage systems, flood mitigation measures etc.

      First automatization has been implemented by well-known method which is based on reduction of 24 hours design precipitation to shorter time. GIS is used for spatial supervised classification of -point values of specified repetition periods (2, 10, 20, 50 a 100 +point values of specified return periods (2, 10, 20, 50 and 100 years) over the area of the Czech Republic.

      @@ -31,14 +34,14 @@ Figure: Basins (in orange) with orthophoto
      on background
      -Figure: Repetition periods (2, 10, 20, 50 years)
      in the area of the Czech Republic
      +Figure: Return periods (2, 10, 20, 50 years)
      in the area of the Czech Republic

      -Figure: Basins colored by H_002_60 value +Figure: III.order basins colored by mean H_002_60 value

      Modified: grass-addons/grass7/raster/r.subdayprecip.design/r.subdayprecip.design.py =================================================================== --- grass-addons/grass7/raster/r.subdayprecip.design/r.subdayprecip.design.py 2015-09-14 11:32:14 UTC (rev 66206) +++ grass-addons/grass7/raster/r.subdayprecip.design/r.subdayprecip.design.py 2015-09-14 11:33:09 UTC (rev 66207) @@ -6,7 +6,7 @@ # # AUTHOR(S): Martin Landa # -# PURPOSE: Computes subday design precipitation series. +# PURPOSE: Computes subday design precipitation totals. # # COPYRIGHT: (C) 2015 Martin Landa and GRASS development team # @@ -17,7 +17,7 @@ ############################################################################# #%module -#% description: Computes subday design precipitation series. +#% description: Computes subday design precipitation totals. #% keyword: raster #% keyword: hydrology #% keyword: precipitation @@ -29,7 +29,7 @@ #%option G_OPT_R_INPUTS #% key: raster -#% description: Name of repetition periods raster map(s) +#% description: Name of return periods raster map(s) #% options: H_002,H_005,H_010,H_020,H_050,H_100 #%end @@ -54,7 +54,7 @@ columns = grass.vector_columns(opt['map']).keys() except CalledModuleError as e: return 1 - + allowed_rasters = ('H_002', 'H_005', 'H_010', 'H_020', 'H_050', 'H_100') # extract multi values to points @@ -70,18 +70,21 @@ 'Allowed: {}'.format(rast, allowed_rasters)) continue + # perform zonal statistics grass.message('Processing <{}>...'.format(rast)) table = '{}_table'.format(name) # TODO: handle null values Module('v.rast.stats', flags='c', map=opt['map'], raster=rast, column_prefix=name, method='average', quiet=True) + # add column to the attribute table if not exists rl = float(opt['rainlength']) field_name='{}_{}'.format(name, opt['rainlength']) if field_name not in columns: Module('v.db.addcolumn', map=opt['map'], columns='{} double precision'.format(field_name)) - + + # determine coefficient for calculation a = c = None if name == 'H_002': if rl < 40: @@ -143,16 +146,17 @@ elif rl < 1440: a = 0.642 c = 0.939 - + if a is None or c is None: grass.fatal("Unable to calculate coefficients") + # calculate output values, update attribute table coef = a * rl ** (1 - c) expression = '{}_average * {}'.format(name, coef) Module('v.db.update', map=opt['map'], column=field_name, query_column=expression) - # remove not used column + # remove unused column Module('v.db.dropcolumn', map=opt['map'], columns='{}_average'.format(name)) Modified: grass-addons/grass7/raster/r.subdayprecip.design/r_subdayprecip_design_basin.png =================================================================== (Binary files differ) Modified: grass-addons/grass7/raster/r.subdayprecip.design/r_subdayprecip_design_h_rast.png =================================================================== (Binary files differ) From svn_grass at osgeo.org Mon Sep 14 04:33:44 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Mon, 14 Sep 2015 04:33:44 -0700 Subject: [GRASS-SVN] r66208 - grass-addons/grass7/raster/r.subdayprecip.design Message-ID: <20150914113344.7F91C390151@trac.osgeo.org> Author: martinl Date: 2015-09-14 04:33:44 -0700 (Mon, 14 Sep 2015) New Revision: 66208 Modified: grass-addons/grass7/raster/r.subdayprecip.design/r_subdayprecip_design_basin.png grass-addons/grass7/raster/r.subdayprecip.design/r_subdayprecip_design_h_rast.png Log: r.subdayprecip.design: optimize updated images Modified: grass-addons/grass7/raster/r.subdayprecip.design/r_subdayprecip_design_basin.png =================================================================== (Binary files differ) Modified: grass-addons/grass7/raster/r.subdayprecip.design/r_subdayprecip_design_h_rast.png =================================================================== (Binary files differ) From svn_grass at osgeo.org Mon Sep 14 05:22:43 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Mon, 14 Sep 2015 05:22:43 -0700 Subject: [GRASS-SVN] r66209 - grass/trunk/imagery/i.ortho.photo Message-ID: <20150914122243.66FB0390136@trac.osgeo.org> Author: neteler Date: 2015-09-14 05:22:43 -0700 (Mon, 14 Sep 2015) New Revision: 66209 Modified: grass/trunk/imagery/i.ortho.photo/README Log: i.ortho.photo: minor notes added Modified: grass/trunk/imagery/i.ortho.photo/README =================================================================== --- grass/trunk/imagery/i.ortho.photo/README 2015-09-14 11:33:44 UTC (rev 66208) +++ grass/trunk/imagery/i.ortho.photo/README 2015-09-14 12:22:43 UTC (rev 66209) @@ -35,14 +35,23 @@ internal: libes/ -> lib/ - menu/ -> TODO (wxGUI) + menu/ -> TODO (wxGUI, use g.gui.gcp classes) photo.elev/ -> i.ortho.elev/ - photo.2target/ -> ? i.ortho.transform/ + photo.2target/ -> ? i.ortho.transform/ photo.camera/ -> i.ortho.camera/ - photo.2image/ -> ? + photo.2image/ -> ? (wxGUI, use g.gui.gcp classes: fiducial marks) photo.init/ -> i.ortho.init/ photo.rectify/ -> ? i.ortho.rectify/ + +Workflow description: + +Open Source GIS: A GRASS GIS Approach, Second Edition, 2004 +by Markus Neteler and Helena Mitasova, +Chapter 10 ? PROCESSING OF AERIAL PHOTOS +http://grassbook.org/extra/sample-chapter/ +--> PDF + ###################################################################### GRASS GIS 4 to 6 From svn_grass at osgeo.org Mon Sep 14 06:01:36 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Mon, 14 Sep 2015 06:01:36 -0700 Subject: [GRASS-SVN] r66210 - grass-addons/grass7/raster/r.mcda.promethee Message-ID: <20150914130136.95E55390136@trac.osgeo.org> Author: gianluca Date: 2015-09-14 06:01:36 -0700 (Mon, 14 Sep 2015) New Revision: 66210 Modified: grass-addons/grass7/raster/r.mcda.promethee/main.c grass-addons/grass7/raster/r.mcda.promethee/promethee.c Log: - Modified: grass-addons/grass7/raster/r.mcda.promethee/main.c =================================================================== --- grass-addons/grass7/raster/r.mcda.promethee/main.c 2015-09-14 12:22:43 UTC (rev 66209) +++ grass-addons/grass7/raster/r.mcda.promethee/main.c 2015-09-14 13:01:36 UTC (rev 66210) @@ -222,11 +222,11 @@ { ((DCELL *) outrast_positive_flow)[col1] = (DCELL)positive_flow_vol[row1][col1];/*write positive flow map*/ ((DCELL *) outrast_negative_flow)[col1] = (DCELL)negative_flow_vol[row1][col1];/*write negative flow map*/ - ((DCELL *) outrast_net_flow)[col1] = (DCELL)net_flow_vol[row1][col1];/*write negative flow map*/; + //((DCELL *) outrast_net_flow)[col1] = (DCELL)net_flow_vol[row1][col1];/*write negative flow map*/; } Rast_put_row(outfd_positive_flow, outrast_positive_flow, DCELL_TYPE); Rast_put_row(outfd_negative_flow, outrast_negative_flow, DCELL_TYPE); - Rast_put_row(outfd_net_flow, outrast_net_flow, DCELL_TYPE); + //Rast_put_row(outfd_net_flow, outrast_net_flow, DCELL_TYPE); } Modified: grass-addons/grass7/raster/r.mcda.promethee/promethee.c =================================================================== --- grass-addons/grass7/raster/r.mcda.promethee/promethee.c 2015-09-14 12:22:43 UTC (rev 66209) +++ grass-addons/grass7/raster/r.mcda.promethee/promethee.c 2015-09-14 13:01:36 UTC (rev 66210) @@ -98,7 +98,7 @@ //G_percent(col1, (ncols), 2); positive_flow_vol[row1][col1]=positive_flow_vol[row1][col1]/ncriteria; negative_flow_vol[row1][col1]=negative_flow_vol[row1][col1]/ncriteria; - net_flow_vol[row1][col1]=0; //positive_flow_vol[row1][col1]-negative_flow_vol[row1][col1]; + //net_flow_vol[row1][col1]=0; //positive_flow_vol[row1][col1]-negative_flow_vol[row1][col1]; //G_message("%f-%f=%f",positive_flow_vol[row1][col1],negative_flow_vol[row1][col1],net_flow_vol[row1][col1]); } } From svn_grass at osgeo.org Mon Sep 14 06:15:22 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Mon, 14 Sep 2015 06:15:22 -0700 Subject: [GRASS-SVN] r66211 - grass-addons/grass7/raster/r.mcda.promethee Message-ID: <20150914131522.10F00390136@trac.osgeo.org> Author: gianluca Date: 2015-09-14 06:15:21 -0700 (Mon, 14 Sep 2015) New Revision: 66211 Modified: grass-addons/grass7/raster/r.mcda.promethee/local_proto.h grass-addons/grass7/raster/r.mcda.promethee/main.c grass-addons/grass7/raster/r.mcda.promethee/promethee.c Log: negative and positive flow output Modified: grass-addons/grass7/raster/r.mcda.promethee/local_proto.h =================================================================== --- grass-addons/grass7/raster/r.mcda.promethee/local_proto.h 2015-09-14 13:01:36 UTC (rev 66210) +++ grass-addons/grass7/raster/r.mcda.promethee/local_proto.h 2015-09-14 13:15:21 UTC (rev 66211) @@ -20,5 +20,4 @@ void build_flow_matrix(int nrows, int ncols, int ncriteria, double *weight_vect, double ***decision_vol, - double **positive_flow_vol, double **negative_flow_vol, - double **net_flow_vol); + double **positive_flow_vol, double **negative_flow_vol); Modified: grass-addons/grass7/raster/r.mcda.promethee/main.c =================================================================== --- grass-addons/grass7/raster/r.mcda.promethee/main.c 2015-09-14 13:01:36 UTC (rev 66210) +++ grass-addons/grass7/raster/r.mcda.promethee/main.c 2015-09-14 13:15:21 UTC (rev 66211) @@ -30,22 +30,22 @@ int main(int argc, char *argv[]) { struct Cell_head cellhd; /* it stores region information, and header information of rasters */ - char *result_positive_flow, *result_negative_flow, *result_net_flow; /* outputs raster name */ + char *result_positive_flow, *result_negative_flow; /* outputs raster name */ /*char *mapset; mapset name */ - unsigned char *outrast_positive_flow, *outrast_negative_flow, *outrast_net_flow; /* output buffer */ + unsigned char *outrast_positive_flow, *outrast_negative_flow; /* output buffer */ int i,j, ncriteria=0; /* index and files number*/ int nrows, ncols; int row1, col1; - int outfd_positive_flow, outfd_negative_flow, outfd_net_flow; /* output file descriptor */ + int outfd_positive_flow, outfd_negative_flow; /* output file descriptor */ /*RASTER_MAP_TYPE data_type; type of the map (CELL/DCELL/...) */ - double *weight_vect, ***decision_vol, **positive_flow_vol, **negative_flow_vol, **net_flow_vol;/* vector and matrix */ + double *weight_vect, ***decision_vol, **positive_flow_vol, **negative_flow_vol;/* vector and matrix */ struct History history; /* holds meta-data (title, comments,..) */ struct GModule *module; /* GRASS module for parsing arguments */ - struct Option *criteria, *weight, *positiveflow, *negativeflow, *netflow; /* options */ + struct Option *criteria, *weight, *positiveflow, *negativeflow; /* options */ struct input *attributes; /*storage alla input criteria GRID files and output concordance and discordance GRID files*/ @@ -90,14 +90,6 @@ negativeflow->answer ="negativeflow"; negativeflow->description = "negative flow output map"; - netflow = G_define_option(); /* Allocates memory for the Option structure and returns a pointer to this memory */ - netflow->key = "netflow"; - netflow->type = TYPE_STRING; - netflow->required = YES; - netflow->gisprompt = "new,cell,raster"; - netflow->answer ="netflow"; - netflow->description = "net flow output map"; - /* options and flags parser */ if (G_parser(argc, argv)) exit(EXIT_FAILURE); @@ -145,7 +137,6 @@ result_positive_flow=positiveflow->answer; /* store output name in variables*/ result_negative_flow=negativeflow->answer; - result_net_flow=netflow->answer; if (G_legal_filename(result_positive_flow) < 0) /* check for legal database file names */ @@ -154,8 +145,6 @@ if (G_legal_filename(result_negative_flow) < 0) /* check for legal database file names */ G_fatal_error(_("<%s> is an illegal file name"), result_negative_flow); - if (G_legal_filename(result_net_flow) < 0) /* check for legal database file names */ - G_fatal_error(_("<%s> is an illegal file name"), result_net_flow); /*values = G_malloc(ncriteria * sizeof(DCELL));*/ @@ -166,8 +155,6 @@ decision_vol=G_malloc(nrows * sizeof(double*)); positive_flow_vol=G_calloc(nrows, sizeof(double*)); /*Allocates aligned block of memory and initializes the allocated memory to zero.*/ negative_flow_vol=G_calloc(nrows, sizeof(double*)); - net_flow_vol=G_calloc(nrows, sizeof(double*)); - //negative_flow_vol=G_calloc(nrows, sizeof(double*)); for (i=0; i Author: osfraid Date: 2015-09-14 07:03:08 -0700 (Mon, 14 Sep 2015) New Revision: 66212 Modified: grass-addons/grass7/raster/r.green/r.green.biomassfor/r.green.biomassfor.html Log: add Marco Ciolli as author in r.green.biomassfor.html Modified: grass-addons/grass7/raster/r.green/r.green.biomassfor/r.green.biomassfor.html =================================================================== --- grass-addons/grass7/raster/r.green/r.green.biomassfor/r.green.biomassfor.html 2015-09-14 13:15:21 UTC (rev 66211) +++ grass-addons/grass7/raster/r.green/r.green.biomassfor/r.green.biomassfor.html 2015-09-14 14:03:08 UTC (rev 66212) @@ -27,5 +27,6 @@ Francesco Geri, Pietro Zambelli, Sandro Sacchelli +Marco Ciolli

      Last changed: $Date$ From svn_grass at osgeo.org Mon Sep 14 07:06:32 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Mon, 14 Sep 2015 07:06:32 -0700 Subject: [GRASS-SVN] r66213 - grass-addons/grass7/raster/r.green/r.green.biomassfor Message-ID: <20150914140632.9775A390151@trac.osgeo.org> Author: osfraid Date: 2015-09-14 07:06:32 -0700 (Mon, 14 Sep 2015) New Revision: 66213 Modified: grass-addons/grass7/raster/r.green/r.green.biomassfor/r.green.biomassfor.html Log: add Marco Ciolli as author in r.green.biomassfor.html Modified: grass-addons/grass7/raster/r.green/r.green.biomassfor/r.green.biomassfor.html =================================================================== --- grass-addons/grass7/raster/r.green/r.green.biomassfor/r.green.biomassfor.html 2015-09-14 14:03:08 UTC (rev 66212) +++ grass-addons/grass7/raster/r.green/r.green.biomassfor/r.green.biomassfor.html 2015-09-14 14:06:32 UTC (rev 66213) @@ -26,7 +26,7 @@ Francesco Geri, Pietro Zambelli, -Sandro Sacchelli +Sandro Sacchelli, Marco Ciolli

      Last changed: $Date$ From svn_grass at osgeo.org Mon Sep 14 07:18:58 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Mon, 14 Sep 2015 07:18:58 -0700 Subject: [GRASS-SVN] r66214 - grass-addons/grass7/raster/r.green/r.green.biomassfor/r.green.biomassfor.theoretical Message-ID: <20150914141858.56984390151@trac.osgeo.org> Author: osfraid Date: 2015-09-14 07:18:58 -0700 (Mon, 14 Sep 2015) New Revision: 66214 Modified: grass-addons/grass7/raster/r.green/r.green.biomassfor/r.green.biomassfor.theoretical/r.green.biomassfor.theoretical.html Log: add Marco Ciolli to authors in r.green.biomassfor.theoretical.html Modified: grass-addons/grass7/raster/r.green/r.green.biomassfor/r.green.biomassfor.theoretical/r.green.biomassfor.theoretical.html =================================================================== --- grass-addons/grass7/raster/r.green/r.green.biomassfor/r.green.biomassfor.theoretical/r.green.biomassfor.theoretical.html 2015-09-14 14:06:32 UTC (rev 66213) +++ grass-addons/grass7/raster/r.green/r.green.biomassfor/r.green.biomassfor.theoretical/r.green.biomassfor.theoretical.html 2015-09-14 14:18:58 UTC (rev 66214) @@ -41,6 +41,7 @@

      AUTHORS

      Francesco Geri, Pietro Zambelli, -Sandro Sacchelli +Sandro Sacchelli, +Marco Ciolli

      Last changed: $Date$ From svn_grass at osgeo.org Mon Sep 14 07:20:07 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Mon, 14 Sep 2015 07:20:07 -0700 Subject: [GRASS-SVN] r66215 - grass-addons/grass7/raster/r.green/r.green.biomassfor/r.green.biomassfor.legal Message-ID: <20150914142007.23F56390151@trac.osgeo.org> Author: osfraid Date: 2015-09-14 07:20:07 -0700 (Mon, 14 Sep 2015) New Revision: 66215 Modified: grass-addons/grass7/raster/r.green/r.green.biomassfor/r.green.biomassfor.legal/r.green.biomassfor.legal.html Log: add Marco Ciolli to authors in r.green.biomassfor.legal.html Modified: grass-addons/grass7/raster/r.green/r.green.biomassfor/r.green.biomassfor.legal/r.green.biomassfor.legal.html =================================================================== --- grass-addons/grass7/raster/r.green/r.green.biomassfor/r.green.biomassfor.legal/r.green.biomassfor.legal.html 2015-09-14 14:18:58 UTC (rev 66214) +++ grass-addons/grass7/raster/r.green/r.green.biomassfor/r.green.biomassfor.legal/r.green.biomassfor.legal.html 2015-09-14 14:20:07 UTC (rev 66215) @@ -40,6 +40,7 @@

      AUTHORS

      Francesco Geri, Pietro Zambelli, -Sandro Sacchelli +Sandro Sacchelli, +Marco Ciolli

      Last changed: $Date$ From svn_grass at osgeo.org Mon Sep 14 07:26:04 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Mon, 14 Sep 2015 07:26:04 -0700 Subject: [GRASS-SVN] r66216 - grass-addons/grass7/raster/r.green/r.green.biomassfor/r.green.biomassfor.technical Message-ID: <20150914142604.66E74390151@trac.osgeo.org> Author: osfraid Date: 2015-09-14 07:26:04 -0700 (Mon, 14 Sep 2015) New Revision: 66216 Modified: grass-addons/grass7/raster/r.green/r.green.biomassfor/r.green.biomassfor.technical/r.green.biomassfor.technical.html Log: add Marco Ciolli to authors in r.green.biomassfor.technical.html Modified: grass-addons/grass7/raster/r.green/r.green.biomassfor/r.green.biomassfor.technical/r.green.biomassfor.technical.html =================================================================== --- grass-addons/grass7/raster/r.green/r.green.biomassfor/r.green.biomassfor.technical/r.green.biomassfor.technical.html 2015-09-14 14:20:07 UTC (rev 66215) +++ grass-addons/grass7/raster/r.green/r.green.biomassfor/r.green.biomassfor.technical/r.green.biomassfor.technical.html 2015-09-14 14:26:04 UTC (rev 66216) @@ -18,6 +18,7 @@

      AUTHORS

      Francesco Geri, Pietro Zambelli, -Sandro Sacchelli +Sandro Sacchelli, +Marco Ciolli

      Last changed: $Date$ From svn_grass at osgeo.org Mon Sep 14 07:26:43 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Mon, 14 Sep 2015 07:26:43 -0700 Subject: [GRASS-SVN] r66217 - grass-addons/grass7/raster/r.green/r.green.biomassfor/r.green.biomassfor.economic Message-ID: <20150914142643.6A7D8390151@trac.osgeo.org> Author: osfraid Date: 2015-09-14 07:26:43 -0700 (Mon, 14 Sep 2015) New Revision: 66217 Modified: grass-addons/grass7/raster/r.green/r.green.biomassfor/r.green.biomassfor.economic/r.green.biomassfor.economic.html Log: add Marco Ciolli to authors in r.green.biomassfor.economic.html Modified: grass-addons/grass7/raster/r.green/r.green.biomassfor/r.green.biomassfor.economic/r.green.biomassfor.economic.html =================================================================== --- grass-addons/grass7/raster/r.green/r.green.biomassfor/r.green.biomassfor.economic/r.green.biomassfor.economic.html 2015-09-14 14:26:04 UTC (rev 66216) +++ grass-addons/grass7/raster/r.green/r.green.biomassfor/r.green.biomassfor.economic/r.green.biomassfor.economic.html 2015-09-14 14:26:43 UTC (rev 66217) @@ -17,6 +17,7 @@

      AUTHORS

      Francesco Geri, Pietro Zambelli, -Sandro Sacchelli +Sandro Sacchelli,, +Marco Ciolli

      Last changed: $Date$ From svn_grass at osgeo.org Mon Sep 14 07:27:27 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Mon, 14 Sep 2015 07:27:27 -0700 Subject: [GRASS-SVN] r66218 - grass-addons/grass7/raster/r.green/r.green.biomassfor/r.green.biomassfor.recommended Message-ID: <20150914142727.54B30390151@trac.osgeo.org> Author: osfraid Date: 2015-09-14 07:27:27 -0700 (Mon, 14 Sep 2015) New Revision: 66218 Modified: grass-addons/grass7/raster/r.green/r.green.biomassfor/r.green.biomassfor.recommended/r.green.biomassfor.recommended.html Log: add Marco Ciolli to authors in r.green.biomassfor.recommended.html Modified: grass-addons/grass7/raster/r.green/r.green.biomassfor/r.green.biomassfor.recommended/r.green.biomassfor.recommended.html =================================================================== --- grass-addons/grass7/raster/r.green/r.green.biomassfor/r.green.biomassfor.recommended/r.green.biomassfor.recommended.html 2015-09-14 14:26:43 UTC (rev 66217) +++ grass-addons/grass7/raster/r.green/r.green.biomassfor/r.green.biomassfor.recommended/r.green.biomassfor.recommended.html 2015-09-14 14:27:27 UTC (rev 66218) @@ -17,6 +17,7 @@

      AUTHORS

      Francesco Geri, Pietro Zambelli, -Sandro Sacchelli +Sandro Sacchelli, +Marco Ciolli

      Last changed: $Date$ From svn_grass at osgeo.org Mon Sep 14 07:28:10 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Mon, 14 Sep 2015 07:28:10 -0700 Subject: [GRASS-SVN] r66219 - grass-addons/grass7/raster/r.green/r.green.biomassfor/r.green.biomassfor.impact Message-ID: <20150914142810.9BF27390151@trac.osgeo.org> Author: osfraid Date: 2015-09-14 07:28:10 -0700 (Mon, 14 Sep 2015) New Revision: 66219 Modified: grass-addons/grass7/raster/r.green/r.green.biomassfor/r.green.biomassfor.impact/r.green.biomassfor.impact.html Log: add Marco Ciolli to authors in r.green.biomassfor.impact.html Modified: grass-addons/grass7/raster/r.green/r.green.biomassfor/r.green.biomassfor.impact/r.green.biomassfor.impact.html =================================================================== --- grass-addons/grass7/raster/r.green/r.green.biomassfor/r.green.biomassfor.impact/r.green.biomassfor.impact.html 2015-09-14 14:27:27 UTC (rev 66218) +++ grass-addons/grass7/raster/r.green/r.green.biomassfor/r.green.biomassfor.impact/r.green.biomassfor.impact.html 2015-09-14 14:28:10 UTC (rev 66219) @@ -17,6 +17,7 @@

      AUTHORS

      Francesco Geri, Pietro Zambelli, -Sandro Sacchelli +Sandro Sacchelli, +Marco Ciolli

      Last changed: $Date$ From svn_grass at osgeo.org Mon Sep 14 07:28:41 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Mon, 14 Sep 2015 07:28:41 -0700 Subject: [GRASS-SVN] r66220 - grass-addons/grass7/raster/r.green/r.green.biomassfor/r.green.biomassfor.co2 Message-ID: <20150914142841.918D9390151@trac.osgeo.org> Author: osfraid Date: 2015-09-14 07:28:41 -0700 (Mon, 14 Sep 2015) New Revision: 66220 Modified: grass-addons/grass7/raster/r.green/r.green.biomassfor/r.green.biomassfor.co2/r.green.biomassfor.co2.html Log: add Marco Ciolli to authors in r.green.biomassfor.co2.html Modified: grass-addons/grass7/raster/r.green/r.green.biomassfor/r.green.biomassfor.co2/r.green.biomassfor.co2.html =================================================================== --- grass-addons/grass7/raster/r.green/r.green.biomassfor/r.green.biomassfor.co2/r.green.biomassfor.co2.html 2015-09-14 14:28:10 UTC (rev 66219) +++ grass-addons/grass7/raster/r.green/r.green.biomassfor/r.green.biomassfor.co2/r.green.biomassfor.co2.html 2015-09-14 14:28:41 UTC (rev 66220) @@ -17,6 +17,7 @@

      AUTHORS

      Francesco Geri, Pietro Zambelli, -Sandro Sacchelli +Sandro Sacchelli, +Marco Ciolli

      Last changed: $Date$

      \ No newline at end of file From svn_grass at osgeo.org Mon Sep 14 07:29:28 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Mon, 14 Sep 2015 07:29:28 -0700 Subject: [GRASS-SVN] r66221 - grass-addons/grass7/raster/r.green Message-ID: <20150914142928.4644E390151@trac.osgeo.org> Author: osfraid Date: 2015-09-14 07:29:28 -0700 (Mon, 14 Sep 2015) New Revision: 66221 Modified: grass-addons/grass7/raster/r.green/r.green.html Log: add Marco Ciolli to authors in r.green.html Modified: grass-addons/grass7/raster/r.green/r.green.html =================================================================== --- grass-addons/grass7/raster/r.green/r.green.html 2015-09-14 14:28:41 UTC (rev 66220) +++ grass-addons/grass7/raster/r.green/r.green.html 2015-09-14 14:29:28 UTC (rev 66221) @@ -21,6 +21,7 @@ Julie Gros, Francesco Geri, Pietro Zambelli, -Sandro Sacchelli +Sandro Sacchelli, +Marco Ciolli

      Last changed: $Date$ From svn_grass at osgeo.org Mon Sep 14 09:35:33 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Mon, 14 Sep 2015 09:35:33 -0700 Subject: [GRASS-SVN] r66222 - grass/trunk/imagery/i.maxlik Message-ID: <20150914163533.7ECC23900A3@trac.osgeo.org> Author: neteler Date: 2015-09-14 09:35:33 -0700 (Mon, 14 Sep 2015) New Revision: 66222 Added: grass/trunk/imagery/i.maxlik/i_maxlik_rejection.png grass/trunk/imagery/i.maxlik/i_maxlik_rgb.png Modified: grass/trunk/imagery/i.maxlik/ grass/trunk/imagery/i.maxlik/i.maxlik.html grass/trunk/imagery/i.maxlik/i_maxlik_classes.png Log: i.maxlik manual: screenshots added Property changes on: grass/trunk/imagery/i.maxlik ___________________________________________________________________ Modified: svn:ignore - OBJ.* + OBJ.* *.tmp.html Modified: grass/trunk/imagery/i.maxlik/i.maxlik.html =================================================================== --- grass/trunk/imagery/i.maxlik/i.maxlik.html 2015-09-14 14:29:28 UTC (rev 66221) +++ grass/trunk/imagery/i.maxlik/i.maxlik.html 2015-09-14 16:35:33 UTC (rev 66222) @@ -78,11 +78,13 @@

      EXAMPLE

      -Completion of the unsupervised classification of -a LANDSAT subscene (VIZ, NIR, MIR channels) in North Carolina -(see i.cluster manual page for the first part): +Second part of the unsupervised classification of a LANDSAT subscene +(VIZ, NIR, MIR channels) in North Carolina (see +i.cluster manual page for the first +part of the example):
      +# using here the signaturefile created by i.cluster
       i.maxlik group=lsat7_2002 subgroup=lsat7_2002 \
         signaturefile=sig_cluster_lsat2002 \
         output=lsat7_2002_cluster_classes reject=lsat7_2002_cluster_reject
      @@ -96,8 +98,9 @@
       r.report lsat7_2002_cluster_reject units=k,p
       
       # optionally, filter out pixels with high level of rejection
      -# here we select 90% which is category 12
      -r.mapcalc "lsat7_2002_cluster_classes_filtered = if(lsat7_2002_cluster_reject < 12, lsat7_2002_cluster_classes, null())"
      +# here we remove pixels of at least 90% of rejection probability, i.e. categories 12-16
      +r.mapcalc "lsat7_2002_cluster_classes_filtered = \
      +           if(lsat7_2002_cluster_reject <= 12, lsat7_2002_cluster_classes, null())"
       

      +
      +RGB composite of input data +


      -Resulting raster with classified pixels +Output raster map with pixels classified (10 classes) +

      +
      +Output raster map with rejection probability values (pixel classification confidence levels)

      Modified: grass/trunk/imagery/i.maxlik/i_maxlik_classes.png =================================================================== (Binary files differ) Added: grass/trunk/imagery/i.maxlik/i_maxlik_rejection.png =================================================================== (Binary files differ) Property changes on: grass/trunk/imagery/i.maxlik/i_maxlik_rejection.png ___________________________________________________________________ Added: svn:mime-type + image/png Added: grass/trunk/imagery/i.maxlik/i_maxlik_rgb.png =================================================================== (Binary files differ) Property changes on: grass/trunk/imagery/i.maxlik/i_maxlik_rgb.png ___________________________________________________________________ Added: svn:mime-type + image/png From svn_grass at osgeo.org Mon Sep 14 09:36:24 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Mon, 14 Sep 2015 09:36:24 -0700 Subject: [GRASS-SVN] r66223 - grass/branches/releasebranch_7_0/imagery/i.maxlik Message-ID: <20150914163624.DFCB63900A3@trac.osgeo.org> Author: neteler Date: 2015-09-14 09:36:24 -0700 (Mon, 14 Sep 2015) New Revision: 66223 Added: grass/branches/releasebranch_7_0/imagery/i.maxlik/i_maxlik_rejection.png grass/branches/releasebranch_7_0/imagery/i.maxlik/i_maxlik_rgb.png Modified: grass/branches/releasebranch_7_0/imagery/i.maxlik/ grass/branches/releasebranch_7_0/imagery/i.maxlik/i.maxlik.html grass/branches/releasebranch_7_0/imagery/i.maxlik/i_maxlik_classes.png Log: i.maxlik manual: screenshots added Property changes on: grass/branches/releasebranch_7_0/imagery/i.maxlik ___________________________________________________________________ Modified: svn:ignore - OBJ.* + OBJ.* *.tmp.html Modified: grass/branches/releasebranch_7_0/imagery/i.maxlik/i.maxlik.html =================================================================== --- grass/branches/releasebranch_7_0/imagery/i.maxlik/i.maxlik.html 2015-09-14 16:35:33 UTC (rev 66222) +++ grass/branches/releasebranch_7_0/imagery/i.maxlik/i.maxlik.html 2015-09-14 16:36:24 UTC (rev 66223) @@ -78,11 +78,13 @@

      EXAMPLE

      -Completion of the unsupervised classification of -a LANDSAT subscene (VIZ, NIR, MIR channels) in North Carolina -(see i.cluster manual page for the first part): +Second part of the unsupervised classification of a LANDSAT subscene +(VIZ, NIR, MIR channels) in North Carolina (see +i.cluster manual page for the first +part of the example):
      +# using here the signaturefile created by i.cluster
       i.maxlik group=lsat7_2002 subgroup=lsat7_2002 \
         signaturefile=sig_cluster_lsat2002 \
         output=lsat7_2002_cluster_classes reject=lsat7_2002_cluster_reject
      @@ -96,8 +98,9 @@
       r.report lsat7_2002_cluster_reject units=k,p
       
       # optionally, filter out pixels with high level of rejection
      -# here we select 90% which is category 12
      -r.mapcalc "lsat7_2002_cluster_classes_filtered = if(lsat7_2002_cluster_reject < 12, lsat7_2002_cluster_classes, null())"
      +# here we remove pixels of at least 90% of rejection probability, i.e. categories 12-16
      +r.mapcalc "lsat7_2002_cluster_classes_filtered = \
      +           if(lsat7_2002_cluster_reject <= 12, lsat7_2002_cluster_classes, null())"
       

      +
      +RGB composite of input data +


      -Resulting raster with classified pixels +Output raster map with pixels classified (10 classes) +

      +
      +Output raster map with rejection probability values (pixel classification confidence levels)

      Modified: grass/branches/releasebranch_7_0/imagery/i.maxlik/i_maxlik_classes.png =================================================================== (Binary files differ) Copied: grass/branches/releasebranch_7_0/imagery/i.maxlik/i_maxlik_rejection.png (from rev 66222, grass/trunk/imagery/i.maxlik/i_maxlik_rejection.png) =================================================================== (Binary files differ) Copied: grass/branches/releasebranch_7_0/imagery/i.maxlik/i_maxlik_rgb.png (from rev 66222, grass/trunk/imagery/i.maxlik/i_maxlik_rgb.png) =================================================================== (Binary files differ) From svn_grass at osgeo.org Mon Sep 14 09:36:55 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Mon, 14 Sep 2015 09:36:55 -0700 Subject: [GRASS-SVN] r66224 - grass/trunk/imagery/i.cluster Message-ID: <20150914163655.3A15C3900A3@trac.osgeo.org> Author: neteler Date: 2015-09-14 09:36:55 -0700 (Mon, 14 Sep 2015) New Revision: 66224 Modified: grass/trunk/imagery/i.cluster/i.cluster.html Log: i.cluster manual: example fix Modified: grass/trunk/imagery/i.cluster/i.cluster.html =================================================================== --- grass/trunk/imagery/i.cluster/i.cluster.html 2015-09-14 16:36:24 UTC (rev 66223) +++ grass/trunk/imagery/i.cluster/i.cluster.html 2015-09-14 16:36:55 UTC (rev 66224) @@ -221,11 +221,12 @@
       g.region raster=lsat7_2002_10 -p
       
      -# store VIZ, NIR, MIR into group/subgroup
      +# store VIZ, NIR, MIR into group/subgroup (leaving out TIR)
       i.group group=lsat7_2002 subgroup=lsat7_2002 \
         input=lsat7_2002_10,lsat7_2002_20,lsat7_2002_30,lsat7_2002_40,lsat7_2002_50,lsat7_2002_70
       
      -i.cluster group=my_lsat7_2002 subgroup=my_lsat7_2002 \
      +# generate signature file and report
      +i.cluster group=lsat7_2002 subgroup=lsat7_2002 \
         signaturefile=sig_cluster_lsat2002 \
         classes=10 report=rep_clust_lsat2002.txt
       
      From svn_grass at osgeo.org Mon Sep 14 09:37:22 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Mon, 14 Sep 2015 09:37:22 -0700 Subject: [GRASS-SVN] r66225 - grass/branches/releasebranch_7_0/imagery/i.cluster Message-ID: <20150914163722.196EE3900A3@trac.osgeo.org> Author: neteler Date: 2015-09-14 09:37:22 -0700 (Mon, 14 Sep 2015) New Revision: 66225 Modified: grass/branches/releasebranch_7_0/imagery/i.cluster/i.cluster.html Log: i.cluster manual: example fix Modified: grass/branches/releasebranch_7_0/imagery/i.cluster/i.cluster.html =================================================================== --- grass/branches/releasebranch_7_0/imagery/i.cluster/i.cluster.html 2015-09-14 16:36:55 UTC (rev 66224) +++ grass/branches/releasebranch_7_0/imagery/i.cluster/i.cluster.html 2015-09-14 16:37:22 UTC (rev 66225) @@ -221,11 +221,12 @@
       g.region raster=lsat7_2002_10 -p
       
      -# store VIZ, NIR, MIR into group/subgroup
      +# store VIZ, NIR, MIR into group/subgroup (leaving out TIR)
       i.group group=lsat7_2002 subgroup=lsat7_2002 \
         input=lsat7_2002_10,lsat7_2002_20,lsat7_2002_30,lsat7_2002_40,lsat7_2002_50,lsat7_2002_70
       
      -i.cluster group=my_lsat7_2002 subgroup=my_lsat7_2002 \
      +# generate signature file and report
      +i.cluster group=lsat7_2002 subgroup=lsat7_2002 \
         signaturefile=sig_cluster_lsat2002 \
         classes=10 report=rep_clust_lsat2002.txt
       
      From svn_grass at osgeo.org Mon Sep 14 10:06:11 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Mon, 14 Sep 2015 10:06:11 -0700 Subject: [GRASS-SVN] r66226 - grass/trunk/imagery/i.pca Message-ID: <20150914170611.F1BF73900A3@trac.osgeo.org> Author: neteler Date: 2015-09-14 10:06:11 -0700 (Mon, 14 Sep 2015) New Revision: 66226 Added: grass/trunk/imagery/i.pca/i_pca_result.png Modified: grass/trunk/imagery/i.pca/ grass/trunk/imagery/i.pca/i.pca.html Log: i.pca manual: screenshot added Property changes on: grass/trunk/imagery/i.pca ___________________________________________________________________ Modified: svn:ignore - OBJ.* + OBJ.* *.tmp.html Modified: grass/trunk/imagery/i.pca/i.pca.html =================================================================== --- grass/trunk/imagery/i.pca/i.pca.html 2015-09-14 16:37:22 UTC (rev 66225) +++ grass/trunk/imagery/i.pca/i.pca.html 2015-09-14 17:06:11 UTC (rev 66226) @@ -42,15 +42,16 @@

      NOTES

      Richards (1986) gives a good example of the application of principal -components analysis (pca) to a time series of LANDSAT images of a burned +components analysis (PCA) to a time series of LANDSAT images of a burned region in Australia. -

      Eigenvalue and eigenvector information is stored in the output maps' +

      +Eigenvalue and eigenvector information is stored in the output maps' history files. View with r.info.

      EXAMPLE

      -Using Landsat imagery in the North Carolina sample dataset: +PCA calculation using Landsat7 imagery in the North Carolina sample dataset:
       g.region raster=lsat7_2002_10 -p
      @@ -65,9 +66,22 @@
          PC4     32.85 ( 0.1752,-0.0191,-0.4053, 0.1593,-0.4435, 0.7632) [ 0.63%]
          PC5     20.73 (-0.6170,-0.2514, 0.6059, 0.1734,-0.3235, 0.2330) [ 0.40%]
          PC6      4.08 (-0.5475, 0.8021,-0.2282,-0.0607,-0.0208, 0.0252) [ 0.08%]
      +
      +d.mon wx0
      +d.rast lsat7_2002_pca.1
      +# ...
      +d.rast lsat7_2002_pca.6
       
      +In this example, the first two PCAs (PCA1 and PCA2) already explain 94.31% of +the variance in the six input channels. +

      +

      +PCA result
      +Resulting PCA maps calculated from the Landsat7 imagery (NC, USA) +
      +

      SEE ALSO

      Richards, John A., @@ -75,10 +89,8 @@ Springer-Verlag, 1986.

      -Vali, Ali R., -Personal communication, -Space Research Center, -University of Texas, Austin, 1990. +Vali, Ali R., Personal communication, +Space Research Center, University of Texas, Austin, 1990.

      @@ -96,7 +108,7 @@ -

      AUTHOR

      +

      AUTHORS

      David Satnik, GIS Laboratory

      Major modifications for GRASS 4.1 were made by
      Added: grass/trunk/imagery/i.pca/i_pca_result.png =================================================================== (Binary files differ) Property changes on: grass/trunk/imagery/i.pca/i_pca_result.png ___________________________________________________________________ Added: svn:mime-type + image/png From svn_grass at osgeo.org Mon Sep 14 10:06:52 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Mon, 14 Sep 2015 10:06:52 -0700 Subject: [GRASS-SVN] r66227 - grass/branches/releasebranch_7_0/imagery/i.pca Message-ID: <20150914170652.A9A883900A3@trac.osgeo.org> Author: neteler Date: 2015-09-14 10:06:52 -0700 (Mon, 14 Sep 2015) New Revision: 66227 Added: grass/branches/releasebranch_7_0/imagery/i.pca/i_pca_result.png Modified: grass/branches/releasebranch_7_0/imagery/i.pca/ grass/branches/releasebranch_7_0/imagery/i.pca/i.pca.html Log: i.pca manual: screenshot added Property changes on: grass/branches/releasebranch_7_0/imagery/i.pca ___________________________________________________________________ Modified: svn:ignore - OBJ.* + OBJ.* *.tmp.html Modified: grass/branches/releasebranch_7_0/imagery/i.pca/i.pca.html =================================================================== --- grass/branches/releasebranch_7_0/imagery/i.pca/i.pca.html 2015-09-14 17:06:11 UTC (rev 66226) +++ grass/branches/releasebranch_7_0/imagery/i.pca/i.pca.html 2015-09-14 17:06:52 UTC (rev 66227) @@ -42,15 +42,16 @@

      NOTES

      Richards (1986) gives a good example of the application of principal -components analysis (pca) to a time series of LANDSAT images of a burned +components analysis (PCA) to a time series of LANDSAT images of a burned region in Australia. -

      Eigenvalue and eigenvector information is stored in the output maps' +

      +Eigenvalue and eigenvector information is stored in the output maps' history files. View with r.info.

      EXAMPLE

      -Using Landsat imagery in the North Carolina sample dataset: +PCA calculation using Landsat7 imagery in the North Carolina sample dataset:
       g.region raster=lsat7_2002_10 -p
      @@ -65,9 +66,22 @@
          PC4     32.85 ( 0.1752,-0.0191,-0.4053, 0.1593,-0.4435, 0.7632) [ 0.63%]
          PC5     20.73 (-0.6170,-0.2514, 0.6059, 0.1734,-0.3235, 0.2330) [ 0.40%]
          PC6      4.08 (-0.5475, 0.8021,-0.2282,-0.0607,-0.0208, 0.0252) [ 0.08%]
      +
      +d.mon wx0
      +d.rast lsat7_2002_pca.1
      +# ...
      +d.rast lsat7_2002_pca.6
       
      +In this example, the first two PCAs (PCA1 and PCA2) already explain 94.31% of +the variance in the six input channels. +

      +

      +PCA result
      +Resulting PCA maps calculated from the Landsat7 imagery (NC, USA) +
      +

      SEE ALSO

      Richards, John A., @@ -75,10 +89,8 @@ Springer-Verlag, 1986.

      -Vali, Ali R., -Personal communication, -Space Research Center, -University of Texas, Austin, 1990. +Vali, Ali R., Personal communication, +Space Research Center, University of Texas, Austin, 1990.

      @@ -96,7 +108,7 @@ -

      AUTHOR

      +

      AUTHORS

      David Satnik, GIS Laboratory

      Major modifications for GRASS 4.1 were made by
      Copied: grass/branches/releasebranch_7_0/imagery/i.pca/i_pca_result.png (from rev 66226, grass/trunk/imagery/i.pca/i_pca_result.png) =================================================================== (Binary files differ) From svn_grass at osgeo.org Mon Sep 14 12:15:09 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Mon, 14 Sep 2015 12:15:09 -0700 Subject: [GRASS-SVN] r66228 - grass-addons/grass7/raster/r.mcda.topsis Message-ID: <20150914191509.918D2390151@trac.osgeo.org> Author: gianluca Date: 2015-09-14 12:15:09 -0700 (Mon, 14 Sep 2015) New Revision: 66228 Modified: grass-addons/grass7/raster/r.mcda.topsis/r.mcda.topsis.py Log: -clean work files Modified: grass-addons/grass7/raster/r.mcda.topsis/r.mcda.topsis.py =================================================================== --- grass-addons/grass7/raster/r.mcda.topsis/r.mcda.topsis.py 2015-09-14 17:06:52 UTC (rev 66227) +++ grass-addons/grass7/raster/r.mcda.topsis/r.mcda.topsis.py 2015-09-14 19:15:09 UTC (rev 66228) @@ -145,7 +145,7 @@ worstPointDistance(worstPointsList,criteria) relativeCloseness(topsismap) gscript.run_command("g.remove", flags='f', type='raster', name=",".join(criteria)) - gscript.run_command("g.remove", flags='f', type='raster', name="IdealPointDistance,WorstPointDistance") + gscript.run_command("g.remove", flags='f', type='raster', name="IdealPointDistance,WorstPointDistance,critPow") end=time() print "Time computing-> %.4f s" % (end-start) From svn_grass at osgeo.org Mon Sep 14 12:19:29 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Mon, 14 Sep 2015 12:19:29 -0700 Subject: [GRASS-SVN] r66229 - grass-addons/grass7/raster/r.mcda.topsis Message-ID: <20150914191929.D1C45390151@trac.osgeo.org> Author: gianluca Date: 2015-09-14 12:19:29 -0700 (Mon, 14 Sep 2015) New Revision: 66229 Modified: grass-addons/grass7/raster/r.mcda.topsis/r.mcda.topsis.py Log: -clean work files Modified: grass-addons/grass7/raster/r.mcda.topsis/r.mcda.topsis.py =================================================================== --- grass-addons/grass7/raster/r.mcda.topsis/r.mcda.topsis.py 2015-09-14 19:15:09 UTC (rev 66228) +++ grass-addons/grass7/raster/r.mcda.topsis/r.mcda.topsis.py 2015-09-14 19:19:29 UTC (rev 66229) @@ -60,7 +60,7 @@ for criterion,weight in zip(attributes,weights): gscript.mapcalc("critPow=pow(${criterion},2)",criterion=criterion,overwrite='True') stats=gscript.parse_command("r.univar",map='critPow',flags='g') - nameMap="_%s" % criterion.split("@")[1] + nameMap="_%s" % criterion gscript.mapcalc("${nameMap}=(${criterion}/sqrt(${sum}))*${weight}", \ nameMap=nameMap,criterion=criterion,sum=stats['sum'],weight=weight,overwrite='True') criteria.append(nameMap) From svn_grass at osgeo.org Mon Sep 14 20:05:39 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Mon, 14 Sep 2015 20:05:39 -0700 Subject: [GRASS-SVN] r66230 - grass/trunk/gui/wxpython/datacatalog Message-ID: <20150915030539.6D08C390151@trac.osgeo.org> Author: annakrat Date: 2015-09-14 20:05:38 -0700 (Mon, 14 Sep 2015) New Revision: 66230 Modified: grass/trunk/gui/wxpython/datacatalog/tree.py Log: wxGUI/datacatalog: fix tree rendering on Windows Modified: grass/trunk/gui/wxpython/datacatalog/tree.py =================================================================== --- grass/trunk/gui/wxpython/datacatalog/tree.py 2015-09-14 19:19:29 UTC (rev 66229) +++ grass/trunk/gui/wxpython/datacatalog/tree.py 2015-09-15 03:05:38 UTC (rev 66230) @@ -32,7 +32,7 @@ import grass.script as grass class LocationMapTree(wx.TreeCtrl): - def __init__(self, parent, style=wx.TR_HIDE_ROOT | wx.TR_EDIT_LABELS | + def __init__(self, parent, style=wx.TR_HIDE_ROOT | wx.TR_EDIT_LABELS | wx.TR_LINES_AT_ROOT | wx.TR_HAS_BUTTONS | wx.TR_FULL_ROW_HIGHLIGHT | wx.TR_SINGLE): """Location Map Tree constructor.""" super(LocationMapTree, self).__init__(parent, id=wx.ID_ANY, style=style) From svn_grass at osgeo.org Tue Sep 15 01:00:40 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Tue, 15 Sep 2015 01:00:40 -0700 Subject: [GRASS-SVN] r66231 - grass/trunk/doc Message-ID: <20150915080040.C6FA73900A3@trac.osgeo.org> Author: lucadelu Date: 2015-09-15 01:00:40 -0700 (Tue, 15 Sep 2015) New Revision: 66231 Modified: grass/trunk/doc/help_loc_structure.odg Log: added temporal dataset to location structure Modified: grass/trunk/doc/help_loc_structure.odg =================================================================== (Binary files differ) From svn_grass at osgeo.org Tue Sep 15 06:51:45 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Tue, 15 Sep 2015 06:51:45 -0700 Subject: [GRASS-SVN] r66232 - grass/branches/releasebranch_7_0/doc Message-ID: <20150915135145.7794D3900A3@trac.osgeo.org> Author: neteler Date: 2015-09-15 06:51:45 -0700 (Tue, 15 Sep 2015) New Revision: 66232 Modified: grass/branches/releasebranch_7_0/doc/help_loc_structure.odg Log: added temporal dataset to location structure (trunk, r66231) Modified: grass/branches/releasebranch_7_0/doc/help_loc_structure.odg =================================================================== (Binary files differ) From svn_grass at osgeo.org Tue Sep 15 07:29:12 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Tue, 15 Sep 2015 07:29:12 -0700 Subject: [GRASS-SVN] r66233 - grass/trunk/imagery/i.cluster Message-ID: <20150915142912.0FD893900A3@trac.osgeo.org> Author: neteler Date: 2015-09-15 07:29:11 -0700 (Tue, 15 Sep 2015) New Revision: 66233 Modified: grass/trunk/imagery/i.cluster/i.cluster.html Log: i.cluster manual: expanded for algorithm description Modified: grass/trunk/imagery/i.cluster/i.cluster.html =================================================================== --- grass/trunk/imagery/i.cluster/i.cluster.html 2015-09-15 13:51:45 UTC (rev 66232) +++ grass/trunk/imagery/i.cluster/i.cluster.html 2015-09-15 14:29:11 UTC (rev 66233) @@ -1,21 +1,19 @@

      DESCRIPTION

      -i.cluster -performs the first pass in the GRASS two-pass unsupervised -classification of imagery, while the GRASS program -i.maxlik executes -the second pass. Both programs must be run to complete the unsupervised -classification. +i.cluster performs the first pass in the two-pass +unsupervised classification of imagery, while the GRASS module +i.maxlik executes the second pass. +Both commands must be run to complete the unsupervised classification.

      -i.cluster is a clustering algorithm that reads -through the (raster) imagery data and builds pixel clusters -based on the spectral reflectances of the pixels (see Figure). +i.cluster is a clustering algorithm (a modification of the +k-means clustering algorithm) that reads through the (raster) imagery +data and builds pixel clusters based on the spectral reflectances of the +pixels (see Figure). The pixel clusters are imagery categories that can be related -to land cover types on the ground. The spectral -distributions of the clusters (which will be the land cover -spectral signatures) are influenced by six parameters set -by the user. The first parameter set by the user is the +to land cover types on the ground. The spectral distributions of the +clusters (e.g., land cover spectral signatures) are influenced by six +parameters set by the user. A relevant parameter set by the user is the initial number of clusters to be discriminated.

      @@ -208,11 +206,54 @@

      NOTES

      + +

      Sampling method

      + +i.cluster does not cluster all pixels, but only a sample (see +parameter sample). The result of that clustering is not that all +pixels are assigned to a given cluster; essentially, only signatures which are +representative of a given cluster are generated. When running i.cluster +on the same data asking for the same number of classes, but with different +sample sizes, likely slightly different signatures for each cluster are +obtained at each run. + +

      Algorithm used for i.cluster

      + + + +The algorithm uses input parameters set by the user on the +initial number of clusters, the minimum distance between clusters, and the +correspondence between iterations which is desired, and minimum size for +each cluster. It also asks if all pixels to be clustered, or every "x"th row +and "y"th column (sampling), the correspondence between iterations +desired, and the maximum number of iterations to be carried out. +

      +In the 1st pass, initial cluster means for each band are defined by giving +the first cluster a value equal to the band mean minus its standard +deviation, and the last cluster a value equal to the band mean plus its +standard deviation, with all other cluster means distributed equally +spaced in between these. Each pixel is then assigned to the class which it +is closest to, distance being measured as Euclidean distance. All clusters +less than the user-specified minimum distance are then merged. If a +cluster has less than the user-specified minimum number of pixels, all those +pixels are again reassigned to the next nearest cluster. New cluster means +are calculated for each band as the average of raster pixel values in that +band for all pixels present in that cluster. +

      +In the 2nd pass, pixels are then again reassigned to clusters based on new +cluster means. The cluster means are then again recalculated. This +process is repeated until the correspondence between iterations reaches a +user-specified level, or till the maximum number of iterations specified is +over, whichever comes first. +

      EXAMPLE

      Preparing the statistics for unsupervised classification of @@ -236,16 +277,15 @@

      SEE ALSO

      -Image processing -and -Image classification -wiki pages and for historical reference also -the GRASS GIS 4 -Image -Processing manual +

      - g.gui.iclass, i.group, @@ -259,12 +299,10 @@

      AUTHORS

      Michael Shapiro, -U.S.Army Construction Engineering -Research Laboratory +U.S. Army Construction Engineering Research Laboratory
      Tao Wen, -University of Illinois at -Urbana-Champaign, -Illinois +University of Illinois at Urbana-Champaign, Illinois +

      Last changed: $Date$ From svn_grass at osgeo.org Tue Sep 15 07:29:55 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Tue, 15 Sep 2015 07:29:55 -0700 Subject: [GRASS-SVN] r66234 - grass/branches/releasebranch_7_0/imagery/i.cluster Message-ID: <20150915142955.BB0793900A3@trac.osgeo.org> Author: neteler Date: 2015-09-15 07:29:55 -0700 (Tue, 15 Sep 2015) New Revision: 66234 Modified: grass/branches/releasebranch_7_0/imagery/i.cluster/i.cluster.html Log: i.cluster manual: expanded for algorithm description (trunk, r66233) Modified: grass/branches/releasebranch_7_0/imagery/i.cluster/i.cluster.html =================================================================== --- grass/branches/releasebranch_7_0/imagery/i.cluster/i.cluster.html 2015-09-15 14:29:11 UTC (rev 66233) +++ grass/branches/releasebranch_7_0/imagery/i.cluster/i.cluster.html 2015-09-15 14:29:55 UTC (rev 66234) @@ -1,21 +1,19 @@

      DESCRIPTION

      -i.cluster -performs the first pass in the GRASS two-pass unsupervised -classification of imagery, while the GRASS program -i.maxlik executes -the second pass. Both programs must be run to complete the unsupervised -classification. +i.cluster performs the first pass in the two-pass +unsupervised classification of imagery, while the GRASS module +i.maxlik executes the second pass. +Both commands must be run to complete the unsupervised classification.

      -i.cluster is a clustering algorithm that reads -through the (raster) imagery data and builds pixel clusters -based on the spectral reflectances of the pixels (see Figure). +i.cluster is a clustering algorithm (a modification of the +k-means clustering algorithm) that reads through the (raster) imagery +data and builds pixel clusters based on the spectral reflectances of the +pixels (see Figure). The pixel clusters are imagery categories that can be related -to land cover types on the ground. The spectral -distributions of the clusters (which will be the land cover -spectral signatures) are influenced by six parameters set -by the user. The first parameter set by the user is the +to land cover types on the ground. The spectral distributions of the +clusters (e.g., land cover spectral signatures) are influenced by six +parameters set by the user. A relevant parameter set by the user is the initial number of clusters to be discriminated.

      @@ -208,11 +206,54 @@

      NOTES

      + +

      Sampling method

      + +i.cluster does not cluster all pixels, but only a sample (see +parameter sample). The result of that clustering is not that all +pixels are assigned to a given cluster; essentially, only signatures which are +representative of a given cluster are generated. When running i.cluster +on the same data asking for the same number of classes, but with different +sample sizes, likely slightly different signatures for each cluster are +obtained at each run. + +

      Algorithm used for i.cluster

      + + + +The algorithm uses input parameters set by the user on the +initial number of clusters, the minimum distance between clusters, and the +correspondence between iterations which is desired, and minimum size for +each cluster. It also asks if all pixels to be clustered, or every "x"th row +and "y"th column (sampling), the correspondence between iterations +desired, and the maximum number of iterations to be carried out. +

      +In the 1st pass, initial cluster means for each band are defined by giving +the first cluster a value equal to the band mean minus its standard +deviation, and the last cluster a value equal to the band mean plus its +standard deviation, with all other cluster means distributed equally +spaced in between these. Each pixel is then assigned to the class which it +is closest to, distance being measured as Euclidean distance. All clusters +less than the user-specified minimum distance are then merged. If a +cluster has less than the user-specified minimum number of pixels, all those +pixels are again reassigned to the next nearest cluster. New cluster means +are calculated for each band as the average of raster pixel values in that +band for all pixels present in that cluster. +

      +In the 2nd pass, pixels are then again reassigned to clusters based on new +cluster means. The cluster means are then again recalculated. This +process is repeated until the correspondence between iterations reaches a +user-specified level, or till the maximum number of iterations specified is +over, whichever comes first. +

      EXAMPLE

      Preparing the statistics for unsupervised classification of @@ -236,16 +277,15 @@

      SEE ALSO

      -Image processing -and -Image classification -wiki pages and for historical reference also -the GRASS GIS 4 -Image -Processing manual +

      - g.gui.iclass, i.group, @@ -259,12 +299,10 @@

      AUTHORS

      Michael Shapiro, -U.S.Army Construction Engineering -Research Laboratory +U.S. Army Construction Engineering Research Laboratory
      Tao Wen, -University of Illinois at -Urbana-Champaign, -Illinois +University of Illinois at Urbana-Champaign, Illinois +

      Last changed: $Date$ From svn_grass at osgeo.org Tue Sep 15 08:38:42 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Tue, 15 Sep 2015 08:38:42 -0700 Subject: [GRASS-SVN] r66235 - grass-addons/grass7/raster/r.biodiversity Message-ID: <20150915153842.DFA763900F0@trac.osgeo.org> Author: pvanbosgeo Date: 2015-09-15 08:38:42 -0700 (Tue, 15 Sep 2015) New Revision: 66235 Modified: grass-addons/grass7/raster/r.biodiversity/r.biodiversity.html Log: small edits / corrections Modified: grass-addons/grass7/raster/r.biodiversity/r.biodiversity.html =================================================================== --- grass-addons/grass7/raster/r.biodiversity/r.biodiversity.html 2015-09-15 14:29:55 UTC (rev 66234) +++ grass-addons/grass7/raster/r.biodiversity/r.biodiversity.html 2015-09-15 15:38:42 UTC (rev 66235) @@ -1,109 +1,42 @@

      DESCRIPTION

      -

      r.biodiversity computes one or more biodiversity indici -based on 2 or more input layers. Each layer should represents a -species (or other categories being used), and its raster values the -species count. The name of the output layers will consist of the -base name provided by the user. +

      r.biodiversity computes one or more biodiversity indici based on 2 or more input layers. Each layer should represents a species (or other categories being used), and its raster values the species count. The name of the output layers will consist of the base name provided by the user. Currently implemented are the Renyi entropy index and three specialized cases of the Renyi enthropy, +viz.the species richness, the Shannon index and the Simpson index (Legendre & Legendre, 1998). -

      Currently implemented are the R?nyi entropy index and three -specialized cases of the Renyi enthropy, viz.the species richness, the -Shannon index and the Simpson index (Legendre & Legendre, 1998). -

      The Renyi enthropy

      -This index uantify the diversity, uncertainty, or randomness of a -system. The user can define the order of diversity by setting the -order (alpha) value. The order of a diversity indicates its -sensitivity to common and rare species. The diversity of order zero -( alpha = 0) is completely insensitive to species -frequencies and is better known as species richness. Increasing the -order diminishes the relative weights of rare species in the -resulting index (Jost 2006, Legendre & Legendre 1998). The name of -the output layer is composed of the basename + renyi + alpha. +

      This index uantify the diversity, uncertainty, or randomness of a system. The user can define the order of diversity by setting the order (alpha) value. The order of a diversity indicates its +sensitivity to common and rare species. The diversity of order zero ( alpha = 0) is completely insensitive to species frequencies and is better known as species richness. Increasing the order diminishes the relative weights of rare species in the resulting index (Jost 2006, Legendre & Legendre 1998). The name of the output layer is composed of the basename + renyi + alpha.

      Species richness

      -

      The species richness is simply the count of the number of layers. -It is a special case of the Reny enthropy: - -

      s = exp(R0)
      - -whereby s is the species richness R0 the renyi index -for alpha=0. The name of the output layer is composed of the basename + +

      The species richness is simply the count of the number of layers. It is a special case of the Reny enthropy: s = exp(R0), whereby s is the species richness R0 the renyi index for alpha=0. The name of the output layer is composed of the basename + richness.

      Shannon index

      -

      The Shannon (also called the Shannon-Weaver or Shannon-Wiener) -index is defined as +

      The Shannon (also called the Shannon-Weaver or Shannon-Wiener) index is defined as H = -sum(p_i x log(p_i)), where p_i is the proportional abundance of species i. The function uses the natural logarithm (one can also use other bases for the log, but that is currently not implemented, and doesn't make a real difference). Note the Shannon index is a special case of the Renyi enthropy for alpha = 2. The name of the output layer is composed of the basename + shannon. -

      H = -sum(p_i x log(p_i))
      - -where p_i is the proportional abundance of species i. -The r.biodiversity uses the natural logarithm (one can also use -other bases for the log, but that is currently not implemented, and -doesn't make a real difference). Note the Shannon index is a special -case of the Renyi enthropy for alpha = 2. The name of the -output layer is composed of the basename + shannon. -

      Simpson (concentration) index

      -

      The Simpson's index is defined as +

      The Simpson's index is defined as D = sum p_i^2. This is equivalent to -1 * 1 / exp(R2), with R2 the renyi index for alpha=2. With this index, 0 represents infinite diversity and 1, no diversity. The name of the output layer is composed of the basename + simpson. -

      D = sum p_i^2
      . - -This is equivalent to - -
      -1 * 1 / exp(R2)
      - -with R2 the renyi index for alpha=2. With this index, -0 represents infinite diversity and 1, no diversity. The name of the -output layer is composed of the basename + simpson. -

      Inverse Simpson index (Simpson's Reciprocal Index)

      -

      D obtains small values in datasets of high diversity and large -values in datasets of low diversity. This is counterintuitive -behavior for a diversity index. An alternative is the inverse -Simpson index, which is +

      D obtains small values in datasets of high diversity and large values in datasets of low diversity. This is counterintuitive behavior for a diversity index. An alternative is the inverse Simpson index, which is ID = 1 / D). The index represents the probability that two individuals randomly selected from a sample will belong to different species. The value ranges between 0 and 1, but now, the greater the value, the greater the sample diversity. The name of the output layer is composed of the basename + invsimpson. -

      ID = 1 / D)
      . - -The index represents the probability that two individuals randomly -selected from a sample will belong to different species. The value -ranges between 0 and 1, but now, the greater the value, the greater -the sample diversity. The name of the output layer is composed of -the basename + invsimpson. -

      Gini-Simpson index

      -

      An alternative way to overcome the problem of the -counter-intuitive nature of Simpson's Index is to use +

      An alternative way to overcome the problem of the counter-intuitive nature of Simpson's Index is to use 1 - D). The lowest value of this index is 1 and represent a community containing only one species. The higher the value, the greater the diversity. The maximum value is the number of species in the sample. The name of the output layer is composed of the basename + ginisimpson. -

      1 - D)
      . - -The lowest value of this index is 1 and represent a community -containing only one species. The higher the value, the greater the -diversity. The maximum value is the number of species in the sample. -The name of the output layer is composed of the basename + -ginisimpson. -

      NOTES

      -

      Note that if you are interested in the landscape diversity, you -should have a look at the -r.diversity addon or the various related r.li.* addons (see -below). These functions requires one input layer and compute the -diversity using a moving window. +

      Note that if you are interested in the landscape diversity, you should have a look at the r.diversity addon or the various related r.li.* addons (see below). These functions requires one input layer and compute the diversity using a moving window.

      EXAMPLES

      -

      Suppose we have five layers, each representing number of -individuals of a different species. To keep it simple, let's assume -individuals of all five species are homogeneous distributed, with -respectively 60, 10, 25, 1 and 4 individuals / raster cell densities. +

      Suppose we have five layers, each representing number of individuals of a different species. To keep it simple, let's assume individuals of all five species are homogeneous distributed, with respectively 60, 10, 25, 1 and 4 individuals / raster cell densities.

       r.mapcalc "spec1 = 60"
      @@ -113,24 +46,19 @@
       r.mapcalc "spec5 = 4"
       
      -Now we can calculate the renyi index for alpha is 0, 1 and 2 (this -will give you 1.61, 1.06 and 0.83 respectively) +Now we can calculate the renyi index for alpha is 0, 1 and 2 (this will give you 1.61, 1.06 and 0.83 respectively)
       r.biodiversity in=spec1,spec2,spec3,spec4,spec5 out=renyi alpha=0,1,2
       
      -You can also compute the species richness, shannon, simpson, inverse -simpson and gini-simpson indici +

      You can also compute the species richness, shannon, simpson, inverse simpson and gini-simpson indici

       r.biodiversity -s -h -d -p -g in=spec1,spec2,spec3,spec4,spec5 out=biodiversity
       
      -The species richness you get should of course be 5. The shannon -index is the same as the renyi index with alpha=1 (1.06). The -simpson should be 0.43, and inverse simpson and gini-simpson will be -2.3 and 0.57 respectively. +

      The species richness you get should of course be 5. The shannon index is the same as the renyi index with alpha=1 (1.06). The simpson should be 0.43, and inverse simpson and gini-simpson will be 2.3 and 0.57 respectively.

      SEE ALSO

      @@ -146,4 +74,4 @@

      AUTHOR

      Paulo van Breugel, paulo at ecodiv.org -

      Last changed: $Date$ +

      Last changed: $Date: 2015-09-11 19:24:14 +0200 (vr, 11 sep 2015) $ From svn_grass at osgeo.org Tue Sep 15 13:10:09 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Tue, 15 Sep 2015 13:10:09 -0700 Subject: [GRASS-SVN] r66236 - grass/trunk/lib/python/pygrass/vector Message-ID: <20150915201009.4A6523900F0@trac.osgeo.org> Author: huhabla Date: 2015-09-15 13:10:09 -0700 (Tue, 15 Sep 2015) New Revision: 66236 Modified: grass/trunk/lib/python/pygrass/vector/geometry.py Log: pygrass vector: Implemented memory management for geometries to avoid memory leaks from line_cats and line_points structures Modified: grass/trunk/lib/python/pygrass/vector/geometry.py =================================================================== --- grass/trunk/lib/python/pygrass/vector/geometry.py 2015-09-15 15:38:42 UTC (rev 66235) +++ grass/trunk/lib/python/pygrass/vector/geometry.py 2015-09-15 20:10:09 UTC (rev 66236) @@ -259,34 +259,84 @@ gtype = None def __init__(self, v_id=0, c_mapinfo=None, c_points=None, c_cats=None, - table=None, writeable=False, is2D=True): + table=None, writeable=False, is2D=True, free_points=False, + free_cats=False): + """Constructor of a geometry object + + :param v_id: The vector feature id + :param c_mapinfo: A pointer to the vector mapinfo structure + :param c_points: A pointer to a libvect.line_pnts structure, this + is optional, if not set an internal structure will + be allocated and free'd at object destruction + :param c_cats: A pointer to a libvect.line_cats structure, this + is optional, if not set an internal structure will + be allocated and free'd at object destruction + :param table: The attribute table to select attributes for + this feature + :param writeable: Not sure what this is for? + :param is2D: If True this feature has two dimensions, False if + this feature has three dimensions + :param free_points: Set this True if the provided c_points structure + should be free'd at object destruction, be aware + that no other object should free them, otherwise + you can expect a double free corruption segfault + :param free_cats: Set this True if the provided c_cats structure + should be free'd at object destruction, be aware + that no other object should free them, otherwise + you can expect a double free corruption segfault + + """ self.id = v_id # vector id self.c_mapinfo = c_mapinfo self.is2D = (is2D if is2D is not None else bool(libvect.Vect_is_3d(self.c_mapinfo) != 1)) + # Set True if cats and points are allocated by this object + # to free the cats and points structures on destruction + self._free_points = False + self._free_cats = False + read = False # set c_points if c_points is None: self.c_points = ctypes.pointer(libvect.line_pnts()) + self._free_points = True read = True else: self.c_points = c_points + self._free_points = free_points # set c_cats if c_cats is None: self.c_cats = ctypes.pointer(libvect.line_cats()) + self._free_cats = free_cats read = True else: self.c_cats = c_cats + self._free_cats = True if self.id and self.c_mapinfo is not None and read: self.read() # set the attributes as last thing to do - self.attrs = None + self.attrs = None if table is not None and self.cat is not None: self.attrs = Attrs(self.cat, table, writeable) + + def __del__(self): + """Take care of the allocated line_pnts and line_cats allocation + """ + if self._free_points == True and self.c_points: + if self.c_points.contents.alloc_points > 0: + #print("G_free(points) [%i]"%(self.c_points.contents.alloc_points)) + libgis.G_free(self.c_points.contents.x) + libgis.G_free(self.c_points.contents.y) + if self.c_points.contents.z: + libgis.G_free(self.c_points.contents.z) + if self._free_cats == True and self.c_cats: + if self.c_cats.contents.alloc_cats > 0: + #print("G_free(cats) [%i]"%(self.c_cats.contents.alloc_cats)) + libgis.G_free(self.c_cats.contents.cat) @property def cat(self): @@ -314,11 +364,6 @@ >>> pnt = Point(10, 100) >>> pnt.to_wkt() 'POINT (10.0000000000000000 100.0000000000000000)' - - .. warning:: - - Only ``POINT`` (2/3D) are supported, ``POINTM`` and ``POINT`` with: - ``XYZM`` are not supported yet. """ return libvect.Vect_line_to_wkt(self.c_points, self.gtype, not self.is2D) @@ -330,12 +375,6 @@ >>> wkb = pnt.to_wkb() >>> len(wkb) 21 - - - .. warning:: - - Only ``POINT`` (2/3D) are supported, ``POINTM`` and ``POINT`` with: - ``XYZM`` are not supported yet. """ size = ctypes.c_size_t() barray = libvect.Vect_line_to_wkb(self.c_points, self.gtype, @@ -366,6 +405,19 @@ >>> print(pnt) POINT Z (0.0000000000000000 0.0000000000000000 0.0000000000000000) + + >>> c_points = ctypes.pointer(libvect.line_pnts()) + >>> c_cats = ctypes.pointer(libvect.line_cats()) + >>> p = Point(c_points = c_points, c_cats=c_cats) + >>> del p + + + >>> c_points = ctypes.pointer(libvect.line_pnts()) + >>> c_cats = ctypes.pointer(libvect.line_cats()) + >>> p = Point(c_points=c_points, c_cats=c_cats, free_points=True, + ... free_cats=True) + >>> del p + .. """ # geometry type @@ -1742,13 +1794,24 @@ def read_next_line(c_mapinfo, table=None, writeable=False, c_points=None, c_cats=None, is2D=True): """Return the next geometry feature of a vector map.""" + + # Take care of good memory management + free_points = False + if c_points == None: + free_points = True + + free_cats = False + if c_cats == None: + free_cats = True + c_points = c_points if c_points else ctypes.pointer(libvect.line_pnts()) c_cats = c_cats if c_cats else ctypes.pointer(libvect.line_cats()) ftype, v_id, c_points, c_cats = c_read_next_line(c_mapinfo, c_points, c_cats) return GV_TYPE[ftype]['obj'](v_id=v_id, c_mapinfo=c_mapinfo, c_points=c_points, c_cats=c_cats, - table=table, writeable=writeable, is2D=is2D) + table=table, writeable=writeable, is2D=is2D, + free_points=free_points, free_cats=free_cats) def c_read_line(feature_id, c_mapinfo, c_points, c_cats): @@ -1768,6 +1831,15 @@ c_points=None, c_cats=None, is2D=True): """Return a geometry object given the feature id and the c_mapinfo. """ + # Take care of good memory management + free_points = False + if c_points == None: + free_points = True + + free_cats = False + if c_cats == None: + free_cats = True + c_points = c_points if c_points else ctypes.pointer(libvect.line_pnts()) c_cats = c_cats if c_cats else ctypes.pointer(libvect.line_cats()) feature_id, ftype, c_points, c_cats = c_read_line(feature_id, c_mapinfo, @@ -1775,9 +1847,10 @@ if GV_TYPE[ftype]['obj'] is not None: return GV_TYPE[ftype]['obj'](v_id=feature_id, c_mapinfo=c_mapinfo, c_points=c_points, c_cats=c_cats, - table=table, writeable=writeable, is2D=is2D) + table=table, writeable=writeable, is2D=is2D, + free_points=free_points, + free_cats=free_cats) - if __name__ == "__main__": import doctest from grass.pygrass import utils From svn_grass at osgeo.org Tue Sep 15 13:14:34 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Tue, 15 Sep 2015 13:14:34 -0700 Subject: [GRASS-SVN] r66237 - grass-addons/grass7/raster/r.biodiversity Message-ID: <20150915201434.A2E773900F0@trac.osgeo.org> Author: pvanbosgeo Date: 2015-09-15 13:14:34 -0700 (Tue, 15 Sep 2015) New Revision: 66237 Modified: grass-addons/grass7/raster/r.biodiversity/r.biodiversity.py Log: Correction in Renyi formula, to better deal with 0 values Modified: grass-addons/grass7/raster/r.biodiversity/r.biodiversity.py =================================================================== --- grass-addons/grass7/raster/r.biodiversity/r.biodiversity.py 2015-09-15 20:10:09 UTC (rev 66236) +++ grass-addons/grass7/raster/r.biodiversity/r.biodiversity.py 2015-09-15 20:14:34 UTC (rev 66237) @@ -205,7 +205,7 @@ tmpl = [] if Q[n] == 1: - # When alpha = 1 + # If alpha = 1 for i in xrange(len(IN)): tmpi = tmpname('shi' + str(i) + "_") tmpl.append(tmpi) @@ -226,7 +226,7 @@ for i in xrange(len(IN)): tmpi = tmpname('reni') tmpl.append(tmpi) - grass.mapcalc("$tmpi = pow($inl/$tmpt,$alpha)", + grass.mapcalc("$tmpi = if($inl==0,0,pow($inl/$tmpt,$alpha))", tmpi=tmpi, tmpt=tmpt, inl=IN[i], From svn_grass at osgeo.org Wed Sep 16 06:50:59 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Wed, 16 Sep 2015 06:50:59 -0700 Subject: [GRASS-SVN] r66238 - grass/trunk/lib/gis Message-ID: <20150916135059.53F173900A3@trac.osgeo.org> Author: wenzeslaus Date: 2015-09-16 06:50:59 -0700 (Wed, 16 Sep 2015) New Revision: 66238 Modified: grass/trunk/lib/gis/renamed_options Log: v.outlier: add missing 6.4 compatibility option Modified: grass/trunk/lib/gis/renamed_options =================================================================== --- grass/trunk/lib/gis/renamed_options 2015-09-15 20:14:34 UTC (rev 66237) +++ grass/trunk/lib/gis/renamed_options 2015-09-16 13:50:59 UTC (rev 66238) @@ -633,6 +633,7 @@ # v.outlier v.outlier|soe:ew_step v.outlier|son:ns_step +v.outlier|lambda_i:lambda v.outlier|thres_o:threshold # v.qcount v.qcount|n:nquadrats From svn_grass at osgeo.org Wed Sep 16 06:54:12 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Wed, 16 Sep 2015 06:54:12 -0700 Subject: [GRASS-SVN] r66239 - grass/branches/releasebranch_7_0/lib/gis Message-ID: <20150916135412.EAD183900A3@trac.osgeo.org> Author: wenzeslaus Date: 2015-09-16 06:54:12 -0700 (Wed, 16 Sep 2015) New Revision: 66239 Modified: grass/branches/releasebranch_7_0/lib/gis/renamed_options Log: v.outlier: add 6.4 compatibility (backport r66238) Modified: grass/branches/releasebranch_7_0/lib/gis/renamed_options =================================================================== --- grass/branches/releasebranch_7_0/lib/gis/renamed_options 2015-09-16 13:50:59 UTC (rev 66238) +++ grass/branches/releasebranch_7_0/lib/gis/renamed_options 2015-09-16 13:54:12 UTC (rev 66239) @@ -619,6 +619,7 @@ # v.outlier v.outlier|soe:ew_step v.outlier|son:ns_step +v.outlier|lambda_i:lambda v.outlier|thres_o:threshold # v.qcount v.qcount|n:nquadrats From svn_grass at osgeo.org Wed Sep 16 06:58:52 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Wed, 16 Sep 2015 06:58:52 -0700 Subject: [GRASS-SVN] r66240 - grass-addons/grass7/vector/v.lidar.mcc Message-ID: <20150916135852.85C143900A3@trac.osgeo.org> Author: wenzeslaus Date: 2015-09-16 06:58:52 -0700 (Wed, 16 Sep 2015) New Revision: 66240 Modified: grass-addons/grass7/vector/v.lidar.mcc/v.lidar.mcc.py Log: v.lidar.mcc: show stderr of subrocesses when debugging Modified: grass-addons/grass7/vector/v.lidar.mcc/v.lidar.mcc.py =================================================================== --- grass-addons/grass7/vector/v.lidar.mcc/v.lidar.mcc.py 2015-09-16 13:54:12 UTC (rev 66239) +++ grass-addons/grass7/vector/v.lidar.mcc/v.lidar.mcc.py 2015-09-16 13:58:52 UTC (rev 66240) @@ -108,7 +108,14 @@ def main(): global temp_ng, temp_ncin, temp_ncout - nuldev = file(os.devnull, 'w') + # we discard stderrs when not debugging + # ideally stderrs should be printed when an exception was raised + # this would be done easily with StringIO + # but it doesn't work with subprocess + if not grass.debug_level(): + nuldev = file(os.devnull, 'w') + else: + nuldev = sys.stderr # Initalise temporary verctor map names temp_ng = "v_lidar_mcc_tmp_ng_" + str(os.getpid()) From svn_grass at osgeo.org Wed Sep 16 07:01:05 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Wed, 16 Sep 2015 07:01:05 -0700 Subject: [GRASS-SVN] r66241 - grass-addons/grass7/vector/v.lidar.mcc Message-ID: <20150916140105.E97563900A3@trac.osgeo.org> Author: wenzeslaus Date: 2015-09-16 07:01:05 -0700 (Wed, 16 Sep 2015) New Revision: 66241 Modified: grass-addons/grass7/vector/v.lidar.mcc/v.lidar.mcc.py Log: v.lidar.mcc: v.patch requires topology before merging Modified: grass-addons/grass7/vector/v.lidar.mcc/v.lidar.mcc.py =================================================================== --- grass-addons/grass7/vector/v.lidar.mcc/v.lidar.mcc.py 2015-09-16 13:58:52 UTC (rev 66240) +++ grass-addons/grass7/vector/v.lidar.mcc/v.lidar.mcc.py 2015-09-16 14:01:05 UTC (rev 66241) @@ -227,6 +227,7 @@ # Set convergence level if ( nc > 0 ) : convergence = float( float(ng) / float(nc) ) + grass.run_command('v.build', map=temp_ng, stderr=nuldev) # Patch non-ground points to non-ground output map grass.run_command("v.patch", input = temp_ng, output = ng_output, flags = "ab", overwrite = True, quiet = True, stderr = nuldev ) else : From svn_grass at osgeo.org Wed Sep 16 07:12:53 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Wed, 16 Sep 2015 07:12:53 -0700 Subject: [GRASS-SVN] r66242 - grass-addons/grass7/vector/v.lidar.mcc Message-ID: <20150916141253.EE7223900A3@trac.osgeo.org> Author: wenzeslaus Date: 2015-09-16 07:12:53 -0700 (Wed, 16 Sep 2015) New Revision: 66242 Modified: grass-addons/grass7/vector/v.lidar.mcc/v.lidar.mcc.py Log: v.lidar.mcc: copy instead of merging into an empty vector When vector map is created with v.edit it is empty and 2D. Merging 3D vector map into the empty one using v.patch produces 2D vector map and a warning. Now both ground and also non-ground vetor maps are 3D. The price is one if in the main code - the inner loop (negligible here). Modified: grass-addons/grass7/vector/v.lidar.mcc/v.lidar.mcc.py =================================================================== --- grass-addons/grass7/vector/v.lidar.mcc/v.lidar.mcc.py 2015-09-16 14:01:05 UTC (rev 66241) +++ grass-addons/grass7/vector/v.lidar.mcc/v.lidar.mcc.py 2015-09-16 14:12:53 UTC (rev 66242) @@ -182,10 +182,10 @@ # Pass ame of input map to v.outlier nc_points = input - - # Create output map for non-ground points - grass.run_command("v.edit", tool="create", map=ng_output, quiet = True ) + # controls first creation of the output map before patching + ng_output_exists = False + # Loop through scale domaines while ( l <= l_stop ) : i = 1 @@ -229,7 +229,12 @@ convergence = float( float(ng) / float(nc) ) grass.run_command('v.build', map=temp_ng, stderr=nuldev) # Patch non-ground points to non-ground output map - grass.run_command("v.patch", input = temp_ng, output = ng_output, flags = "ab", overwrite = True, quiet = True, stderr = nuldev ) + if ng_output_exists: + grass.run_command('v.patch', input=temp_ng, output=ng_output, flags="ab", + overwrite=True, quiet=True, stderr=nuldev) + else: + grass.run_command('g.copy', vector=(temp_ng, ng_output), stderr=nuldev) + ng_output_exists = True else : convergence = 0 # Give information on convergence level From svn_grass at osgeo.org Wed Sep 16 07:58:00 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Wed, 16 Sep 2015 07:58:00 -0700 Subject: [GRASS-SVN] r66243 - grass-addons/grass7/vector/v.lidar.mcc Message-ID: <20150916145800.8413B3900A3@trac.osgeo.org> Author: wenzeslaus Date: 2015-09-16 07:58:00 -0700 (Wed, 16 Sep 2015) New Revision: 66243 Modified: grass-addons/grass7/vector/v.lidar.mcc/v.lidar.mcc.py Log: v.lidar.mcc: use descriptive names for main options Modified: grass-addons/grass7/vector/v.lidar.mcc/v.lidar.mcc.py =================================================================== --- grass-addons/grass7/vector/v.lidar.mcc/v.lidar.mcc.py 2015-09-16 14:12:53 UTC (rev 66242) +++ grass-addons/grass7/vector/v.lidar.mcc/v.lidar.mcc.py 2015-09-16 14:58:00 UTC (rev 66243) @@ -29,13 +29,13 @@ #% required: yes #%end #%option G_OPT_V_OUTPUT -#% key: g_output +#% key: ground #% label: Output ground return points #% description: Output vector point map containing points classified as ground return. #% required: yes #%end #%option G_OPT_V_OUTPUT -#% key: ng_output +#% key: nonground #% label: Output non-ground return points #% description: Output vector point map containing points NOT classified as ground return. #% required: yes From svn_grass at osgeo.org Wed Sep 16 08:08:48 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Wed, 16 Sep 2015 08:08:48 -0700 Subject: [GRASS-SVN] r66244 - grass-addons/grass7/vector/v.lidar.mcc Message-ID: <20150916150848.16BF53900A3@trac.osgeo.org> Author: wenzeslaus Date: 2015-09-16 08:08:48 -0700 (Wed, 16 Sep 2015) New Revision: 66244 Added: grass-addons/grass7/vector/v.lidar.mcc/v_lidar_mcc.png Modified: grass-addons/grass7/vector/v.lidar.mcc/v.lidar.mcc.html Log: v.lidar.mcc: NC SECREF example and 3D image using LAS Modified: grass-addons/grass7/vector/v.lidar.mcc/v.lidar.mcc.html =================================================================== --- grass-addons/grass7/vector/v.lidar.mcc/v.lidar.mcc.html 2015-09-16 14:58:00 UTC (rev 66243) +++ grass-addons/grass7/vector/v.lidar.mcc/v.lidar.mcc.html 2015-09-16 15:08:48 UTC (rev 66244) @@ -45,8 +45,43 @@

      EXAMPLES

      -TBD +Classifying ground points in a LIDAR point cloud: +
      +# region settings (using an existing raster)
      +g.region raster=elev_lid792_1m
      +
      +# import
      +v.in.lidar -tr input=points.las output=points
      +
      +# classification
      +v.lidar.mcc points ground=ground_points nonground=non_ground_points
      +
      + +
      + +

      Figure: Ground points (green) and non ground points (red)

      +
      + +

      SEE ALSO

      Added: grass-addons/grass7/vector/v.lidar.mcc/v_lidar_mcc.png =================================================================== (Binary files differ) Property changes on: grass-addons/grass7/vector/v.lidar.mcc/v_lidar_mcc.png ___________________________________________________________________ Added: svn:mime-type + image/png From svn_grass at osgeo.org Wed Sep 16 08:32:56 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Wed, 16 Sep 2015 08:32:56 -0700 Subject: [GRASS-SVN] r66245 - grass-addons/grass7/vector/v.lidar.mcc Message-ID: <20150916153256.99F223900A3@trac.osgeo.org> Author: wenzeslaus Date: 2015-09-16 08:32:56 -0700 (Wed, 16 Sep 2015) New Revision: 66245 Modified: grass-addons/grass7/vector/v.lidar.mcc/v.lidar.mcc.py Log: v.lidar.mcc: complete rename from r66243 Modified: grass-addons/grass7/vector/v.lidar.mcc/v.lidar.mcc.py =================================================================== --- grass-addons/grass7/vector/v.lidar.mcc/v.lidar.mcc.py 2015-09-16 15:08:48 UTC (rev 66244) +++ grass-addons/grass7/vector/v.lidar.mcc/v.lidar.mcc.py 2015-09-16 15:32:56 UTC (rev 66245) @@ -123,8 +123,8 @@ temp_ncout = "v_lidar_mcc_tmp_ncout_" + str(os.getpid()) input = options['input'] - g_output = options['g_output'] - ng_output = options['ng_output'] + g_output = options['ground'] + ng_output = options['nonground'] # does map exist? if not grass.find_file(input, element = 'vector')['file']: From svn_grass at osgeo.org Wed Sep 16 08:36:50 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Wed, 16 Sep 2015 08:36:50 -0700 Subject: [GRASS-SVN] r66246 - grass-addons/grass7/vector/v.lidar.mcc Message-ID: <20150916153650.F37003900A3@trac.osgeo.org> Author: wenzeslaus Date: 2015-09-16 08:36:50 -0700 (Wed, 16 Sep 2015) New Revision: 66246 Modified: grass-addons/grass7/vector/v.lidar.mcc/v.lidar.mcc.py Log: v.lidar.mcc: use G7 option names for v.outlier Also change formatting to PEP8 for these two lines. Modified: grass-addons/grass7/vector/v.lidar.mcc/v.lidar.mcc.py =================================================================== --- grass-addons/grass7/vector/v.lidar.mcc/v.lidar.mcc.py 2015-09-16 15:32:56 UTC (rev 66245) +++ grass-addons/grass7/vector/v.lidar.mcc/v.lidar.mcc.py 2015-09-16 15:36:50 UTC (rev 66246) @@ -210,9 +210,17 @@ grass.verbose("Number of input points in iteration " + str(i) + ": " + str(n_input) ) # Run v.outlier if flag_n == False : - grass.run_command("v.outlier", input = nc_points, output = temp_ncout, outlier=temp_ng, ew_step=xs_s, ns_step=ys_s, lambda_i=f, thres_o=t, filter="positive", overwrite = True, quiet = True, stderr = nuldev ) + grass.run_command('v.outlier', + input=nc_points, output=temp_ncout, outlier=temp_ng, + ew_step=xs_s, ns_step=ys_s, lambda_=f, threshold=t, + filter='positive', + overwrite=True, quiet=True, stderr=nuldev) else : - grass.run_command("v.outlier", input = nc_points, output = temp_ncout, outlier=temp_ng, ew_step=xs_s, ns_step=ys_s, lambda_i=f, thres_o=t, filter="negative", overwrite = True, quiet = True, stderr = nuldev ) + grass.run_command('v.outlier', + input=nc_points, output=temp_ncout, outlier=temp_ng, + ew_step=xs_s, ns_step=ys_s, lambda_=f, threshold=t, + filter='negative', + overwrite=True, quiet=True, stderr=nuldev) # Get information about results for calculating convergence level ng=grass.vector_info(temp_ng)['points'] From svn_grass at osgeo.org Wed Sep 16 08:44:00 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Wed, 16 Sep 2015 08:44:00 -0700 Subject: [GRASS-SVN] r66247 - in grass/branches/releasebranch_7_0: . lib/gis lib/rst lib/rst/data lib/rst/interp_float lib/rst/qtree lib/vector/dglib Message-ID: <20150916154400.BE7503900B4@trac.osgeo.org> Author: neteler Date: 2015-09-16 08:44:00 -0700 (Wed, 16 Sep 2015) New Revision: 66247 Added: grass/branches/releasebranch_7_0/lib/rst/rstlib.dox Removed: grass/branches/releasebranch_7_0/lib/rst/data/DESCRIPTION.DATA grass/branches/releasebranch_7_0/lib/rst/interp_float/DESCRIPTION.INTERP grass/branches/releasebranch_7_0/lib/rst/qtree/DESCRIPTION.TREE Modified: grass/branches/releasebranch_7_0/grasslib.dox grass/branches/releasebranch_7_0/lib/gis/gislib.dox grass/branches/releasebranch_7_0/lib/rst/data/dataquad.c grass/branches/releasebranch_7_0/lib/rst/data/dataquad.h grass/branches/releasebranch_7_0/lib/rst/interp_float/func2d.c grass/branches/releasebranch_7_0/lib/rst/interp_float/init2d.c grass/branches/releasebranch_7_0/lib/rst/interp_float/input2d.c grass/branches/releasebranch_7_0/lib/rst/interp_float/interp2d.c grass/branches/releasebranch_7_0/lib/rst/interp_float/interpf.h grass/branches/releasebranch_7_0/lib/rst/interp_float/matrix.c grass/branches/releasebranch_7_0/lib/rst/interp_float/output2d.c grass/branches/releasebranch_7_0/lib/rst/interp_float/point2d.c grass/branches/releasebranch_7_0/lib/rst/interp_float/secpar2d.c grass/branches/releasebranch_7_0/lib/rst/interp_float/segmen2d.c grass/branches/releasebranch_7_0/lib/rst/interp_float/vinput2d.c grass/branches/releasebranch_7_0/lib/rst/interp_float/write2d.c grass/branches/releasebranch_7_0/lib/rst/qtree/qtree.c grass/branches/releasebranch_7_0/lib/rst/qtree/qtree.h grass/branches/releasebranch_7_0/lib/vector/dglib/dglib.dox Log: doxygen backports: trunk r66138,r66143,r66146,r66155 Modified: grass/branches/releasebranch_7_0/grasslib.dox =================================================================== --- grass/branches/releasebranch_7_0/grasslib.dox 2015-09-16 15:36:50 UTC (rev 66246) +++ grass/branches/releasebranch_7_0/grasslib.dox 2015-09-16 15:44:00 UTC (rev 66247) @@ -64,24 +64,24 @@ \subsection displaylibs Display Libraries and Drivers - - display: \ref displaylib (general displaylibrary) - - cairodriver: \ref cairodriver (cairo graphics driver) + - display: \ref displaylib (general display library) + - cairodriver: \ref cairodriver - %driver: Graphics monitor driver - htmldriver: \ref htmldriverlib (HTML graphics driver) - - pngdriver: \ref pngdriverlib (PNG graphics driver) - - psdriver: \ref psdriverlib (Postscript graphics driver) + - pngdriver: \ref pngdriverlib + - psdriver: \ref psdriverlib -\subsection statslibs Math and Statisctics Libraries +\subsection statslibs Math and Statistics Libraries - arraystats: \ref arraystatslib (library of statistics for arrays of doubles) - - cdhc: \ref cdhclib (library for testing normality and exponentiality) + - cdhc: \ref cdhclib - gmath: \ref gmathlib (generic mathematical functions and BLAS/LAPACK library wrapper) - - gpde: \ref gpdelib (partial differential equations library) + - gpde: \ref gpdelib \subsection rasteribs Raster Libraries - raster: \ref rasterlib (2D raster library) - - raster3d: \ref raster3dlib (3D raster library - voxels) + - raster3d: \ref raster3dlib (3D raster aka voxels or volumes) - rowio: \ref rowiolib (library for reading/writing raster rows) - rst: \ref rstlib (library for interpolation with regularized splines with tension) - segment: \ref segmentlib (segment library for segmented raster reading) @@ -95,11 +95,17 @@ \subsection vectoribs Vector Libraries - %vector: \ref vectorlib (architecture description) - - dglib: \ref dglib (directed graph library) + - dglib: \ref dglib - vedit: \ref veditlib (vector editing library) - - neta: \ref netalib (network analysis library) - - rtree: \ref rtree (R search tree library) + - neta: \ref netalib + - rtree: \ref rtree.h (R search tree library) +\subsection treelibs Search tree libraries + + - btree: \ref btree.h + - btree2: \ref btree2 + - rtree: \ref rtree.h (R search tree library) + \subsection dblibs Database Management Libraries - db: \ref dbmilib @@ -117,14 +123,14 @@ - proj: \ref projlib (wrapper to PROJ4 projection library) -\subsection misclibs Misc Libraries +\subsection misclibs Miscellaneous Libraries - datetime: \ref datetime (DateTime library) - external: \ref external (External libraries from other projects such as shapelib and \ref ccmathlib) - fonts: \ref fonts (GRASS fonts library) - init: \ref init (GRASS initialization code + scripts) - iostream: \ref iostream (fast I/O library) - - lidar: \ref lidar (LiDAR data related library) + - lidar: \ref lidar.h (LiDAR data related library) - linkm: \ref linkm (linked list memory manager) - manage: \ref managelib - symbol: \ref symbol (Drawing symbols for %point %vector data library) Modified: grass/branches/releasebranch_7_0/lib/gis/gislib.dox =================================================================== --- grass/branches/releasebranch_7_0/lib/gis/gislib.dox 2015-09-16 15:36:50 UTC (rev 66246) +++ grass/branches/releasebranch_7_0/lib/gis/gislib.dox 2015-09-16 15:44:00 UTC (rev 66247) @@ -1,4 +1,4 @@ -/*! \page gislib GRASS GIS Library +/*! \page gislib GRASS GIS General Library (aka GIS Library) Deleted: grass/branches/releasebranch_7_0/lib/rst/data/DESCRIPTION.DATA =================================================================== --- grass/branches/releasebranch_7_0/lib/rst/data/DESCRIPTION.DATA 2015-09-16 15:36:50 UTC (rev 66246) +++ grass/branches/releasebranch_7_0/lib/rst/data/DESCRIPTION.DATA 2015-09-16 15:44:00 UTC (rev 66247) @@ -1,135 +0,0 @@ -/* updated by Mitasova Nov. 96 */ - -DATA STRUCTURES: ----------------- - -#define NW 1 -#define NE 2 -#define SW 3 -#define SE 4 - -/* added sm for spatially variable smoothing by Mitasova 10.96 */ -struct triple { - double x; - double y; - double z; - double sm; -}; - -struct quaddata { - double x_orig; - double y_orig; - double xmax; - double ymax; - int n_rows; - int n_cols; - int n_points; - struct triple *points; -}; - - - - -FUNCTIONS: ----------- - -struct triple * -quad_point_new (x, y, z, sm) - double x; - double y; - double z; - double sm; -/* Initializes POINT structure with given arguments, -s was added for variable smoothing 10.96 helena */ - - - - -struct quaddata * -quad_data_new(x_or,y_or,xmax,ymax,rows,cols,n_points,kmax) - double x_or; - double y_or; - double xmax; - double ymax; - int rows; - int cols; - int n_points; -/* Initializes QUADDATA structure with given arguments*/ - - - - - - -int -quad_compare (point, data) - struct triple *point; - struct quaddata *data; -/* returns the quadrant the point should be inserted in */ -/* called by divide() */ - - - - - - -int -quad_add_data (point, data, dmin) - struct triple *point; - struct quaddata *data; - double dmin; -/* Adds POINT to a given DATA . Called by tree function insert_quad() */ -/* and by data function quad_divide_data() */ - - - - - - -int -quad_intersect (data_inter, data) - struct quaddata *data_inter; - struct quaddata *data; -/* Checks if region defined by DATA intersects the region defined - by data_inter. Called by tree function MT_region_data() */ - - - - - -int quad_division_check(data,kmax) - struct quaddata *data; - int kmax; -/* Checks if DATA needs to be divided. If data->points is empty, - returns -1; if its not empty but there aren't enough points - in DATA for division returns 0. Othervise (if its not empty and - there are too many points) returns 1. Called by MT_insert() */ - - - - - - -struct quaddata **quad_divide_data(data,kmax,dmin) - struct quaddata *data; - int kmax; - double dmin; -/* Divides DATA into 4 new datas reinserting data->points in - them by calling data function quad_compare() to detrmine - were to insert. Called by MT_divide(). Returns array of 4 new datas */ - - - - - - - -int quad_get_points(data_inter,data,MAX) - struct quaddata *data_inter; - struct quaddata *data; - int MAX; -/* Gets such points from DATA that lie within region determined by - data_inter. Called by tree function region_data(). */ - - - Modified: grass/branches/releasebranch_7_0/lib/rst/data/dataquad.c =================================================================== --- grass/branches/releasebranch_7_0/lib/rst/data/dataquad.c 2015-09-16 15:36:50 UTC (rev 66246) +++ grass/branches/releasebranch_7_0/lib/rst/data/dataquad.c 2015-09-16 15:44:00 UTC (rev 66247) @@ -1,22 +1,41 @@ - -/*- - * Written by H. Mitasova, I. Kosinovsky, D. Gerdes Fall 1993 - * University of Illinois - * US Army Construction Engineering Research Lab - * Copyright 1993, H. Mitasova (University of Illinois), - * I. Kosinovsky, (USA-CERL), and D.Gerdes (USA-CERL) +/*! + * \file qtree.c * - * Modified by H.Mitasova November 1996 to include variable smoothing - * + * \author + * H. Mitasova, I. Kosinovsky, D. Gerdes, Fall 1993, + * University of Illinois and + * US Army Construction Engineering Research Lab + * + * \author H. Mitasova (University of Illinois), + * \author I. Kosinovsky, (USA-CERL) + * \author D.Gerdes (USA-CERL) + * + * \author modified by H. Mitasova, November 1996 (include variable smoothing) + * + * \copyright + * (C) 1993-1996 by Helena Mitasova and the GRASS Development Team + * + * \copyright + * This program is free software under the + * GNU General Public License (>=v2). + * Read the file COPYING that comes with GRASS for details. */ + #include #include #include -/* sm added to point structure */ + +/*! + * Initialize point structure with given arguments + * + * This is a constructor of the point structure and it allocates memory. + * + * \note + * Smoothing is part of the point structure + */ struct triple *quad_point_new(double x, double y, double z, double sm) -/* Initializes POINT structure with given arguments */ { struct triple *point; @@ -33,10 +52,16 @@ } +/*! + * Initialize quaddata structure with given arguments + * + * This is a constructor of the quaddata structure and it allocates memory. + * It also creates (and allocates memory for) the given number of points + * (given by *kmax*). The point attributes are set to zero. + */ struct quaddata *quad_data_new(double x_or, double y_or, double xmax, double ymax, int rows, int cols, int n_points, int kmax) -/* Initializes QUADDATA structure with given arguments */ { struct quaddata *data; int i; @@ -67,12 +92,10 @@ } - - - +/*! + * Return the quadrant the point should be inserted in + */ int quad_compare(struct triple *point, struct quaddata *data) -/* returns the quadrant the point should be inserted in */ -/* called by divide() */ { int cond1, cond2, cond3, cond4, rows, cols; double ew_res, ns_res; @@ -114,9 +137,10 @@ } +/*! + * Add point to a given *data*. + */ int quad_add_data(struct triple *point, struct quaddata *data, double dmin) -/* Adds POINT to a given DATA . Called by tree function insert_quad() */ -/* and by data function quad_divide_data() */ { int n, i, cond; double xx, yy, r; @@ -147,11 +171,13 @@ } - - +/*! + * Check intersection of two quaddata structures + * + * Checks if region defined by *data* intersects the region defined + * by *data_inter*. + */ int quad_intersect(struct quaddata *data_inter, struct quaddata *data) -/* Checks if region defined by DATA intersects the region defined - by data_inter. Called by tree function MT_region_data() */ { double xmin, xmax, ymin, ymax; @@ -178,13 +204,19 @@ } - - +/*! + * Check if *data* needs to be divided + * + * Checks if *data* needs to be divided. If `data->points` is empty, + * returns -1; if its not empty but there aren't enough points + * in *data* for division returns 0. Otherwise (if its not empty and + * there are too many points) returns 1. + * + * \returns 1 if division is needed + * \returns 0 if division is not needed + * \returns -1 if there are no points + */ int quad_division_check(struct quaddata *data, int kmax) -/* Checks if DATA needs to be divided. If data->points is empty, - returns -1; if its not empty but there aren't enough points - in DATA for division returns 0. Othervise (if its not empty and - there are too many points) returns 1. Called by MT_insert() */ { if (data->points == NULL) return -1; @@ -195,12 +227,15 @@ } - +/*! + * Divide *data* into four new ones + * + * Divides *data* into 4 new datas reinserting `data->points` in + * them by calling data function `quad_compare()` to determine + * were to insert. Returns array of 4 new datas (allocates memory). + */ struct quaddata **quad_divide_data(struct quaddata *data, int kmax, double dmin) -/* Divides DATA into 4 new datas reinserting data->points in - them by calling data function quad_compare() to detrmine - were to insert. Called by MT_divide(). Returns array of 4 new datas */ { struct quaddata **datas; int cols1, cols2, rows1, rows2, i; /*j1, j2, jmin = 0; */ @@ -280,12 +315,12 @@ } - - +/*! + * Gets such points from *data* that lie within region determined by + * *data_inter*. Called by tree function `region_data()`. + */ int quad_get_points(struct quaddata *data_inter, struct quaddata *data, int MAX) -/* Gets such points from DATA that lie within region determined by - data_inter. Called by tree function region_data(). */ { int i, ind; int n = 0; Modified: grass/branches/releasebranch_7_0/lib/rst/data/dataquad.h =================================================================== --- grass/branches/releasebranch_7_0/lib/rst/data/dataquad.h 2015-09-16 15:36:50 UTC (rev 66246) +++ grass/branches/releasebranch_7_0/lib/rst/data/dataquad.h 2015-09-16 15:44:00 UTC (rev 66247) @@ -1,12 +1,24 @@ - -/*- - * Written by H. Mitasova, I. Kosinovsky, D. Gerdes Fall 1992 - * University of Illinois - * US Army Construction Engineering Research Lab - * Copyright 1992, H. Mitasova (University of Illinois), - * I. Kosinovsky, (USA-CERL), and D.Gerdes (USA-CERL) +/*! + * \file qtree.c * - * Modified by H.Mitasova November 1996 to include variable smoothing + * \author + * H. Mitasova, I. Kosinovsky, D. Gerdes, Fall 1993, + * University of Illinois and + * US Army Construction Engineering Research Lab + * + * \author H. Mitasova (University of Illinois), + * \author I. Kosinovsky, (USA-CERL) + * \author D.Gerdes (USA-CERL) + * + * \author modified by H. Mitasova, November 1996 (include variable smoothing) + * + * \copyright + * (C) 1993-1996 by Helena Mitasova and the GRASS Development Team + * + * \copyright + * This program is free software under the + * GNU General Public License (>=v2). + * Read the file COPYING that comes with GRASS for details. */ @@ -19,12 +31,18 @@ #define SW 3 #define SE 4 + +/*! + * Point structure to keep coordinates + * + * It also contains smoothing for the given point. + */ struct triple { double x; double y; double z; - double sm; /* structure extended to incl. variable smoothing */ + double sm; /*!< variable smoothing */ }; struct quaddata Deleted: grass/branches/releasebranch_7_0/lib/rst/interp_float/DESCRIPTION.INTERP =================================================================== --- grass/branches/releasebranch_7_0/lib/rst/interp_float/DESCRIPTION.INTERP 2015-09-16 15:36:50 UTC (rev 66246) +++ grass/branches/releasebranch_7_0/lib/rst/interp_float/DESCRIPTION.INTERP 2015-09-16 15:44:00 UTC (rev 66247) @@ -1,318 +0,0 @@ - DESCRIPTION OF INTERPOLATION LIBRARY - - written by Irina Kosinovsky 1993 - updated by Mitasova Nov. 96 - NEEDS UPDATE FOR spatially variable smoothing and other changes - done by Helena in 1997 - -Note by Irina in 1993: Below is the collection of functions -needed for interpolation programs. It should be -divided into several libraries to provide better -functionality. - - -DATA STRUCTURES: ----------------- - -struct interp_params -{ - double zmult; /* multiplier for z-values */ - FILE *fdinp; /* input stream */ - int kmin; /* min number of points per segment for interpolation */ - int kmax; /* max number of points per segment */ - char *maskmap; /* name of mask */ - int nsizr,nsizc; /* number of rows and columns */ - double *az,*adx,*ady,*adxx,*adyy,*adxy; /* array for interpolated values */ - double fi; /* tension */ - int KMAX2; /* max num. of points for interp.*/ - int scik1,scik2,scik3; /* multipliers for interp. values*/ - double rsm; /* smoothing, for rsm<0 use variable smooth from sites */ - char *elev,*slope,*aspect,*pcurv,*tcurv,*mcurv; /* output files */ - double dmin; /* min distance between points */ - double x_orig, y_orig; /* origin */ - int deriv; /* 1 if compute partial derivs */ - FILE *Tmp_fd_z,*Tmp_fd_dx,*Tmp_fd_dy, /* temp files for writing interp.*/ - *Tmp_fd_xx,*Tmp_fd_yy,*Tmp_fd_xy; /* values */ - FILE *fddevi; /* pointer to deviations file */ - - int (*grid_calc) (); /*calculates grid for given segm*/ - int (*matrix_create) (); /*creates matrix for a given segm*/ - int (*check_points) (); /*checks interp. func. at points */ - int (*secpar) (); /* calculates aspect,slope,curv. */ - double (*interp) (); /* radial basis function */ - int (*interpder) (); /* derivatives of radial basis function */ - int (*wr_temp) (); /* writes temp files */ - int c, /* cross validation */ - char *wheresql /* SQL WHERE */ -}; - - -FUNCTIONS: ----------- - -void -IL_init_params_2d(params,inp,zm,k1,k2,msk,rows,cols,ar1,ar2,ar3,ar4,ar5,ar6, - tension,k3,sc1,sc2,sc3,sm,f1,f2,f3,f4,f5,f6,dm,x_or,y_or, - der,t1,t2,t3,t4,t5,t6,dev) - - struct interp_params *params; - FILE *inp; /* input stream */ - double zm; /* multiplier for z-values */ - int k1; /* min number of points per segment for interpolation */ - int k2; /* max number of points per segment */ - char *msk; /* name of mask */ - int rows,cols; /* number of rows and columns */ - double *ar1,*ar2,*ar3,*ar4,*ar5,*ar6; /* arrays for interpolated values */ - double tension; /* tension */ - int k3; /* max num. of points for interp.*/ - int sc1,sc2,sc3; /* multipliers for interp. values*/ - double sm; /* smoothing, if sm<0 take it from sites file input */ - char *f1,*f2,*f3,*f4,*f5,*f6; /*output files */ - double dm; /* min distance between points */ - double x_or, y_or; /* origin */ - int der; /* 1 if compute partial derivs */ - FILE *t1,*t2,*t3,*t4,*t5,*t6; /* temp files for writing interp. values */ - FILE *dev; /* pointer to deviations file */ - -Initializes parameters called by the library - - -void -IL_init_func_2d(params,grid_f,matr_f,point_f,secp_f,interp_f, - interpder_f,temp_f) - - struct interp_params *params; - int (*grid_f) (); /*calculates grid for given segm*/ - int (*matr_f) (); /*creates matrix for a given segm*/ - int (*point_f) (); /*checks interp. func. at points */ - int (*secp_f) (); /* calculates aspect,slope,curv. */ - double (*interp_f) (); /* radial basis function*/ - int (*interpder_f) (); /* derivatives of radial basis fucntion */ - int (*temp_f) (); /* writes temp files */ - -Initializes functions called by the library - - - - -double -IL_crst (r,fi) - double r; /* distance squared*/ - double fi; /* tension */ - -Radial basis function - regularized spline with tension (d=2) - - -int -IL_crstg (r, fi, gd1, gd2) - double r; /* distance squared*/ - double fi; /* tension */ - double *gd1; - double *gd2; - -Derivatives of radial basis function - regularized spline with tension(d=2) - - -int -IL_input_data_2d(params,info,xmin,xmax,ymin,ymax,zmin,zmax,MAXPOINTS,n_points) - struct interp_params *params; - struct tree_info *info; /* quadtree info */ - double *xmin,*xmax,*ymin,*ymax,*zmin,*zmax; - int maxpoints; /* max number of points per segment for interpolation */ - int *n_points; /* number of points used for interpolation */ - -Inserts input data inside the region into a quad tree. -Also translates data. -Returns number of segments in the quad tree. - - - - -int IL_vector_input_data_2d(params,Map,dmax,cats,iselev,info,xmin, - xmax,ymin,ymax,zmin,zmax,n_points) - - struct interp_params *params; - struct Map_info *Map; /* input vector file */ - double dmax; /* max distance between points */ - struct Categories *cats; /* Cats file */ - int iselev; /* do zeroes represent elevation? */ - struct tree_info *info; /* quadtree info */ - double *xmin,*xmax,*ymin,*ymax,*zmin,*zmax; - int *n_points; /* number of points used for interpolation */ - -Inserts input data inside the region into a quad tree. -Also translates data. -Returns number of segments in the quad tree. - - - - - - - -struct BM * -IL_create_bitmask(params) - struct interp_params *params; - -Creates a bitmap mask from maskmap raster file and/or current MASK if -present and returns a pointer to the bitmask. If no mask is in force returns -NULL. - - - -int -IL_grid_calc_2d(params,data,bitmask,zmin,zmax,zminac,zmaxac,gmin,gmax, - c1min,c1max,c2min,c2max,ertot,b,offset1) - struct interp_params *params; - struct quaddata *data; /* given segment */ - struct BM *bitmask; /* bitmask */ - double zmin,zmax; /* min and max input z-values */ - double *zminac,*zmaxac, /* min and max interp. z-values */ - *gmin,*gmax, /* min and max inperp. slope val.*/ - *c1min,*c1max,*c2min,*c2max; /* min and max interp. curv. val.*/ - double *ertot; /* rms deviation of the interpolated surface */ - double *b; /* solutions of linear equations */ - int offset1; /* offset for temp file writing */ - -Calculates grid for the given segment represented by data (contains n_rows, -n_cols, ew_res,ns_res, and all points inside + overlap) using solutions of -system of lin. equations and interpolating functions interp() and interpder(). -Also calls secpar() to compute slope, aspect and curvatures if required. - - - - -int -IL_matrix_create(params,points,n_points,matrix,indx) - struct interp_params *params; - struct triple *points; /* points for interpolation */ - int n_points; /* number of points */ - double **matrix; /* matrix */ - int *indx; - -Creates system of linear equations represented by matrix using given points -and interpolating function interp() - - - - - -int -IL_check_at_points_2d (params,n_points,points,b,ertot,zmin) - struct interp_params *params; - int n_points; /* number of points */ - struct triple *points; /* points for interpolation */ - double *b; /* solution of linear equations */ - double *ertot; /* rms deviation of the interpolated surface */ - double zmin; /* min z-value */ - -Checks if interpolating function interp() evaluates correct z-values at given -points. If smoothing is used calculate the maximum and rms deviation caused by smoothing. - - - - - - -int -IL_secpar_loop_2d(params,ngstc,nszc,k,bitmask,gmin,gmax,c1min,c1max,c2min, - c2max,cond1,cond2) - struct interp_params *params; - int ngstc; /* starting column */ - int nszc; /* ending column */ - int k; /* current row */ - struct BM *bitmask; - double *gmin,*gmax,*c1min,*c1max,*c2min,*c2max; /* min,max interp. values */ - int cond1,cond2; /*determine if particular values need to be computed*/ - -Computes slope, aspect and curvatures (depending on cond1, cond2) for derivative -arrays adx,...,adxy between columns ngstc and nszc. - - - -int -IL_write_temp_2d(params,ngstc,nszc,offset2) - struct interp_params *params; - int ngstc,nszc,offset2; /* begin. and end. column, offset */ - -Writes az,adx,...,adxy into appropriate place (depending on ngstc, nszc and -offset) in corresponding temp file */ - - - - -int -IL_interp_segments_2d (params,info,tree,bitmask,zmin,zmax,zminac,zmaxac, - gmin,gmax,c1min,c1max,c2min,c2max,ertot,totsegm,offset1,dnorm) - struct interp_params *params; - struct tree_info *info; /* info for the quad tree */ - struct multtree *tree; /* current leaf of the quad tree */ - struct BM *bitmask; /* bitmask */ - double zmin,zmax; /* min and max input z-values */ - double *zminac,*zmaxac, /* min and max interp. z-values */ - *gmin,*gmax, /* min and max inperp. slope val.*/ - *c1min,*c1max,*c2min,*c2max; /* min and max interp. curv. val.*/ - double *ertot; /* rms deviation of the interpolated surface*/ - int totsegm; /* total number of segments */ - int offset1; /* offset for temp file writing */ - double dnorm; /* normalization factor */ - -Recursively processes each segment in a tree by - a) finding points from neighbouring segments so that the total number of - points is between KMIN and KMAX2 by calling tree function MT_get_region(). - b) creating and solving the system of linear equations using these points - and interp() by calling matrix_create() and G_ludcmp(). - c) checking the interpolated values at given points by calling - check_points(). - d) computing grid for this segment using points and interp() by calling - grid_calc(). - -int -IL_interp_segments_new_2d (params,info,tree,bitmask, - zmin,zmax,zminac,zmaxac,gmin,gmax,c1min,c1max, - c2min,c2max,ertot,totsegm,offset1,dnorm) - - struct interp_params *params; - struct tree_info *info; /* info for the quad tree */ - struct multtree *tree; /* current leaf of the quad tree */ - struct BM *bitmask; /* bitmask */ - double zmin,zmax; /* min and max input z-values */ - double *zminac,*zmaxac, /* min and max interp. z-values */ - *gmin,*gmax, /* min and max inperp. slope val.*/ - *c1min,*c1max,*c2min,*c2max; /* min and max interp. curv. val.*/ - double *ertot; /* rms deviation of the interpolated surface*/ - int totsegm; /* total number of segments */ - int offset1; /* offset for temp file writing */ - double dnorm; /* normalization factor */ - -The difference between this function and IL_interp_segments_2d() is making -sure that additional points are taken from all directions, i.e. it finds -equal number of points from neigbouring segments in each of 8 neigbourhoods. - -Recursively processes each segment in a tree by - a) finding points from neighbouring segments so that the total number of - points is between KMIN and KMAX2 by calling tree function MT_get_region(). - b) creating and solving the system of linear equations using these points - and interp() by calling matrix_create() and G_ludcmp(). - c) checking the interpolated function values at points by calling - check_points(). - d) computing grid for this segment using points and interp() by calling - grid_calc(). - - - -int -IL_output_2d (params,cellhd,zmin,zmax,zminac,zmaxac,c1min,c1max,c2min,c2max, - gmin,gmax,ertot,dnorm) - struct interp_params *params; - struct Cell_head *cellhd; /* current region */ - double zmin,zmax, /* min,max input z-values */ - zminac,zmaxac,c1min,c1max, /* min,max interpolated values */ - c2min,c2max,gmin,gmax; - double *ertot; /* rms deviation of the interpolated surface*/ - double dnorm; /* normalization factor */ - -Creates output files as well as history files and color tables for them. - - - Modified: grass/branches/releasebranch_7_0/lib/rst/interp_float/func2d.c =================================================================== --- grass/branches/releasebranch_7_0/lib/rst/interp_float/func2d.c 2015-09-16 15:36:50 UTC (rev 66246) +++ grass/branches/releasebranch_7_0/lib/rst/interp_float/func2d.c 2015-09-16 15:44:00 UTC (rev 66247) @@ -1,36 +1,53 @@ -/*- +/*! + * \file func2d.c + * + * \author + * Lubos Mitas (original program and various modifications) * - * Original program and various modifications: - * Lubos Mitas - * - * GRASS4.1 version of the program and GRASS4.2 modifications: + * \author * H. Mitasova, - * I. Kosinovsky, D. Gerdes - * D. McCauley + * I. Kosinovsky, D. Gerdes, + * D. McCauley + * (GRASS4.1 version of the program and GRASS4.2 modifications) * - * Copyright 1993, 1995: + * \author * L. Mitas , * H. Mitasova , * I. Kosinovsky, * D.Gerdes - * D. McCauley + * D. McCauley (1993, 1995) * - * modified by McCauley in August 1995 - * modified by Mitasova in August 1995, Nov. 1996 + * \author modified by McCauley in August 1995 + * \author modified by Mitasova in August 1995, Nov. 1996 * + * \copyright + * (C) 1993-1999 by Lubos Mitas and the GRASS Development Team + * + * \copyright + * This program is free software under the + * GNU General Public License (>=v2). + * Read the file COPYING that comes with GRASS + * for details. */ + #include #include #include #include -double IL_crst(double r, double fi) -/* - * Radial basis function - completely regularized spline with - * tension (d=2) + +/* parameter description from DESCRIPTION.INTERP */ +/*! + * Radial basis function + * + * Radial basis function - completely regularized spline with tension (d=2) + * */ +double IL_crst(double r, /**< distance squared */ + double fi /**< tension */ + ) { double rfsta2 = fi * fi * r / 4.; @@ -81,15 +98,16 @@ } - -int IL_crstg(double r, double fi, double *gd1, /* G1(r) */ - double *gd2 /* G2(r) */ - ) - - -/* +/*! * Function for calculating derivatives (d=2) + * + * Derivatives of radial basis function - regularized spline with tension(d=2) */ +int IL_crstg(double r, /**< distance squared */ + double fi, /**< tension */ + double *gd1, /**< G1(r) */ + double *gd2 /**< G2(r) */ + ) { double r2 = r; double rfsta2 = fi * fi * r / 4.; Modified: grass/branches/releasebranch_7_0/lib/rst/interp_float/init2d.c =================================================================== --- grass/branches/releasebranch_7_0/lib/rst/interp_float/init2d.c 2015-09-16 15:36:50 UTC (rev 66246) +++ grass/branches/releasebranch_7_0/lib/rst/interp_float/init2d.c 2015-09-16 15:44:00 UTC (rev 66247) @@ -1,13 +1,23 @@ -/*- - * Written by H. Mitasova, I. Kosinovsky, D. Gerdes Fall 1993 - * Copyright 1993, H. Mitasova , - * I. Kosinovsky, and D.Gerdes +/*! + * \file init2d.c * - * modified by McCauley in August 1995 - * modified by Mitasova in August 1995 - * modified by Brown in June 1999 - added elatt & smatt + * \brief Initialization of interpolation library data structures * + * \author H. Mitasova, I. Kosinovsky, D. Gerdes Fall 1993 (original authors) + * \author modified by McCauley in August 1995 + * \author modified by Mitasova in August 1995 + * \author modified by Brown in June 1999 - added elatt & smatt + * + * \copyright + * (C) 1993-1999 by Helena Mitasova and the GRASS Development Team + * + * \copyright + * This program is free software under the + * GNU General Public License (>=v2). + * Read the file COPYING that comes with GRASS + * for details. + * */ #include @@ -16,41 +26,38 @@ #include #include -void IL_init_params_2d( - /* initialize parameters */ - struct interp_params *params, - FILE * inp, /* input stream */ - int elatt, /* which fp att in sites file? 1 = first */ - int smatt, /* which fp att in sites file to use for - * smoothing? (if zero use sm) 1 = first */ - double zm, /* multiplier for z-values */ - int k1, /* min number of points per segment for - * interpolation */ - int k2, /* max number of points per segment */ - char *msk, /* name of mask */ - int rows, int cols, /* number of rows and columns */ - DCELL * ar1, DCELL * ar2, - DCELL * ar3, DCELL * ar4, - DCELL * ar5, DCELL * ar6, /* arrays for interpolated values */ - double tension, /* tension */ - int k3, /* max num. of points for interp. */ - int sc1, int sc2, int sc3, /* multipliers for interp. values */ - double sm, /* smoothing */ - char *f1, char *f2, - char *f3, char *f4, - char *f5, char *f6, /* output files */ - double dm, /* min distance between points */ - double x_or, double y_or, /* origin */ - int der, /* 1 if compute partial derivs */ - double tet, /* anisotropy angle, 0=East,counter-clockwise */ - double scl, /* anisotropy scaling factor */ - FILE * t1, FILE * t2, - FILE * t3, FILE * t4, - FILE * t5, FILE * t6, /* temp files for writing interp. values */ - FILE * dev, /* pointer to deviations file */ - struct TimeStamp *ts, - int c, /* cross validation */ - const char *wheresql /* SQL WHERE */ + +/*! Initializes parameters used by the library */ +void IL_init_params_2d(struct interp_params *params, + FILE * inp, /*!< input stream */ + int elatt, /*!< which fp att in sites file? 1 = first */ + int smatt, /*!< which fp att in sites file to use for + * smoothing? (if zero use sm) 1 = first */ + double zm, /*!< multiplier for z-values */ + int k1, /*!< min number of points per segment for interpolation */ + int k2, /*!< max number of points per segment */ + char *msk, /*!< name of mask */ + int rows, int cols, /*!< number of rows and columns */ + DCELL * ar1, DCELL * ar2, DCELL * ar3, DCELL * ar4, DCELL * ar5, + DCELL * ar6, /*!< arrays for interpolated values (ar1-ar6) */ + double tension, /*!< tension */ + int k3, /*!< max number of points for interpolation */ + int sc1, int sc2, int sc3, /*!< multipliers for interpolation values */ + double sm, /*!< smoothing */ + char *f1, char *f2, char *f3, char *f4, char *f5, + char *f6, /*!< output files (f1-f6) */ + double dm, /*!< min distance between points */ + double x_or, /*!< x of origin */ + double y_or, /*!< y of origin */ + int der, /*!< 1 if compute partial derivatives */ + double tet, /*!< anisotropy angle (0 is East, counter-clockwise) */ + double scl, /*!< anisotropy scaling factor */ + FILE * t1, FILE * t2, FILE * t3, FILE * t4, FILE * t5, + FILE * t6, /*!< temp files for writing interp. values (t1-t6) */ + FILE * dev, /*!< pointer to deviations file */ + struct TimeStamp *ts, + int c, /*!< cross validation */ + const char *wheresql /*!< SQL WHERE statement */ ) { params->fdinp = inp; @@ -98,16 +105,16 @@ params->wheresql = wheresql; } +/*! Initializes functions used by the library */ void IL_init_func_2d(struct interp_params *params, - grid_calc_fn *grid_f, /* calculates grid for given segm */ - matrix_create_fn *matr_f, /* creates matrix for a given segm */ - check_points_fn *point_f, /* checks interp. func. at points */ - secpar_fn *secp_f, /* calculates aspect,slope,curv. */ - interp_fn *interp_f, /* radial basis function */ - interpder_fn *interpder_f, /* derivatives of radial basis func. */ - wr_temp_fn *temp_f /* writes temp files */ + grid_calc_fn * grid_f, /*!< calculates grid for given segment */ + matrix_create_fn * matr_f, /*!< creates matrix for a given segment */ + check_points_fn * point_f, /*!< checks interpolation function at points */ + secpar_fn * secp_f, /*!< calculates aspect, slope, curvature */ + interp_fn * interp_f, /*!< radial basis function */ + interpder_fn * interpder_f, /*!< derivatives of radial basis function */ + wr_temp_fn * temp_f /*!< writes temp files */ ) -/* initialize functions */ { params->grid_calc = grid_f; params->matrix_create = matr_f; @@ -118,5 +125,3 @@ params->wr_temp = temp_f; } - - Modified: grass/branches/releasebranch_7_0/lib/rst/interp_float/input2d.c =================================================================== --- grass/branches/releasebranch_7_0/lib/rst/interp_float/input2d.c 2015-09-16 15:36:50 UTC (rev 66246) +++ grass/branches/releasebranch_7_0/lib/rst/interp_float/input2d.c 2015-09-16 15:44:00 UTC (rev 66247) @@ -1,16 +1,20 @@ -/*- - * Written by H. Mitasova, I. Kosinovsky, D. Gerdes Fall 1993 - * University of Illinois - * US Army Construction Engineering Research Lab - * Copyright 1993, H. Mitasova (University of Illinois), - * I. Kosinovsky, (USA-CERL), and D.Gerdes (USA-CERL) +/*! + * \file input2d.c * - * modified by McCauley in August 1995 - * modified by Mitasova in August 1995 - * modified by Mitasova in November 1996 to include variable smoothing - * modified by Brown in June 1999 - added elatt & smatt + * \author H. Mitasova, I. Kosinovsky, D. Gerdes Fall 1993 (original authors) + * \author modified by McCauley in August 1995 + * \author modified by Mitasova in August 1995 + * \author modified by Brown in June 1999 - added elatt & smatt * + * \copyright + * (C) 1993-1999 by Helena Mitasova and the GRASS Development Team + * + * \copyright + * This program is free software under the + * GNU General Public License (>=v2). + * Read the file COPYING that comes with GRASS + * for details. */ @@ -25,9 +29,15 @@ #include #include + +/*! + * Creates a bitmap mask from given raster map + * + * Creates a bitmap mask from maskmap raster file and/or current MASK if + * present and returns a pointer to the bitmask. If no mask is in force + * returns NULL. + */ struct BM *IL_create_bitmask(struct interp_params *params) - -/** Creates a bitmap mask from given raster map **/ { int i, j, cfmask = -1, irev, MASKfd; const char *mapsetm; Modified: grass/branches/releasebranch_7_0/lib/rst/interp_float/interp2d.c =================================================================== --- grass/branches/releasebranch_7_0/lib/rst/interp_float/interp2d.c 2015-09-16 15:36:50 UTC (rev 66246) +++ grass/branches/releasebranch_7_0/lib/rst/interp_float/interp2d.c 2015-09-16 15:44:00 UTC (rev 66247) @@ -1,25 +1,38 @@ -/*- +/*! + * \file interp2d.c * - * Original program and various modifications: - * Lubos Mitas + * \author + * Lubos Mitas (original program and various modifications) * - * GRASS4.1 version of the program and GRASS4.2 modifications: + * \author * H. Mitasova, - * I. Kosinovsky, D. Gerdes - * D. McCauley + * I. Kosinovsky, D. Gerdes, + * D. McCauley + * (GRASS4.1 version of the program and GRASS4.2 modifications) * - * Copyright 1993, 1995: - * L. Mitas , + * \author + * L. Mitas, * H. Mitasova, * I. Kosinovsky, - * D.Gerdes + * D.Gerdes, * D. McCauley + * (1993, 1995) * - * modified by McCauley in August 1995 - * modified by Mitasova in August 1995, Nov. 1996 - * bug fixes(mask) and modif. for variable smoothing Mitasova Jan 1997 + * \author modified by McCauley in August 1995 + * \author modified by Mitasova in August 1995, Nov. 1996 + * \author + * bug fixes(mask) and modification for variable smoothing + * Mitasova (Jan 1997) * + * \copyright + * (C) 1993-1999 by Lubos Mitas and the GRASS Development Team + * + * \copyright + * This program is free software under the + * GNU General Public License (>=v2). + * Read the file COPYING that comes with GRASS + * for details. */ @@ -38,24 +51,29 @@ #define CEULER .57721566 -int IL_grid_calc_2d(struct interp_params *params, struct quaddata *data, /* given segment */ - struct BM *bitmask, /* bitmask */ - double zmin, double zmax, /* min and max input z-values */ - double *zminac, double *zmaxac, /* min and max interp. z-values */ - double *gmin, double *gmax, /* min and max inperp. slope val. */ - double *c1min, double *c1max, double *c2min, double *c2max, /* min and max interp. curv. val. */ - double *ertot, /* total interplating func. error */ - double *b, /* solutions of linear equations */ - off_t offset1, /* offset for temp file writing */ - double dnorm) - -/* +/*! + * Calculates grid values for a given segment + * * Calculates grid for the given segment represented by data (contains * n_rows, n_cols, ew_res,ns_res, and all points inside + overlap) using - * solutions of system of lin. equations and interpolating functions + * solutions of system of linear equations and interpolating functions * interp() and interpder(). Also calls secpar() to compute slope, aspect * and curvatures if required. + * + * *ertot* can be also called *RMS deviation of the interpolated surface* */ +int IL_grid_calc_2d(struct interp_params *params, + struct quaddata *data, /*!< given segment */ + struct BM *bitmask, /*!< bitmask */ + double zmin, double zmax, /*!< min and max input z-values */ + double *zminac, double *zmaxac, /*!< min and max interp. z-values */ + double *gmin, double *gmax, /*!< min and max interp. slope val. */ + double *c1min, double *c1max, /*!< min and max interp. curv. val. */ + double *c2min, double *c2max, /*!< min and max interp. curv. val. */ + double *ertot, /*!< total interpolating func. error */ + double *b, /*!< solutions of linear equations */ + off_t offset1, /*!< offset for temp file writing */ + double dnorm) { /* Modified: grass/branches/releasebranch_7_0/lib/rst/interp_float/interpf.h =================================================================== --- grass/branches/releasebranch_7_0/lib/rst/interp_float/interpf.h 2015-09-16 15:36:50 UTC (rev 66246) +++ grass/branches/releasebranch_7_0/lib/rst/interp_float/interpf.h 2015-09-16 15:44:00 UTC (rev 66247) @@ -67,41 +67,41 @@ struct interp_params { - double zmult; /* multiplier for z-values */ - FILE *fdinp; /* input stream */ - int elatt; /* which floating point attr to use? first = 1, second = 2, etc */ - int smatt; /* which floating point attr to use for smoothing? first = 1, second = 2, etc */ - int kmin; /* min number of points per segment for interpolation */ - int kmax; /* max number of points per segment */ - char *maskmap; /* name of mask */ - int nsizr, nsizc; /* number of rows and columns */ + double zmult; /**< multiplier for z-values */ + FILE *fdinp; /**< input stream */ + int elatt; /**< which floating point attr to use? first = 1, second = 2, etc */ + int smatt; /**< which floating point attr to use for smoothing? first = 1, second = 2, etc */ + int kmin; /**< min number of points per segment for interpolation */ + int kmax; /**< max number of points per segment */ + char *maskmap; /**< name of mask */ + int nsizr, nsizc; /**< number of rows and columns */ DCELL *az, *adx, *ady, - *adxx, *adyy, *adxy; /* array for interpolated values */ - double fi; /* tension */ - int KMAX2; /* max num. of points for interp. */ - int scik1, scik2, scik3; /* multipliers for interp. values */ - double rsm; /* smoothing */ + *adxx, *adyy, *adxy; /**< array for interpolated values */ + double fi; /**< tension */ + int KMAX2; /**< max num. of points for interp. */ + int scik1, scik2, scik3; /**< multipliers for interp. values */ + double rsm; /**< smoothing */ char *elev, *slope, *aspect, - *pcurv, *tcurv, *mcurv; /* output files */ - double dmin; /* min distance between points */ - double x_orig, y_orig; /* origin */ - int deriv, cv; /* 1 if compute partial derivs */ - double theta; /* anisotropy angle, 0=East,counter-clockwise */ - double scalex; /* anisotropy scaling factor */ - struct TimeStamp *ts; /* timestamp for raster files */ + *pcurv, *tcurv, *mcurv; /**< output files */ + double dmin; /**< min distance between points */ + double x_orig, y_orig; /**< origin */ + int deriv, cv; /**< 1 if compute partial derivs */ + double theta; /**< anisotropy angle, 0=East,counter-clockwise */ + double scalex; /**< anisotropy scaling factor */ + struct TimeStamp *ts; /**< timestamp for raster files */ FILE *Tmp_fd_z, *Tmp_fd_dx, *Tmp_fd_dy, *Tmp_fd_xx, - *Tmp_fd_yy, *Tmp_fd_xy; /* temp files for writing interp. values */ - FILE *fddevi; /* pointer to deviations file */ + *Tmp_fd_yy, *Tmp_fd_xy; /**< temp files for writing interp. values */ + FILE *fddevi; /**< pointer to deviations file */ - grid_calc_fn *grid_calc; /*calculates grid for given segm */ - matrix_create_fn *matrix_create; /*creates matrix for a given segm */ - check_points_fn *check_points; /*checks interp. func. at points */ - secpar_fn *secpar; /* calculates aspect,slope,curv. */ - interp_fn *interp; /* radial based interp. function */ - interpder_fn *interpder; /* interp. func. for derivatives */ - wr_temp_fn *wr_temp; /* writes temp files */ - const char *wheresql; /* SQL statement to select input points */ + grid_calc_fn *grid_calc; /**< calculates grid for given segm */ + matrix_create_fn *matrix_create; /**< creates matrix for a given segm */ + check_points_fn *check_points; /**< checks interp. func. at points */ + secpar_fn *secpar; /**< calculates aspect,slope,curv. */ + interp_fn *interp; /**< radial based interp. function */ + interpder_fn *interpder; /**< interp. func. for derivatives */ + wr_temp_fn *wr_temp; /**< writes temp files */ + const char *wheresql; /**< SQL statement to select input points */ }; /* distance.c */ Modified: grass/branches/releasebranch_7_0/lib/rst/interp_float/matrix.c =================================================================== --- grass/branches/releasebranch_7_0/lib/rst/interp_float/matrix.c 2015-09-16 15:36:50 UTC (rev 66246) +++ grass/branches/releasebranch_7_0/lib/rst/interp_float/matrix.c 2015-09-16 15:44:00 UTC (rev 66247) @@ -1,23 +1,33 @@ -/* - * Original program and various modifications: - * Lubos Mitas +/*! + * \author + * Lubos Mitas (original program and various modifications) * - * GRASS4.1 version of the program and GRASS4.2 modifications: + * \author * H. Mitasova, - * I. Kosinovsky, D. Gerdes - * D. McCauley + * I. Kosinovsky, D. Gerdes, + * D. McCauley + * (GRASS4.1 version of the program and GRASS4.2 modifications) * - * Copyright 1993, 1995: - * L. Mitas , - * H. Mitasova , + * \author + * L. Mitas, + * H. Mitasova, * I. Kosinovsky, - * D.Gerdes - * D. McCauley + * D.Gerdes, + * D. McCauley + * (1993, 1995) * - * modified by McCauley in August 1995 - * modified by Mitasova in August 1995, Nov. 1996 + * \author modified by McCauley in August 1995 + * \author modified by Mitasova in August 1995, Nov. 1996 + * + * \copyright + * (C) 1993-1996 by Lubos Mitas and the GRASS Development Team + * + * \copyright + * This program is free software under the GNU General Public License (>=v2). + * Read the file COPYING that comes with GRASS for details. */ + #include #include #include @@ -25,6 +35,7 @@ #include #include + /*! * \brief Creates system of linear equations from interpolated points * @@ -32,9 +43,10 @@ * points and interpolating function interp() * * \param params struct interp_params * - * \param points struct triple * : points for interpolation - * \param n_points int : number of points - * \param matrix double ** + * \param points points for interpolation as struct triple + * \param n_points number of points + * \param[out] matrix the matrix + * \param indx * * \return -1 on failure, 1 on success */ @@ -43,10 +55,6 @@ int n_points, /* number of points */ double **matrix, /* matrix */ int *indx) -/* - Creates system of linear equations represented by matrix using given points - and interpolating function interp() - */ { double xx, yy; double rfsta2, r; Modified: grass/branches/releasebranch_7_0/lib/rst/interp_float/output2d.c =================================================================== --- grass/branches/releasebranch_7_0/lib/rst/interp_float/output2d.c 2015-09-16 15:36:50 UTC (rev 66246) +++ grass/branches/releasebranch_7_0/lib/rst/interp_float/output2d.c 2015-09-16 15:44:00 UTC (rev 66247) @@ -1,18 +1,22 @@ - -/*- - * Written by H. Mitasova, I. Kosinovsky, D. Gerdes Summer 1992 - * Copyright 1992, H. Mitasova - * I. Kosinovsky, and D.Gerdes +/*! + * \file output2d.c * - * modified by McCauley in August 1995 - * modified by Mitasova in August 1995 - * modified by Mitasova in August 1999 (fix for elev color) - * modified by Brown in September 1999 (fix for Timestamps) - * Modified by Mitasova in Nov. 1999 (write given tension into hist) - * Last modification: 2006-12-13 + * \author H. Mitasova, I. Kosinovsky, D. Gerdesm, Summer 1992 (original authors) + * \author modified by McCauley in August 1995 + * \author modified by Mitasova in August 1995 + * \author modified by Mitasova in August 1999 (fix for elev color) + * \author modified by Brown in September 1999 (fix for Timestamps) + * \author modified by Mitasova in Nov. 1999 (write given tension into hist) * + * \copyright + * (C) 1992-2006 by Helena Mitasova and the GRASS Development Team + * + * \copyright + * This program is free software under the + * GNU General Public License (>=v2). + * Read the file COPYING that comes with GRASS for details. */ - + #include #include @@ -46,17 +50,24 @@ Rast_free_history(&hist); } -int IL_output_2d(struct interp_params *params, struct Cell_head *cellhd, /* current region */ - double zmin, double zmax, /* min,max input z-values */ - double zminac, double zmaxac, double c1min, double c1max, /* min,max interpolated values */ - double c2min, double c2max, double gmin, double gmax, double ertot, /* total interplating func. error */ - char *input, /* input file name */ - double dnorm, int dtens, int vect, int n_points) -/* - * Creates output files as well as history files and color tables for - * them. +/*! + * Creates output files as well as history files and color tables for them. + * + * *ertot* can be also called *RMS deviation of the interpolated surface*. */ +int IL_output_2d(struct interp_params *params, + struct Cell_head *cellhd, /*!< current region */ + double zmin, double zmax, /*!< min,max input z-values */ + double zminac, double zmaxac, + double c1min, double c1max, /*!< min,max interpolated values */ + double c2min, double c2max, + double gmin, double gmax, + double ertot, /*!< total interpolating func. error */ + char *input, /*!< input file name */ + double dnorm, /*!< normalization factor */ + int dtens, int vect, int n_points + ) { FCELL *cell1; int cf1 = -1, cf2 = -1, cf3 = -1, cf4 = -1, cf5 = -1, cf6 = -1; Modified: grass/branches/releasebranch_7_0/lib/rst/interp_float/point2d.c =================================================================== --- grass/branches/releasebranch_7_0/lib/rst/interp_float/point2d.c 2015-09-16 15:36:50 UTC (rev 66246) +++ grass/branches/releasebranch_7_0/lib/rst/interp_float/point2d.c 2015-09-16 15:44:00 UTC (rev 66247) @@ -1,24 +1,26 @@ - -/*- +/*! + * \file point2d.c * - * Original program and various modifications: - * Lubos Mitas + * \author + * Lubos Mitas (original program and various modifications) * - * GRASS4.1 version of the program and GRASS4.2 modifications: - * H. Mitasova - * I. Kosinovsky, D. Gerdes - * D. McCauley - * - * Copyright 1993, 1995: - * L. Mitas , - * H. Mitasova , - * I. Kosinovsky, , - * D.Gerdes + * \author + * H. Mitasova, + * I. Kosinovsky, + * D. Gerdes, * D. McCauley + * (GRASS4.1 version of the program and GRASS4.2 modifications) * - * modified by McCauley in August 1995 - * modified by Mitasova in August 1995, Nov. 1996 + * \author modified by McCauley in August 1995 + * \author modified by Mitasova in August 1995, Nov. 1996 * + * \copyright + * (C) 1993-2006 by Helena Mitasova and the GRASS Development Team + * + * \copyright + * This program is free software under the + * GNU General Public License (>=v2). + * Read the file COPYING that comes with GRASS for details. */ @@ -37,17 +39,25 @@ #undef hz #endif -int IL_check_at_points_2d(struct interp_params *params, struct quaddata *data, /* current region */ - double *b, /* solution of linear equations */ - double *ertot, /* total error */ - double zmin, /* min z-value */ - double dnorm, struct triple skip_point) - -/* +/*! * Checks if interpolating function interp() evaluates correct z-values at * given points. If smoothing is used calculate the maximum error caused * by smoothing. + * + * *ertot* is a RMS deviation of the interpolated surface. + * + * \todo + * Alternative description: + * ...calculate the maximum and RMS deviation caused by smoothing. */ +int IL_check_at_points_2d(struct interp_params *params, + struct quaddata *data, /*!< current region */ + double *b, /*!< solution of linear equations */ + double *ertot, /*!< total error */ + double zmin, /*!< min z-value */ + double dnorm, + struct triple skip_point + ) { int n_points = data->n_points; /* number of points */ struct triple *points = data->points; /* points for interpolation */ Modified: grass/branches/releasebranch_7_0/lib/rst/interp_float/secpar2d.c =================================================================== --- grass/branches/releasebranch_7_0/lib/rst/interp_float/secpar2d.c 2015-09-16 15:36:50 UTC (rev 66246) +++ grass/branches/releasebranch_7_0/lib/rst/interp_float/secpar2d.c 2015-09-16 15:44:00 UTC (rev 66247) @@ -1,17 +1,27 @@ -/*- - * Written by H. Mitasova, L. Mitas, I. Kosinovsky, D. Gerdes Fall 1994 - * University of Illinois - * US Army Construction Engineering Research Lab - * Copyright 1994, H. Mitasova (University of Illinois), - * L. Mitas (University of Illinois), - * I. Kosinovsky, (USA-CERL), and D.Gerdes (USA-CERL) +/*! + * \file secpar2d.c * - * modified by McCauley in August 1995 - * modified by Mitasova in August 1995 + * \author H. Mitasova, L. Mitas, I. Kosinovsky, D. Gerdes Fall 1994 (original authors) + * \author modified by McCauley in August 1995 + * \author modified by Mitasova in August 1995 + * \author H. Mitasova (University of Illinois) + * \author L. Mitas (University of Illinois) + * \author I. Kosinovsky, (USA-CERL) + * \author D.Gerdes (USA-CERL) * + * \copyright + * (C) 1994-1995 by Helena Mitasova and the GRASS Development Team + * + * \copyright + * This program is free software under the + * GNU General Public License (>=v2). + * Read the file COPYING that comes with GRASS + * for details. + * */ + #include #include #include @@ -19,19 +29,24 @@ #include #include -int IL_secpar_loop_2d(struct interp_params *params, int ngstc, /* starting column */ - int nszc, /* ending column */ - int k, /* current row */ - struct BM *bitmask, double *gmin, double *gmax, double *c1min, double *c1max, double *c2min, double *c2max, /* min,max interp. - * values */ - int cond1, int cond2 /* determine if particular values need to - * be computed */ - ) -/* +/*! + * Compute slope aspect and curvatures + * * Computes slope, aspect and curvatures (depending on cond1, cond2) for * derivative arrays adx,...,adxy between columns ngstc and nszc. */ +int IL_secpar_loop_2d(struct interp_params *params, + int ngstc, /*!< starting column */ + int nszc, /*!< ending column */ + int k, /*!< current row */ + struct BM *bitmask, + double *gmin, double *gmax, + double *c1min, double *c1max, + double *c2min, double *c2max, /*!< min,max interp. values */ + int cond1, + int cond2 /*!< determine if particular values need to be computed */ + ) { double dnorm1, ro, /* rad to deg conv */ dx2 = 0, dy2 = 0, grad2 = 0, /* gradient squared */ Modified: grass/branches/releasebranch_7_0/lib/rst/interp_float/segmen2d.c =================================================================== --- grass/branches/releasebranch_7_0/lib/rst/interp_float/segmen2d.c 2015-09-16 15:36:50 UTC (rev 66246) +++ grass/branches/releasebranch_7_0/lib/rst/interp_float/segmen2d.c 2015-09-16 15:44:00 UTC (rev 66247) @@ -1,8 +1,20 @@ -/* - ** Written by H. Mitasova, I. Kosinovsky, D. Gerdes Fall 1993 - ** Copyright H. Mitasova, I. Kosinovsky, D.Gerdes +/*! + * \file segmen2d.c + * + * \author H. Mitasova, I. Kosinovsky, D. Gerdes + * + * \copyright + * (C) 1993 by Helena Mitasova and the GRASS Development Team + * + * \copyright + * This program is free software under the + * GNU General Public License (>=v2). + * Read the file COPYING that comes with GRASS + * for details. + * */ + #include #include #include @@ -14,34 +26,39 @@ static double smallest_segment(struct multtree *, int); -/* +/*! + * Interpolate recursively a tree of segments * * Recursively processes each segment in a tree by: - * - * a) finding points from neighbouring segments so that the total number of - * points is between KMIN and KMAX2 by calling tree function MT_get_region(). - * - * b) creating and solving the system of linear equations using these points - * and interp() by calling matrix_create() and G_ludcmp(). - * - * c) checking the interpolating function values at points by calling - * check_points(). - * - * d) computing grid for this segment using points and interp() by calling - * grid_calc(). - * + * - finding points from neighbouring segments so that the total number of + * points is between KMIN and KMAX2 by calling tree function MT_get_region(). + * - creating and solving the system of linear equations using these points + * and interp() by calling matrix_create() and G_ludcmp(). + * - checking the interpolating function values at points by calling + * check_points(). + * - computing grid for this segment using points and interp() by calling + * grid_calc(). + * + * \todo + * Isn't this in fact the updated version of the function (IL_interp_segments_new_2d)? + * The function IL_interp_segments_new_2d has the following, better behavior: + * The difference between this function and IL_interp_segments_2d() is making + * sure that additional points are taken from all directions, i.e. it finds + * equal number of points from neighboring segments in each of 8 neighborhoods. */ -int IL_interp_segments_2d(struct interp_params *params, struct tree_info *info, /* info for the quad tree */ - struct multtree *tree, /* current leaf of the quad tree */ - struct BM *bitmask, /* bitmask */ - double zmin, double zmax, /* min and max input z-values */ - double *zminac, double *zmaxac, /* min and max interp. z-values */ - double *gmin, double *gmax, /* min and max inperp. slope val. */ - double *c1min, double *c1max, double *c2min, double *c2max, /* min and max interp. curv. val. */ - double *ertot, /* total interplating func. error */ - int totsegm, /* total number of segments */ - off_t offset1, /* offset for temp file writing */ - double dnorm) +int IL_interp_segments_2d(struct interp_params *params, + struct tree_info *info, /*!< info for the quad tree */ + struct multtree *tree, /*!< current leaf of the quad tree */ + struct BM *bitmask, /*!< bitmask */ + double zmin, double zmax, /*!< min and max input z-values */ + double *zminac, double *zmaxac, /*!< min and max interp. z-values */ + double *gmin, double *gmax, /*!< min and max inperp. slope val. */ + double *c1min, double *c1max, /*!< min and max interp. curv. val. */ + double *c2min, double *c2max, /*!< min and max interp. curv. val. */ + double *ertot, /*!< total interplating func. error */ + int totsegm, /*!< total number of segments */ + off_t offset1, /*!< offset for temp file writing */ + double dnorm) { double xmn, xmx, ymn, ymx, distx, disty, distxp, distyp, temp1, temp2; int i, npt, nptprev, MAXENC; Modified: grass/branches/releasebranch_7_0/lib/rst/interp_float/vinput2d.c =================================================================== --- grass/branches/releasebranch_7_0/lib/rst/interp_float/vinput2d.c 2015-09-16 15:36:50 UTC (rev 66246) +++ grass/branches/releasebranch_7_0/lib/rst/interp_float/vinput2d.c 2015-09-16 15:44:00 UTC (rev 66247) @@ -1,15 +1,28 @@ -/*- +/*! + * \file vinput2d.c + * + * \author * Written by H. Mitasova, I. Kosinovsky, D. Gerdes Fall 1993 * University of Illinois - * US Army Construction Engineering Research Lab - * Copyright 1993, H. Mitasova (University of Illinois), - * I. Kosinovsky, (USA-CERL), and D.Gerdes (USA-CERL) + * US Army Construction Engineering Research Lab + * + * \author + * Mitasova (University of Illinois), + * I. Kosinovsky, (USA-CERL), and D.Gerdes (USA-CERL) * - * modified by McCauley in August 1995 - * modified by Mitasova in August 1995 - * modofied by Mitasova in Nov 1999 (dmax fix) + * \author modified by McCauley in August 1995 + * \author modified by Mitasova in August 1995 + * \author modofied by Mitasova in Nov 1999 (dmax fix) * + * \copyright + * (C) 1993-1999 by Helena Mitasova and the GRASS Development Team + * + * \copyright + * This program is free software under the + * GNU General Public License (>=v2). + * Read the file COPYING that comes with GRASS + * for details. */ #include @@ -24,21 +37,29 @@ #include -int IL_vector_input_data_2d(struct interp_params *params, struct Map_info *Map, /* input vector map */ - /* as z values may be used: 1) z coordinates in 3D file -> field = 0 - * 2) categories -> field > 0, zcol = NULL - * 3) attributes -> field > 0, zcol != NULL */ - int field, /* category field number */ - char *zcol, /* name of the column containing z values */ - char *scol, /* name of the column containing smooth values */ - struct tree_info *info, /* quadtree info */ - double *xmin, double *xmax, double *ymin, double *ymax, double *zmin, double *zmax, int *n_points, /* number of points used for interpolation */ - double *dmax) - -/* +/*! + * Insert into a quad tree + * * Inserts input data inside the region into a quad tree. Also translates * data. Returns number of segments in the quad tree. + * + * As z values may be used (in *Map*): + * - z coordinates in 3D file -> field = 0 + * - categories -> field > 0, zcol = NULL + * - attributes -> field > 0, zcol != NULL */ +int IL_vector_input_data_2d(struct interp_params *params, /*!< interpolation parameters */ + struct Map_info *Map, /*!< input vector map */ + int field, /*!< category field number */ + char *zcol, /*!< name of the column containing z values */ + char *scol, /*!< name of the column containing smooth values */ + struct tree_info *info, /*!< quadtree info */ + double *xmin, double *xmax, + double *ymin, double *ymax, + double *zmin, double *zmax, + int *n_points, /*!< number of points used for interpolation */ + double *dmax /*!< max distance between points */ + ) { double dmax2; /* max distance between points squared */ double c1, c2, c3, c4; Modified: grass/branches/releasebranch_7_0/lib/rst/interp_float/write2d.c =================================================================== --- grass/branches/releasebranch_7_0/lib/rst/interp_float/write2d.c 2015-09-16 15:36:50 UTC (rev 66246) +++ grass/branches/releasebranch_7_0/lib/rst/interp_float/write2d.c 2015-09-16 15:44:00 UTC (rev 66247) @@ -1,16 +1,23 @@ - -/*- - * Written by H. Mitasova, I. Kosinovsky, D. Gerdes Fall 1993 - * University of Illinois - * US Army Construction Engineering Research Lab - * Copyright 1993, H. Mitasova (University of Illinois), - * I. Kosinovsky, (USA-CERL), and D.Gerdes (USA-CERL) +/*! + * \file secpar2d.c * - * modified by McCauley in August 1995 - * modified by Mitasova in August 1995 + * \author H. Mitasova, I. Kosinovsky, D. Gerdes Fall 1993 (original authors) + * \author modified by McCauley in August 1995 + * \author modified by Mitasova in August 1995 + * \author H. Mitasova (University of Illinois) + * \author I. Kosinovsky, (USA-CERL) + * \author D.Gerdes (USA-CERL) * + * \copyright + * (C) 1993-1995 by Helena Mitasova and the GRASS Development Team + * + * \copyright + * This program is free software under the + * GNU General Public License (>=v2). + * Read the file COPYING that comes with GRASS for details. */ + #include #include #include @@ -20,11 +27,17 @@ #include #include -/* + +/* parameter descriptions takes from a strange comment */ +/*! * Writes az,adx,...,adxy into appropriate place (depending on ngstc, nszc * and offset) in corresponding temp file */ -int IL_write_temp_2d(struct interp_params *params, int ngstc, int nszc, off_t offset2) /* begin. and end. column, offset */ +int IL_write_temp_2d(struct interp_params *params, + int ngstc, /*!< begin. column */ + int nszc, /*!< end. column */ + off_t offset2 /*!< offset */ + ) { int j; static FCELL *array_cell = NULL; Deleted: grass/branches/releasebranch_7_0/lib/rst/qtree/DESCRIPTION.TREE =================================================================== --- grass/branches/releasebranch_7_0/lib/rst/qtree/DESCRIPTION.TREE 2015-09-16 15:36:50 UTC (rev 66246) +++ grass/branches/releasebranch_7_0/lib/rst/qtree/DESCRIPTION.TREE 2015-09-16 15:44:00 UTC (rev 66247) @@ -1,128 +0,0 @@ -/* updated by Mitasova Nov. 96, no changes necessary */ - -DATa STRUCTURES: ----------------- - -#define VOID_T char - -struct multfunc { - int (*compare) (); - VOID_T **(*divide_data) (); - int (*add_data) (); - int (*intersect) (); - int (*division_check) (); - int (*get_points) (); -}; - -struct tree_info { - struct multfunc *functions; - double dmin; - int kmax; - struct multtree *root; -}; - -struct multtree { - VOID_T *data; - struct multtree **leafs; - struct multtree *parent; - int multant; -}; - - - - -FUNCTIONS: ----------- - -struct multfunc * MT_functions_new(compare,divide_data,add_data, - intersect,division_check,get_points) - int (*compare) (); - VOID_T **(*divide_data) (); - int (*add_data) (); - int (*intersect) (); - int (*division_check) (); - int (*get_points) (); -/* Initializes FUNCTIONS structure with given arguments*/ - - - - -struct tree_info * MT_tree_info_new (root,functions,dmin,kmax) - struct multtree *root; - struct multfunc *functions; - double dmin; - int kmax; -/*Initializes TREE_INFO using given arguments*/ - - - - - -struct multtree * MT_tree_new (data, leafs, parent, multant) - VOID_T *data; - struct multtree **leafs; - struct multtree *parent; - int multant; -/*Initializes TREE using given arguments*/ - - - - - - -int -MT_insert (point,info,tree,n_leafs) - VOID_T *point; - struct tree_info *info; - struct multtree *tree; - int n_leafs; -/*First checks for dividing cond. (if n_points>=KMAX) and TREE is a leaf - by calling one of tree's functions (division_check()). - If TREE is not a leaf (is a node) uses function compare to determine - into which "son" we need to insert the point and calls MT_insert() - with this son as a n argument. - If TREE is a leaf but we don't need to divide it (n_points=v2). + * Read the file COPYING that comes with GRASS for details. */ #include @@ -16,6 +28,7 @@ #include #include +/*! Initializes multfunc structure with given arguments */ struct multfunc *MT_functions_new(int (*compare) (struct triple *, struct quaddata *), struct quaddata **(*divide_data) (struct quaddata *, @@ -26,7 +39,6 @@ int (*division_check) (struct quaddata *, int), int (*get_points) (struct quaddata *, struct quaddata *, int)) -/* Initializes FUNCTIONS structure with given arguments */ { struct multfunc *functions; if (!(functions = (struct multfunc *)malloc(sizeof(struct multfunc)))) { @@ -41,10 +53,10 @@ return functions; } +/*! Initializes tree_info using given arguments */ struct tree_info *MT_tree_info_new(struct multtree *root, struct multfunc *functions, double dmin, int kmax) -/*Initializes TREE_INFO using given arguments */ { struct tree_info *info; if (!(info = (struct tree_info *)malloc(sizeof(struct tree_info)))) { @@ -57,10 +69,10 @@ return info; } +/** Initializes multtree using given arguments */ struct multtree *MT_tree_new(struct quaddata *data, struct multtree **leafs, struct multtree *parent, int multant) -/*Initializes TREE using given arguments */ { struct multtree *tree; if (!(tree = (struct multtree *)malloc(sizeof(struct multtree)))) { @@ -74,21 +86,24 @@ } - +/*! + * First checks for dividing cond. (if n_points>=KMAX) and tree + * is a leaf by calling one of tree's functions (`division_check()`). + * If tree is not a leaf (is a node) uses function compare to determine + * into which "son" we need to insert the point and calls MT_insert() + * with this son as a n argument. + * + * If TREE is a leaf but we don't need to divide it (n_points=KMAX) and TREE is a leaf - by calling one of tree's functions (division_check()). - If TREE is not a leaf (is a node) uses function compare to determine - into which "son" we need to insert the point and calls MT_insert() - with this son as a n argument. - If TREE is a leaf but we don't need to divide it (n_points=v2). + * Read the file COPYING that comes with GRASS for details. */ @@ -17,6 +29,12 @@ #define VOID_T char +/*! + * Function table for a tree + * + * From object oriented point of view, this structure represents + * a class or a virtual table of functions/methods for a class. + */ struct multfunc { int (*compare) (); Copied: grass/branches/releasebranch_7_0/lib/rst/rstlib.dox (from rev 66146, grass/trunk/lib/rst/rstlib.dox) =================================================================== --- grass/branches/releasebranch_7_0/lib/rst/rstlib.dox (rev 0) +++ grass/branches/releasebranch_7_0/lib/rst/rstlib.dox 2015-09-16 15:44:00 UTC (rev 66247) @@ -0,0 +1,66 @@ +/*! \page rstlib GRASS Library for interpolation with regularized splines with tension + +\tableofcontents + + +Including and linking +===================== + +Include interpf.h, qtree.h and dataquad.h header files according +to which you need: + + #include + #include + #include + +Extend `LIBES` and `DEPENDENCIES` in your `Makefile` by the following: + + LIBES = $(INTERPFLLIB) $(GMATHLIB) + DEPENDENCIES = $(INTERPFLDEP) $(GMATHDEP) + + +Main functions and structures +============================= + +Main functions include: +- IL_init_params_2d() +- IL_init_func_2d() +- IL_vector_input_data_2d() +- IL_create_bitmask() +- IL_resample_interp_segments_2d() +- IL_resample_output_2d() +- IL_output_2d() + +Main data structures include: +- interp_params +- tree_info +- \ref multtree + + +Example usages +============== + +- \gmod{v.surf.rst} +- \gmod{r.resamp.rst} + + +References +========== + +The methods are described in the following papers. +Please, use these papers as references in your publications when you +used the library or derived modules. + +- 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. +- Mitasova, H., Mitas, L., Brown, W.M., Gerdes, D.P., Kosinovsky, I., + Baker, T., 1995, Modeling spatially and temporally + distributed phenomena: New methods and tools for GRASS GIS. + International Journal of Geographic Information Systems,9(4), 433-46. + +*/ Modified: grass/branches/releasebranch_7_0/lib/vector/dglib/dglib.dox =================================================================== --- grass/branches/releasebranch_7_0/lib/vector/dglib/dglib.dox 2015-09-16 15:36:50 UTC (rev 66246) +++ grass/branches/releasebranch_7_0/lib/vector/dglib/dglib.dox 2015-09-16 15:44:00 UTC (rev 66247) @@ -1,4 +1,4 @@ -/*! \page dglib Directed Graph Library +/*! \page dglib GRASS Directed Graph Library by GRASS Development Team (http://grass.osgeo.org) From svn_grass at osgeo.org Wed Sep 16 08:46:16 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Wed, 16 Sep 2015 08:46:16 -0700 Subject: [GRASS-SVN] r66248 - grass-addons/grass7/raster/r.subdayprecip.design Message-ID: <20150916154616.3EE073900B4@trac.osgeo.org> Author: martinl Date: 2015-09-16 08:46:16 -0700 (Wed, 16 Sep 2015) New Revision: 66248 Modified: grass-addons/grass7/raster/r.subdayprecip.design/r.subdayprecip.design.html Log: r.subdayprecip.design: fix basins order in the manual (cosmetics) Modified: grass-addons/grass7/raster/r.subdayprecip.design/r.subdayprecip.design.html =================================================================== --- grass-addons/grass7/raster/r.subdayprecip.design/r.subdayprecip.design.html 2015-09-16 15:44:00 UTC (rev 66247) +++ grass-addons/grass7/raster/r.subdayprecip.design/r.subdayprecip.design.html 2015-09-16 15:46:16 UTC (rev 66248) @@ -41,7 +41,7 @@

      -Figure: III.order basins colored by mean H_002_60 value +Figure: IV.order basins colored by mean H_002_60 value From svn_grass at osgeo.org Wed Sep 16 09:24:10 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Wed, 16 Sep 2015 09:24:10 -0700 Subject: [GRASS-SVN] r66249 - in grass/trunk/temporal/t.support: . testsuite Message-ID: <20150916162410.6935B3900B4@trac.osgeo.org> Author: huhabla Date: 2015-09-16 09:24:10 -0700 (Wed, 16 Sep 2015) New Revision: 66249 Added: grass/trunk/temporal/t.support/testsuite/ grass/trunk/temporal/t.support/testsuite/test_support_str3ds.py grass/trunk/temporal/t.support/testsuite/test_support_strds.py grass/trunk/temporal/t.support/testsuite/test_support_stvds.py Modified: grass/trunk/temporal/t.support/t.support.py Log: temporal modules: Added python tests to t.support, added aggregation type setting Modified: grass/trunk/temporal/t.support/t.support.py =================================================================== --- grass/trunk/temporal/t.support/t.support.py 2015-09-16 15:46:16 UTC (rev 66248) +++ grass/trunk/temporal/t.support/t.support.py 2015-09-16 16:24:10 UTC (rev 66249) @@ -54,6 +54,14 @@ #% multiple: no #%end +#%option +#% key: aggr_type +#% type: string +#% description: Aggregation type of the space time raster or 3D raster dataset +#% required: no +#% multiple: no +#%end + #%flag #% key: m #% label: Update the metadata information and spatial extent of registered maps from the GRASS spatial database @@ -62,7 +70,7 @@ #%flag #% key: u -#% description: Update metadata information, temporal and spatial extent from registered maps +#% description: Update metadata information, temporal and spatial extent from registered maps based on database entries. #%end @@ -77,6 +85,7 @@ name = options["input"] type = options["type"] title = options["title"] + aggr_type = options["aggr_type"] description = options["description"] semantic = options["semantictype"] update = flags["u"] @@ -91,6 +100,12 @@ stds = tgis.open_old_stds(name, type, dbif) update = False + if aggr_type and type == "stvds": + return() + + if aggr_type and type != "stvds": + stds.metadata.set_aggregation_type(aggregation_type=aggr_type) + update = True if title: stds.metadata.set_title(title=title) update = True Added: grass/trunk/temporal/t.support/testsuite/test_support_str3ds.py =================================================================== --- grass/trunk/temporal/t.support/testsuite/test_support_str3ds.py (rev 0) +++ grass/trunk/temporal/t.support/testsuite/test_support_str3ds.py 2015-09-16 16:24:10 UTC (rev 66249) @@ -0,0 +1,105 @@ +"""Test t.support + +(C) 2015 by the GRASS Development Team +This program is free software under the GNU General Public +License (>=v2). Read the file COPYING that comes with GRASS +for details. + +:authors: Soeren Gebbert +""" +import os +import grass.pygrass.modules as pymod +import grass.temporal as tgis +from grass.gunittest.case import TestCase +from grass.gunittest.gmodules import SimpleModule + +class TestSupportAbsoluteSTR3DS(TestCase): + + @classmethod + def setUpClass(cls): + """Initiate the temporal GIS and set the region + """ + os.putenv("GRASS_OVERWRITE", "1") + tgis.init() + cls.use_temp_region() + cls.runModule("g.region", s=0, n=80, w=0, e=120, b=0, + t=50, res=10, res3=10) + cls.runModule("r3.mapcalc", expression="a1 = 100", overwrite=True) + cls.runModule("r3.mapcalc", expression="a2 = 200", overwrite=True) + cls.runModule("r3.mapcalc", expression="a3 = 300", overwrite=True) + cls.runModule("r3.mapcalc", expression="a4 = 400", overwrite=True) + + cls.runModule("t.create", type="str3ds", temporaltype="absolute", + output="A", title="A test", + description="A test", overwrite=True) + + cls.runModule("t.register", flags="i", type="raster_3d", input="A", + maps="a1,a2,a3,a4", + start="2001-01-15 12:05:45", + increment="14 days", + overwrite=True) + @classmethod + def tearDownClass(cls): + """Remove the temporary region + """ + cls.del_temp_region() + cls.runModule("t.remove", flags="rf", type="str3ds", inputs="A") + + def test_1_metadata(self): + """Set title, description and aggregation""" + + title="A new title" + descr="A new description" + aggr_type="average" + semantic="sum" + + self.assertModule("t.support", type="str3ds", input="A", + title=title, + description=descr, + semantictype=semantic, + aggr_type=aggr_type) + + A = tgis.open_old_stds("A", type="str3ds") + A.select() + self.assertEqual(A.metadata.get_title(), title) + self.assertEqual(A.metadata.get_description(), descr) + self.assertEqual(A.metadata.get_aggregation_type(), aggr_type) + self.assertEqual(A.base.get_semantic_type(), semantic) + + def test_2_update(self): + """Set title, description and aggregation""" + + self.runModule("r3.mapcalc", expression="a1 = 10", overwrite=True) + self.runModule("r3.mapcalc", expression="a2 = 20", overwrite=True) + self.runModule("r3.mapcalc", expression="a3 = 30", overwrite=True) + self.runModule("r3.mapcalc", expression="a4 = 40", overwrite=True) + + self.assertModule("t.support", type="str3ds", input="A", flags="m") + + A = tgis.open_old_stds("A", type="str3ds") + A.select() + self.assertEqual(A.metadata.get_min_min(), 10) + self.assertEqual(A.metadata.get_min_max(), 40) + self.assertEqual(A.metadata.get_max_min(), 10) + self.assertEqual(A.metadata.get_max_max(), 40) + self.assertEqual(A.metadata.get_number_of_maps(), 4) + + def test_3_update(self): + """Set title, description and aggregation""" + + self.runModule("g.remove", type="raster_3d", name="a4", flags="f") + + self.assertModule("t.support", type="str3ds", input="A", flags="m") + + A = tgis.open_old_stds("A", type="str3ds") + A.select() + self.assertEqual(A.metadata.get_min_min(), 10) + self.assertEqual(A.metadata.get_min_max(), 30) + self.assertEqual(A.metadata.get_max_min(), 10) + self.assertEqual(A.metadata.get_max_max(), 30) + self.assertEqual(A.metadata.get_number_of_maps(), 3) + + +if __name__ == '__main__': + from grass.gunittest.main import test + test() Added: grass/trunk/temporal/t.support/testsuite/test_support_strds.py =================================================================== --- grass/trunk/temporal/t.support/testsuite/test_support_strds.py (rev 0) +++ grass/trunk/temporal/t.support/testsuite/test_support_strds.py 2015-09-16 16:24:10 UTC (rev 66249) @@ -0,0 +1,105 @@ +"""Test t.support + +(C) 2015 by the GRASS Development Team +This program is free software under the GNU General Public +License (>=v2). Read the file COPYING that comes with GRASS +for details. + +:authors: Soeren Gebbert +""" +import os +import grass.pygrass.modules as pymod +import grass.temporal as tgis +from grass.gunittest.case import TestCase +from grass.gunittest.gmodules import SimpleModule + +class TestSupportAbsoluteSTRDS(TestCase): + + @classmethod + def setUpClass(cls): + """Initiate the temporal GIS and set the region + """ + os.putenv("GRASS_OVERWRITE", "1") + tgis.init() + cls.use_temp_region() + cls.runModule("g.region", s=0, n=80, w=0, e=120, b=0, + t=50, res=10, res3=10) + cls.runModule("r.mapcalc", expression="a1 = 100", overwrite=True) + cls.runModule("r.mapcalc", expression="a2 = 200", overwrite=True) + cls.runModule("r.mapcalc", expression="a3 = 300", overwrite=True) + cls.runModule("r.mapcalc", expression="a4 = 400", overwrite=True) + + cls.runModule("t.create", type="strds", temporaltype="absolute", + output="A", title="A test", + description="A test", overwrite=True) + + cls.runModule("t.register", flags="i", type="raster", input="A", + maps="a1,a2,a3,a4", + start="2001-01-15 12:05:45", + increment="14 days", + overwrite=True) + @classmethod + def tearDownClass(cls): + """Remove the temporary region + """ + cls.del_temp_region() + cls.runModule("t.remove", flags="rf", type="strds", inputs="A") + + def test_1_metadata(self): + """Set title, description and aggregation""" + + title="A new title" + descr="A new description" + aggr_type="average" + semantic="sum" + + self.assertModule("t.support", input="A", + title=title, + description=descr, + semantictype=semantic, + aggr_type=aggr_type) + + A = tgis.open_old_stds("A", type="strds") + A.select() + self.assertEqual(A.metadata.get_title(), title) + self.assertEqual(A.metadata.get_description(), descr) + self.assertEqual(A.metadata.get_aggregation_type(), aggr_type) + self.assertEqual(A.base.get_semantic_type(), semantic) + + def test_2_update(self): + """Set title, description and aggregation""" + + self.runModule("r.mapcalc", expression="a1 = 10", overwrite=True) + self.runModule("r.mapcalc", expression="a2 = 20", overwrite=True) + self.runModule("r.mapcalc", expression="a3 = 30", overwrite=True) + self.runModule("r.mapcalc", expression="a4 = 40", overwrite=True) + + self.assertModule("t.support", input="A", flags="m") + + A = tgis.open_old_stds("A", type="strds") + A.select() + self.assertEqual(A.metadata.get_min_min(), 10) + self.assertEqual(A.metadata.get_min_max(), 40) + self.assertEqual(A.metadata.get_max_min(), 10) + self.assertEqual(A.metadata.get_max_max(), 40) + self.assertEqual(A.metadata.get_number_of_maps(), 4) + + def test_3_update(self): + """Set title, description and aggregation""" + + self.runModule("g.remove", type="raster", name="a4", flags="f") + + self.assertModule("t.support", input="A", flags="m") + + A = tgis.open_old_stds("A", type="strds") + A.select() + self.assertEqual(A.metadata.get_min_min(), 10) + self.assertEqual(A.metadata.get_min_max(), 30) + self.assertEqual(A.metadata.get_max_min(), 10) + self.assertEqual(A.metadata.get_max_max(), 30) + self.assertEqual(A.metadata.get_number_of_maps(), 3) + + +if __name__ == '__main__': + from grass.gunittest.main import test + test() Added: grass/trunk/temporal/t.support/testsuite/test_support_stvds.py =================================================================== --- grass/trunk/temporal/t.support/testsuite/test_support_stvds.py (rev 0) +++ grass/trunk/temporal/t.support/testsuite/test_support_stvds.py 2015-09-16 16:24:10 UTC (rev 66249) @@ -0,0 +1,96 @@ +"""Test t.support + +(C) 2015 by the GRASS Development Team +This program is free software under the GNU General Public +License (>=v2). Read the file COPYING that comes with GRASS +for details. + +:authors: Soeren Gebbert +""" +import os +import grass.pygrass.modules as pymod +import grass.temporal as tgis +from grass.gunittest.case import TestCase +from grass.gunittest.gmodules import SimpleModule + +class TestSupportAbsoluteSTVDS(TestCase): + + @classmethod + def setUpClass(cls): + """Initiate the temporal GIS and set the region + """ + os.putenv("GRASS_OVERWRITE", "1") + tgis.init() + cls.use_temp_region() + cls.runModule("g.region", s=0, n=80, w=0, e=120, b=0, + t=50, res=10, res3=10) + cls.runModule("v.random", quiet=True, npoints=20, seed=1, output='a1') + cls.runModule("v.random", quiet=True, npoints=20, seed=1, output='a2') + cls.runModule("v.random", quiet=True, npoints=20, seed=1, output='a3') + cls.runModule("v.random", quiet=True, npoints=20, seed=1, output='a4') + + cls.runModule("t.create", type="stvds", temporaltype="absolute", + output="A", title="A test", + description="A test", overwrite=True) + + cls.runModule("t.register", flags="i", type="vector", input="A", + maps="a1,a2,a3,a4", + start="2001-01-15 12:05:45", + increment="14 days", + overwrite=True) + @classmethod + def tearDownClass(cls): + """Remove the temporary region + """ + cls.del_temp_region() + cls.runModule("t.remove", flags="rf", type="stvds", inputs="A") + + def test_1_metadata(self): + """Set title, description and aggregation""" + + title="A new title" + descr="A new description" + semantic="sum" + + self.assertModule("t.support", type="stvds", input="A", + title=title, + description=descr, + semantictype=semantic) + + A = tgis.open_old_stds("A", type="stvds") + A.select() + self.assertEqual(A.metadata.get_title(), title) + self.assertEqual(A.metadata.get_description(), descr) + self.assertEqual(A.base.get_semantic_type(), semantic) + + def test_2_update(self): + """Set title, description and aggregation""" + + self.runModule("v.random", quiet=True, npoints=10, seed=1, output='a1') + self.runModule("v.random", quiet=True, npoints=10, seed=1, output='a2') + self.runModule("v.random", quiet=True, npoints=10, seed=1, output='a3') + self.runModule("v.random", quiet=True, npoints=10, seed=1, output='a4') + + self.assertModule("t.support", type="stvds", input="A", flags="m") + + A = tgis.open_old_stds("A", type="stvds") + A.select() + self.assertEqual(A.metadata.get_number_of_points(), 40) + self.assertEqual(A.metadata.get_number_of_maps(), 4) + + def test_3_update(self): + """Set title, description and aggregation""" + + self.runModule("g.remove", type="vector", name="a4", flags="f") + + self.assertModule("t.support", type="stvds", input="A", flags="m") + + A = tgis.open_old_stds("A", type="stvds") + A.select() + self.assertEqual(A.metadata.get_number_of_points(), 30) + self.assertEqual(A.metadata.get_number_of_maps(), 3) + + +if __name__ == '__main__': + from grass.gunittest.main import test + test() From svn_grass at osgeo.org Wed Sep 16 09:27:08 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Wed, 16 Sep 2015 09:27:08 -0700 Subject: [GRASS-SVN] r66250 - in grass/branches/releasebranch_7_0/lib/python/temporal: . testsuite Message-ID: <20150916162708.F09383900B4@trac.osgeo.org> Author: neteler Date: 2015-09-16 09:27:08 -0700 (Wed, 16 Sep 2015) New Revision: 66250 Added: grass/branches/releasebranch_7_0/lib/python/temporal/testsuite/unittests_temporal_algebra_mixed_stds.py Modified: grass/branches/releasebranch_7_0/lib/python/temporal/c_libraries_interface.py Log: temporal library: fix for available mapsets test (partial backport of r66205, r66206) Modified: grass/branches/releasebranch_7_0/lib/python/temporal/c_libraries_interface.py =================================================================== --- grass/branches/releasebranch_7_0/lib/python/temporal/c_libraries_interface.py 2015-09-16 16:24:10 UTC (rev 66249) +++ grass/branches/releasebranch_7_0/lib/python/temporal/c_libraries_interface.py 2015-09-16 16:27:08 UTC (rev 66250) @@ -152,18 +152,27 @@ count = 0 mapset_list = [] try: - # Initilaize the accessable mapset list, this is bad C design!!! + # Initialize the accessable mapset list, this is bad C design!!! libgis.G_get_mapset_name(0) mapsets = libgis.G_get_available_mapsets() while mapsets[count]: char_list = "" mapset = mapsets[count] - if libgis.G_mapset_permissions(mapset) == 1 and libgis.G_is_mapset_in_search_path(mapset) == 1: - c = 0 - while mapset[c] != "\x00": - char_list += mapset[c] - c += 1 + + permission = libgis.G_mapset_permissions(mapset) + in_search_path = libgis.G_is_mapset_in_search_path(mapset) + + c = 0 + while mapset[c] != "\x00": + char_list += mapset[c] + c += 1 + + if permission >= 0 and in_search_path == 1: mapset_list.append(char_list) + + libgis.G_debug(1, "c_library_server._available_mapsets: \n mapset: %s\n"\ + " has permission %i\n in search path: %i"%(char_list, + permission, in_search_path)) count += 1 # We need to sort the mapset list, but the first one should be Copied: grass/branches/releasebranch_7_0/lib/python/temporal/testsuite/unittests_temporal_algebra_mixed_stds.py (from rev 66205, grass/trunk/lib/python/temporal/testsuite/unittests_temporal_algebra_mixed_stds.py) =================================================================== --- grass/branches/releasebranch_7_0/lib/python/temporal/testsuite/unittests_temporal_algebra_mixed_stds.py (rev 0) +++ grass/branches/releasebranch_7_0/lib/python/temporal/testsuite/unittests_temporal_algebra_mixed_stds.py 2015-09-16 16:27:08 UTC (rev 66250) @@ -0,0 +1,206 @@ +""" +(C) 2013 by the GRASS Development Team +This program is free software under the GNU General Public +License (>=v2). Read the file COPYING that comes with GRASS +for details. + +:authors: Soeren Gebbert and Thomas Leppelt +""" + +import grass.script +import grass.temporal as tgis +from grass.gunittest.case import TestCase +from grass.gunittest.main import test +import datetime +import os + +class TestTemporalAlgebraMixedDatasets(TestCase): + + @classmethod + def setUpClass(cls): + """Initiate the temporal GIS and set the region + """ + tgis.init(True) # Raise on error instead of exit(1) + cls.use_temp_region() + cls.runModule("g.region", n=80.0, s=0.0, e=120.0, + w=0.0, t=1.0, b=0.0, res=10.0) + + cls.runModule("r3.mapcalc", overwrite=True, quiet=True, expression="a1 = 1") + cls.runModule("r3.mapcalc", overwrite=True, quiet=True, expression="a2 = 2") + cls.runModule("r3.mapcalc", overwrite=True, quiet=True, expression="a3 = 3") + cls.runModule("r3.mapcalc", overwrite=True, quiet=True, expression="a4 = 4") + + tgis.open_new_stds(name="A", type="str3ds", temporaltype="absolute", + title="A", descr="A", semantic="field", overwrite=True) + + tgis.register_maps_in_space_time_dataset(type="raster3d", name="A", maps="a1,a2,a3,a4", + start="2001-01-01", increment="1 day", interval=True) + + + cls.runModule("r.mapcalc", overwrite=True, quiet=True, expression="b1 = 5") + cls.runModule("r.mapcalc", overwrite=True, quiet=True, expression="b2 = 6") + + tgis.open_new_stds(name="B", type="strds", temporaltype="absolute", + title="B", descr="B", semantic="field", overwrite=True) + + tgis.register_maps_in_space_time_dataset(type="raster", name="B", maps="b1,b2", + start="2001-01-01", increment="2 day", interval=True) + + + cls.runModule("v.random", overwrite=True, quiet=True, npoints=20, seed=3, output='c1') + + tgis.open_new_stds(name="C", type="stvds", temporaltype="absolute", + title="B", descr="C", semantic="field", overwrite=True) + + tgis.register_maps_in_space_time_dataset(type="vector", name="C", maps="c1", + start="2001-01-02", increment="2 day", interval=True) + + @classmethod + def tearDownClass(cls): + """Remove the temporary region + """ + cls.runModule("t.remove", flags="rf", type="str3ds", inputs="A", quiet=True) + cls.runModule("t.remove", flags="rf", type="strds", inputs="B", quiet=True) + cls.runModule("t.remove", flags="rf", type="stvds", inputs="C", quiet=True) + cls.del_temp_region() + + def test_temporal_select_operators1(self): + """Testing the temporal select operator. Including temporal relations. """ + ta = tgis.TemporalAlgebraParser(run = True, debug = True) + ta.parse(expression="R = A {:,during} stvds(C)", stdstype = 'str3ds', basename="r", overwrite=True) + + D = tgis.open_old_stds("R", type="str3ds") + D.select() + self.assertEqual(D.metadata.get_number_of_maps(), 2) + self.assertEqual(D.metadata.get_min_min(), 2) + self.assertEqual(D.metadata.get_max_max(), 3) + start, end = D.get_absolute_time() + self.assertEqual(start, datetime.datetime(2001, 1, 2)) + self.assertEqual(end, datetime.datetime(2001, 1, 4)) + self.assertEqual( D.check_temporal_topology(), True) + self.assertEqual(D.get_granularity(), u'1 day') + + def test_temporal_select_operators2(self): + """Testing the temporal select operator. Including temporal relations. """ + ta = tgis.TemporalAlgebraParser(run = True, debug = True) + ta.parse(expression="R = A {:,equal|during} stvds(C)", stdstype = 'str3ds', basename="r", overwrite=True) + + D = tgis.open_old_stds("R", type="str3ds") + D.select() + self.assertEqual(D.metadata.get_number_of_maps(), 2) + self.assertEqual(D.metadata.get_min_min(), 2) + self.assertEqual(D.metadata.get_max_max(), 3) + start, end = D.get_absolute_time() + self.assertEqual(start, datetime.datetime(2001, 1, 2)) + self.assertEqual(end, datetime.datetime(2001, 1, 4)) + self.assertEqual( D.check_temporal_topology(), True) + self.assertEqual(D.get_granularity(), u'1 day') + + def test_temporal_select_operators3(self): + """Testing the temporal select operator. Including temporal relations + and negation operation. """ + ta = tgis.TemporalAlgebraParser(run = True, debug = True) + ta.parse(expression="R = A {!:,during} stvds(C)", stdstype = 'str3ds', basename="r", overwrite=True) + + D = tgis.open_old_stds("R", type="str3ds") + D.select() + self.assertEqual(D.metadata.get_number_of_maps(), 2) + self.assertEqual(D.metadata.get_min_min(), 1) + self.assertEqual(D.metadata.get_max_max(), 4) + start, end = D.get_absolute_time() + self.assertEqual(start, datetime.datetime(2001, 1, 1)) + self.assertEqual(end, datetime.datetime(2001, 1, 5)) + self.assertEqual( D.check_temporal_topology(), True) + self.assertEqual(D.get_granularity(), u'1 day') + + def test_temporal_select_operators4(self): + """Testing the temporal select operator. Including temporal relations and + temporal operators. """ + ta = tgis.TemporalAlgebraParser(run = True, debug = True) + ta.parse(expression="V = C {:,contains} str3ds(A)", + stdstype = 'stvds', basename="r", overwrite=True) + + D = tgis.open_old_stds("V", type="stvds") + D.select() + maplist = D.get_registered_maps_as_objects() + self.assertEqual(D.metadata.get_number_of_maps(), 1) + start, end = D.get_absolute_time() + self.assertEqual(start, datetime.datetime(2001, 1, 2)) + self.assertEqual(end, datetime.datetime(2001, 1, 4)) + self.assertEqual( D.check_temporal_topology(), True) + self.assertEqual(D.get_granularity(), u'2 days') + + def test_temporal_select_operators5(self): + """Testing the temporal select operator. Including temporal relations and + temporal operators. """ + ta = tgis.TemporalAlgebraParser(run = True, debug = True) + ta.parse(expression="R = A {:,during} strds(B)", + stdstype = 'str3ds', basename="r", overwrite=True) + + D = tgis.open_old_stds("R", type="str3ds") + D.select() + maplist = D.get_registered_maps_as_objects() + self.assertEqual(D.metadata.get_number_of_maps(), 4) + start, end = D.get_absolute_time() + self.assertEqual(start, datetime.datetime(2001, 1, 1)) + self.assertEqual(end, datetime.datetime(2001, 1, 5)) + self.assertEqual( D.check_temporal_topology(), True) + self.assertEqual(D.get_granularity(), u'1 day') + + def test_temporal_hash_operator1(self): + """Testing the hash operator function in conditional statement. """ + ta = tgis.TemporalAlgebraParser(run = True, debug = True) + ta.parse(expression="R = if(A {#,during} stvds(C) == 1, A)", + stdstype = 'str3ds', + basename="r", overwrite=True) + + D = tgis.open_old_stds("R", type="str3ds") + D.select() + maplist = D.get_registered_maps_as_objects() + self.assertEqual(D.metadata.get_number_of_maps(), 2) + self.assertEqual(D.metadata.get_min_min(), 2) + self.assertEqual(D.metadata.get_max_max(), 3) + start, end = D.get_absolute_time() + self.assertEqual(start, datetime.datetime(2001, 1, 2)) + self.assertEqual(end, datetime.datetime(2001, 1, 4)) + self.assertEqual( D.check_temporal_topology(), True) + self.assertEqual(D.get_granularity(), u'1 day') + + def test_temporal_hash_operator2(self): + """Testing the hash operator function in conditional statement. """ + ta = tgis.TemporalAlgebraParser(run = True, debug = True) + ta.parse(expression="R = if({during}, stvds(C) {#,contains} A == 2, A)", + stdstype = 'str3ds', basename="r", overwrite=True) + + D = tgis.open_old_stds("R", type="str3ds") + D.select() + maplist = D.get_registered_maps_as_objects() + self.assertEqual(D.metadata.get_number_of_maps(), 2) + self.assertEqual(D.metadata.get_min_min(), 2) + self.assertEqual(D.metadata.get_max_max(), 3) + start, end = D.get_absolute_time() + self.assertEqual(start, datetime.datetime(2001, 1, 2)) + self.assertEqual(end, datetime.datetime(2001, 1, 4)) + self.assertEqual( D.check_temporal_topology(), True) + self.assertEqual(D.get_granularity(), u'1 day') + + def test_different_stds_handling(self): + """Testing the handling of different stds types as output. """ + ta = tgis.TemporalAlgebraParser(run = True, debug = True) + ta.parse(expression="R = if({during}, stvds(C) {#,contains} str3ds(A) == 2, str3ds(A))", + stdstype = 'strds', basename="r", overwrite=True) + + D = tgis.open_old_stds("R", type="str3ds") + D.select() + maplist = D.get_registered_maps_as_objects() + self.assertEqual(D.metadata.get_number_of_maps(), 2) + self.assertEqual(D.metadata.get_min_min(), 2) + self.assertEqual(D.metadata.get_max_max(), 3) + start, end = D.get_absolute_time() + self.assertEqual(start, datetime.datetime(2001, 1, 2)) + self.assertEqual(end, datetime.datetime(2001, 1, 4)) + self.assertEqual( D.check_temporal_topology(), True) + self.assertEqual(D.get_granularity(), u'1 day') + +if __name__ == '__main__': + test() From svn_grass at osgeo.org Wed Sep 16 11:41:25 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Wed, 16 Sep 2015 11:41:25 -0700 Subject: [GRASS-SVN] r66251 - in grass/trunk/temporal/t.snap: . testsuite Message-ID: <20150916184125.654FD3900A3@trac.osgeo.org> Author: huhabla Date: 2015-09-16 11:41:25 -0700 (Wed, 16 Sep 2015) New Revision: 66251 Added: grass/trunk/temporal/t.snap/testsuite/ grass/trunk/temporal/t.snap/testsuite/test_snap.py Log: temporal modules: Added t.snap gunittests Added: grass/trunk/temporal/t.snap/testsuite/test_snap.py =================================================================== --- grass/trunk/temporal/t.snap/testsuite/test_snap.py (rev 0) +++ grass/trunk/temporal/t.snap/testsuite/test_snap.py 2015-09-16 18:41:25 UTC (rev 66251) @@ -0,0 +1,291 @@ +"""Test t.snap + +(C) 2015 by the GRASS Development Team +This program is free software under the GNU General Public +License (>=v2). Read the file COPYING that comes with GRASS +for details. + +:authors: Soeren Gebbert +""" +import os +import grass.pygrass.modules as pymod +import grass.temporal as tgis +from grass.gunittest.case import TestCase +from grass.gunittest.gmodules import SimpleModule + + +class TestSnapAbsoluteSTRDS(TestCase): + + @classmethod + def setUpClass(cls): + """Initiate the temporal GIS and set the region + """ + os.putenv("GRASS_OVERWRITE", "1") + tgis.init() + cls.use_temp_region() + cls.runModule("g.region", s=0, n=80, w=0, e=120, b=0, + t=50, res=10, res3=10) + cls.runModule("r.mapcalc", expression="a1 = 100", overwrite=True) + cls.runModule("r.mapcalc", expression="a2 = 200", overwrite=True) + cls.runModule("r.mapcalc", expression="a3 = 300", overwrite=True) + cls.runModule("r.mapcalc", expression="a4 = 400", overwrite=True) + + cls.runModule("t.create", type="strds", temporaltype="absolute", + output="A", title="A test", + description="A test", overwrite=True) + + cls.runModule("t.register", type="raster", input="A", + maps="a1,a2,a3,a4", + start="2001-01-01", + increment="14 days", + overwrite=True) + @classmethod + def tearDownClass(cls): + """Remove the temporary region + """ + cls.del_temp_region() + cls.runModule("t.remove", flags="rf", type="strds", inputs="A") + + def test_1_metadata(self): + """Set title, description and aggregation""" + + A = tgis.open_old_stds("A", type="strds") + A.select() + self.assertEqual(A.get_map_time(), "point") + + self.assertModule("t.snap", input="A", type="strds") + + A.select() + self.assertEqual(A.get_map_time(), "interval") + + +class TestSnapRelativeSTRDS(TestCase): + + @classmethod + def setUpClass(cls): + """Initiate the temporal GIS and set the region + """ + os.putenv("GRASS_OVERWRITE", "1") + tgis.init() + cls.use_temp_region() + cls.runModule("g.region", s=0, n=80, w=0, e=120, b=0, + t=50, res=10, res3=10) + cls.runModule("r.mapcalc", expression="a1 = 100", overwrite=True) + cls.runModule("r.mapcalc", expression="a2 = 200", overwrite=True) + cls.runModule("r.mapcalc", expression="a3 = 300", overwrite=True) + cls.runModule("r.mapcalc", expression="a4 = 400", overwrite=True) + + cls.runModule("t.create", type="strds", temporaltype="relative", + output="A", title="A test", + description="A test", overwrite=True) + + cls.runModule("t.register", type="raster", input="A", + maps="a1,a2,a3,a4", + start="0", + increment="14", unit="days", + overwrite=True) + @classmethod + def tearDownClass(cls): + """Remove the temporary region + """ + cls.del_temp_region() + cls.runModule("t.remove", flags="rf", type="strds", inputs="A") + + def test_1_metadata(self): + """Set title, description and aggregation""" + + A = tgis.open_old_stds("A", type="strds") + A.select() + self.assertEqual(A.get_map_time(), "point") + + self.assertModule("t.snap", input="A", type="strds") + + A.select() + self.assertEqual(A.get_map_time(), "interval") + + +class TestSnapAbsoluteSTR3DS(TestCase): + + @classmethod + def setUpClass(cls): + """Initiate the temporal GIS and set the region + """ + os.putenv("GRASS_OVERWRITE", "1") + tgis.init() + cls.use_temp_region() + cls.runModule("g.region", s=0, n=80, w=0, e=120, b=0, + t=50, res=10, res3=10) + cls.runModule("r3.mapcalc", expression="a1 = 100", overwrite=True) + cls.runModule("r3.mapcalc", expression="a2 = 200", overwrite=True) + cls.runModule("r3.mapcalc", expression="a3 = 300", overwrite=True) + cls.runModule("r3.mapcalc", expression="a4 = 400", overwrite=True) + + cls.runModule("t.create", type="str3ds", temporaltype="absolute", + output="A", title="A test", + description="A test", overwrite=True) + + cls.runModule("t.register", type="raster_3d", input="A", + maps="a1,a2,a3,a4", + start="2001-01-01", + increment="14 days", + overwrite=True) + @classmethod + def tearDownClass(cls): + """Remove the temporary region + """ + cls.del_temp_region() + cls.runModule("t.remove", flags="rf", type="str3ds", inputs="A") + + def test_1_metadata(self): + """Set title, description and aggregation""" + + A = tgis.open_old_stds("A", type="str3ds") + A.select() + self.assertEqual(A.get_map_time(), "point") + + self.assertModule("t.snap", input="A", type="str3ds") + + A.select() + self.assertEqual(A.get_map_time(), "interval") + + +class TestSnapRelativeSTR3DS(TestCase): + + @classmethod + def setUpClass(cls): + """Initiate the temporal GIS and set the region + """ + os.putenv("GRASS_OVERWRITE", "1") + tgis.init() + cls.use_temp_region() + cls.runModule("g.region", s=0, n=80, w=0, e=120, b=0, + t=50, res=10, res3=10) + cls.runModule("r3.mapcalc", expression="a1 = 100", overwrite=True) + cls.runModule("r3.mapcalc", expression="a2 = 200", overwrite=True) + cls.runModule("r3.mapcalc", expression="a3 = 300", overwrite=True) + cls.runModule("r3.mapcalc", expression="a4 = 400", overwrite=True) + + cls.runModule("t.create", type="str3ds", temporaltype="relative", + output="A", title="A test", + description="A test", overwrite=True) + + cls.runModule("t.register", type="raster_3d", input="A", + maps="a1,a2,a3,a4", + start="0", + increment="14", unit="days", + overwrite=True) + @classmethod + def tearDownClass(cls): + """Remove the temporary region + """ + cls.del_temp_region() + cls.runModule("t.remove", flags="rf", type="str3ds", inputs="A") + + def test_1_metadata(self): + """Set title, description and aggregation""" + + A = tgis.open_old_stds("A", type="str3ds") + A.select() + self.assertEqual(A.get_map_time(), "point") + + self.assertModule("t.snap", input="A", type="str3ds") + + A.select() + self.assertEqual(A.get_map_time(), "interval") + + + +class TestSnapAbsoluteSTVDS(TestCase): + + @classmethod + def setUpClass(cls): + """Initiate the temporal GIS and set the region + """ + os.putenv("GRASS_OVERWRITE", "1") + tgis.init() + cls.use_temp_region() + cls.runModule("g.region", s=0, n=80, w=0, e=120, b=0, + t=50, res=10, res3=10) + cls.runModule("v.random", quiet=True, npoints=20, seed=1, output='a1') + cls.runModule("v.random", quiet=True, npoints=20, seed=1, output='a2') + cls.runModule("v.random", quiet=True, npoints=20, seed=1, output='a3') + cls.runModule("v.random", quiet=True, npoints=20, seed=1, output='a4') + + cls.runModule("t.create", type="stvds", temporaltype="absolute", + output="A", title="A test", + description="A test", overwrite=True) + + cls.runModule("t.register", type="vector", input="A", + maps="a1,a2,a3,a4", + start="2001-01-01", + increment="14 days", + overwrite=True) + @classmethod + def tearDownClass(cls): + """Remove the temporary region + """ + cls.del_temp_region() + cls.runModule("t.remove", flags="rf", type="stvds", inputs="A") + + def test_1_metadata(self): + """Set title, description and aggregation""" + + A = tgis.open_old_stds("A", type="stvds") + A.select() + self.assertEqual(A.get_map_time(), "point") + + self.assertModule("t.snap", input="A", type="stvds") + + A.select() + self.assertEqual(A.get_map_time(), "interval") + + +class TestSnapRelativeSTVDS(TestCase): + + @classmethod + def setUpClass(cls): + """Initiate the temporal GIS and set the region + """ + os.putenv("GRASS_OVERWRITE", "1") + tgis.init() + cls.use_temp_region() + cls.runModule("g.region", s=0, n=80, w=0, e=120, b=0, + t=50, res=10, res3=10) + cls.runModule("v.random", quiet=True, npoints=20, seed=1, output='a1') + cls.runModule("v.random", quiet=True, npoints=20, seed=1, output='a2') + cls.runModule("v.random", quiet=True, npoints=20, seed=1, output='a3') + cls.runModule("v.random", quiet=True, npoints=20, seed=1, output='a4') + + cls.runModule("t.create", type="stvds", temporaltype="relative", + output="A", title="A test", + description="A test", overwrite=True) + + cls.runModule("t.register", type="vector", input="A", + maps="a1,a2,a3,a4", + start="0", + increment="14", unit="days", + overwrite=True) + @classmethod + def tearDownClass(cls): + """Remove the temporary region + """ + cls.del_temp_region() + cls.runModule("t.remove", flags="rf", type="stvds", inputs="A") + + def test_1_metadata(self): + """Set title, description and aggregation""" + + A = tgis.open_old_stds("A", type="stvds") + A.select() + self.assertEqual(A.get_map_time(), "point") + + self.assertModule("t.snap", input="A", type="stvds") + + A.select() + self.assertEqual(A.get_map_time(), "interval") + + +if __name__ == '__main__': + from grass.gunittest.main import test + test() + From svn_grass at osgeo.org Wed Sep 16 13:32:30 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Wed, 16 Sep 2015 13:32:30 -0700 Subject: [GRASS-SVN] r66252 - grass-addons/grass7/raster/r.biodiversity Message-ID: <20150916203230.32981390135@trac.osgeo.org> Author: pvanbosgeo Date: 2015-09-16 13:32:30 -0700 (Wed, 16 Sep 2015) New Revision: 66252 Modified: grass-addons/grass7/raster/r.biodiversity/r.biodiversity.html grass-addons/grass7/raster/r.biodiversity/r.biodiversity.py Log: Added the Pielou eveness and the Shannon effective species number indici Modified: grass-addons/grass7/raster/r.biodiversity/r.biodiversity.html =================================================================== --- grass-addons/grass7/raster/r.biodiversity/r.biodiversity.html 2015-09-16 18:41:25 UTC (rev 66251) +++ grass-addons/grass7/raster/r.biodiversity/r.biodiversity.html 2015-09-16 20:32:30 UTC (rev 66252) @@ -1,42 +1,114 @@

      DESCRIPTION

      -

      r.biodiversity computes one or more biodiversity indici based on 2 or more input layers. Each layer should represents a species (or other categories being used), and its raster values the species count. The name of the output layers will consist of the base name provided by the user. Currently implemented are the Renyi entropy index and three specialized cases of the Renyi enthropy, -viz.the species richness, the Shannon index and the Simpson index (Legendre & Legendre, 1998). +

      r.biodiversity computes one or more biodiversity indici +based on 2 or more input layers. Each layer should represents a +species (or other categories being used), and its raster values the +category count/value. The name of the output layers will consist of +the base name provided by the user. Currently implemented are the +Renyi entropy index and a number of specialized cases of the Renyi +enthropy, viz.the species richness, the Shannon index, the Shannon +based effective number of species (ENS), the Simpson index (inverse +and gini variants), pielou's eveness (Legendre & Legendre, 1998).

      The Renyi enthropy

      -

      This index uantify the diversity, uncertainty, or randomness of a system. The user can define the order of diversity by setting the order (alpha) value. The order of a diversity indicates its -sensitivity to common and rare species. The diversity of order zero ( alpha = 0) is completely insensitive to species frequencies and is better known as species richness. Increasing the order diminishes the relative weights of rare species in the resulting index (Jost 2006, Legendre & Legendre 1998). The name of the output layer is composed of the basename + renyi + alpha. +

      This index uantify the diversity, uncertainty, or randomness of a +system. The user can define the order of diversity by setting the +order (alpha) value. The order of a diversity indicates its +sensitivity to common and rare species. The diversity of order zero +( alpha = 0) is completely insensitive to species +frequencies and is better known as species richness. Increasing the +order diminishes the relative weights of rare species in the +resulting index (Jost 2006, Legendre & Legendre 1998). The name of +the output layer is composed of the basename + renyi + alpha.

      Species richness

      -

      The species richness is simply the count of the number of layers. It is a special case of the Reny enthropy: s = exp(R0), whereby s is the species richness R0 the renyi index for alpha=0. The name of the output layer is composed of the basename + -richness. +

      The species richness is simply the count of the number of layers. +It is a special case of the Reny enthropy: S = exp(R0), +whereby S is the species richness R0 the renyi index +for alpha=0. The name of the output layer is composed of the +basename + richness.

      Shannon index

      -

      The Shannon (also called the Shannon-Weaver or Shannon-Wiener) index is defined as H = -sum(p_i x log(p_i)), where p_i is the proportional abundance of species i. The function uses the natural logarithm (one can also use other bases for the log, but that is currently not implemented, and doesn't make a real difference). Note the Shannon index is a special case of the Renyi enthropy for alpha = 2. The name of the output layer is composed of the basename + shannon. +

      The Shannon (also called the Shannon-Weaver or Shannon-Wiener) +index is defined as H' = -sum(p_i x log(p_i)), where p_i + is the proportional abundance of species i. The function +uses the natural logarithm (one can also use other bases for the +log, but that is currently not implemented, and doesn't make a real +difference). Note the Shannon index is a special case of the Renyi +enthropy for alpha = 2. The name of the output layer is +composed of the basename + shannon. -

      Simpson (concentration) index

      +

      Effective number of species (ENS)

      -

      The Simpson's index is defined as D = sum p_i^2. This is equivalent to -1 * 1 / exp(R2), with R2 the renyi index for alpha=2. With this index, 0 represents infinite diversity and 1, no diversity. The name of the output layer is composed of the basename + simpson. +

      This option gives the Shannon index, converted to into equivalent +or effective numbers of species (also known as Hill numbers) (Lou +Jost, 2006). The Shannon index, and other indice, can be converted +so they represent the number of equally abundant species necessary +to produce the observed value of diversity (an analogue the concept +of effective population size in genetics). An advantage of the ENS +is a more intuitive behavious, e.g., if two communities with equally +abundant but totally distinct species are combined, the ENS of the +combined community is twice that of the original communities. See +for an explanation and examples this blog post or +this one. The name of the output layer is composed of the +basename + ens. +

      Pielou's eveness (equitability) index

      + +

      Species evenness refers to how close in numbers each species in +an environment are. The evenness of a community can be represented +by Pielou's evenness index, which is defined as H' / Hmax. H' +is the Shannon diversity index and Hmax the maximum value of H', +equal to log(species richness). Note that a weakness of this index +is its dependence on species counts, and more specifically that it +is a ratio of a relatively stable index, H', and one that is +strongly dependent on sample size, S. The name of the output layer +is composed of the basename + pielou. +

      Inverse Simpson index (Simpson's Reciprocal Index)

      -

      D obtains small values in datasets of high diversity and large values in datasets of low diversity. This is counterintuitive behavior for a diversity index. An alternative is the inverse Simpson index, which is ID = 1 / D). The index represents the probability that two individuals randomly selected from a sample will belong to different species. The value ranges between 0 and 1, but now, the greater the value, the greater the sample diversity. The name of the output layer is composed of the basename + invsimpson. +

      The Simpson's index is defined as D = sum p_i^2. This is +equivalent to -1 * 1 / exp(R2), with R2 the renyi +index for alpha=2. With this index, 0 represents infinite +diversity and 1, no diversity. This is counterintuitive behavior for +a diversity index. An alternative is the inverse Simpson index is +defined as ID = 1 / D). The index represents the probability +that two individuals randomly selected from a sample will belong to +different species. The value ranges between 0 and 1, with greater +values representing greater sample diversity. The name of the output +layer is composed of the basename + invsimpson.

      Gini-Simpson index

      -

      An alternative way to overcome the problem of the counter-intuitive nature of Simpson's Index is to use 1 - D). The lowest value of this index is 1 and represent a community containing only one species. The higher the value, the greater the diversity. The maximum value is the number of species in the sample. The name of the output layer is composed of the basename + ginisimpson. +

      An alternative way to overcome the problem of the +counter-intuitive nature of Simpson's Index is to use 1 - D). +The lowest value of this index is 1 and represent a community +containing only one species. The higher the value, the greater the +diversity. The maximum value is the number of species in the sample. +The name of the output layer is composed of the basename + +ginisimpson.

      NOTES

      -

      Note that if you are interested in the landscape diversity, you should have a look at the r.diversity addon or the various related r.li.* addons (see below). These functions requires one input layer and compute the diversity using a moving window. +

      Note that if you are interested in the landscape diversity, you +should have a look at the +r.diversity addon or the various related r.li.* addons (see +below). These functions requires one input layer and compute the +diversity using a moving window.

      EXAMPLES

      -

      Suppose we have five layers, each representing number of individuals of a different species. To keep it simple, let's assume individuals of all five species are homogeneous distributed, with respectively 60, 10, 25, 1 and 4 individuals / raster cell densities. +

      Suppose we have five layers, each representing number of +individuals of a different species. To keep it simple, let's assume +individuals of all five species are homogeneous distributed, with +respectively 60, 10, 25, 1 and 4 individuals / raster cell densities.

       r.mapcalc "spec1 = 60"
      @@ -46,23 +118,31 @@
       r.mapcalc "spec5 = 4"
       
      -Now we can calculate the renyi index for alpha is 0, 1 and 2 (this will give you 1.61, 1.06 and 0.83 respectively) +

      Now we can calculate the renyi index for alpha is 0, 1 and 2 (this +will give you 1.61, 1.06 and 0.83 respectively)

       r.biodiversity in=spec1,spec2,spec3,spec4,spec5 out=renyi alpha=0,1,2
       
      -

      You can also compute the species richness, shannon, simpson, inverse simpson and gini-simpson indici +

      You can also compute the species richness, shannon, simpson, +inverse simpson and gini-simpson indici -

      -r.biodiversity -s -h -d -p -g in=spec1,spec2,spec3,spec4,spec5 out=biodiversity
      -
      +
       r.biodiversity -s -h -d -p -g 
      +in=spec1,spec2,spec3,spec4,spec5 out=biodiversity 
      -

      The species richness you get should of course be 5. The shannon index is the same as the renyi index with alpha=1 (1.06). The simpson should be 0.43, and inverse simpson and gini-simpson will be 2.3 and 0.57 respectively. +

      The species richness you get should of course be 5. The shannon +index is the same as the renyi index with alpha=1 (1.06). The +simpson should be 0.43, and inverse simpson and gini-simpson will be +2.3 and 0.57 respectively.

      SEE ALSO

      -r.li, r.li.pielou, r.li.renyi, r.li.shannon, r.li.simpson are all add-ons that compute landscape diversity indici. +r.li, r.li.pielou +, r.li.renyi, r.li.shannon, +r.li.simpson are all add-ons that compute landscape diversity +indici.

      REFERENCES

        @@ -74,4 +154,4 @@

        AUTHOR

        Paulo van Breugel, paulo at ecodiv.org -

        Last changed: $Date: 2015-09-11 19:24:14 +0200 (vr, 11 sep 2015) $ +

        Last changed: $Date$ Modified: grass-addons/grass7/raster/r.biodiversity/r.biodiversity.py =================================================================== --- grass-addons/grass7/raster/r.biodiversity/r.biodiversity.py 2015-09-16 18:41:25 UTC (rev 66251) +++ grass-addons/grass7/raster/r.biodiversity/r.biodiversity.py 2015-09-16 20:32:30 UTC (rev 66252) @@ -26,6 +26,7 @@ #% keyword: simpson #% keyword: richness #% keyword: biodiversity +#% keyword: eveness #%End #%option @@ -51,7 +52,7 @@ #%flag #% key: r -#% description: Compute the renyi enthropy index +#% description: Renyi enthropy index #% guisection: Indices #%end @@ -71,36 +72,42 @@ #%flag #% key: s -#% description: Compute the richness index +#% description: Richness index #% guisection: Indices #%end #%flag #% key: h -#% description: Compute the Shannon index +#% description: Shannon index #% guisection: Indices #%end #%flag -#% key: d -#% description: Compute the Simpson index +#% key: p +#% description: Reversed Simpson index #% guisection: Indices #%end #%flag -#% key: p -#% description: Compute the Reversed Simpson index +#% key: g +#% description: Gini-Simpson index #% guisection: Indices #%end #%flag -#% key: g -#% description: Compute the Gini-Simpson index +#% key: e +#% description: Pielou's evenness index #% guisection: Indices #%end +#%flag +#% key: n +#% description: Shannon effective number of species +#% guisection: Indices +#%end + #%rules -#% required: -r,-s,-h,-d,-p,-g +#% required: -r,-s,-h,-e,-p,-g,-n #%end #---------------------------------------------------------------------------- @@ -147,8 +154,8 @@ #---------------------------------------------------------------------------- def main(): - #options = {"input":"spec1,spec2", "output":"test", "alpha":""} - #flags = {"r":"False", "s":True, "h":True, "d":True, "p":True, "g":False} + #options = {"input":"spec1,spec2,spec3,spec4,spec5", "output":"AAA9", "alpha":"4"} + #flags = {"r":"False", "s":True, "h":True, "e":True, "p":True, "n":True, "g":True} #-------------------------------------------------------------------------- # Variables @@ -164,9 +171,10 @@ flag_r = flags['r'] flag_s = flags['s'] flag_h = flags['h'] - flag_d = flags['d'] + flag_e = flags['e'] flag_p = flags['p'] flag_g = flags['g'] + flag_n = flags['n'] if options['alpha']: Q = map(float, options['alpha'].split(',')) else: @@ -182,12 +190,16 @@ Q.append(0.0) if flag_h and not 1.0 in Q: Q.append(1.0) - if flag_d and not 2.0 in Q: - Q.append(2.0) + if flag_e and not 0.0 in Q: + Q.append(0.0) + if flag_e and not 1.0 in Q: + Q.append(1.0) if flag_p and not 2.0 in Q: Q.append(2.0) if flag_g and not 2.0 in Q: Q.append(2.0) + if flag_n and not 1.0 in Q: + Q.append(1.0) #-------------------------------------------------------------------------- # Renyi entropy @@ -252,7 +264,7 @@ out_div=out_div, in_div=in_div, quiet=True) - if 0.0 not in Qoriginal: + if 0.0 not in Qoriginal and not flag_e: grass.run_command("g.remove", flags="f", type="raster", name=in_div, quiet=True) @@ -262,26 +274,44 @@ if flag_h: out_div = OUT + "_shannon" in_div = OUT + "_Renyi_1_0" - if 1.0 in Qoriginal: + if 1.0 in Qoriginal or flag_e or flag_n: grass.run_command("g.copy", raster=(in_div,out_div), quiet=True) else: grass.run_command("g.rename", raster=(in_div,out_div), quiet=True) - + #-------------------------------------------------------------------------- - # Simpson index + # Shannon Effective Number of Species (ENS) #-------------------------------------------------------------------------- - if flag_d: - out_div = OUT + "_simpson" - in_div = OUT + "_Renyi_2_0" - grass.mapcalc("$out_div = 1.0 / (exp($in_div))", + if flag_n: + out_div = OUT + "_ens" + in_div = OUT + "_Renyi_1_0" + grass.mapcalc("$out_div = exp($in_div)", out_div=out_div, in_div=in_div, quiet=True) - if 2.0 not in Qoriginal and not flag_p and not flag_g: + if 1.0 not in Qoriginal and not flag_e: grass.run_command("g.remove", flags="f", type="raster", name=in_div, quiet=True) - + #-------------------------------------------------------------------------- + # Eveness + #-------------------------------------------------------------------------- + if flag_e: + out_div = OUT + "_eveness" + in_div1 = OUT + "_Renyi_0_0" + in_div2 = OUT + "_Renyi_1_0" + grass.mapcalc("$out_div = $in_div2 / $in_div1", + out_div=out_div, + in_div1=in_div1, + in_div2=in_div2, + quiet=True) + if 0.0 not in Qoriginal: + grass.run_command("g.remove", flags="f", type="raster", + name=in_div1, quiet=True) + if 1.0 not in Qoriginal: + grass.run_command("g.remove", flags="f", type="raster", + name=in_div2, quiet=True) + #-------------------------------------------------------------------------- # Inversed Simpson index #-------------------------------------------------------------------------- if flag_p: From svn_grass at osgeo.org Thu Sep 17 13:21:03 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Thu, 17 Sep 2015 13:21:03 -0700 Subject: [GRASS-SVN] r66253 - grass/trunk/mswindows Message-ID: <20150917202103.2F4373900B4@trac.osgeo.org> Author: hellik Date: 2015-09-17 13:21:03 -0700 (Thu, 17 Sep 2015) New Revision: 66253 Modified: grass/trunk/mswindows/GRASS-Installer.nsi.tmpl Log: GRASS-Installer.nsi.tmpl: - elevate run_gmkfontcap.bat - add debug if AccessControl:GrantOnFile succeeded Modified: grass/trunk/mswindows/GRASS-Installer.nsi.tmpl =================================================================== --- grass/trunk/mswindows/GRASS-Installer.nsi.tmpl 2015-09-16 20:32:30 UTC (rev 66252) +++ grass/trunk/mswindows/GRASS-Installer.nsi.tmpl 2015-09-17 20:21:03 UTC (rev 66253) @@ -528,10 +528,14 @@ SetOutPath "$INSTALL_DIR" File /r ${PACKAGE_FOLDER}\*.* - ;grant $INSTDIR\etc read write accessible - AccessControl::GrantOnFile "$INSTDIR\etc" "(S-1-5-32-545)" "GenericRead + GenericWrite" - ;grant modifying/overwriting fontcap file - AccessControl::GrantOnFile "$INSTDIR\etc\fontcap" "(S-1-5-32-545)" "GenericRead + GenericWrite + Delete" + ;grant $INSTDIR\etc read write accessible and show if succeeded: error if it failed + AccessControl::GrantOnFile "$INSTDIR\etc" "(S-1-5-32-545)" "GenericRead + GenericWrite + GenericExecute" + Pop $R0 + DetailPrint $R0 + ;grant modifying/overwriting fontcap file and show if succeeded: error if it failed + AccessControl::GrantOnFile "$INSTDIR\etc\fontcap" "(S-1-5-32-545)" "GenericRead + GenericWrite + Delete + GenericExecute" + Pop $R0 + DetailPrint $R0 ;create run_gmkfontcap.bat ClearErrors @@ -581,7 +585,7 @@ FileWrite $0 ' $\r$\n' FileWrite $0 ' $\r$\n' FileWrite $0 ' $\r$\n' FileWrite $0 ' $\r$\n' FileWrite $0 ' $\r$\n' From svn_grass at osgeo.org Thu Sep 17 13:32:23 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Thu, 17 Sep 2015 13:32:23 -0700 Subject: [GRASS-SVN] r66254 - grass/trunk/mswindows Message-ID: <20150917203223.ADE743900B4@trac.osgeo.org> Author: hellik Date: 2015-09-17 13:32:23 -0700 (Thu, 17 Sep 2015) New Revision: 66254 Modified: grass/trunk/mswindows/GRASS-Installer.nsi.tmpl Log: GRASS-Installer.nsi.tmpl: GrantOnFile => FullAccess Modified: grass/trunk/mswindows/GRASS-Installer.nsi.tmpl =================================================================== --- grass/trunk/mswindows/GRASS-Installer.nsi.tmpl 2015-09-17 20:21:03 UTC (rev 66253) +++ grass/trunk/mswindows/GRASS-Installer.nsi.tmpl 2015-09-17 20:32:23 UTC (rev 66254) @@ -529,11 +529,11 @@ File /r ${PACKAGE_FOLDER}\*.* ;grant $INSTDIR\etc read write accessible and show if succeeded: error if it failed - AccessControl::GrantOnFile "$INSTDIR\etc" "(S-1-5-32-545)" "GenericRead + GenericWrite + GenericExecute" + AccessControl::GrantOnFile "$INSTDIR\etc" "(S-1-5-32-545)" "FullAccess" Pop $R0 DetailPrint $R0 ;grant modifying/overwriting fontcap file and show if succeeded: error if it failed - AccessControl::GrantOnFile "$INSTDIR\etc\fontcap" "(S-1-5-32-545)" "GenericRead + GenericWrite + Delete + GenericExecute" + AccessControl::GrantOnFile "$INSTDIR\etc\fontcap" "(S-1-5-32-545)" "FullAccess" Pop $R0 DetailPrint $R0 From svn_grass at osgeo.org Thu Sep 17 18:43:24 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Thu, 17 Sep 2015 18:43:24 -0700 Subject: [GRASS-SVN] r66255 - grass/trunk/vector/v.in.lidar Message-ID: <20150918014324.DA2F739012E@trac.osgeo.org> Author: annakrat Date: 2015-09-17 18:43:24 -0700 (Thu, 17 Sep 2015) New Revision: 66255 Modified: grass/trunk/vector/v.in.lidar/main.c Log: v.in.lidar: use unsigned long long for counting point counts, fixes #2472 (co-author wenzeslaus) Modified: grass/trunk/vector/v.in.lidar/main.c =================================================================== --- grass/trunk/vector/v.in.lidar/main.c 2015-09-17 20:32:23 UTC (rev 66254) +++ grass/trunk/vector/v.in.lidar/main.c 2015-09-18 01:43:24 UTC (rev 66255) @@ -143,12 +143,18 @@ int return_filter; int skipme; int point_class; - unsigned int not_valid; struct line_pnts *Points; struct line_cats *Cats; - unsigned int n_features, feature_count, n_outside, n_filtered, n_class_filtered; +#ifdef HAVE_LONG_LONG_INT + unsigned long long n_features, feature_count, n_outside, + n_filtered, n_class_filtered, not_valid; +#else + unsigned long n_features, feature_count, n_outside, + n_filtered, n_class_filtered, not_valid; +#endif + int overwrite; G_gisinit(argv[0]); @@ -687,12 +693,19 @@ int skip_every = 0; int preserve_every = 0; int every_counter = 0; - int n_count_filtered = 0; - int offset_n = 0; - int offset_n_counter = 0; - int limit_n = 0; - /* we are not counting it elsewhere except for cat */ - int limit_n_counter = 0; +#ifdef HAVE_LONG_LONG_INT + unsigned long long n_count_filtered = 0; + unsigned long long offset_n = 0; + unsigned long long offset_n_counter = 0; + unsigned long long limit_n = 0; + unsigned long long limit_n_counter = 0; +#else + unsigned long n_count_filtered = 0; + unsigned long offset_n = 0; + unsigned long offset_n_counter = 0; + unsigned long limit_n = 0; + unsigned long limit_n_counter = 0; +#endif if (skip_opt->answer) skip_every = atoi(skip_opt->answer); if (preserve_opt->answer) @@ -701,8 +714,11 @@ offset_n = atoi(offset_opt->answer); if (limit_opt->answer) limit_n = atoi(limit_opt->answer); - - G_important_message(_("Scanning %d points..."), n_features); +#ifdef HAVE_LONG_LONG_INT + G_important_message(_("Scanning %llu points..."), n_features); +#else + G_important_message(_("Scanning %lu points..."), n_features); +#endif while ((LAS_point = LASReader_GetNextPoint(LAS_reader)) != NULL) { double x, y, z; @@ -900,24 +916,46 @@ Vect_build(&Map); Vect_close(&Map); +#ifdef HAVE_LONG_LONG_INT if (limit_n) + G_message(_("%llu points imported (limit was %llu)"), limit_n_counter, limit_n); + else + G_message(_("%llu points imported"), + n_features - not_valid - n_outside - n_filtered - n_class_filtered + - offset_n_counter - n_count_filtered); + if (not_valid) + G_message(_("%llu input points were not valid"), not_valid); + if (n_outside) + G_message(_("%llu input points were outside of the selected area"), n_outside); + if (n_filtered) + G_message(_("%llu input points were filtered out by return number"), n_filtered); + if (n_class_filtered) + G_message(_("%llu input points were filtered out by class number"), n_class_filtered); + if (offset_n_counter) + G_message(_("%llu input points were skipped at the begging using offset"), offset_n_counter); + if (n_count_filtered) + G_message(_("%llu input points were skipped by count-based decimation"), n_count_filtered); +#else + if (limit_n) G_message(_("%d points imported (limit was %d)"), limit_n_counter, limit_n); else G_message(_("%d points imported"), n_features - not_valid - n_outside - n_filtered - n_class_filtered - offset_n_counter - n_count_filtered); if (not_valid) - G_message(_("%d input points were not valid"), not_valid); + G_message(_("%lu input points were not valid"), not_valid); if (n_outside) - G_message(_("%d input points were outside of the selected area"), n_outside); + G_message(_("%lu input points were outside of the selected area"), n_outside); if (n_filtered) - G_message(_("%d input points were filtered out by return number"), n_filtered); + G_message(_("%lu input points were filtered out by return number"), n_filtered); if (n_class_filtered) - G_message(_("%d input points were filtered out by class number"), n_class_filtered); + G_message(_("%lu input points were filtered out by class number"), n_class_filtered); if (offset_n_counter) - G_message(_("%d input points were skipped at the begging using offset"), offset_n_counter); + G_message(_("%lu input points were skipped at the begging using offset"), offset_n_counter); if (n_count_filtered) - G_message(_("%d input points were skipped by count-based decimation"), n_count_filtered); + G_message(_("%lu input points were skipped by count-based decimation"), n_count_filtered); + G_message(_("Accuracy of the printed point counts might be limited by your computer architecture.")); +#endif if (limit_n) G_message(_("The rest of points was ignored")); From svn_grass at osgeo.org Fri Sep 18 02:07:24 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Fri, 18 Sep 2015 02:07:24 -0700 Subject: [GRASS-SVN] r66256 - grass/trunk/general/g.version Message-ID: <20150918090724.CA12F39012E@trac.osgeo.org> Author: martinl Date: 2015-09-18 02:07:24 -0700 (Fri, 18 Sep 2015) New Revision: 66256 Modified: grass/trunk/general/g.version/main.c Log: g.version: add off_t size to shell output (see https://lists.osgeo.org/pipermail/grass-dev/2015-September/076366.html) Modified: grass/trunk/general/g.version/main.c =================================================================== --- grass/trunk/general/g.version/main.c 2015-09-18 01:43:24 UTC (rev 66255) +++ grass/trunk/general/g.version/main.c 2015-09-18 09:07:24 UTC (rev 66256) @@ -8,7 +8,7 @@ * Extended info by Martin Landa * PURPOSE: Output GRASS version number, date and copyright message. * -* COPYRIGHT: (C) 2000-2013 by the GRASS Development Team +* COPYRIGHT: (C) 2000-2015 by the GRASS Development Team * * This program is free software under the GPL (>=v2) * Read the file COPYING that comes with GRASS for details. @@ -103,6 +103,7 @@ fprintf(stdout, "revision=%s\n", GRASS_VERSION_SVN); fprintf(stdout, "build_date=%d-%02d-%02d\n", YEAR, MONTH, DAY); fprintf(stdout, "build_platform=%s\n", ARCH); + fprintf(stdout, "build_off_t_size=%lu\n", sizeof(off_t)); } else { fprintf(stdout, "GRASS %s (%s)\n", From svn_grass at osgeo.org Fri Sep 18 05:05:53 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Fri, 18 Sep 2015 05:05:53 -0700 Subject: [GRASS-SVN] r66257 - grass/trunk/temporal/t.register Message-ID: <20150918120553.127F93900B4@trac.osgeo.org> Author: neteler Date: 2015-09-18 05:05:52 -0700 (Fri, 18 Sep 2015) New Revision: 66257 Modified: grass/trunk/temporal/t.register/t.register.html Log: t.register manual: extend manual Modified: grass/trunk/temporal/t.register/t.register.html =================================================================== --- grass/trunk/temporal/t.register/t.register.html 2015-09-18 09:07:24 UTC (rev 66256) +++ grass/trunk/temporal/t.register/t.register.html 2015-09-18 12:05:52 UTC (rev 66257) @@ -43,6 +43,11 @@

        INPUT FILE FORMAT

        +The input file consists of a list of map names, optionally along with time stamps. +Each map name is to be stored in a row in this file. +

        +There are several options to register maps: +

        Specification of map names:

         prec_1
        @@ -53,6 +58,7 @@
         prec_6
         
        +

        Specification of map names and the absolute start time (date) of the time instances:

        @@ -64,6 +70,7 @@
         prec_6|2001-06-01
         
        +

        Specification of map names and the absolute time stamp (datetime):

         terra_lst_day20020113|2002-01-13 10:30
        @@ -73,6 +80,7 @@
         terra_lst_day20020117|2002-01-17 10:30
         
        +

        Specification of the map name and the absolute time interval with start and end time:

        @@ -88,10 +96,24 @@
         
         

        North Carolina dataset

        +

        Using a text file

        Register maps in a absolute space time dataset, creating a time interval
        +# first:  prepare a text file with a list of input maps (see above)
        +# second: register maps
         t.register -i type=raster input=precipitation_monthly \
        +    file=list_of_input_maps.txt start=2009-01-01 \
        +    increment="1 months"
        +
        + + +

        Using g.list to generate the input

        + +Register maps in a absolute space time dataset, creating a time interval + +
        +t.register -i type=raster input=precipitation_monthly \
             maps=`g.list raster pattern="*precip*" sep=comma` start=2009-01-01 \
             increment="1 months"
         
        From svn_grass at osgeo.org Fri Sep 18 05:06:39 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Fri, 18 Sep 2015 05:06:39 -0700 Subject: [GRASS-SVN] r66258 - grass/branches/releasebranch_7_0/temporal/t.register Message-ID: <20150918120639.1A1D93900B4@trac.osgeo.org> Author: neteler Date: 2015-09-18 05:06:39 -0700 (Fri, 18 Sep 2015) New Revision: 66258 Modified: grass/branches/releasebranch_7_0/temporal/t.register/t.register.html Log: t.register manual: extend manual Modified: grass/branches/releasebranch_7_0/temporal/t.register/t.register.html =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.register/t.register.html 2015-09-18 12:05:52 UTC (rev 66257) +++ grass/branches/releasebranch_7_0/temporal/t.register/t.register.html 2015-09-18 12:06:39 UTC (rev 66258) @@ -43,6 +43,11 @@

        INPUT FILE FORMAT

        +The input file consists of a list of map names, optionally along with time stamps. +Each map name is to be stored in a row in this file. +

        +There are several options to register maps: +

        Specification of map names:

         prec_1
        @@ -53,6 +58,7 @@
         prec_6
         
        +

        Specification of map names and the absolute start time (date) of the time instances:

        @@ -64,6 +70,7 @@
         prec_6|2001-06-01
         
        +

        Specification of map names and the absolute time stamp (datetime):

         terra_lst_day20020113|2002-01-13 10:30
        @@ -73,6 +80,7 @@
         terra_lst_day20020117|2002-01-17 10:30
         
        +

        Specification of the map name and the absolute time interval with start and end time:

        @@ -88,10 +96,24 @@
         
         

        North Carolina dataset

        +

        Using a text file

        Register maps in a absolute space time dataset, creating a time interval
        +# first:  prepare a text file with a list of input maps (see above)
        +# second: register maps
         t.register -i type=raster input=precipitation_monthly \
        +    file=list_of_input_maps.txt start=2009-01-01 \
        +    increment="1 months"
        +
        + + +

        Using g.list to generate the input

        + +Register maps in a absolute space time dataset, creating a time interval + +
        +t.register -i type=raster input=precipitation_monthly \
             maps=`g.list raster pattern="*precip*" sep=comma` start=2009-01-01 \
             increment="1 months"
         
        From svn_grass at osgeo.org Fri Sep 18 05:53:24 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Fri, 18 Sep 2015 05:53:24 -0700 Subject: [GRASS-SVN] r66259 - grass/trunk/temporal/t.rast.list Message-ID: <20150918125324.67FB639012E@trac.osgeo.org> Author: neteler Date: 2015-09-18 05:53:24 -0700 (Fri, 18 Sep 2015) New Revision: 66259 Modified: grass/trunk/temporal/t.rast.list/t.rast.list.html Log: t.rast.list manual: where example added; HTML cosmetics Modified: grass/trunk/temporal/t.rast.list/t.rast.list.html =================================================================== --- grass/trunk/temporal/t.rast.list/t.rast.list.html 2015-09-18 12:06:39 UTC (rev 66258) +++ grass/trunk/temporal/t.rast.list/t.rast.list.html 2015-09-18 12:53:24 UTC (rev 66259) @@ -24,7 +24,7 @@ The output column separator can be specified with the separator option. -

        EXAMPLE

        +

        EXAMPLES

        This example shows several options that are available for map layers listing. @@ -32,6 +32,7 @@ The following command is the default one, returning standard information like name, mapset, start_time, end_time of each map in the space time dataset +

         t.rast.list tempmean_monthly
        @@ -46,6 +47,7 @@
         

        Add more info

        The following command let the user to choose the columns to show +

         t.rast.list tempmean_monthly columns=name,start_time,min,max
        @@ -57,10 +59,11 @@
         2009_02_tempmean|2009-02-01 00:00:00|-1.820261|8.006386
         
        -

        Filtering the result

        +

        Filtering the result by value

        In this example the result is filtered showing only the maps with max value major than 24 +

         t.rast.list tempmean_monthly columns=name,start_time,min,max where="max > 24"
        @@ -74,11 +77,31 @@
         2012_08_tempmean|2012-08-01 00:00:00|15.718526|26.151115
         
        +

        Filtering the result by time range

        + +In this example the result is filtered showing only the maps which +fall into a specified time range +

        + +

        +t.rast.list tempmean_monthly columns=name,start_time,min,max \
        +  where="start_time > '2009-06-01 00:00:00' and start_time < '2012-08-01 00:00:00'"
        +name|start_time|min|max
        +2009_06_tempmean|2009-06-01 00:00:00|15.962669|25.819681
        +2009_07_tempmean|2009-07-01 00:00:00|15.32852|26.103664
        +2009_08_tempmean|2009-08-01 00:00:00|16.37995|27.293282
        +....
        +2012_06_tempmean|2012-06-01 00:00:00|14.929379|24.000651
        +2012_07_tempmean|2012-07-01 00:00:00|18.455802|28.794653
        +2012_08_tempmean|2012-08-01 00:00:00|15.718526|26.151115
        +
        +

        Using method option

        Method option is able to show raster in different way. By default cols value is used, the value comma will print only the list of maps -inside the space time dataset +inside the space time dataset: +

         t.rast.list method=comma input=tempmean_monthly
        @@ -101,7 +124,8 @@
         
        The delta value calculate the interval between maps and the -distance from the first map. +distance from the first map: +

         t.rast.list method=delta input=tempmean_monthly
        @@ -118,6 +142,7 @@
         The gran value it is used to return data sampled by a user
         defined granule. As default the granularity of the space time raster
         dataset is used for sampling.
        +

         t.rast.list  method=gran input=tempmean_monthly
        @@ -132,6 +157,7 @@
         2012_11_tempmean at climate_2009_2012|2012_11_tempmean|climate_2009_2012|2012-11-01 00:00:00|2012-12-01 00:00:00|30.0|1400.0
         2012_12_tempmean at climate_2009_2012|2012_12_tempmean|climate_2009_2012|2012-12-01 00:00:00|2013-01-01 00:00:00|31.0|1430.0
         
        +

         t.rast.list  method=gran input=tempmean_monthly gran="2 months"
        
        
        From svn_grass at osgeo.org  Fri Sep 18 05:54:15 2015
        From: svn_grass at osgeo.org (svn_grass at osgeo.org)
        Date: Fri, 18 Sep 2015 05:54:15 -0700
        Subject: [GRASS-SVN] r66260 -
        	grass/branches/releasebranch_7_0/temporal/t.rast.list
        Message-ID: <20150918125415.1E05639012E@trac.osgeo.org>
        
        Author: neteler
        Date: 2015-09-18 05:54:15 -0700 (Fri, 18 Sep 2015)
        New Revision: 66260
        
        Modified:
           grass/branches/releasebranch_7_0/temporal/t.rast.list/t.rast.list.html
        Log:
        t.rast.list manual: where example added; HTML cosmetics
        
        Modified: grass/branches/releasebranch_7_0/temporal/t.rast.list/t.rast.list.html
        ===================================================================
        --- grass/branches/releasebranch_7_0/temporal/t.rast.list/t.rast.list.html	2015-09-18 12:53:24 UTC (rev 66259)
        +++ grass/branches/releasebranch_7_0/temporal/t.rast.list/t.rast.list.html	2015-09-18 12:54:15 UTC (rev 66260)
        @@ -24,7 +24,7 @@
         The output column separator can be specified with the separator
         option.
         
        -

        EXAMPLE

        +

        EXAMPLES

        This example shows several options that are available for map layers listing. @@ -32,6 +32,7 @@ The following command is the default one, returning standard information like name, mapset, start_time, end_time of each map in the space time dataset +

         t.rast.list tempmean_monthly
        @@ -46,6 +47,7 @@
         

        Add more info

        The following command let the user to choose the columns to show +

         t.rast.list tempmean_monthly columns=name,start_time,min,max
        @@ -57,10 +59,11 @@
         2009_02_tempmean|2009-02-01 00:00:00|-1.820261|8.006386
         
        -

        Filtering the result

        +

        Filtering the result by value

        In this example the result is filtered showing only the maps with max value major than 24 +

         t.rast.list tempmean_monthly columns=name,start_time,min,max where="max > 24"
        @@ -74,11 +77,31 @@
         2012_08_tempmean|2012-08-01 00:00:00|15.718526|26.151115
         
        +

        Filtering the result by time range

        + +In this example the result is filtered showing only the maps which +fall into a specified time range +

        + +

        +t.rast.list tempmean_monthly columns=name,start_time,min,max \
        +  where="start_time > '2009-06-01 00:00:00' and start_time < '2012-08-01 00:00:00'"
        +name|start_time|min|max
        +2009_06_tempmean|2009-06-01 00:00:00|15.962669|25.819681
        +2009_07_tempmean|2009-07-01 00:00:00|15.32852|26.103664
        +2009_08_tempmean|2009-08-01 00:00:00|16.37995|27.293282
        +....
        +2012_06_tempmean|2012-06-01 00:00:00|14.929379|24.000651
        +2012_07_tempmean|2012-07-01 00:00:00|18.455802|28.794653
        +2012_08_tempmean|2012-08-01 00:00:00|15.718526|26.151115
        +
        +

        Using method option

        Method option is able to show raster in different way. By default cols value is used, the value comma will print only the list of maps -inside the space time dataset +inside the space time dataset: +

         t.rast.list method=comma input=tempmean_monthly
        @@ -101,7 +124,8 @@
         
        The delta value calculate the interval between maps and the -distance from the first map. +distance from the first map: +

         t.rast.list method=delta input=tempmean_monthly
        @@ -118,6 +142,7 @@
         The gran value it is used to return data sampled by a user
         defined granule. As default the granularity of the space time raster
         dataset is used for sampling.
        +

         t.rast.list  method=gran input=tempmean_monthly
        @@ -132,6 +157,7 @@
         2012_11_tempmean at climate_2009_2012|2012_11_tempmean|climate_2009_2012|2012-11-01 00:00:00|2012-12-01 00:00:00|30.0|1400.0
         2012_12_tempmean at climate_2009_2012|2012_12_tempmean|climate_2009_2012|2012-12-01 00:00:00|2013-01-01 00:00:00|31.0|1430.0
         
        +

         t.rast.list  method=gran input=tempmean_monthly gran="2 months"
        
        
        From svn_grass at osgeo.org  Fri Sep 18 17:48:31 2015
        From: svn_grass at osgeo.org (svn_grass at osgeo.org)
        Date: Fri, 18 Sep 2015 17:48:31 -0700
        Subject: [GRASS-SVN] r66261 - in grass/trunk/temporal: . t.info t.list
        	t.merge
        Message-ID: <20150919004831.62EB6390112@trac.osgeo.org>
        
        Author: neteler
        Date: 2015-09-18 17:48:31 -0700 (Fri, 18 Sep 2015)
        New Revision: 66261
        
        Modified:
           grass/trunk/temporal/t.info/t.info.html
           grass/trunk/temporal/t.list/t.list.html
           grass/trunk/temporal/t.merge/t.merge.html
           grass/trunk/temporal/temporalintro.html
        Log:
        temporal manual: explain usage of temporal databases stored in other mapsets
        
        Modified: grass/trunk/temporal/t.info/t.info.html
        ===================================================================
        --- grass/trunk/temporal/t.info/t.info.html	2015-09-18 12:54:15 UTC (rev 66260)
        +++ grass/trunk/temporal/t.info/t.info.html	2015-09-19 00:48:31 UTC (rev 66261)
        @@ -15,6 +15,12 @@
         In addition, information about the chosen temporal database backend
         can be reported.
         
        +

        NOTES

        + +Temporal databases stored in other mapsets can be used as long as they +are in the user's current mapset search path (managed with +g.mapsets). +

        EXAMPLES

        Temporal DBMI information

        Modified: grass/trunk/temporal/t.list/t.list.html =================================================================== --- grass/trunk/temporal/t.list/t.list.html 2015-09-18 12:54:15 UTC (rev 66260) +++ grass/trunk/temporal/t.list/t.list.html 2015-09-19 00:48:31 UTC (rev 66261) @@ -13,9 +13,13 @@

        NOTES

        -The SQL where and sort expression will be applied for each temporal -database that was found in accessible mapsets. Hence sorting works only -on mapset basis. +The SQL where and sort expression will be applied for +each temporal database that was found in accessible mapsets. Hence +sorting works only on mapset basis. +

        +Temporal databases stored in other mapsets can be used as long as they +are in the user's current mapset search path (managed with +g.mapsets).

        EXAMPLES

        Modified: grass/trunk/temporal/t.merge/t.merge.html =================================================================== --- grass/trunk/temporal/t.merge/t.merge.html 2015-09-18 12:54:15 UTC (rev 66260) +++ grass/trunk/temporal/t.merge/t.merge.html 2015-09-19 00:48:31 UTC (rev 66261) @@ -13,6 +13,12 @@ the output space time dataset, hence the same maps can be registered in different input space time datasets. +

        NOTES

        + +Temporal databases stored in other mapsets can be used as long as they +are in the user's current mapset search path (managed with +g.mapsets). +

        Examples

        In this example we will create two space time raster datasets and Modified: grass/trunk/temporal/temporalintro.html =================================================================== --- grass/trunk/temporal/temporalintro.html 2015-09-18 12:54:15 UTC (rev 66260) +++ grass/trunk/temporal/temporalintro.html 2015-09-19 00:48:31 UTC (rev 66261) @@ -21,7 +21,10 @@

        Temporal data management in general

        Space time datasets are stored in a temporal database. SQLite3 or -PostgreSQL are supported as SQL database back end. +PostgreSQL are supported as SQL database back end. Temporal databases +stored in other mapsets can be used as long as they are in the +user's current mapset search path (managed with g.mapsets). +

        Connection settings are performed with t.connect. As default a sqlite3 database will be created in the current mapset that stores all space time datasets and registered time series maps. @@ -187,10 +190,10 @@

      • Gebbert, S., Pebesma, E., 2014. TGRASS: A temporal GIS for field based environmental modeling. Environmental Modelling & Software 53, 1-12. (DOI)
      • +
      • Temporal data processing (Wiki)
      • Vaclav Petras, Anna Petrasova, Helena Mitasova, Markus Neteler, FOSS4G 2014 workshop:
        Spatio-temporal data handling and visualization in GRASS GIS
      • -
      • Temporal data processing (Wiki)
      • -
      • GEOSTAT TGRASS Course
      • +
      • GEOSTAT 2012 TGRASS Course
      From svn_grass at osgeo.org Fri Sep 18 17:49:05 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Fri, 18 Sep 2015 17:49:05 -0700 Subject: [GRASS-SVN] r66262 - in grass/branches/releasebranch_7_0/temporal: . t.info t.list t.merge Message-ID: <20150919004905.5A7B7390112@trac.osgeo.org> Author: neteler Date: 2015-09-18 17:49:05 -0700 (Fri, 18 Sep 2015) New Revision: 66262 Modified: grass/branches/releasebranch_7_0/temporal/t.info/t.info.html grass/branches/releasebranch_7_0/temporal/t.list/t.list.html grass/branches/releasebranch_7_0/temporal/t.merge/t.merge.html grass/branches/releasebranch_7_0/temporal/temporalintro.html Log: temporal manual: explain usage of temporal databases stored in other mapsets Modified: grass/branches/releasebranch_7_0/temporal/t.info/t.info.html =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.info/t.info.html 2015-09-19 00:48:31 UTC (rev 66261) +++ grass/branches/releasebranch_7_0/temporal/t.info/t.info.html 2015-09-19 00:49:05 UTC (rev 66262) @@ -15,6 +15,12 @@ In addition, information about the chosen temporal database backend can be reported. +

      NOTES

      + +Temporal databases stored in other mapsets can be used as long as they +are in the user's current mapset search path (managed with +g.mapsets). +

      EXAMPLES

      Temporal DBMI information

      Modified: grass/branches/releasebranch_7_0/temporal/t.list/t.list.html =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.list/t.list.html 2015-09-19 00:48:31 UTC (rev 66261) +++ grass/branches/releasebranch_7_0/temporal/t.list/t.list.html 2015-09-19 00:49:05 UTC (rev 66262) @@ -13,9 +13,13 @@

      NOTES

      -The SQL where and sort expression will be applied for each temporal -database that was found in accessible mapsets. Hence sorting works only -on mapset basis. +The SQL where and sort expression will be applied for +each temporal database that was found in accessible mapsets. Hence +sorting works only on mapset basis. +

      +Temporal databases stored in other mapsets can be used as long as they +are in the user's current mapset search path (managed with +g.mapsets).

      EXAMPLES

      Modified: grass/branches/releasebranch_7_0/temporal/t.merge/t.merge.html =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.merge/t.merge.html 2015-09-19 00:48:31 UTC (rev 66261) +++ grass/branches/releasebranch_7_0/temporal/t.merge/t.merge.html 2015-09-19 00:49:05 UTC (rev 66262) @@ -13,6 +13,12 @@ the output space time dataset, hence the same maps can be registered in different input space time datasets. +

      NOTES

      + +Temporal databases stored in other mapsets can be used as long as they +are in the user's current mapset search path (managed with +g.mapsets). +

      Examples

      In this example we will create two space time raster datasets and Modified: grass/branches/releasebranch_7_0/temporal/temporalintro.html =================================================================== --- grass/branches/releasebranch_7_0/temporal/temporalintro.html 2015-09-19 00:48:31 UTC (rev 66261) +++ grass/branches/releasebranch_7_0/temporal/temporalintro.html 2015-09-19 00:49:05 UTC (rev 66262) @@ -21,7 +21,10 @@

      Temporal data management in general

      Space time datasets are stored in a temporal database. SQLite3 or -PostgreSQL are supported as SQL database back end. +PostgreSQL are supported as SQL database back end. Temporal databases +stored in other mapsets can be used as long as they are in the +user's current mapset search path (managed with g.mapsets). +

      Connection settings are performed with t.connect. As default a sqlite3 database will be created in the current mapset that stores all space time datasets and registered time series maps. @@ -189,10 +192,10 @@

    • Gebbert, S., Pebesma, E., 2014. TGRASS: A temporal GIS for field based environmental modeling. Environmental Modelling & Software 53, 1-12. (DOI)
    • +
    • Temporal data processing (Wiki)
    • Vaclav Petras, Anna Petrasova, Helena Mitasova, Markus Neteler, FOSS4G 2014 workshop:
      Spatio-temporal data handling and visualization in GRASS GIS
    • -
    • Temporal data processing (Wiki)
    • -
    • GEOSTAT TGRASS Course
    • +
    • GEOSTAT 2012 TGRASS Course
    From svn_grass at osgeo.org Fri Sep 18 21:17:08 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Fri, 18 Sep 2015 21:17:08 -0700 Subject: [GRASS-SVN] r66263 - in grass/trunk: man tools Message-ID: <20150919041708.CBB2D3900B4@trac.osgeo.org> Author: lucadelu Date: 2015-09-18 21:17:08 -0700 (Fri, 18 Sep 2015) New Revision: 66263 Added: grass/trunk/man/jquery.fixedheadertable.min.js grass/trunk/man/parser_standard_options.css grass/trunk/man/parser_standard_options.js grass/trunk/man/parser_standard_options.py Removed: grass/trunk/tools/parser_standard_options.py Modified: grass/trunk/man/Makefile grass/trunk/man/build_html.py Log: improved parser standard option to have a better output table, added it to Makefile; TODO add link to a GRASS manual Modified: grass/trunk/man/Makefile =================================================================== --- grass/trunk/man/Makefile 2015-09-19 00:49:05 UTC (rev 66262) +++ grass/trunk/man/Makefile 2015-09-19 04:17:08 UTC (rev 66263) @@ -7,7 +7,10 @@ DSTFILES := \ $(HTMLDIR)/grassdocs.css \ $(HTMLDIR)/grass_logo.png \ - $(HTMLDIR)/grass_icon.png + $(HTMLDIR)/grass_icon.png \ + $(HTMLDIR)/jquery.fixedheadertable.min.js \ + $(HTMLDIR)/parser_standard_options.css \ + $(HTMLDIR)/parser_standard_options.js categories = \ d:display \ @@ -23,7 +26,7 @@ IDXCATS := $(foreach cat,$(categories),$(lastword $(subst :, ,$(cat)))) -IDXSRC = full_index index topics keywords graphical_index manual_gallery class_graphical $(IDXCATS) +IDXSRC = full_index index topics keywords graphical_index manual_gallery class_graphical parser_standard_options $(IDXCATS) INDICES := $(patsubst %,$(HTMLDIR)/%.html,$(IDXSRC)) @@ -79,6 +82,15 @@ $(PYTHON) ./build_manual_gallery.py $(HTMLDIR) endef +define build_pso +GISBASE="$(RUN_GISBASE)" ARCH="$(ARCH)" ARCH_DISTDIR="$(ARCH_DISTDIR)" \ + VERSION_NUMBER=$(GRASS_VERSION_NUMBER) VERSION_DATE=$(GRASS_VERSION_DATE) \ + $(PYTHON) ./parser_standard_options.py -t $(MODULE_TOPDIR)/lib/gis/parser_standard_options.c \ + -f grass -o $(HTMLDIR)/parser_standard_options.html -p 'id="opts_table" class="scroolTable"' +endef + +$(HTMLDIR)/topics.html: $(ALL_HTML) + define build_class_graphical GISBASE="$(RUN_GISBASE)" ARCH="$(ARCH)" ARCH_DISTDIR="$(ARCH_DISTDIR)" \ VERSION_NUMBER=$(GRASS_VERSION_NUMBER) VERSION_DATE=$(GRASS_VERSION_DATE) \ @@ -101,12 +113,16 @@ $(call build_keywords) touch $@ + $(HTMLDIR)/graphical_index.html: $(ALL_HTML) $(call build_graphical_index) touch $@ $(HTMLDIR)/manual_gallery.html: $(ALL_HTML) - $(call build_manual_gallery) + $(call build_manual_gallery) + +$(HTMLDIR)/parser_standard_options.html: $(ALL_HTML) + $(call build_pso) touch $@ # TODO: this should be done in the same way as category_rule @@ -131,3 +147,11 @@ $(HTMLDIR)/grass_icon.png: grass_icon.png $(INSTALL_DATA) $< $@ +$(HTMLDIR)/jquery.fixedheadertable.min.js: jquery.fixedheadertable.min.js + $(INSTALL_DATA) $< $@ + +$(HTMLDIR)/parser_standard_options.js: parser_standard_options.js + $(INSTALL_DATA) $< $@ + +$(HTMLDIR)/parser_standard_options.css: parser_standard_options.css + $(INSTALL_DATA) $< $@ Modified: grass/trunk/man/build_html.py =================================================================== --- grass/trunk/man/build_html.py 2015-09-19 00:49:05 UTC (rev 66262) +++ grass/trunk/man/build_html.py 2015-09-19 04:17:08 UTC (rev 66263) @@ -322,6 +322,24 @@ """) #" +headerpso_tmpl = \ +r""" + + + + + + + +
    + +GRASS logo +
    +

    Parser standard options

    +
      +""" +#" + ############################################################################ def check_for_desc_override(basename): Added: grass/trunk/man/jquery.fixedheadertable.min.js =================================================================== --- grass/trunk/man/jquery.fixedheadertable.min.js (rev 0) +++ grass/trunk/man/jquery.fixedheadertable.min.js 2015-09-19 04:17:08 UTC (rev 66263) @@ -0,0 +1,19 @@ +/*! + * jquery.fixedHeaderTable. The jQuery fixedHeaderTable plugin + * + * Copyright (c) 2013 Mark Malek + * http://fixedheadertable.com + * + * Licensed under MIT + * http://www.opensource.org/licenses/mit-license.php + * + * http://docs.jquery.com/Plugins/Authoring + * jQuery authoring guidelines + * + * Launch : October 2009 + * Version : 1.3 + * Released: May 9th, 2011 + * + * + * all CSS sizing (width,height) is done in pixels (px) + */(function(c){c.fn.fixedHeaderTable=function(m){var u={width:"100%",height:"100%",themeClass:"fht-default",borderCollapse:!0,fixedColumns:0,fixedColumn:!1,sortable:!1,autoShow:!0,footer:!1,cloneHeadToFoot:!1,autoResize:!1,create:null},b={},n={init:function(a){b=c.extend({},u,a);return this.each(function(){var a=c(this);h._isTable(a)?(n.setup.apply(this,Array.prototype.slice.call(arguments,1)),c.isFunction(b.create)&&b.create.call(this)):c.error("Invalid table mark-up")})},setup:function(){var a=c(this), d=a.find("thead"),e=a.find("tfoot"),g=0,f,k,p;b.originalTable=c(this).clone();b.includePadding=h._isPaddingIncludedWithWidth();b.scrollbarOffset=h._getScrollbarWidth();b.themeClassName=b.themeClass;f=-1
    '));f=a.closest(".fht-table-wrapper");!0==b.fixedColumn&&0>=b.fixedColumn s&&(b.fixedColumns= 1);0'),c('
    ').prependTo(f),k=f.find(".fht-fixed-body"));f.css({width:b.width,height:b.height}).addClass(b.themeClassName);a.hasClass("fht-table-init")||a.wrap('
    ');p=a.closest(".fht-tbody");var l=h._getTableProps(a);h._setupClone(p,l.tbody);a.hasClass("fht-table-init")?k=f.find("div.fht-thead"):(k=0
    ').prependTo(k): c('
    ').prependTo(f),k.find("table.fht-table").addClass(b.originalTable.attr("class")).attr("style",b.originalTable.attr("style")),d.clone().appendTo(k.find("table")));h._setupClone(k,l.thead);a.css({"margin-top":-k.outerHeight(!0)});!0==b.footer&&(h._setupTableFooter(a,this,l),e.length||(e=f.find("div.fht-tfoot table")),g=e.outerHeight(!0));d=f.height()- d.outerHeight(!0)-g-l.border;p.css({height:d});a.addClass("fht-table-init");"undefined"!== typeof b.altClass&&n.altRows.apply(this);0
    '),p=c('
    ');a=c('
    '); var g=g.width(),l=f.find(".fht-tbody").height()-b.scrollbarOffset,q,t,r,s;k.find("table.fht-table").addClass(b.originalTable.attr("class"));p.find("table.fht-table").addClass(b.originalTable.attr("class"));a.find("table.fht-table").addClass(b.originalTable.attr(" class"));q=f.find(".fht-thead thead tr > *:lt("+b.fixedColumns+")");r=b.fixedColumns*e.border;q.each(function(){r+=c(this).outerWidth(!0)});h._fixHeightWithCss(q,e);h._fixWidthWithCss(q,e);var m=[];q.each(function(){m.push(c(this).width())}); t=f.find("tbody tr > *:not(:nth-child(n+"+(b.fixedColumns+1)+"))").each(function(a){h._fixHeightWithCss(c(this),e);h._fixWidthWithCss(c(this),e,m[a%b.fixedColumns])});k.appendTo(d).find("tr").append(q.clone());p.appendTo(d).css({"margin-top":-1,height:l+e.border});t.each(function(a){0==a%b.fixedColumns&&(s=c("").appendTo(p.find("tbody")),b.altClass&&c(this).parent().hasClass(b.altClass)&&s.addClass(b.altClass));c(this).clone().appendTo(s)});d.css({height:0,width:r});var n=d.find(".fht-tbody .fht-table").height()- d.find(".fht-tbody").height();d.find(".fht-tbody .fht-table").bind("mousewheel",function(a,d,b,e){if(0!=e)return a=parseInt(c(this).css("marginTop"),10)+(0 *:lt("+b.fixedColumns+")"),h._fixHeightWithCss(k,e),a.appendTo(d).find("tr").append(k.clone()),d=a.find("table").innerWidth(),a.css({top:b.scrollbarOffset, width:d})},_setupTableFooter:function(a,d,e){d=a.closest(".fht-table-wrapper");var g=a.find("tfoot");a=d.find("div.fht-tfoot");a.length||(a=0
    ').appendTo(d.find(".fht-fixed-body")):c('
    ').appendTo(d));a.find("table.fht-table").addClass(b.originalTable.attr("class"));switch(!0){case !g.length&&!0==b.cloneHeadToFoot&&!0==b.footer:e=d.find("div.fht-thead");a.empty(); e.find("table").clone().appendTo(a);break;case g.length&&!1==b.cloneHeadToFoot&&!0==b.footer:a.find("table").append(g).css({"margin-top":-e.border}),h._setupClone(a,e.tfoot)}},_getTableProps:function(a){var d= {thead:{},tbody:{},tfoot:{},border:0},c=1;!0==b.borderCollapse&&(c=2);d.border=(a.find("th:first-child").outerWidth()-a.find("th:first-child").innerWidth())/c;d.thead=h._getColumnsWidth(a.find("thead tr"));d.tfoot=h._getColumnsWidth(a.find("tfoot tr"));d.tbody=h._getColumnsWidth(a.find("tbody tr")); return d},_getColumnsWidth:function(a){var d={},b={},g=0,f,k;f=h._getColumnsCount(a);for(k=0;k').appendTo(c(this))).css({width:parseInt(d[a].width,10)}),c(this).closest(".fht-tbody").length||!c(this).is(":last-child")||c(this).closest(".fht-fixed-column").length|| (a=Math.max((c(this).innerWidth()-c(this).width())/2,b.scrollbarOffset),c(this).css({"padding-right ":parseInt(c(this).css("padding-right"))+a+"px"})))})})},_isPaddingIncludedWithWidth:function(){var a=c('
    test
    '),d,e;a.addClass(b.originalTable.attr("class"));a.appendTo("body");d=a.find("td").height();a.find("td").css("height",a.find("tr").height());e=a.find("td").height();a.remove();return d!=e?!0:!1},_getScrollbarWidth:function(){var a= 0;if(!a)if(/msie/.test(navigator.userAgent.toLowerCase())){var b=c('').css({position:"absolute",top:-1E3,left:-1E3}).appendTo("body"),e=c('').css({position:"absolute",top:-1E3,left:-1E3}).appendTo("body"),a=b.width()-e.width()+2;b.add(e).remove()}else b=c("
    ").css({width:100,height:100,overflow:"auto",position:"absolute",top:-1E3,left:-1E3}).prependTo("body").append("
    ").find("div").css({width:"100%", height:200}),a=100-b.width(),b.parent().re move();return a}};if(n[m])return n[m].apply(this,Array.prototype.slice.call(arguments,1));if("object"!==typeof m&&m)c.error('Method "'+m+'" does not exist in fixedHeaderTable plugin!');else return n.init.apply(this,arguments)}})(jQuery); Added: grass/trunk/man/parser_standard_options.css =================================================================== --- grass/trunk/man/parser_standard_options.css (rev 0) +++ grass/trunk/man/parser_standard_options.css 2015-09-19 04:17:08 UTC (rev 66263) @@ -0,0 +1,172 @@ +/*! +* jquery.fixedHeaderTable. The jQuery fixedHeaderTable plugin +* +* Copyright (c) 2011 Mark Malek +* http://fixedheadertable.com +* +* Licensed under MIT +* http://www.opensource.org/licenses/mit-license.php +* +* http://docs.jquery.com/Plugins/Authoring +* jQuery authoring guidelines +* +* Launch : October 2009 +* Version : 1.3 +* Released: May 9th, 2011 +* +* +* all CSS sizing (width,height) is done in pixels (px) +*/ + +/* @group Reset */ + +.fht-table, +.fht-table thead, +.fht-table tfoot, +.fht-table tbody, +.fht-table tr, +.fht-table th, +.fht-table td { + /* position */ + margin: 0; + + /* size */ + padding: 0; + + /* text */ + font-size: 100%; + font: inherit; + vertical-align: top; + } + +.fht-table { + /* appearance */ + border-collapse: collapse; + border-spacing: 0; + } + +/* @end */ + +/* @group Content */ + +.fht-table-wrapper, +.fht-table-wrapper .fht-thead, +.fht-table-wrapper .fht-tfoot, +.fht-table-wrapper .fht-fixed-column .fht-tbody, +.fht-table-wrapper .fht-fixed-body .fht-tbody, +.fht-table-wrapper .fht-tbody { + /* appearance */ + overflow: hidden; + + /* position */ + position: relative; + } + + .fht-table-wrapper .fht-fixed-body .fht-tbody, + .fht-table-wrapper .fht-tbody { + /* appearance */ + overflow: auto; + } + + .fht-table-wrapper .fht-table .fht-cell { + /* appearance */ + overflow: hidden; + + /* size */ + height: 1px; + } + + .fht-table-wrapper .fht-fixed-column, + .fht-table-wrapper .fht-fixed-body { + /* position */ + top: 0; + left: 0; + position: absolute; + } + + .fht-table-wrapper .fht-fixed-column { + /* position */ + z-index: 1; + } + +/* @end */ + +.scroolTable td, .scroolTable th { + /* appearance */ + border: 1px solid #778899; + + /* size */ + padding: 5px; + } + +.scroolTable { + /* text */ + font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; + } + +.scroolTable tbody tr td { + /* appearance */ + background-color: rgb(100%, 100%, 100%); + background-image: -moz-linear-gradient( + top, + rgba(255,255,255,0.4) 0%, + rgba(255,255,255,0.2) 50%, + rgba(255,255,255,0.1) 51%, + rgba(255,255,255,0.0) 100%); + + background-image: -webkit-gradient( + linear, left top, left bottom, + color-stop(0%,rgba(255,255,255,0.4)), + color-stop(50%,rgba(255,255,255,0.2)), + color-stop(51%,rgba(255,255,255,0.1)), + color-stop(100%,rgba(255,255,255,0.0))); + + /* text */ + color: #262c31; + font-size: 11px; + } + +.scroolTable tbody tr.odd td { + /* appearance */ + background-color: #d6e0ef; + background-image: -moz-linear-gradient( + top, + rgba(255,255,255,0.4) 0%, + rgba(255,255,255,0.2) 50%, + rgba(255,255,255,0.1) 51%, + rgba(255,255,255,0.0) 100%); + + background-image: -webkit-gradient( + linear, left top, left bottom, + color-stop(0%,rgba(255,255,255,0.4)), + color-stop(50%,rgba(255,255,255,0.2)), + color-stop(51%,rgba(255,255,255,0.1)), + color-stop(100%,rgba(255,255,255,0.0))); + } + +.scroolTable thead tr th, +.scroolTable thead tr td, +.scroolTable tfoot tr th, +.scroolTable tfoot tr td { + /* appearance */ + background-color: rgb(25%, 60%, 25%); + background-image: -moz-linear-gradient( + top, + rgba(255,255,255,0.4) 0%, + rgba(255,255,255,0.2) 50%, + rgba(255,255,255,0.1) 51%, + rgba(255,255,255,0.0) 100%); + + background-image: -webkit-gradient( + linear, left top, left bottom, + color-stop(0%,rgba(255,255,255,0.4)), + color-stop(50%,rgba(255,255,255,0.2)), + color-stop(51%,rgba(255,255,255,0.1)), + color-stop(100%,rgba(255,255,255,0.0))); + + /* text */ + color: #121517; + font-size: 12px; + font-weight: bold; + text-shadow: 0 1px 1px #e8ebee; + } Added: grass/trunk/man/parser_standard_options.js =================================================================== --- grass/trunk/man/parser_standard_options.js (rev 0) +++ grass/trunk/man/parser_standard_options.js 2015-09-19 04:17:08 UTC (rev 66263) @@ -0,0 +1,4 @@ +$(document).ready(function() { + $('#opts_table').fixedHeaderTable({footer: false, cloneHeadToFoot: true, + fixedColumn: true}); +}); Copied: grass/trunk/man/parser_standard_options.py (from rev 66260, grass/trunk/tools/parser_standard_options.py) =================================================================== --- grass/trunk/man/parser_standard_options.py (rev 0) +++ grass/trunk/man/parser_standard_options.py 2015-09-19 04:17:08 UTC (rev 66263) @@ -0,0 +1,177 @@ +# -*- coding: utf-8 -*- +""" +Created on Fri Jun 26 19:10:58 2015 + + at author: pietro +""" +from __future__ import print_function +import argparse +import sys +from urllib import urlopen +from build_html import * + +def parse_options(lines, startswith='Opt'): + def split_in_groups(lines): + def count_par_diff(line): + open_par = line.count('(') + close_par = line.count(')') + return open_par - close_par + res = None + diff = 0 + for line in lines: + if line.startswith('case'): + optname = line.split()[1][:-1] + res = [] +# if optname == 'G_OPT_R_BASENAME_INPUT': +# import ipdb; ipdb.set_trace() + elif line == 'break;': + diff = 0 + yield optname, res + elif line.startswith('G_'): + diff = count_par_diff(line) + elif diff > 0: + diff -= count_par_diff(line) + else: + res.append(line) if res is not None else None + + def split_opt_line(line): + index = line.index('=') + key = line[:index].strip() + default = line[index + 1:].strip() + if default.startswith('_('): + default = default[2:] + return key, default + + def parse_glines(glines): + res = {} + key = None + for line in glines: + if line.startswith('/*'): + continue + if line.startswith(startswith) and line.endswith(';'): + key, default = [w.strip() for w in split_opt_line(line[5:])] + res[key] = default + elif line.startswith(startswith): + key, default = split_opt_line(line[5:]) + res[key] = [default, ] + else: + if key is not None: + if key not in res: + res[key] = [] + start, end = 0, -1 + if line.startswith('_('): + start = 2 + if line.endswith(');'): + end = -3 + elif line.endswith(';'): + end = -2 + res[key].append(line[start:end]) + # pprint(glines) + # pprint(res) + return res + + def clean_value(val): + if isinstance(val, list): + val = ' '.join(val) + return (val.replace('"', '').replace("\'", "'").strip().strip(';') + ).strip().strip('_(').strip().strip(')').strip() + + # with open(optionfile, mode='r') as optfile: + lines = [line.strip() for line in lines] + result = [] + for optname, glines in split_in_groups(lines): + if glines: + res = parse_glines(glines) + if res: + for key, val in res.items(): + res[key] = clean_value(val) + result.append((optname, res)) + return result + + +class OptTable(object): + """""" + def __init__(self, list_of_dict): + self.options = list_of_dict + self.columns = sorted(set([key for _, d in self.options + for key in d.keys()])) + + def csv(self, delimiter=';', endline='\n'): + """Return a CSV string with the options""" + csv = [] + csv.append(delimiter.join(self.columns)) + for optname, options in self.options: + opts = [options.get(col, '') for col in self.columns] + csv.append(delimiter.join([optname, ] + opts)) + return endline.join(csv) + + def html(self, endline='\n', indent=' ', toptions='border=1'): + """Return a HTML table with the options""" + html = [''.format(' ' + toptions if toptions else '')] + # write headers + html.append(indent + "") + html.append(indent + "") + html.append(indent * 2 + "{0}".format('option')) + for col in self.columns: + html.append(indent * 2 + "{0}".format(col)) + html.append(indent + "") + html.append(indent + "") + html.append(indent + "") + for optname, options in self.options: + html.append(indent + "") + html.append(indent * 2 + "{0}".format(optname)) + for col in self.columns: + html.append(indent * 2 + + "{0}".format(options.get(col, ''))) + html.append(indent + "") + html.append(indent + "") + html.append("") + return endline.join(html) + + def _repr_html_(self): + """Method used by IPython notebook""" + return self.html() + + +if __name__ == "__main__": + URL = ('https://trac.osgeo.org/grass/browser/grass/' + 'trunk/lib/gis/parser_standard_options.c?format=txt') + parser = argparse.ArgumentParser(description='Extract GRASS default ' + 'options from link.') + parser.add_argument('-f', '--format', default='html', dest='format', + choices=['html', 'csv', 'grass'], + help='Define the output format') + parser.add_argument('-l', '--link', default=URL, dest='url', type=str, + help='Provide the url with the file to parse') + parser.add_argument('-t', '--text', default='', dest='text', + type=argparse.FileType('r'), + help='Provide the file to parse') + parser.add_argument('-o', '--output', default=sys.stdout, dest='output', + type=argparse.FileType('w'), + help='Provide the url with the file to parse') + parser.add_argument('-s', '--starts-with', default='Opt', + dest='startswith', type=str, + help='Extract only the options that starts with this') + parser.add_argument('-p', '--html_params', default='border=1', type=str, + dest='htmlparmas', help="Options for the HTML table") + args = parser.parse_args() + + cfile = args.text if args.text else urlopen(args.url, proxies=None) + + options = OptTable(parse_options(cfile.readlines(), + startswith=args.startswith)) + outform = args.format + if outform in ['csv', 'html']: + print(getattr(options, outform)(), file=args.output) + args.output.close() + else: + year = os.getenv("VERSION_DATE") + name = args.output.name + args.output.close() + topicsfile = open(name, 'w') + topicsfile.write(header1_tmpl.substitute(title="GRASS GIS " \ + "%s Reference Manual: Parser standard options index" % grass_version)) + topicsfile.write(headerpso_tmpl) + topicsfile.write(options.html(toptions=args.htmlparmas)) + write_html_footer(topicsfile, "index.html", year) + topicsfile.close() Deleted: grass/trunk/tools/parser_standard_options.py =================================================================== --- grass/trunk/tools/parser_standard_options.py 2015-09-19 00:49:05 UTC (rev 66262) +++ grass/trunk/tools/parser_standard_options.py 2015-09-19 04:17:08 UTC (rev 66263) @@ -1,159 +0,0 @@ -# -*- coding: utf-8 -*- -""" -Created on Fri Jun 26 19:10:58 2015 - - at author: pietro -""" -from __future__ import print_function -import argparse -from pprint import pprint -import sys -from urllib import urlopen - - -def parse_options(lines, startswith='Opt'): - def split_in_groups(lines): - def count_par_diff(line): - open_par = line.count('(') - close_par = line.count(')') - return open_par - close_par - res = None - diff = 0 - for line in lines: - if line.startswith('case'): - optname = line.split()[1][:-1] - res = [] -# if optname == 'G_OPT_R_BASENAME_INPUT': -# import ipdb; ipdb.set_trace() - elif line == 'break;': - diff = 0 - yield optname, res - elif line.startswith('G_'): - diff = count_par_diff(line) - elif diff > 0: - diff -= count_par_diff(line) - else: - res.append(line) if res is not None else None - - def split_opt_line(line): - index = line.index('=') - key = line[:index].strip() - default = line[index + 1:].strip() - if default.startswith('_('): - default = default[2:] - return key, default - - def parse_glines(glines): - res = {} - key = None - for line in glines: - if line.startswith('/*'): - continue - if line.startswith(startswith) and line.endswith(';'): - key, default = [w.strip() for w in split_opt_line(line[5:])] - res[key] = default - elif line.startswith(startswith): - key, default = split_opt_line(line[5:]) - res[key] = [default, ] - else: - if key is not None: - if key not in res: - res[key] = [] - start, end = 0, -1 - if line.startswith('_('): - start = 2 - if line.endswith(');'): - end = -3 - elif line.endswith(';'): - end = -2 - res[key].append(line[start:end]) - # pprint(glines) - # pprint(res) - return res - - def clean_value(val): - if isinstance(val, list): - val = ' '.join(val) - return (val.replace('"', '').replace("\'", "'").strip().strip(';') - ).strip().strip('_(').strip().strip(')').strip() - - # with open(optionfile, mode='r') as optfile: - lines = [line.strip() for line in lines] - result = [] - for optname, glines in split_in_groups(lines): - if glines: - res = parse_glines(glines) - if res: - for key, val in res.items(): - res[key] = clean_value(val) - result.append((optname, res)) - return result - - -class OptTable(object): - """""" - def __init__(self, list_of_dict): - self.options = list_of_dict - self.columns = sorted(set([key for _, d in self.options - for key in d.keys()])) - - def csv(self, delimiter=';', endline='\n'): - """Return a CSV string with the options""" - csv = [] - csv.append(delimiter.join(self.columns)) - for optname, options in self.options: - opts = [options.get(col, '') for col in self.columns] - csv.append(delimiter.join([optname, ] + opts)) - return endline.join(csv) - - def html(self, endline='\n', indent=' ', toptions='border=1'): - """Return a HTML table with the options""" - html = ["".format(' ' + toptions if toptions else '')] - # write headers - html.append(indent + "") - html.append(indent * 2 + "{0}".format('option')) - for col in self.columns: - html.append(indent * 2 + "{0}".format(col)) - html.append(indent + "") - for optname, options in self.options: - html.append(indent + "") - html.append(indent * 2 + "{0}".format(optname)) - for col in self.columns: - html.append(indent * 2 + - "{0}".format(options.get(col, ''))) - html.append(indent + "") - html.append("") - return endline.join(html) - - def _repr_html_(self): - """Method used by IPython notebook""" - return self.html() - - -if __name__ == "__main__": - URL = ('https://trac.osgeo.org/grass/browser/grass/' - 'trunk/lib/gis/parser_standard_options.c?format=txt') - parser = argparse.ArgumentParser(description='Extract GRASS default ' - 'options from link.') - parser.add_argument('-f', '--format', default='html', dest='format', - choices=['html', 'csv'], - help='Define the output format') - parser.add_argument('-l', '--link', default=URL, dest='url', type=str, - help='Provide the url with the file to parse') - parser.add_argument('-t', '--text', default='', dest='text', - type=argparse.FileType('r'), - help='Provide the file to parse') - parser.add_argument('-o', '--output', default=sys.stdout, dest='output', - type=argparse.FileType('w'), - help='Provide the url with the file to parse') - parser.add_argument('-s', '--starts-with', default='Opt', - dest='startswith', type=str, - help='Extract only the options that starts with this') - args = parser.parse_args() - - cfile = args.text if args.text else urlopen(args.url, proxies=None) - - options = OptTable(parse_options(cfile.readlines(), - startswith=args.startswith)) - print(getattr(options, args.format)(), file=args.output) - args.output.close() From svn_grass at osgeo.org Fri Sep 18 21:39:39 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Fri, 18 Sep 2015 21:39:39 -0700 Subject: [GRASS-SVN] r66264 - grass/trunk/man Message-ID: <20150919043939.5881B3900B4@trac.osgeo.org> Author: lucadelu Date: 2015-09-18 21:39:39 -0700 (Fri, 18 Sep 2015) New Revision: 66264 Modified: grass/trunk/man/Makefile Log: fixed Makefile, thanks to Travis CI Modified: grass/trunk/man/Makefile =================================================================== --- grass/trunk/man/Makefile 2015-09-19 04:17:08 UTC (rev 66263) +++ grass/trunk/man/Makefile 2015-09-19 04:39:39 UTC (rev 66264) @@ -119,7 +119,7 @@ touch $@ $(HTMLDIR)/manual_gallery.html: $(ALL_HTML) - $(call build_manual_gallery) + $(call build_manual_gallery) $(HTMLDIR)/parser_standard_options.html: $(ALL_HTML) $(call build_pso) From svn_grass at osgeo.org Sat Sep 19 04:31:57 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sat, 19 Sep 2015 04:31:57 -0700 Subject: [GRASS-SVN] r66265 - grass/branches/releasebranch_6_4 Message-ID: <20150919113157.E541B390112@trac.osgeo.org> Author: neteler Date: 2015-09-19 04:31:57 -0700 (Sat, 19 Sep 2015) New Revision: 66265 Modified: grass/branches/releasebranch_6_4/grasslib.dox Log: progman: point to http://grass.osgeo.org/programming7/ Modified: grass/branches/releasebranch_6_4/grasslib.dox =================================================================== --- grass/branches/releasebranch_6_4/grasslib.dox 2015-09-19 04:39:39 UTC (rev 66264) +++ grass/branches/releasebranch_6_4/grasslib.dox 2015-09-19 11:31:57 UTC (rev 66265) @@ -22,6 +22,9 @@ GRASS module authors are cited within their module's source code and the contributed manual pages. +An up-to-date version of this Programmer's Manual is available at +http://grass.osgeo.org/programming7/ + © 2000-2015 GRASS Development Team
    Published under GNU Free Documentation License (GFDL) http://www.fsf.org/copyleft/fdl.html From svn_grass at osgeo.org Sat Sep 19 04:32:08 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sat, 19 Sep 2015 04:32:08 -0700 Subject: [GRASS-SVN] r66266 - grass/branches/develbranch_6 Message-ID: <20150919113208.3E3B3390112@trac.osgeo.org> Author: neteler Date: 2015-09-19 04:32:08 -0700 (Sat, 19 Sep 2015) New Revision: 66266 Modified: grass/branches/develbranch_6/grasslib.dox Log: progman: point to http://grass.osgeo.org/programming7/ Modified: grass/branches/develbranch_6/grasslib.dox =================================================================== --- grass/branches/develbranch_6/grasslib.dox 2015-09-19 11:31:57 UTC (rev 66265) +++ grass/branches/develbranch_6/grasslib.dox 2015-09-19 11:32:08 UTC (rev 66266) @@ -1,4 +1,4 @@ -/*! \mainpage GRASS 6 Programmer's Manual +/*! \mainpage GRASS GIS 6 Programmer's Manual for temperature only for the stream cells in this basin + +r.mapcalc "sub_streamID${ID} = if ( sub_watershedID${ID}@sub_watershedID${ID} == 1 & ${GIS_OPT_STREAM}@PERMANENT >= 1 , 1 , null() )" --o --q +r.null map=sub_streamID${ID} setnull=0 --q +r.out.gdal -c type=Byte --o --q nodata=255 createopt="COMPRESS=LZW,ZLEVEL=9" input=sub_streamID${ID}@sub_watershedID${ID} output=$GIS_OPT_FOLDER/${dir4d}digit4/${dir3d}digit3/${dir2d}digit2/${dir1d}digit1/sub_streamID${ID}.tif + +if [ ! -f $GIS_OPT_FOLDER/${dir4d}digit4/${dir3d}digit3/${dir2d}digit2/${dir1d}digit1/sub_streamID${ID}.tif ] ; then the file $GIS_OPT_FOLDER/${dir4d}digit4/${dir3d}digit3/${dir2d}digit2/${dir1d}digit1/sub_streamID${ID}.tif dose not exist ; fi + +rm -r $HOME/.grass7/rc$ID $GISDBASE/$LOCATION_NAME/sub_watershedID$ID + +' _ + +echo -en "\r100% done" + +rm -fr $GISDBASE/$LOCATION_NAME/sub_watershedID* + +echo "" +echo $(ls -l $GIS_OPT_FOLDER/${dir4d}digit4/${dir3d}digit3/${dir2d}digit2/${dir1d}digit1/sub_watershedID*.tif | wc -l ) sub-watersheds have been processed + +# reset mapset to PERMANENT + +g.gisenv set="MAPSET=PERMANENT" +g.gisenv set="LOCATION_NAME=$LOCATION_NAME" +g.gisenv set="GISDBASE=$GISDBASE" + +echo Check for missing files due to RAM overload + +cat $file | xargs -n 3 -P 1 bash -c $' + +X_coord=$1 +Y_coord=$2 +ID=$3 + +if [ ! -f $GIS_OPT_FOLDER/${dir4d}digit4/${dir3d}digit3/${dir2d}digit2/${dir1d}digit1/sub_watershedID$ID.tif ] ; then + +echo Fix missing file $GIS_OPT_FOLDER/${dir4d}digit4/${dir3d}digit3/${dir2d}digit2/${dir1d}digit1/sub_watershedID$ID.tif using only 1 CPU + +# replicate the start-GISRC in a unique GISRC + +cp $GISRC_def $HOME/.grass7/rc$ID +export GISRC=$HOME/.grass7/rc$ID + +g.mapset -c mapset=sub_watershedID$ID location=$LOCATION_NAME dbase=$GISDBASE --quiet + +rm -f $GISDBASE/$LOCATION_NAME/sub_watershedID$ID/.gislock + +export GISBASE=$( grep gisbase $(which grass70) | awk \'{ if(NR==2) { gsub ("\\"","" ) ; print $3 } }\' ) +export PATH=$PATH:$GISBASE/bin:$GISBASE/scripts +export LD_LIBRARY_PATH="$GISBASE/lib" +export GRASS_LD_LIBRARY_PATH="$LD_LIBRARY_PATH" +export PYTHONPATH="$GISBASE/etc/python:$PYTHONPATH" +export MANPATH=$MANPATH:$GISBASE/man + +r.water.outlet --o --q input=$GIS_OPT_DRAINAGE at PERMANENT output=sub_watershedID$ID coordinates=$X_coord,$Y_coord + +g.region rast=sub_watershedID${ID}@sub_watershedID${ID} zoom=sub_watershedID${ID}@sub_watershedID${ID} +r.out.gdal -c type=Byte --o --q nodata=255 createopt="COMPRESS=LZW,ZLEVEL=9" input=sub_watershedID$ID at sub_watershedID${ID} output=$GIS_OPT_FOLDER/${dir4d}digit4/${dir3d}digit3/${dir2d}digit2/${dir1d}digit1/sub_watershedID$ID.tif + +### Crop this basin template --> for temperature only for the stream cells in this basin + +r.mapcalc "sub_streamID${ID} = if ( sub_watershedID${ID}@sub_watershedID${ID} == 1 & ${GIS_OPT_STREAM}@PERMANENT >= 1 , 1 , null() )" --o --q +r.null map=sub_streamID${ID} setnull=0 --q +r.out.gdal -c type=Byte --o --q nodata=255 createopt="COMPRESS=LZW,ZLEVEL=9" input=sub_streamID${ID}@sub_watershedID${ID} output=$GIS_OPT_FOLDER/${dir4d}digit4/${dir3d}digit3/${dir2d}digit2/${dir1d}digit1/sub_streamID${ID}.tif + +rm -r $HOME/.grass7/rc$ID $GISDBASE/$LOCATION_NAME/sub_watershedID$ID + +fi + +' _ + + + +rm -fr $GISDBASE/$LOCATION_NAME/sub_watershedID* + +echo "Compress the sub-watersheds and sub-streams to reduce the number of inodes filling up the hard disk" + +cd $GIS_OPT_FOLDER/${dir4d}digit4/${dir3d}digit3/${dir2d}digit2/${dir1d}digit1/ + +tar -zcPf ${filename}_sub_watershed.tar.gz sub_watershedID*.tif +tar -zcPf ${filename}_sub_stream.tar.gz sub_streamID*.tif + +cd $GIS_OPT_FOLDER + +g.gisenv set="MAPSET=PERMANENT" +g.gisenv set="LOCATION_NAME=$LOCATION_NAME" +g.gisenv set="GISDBASE=$GISDBASE" + +rm -fr $GISDBASE/$LOCATION_NAME/sub_watershedID* $GIS_OPT_FOLDER/${dir4d}digit4/${dir3d}digit3/${dir2d}digit2/${dir1d}digit1/*.tif + +done + +cd $GIS_OPT_FOLDER + +echo The full sub-watershed delineation process has been done! +echo To list the compressed files, use "ls $GIS_OPT_FOLDER/*digit4/*digit3/*digit2/*digit1/*.tar.gz" +echo Now you can use r.stream.variables to compute stream-specific environmental variables. + Property changes on: grass-addons/grass7/raster/r.stream.watersheds/r.stream.watersheds ___________________________________________________________________ Added: svn:executable + * Added: svn:mime-type + text/x-sh Added: svn:eol-style + native From svn_grass at osgeo.org Tue Sep 22 08:44:38 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Tue, 22 Sep 2015 08:44:38 -0700 Subject: [GRASS-SVN] r66294 - grass/branches/releasebranch_7_0/mswindows Message-ID: <20150922154438.CFE213900FD@trac.osgeo.org> Author: hellik Date: 2015-09-22 08:44:38 -0700 (Tue, 22 Sep 2015) New Revision: 66294 Modified: grass/branches/releasebranch_7_0/mswindows/GRASS-Installer.nsi.tmpl Log: GRASS-Installer.nsi.tmpl: sync with trunk regarding g.mkfontcap run during standalone installation Modified: grass/branches/releasebranch_7_0/mswindows/GRASS-Installer.nsi.tmpl =================================================================== --- grass/branches/releasebranch_7_0/mswindows/GRASS-Installer.nsi.tmpl 2015-09-22 14:58:12 UTC (rev 66293) +++ grass/branches/releasebranch_7_0/mswindows/GRASS-Installer.nsi.tmpl 2015-09-22 15:44:38 UTC (rev 66294) @@ -528,8 +528,14 @@ SetOutPath "$INSTALL_DIR" File /r ${PACKAGE_FOLDER}\*.* - ;grant modifying/overwriting fontcap file - AccessControl::GrantOnFile "$INSTDIR\etc\fontcap" "(BU)" "GenericRead + GenericWrite + Delete" + ;grant $INSTDIR\etc read write accessible and show if succeeded: error if it failed + AccessControl::GrantOnFile "$INSTDIR\etc" "(S-1-5-32-545)" "FullAccess" + Pop $R0 + DetailPrint $R0 + ;grant modifying/overwriting fontcap file and show if succeeded: error if it failed + AccessControl::GrantOnFile "$INSTDIR\etc\fontcap" "(S-1-5-32-545)" "FullAccess" + Pop $R0 + DetailPrint $R0 ;create run_gmkfontcap.bat ClearErrors @@ -579,7 +585,7 @@ FileWrite $0 ' $\r$\n' FileWrite $0 ' $\r$\n' FileWrite $0 ' $\r$\n' FileWrite $0 ' $\r$\n' FileWrite $0 ' $\r$\n' @@ -590,6 +596,9 @@ ;Run g.mkfontcap outside a grass session during installation to catch all fonts ExecWait '"$INSTALL_DIR\etc\run_gmkfontcap.bat"' + + ;set $INSTDIR\etc back to read accessible + AccessControl::SetOnFile "$INSTDIR\etc" "(S-1-5-32-545)" "GenericRead + GenericExecute" ;Install demolocation into the GIS_DATABASE directory SetOutPath "$GIS_DATABASE\demolocation" From svn_grass at osgeo.org Tue Sep 22 08:45:32 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Tue, 22 Sep 2015 08:45:32 -0700 Subject: [GRASS-SVN] r66295 - grass-addons/grass7/raster Message-ID: <20150922154532.AE4273900FD@trac.osgeo.org> Author: elselvaje Date: 2015-09-22 08:45:32 -0700 (Tue, 22 Sep 2015) New Revision: 66295 Modified: grass-addons/grass7/raster/Makefile Log: commit Makefile with r.stream.variables/ Modified: grass-addons/grass7/raster/Makefile =================================================================== --- grass-addons/grass7/raster/Makefile 2015-09-22 15:44:38 UTC (rev 66294) +++ grass-addons/grass7/raster/Makefile 2015-09-22 15:45:32 UTC (rev 66295) @@ -84,6 +84,8 @@ r.stream.slope \ r.stream.snap \ r.stream.stats \ + r.stream.variables \ + r.stream.watersheds \ r.sun.daily \ r.sun.hourly \ r.surf.idw2 \ From svn_grass at osgeo.org Tue Sep 22 14:52:57 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Tue, 22 Sep 2015 14:52:57 -0700 Subject: [GRASS-SVN] r66296 - grass-addons/grass7/raster/r.stream.variables Message-ID: <20150922215258.009473900A3@trac.osgeo.org> Author: elselvaje Date: 2015-09-22 14:52:57 -0700 (Tue, 22 Sep 2015) New Revision: 66296 Added: grass-addons/grass7/raster/r.stream.variables/r.stream.variables.html grass-addons/grass7/raster/r.stream.variables/r.stream.variables.html~ Log: commit html test Added: grass-addons/grass7/raster/r.stream.variables/r.stream.variables.html =================================================================== --- grass-addons/grass7/raster/r.stream.variables/r.stream.variables.html (rev 0) +++ grass-addons/grass7/raster/r.stream.variables/r.stream.variables.html 2015-09-22 21:52:57 UTC (rev 66296) @@ -0,0 +1,4 @@ + +

    DESCRIPTION

    + +r.stream.variables Property changes on: grass-addons/grass7/raster/r.stream.variables/r.stream.variables.html ___________________________________________________________________ Added: svn:mime-type + text/html Added: svn:keywords + Author Date Id Added: svn:eol-style + native Added: grass-addons/grass7/raster/r.stream.variables/r.stream.variables.html~ =================================================================== From svn_grass at osgeo.org Tue Sep 22 15:24:10 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Tue, 22 Sep 2015 15:24:10 -0700 Subject: [GRASS-SVN] r66297 - in grass-addons/grass7/raster: r.stream.variables r.stream.watersheds Message-ID: <20150922222410.981B03900A3@trac.osgeo.org> Author: elselvaje Date: 2015-09-22 15:24:10 -0700 (Tue, 22 Sep 2015) New Revision: 66297 Modified: grass-addons/grass7/raster/r.stream.variables/r.stream.variables grass-addons/grass7/raster/r.stream.watersheds/r.stream.watersheds Log: change echos and other littel impruvement Modified: grass-addons/grass7/raster/r.stream.variables/r.stream.variables =================================================================== --- grass-addons/grass7/raster/r.stream.variables/r.stream.variables 2015-09-22 21:52:57 UTC (rev 66296) +++ grass-addons/grass7/raster/r.stream.variables/r.stream.variables 2015-09-22 22:24:10 UTC (rev 66297) @@ -49,16 +49,26 @@ #% type: string #% key_desc: name #% description: Provide the full folder path (same as for r.stream.watersheds) -#% required:yes +#% required:no +#% answer: GISDBASE/folder_structure #%end #%option +#% key: out_folder +#% type: string +#% key_desc: name +#% description: Provide the full folder path for the output stream-specific variable +#% required:no +#% answer: GISDBASE/stream-specific_variables +#%end + +#%option #% key: output #% type: string #% key_desc: method #% multiple: yes -#% options: min,max,range,mean,stddev,coeff_var,sum -#% description: Provide the output aggregation method for the stream-specific variable: upstream minimum, maximum, range, mean, standard deviation, coefficient of variation, sum. Output datatype is Int32 +#% options: cells,min,max,range,mean,stddev,coeff_var,sum +#% description: Provide the output aggregation method for the stream-specific variable: upstream cells numbers, minimum, maximum, range, mean, standard deviation, coefficient of variation, sum. Output datatype is Int32 #% required:yes #%end @@ -137,6 +147,14 @@ export GIS_OPT_FOLDER=$GIS_OPT_FOLDER fi +if [ ${GIS_OPT_OUT_FOLDER} = "GISDBASE/stream-specific_variables" ] ; then + export GIS_OPT_OUT_FOLDER=$GISDBASE"/stream-specific_variables" +else + export GIS_OPT_OUT_FOLDER=$GIS_OPT_OUT_FOLDER +fi + +mkdir $GIS_OPT_OUT_FOLDER 2> /dev/null + # what to do in case of user break: exitprocedure() { @@ -150,9 +168,9 @@ # delete intermediate files rm -fr $GISDBASE/$LOCATION_NAME/sub_${GIS_OPT_AREA}* -rm -fr $GIS_OPT_FOLDER/*digit4/*digit3/*digit2/*digit1/*.txt -rm -fr $GIS_OPT_FOLDER/*digit4/*digit3/*digit2/*digit1/*.tif -rm -fr $GIS_OPT_FOLDER/blockfile/stat_*.txt $GIS_OPT_FOLDER/blockfile/*.tif +find $GIS_OPT_FOLDER/ -maxdepth 1 -name '*.txt' -delete +find $GIS_OPT_FOLDER/ -maxdepth 1 -name '*.tif' -delete +rm -fr $GIS_OPT_FOLDER/blockfile/stat_*.txt exit 1 } @@ -161,11 +179,13 @@ trap "exitprocedure" 2 3 9 15 19 echo "" -echo "Streams variables calculation based on the sub-watershads and sub-streams." +echo "##########################################################################" +echo "Streams variables calculation based on the sub-watershads and sub-streams" echo "" -echo "Citation: Domisch, S., Amatulli, G., Jetz, W. (2015)" +echo "Citation: Domisch, S., Amatulli, G., Jetz, W. (in review)" echo "Near-global freshwater-specific environmental variables for" echo "biodiversity analyses in 1km resolution. Scientific Data" +echo "##########################################################################" echo "" export GISRC_def=$GISRC @@ -252,7 +272,6 @@ echo "Check for missing files due to RAM overload" - if ls $DIRNAME/sub_${GIS_OPT_AREA}ID*.tif 1> /dev/null 2>&1 ; then echo $(ls $DIRNAME/sub_${GIS_OPT_AREA}ID*.tif | wc -l ) files had RAM issues @@ -262,6 +281,8 @@ file=$1 filename=$(basename $file .tif ) +echo Fix missing file $file using only 1 CPU + if [ $GIS_OPT_AREA = "watershed" ] ; then ID=${filename:15:99}; fi if [ $GIS_OPT_AREA = "stream" ] ; then ID=${filename:12:99}; fi @@ -324,10 +345,11 @@ echo "ID|non_null_cells|null_cells|min|max|range|mean|mean_of_abs|stddev|variance|coeff_var|sum|sum_abs" > $GIS_OPT_FOLDER/blockfile/stat_${GIS_OPT_VARIABLE}.txt cat $GIS_OPT_FOLDER/*digit4/*digit3/*digit2/*digit1/stat_${GIS_OPT_VARIABLE}.txt >> $GIS_OPT_FOLDER/blockfile/stat_${GIS_OPT_VARIABLE}.txt -echo reclass the grid_id for the following output ${GIS_OPT_OUTPUT//","/" "} +echo Reclass the grid_id for the following output ${GIS_OPT_OUTPUT//","/" "} echo ${GIS_OPT_OUTPUT//","/" "} | xargs -n 1 -P $GIS_OPT_CPU bash -c $' +if [ $1 = "cells" ] ; then col=2 ; fi if [ $1 = "min" ] ; then col=4 ; fi if [ $1 = "max" ] ; then col=5 ; fi if [ $1 = "range" ] ; then col=6 ; fi @@ -342,6 +364,7 @@ echo ${GIS_OPT_OUTPUT//","/" "} | xargs -n 1 -P 1 bash -c $' +if [ $1 = "cells" ] ; then col=2 ; fi if [ $1 = "min" ] ; then col=4 ; fi if [ $1 = "max" ] ; then col=5 ; fi if [ $1 = "range" ] ; then col=6 ; fi @@ -355,11 +378,13 @@ r.reclass input=grid_ID output=${GIS_OPT_VARIABLE}_$1 rules=$GIS_OPT_FOLDER/blockfile/stat_${GIS_OPT_VARIABLE}_${1}.txt --overwrite --q rm -f $GIS_OPT_FOLDER/blockfile/stat_${GIS_OPT_VARIABLE}_${1}.txt -r.out.gdal -c input=${GIS_OPT_VARIABLE}_${1} nodata=-9999 output=$GIS_OPT_FOLDER/blockfile/${GIS_OPT_VARIABLE}_${1}.tif type=Int32 -c createopt="COMPRESS=LZW,ZLEVEL=9" --o --q 2> /dev/null +r.out.gdal -c input=${GIS_OPT_VARIABLE}_${1} nodata=-9999 output=$GIS_OPT_OUT_FOLDER/${GIS_OPT_VARIABLE}_${1}.tif type=Int32 -c createopt="COMPRESS=LZW,ZLEVEL=9" --o --q 2> /dev/null echo "$GIS_OPT_FOLDER/blockfile/${GIS_OPT_VARIABLE}_${1}.tif has been created!" ' _ +exit + echo "The full stream variable calculation has been done!" -echo "To list the stream-specific output variables, use ls $GIS_OPT_FOLDER/blockfile/*.tif" +echo "To list the stream-specific output variables, use ls $GIS_OPT_OUT_FOLDER/*.tif" Modified: grass-addons/grass7/raster/r.stream.watersheds/r.stream.watersheds =================================================================== --- grass-addons/grass7/raster/r.stream.watersheds/r.stream.watersheds 2015-09-22 21:52:57 UTC (rev 66296) +++ grass-addons/grass7/raster/r.stream.watersheds/r.stream.watersheds 2015-09-22 22:24:10 UTC (rev 66297) @@ -22,7 +22,7 @@ ############################################################################# #%Module -#% description: Sub-watershed delineation based on the drainage direction and a gridded stream network. Based on "Domisch, S., Amatulli, G., Jetz, W. (2015) Near-global freshwater-specific environmental variables for biodiversity analyses in 1km resolution. Scientific Data" +#% description: Sub-watershed and sub-stream delineation based on the drainage direction and a gridded stream network. #% keywords: drainage, stream, hydrology #%End @@ -46,12 +46,11 @@ #% key: folder #% type: string #% key_desc: name -#% description: Provide the full folder path and name where the sub-watersheds and sub-streams will be stored +#% description: Provide the full folder path and name where the sub-watersheds and sub-streams should be stored #% required:no #% answer: GISDBASE/folder_structure #%end - #%option #% key: cpu #% type: double @@ -136,17 +135,20 @@ # shell check for user break (signal list: trap -l) # trap "exitprocedure" 2 3 15 + echo "" +echo "#######################################################################################################" echo "Sub-watershed and sub-streams delineation based on the drainage direction and a gridded stream network." echo "" -echo "Citation: Domisch, S., Amatulli, G., Jetz, W. (2015)" +echo "Citation: Domisch, S., Amatulli, G., Jetz, W. (in review)" echo "Near-global freshwater-specific environmental variables for" echo "biodiversity analyses in 1km resolution. Scientific Data" +echo "#######################################################################################################" echo "" echo Exporting stream grid cell coordinates and saving in $GIS_OPT_FOLDER/stream_coord_lines.txt -rm -fr $GIS_OPT_FOLDER 2> /dev/null -mkdir $GIS_OPT_FOLDER 2> /dev/null +rm -fr $GIS_OPT_FOLDER +mkdir $GIS_OPT_FOLDER r.out.xyz --o input=$GIS_OPT_STREAM separator=space output=$GIS_OPT_FOLDER/stream_coord.txt --q @@ -173,25 +175,25 @@ max_seq4d=${max_line: -8:1} ; if [ -z $max_seq4d ] ; then max_seq4d=0 ; else max_seq3d=9 ; max_seq2d=9 ; max_seq1d=9 ; fi for dir4d in $(seq 0 $max_seq4d) ; do -for dir3d in $(seq 0 $max_seq3d) ; do -for dir2d in $(seq 0 $max_seq2d) ; do -for dir1d in $(seq 0 $max_seq1d) ; do -mkdir -p $GIS_OPT_FOLDER/${dir4d}digit4/${dir3d}digit3/${dir2d}digit2/${dir1d}digit1 -done -done + for dir3d in $(seq 0 $max_seq3d) ; do + for dir2d in $(seq 0 $max_seq2d) ; do + for dir1d in $(seq 0 $max_seq1d) ; do + mkdir -p $GIS_OPT_FOLDER/${dir4d}digit4/${dir3d}digit3/${dir2d}digit2/${dir1d}digit1 + done + done + done done -done mkdir $GIS_OPT_FOLDER/blockfile -echo "Split the stream grid cell coordinate file with $( wc -l $GIS_OPT_FOLDER/stream_coord.txt | awk '{ print $1 }' ) grid cells into blocks of 10000 cells" +echo "Split the stream grid cell coordinate file (X|Y|ID) into subsets of 10000 lines" awk -v PATH=$GIS_OPT_FOLDER 'NR%10000==1{x=PATH"/blockfile/blockfile"(++i*10000-10000)}{print > x}' $GIS_OPT_FOLDER/stream_coord_lines.txt awk '{ if(NR>1) print }' $GIS_OPT_FOLDER/blockfile/blockfile0 > $GIS_OPT_FOLDER/blockfile/blockfile0_tmp mv $GIS_OPT_FOLDER/blockfile/blockfile0_tmp $GIS_OPT_FOLDER/blockfile/blockfile0 -echo Create $( ls $GIS_OPT_FOLDER/blockfile/blockfile* | wc -l ) blocks in $GIS_OPT_FOLDER/blockfile/ +echo Create $( ls $GIS_OPT_FOLDER/blockfile/blockfile* | wc -l ) subsets: $GIS_OPT_FOLDER/blockfile/blockfile*.tif rm -fr $GISDBASE/$LOCATION_NAME/sub_watershedID* @@ -216,7 +218,7 @@ g.gisenv set="LOCATION_NAME=$LOCATION_NAME" g.gisenv set="MAPSET=PERMANENT" -echo "Start the sub-watershed delineation for block $file" +echo "Start the sub-watershed delineation for subset $file" awk '{ print NR , $1 , $2 ,$3 }' $file | xargs -n 4 -P $GIS_OPT_CPU bash -c $' NR=$1 @@ -224,13 +226,10 @@ Y_coord=$3 ID=$4 +echo -en "\r$(expr $NR / 100 + 1 )% done" -if [ $( expr $( expr $NR + 1 ) / 100) -eq $( expr $NR / 100 + 1 ) ] ; then -echo -en "\r$(expr $NR / 100 + 1 )% done" -fi +# replicate the start-GISRC in a unique GISRC -# replicate the start-GISRC in a uniq GISRC - cp $GISRC_def $HOME/.grass7/rc$ID export GISRC=$HOME/.grass7/rc$ID @@ -256,8 +255,6 @@ r.null map=sub_streamID${ID} setnull=0 --q r.out.gdal -c type=Byte --o --q nodata=255 createopt="COMPRESS=LZW,ZLEVEL=9" input=sub_streamID${ID}@sub_watershedID${ID} output=$GIS_OPT_FOLDER/${dir4d}digit4/${dir3d}digit3/${dir2d}digit2/${dir1d}digit1/sub_streamID${ID}.tif -if [ ! -f $GIS_OPT_FOLDER/${dir4d}digit4/${dir3d}digit3/${dir2d}digit2/${dir1d}digit1/sub_streamID${ID}.tif ] ; then the file $GIS_OPT_FOLDER/${dir4d}digit4/${dir3d}digit3/${dir2d}digit2/${dir1d}digit1/sub_streamID${ID}.tif dose not exist ; fi - rm -r $HOME/.grass7/rc$ID $GISDBASE/$LOCATION_NAME/sub_watershedID$ID ' _ @@ -320,30 +317,20 @@ ' _ - - rm -fr $GISDBASE/$LOCATION_NAME/sub_watershedID* echo "Compress the sub-watersheds and sub-streams to reduce the number of inodes filling up the hard disk" -cd $GIS_OPT_FOLDER/${dir4d}digit4/${dir3d}digit3/${dir2d}digit2/${dir1d}digit1/ +tar -zcPf $GIS_OPT_FOLDER/${dir4d}digit4/${dir3d}digit3/${dir2d}digit2/${dir1d}digit1/${filename}_sub_watershed.tar.gz $GIS_OPT_FOLDER/${dir4d}digit4/${dir3d}digit3/${dir2d}digit2/${dir1d}digit1/sub_watershedID*.tif +tar -zcPf $GIS_OPT_FOLDER/${dir4d}digit4/${dir3d}digit3/${dir2d}digit2/${dir1d}digit1/${filename}_sub_stream.tar.gz $GIS_OPT_FOLDER/${dir4d}digit4/${dir3d}digit3/${dir2d}digit2/${dir1d}digit1/sub_streamID*.tif -tar -zcPf ${filename}_sub_watershed.tar.gz sub_watershedID*.tif -tar -zcPf ${filename}_sub_stream.tar.gz sub_streamID*.tif +echo list the compressed files by ls $GIS_OPT_FOLDER/*digit4/*digit3/*digit2/*digit1/*.tar.gz -cd $GIS_OPT_FOLDER - g.gisenv set="MAPSET=PERMANENT" g.gisenv set="LOCATION_NAME=$LOCATION_NAME" g.gisenv set="GISDBASE=$GISDBASE" -rm -fr $GISDBASE/$LOCATION_NAME/sub_watershedID* $GIS_OPT_FOLDER/${dir4d}digit4/${dir3d}digit3/${dir2d}digit2/${dir1d}digit1/*.tif +rm -fr $GISDBASE/$LOCATION_NAME/sub_watershedID* $GIS_OPT_FOLDER/${dir4d}digit4/${dir3d}digit3/${dir2d}digit2/${dir1d}digit1/*.tif done -cd $GIS_OPT_FOLDER - -echo The full sub-watershed delineation process has been done! -echo To list the compressed files, use "ls $GIS_OPT_FOLDER/*digit4/*digit3/*digit2/*digit1/*.tar.gz" -echo Now you can use r.stream.variables to compute stream-specific environmental variables. - From svn_grass at osgeo.org Tue Sep 22 19:46:04 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Tue, 22 Sep 2015 19:46:04 -0700 Subject: [GRASS-SVN] r66298 - grass/trunk/scripts/r.import Message-ID: <20150923024604.D0E153900A3@trac.osgeo.org> Author: annakrat Date: 2015-09-22 19:46:04 -0700 (Tue, 22 Sep 2015) New Revision: 66298 Modified: grass/trunk/scripts/r.import/r.import.py Log: r.import: fix import in latlon location Modified: grass/trunk/scripts/r.import/r.import.py =================================================================== --- grass/trunk/scripts/r.import/r.import.py 2015-09-22 22:24:10 UTC (rev 66297) +++ grass/trunk/scripts/r.import/r.import.py 2015-09-23 02:46:04 UTC (rev 66298) @@ -254,13 +254,23 @@ memory=memory, quiet=True) except CalledModuleError: grass.fatal(_("Unable to get reprojected map extent")) + try: + srcregion = grass.parse_key_val(tgtextents, val_type=float, vsep=' ') + n = srcregion['n'] + s = srcregion['s'] + e = srcregion['e'] + w = srcregion['w'] + except ValueError: # import into latlong, expect 53:39:06.894826N + srcregion = grass.parse_key_val(tgtextents, vsep=' ') + n = grass.float_or_dms(srcregion['n'][:-1]) * \ + (-1 if srcregion['n'][-1] == 'S' else 1) + s = grass.float_or_dms(srcregion['s'][:-1]) * \ + (-1 if srcregion['s'][-1] == 'S' else 1) + e = grass.float_or_dms(srcregion['e'][:-1]) * \ + (-1 if srcregion['e'][-1] == 'W' else 1) + w = grass.float_or_dms(srcregion['w'][:-1]) * \ + (-1 if srcregion['w'][-1] == 'W' else 1) - srcregion = grass.parse_key_val(tgtextents, val_type=float, vsep=' ') - n = srcregion['n'] - s = srcregion['s'] - e = srcregion['e'] - w = srcregion['w'] - grass.run_command('g.region', n=n, s=s, e=e, w=w) # v.in.region in tgt From svn_grass at osgeo.org Wed Sep 23 00:23:51 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Wed, 23 Sep 2015 00:23:51 -0700 Subject: [GRASS-SVN] r66299 - grass/trunk/man Message-ID: <20150923072351.3B40B3900A3@trac.osgeo.org> Author: lucadelu Date: 2015-09-23 00:23:51 -0700 (Wed, 23 Sep 2015) New Revision: 66299 Modified: grass/trunk/man/Makefile Log: try to fix travis ci bug Modified: grass/trunk/man/Makefile =================================================================== --- grass/trunk/man/Makefile 2015-09-23 02:46:04 UTC (rev 66298) +++ grass/trunk/man/Makefile 2015-09-23 07:23:51 UTC (rev 66299) @@ -85,7 +85,7 @@ define build_pso GISBASE="$(RUN_GISBASE)" ARCH="$(ARCH)" ARCH_DISTDIR="$(ARCH_DISTDIR)" \ VERSION_NUMBER=$(GRASS_VERSION_NUMBER) VERSION_DATE=$(GRASS_VERSION_DATE) \ - $(PYTHON) ./parser_standard_options.py -t $(GRASS_HOME)/lib/gis/parser_standard_options.c \ + $(PYTHON) $(GRASS_HOME)/man/parser_standard_options.py -t $(GRASS_HOME)/lib/gis/parser_standard_options.c \ -f grass -o $(HTMLDIR)/parser_standard_options.html -p 'id="opts_table" class="scroolTable"' endef From svn_grass at osgeo.org Wed Sep 23 00:43:43 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Wed, 23 Sep 2015 00:43:43 -0700 Subject: [GRASS-SVN] r66300 - grass/trunk/man Message-ID: <20150923074343.B0731390138@trac.osgeo.org> Author: lucadelu Date: 2015-09-23 00:43:43 -0700 (Wed, 23 Sep 2015) New Revision: 66300 Modified: grass/trunk/man/Makefile Log: try to fix travis ci bug: use quote to protect the options Modified: grass/trunk/man/Makefile =================================================================== --- grass/trunk/man/Makefile 2015-09-23 07:23:51 UTC (rev 66299) +++ grass/trunk/man/Makefile 2015-09-23 07:43:43 UTC (rev 66300) @@ -85,8 +85,8 @@ define build_pso GISBASE="$(RUN_GISBASE)" ARCH="$(ARCH)" ARCH_DISTDIR="$(ARCH_DISTDIR)" \ VERSION_NUMBER=$(GRASS_VERSION_NUMBER) VERSION_DATE=$(GRASS_VERSION_DATE) \ - $(PYTHON) $(GRASS_HOME)/man/parser_standard_options.py -t $(GRASS_HOME)/lib/gis/parser_standard_options.c \ - -f grass -o $(HTMLDIR)/parser_standard_options.html -p 'id="opts_table" class="scroolTable"' + $(PYTHON) ./parser_standard_options.py -t "$(GRASS_HOME)/lib/gis/parser_standard_options.c" \ + -f "grass" -o "$(HTMLDIR)/parser_standard_options.html" -p 'id="opts_table" class="scroolTable"' endef $(HTMLDIR)/topics.html: $(ALL_HTML) From svn_grass at osgeo.org Wed Sep 23 01:34:04 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Wed, 23 Sep 2015 01:34:04 -0700 Subject: [GRASS-SVN] r66301 - grass-addons/grass7/imagery/i.spec.sam Message-ID: <20150923083404.6088D390138@trac.osgeo.org> Author: ychemin Date: 2015-09-23 01:34:04 -0700 (Wed, 23 Sep 2015) New Revision: 66301 Modified: grass-addons/grass7/imagery/i.spec.sam/global.h grass-addons/grass7/imagery/i.spec.sam/main.c grass-addons/grass7/imagery/i.spec.sam/open.c Log: continuing the modification towards Gmath Modified: grass-addons/grass7/imagery/i.spec.sam/global.h =================================================================== --- grass-addons/grass7/imagery/i.spec.sam/global.h 2015-09-23 07:43:43 UTC (rev 66300) +++ grass-addons/grass7/imagery/i.spec.sam/global.h 2015-09-23 08:34:04 UTC (rev 66301) @@ -1,5 +1,6 @@ #ifndef __GLOBAL_H__ #define __GLOBAL_H__ +#endif #include #include @@ -11,8 +12,10 @@ #define MAXFILES 255 -extern MAT *A; -extern VEC *b, *Avector; +//extern MAT *A; +extern mat_struct *A; +//extern VEC *b, *Avector; +extern vec_struct *b, *Avector; extern int matrixsize; extern float curr_angle; Modified: grass-addons/grass7/imagery/i.spec.sam/main.c =================================================================== --- grass-addons/grass7/imagery/i.spec.sam/main.c 2015-09-23 07:43:43 UTC (rev 66300) +++ grass-addons/grass7/imagery/i.spec.sam/main.c 2015-09-23 08:34:04 UTC (rev 66301) @@ -20,14 +20,13 @@ #include #include #include -/*#include */ +#include +#include #include "local_proto.h" #include "global.h" -#include -#include -MAT *A; -VEC *b, *Avector; +mat_struct *A; +vec_struct *b, *Avector; int matrixsize; float curr_angle; @@ -86,7 +85,7 @@ parm.result->description = "Raster map prefix to hold spectral angles"; if (G_parser(argc,argv)) - exit(1); + G_fatal_error("Parsing arguments error"); result_prefix = parm.result->answer; group = parm.group->answer; @@ -114,21 +113,21 @@ b = get_row(A, j, VNULL); /* compare with next col in A */ spectral_angle(); anglefield[i][j]= curr_angle; - V_FREE(b); + G_vector_free(b); } } - V_FREE(Avector); + G_vector_free(Avector); } /* print out the result */ - fprintf(stderr,"Orthogonality check of Matrix A:\n"); + G_message("Orthogonality check of Matrix A:\n"); for (i = 0; i < Ref.nfiles ; i++) for (j = 0; j < Ref.nfiles ; j++) { if (j !=i) - fprintf(stderr," Angle between row %i and row %i: %g\n", (i+1), (j+1), anglefield[i][j]); + G_message(" Angle between row %i and row %i: %g\n", (i+1), (j+1), anglefield[i][j]); } - fprintf(stderr,"\n"); + G_message(stderr,"\n"); /* check it */ for (i = 0; i < Ref.nfiles ; i++) @@ -136,27 +135,24 @@ if (j !=i) if (anglefield[i][j] < 10.0) { - fprintf(stderr,"ERROR: Spectral entries row %i|%i in your matrix are linear dependent!\n",i,j); + G_message("ERROR: Spectral entries row %i|%i in your matrix are linear dependent!\n",i,j); error=1; } if (!error) - fprintf(stderr,"Spectral matrix is o.k. Proceeding...\n"); + G_message("Spectral matrix is o.k. Proceeding...\n"); /* check singular values of Matrix A * Ref: Boardman, J.W. 1989: Inversion of imaging spectrometry data - * using singular value decomposition. IGARSS 1989: 12th Canadian + * using singular value decomposition. IGARSS 1989: 12th Canadian * symposium on Remote Sensing. Vol.4 pp.2069-2072 */ - fprintf(stderr,"\n"); - fprintf(stderr,"Singular values of Matrix A:"); + G_message("Singular values of Matrix A:"); svd_values = svd(A, MNULL, MNULL, VNULL); v_output(svd_values); - fprintf(stderr,"\n"); if (error) { - fprintf(stderr,"Exiting...\n"); - exit(-1); + G_fatal_error("Exiting...\n"); } /* alright, start Spectral angle mapping */ @@ -188,10 +184,10 @@ Avector = get_row(A, i, VNULL); /* go row-wise through matrix*/ spectral_angle(); result_cell[i][col] = myround (curr_angle); - V_FREE(Avector); + G_vector_free(Avector); } - V_FREE(b); + G_vector_free(b); } /* columns loop */ @@ -215,9 +211,9 @@ /* write a color table */ } - M_FREE(A); + G_matrix_free(A); make_history(result_name, group, matrixfile); - exit(0); + return; } /* main*/ Modified: grass-addons/grass7/imagery/i.spec.sam/open.c =================================================================== --- grass-addons/grass7/imagery/i.spec.sam/open.c 2015-09-23 07:43:43 UTC (rev 66300) +++ grass-addons/grass7/imagery/i.spec.sam/open.c 2015-09-23 08:34:04 UTC (rev 66301) @@ -1,16 +1,5 @@ /* Spectral angle mapping * (c) Oct/1998 Markus Neteler, Hannover - * - ************************************************************************** - ** Matrix computations based on Meschach Library - ** Copyright (C) 1993 David E. Steward & Zbigniew Leyk, all rights reserved. - ************************************************************************** - * - * Cited references are from - Steward, D.E, Leyk, Z. 1994: Meschach: Matrix computations in C. - Proceedings of the centre for Mathematics and its Applicaions. - The Australian National University. Vol. 32. - ISBN 0 7315 1900 0 */ #include "global.h" @@ -18,9 +7,11 @@ #include #include #include -#include +#include #include +int G_matrix_read2(FILE * fp, mat_struct * out); /* Modified version of G_matrix_read(..). */ + int open_files() { char *name, *mapset; @@ -32,28 +23,27 @@ fp=fopen(matrixfile,"r"); if (fp == NULL) G_fatal_error("ERROR: Matrixfile %s not found.\n",matrixfile); - A = m_finput(fp, MNULL); - fclose (fp); + /* Read data and close file */ + if ((G_matrix_read2(fp, &A) < 0)) + G_fatal_error(_("Unable to read matrix file %s."), matrixfile); + fclose(fp); - /*IF GRASS/GMATH.H if(A->rows < A->cols) - */ - if ( A->m < A->n ) G_fatal_error("Need m (rows) >= n (cols) to obtain least squares fit\n"); + /*Only for debug, so temporary disabled*/ + /* G_verbose_message("Your spectral matrix = "); if (G_verbose() > G_verbose_std()) { m_output(A); } - matrixsize = A->n; - /*IF GRASS/GMATH.H + */ matrixsize=A->cols; - */ + /* open input files from group */ if (!I_find_group(group)) { - G_message("group=%s - not found\n", group); - exit(1); + G_fatal_error("group=%s - not found\n", group); } I_get_group_ref(group, &Ref); if (Ref.nfiles <= 1) @@ -69,7 +59,7 @@ if (Ref.nfiles != matrixsize) { G_message("Error: Number of %i input files in group <%s>\n", Ref.nfiles, group); - G_fatal_error(" does not match matrix size (%i cols).\n", A->n); + G_fatal_error(" does not match matrix size (%i cols).\n", A->cols); } /* get memory for input files */ @@ -99,3 +89,47 @@ return(matrixsize); /* give back number of output files (= Ref.nfiles) */ } + +int G_matrix_read2(FILE * fp, mat_struct * out) +{ + char buff[100]; + int rows, cols; + int i, j, row; + double val; + + /* skip comments */ + for (;;) { + if (!G_getl(buff, sizeof(buff), fp)) + return -1; + if (buff[0] != '#') + break; + } + + if (sscanf(buff, "Matrix: %d by %d", &rows, &cols) != 2) { + G_warning(_("Input format error1")); + return -1; + } + + + G_matrix_set(out, rows, cols, rows); + + + for (i = 0; i < rows; i++) { + if (fscanf(fp, "row%d:", &row) != 1) { + G_warning(_("Input format error")); + return -1; + } + + for (j = 0; j < cols; j++) { + if (fscanf(fp, "%lf:", &val) != 1) { + G_warning(_("Input format error")); + return -1; + } + + fgetc(fp); + G_matrix_set_element(out, i, j, val); + } + } + + return 0; +} From svn_grass at osgeo.org Wed Sep 23 02:21:32 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Wed, 23 Sep 2015 02:21:32 -0700 Subject: [GRASS-SVN] r66302 - grass-addons/grass7/imagery/i.spec.sam Message-ID: <20150923092132.3E384390138@trac.osgeo.org> Author: ychemin Date: 2015-09-23 02:21:32 -0700 (Wed, 23 Sep 2015) New Revision: 66302 Modified: grass-addons/grass7/imagery/i.spec.sam/main.c Log: continuing the modification towards Gmath Modified: grass-addons/grass7/imagery/i.spec.sam/main.c =================================================================== --- grass-addons/grass7/imagery/i.spec.sam/main.c 2015-09-23 08:34:04 UTC (rev 66301) +++ grass-addons/grass7/imagery/i.spec.sam/main.c 2015-09-23 09:21:32 UTC (rev 66302) @@ -22,6 +22,7 @@ #include #include #include +/*#include */ #include "local_proto.h" #include "global.h" @@ -47,7 +48,7 @@ int open_files(); void spectral_angle(); -CELL myround(x); +CELL myround(double x); int main(argc,argv) char *argv[]; @@ -217,8 +218,7 @@ } /* main*/ -CELL myround (x) - double x; +CELL myround (double x) { CELL n; From svn_grass at osgeo.org Wed Sep 23 02:22:52 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Wed, 23 Sep 2015 02:22:52 -0700 Subject: [GRASS-SVN] r66303 - grass-addons/grass7/imagery/i.spec.sam Message-ID: <20150923092252.D1CE0390138@trac.osgeo.org> Author: ychemin Date: 2015-09-23 02:22:52 -0700 (Wed, 23 Sep 2015) New Revision: 66303 Modified: grass-addons/grass7/imagery/i.spec.sam/main.c Log: continuing the modification towards Gmath Modified: grass-addons/grass7/imagery/i.spec.sam/main.c =================================================================== --- grass-addons/grass7/imagery/i.spec.sam/main.c 2015-09-23 09:21:32 UTC (rev 66302) +++ grass-addons/grass7/imagery/i.spec.sam/main.c 2015-09-23 09:22:52 UTC (rev 66303) @@ -50,8 +50,7 @@ void spectral_angle(); CELL myround(double x); -int main(argc,argv) -char *argv[]; +int main(int argc,char * argv[]) { int nrows, ncols; int row, col; From svn_grass at osgeo.org Wed Sep 23 02:24:23 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Wed, 23 Sep 2015 02:24:23 -0700 Subject: [GRASS-SVN] r66304 - grass-addons/grass7/imagery/i.spec.sam Message-ID: <20150923092423.8405F390138@trac.osgeo.org> Author: ychemin Date: 2015-09-23 02:24:23 -0700 (Wed, 23 Sep 2015) New Revision: 66304 Modified: grass-addons/grass7/imagery/i.spec.sam/main.c Log: fixed exit code Modified: grass-addons/grass7/imagery/i.spec.sam/main.c =================================================================== --- grass-addons/grass7/imagery/i.spec.sam/main.c 2015-09-23 09:22:52 UTC (rev 66303) +++ grass-addons/grass7/imagery/i.spec.sam/main.c 2015-09-23 09:24:23 UTC (rev 66304) @@ -16,6 +16,7 @@ ********************************************************************/ #include +#include #include #include #include @@ -213,7 +214,7 @@ G_matrix_free(A); make_history(result_name, group, matrixfile); - return; + return(EXIT_SUCCESS); } /* main*/ From svn_grass at osgeo.org Wed Sep 23 02:25:45 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Wed, 23 Sep 2015 02:25:45 -0700 Subject: [GRASS-SVN] r66305 - grass-addons/grass7/imagery/i.spec.sam Message-ID: <20150923092545.15E43390138@trac.osgeo.org> Author: ychemin Date: 2015-09-23 02:25:45 -0700 (Wed, 23 Sep 2015) New Revision: 66305 Modified: grass-addons/grass7/imagery/i.spec.sam/main.c Log: last simple fix Modified: grass-addons/grass7/imagery/i.spec.sam/main.c =================================================================== --- grass-addons/grass7/imagery/i.spec.sam/main.c 2015-09-23 09:24:23 UTC (rev 66304) +++ grass-addons/grass7/imagery/i.spec.sam/main.c 2015-09-23 09:25:45 UTC (rev 66305) @@ -128,7 +128,7 @@ if (j !=i) G_message(" Angle between row %i and row %i: %g\n", (i+1), (j+1), anglefield[i][j]); } - G_message(stderr,"\n"); + G_message("\n"); /* check it */ for (i = 0; i < Ref.nfiles ; i++) From svn_grass at osgeo.org Wed Sep 23 06:58:40 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Wed, 23 Sep 2015 06:58:40 -0700 Subject: [GRASS-SVN] r66306 - grass/trunk/lib/python/temporal Message-ID: <20150923135840.631DC3900A3@trac.osgeo.org> Author: neteler Date: 2015-09-23 06:58:40 -0700 (Wed, 23 Sep 2015) New Revision: 66306 Modified: grass/trunk/lib/python/temporal/register.py Log: temporal revert r66278 for t.register register.py Modified: grass/trunk/lib/python/temporal/register.py =================================================================== --- grass/trunk/lib/python/temporal/register.py 2015-09-23 09:25:45 UTC (rev 66305) +++ grass/trunk/lib/python/temporal/register.py 2015-09-23 13:58:40 UTC (rev 66306) @@ -91,8 +91,6 @@ # The name of the space time dataset is optional if name: - if name.find("@") <= 0: - name = name + "@" + mapset sp = open_old_stds(name, type, dbif) if sp.is_time_relative() and (start or end) and not unit: From svn_grass at osgeo.org Wed Sep 23 06:59:24 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Wed, 23 Sep 2015 06:59:24 -0700 Subject: [GRASS-SVN] r66307 - grass/branches/releasebranch_7_0/lib/python/temporal Message-ID: <20150923135924.BCBD53900A3@trac.osgeo.org> Author: neteler Date: 2015-09-23 06:59:24 -0700 (Wed, 23 Sep 2015) New Revision: 66307 Modified: grass/branches/releasebranch_7_0/lib/python/temporal/register.py Log: temporal revert r66279 for t.register Modified: grass/branches/releasebranch_7_0/lib/python/temporal/register.py =================================================================== --- grass/branches/releasebranch_7_0/lib/python/temporal/register.py 2015-09-23 13:58:40 UTC (rev 66306) +++ grass/branches/releasebranch_7_0/lib/python/temporal/register.py 2015-09-23 13:59:24 UTC (rev 66307) @@ -91,8 +91,6 @@ # The name of the space time dataset is optional if name: - if name.find("@") <= 0: - name = name + "@" + mapset sp = open_old_stds(name, type, dbif) if sp.is_time_relative() and (start or end) and not unit: From svn_grass at osgeo.org Wed Sep 23 07:35:57 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Wed, 23 Sep 2015 07:35:57 -0700 Subject: [GRASS-SVN] r66308 - grass/trunk/lib/python/temporal Message-ID: <20150923143557.3E4463900A3@trac.osgeo.org> Author: huhabla Date: 2015-09-23 07:35:57 -0700 (Wed, 23 Sep 2015) New Revision: 66308 Modified: grass/trunk/lib/python/temporal/extract.py Log: temporal framework: Fixed stds name replacement to avoid conflicts with basenames Modified: grass/trunk/lib/python/temporal/extract.py =================================================================== --- grass/trunk/lib/python/temporal/extract.py 2015-09-23 13:59:24 UTC (rev 66307) +++ grass/trunk/lib/python/temporal/extract.py 2015-09-23 14:35:57 UTC (rev 66308) @@ -91,11 +91,12 @@ # We need to modify the r(3).mapcalc expression if type != "vector": - expr = "%s = %s" % (map_name, expression) - + expr = expression expr = expr.replace(sp.base.get_map_id(), row["id"]) expr = expr.replace(sp.base.get_name(), row["id"]) + expr = "%s = %s" % (map_name, expr) + # We need to build the id map_id = AbstractMapDataset.build_id(map_name, mapset) else: From svn_grass at osgeo.org Wed Sep 23 12:14:44 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Wed, 23 Sep 2015 12:14:44 -0700 Subject: [GRASS-SVN] r66309 - grass-addons/grass7/vector Message-ID: <20150923191444.CD92B3900A3@trac.osgeo.org> Author: hellik Date: 2015-09-23 12:14:44 -0700 (Wed, 23 Sep 2015) New Revision: 66309 Added: grass-addons/grass7/vector/v.in.redlist/ Log: v.in.redlist: add new addon From svn_grass at osgeo.org Wed Sep 23 12:16:53 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Wed, 23 Sep 2015 12:16:53 -0700 Subject: [GRASS-SVN] r66310 - grass-addons/grass7/vector/v.in.redlist Message-ID: <20150923191653.ABEEC3900A3@trac.osgeo.org> Author: hellik Date: 2015-09-23 12:16:53 -0700 (Wed, 23 Sep 2015) New Revision: 66310 Added: grass-addons/grass7/vector/v.in.redlist/Makefile grass-addons/grass7/vector/v.in.redlist/v.in.redlist.html grass-addons/grass7/vector/v.in.redlist/v.in.redlist.py Log: v.in.redlist: new addon script Added: grass-addons/grass7/vector/v.in.redlist/Makefile =================================================================== --- grass-addons/grass7/vector/v.in.redlist/Makefile (rev 0) +++ grass-addons/grass7/vector/v.in.redlist/Makefile 2015-09-23 19:16:53 UTC (rev 66310) @@ -0,0 +1,7 @@ +MODULE_TOPDIR = ../.. + +PGM = v.in.redlist + +include $(MODULE_TOPDIR)/include/Make/Script.make + +default: script Added: grass-addons/grass7/vector/v.in.redlist/v.in.redlist.html =================================================================== --- grass-addons/grass7/vector/v.in.redlist/v.in.redlist.html (rev 0) +++ grass-addons/grass7/vector/v.in.redlist/v.in.redlist.html 2015-09-23 19:16:53 UTC (rev 66310) @@ -0,0 +1,46 @@ +

    DESCRIPTION

    + +v.in.redlist imports IUCN Red List +Spatial Data. + +This data is by definition in WGS84 geographic coordinates. + +

    + By the -l flag species in column 'binomial' of the attribute +table are listed. The species in column 'binomial' can be exported to a +text file by the -s flag. +

    + +

    +One of the species mentioned by -l or -s flag has to be specified for importing. +

    + +

    EXAMPLE

    + +
    +
    +  # list species in column 'binomial' of the attribute table by -l flag
    +  v.in.redlist -l input=C:\dl\iucn\GYMNOPHIONA\GYMNOPHIONA.shp
    +  
    +  # export species in column 'binomial' of the attribute table into a text file by -s flag  
    +  v.in.redlist -s input=C:\dl\iucn\GYMNOPHIONA\GYMNOPHIONA.shp dir=C:\dl\iucn\GYMNOPHIONA
    +  
    +  # import spatial data for a user defined species 
    +  v.in.redlist input=C:\dl\iucn\GYMNOPHIONA\GYMNOPHIONA.shp /
    +  output=Scolecomorphus_vittatus species_name=Scolecomorphus vittatus 
    + 
    +
    + +

    SEE ALSO

    + + +v.in.ogr + + +

    AUTHOR

    + +Helmut Kudrnovsky + +

    +Last changed: $Date: 2015-08-28 18:13:57 +0200 (Fr, 28 Aug 2015) $ +

    \ No newline at end of file Added: grass-addons/grass7/vector/v.in.redlist/v.in.redlist.py =================================================================== --- grass-addons/grass7/vector/v.in.redlist/v.in.redlist.py (rev 0) +++ grass-addons/grass7/vector/v.in.redlist/v.in.redlist.py 2015-09-23 19:16:53 UTC (rev 66310) @@ -0,0 +1,133 @@ +#!/usr/bin/env python + +""" +MODULE: v.in.redlist + +AUTHOR(S): Helmut Kudrnovsky + +PURPOSE: Imports IUCN Red List Spatial Data + +COPYRIGHT: (C) 2015 by the GRASS Development Team + + This program is free software under the GNU General Public + License (>=v2). Read the file COPYING that comes with GRASS + for details. +""" + +#%module +#% description: importing of IUCN Red List Spatial Data +#% keyword: vector +#% keyword: geometry +#%end + +#%option G_OPT_F_BIN_INPUT +#% key: input +#% description: name of the IUCN Red List Spatial Data shapefile +#% required : yes +#% guisection: GIS data +#%end + +#%option G_OPT_V_OUTPUT +#% key: output +#% description: name of the imported IUCN Red List Spatial Data +#% required : no +#% guisection: GIS data +#%end + +#%option +#% key: species_name +#% description: name of species which should be imported +#% required : no +#% guisection: GIS data +#%end + +#%flag +#% key: l +#% description: list species in IUCN Red List Spatial Data +#% guisection: listing +#%end + +#%flag +#% key: s +#% description: save species list to a text file +#% guisection: listing +#%end + +#%option G_OPT_M_DIR +#% key: dir +#% description: Directory where the species list will be found +#% required : no +#% guisection: listing +#%end + +import sys +import os +import grass.script as grass +from osgeo import ogr + +if not os.environ.has_key("GISBASE"): + grass.message( "You must be in GRASS GIS to run this program." ) + sys.exit(1) + +def main(): + + + redlist_shapefile_long = options['input'] + imported_species = options['species_name'] + species_to_import = options['output'] + imported_species_quoted = "'"+imported_species+"'" + directory = options['dir'] + list_species = flags['l'] + save_species = flags['s'] + redlist_shapefile_short = os.path.basename(redlist_shapefile_long) + species_filename = redlist_shapefile_short.split('.')[0] + species_file = species_filename+'.txt' + global tmp + + # save species list to a user defined directory + + if save_species : + + grass.message( "saving species list to a text file ..." ) + output_species_file = os.path.join( directory, species_file ) + # define ogr driver + driver = ogr.GetDriverByName("ESRI Shapefile") + # open data source + dataSource = driver.Open(redlist_shapefile_long, 0) + # get layer + layer = dataSource.GetLayer() + # open export file + f = open('%s' % (output_species_file), 'wb') + # write content of the attribute table column binomial + for feature in layer: + f.write('%s\n' % (feature.GetField("binomial"))) + f.close() + grass.message( "%s" % (output_species_file) ) + + # print species list of the shapefile + + elif list_species : + + grass.message( "list species IUCN Red List Spatial Data ..." ) + # define ogr driver + driver = ogr.GetDriverByName("ESRI Shapefile") + # open data source + dataSource = driver.Open(redlist_shapefile_long, 0) + # get layer + layer = dataSource.GetLayer() + for feature in layer: + grass.message( '%s' % (feature.GetField("binomial"))) + + # import spatial data for a user defined species in the Red List + + else : + + grass.message( " importing spatial data for %s ..." % (imported_species_quoted) ) + grass.run_command( "v.in.ogr", input = redlist_shapefile_long, + output = species_to_import, + where = "binomial = %s" % (imported_species_quoted), + quiet = True) + +if __name__ == "__main__": + options, flags = grass.parser() + sys.exit(main()) From svn_grass at osgeo.org Wed Sep 23 12:22:49 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Wed, 23 Sep 2015 12:22:49 -0700 Subject: [GRASS-SVN] r66311 - grass-addons/grass7/vector/v.in.redlist Message-ID: <20150923192249.DF4E53900A3@trac.osgeo.org> Author: hellik Date: 2015-09-23 12:22:49 -0700 (Wed, 23 Sep 2015) New Revision: 66311 Modified: grass-addons/grass7/vector/v.in.redlist/Makefile grass-addons/grass7/vector/v.in.redlist/v.in.redlist.html grass-addons/grass7/vector/v.in.redlist/v.in.redlist.py Log: v.in.redlist: module_svn_propset Modified: grass-addons/grass7/vector/v.in.redlist/Makefile =================================================================== --- grass-addons/grass7/vector/v.in.redlist/Makefile 2015-09-23 19:16:53 UTC (rev 66310) +++ grass-addons/grass7/vector/v.in.redlist/Makefile 2015-09-23 19:22:49 UTC (rev 66311) @@ -1,7 +1,7 @@ -MODULE_TOPDIR = ../.. - -PGM = v.in.redlist - -include $(MODULE_TOPDIR)/include/Make/Script.make - -default: script +MODULE_TOPDIR = ../.. + +PGM = v.in.redlist + +include $(MODULE_TOPDIR)/include/Make/Script.make + +default: script Property changes on: grass-addons/grass7/vector/v.in.redlist/Makefile ___________________________________________________________________ Added: svn:mime-type + text/x-makefile Added: svn:eol-style + native Modified: grass-addons/grass7/vector/v.in.redlist/v.in.redlist.html =================================================================== --- grass-addons/grass7/vector/v.in.redlist/v.in.redlist.html 2015-09-23 19:16:53 UTC (rev 66310) +++ grass-addons/grass7/vector/v.in.redlist/v.in.redlist.html 2015-09-23 19:22:49 UTC (rev 66311) @@ -1,46 +1,46 @@ -

    DESCRIPTION

    - -v.in.redlist imports IUCN Red List -Spatial Data. - -This data is by definition in WGS84 geographic coordinates. - -

    - By the -l flag species in column 'binomial' of the attribute -table are listed. The species in column 'binomial' can be exported to a -text file by the -s flag. -

    - -

    -One of the species mentioned by -l or -s flag has to be specified for importing. -

    - -

    EXAMPLE

    - -
    -
    -  # list species in column 'binomial' of the attribute table by -l flag
    -  v.in.redlist -l input=C:\dl\iucn\GYMNOPHIONA\GYMNOPHIONA.shp
    -  
    -  # export species in column 'binomial' of the attribute table into a text file by -s flag  
    -  v.in.redlist -s input=C:\dl\iucn\GYMNOPHIONA\GYMNOPHIONA.shp dir=C:\dl\iucn\GYMNOPHIONA
    -  
    -  # import spatial data for a user defined species 
    -  v.in.redlist input=C:\dl\iucn\GYMNOPHIONA\GYMNOPHIONA.shp /
    -  output=Scolecomorphus_vittatus species_name=Scolecomorphus vittatus 
    - 
    -
    - -

    SEE ALSO

    - - -v.in.ogr - - -

    AUTHOR

    - -Helmut Kudrnovsky - -

    -Last changed: $Date: 2015-08-28 18:13:57 +0200 (Fr, 28 Aug 2015) $ +

    DESCRIPTION

    + +v.in.redlist imports IUCN Red List +Spatial Data. + +This data is by definition in WGS84 geographic coordinates. + +

    + By the -l flag species in column 'binomial' of the attribute +table are listed. The species in column 'binomial' can be exported to a +text file by the -s flag. +

    + +

    +One of the species mentioned by -l or -s flag has to be specified for importing. +

    + +

    EXAMPLE

    + +
    +
    +  # list species in column 'binomial' of the attribute table by -l flag
    +  v.in.redlist -l input=C:\dl\iucn\GYMNOPHIONA\GYMNOPHIONA.shp
    +  
    +  # export species in column 'binomial' of the attribute table into a text file by -s flag  
    +  v.in.redlist -s input=C:\dl\iucn\GYMNOPHIONA\GYMNOPHIONA.shp dir=C:\dl\iucn\GYMNOPHIONA
    +  
    +  # import spatial data for a user defined species 
    +  v.in.redlist input=C:\dl\iucn\GYMNOPHIONA\GYMNOPHIONA.shp /
    +  output=Scolecomorphus_vittatus species_name=Scolecomorphus vittatus 
    + 
    +
    + +

    SEE ALSO

    + + +v.in.ogr + + +

    AUTHOR

    + +Helmut Kudrnovsky + +

    +Last changed: $Date$

    \ No newline at end of file Property changes on: grass-addons/grass7/vector/v.in.redlist/v.in.redlist.html ___________________________________________________________________ Added: svn:mime-type + text/html Added: svn:keywords + Author Date Id Added: svn:eol-style + native Modified: grass-addons/grass7/vector/v.in.redlist/v.in.redlist.py =================================================================== --- grass-addons/grass7/vector/v.in.redlist/v.in.redlist.py 2015-09-23 19:16:53 UTC (rev 66310) +++ grass-addons/grass7/vector/v.in.redlist/v.in.redlist.py 2015-09-23 19:22:49 UTC (rev 66311) @@ -1,133 +1,133 @@ -#!/usr/bin/env python - -""" -MODULE: v.in.redlist - -AUTHOR(S): Helmut Kudrnovsky - -PURPOSE: Imports IUCN Red List Spatial Data - -COPYRIGHT: (C) 2015 by the GRASS Development Team - - This program is free software under the GNU General Public - License (>=v2). Read the file COPYING that comes with GRASS - for details. -""" - -#%module -#% description: importing of IUCN Red List Spatial Data -#% keyword: vector -#% keyword: geometry -#%end - -#%option G_OPT_F_BIN_INPUT -#% key: input -#% description: name of the IUCN Red List Spatial Data shapefile -#% required : yes -#% guisection: GIS data -#%end - -#%option G_OPT_V_OUTPUT -#% key: output -#% description: name of the imported IUCN Red List Spatial Data -#% required : no -#% guisection: GIS data -#%end - -#%option -#% key: species_name -#% description: name of species which should be imported -#% required : no -#% guisection: GIS data -#%end - -#%flag -#% key: l -#% description: list species in IUCN Red List Spatial Data -#% guisection: listing -#%end - -#%flag -#% key: s -#% description: save species list to a text file -#% guisection: listing -#%end - -#%option G_OPT_M_DIR -#% key: dir -#% description: Directory where the species list will be found -#% required : no -#% guisection: listing -#%end - -import sys -import os -import grass.script as grass -from osgeo import ogr - -if not os.environ.has_key("GISBASE"): - grass.message( "You must be in GRASS GIS to run this program." ) - sys.exit(1) - -def main(): - - - redlist_shapefile_long = options['input'] - imported_species = options['species_name'] - species_to_import = options['output'] - imported_species_quoted = "'"+imported_species+"'" - directory = options['dir'] - list_species = flags['l'] - save_species = flags['s'] - redlist_shapefile_short = os.path.basename(redlist_shapefile_long) - species_filename = redlist_shapefile_short.split('.')[0] - species_file = species_filename+'.txt' - global tmp - - # save species list to a user defined directory - - if save_species : - - grass.message( "saving species list to a text file ..." ) - output_species_file = os.path.join( directory, species_file ) - # define ogr driver - driver = ogr.GetDriverByName("ESRI Shapefile") - # open data source - dataSource = driver.Open(redlist_shapefile_long, 0) - # get layer - layer = dataSource.GetLayer() - # open export file - f = open('%s' % (output_species_file), 'wb') - # write content of the attribute table column binomial - for feature in layer: - f.write('%s\n' % (feature.GetField("binomial"))) - f.close() - grass.message( "%s" % (output_species_file) ) - - # print species list of the shapefile - - elif list_species : - - grass.message( "list species IUCN Red List Spatial Data ..." ) - # define ogr driver - driver = ogr.GetDriverByName("ESRI Shapefile") - # open data source - dataSource = driver.Open(redlist_shapefile_long, 0) - # get layer - layer = dataSource.GetLayer() - for feature in layer: - grass.message( '%s' % (feature.GetField("binomial"))) - - # import spatial data for a user defined species in the Red List - - else : - - grass.message( " importing spatial data for %s ..." % (imported_species_quoted) ) - grass.run_command( "v.in.ogr", input = redlist_shapefile_long, - output = species_to_import, - where = "binomial = %s" % (imported_species_quoted), - quiet = True) - -if __name__ == "__main__": - options, flags = grass.parser() - sys.exit(main()) +#!/usr/bin/env python + +""" +MODULE: v.in.redlist + +AUTHOR(S): Helmut Kudrnovsky + +PURPOSE: Imports IUCN Red List Spatial Data + +COPYRIGHT: (C) 2015 by the GRASS Development Team + + This program is free software under the GNU General Public + License (>=v2). Read the file COPYING that comes with GRASS + for details. +""" + +#%module +#% description: importing of IUCN Red List Spatial Data +#% keyword: vector +#% keyword: geometry +#%end + +#%option G_OPT_F_BIN_INPUT +#% key: input +#% description: name of the IUCN Red List Spatial Data shapefile +#% required : yes +#% guisection: GIS data +#%end + +#%option G_OPT_V_OUTPUT +#% key: output +#% description: name of the imported IUCN Red List Spatial Data +#% required : no +#% guisection: GIS data +#%end + +#%option +#% key: species_name +#% description: name of species which should be imported +#% required : no +#% guisection: GIS data +#%end + +#%flag +#% key: l +#% description: list species in IUCN Red List Spatial Data +#% guisection: listing +#%end + +#%flag +#% key: s +#% description: save species list to a text file +#% guisection: listing +#%end + +#%option G_OPT_M_DIR +#% key: dir +#% description: Directory where the species list will be found +#% required : no +#% guisection: listing +#%end + +import sys +import os +import grass.script as grass +from osgeo import ogr + +if not os.environ.has_key("GISBASE"): + grass.message( "You must be in GRASS GIS to run this program." ) + sys.exit(1) + +def main(): + + + redlist_shapefile_long = options['input'] + imported_species = options['species_name'] + species_to_import = options['output'] + imported_species_quoted = "'"+imported_species+"'" + directory = options['dir'] + list_species = flags['l'] + save_species = flags['s'] + redlist_shapefile_short = os.path.basename(redlist_shapefile_long) + species_filename = redlist_shapefile_short.split('.')[0] + species_file = species_filename+'.txt' + global tmp + + # save species list to a user defined directory + + if save_species : + + grass.message( "saving species list to a text file ..." ) + output_species_file = os.path.join( directory, species_file ) + # define ogr driver + driver = ogr.GetDriverByName("ESRI Shapefile") + # open data source + dataSource = driver.Open(redlist_shapefile_long, 0) + # get layer + layer = dataSource.GetLayer() + # open export file + f = open('%s' % (output_species_file), 'wb') + # write content of the attribute table column binomial + for feature in layer: + f.write('%s\n' % (feature.GetField("binomial"))) + f.close() + grass.message( "%s" % (output_species_file) ) + + # print species list of the shapefile + + elif list_species : + + grass.message( "list species IUCN Red List Spatial Data ..." ) + # define ogr driver + driver = ogr.GetDriverByName("ESRI Shapefile") + # open data source + dataSource = driver.Open(redlist_shapefile_long, 0) + # get layer + layer = dataSource.GetLayer() + for feature in layer: + grass.message( '%s' % (feature.GetField("binomial"))) + + # import spatial data for a user defined species in the Red List + + else : + + grass.message( " importing spatial data for %s ..." % (imported_species_quoted) ) + grass.run_command( "v.in.ogr", input = redlist_shapefile_long, + output = species_to_import, + where = "binomial = %s" % (imported_species_quoted), + quiet = True) + +if __name__ == "__main__": + options, flags = grass.parser() + sys.exit(main()) Property changes on: grass-addons/grass7/vector/v.in.redlist/v.in.redlist.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native From svn_grass at osgeo.org Wed Sep 23 12:26:15 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Wed, 23 Sep 2015 12:26:15 -0700 Subject: [GRASS-SVN] r66312 - grass-addons/grass7/vector Message-ID: <20150923192616.070EC3900A3@trac.osgeo.org> Author: hellik Date: 2015-09-23 12:26:15 -0700 (Wed, 23 Sep 2015) New Revision: 66312 Modified: grass-addons/grass7/vector/Makefile Log: v.in.redlist: activate by updating addon make file Modified: grass-addons/grass7/vector/Makefile =================================================================== --- grass-addons/grass7/vector/Makefile 2015-09-23 19:22:49 UTC (rev 66311) +++ grass-addons/grass7/vector/Makefile 2015-09-23 19:26:15 UTC (rev 66312) @@ -25,6 +25,7 @@ v.in.geopaparazzi \ v.in.gps \ v.in.ply \ + v.in.redlist \ v.in.redwg \ v.in.wfs2 \ v.isochrones \ From svn_grass at osgeo.org Wed Sep 23 12:37:39 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Wed, 23 Sep 2015 12:37:39 -0700 Subject: [GRASS-SVN] r66313 - grass/branches/releasebranch_7_0/lib/python/temporal Message-ID: <20150923193739.30F223900A3@trac.osgeo.org> Author: neteler Date: 2015-09-23 12:37:39 -0700 (Wed, 23 Sep 2015) New Revision: 66313 Modified: grass/branches/releasebranch_7_0/lib/python/temporal/extract.py Log: temporal framework: Fixed stds name replacement to avoid conflicts with basenames (trunk, r66308) Modified: grass/branches/releasebranch_7_0/lib/python/temporal/extract.py =================================================================== --- grass/branches/releasebranch_7_0/lib/python/temporal/extract.py 2015-09-23 19:26:15 UTC (rev 66312) +++ grass/branches/releasebranch_7_0/lib/python/temporal/extract.py 2015-09-23 19:37:39 UTC (rev 66313) @@ -91,11 +91,12 @@ # We need to modify the r(3).mapcalc expression if type != "vector": - expr = "%s = %s" % (map_name, expression) - + expr = expression expr = expr.replace(sp.base.get_map_id(), row["id"]) expr = expr.replace(sp.base.get_name(), row["id"]) + expr = "%s = %s" % (map_name, expr) + # We need to build the id map_id = AbstractMapDataset.build_id(map_name, mapset) else: From svn_grass at osgeo.org Wed Sep 23 13:45:20 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Wed, 23 Sep 2015 13:45:20 -0700 Subject: [GRASS-SVN] r66314 - in grass-addons/grass7/raster: r.stream.variables r.stream.watersheds Message-ID: <20150923204520.7F7F6390135@trac.osgeo.org> Author: elselvaje Date: 2015-09-23 13:45:20 -0700 (Wed, 23 Sep 2015) New Revision: 66314 Modified: grass-addons/grass7/raster/r.stream.variables/r.stream.variables grass-addons/grass7/raster/r.stream.watersheds/r.stream.watersheds Log: check tar location and output location Modified: grass-addons/grass7/raster/r.stream.variables/r.stream.variables =================================================================== --- grass-addons/grass7/raster/r.stream.variables/r.stream.variables 2015-09-23 19:37:39 UTC (rev 66313) +++ grass-addons/grass7/raster/r.stream.variables/r.stream.variables 2015-09-23 20:45:20 UTC (rev 66314) @@ -5,7 +5,7 @@ # MODULE: r.stream.watersheds # # AUTHOR(S): Giuseppe Amatulli & Sami Domisch -# based on "Domisch, S., Amatulli, G., Jetz, W. (2015) +# based on "Domisch, S., Amatulli, G., Jetz, W. (review) # Near-global freshwater-specific environmental variables for # biodiversity analyses in 1km resolution. Scientific Data" # @@ -200,6 +200,7 @@ filename=$(basename $file ) cd $DIRNAME tar -xf $file + cd $GISDBASE export BLKID=$(echo $filename | awk -v GIS_OPT_AREA=${GIS_OPT_AREA} '{ gsub("0000", "") ; gsub("blockfile","") ; gsub("_sub_","") ; gsub("GIS_OPT_AREA","") ; gsub(".tar.gz","") ; print }') export dir4d=${BLKID: -4:1} ; if [ -z $dir4d ] ; then dir4d=0 ; fi @@ -344,6 +345,7 @@ echo "ID|non_null_cells|null_cells|min|max|range|mean|mean_of_abs|stddev|variance|coeff_var|sum|sum_abs" > $GIS_OPT_FOLDER/blockfile/stat_${GIS_OPT_VARIABLE}.txt cat $GIS_OPT_FOLDER/*digit4/*digit3/*digit2/*digit1/stat_${GIS_OPT_VARIABLE}.txt >> $GIS_OPT_FOLDER/blockfile/stat_${GIS_OPT_VARIABLE}.txt +rm -f $GIS_OPT_FOLDER/*digit4/*digit3/*digit2/*digit1/stat_${GIS_OPT_VARIABLE}.txt echo Reclass the grid_id for the following output ${GIS_OPT_OUTPUT//","/" "} @@ -380,7 +382,7 @@ r.out.gdal -c input=${GIS_OPT_VARIABLE}_${1} nodata=-9999 output=$GIS_OPT_OUT_FOLDER/${GIS_OPT_VARIABLE}_${1}.tif type=Int32 -c createopt="COMPRESS=LZW,ZLEVEL=9" --o --q 2> /dev/null -echo "$GIS_OPT_FOLDER/blockfile/${GIS_OPT_VARIABLE}_${1}.tif has been created!" +echo "$GIS_OPT_OUT_FOLDER/blockfile/${GIS_OPT_VARIABLE}_${1}.tif has been created!" ' _ Modified: grass-addons/grass7/raster/r.stream.watersheds/r.stream.watersheds =================================================================== --- grass-addons/grass7/raster/r.stream.watersheds/r.stream.watersheds 2015-09-23 19:37:39 UTC (rev 66313) +++ grass-addons/grass7/raster/r.stream.watersheds/r.stream.watersheds 2015-09-23 20:45:20 UTC (rev 66314) @@ -5,7 +5,7 @@ # MODULE: r.stream.watersheds # # AUTHOR(S): Giuseppe Amatulli & Sami Domisch -# based on "Domisch, S., Amatulli, G., Jetz, W. (2015) +# based on "Domisch, S., Amatulli, G., Jetz, W. (in review) # Near-global freshwater-specific environmental variables for # biodiversity analyses in 1km resolution. Scientific Data" # @@ -134,7 +134,7 @@ } # shell check for user break (signal list: trap -l) -# trap "exitprocedure" 2 3 15 +trap "exitprocedure" 2 3 15 echo "" echo "#######################################################################################################" @@ -147,8 +147,8 @@ echo "" echo Exporting stream grid cell coordinates and saving in $GIS_OPT_FOLDER/stream_coord_lines.txt -rm -fr $GIS_OPT_FOLDER -mkdir $GIS_OPT_FOLDER +rm -fr $GIS_OPT_FOLDER 2> /dev/null +mkdir $GIS_OPT_FOLDER 2> /dev/null r.out.xyz --o input=$GIS_OPT_STREAM separator=space output=$GIS_OPT_FOLDER/stream_coord.txt --q @@ -186,7 +186,7 @@ mkdir $GIS_OPT_FOLDER/blockfile -echo "Split the stream grid cell coordinate file (X|Y|ID) into subsets of 10000 lines" +echo "Split the stream grid cell coordinate file with $( wc -l $GIS_OPT_FOLDER/stream_coord.txt | awk '{ print $1 }' ) grid cells into blocks of 10000 cells" awk -v PATH=$GIS_OPT_FOLDER 'NR%10000==1{x=PATH"/blockfile/blockfile"(++i*10000-10000)}{print > x}' $GIS_OPT_FOLDER/stream_coord_lines.txt @@ -226,8 +226,12 @@ Y_coord=$3 ID=$4 -echo -en "\r$(expr $NR / 100 + 1 )% done" +if [ $( expr $( expr $NR + 1 ) / 100) -eq $( expr $NR / 100 + 1 ) ] ; then +echo -en "\r$(expr $NR / 100 + 1 )% done" +fi + + # replicate the start-GISRC in a unique GISRC cp $GISRC_def $HOME/.grass7/rc$ID @@ -255,6 +259,8 @@ r.null map=sub_streamID${ID} setnull=0 --q r.out.gdal -c type=Byte --o --q nodata=255 createopt="COMPRESS=LZW,ZLEVEL=9" input=sub_streamID${ID}@sub_watershedID${ID} output=$GIS_OPT_FOLDER/${dir4d}digit4/${dir3d}digit3/${dir2d}digit2/${dir1d}digit1/sub_streamID${ID}.tif +if [ ! -f $GIS_OPT_FOLDER/${dir4d}digit4/${dir3d}digit3/${dir2d}digit2/${dir1d}digit1/sub_streamID${ID}.tif ] ; then the file $GIS_OPT_FOLDER/${dir4d}digit4/${dir3d}digit3/${dir2d}digit2/${dir1d}digit1/sub_streamID${ID}.tif dose not exist ; fi + rm -r $HOME/.grass7/rc$ID $GISDBASE/$LOCATION_NAME/sub_watershedID$ID ' _ @@ -321,10 +327,13 @@ echo "Compress the sub-watersheds and sub-streams to reduce the number of inodes filling up the hard disk" -tar -zcPf $GIS_OPT_FOLDER/${dir4d}digit4/${dir3d}digit3/${dir2d}digit2/${dir1d}digit1/${filename}_sub_watershed.tar.gz $GIS_OPT_FOLDER/${dir4d}digit4/${dir3d}digit3/${dir2d}digit2/${dir1d}digit1/sub_watershedID*.tif -tar -zcPf $GIS_OPT_FOLDER/${dir4d}digit4/${dir3d}digit3/${dir2d}digit2/${dir1d}digit1/${filename}_sub_stream.tar.gz $GIS_OPT_FOLDER/${dir4d}digit4/${dir3d}digit3/${dir2d}digit2/${dir1d}digit1/sub_streamID*.tif -echo list the compressed files by ls $GIS_OPT_FOLDER/*digit4/*digit3/*digit2/*digit1/*.tar.gz +cd $GIS_OPT_FOLDER/${dir4d}digit4/${dir3d}digit3/${dir2d}digit2/${dir1d}digit1/ + +tar -zcPf ${filename}_sub_watershed.tar.gz sub_watershedID*.tif +tar -zcPf ${filename}_sub_stream.tar.gz sub_streamID*.tif + +cd $GIS_OPT_FOLDER g.gisenv set="MAPSET=PERMANENT" g.gisenv set="LOCATION_NAME=$LOCATION_NAME" @@ -334,3 +343,6 @@ done +echo "The full sub-watershed delineation process has been done!" +echo "To list the compressed files, use ls $GIS_OPT_FOLDER/*digit4/*digit3/*digit2/*digit1/*.tar.gz" +echo "Now you can use r.stream.variables to compute stream-specific environmental variables." From svn_grass at osgeo.org Wed Sep 23 14:14:34 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Wed, 23 Sep 2015 14:14:34 -0700 Subject: [GRASS-SVN] r66315 - in grass-addons/grass7/raster: r.stream.variables r.stream.watersheds Message-ID: <20150923211434.6D1A8390135@trac.osgeo.org> Author: elselvaje Date: 2015-09-23 14:14:34 -0700 (Wed, 23 Sep 2015) New Revision: 66315 Modified: grass-addons/grass7/raster/r.stream.variables/r.stream.variables grass-addons/grass7/raster/r.stream.watersheds/r.stream.watersheds Log: change some echo command Modified: grass-addons/grass7/raster/r.stream.variables/r.stream.variables =================================================================== --- grass-addons/grass7/raster/r.stream.variables/r.stream.variables 2015-09-23 20:45:20 UTC (rev 66314) +++ grass-addons/grass7/raster/r.stream.variables/r.stream.variables 2015-09-23 21:14:34 UTC (rev 66315) @@ -5,13 +5,12 @@ # MODULE: r.stream.watersheds # # AUTHOR(S): Giuseppe Amatulli & Sami Domisch -# based on "Domisch, S., Amatulli, G., Jetz, W. (review) +# based on "Domisch, S., Amatulli, G., Jetz, W. (in review) # Near-global freshwater-specific environmental variables for # biodiversity analyses in 1km resolution. Scientific Data" # -# PURPOSE: Delineate the upstream contributing area ('sub-watershed') and -# stream sections ('sub-stream') for each grid cell of a -# stream network +# PURPOSE: Calculation of contiguous stream-specific variables that account +# for the upstream environment (based on r.stream.watersheds). # # COPYRIGHT: (C) 2001-2012 by the GRASS Development Team # @@ -22,7 +21,7 @@ ############################################################################# #%Module -#% description: Sub-watershed delineation based on the drainage direction and a gridded stream network. Based on "Domisch, S., Amatulli, G., Jetz, W. 2015 Near-global freshwater-specific environmental variables for biodiversity analyses in 1km resolution. Scientific Data" +#% description: Calculation of contiguous stream-specific variables that account for the upstream environment (based on r.stream.watersheds). #% keywords: drainage, stream, hydrology #%End @@ -180,7 +179,7 @@ echo "" echo "##########################################################################" -echo "Streams variables calculation based on the sub-watershads and sub-streams" +echo "Stream-specific variable calculation based on the sub-watersheds and sub-streams" echo "" echo "Citation: Domisch, S., Amatulli, G., Jetz, W. (in review)" echo "Near-global freshwater-specific environmental variables for" @@ -381,12 +380,12 @@ rm -f $GIS_OPT_FOLDER/blockfile/stat_${GIS_OPT_VARIABLE}_${1}.txt r.out.gdal -c input=${GIS_OPT_VARIABLE}_${1} nodata=-9999 output=$GIS_OPT_OUT_FOLDER/${GIS_OPT_VARIABLE}_${1}.tif type=Int32 -c createopt="COMPRESS=LZW,ZLEVEL=9" --o --q 2> /dev/null +if test -f "$GIS_OPT_FOLDER/blockfile/${GIS_OPT_VARIABLE}_${1}.tif"; then echo "$GIS_OPT_FOLDER/blockfile/${GIS_OPT_VARIABLE}_${1}.tif has been created!";fi +#echo "$GIS_OPT_OUT_FOLDER/blockfile/${GIS_OPT_VARIABLE}_${1}.tif has been created!" -echo "$GIS_OPT_OUT_FOLDER/blockfile/${GIS_OPT_VARIABLE}_${1}.tif has been created!" - ' _ exit echo "The full stream variable calculation has been done!" -echo "To list the stream-specific output variables, use ls $GIS_OPT_OUT_FOLDER/*.tif" +echo "To list the stream-specific output variables: ls $GIS_OPT_OUT_FOLDER/*.tif" Modified: grass-addons/grass7/raster/r.stream.watersheds/r.stream.watersheds =================================================================== --- grass-addons/grass7/raster/r.stream.watersheds/r.stream.watersheds 2015-09-23 20:45:20 UTC (rev 66314) +++ grass-addons/grass7/raster/r.stream.watersheds/r.stream.watersheds 2015-09-23 21:14:34 UTC (rev 66315) @@ -138,7 +138,7 @@ echo "" echo "#######################################################################################################" -echo "Sub-watershed and sub-streams delineation based on the drainage direction and a gridded stream network." +echo "Sub-watershed and sub-stream delineation based on the drainage direction and a gridded stream network." echo "" echo "Citation: Domisch, S., Amatulli, G., Jetz, W. (in review)" echo "Near-global freshwater-specific environmental variables for" @@ -344,5 +344,5 @@ done echo "The full sub-watershed delineation process has been done!" -echo "To list the compressed files, use ls $GIS_OPT_FOLDER/*digit4/*digit3/*digit2/*digit1/*.tar.gz" +echo "To list the compressed files: ls $GIS_OPT_FOLDER/*digit4/*digit3/*digit2/*digit1/*.tar.gz" echo "Now you can use r.stream.variables to compute stream-specific environmental variables." From svn_grass at osgeo.org Wed Sep 23 14:39:11 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Wed, 23 Sep 2015 14:39:11 -0700 Subject: [GRASS-SVN] r66316 - in grass/trunk/display: d.legend d.vect.thematic Message-ID: <20150923213911.EE05B390135@trac.osgeo.org> Author: neteler Date: 2015-09-23 14:39:11 -0700 (Wed, 23 Sep 2015) New Revision: 66316 Modified: grass/trunk/display/d.legend/main.c grass/trunk/display/d.vect.thematic/main.c Log: d.legend, d.vect.thematic: add keyword Modified: grass/trunk/display/d.legend/main.c =================================================================== --- grass/trunk/display/d.legend/main.c 2015-09-23 21:14:34 UTC (rev 66315) +++ grass/trunk/display/d.legend/main.c 2015-09-23 21:39:11 UTC (rev 66316) @@ -84,6 +84,7 @@ module = G_define_module(); G_add_keyword(_("display")); G_add_keyword(_("cartography")); + G_add_keyword(_("legend")); module->description = _("Displays a legend for a 2D or 3D raster map in the active frame " "of the graphics monitor."); Modified: grass/trunk/display/d.vect.thematic/main.c =================================================================== --- grass/trunk/display/d.vect.thematic/main.c 2015-09-23 21:14:34 UTC (rev 66315) +++ grass/trunk/display/d.vect.thematic/main.c 2015-09-23 21:39:11 UTC (rev 66316) @@ -78,6 +78,7 @@ G_add_keyword(_("display")); G_add_keyword(_("cartography")); G_add_keyword(_("choropleth map")); + G_add_keyword(_("legend")); module->description = _("Displays a thematic vector map " "in the active graphics frame."); From svn_grass at osgeo.org Wed Sep 23 14:41:08 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Wed, 23 Sep 2015 14:41:08 -0700 Subject: [GRASS-SVN] r66317 - in grass/branches/releasebranch_7_0/display: d.legend d.vect.thematic Message-ID: <20150923214108.9EFA93900A3@trac.osgeo.org> Author: neteler Date: 2015-09-23 14:41:08 -0700 (Wed, 23 Sep 2015) New Revision: 66317 Modified: grass/branches/releasebranch_7_0/display/d.legend/main.c grass/branches/releasebranch_7_0/display/d.vect.thematic/main.c Log: d.legend, d.vect.thematic: add keyword Modified: grass/branches/releasebranch_7_0/display/d.legend/main.c =================================================================== --- grass/branches/releasebranch_7_0/display/d.legend/main.c 2015-09-23 21:39:11 UTC (rev 66316) +++ grass/branches/releasebranch_7_0/display/d.legend/main.c 2015-09-23 21:41:08 UTC (rev 66317) @@ -84,6 +84,7 @@ module = G_define_module(); G_add_keyword(_("display")); G_add_keyword(_("cartography")); + G_add_keyword(_("legend")); module->description = _("Displays a legend for a 2D or 3D raster map in the active frame " "of the graphics monitor."); Modified: grass/branches/releasebranch_7_0/display/d.vect.thematic/main.c =================================================================== --- grass/branches/releasebranch_7_0/display/d.vect.thematic/main.c 2015-09-23 21:39:11 UTC (rev 66316) +++ grass/branches/releasebranch_7_0/display/d.vect.thematic/main.c 2015-09-23 21:41:08 UTC (rev 66317) @@ -78,6 +78,7 @@ G_add_keyword(_("display")); G_add_keyword(_("cartography")); G_add_keyword(_("choropleth map")); + G_add_keyword(_("legend")); module->description = _("Displays a thematic vector map " "in the active graphics frame."); From svn_grass at osgeo.org Wed Sep 23 22:04:22 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Wed, 23 Sep 2015 22:04:22 -0700 Subject: [GRASS-SVN] r66318 - grass/trunk/gui/wxpython/location_wizard Message-ID: <20150924050422.2372D3900A3@trac.osgeo.org> Author: ychemin Date: 2015-09-23 22:04:21 -0700 (Wed, 23 Sep 2015) New Revision: 66318 Modified: grass/trunk/gui/wxpython/location_wizard/wizard.py Log: fixed bug for planetary ellipsoid access Modified: grass/trunk/gui/wxpython/location_wizard/wizard.py =================================================================== --- grass/trunk/gui/wxpython/location_wizard/wizard.py 2015-09-23 21:41:08 UTC (rev 66317) +++ grass/trunk/gui/wxpython/location_wizard/wizard.py 2015-09-24 05:04:21 UTC (rev 66318) @@ -1149,7 +1149,7 @@ self.scope = 'earth' for key in self.parent.ellipsoids.keys(): data.append([key, self.parent.ellipsoids[key][0]]) - elif event.GetId() == self.radioEpsgx.GetId(): + elif event.GetId() == self.radioEpsg.GetId(): self.scope = 'planetary' for key in self.parent.planetary_ellipsoids.keys(): data.append([key, self.parent.planetary_ellipsoids[key][0]]) From svn_grass at osgeo.org Thu Sep 24 00:22:57 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Thu, 24 Sep 2015 00:22:57 -0700 Subject: [GRASS-SVN] r66319 - in grass/trunk/temporal/t.rast.series: . testsuite Message-ID: <20150924072257.470D33900A3@trac.osgeo.org> Author: huhabla Date: 2015-09-24 00:22:57 -0700 (Thu, 24 Sep 2015) New Revision: 66319 Added: grass/trunk/temporal/t.rast.series/testsuite/ grass/trunk/temporal/t.rast.series/testsuite/test_series.py Modified: grass/trunk/temporal/t.rast.series/t.rast.series.py Log: temporal modules: Fixed usage of the "z" flag and added tests Modified: grass/trunk/temporal/t.rast.series/t.rast.series.py =================================================================== --- grass/trunk/temporal/t.rast.series/t.rast.series.py 2015-09-24 05:04:21 UTC (rev 66318) +++ grass/trunk/temporal/t.rast.series/t.rast.series.py 2015-09-24 07:22:57 UTC (rev 66319) @@ -98,7 +98,9 @@ file.close() - flag = "z" + flag = "" + if len(rows) > 1000: + flag += "z" if nulls: flag += "n" Added: grass/trunk/temporal/t.rast.series/testsuite/test_series.py =================================================================== --- grass/trunk/temporal/t.rast.series/testsuite/test_series.py (rev 0) +++ grass/trunk/temporal/t.rast.series/testsuite/test_series.py 2015-09-24 07:22:57 UTC (rev 66319) @@ -0,0 +1,154 @@ +"""Test t.rast.series + +(C) 2015 by the GRASS Development Team +This program is free software under the GNU General Public +License (>=v2). Read the file COPYING that comes with GRASS +for details. + +:authors: Soeren Gebbert +""" +import os +import grass.pygrass.modules as pymod +import grass.temporal as tgis +from grass.gunittest.case import TestCase +from grass.gunittest.gmodules import SimpleModule + + +class TestSnapAbsoluteSTRDS(TestCase): + + @classmethod + def setUpClass(cls): + """Initiate the temporal GIS and set the region + """ + os.putenv("GRASS_OVERWRITE", "1") + tgis.init() + cls.use_temp_region() + cls.runModule("g.region", s=0, n=80, w=0, e=120, b=0, + t=50, res=10, res3=10) + cls.runModule("r.mapcalc", expression="a1 = 100", overwrite=True) + cls.runModule("r.mapcalc", expression="a2 = 200", overwrite=True) + cls.runModule("r.mapcalc", expression="a3 = 300", overwrite=True) + cls.runModule("r.mapcalc", expression="a4 = 400", overwrite=True) + + cls.runModule("t.create", type="strds", temporaltype="absolute", + output="A", title="A test", + description="A test", overwrite=True) + + cls.runModule("t.register", type="raster", input="A", + maps="a1,a2,a3,a4", + start="2001-01-01", + increment="1 month", + overwrite=True) + @classmethod + def tearDownClass(cls): + """Remove the temporary region + """ + cls.del_temp_region() + cls.runModule("t.remove", flags="rf", type="strds", inputs="A") + cls.runModule("g.remove", flags="f", type="raster", name="series_average") + cls.runModule("g.remove", flags="f", type="raster", name="series_maximum") + cls.runModule("g.remove", flags="f", type="raster", name="series_minimum") + cls.runModule("g.remove", flags="f", type="raster", name="series_minimum_2") + + def test_average(self): + self.assertModule("t.rast.series", input="A", method="average", + output="series_average") + + self.assertRasterMinMax(map="series_average", refmin=250, refmax=250, + msg="Average must be 250") + + def test_maximum(self): + self.assertModule("t.rast.series", input="A", method="maximum", + output="series_maximum") + + self.assertRasterMinMax(map="series_maximum", refmin=400, refmax=400, + msg="Maximum must be 400") + + def test_minimum(self): + self.assertModule("t.rast.series", input="A", method="minimum", + output="series_minimum") + + self.assertRasterMinMax(map="series_minimum", refmin=100, refmax=100, + msg="Minimum must be 100") + + def test_minimum_where(self): + self.assertModule("t.rast.series", input="A", method="minimum", + output="series_minimum_2", + where="start_time >= '2001-03-01'") + + self.assertRasterMinMax(map="series_minimum_2", refmin=300, refmax=300, + msg="Minimum must be 300") + + + +class TestSnapRelativeSTRDS(TestCase): + + @classmethod + def setUpClass(cls): + """Initiate the temporal GIS and set the region + """ + os.putenv("GRASS_OVERWRITE", "1") + tgis.init() + cls.use_temp_region() + cls.runModule("g.region", s=0, n=80, w=0, e=120, b=0, + t=50, res=10, res3=10) + cls.runModule("r.mapcalc", expression="a1 = 100", overwrite=True) + cls.runModule("r.mapcalc", expression="a2 = 200", overwrite=True) + cls.runModule("r.mapcalc", expression="a3 = 300", overwrite=True) + cls.runModule("r.mapcalc", expression="a4 = 400", overwrite=True) + + cls.runModule("t.create", type="strds", temporaltype="relative", + output="A", title="A test", + description="A test", overwrite=True) + + cls.runModule("t.register", type="raster", input="A", + maps="a1,a2,a3,a4", + start="0", + increment="14", unit="days", + overwrite=True) + @classmethod + def tearDownClass(cls): + """Remove the temporary region + """ + cls.del_temp_region() + cls.runModule("t.remove", flags="rf", type="strds", inputs="A") + cls.runModule("g.remove", flags="f", type="raster", name="series_average") + cls.runModule("g.remove", flags="f", type="raster", name="series_maximum") + cls.runModule("g.remove", flags="f", type="raster", name="series_minimum") + cls.runModule("g.remove", flags="f", type="raster", name="series_minimum_2") + + def test_average(self): + self.assertModule("t.rast.series", input="A", method="average", + output="series_average") + + self.assertRasterMinMax(map="series_average", refmin=250, refmax=250, + msg="Average must be 250") + + def test_maximum(self): + self.assertModule("t.rast.series", input="A", method="maximum", + output="series_maximum") + + self.assertRasterMinMax(map="series_maximum", refmin=400, refmax=400, + msg="Maximum must be 400") + + def test_minimum(self): + self.assertModule("t.rast.series", input="A", method="minimum", + output="series_minimum") + + self.assertRasterMinMax(map="series_minimum", refmin=100, refmax=100, + msg="Minimum must be 100") + + def test_minimum_where(self): + self.assertModule("t.rast.series", input="A", method="minimum", + output="series_minimum_2", + where="start_time >= 28") + + self.assertRasterMinMax(map="series_minimum_2", refmin=300, refmax=300, + msg="Minimum must be 300") + + + +if __name__ == '__main__': + from grass.gunittest.main import test + test() + From svn_grass at osgeo.org Thu Sep 24 05:36:35 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Thu, 24 Sep 2015 05:36:35 -0700 Subject: [GRASS-SVN] r66320 - grass/trunk/gui/wxpython/animation Message-ID: <20150924123635.3C5913900A3@trac.osgeo.org> Author: annakrat Date: 2015-09-24 05:36:35 -0700 (Thu, 24 Sep 2015) New Revision: 66320 Modified: grass/trunk/gui/wxpython/animation/mapwindow.py Log: wxGUI/animation: attempt to fix initialization on wxgtk3 Modified: grass/trunk/gui/wxpython/animation/mapwindow.py =================================================================== --- grass/trunk/gui/wxpython/animation/mapwindow.py 2015-09-24 07:22:57 UTC (rev 66319) +++ grass/trunk/gui/wxpython/animation/mapwindow.py 2015-09-24 12:36:35 UTC (rev 66320) @@ -122,7 +122,8 @@ Debug.msg(5, "AnimationWindow.Draw()") dc.Clear() # make sure you clear the bitmap! - dc.DrawBitmap(self.bitmap, x=self.x, y=self.y) + if self.bitmap.IsOk(): + dc.DrawBitmap(self.bitmap, x=self.x, y=self.y) def OnSize(self, event): Debug.msg(5, "AnimationWindow.OnSize()") From svn_grass at osgeo.org Thu Sep 24 06:33:32 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Thu, 24 Sep 2015 06:33:32 -0700 Subject: [GRASS-SVN] r66321 - grass-addons/grass7/raster/r.green/libgreen Message-ID: <20150924133332.E950239012E@trac.osgeo.org> Author: Giulia Date: 2015-09-24 06:33:32 -0700 (Thu, 24 Sep 2015) New Revision: 66321 Modified: grass-addons/grass7/raster/r.green/libgreen/utils.py Log: r.green: cleanup function Modified: grass-addons/grass7/raster/r.green/libgreen/utils.py =================================================================== --- grass-addons/grass7/raster/r.green/libgreen/utils.py 2015-09-24 12:36:35 UTC (rev 66320) +++ grass-addons/grass7/raster/r.green/libgreen/utils.py 2015-09-24 13:33:32 UTC (rev 66321) @@ -29,6 +29,9 @@ if pattern: gcore.run_command("g.remove", flags="f", type='raster,vector', pattern=pattern) + # twice for base maps + gcore.run_command("g.remove", flags="f", type='raster,vector', + pattern=pattern) def check_overlay_rv(raster, vector): From svn_grass at osgeo.org Thu Sep 24 06:34:08 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Thu, 24 Sep 2015 06:34:08 -0700 Subject: [GRASS-SVN] r66322 - in grass-addons/grass7/raster/r.green/r.green.hydro: libhydro r.green.hydro.theoretical Message-ID: <20150924133408.5EFEF39012E@trac.osgeo.org> Author: Giulia Date: 2015-09-24 06:34:08 -0700 (Thu, 24 Sep 2015) New Revision: 66322 Modified: grass-addons/grass7/raster/r.green/r.green.hydro/libhydro/basin.py grass-addons/grass7/raster/r.green/r.green.hydro/r.green.hydro.theoretical/r.green.hydro.theoretical.py Log: r.green: uniform input with other modules Modified: grass-addons/grass7/raster/r.green/r.green.hydro/libhydro/basin.py =================================================================== --- grass-addons/grass7/raster/r.green/r.green.hydro/libhydro/basin.py 2015-09-24 13:33:32 UTC (rev 66321) +++ grass-addons/grass7/raster/r.green/r.green.hydro/libhydro/basin.py 2015-09-24 13:34:08 UTC (rev 66322) @@ -329,7 +329,7 @@ gcore.run_command("r.to.vect", input=tmp_thin, flags='v', output=tmp_clean, type="line") - gcore.run_command("v.edit", map='vec_clean', tool='delete', cats='0') + gcore.run_command("v.edit", map=tmp_clean, tool='delete', cats='0') #pdb.set_trace() gcore.run_command('v.build', map=tmp_clean) dissolve_lines(tmp_clean, E) @@ -480,8 +480,9 @@ """ msgr = get_msgr() if (not(basins) or not(stream)): - basins = 'basins' - stream = 'stream' + pid = os.getpid() + basins = "tmprgreen_%i_basins" % pid + stream = "tmprgreen_%i_stream" % pid gcore.run_command('r.watershed', elevation=dtm, threshold=threshold, @@ -563,23 +564,10 @@ return temp -def fill_energyown(bas, h_mean, discharge_n, stream_n): +def fill_energyown(bas, h_mean): """ Fill basins dictionary with discharge, h_mean and compute the power """ - msgr = get_msgr() - warn = ("%i") % bas.ID - ttt = discharge_n[stream_n == bas.ID] - #import ipdb; ipdb.set_trace() - bas.discharge_own = ttt.sort() - #FIXME: take the second bgger value to avoid to take the value of - # another catchment, it is not so elegant - if len(ttt) > 1 and not(math.isnan(ttt[-2])): - bas.discharge_own = float(ttt[-2]) - else: - bas.discharge_own = 0.0 - warn = ("No value for the river ID %i, discharge set to 0") % bas.ID - msgr.warning(warn) bas.h_mean = h_mean # basins_tot[count].h_closure = float(info_c[count]) @@ -589,18 +577,39 @@ #pdb.set_trace() -def fill_discharge_tot(basins_tot, b): +def fill_discharge_tot(bas, discharge_n, stream_n): """ Fill the total discharge for the basin b by knowing the relation among basins thank to the ID_all attribute in the object Basin """ - basins_tot[b].discharge_tot = basins_tot[b].discharge_own + msgr = get_msgr() + warn = ("%i") % bas.ID + ttt = discharge_n[stream_n == bas.ID] + #import ipdb; ipdb.set_trace() + bas.discharge_tot = 0.0 + ttt.sort() + #FIXME: take the second bgger value to avoid to take the value of + # another catchment, it is not so elegant + # the low value is the upper part of the basin and the greater + # the closure point + if len(ttt) > 1 and not(math.isnan(ttt[-2])): + bas.discharge_tot = float(ttt[-2]) + else: + bas.discharge_tot = 0.0 + warn = ("No value for the river ID %i, discharge set to 0") % bas.ID + msgr.warning(warn) + + +def fill_discharge_own(basins_tot, b): + """ + Fill the discharge_own with the run-off of the basin + """ + basins_tot[b].discharge_own = basins_tot[b].discharge_tot #import pdb; pdb.set_trace() - if basins_tot[b].up: - basins_tot[b].check_ID_up(basins_tot) - temp = discharge_sum(basins_tot, basins_tot[b].ID_all) - basins_tot[b].discharge_tot = basins_tot[b].discharge_own + temp + for idd in basins_tot[b].up: + basins_tot[b].discharge_own = (basins_tot[b].discharge_own - + basins_tot[idd].discharge_tot) def fill_Eup(basins_tot, b): @@ -644,9 +653,11 @@ area = area_of_basins(basins, count, dtm) basins_tot[count].area = float(area) h_mean = float(info_h[str(count)]) - fill_energyown(basins_tot[count], h_mean, discharge, stream) + fill_discharge_tot(basins_tot[count], discharge, stream) + for b in inputs: - fill_discharge_tot(basins_tot, b) + fill_discharge_own(basins_tot, b) + fill_energyown(basins_tot[b], h_mean) for b in inputs: fill_Eup(basins_tot, b) Modified: grass-addons/grass7/raster/r.green/r.green.hydro/r.green.hydro.theoretical/r.green.hydro.theoretical.py =================================================================== --- grass-addons/grass7/raster/r.green/r.green.hydro/r.green.hydro.theoretical/r.green.hydro.theoretical.py 2015-09-24 13:33:32 UTC (rev 66321) +++ grass-addons/grass7/raster/r.green/r.green.hydro/r.green.hydro.theoretical/r.green.hydro.theoretical.py 2015-09-24 13:34:08 UTC (rev 66322) @@ -123,7 +123,7 @@ ############################################################# pid = os.getpid() DEBUG = False - atexit.register(cleanup, pattern=("tmprgreen_%i" % pid), debug=DEBUG) + atexit.register(cleanup, pattern=("tmprgreen_%i*" % pid), debug=DEBUG) #TOD_add the possibilities to have q_points # required discharge = options['discharge'] @@ -212,7 +212,6 @@ #################################################################### # if not rivers or debug I write the result in the new vector stream msgr.message("\nWrite results\n") - import ipdb; ipdb.set_trace() basin.write_results2newvec(stream, E, basins_tot, inputs) From svn_grass at osgeo.org Thu Sep 24 06:48:19 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Thu, 24 Sep 2015 06:48:19 -0700 Subject: [GRASS-SVN] r66323 - grass/trunk/man Message-ID: <20150924134819.8F498390135@trac.osgeo.org> Author: martinl Date: 2015-09-24 06:48:19 -0700 (Thu, 24 Sep 2015) New Revision: 66323 Modified: grass/trunk/man/parser_standard_options.py Log: attempt to fix travis parser_standard_options.py issue (thanks to Ivan Mincik) Modified: grass/trunk/man/parser_standard_options.py =================================================================== --- grass/trunk/man/parser_standard_options.py 2015-09-24 13:34:08 UTC (rev 66322) +++ grass/trunk/man/parser_standard_options.py 2015-09-24 13:48:19 UTC (rev 66323) @@ -143,7 +143,7 @@ help='Define the output format') parser.add_argument('-l', '--link', default=URL, dest='url', type=str, help='Provide the url with the file to parse') - parser.add_argument('-t', '--text', default='', dest='text', + parser.add_argument('-t', '--text', dest='text', type=argparse.FileType('r'), help='Provide the file to parse') parser.add_argument('-o', '--output', default=sys.stdout, dest='output', From svn_grass at osgeo.org Thu Sep 24 12:31:33 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Thu, 24 Sep 2015 12:31:33 -0700 Subject: [GRASS-SVN] r66324 - in grass-addons/grass7/raster: r.stream.variables r.stream.watersheds Message-ID: <20150924193133.426C539012E@trac.osgeo.org> Author: elselvaje Date: 2015-09-24 12:31:33 -0700 (Thu, 24 Sep 2015) New Revision: 66324 Modified: grass-addons/grass7/raster/r.stream.variables/r.stream.variables grass-addons/grass7/raster/r.stream.watersheds/r.stream.watersheds Log: change attribute nave from vectID to rasterID Modified: grass-addons/grass7/raster/r.stream.variables/r.stream.variables =================================================================== --- grass-addons/grass7/raster/r.stream.variables/r.stream.variables 2015-09-24 13:48:19 UTC (rev 66323) +++ grass-addons/grass7/raster/r.stream.variables/r.stream.variables 2015-09-24 19:31:33 UTC (rev 66324) @@ -377,7 +377,7 @@ echo Create stream-specific variable: $GIS_OPT_VARIABLE $1 r.reclass input=grid_ID output=${GIS_OPT_VARIABLE}_$1 rules=$GIS_OPT_FOLDER/blockfile/stat_${GIS_OPT_VARIABLE}_${1}.txt --overwrite --q -rm -f $GIS_OPT_FOLDER/blockfile/stat_${GIS_OPT_VARIABLE}_${1}.txt +# rm -f $GIS_OPT_FOLDER/blockfile/stat_${GIS_OPT_VARIABLE}_${1}.txt r.out.gdal -c input=${GIS_OPT_VARIABLE}_${1} nodata=-9999 output=$GIS_OPT_OUT_FOLDER/${GIS_OPT_VARIABLE}_${1}.tif type=Int32 -c createopt="COMPRESS=LZW,ZLEVEL=9" --o --q 2> /dev/null if test -f "$GIS_OPT_FOLDER/blockfile/${GIS_OPT_VARIABLE}_${1}.tif"; then echo "$GIS_OPT_FOLDER/blockfile/${GIS_OPT_VARIABLE}_${1}.tif has been created!";fi Modified: grass-addons/grass7/raster/r.stream.watersheds/r.stream.watersheds =================================================================== --- grass-addons/grass7/raster/r.stream.watersheds/r.stream.watersheds 2015-09-24 13:48:19 UTC (rev 66323) +++ grass-addons/grass7/raster/r.stream.watersheds/r.stream.watersheds 2015-09-24 19:31:33 UTC (rev 66324) @@ -160,7 +160,7 @@ echo Rasterize the stream network point coordinates -v.to.rast --overwrite input=vector_ID output=grid_ID layer=vector_ID use=attr attrcolumn=int_1 type=point --q +v.to.rast --overwrite input=vector_ID output=grid_ID layer=vector_ID use=attr attrcolumn=cat type=point --q echo Create the folder structure in $GIS_OPT_FOLDER/ to save results From svn_grass at osgeo.org Fri Sep 25 02:19:06 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Fri, 25 Sep 2015 02:19:06 -0700 Subject: [GRASS-SVN] r66325 - in grass/trunk: lib/python/temporal temporal/t.rast.aggregate temporal/t.rast.aggregate/testsuite Message-ID: <20150925091906.F316C39012E@trac.osgeo.org> Author: huhabla Date: 2015-09-25 02:19:06 -0700 (Fri, 25 Sep 2015) New Revision: 66325 Modified: grass/trunk/lib/python/temporal/aggregation.py grass/trunk/temporal/t.rast.aggregate/t.rast.aggregate.py grass/trunk/temporal/t.rast.aggregate/testsuite/test_aggregation_absolute.py grass/trunk/temporal/t.rast.aggregate/testsuite/test_aggregation_absolute_parallel.py grass/trunk/temporal/t.rast.aggregate/testsuite/test_aggregation_relative.py Log: temporal framework: Fixed bug in t.rast.aggregate that does not wait for processes in the process queue. Now a warning is printed if the file limit is exceeded and the z flag is used in r.series. A new option was added to t.rast.aggregate to set the file limit. Modified: grass/trunk/lib/python/temporal/aggregation.py =================================================================== --- grass/trunk/lib/python/temporal/aggregation.py 2015-09-24 19:31:33 UTC (rev 66324) +++ grass/trunk/lib/python/temporal/aggregation.py 2015-09-25 09:19:06 UTC (rev 66325) @@ -182,7 +182,8 @@ def aggregate_by_topology(granularity_list, granularity, map_list, topo_list, basename, time_suffix, offset=0, method="average", - nprocs=1, spatial=None, dbif=None, overwrite=False): + nprocs=1, spatial=None, dbif=None, overwrite=False, + file_limit=1000): """Aggregate a list of raster input maps with r.series :param granularity_list: A list of AbstractMapDataset objects. @@ -207,6 +208,8 @@ east, south, north, bottom, top :param dbif: The database interface to be used :param overwrite: Overwrite existing raster maps + :param file_limit: The maximum number of raster map layers that + should be opened at once by r.series :return: A list of RasterDataset objects that contain the new map names and the temporal extent for map registration """ @@ -303,7 +306,12 @@ mod = copy.deepcopy(r_series) mod(file=filename, output=output_name) - if len(aggregation_list) > 1000: + if len(aggregation_list) > int(file_limit): + msgr.warning(_("The limit of open fiels (%i) was "\ + "reached (%i). The module r.series will "\ + "be run with flag z, to avoid open "\ + "files limit exceeding."%(int(file_limit), + len(aggregation_list)))) mod(flags="z") process_queue.put(mod) else: @@ -311,6 +319,8 @@ mod(raster=[aggregation_list[0], output_name]) process_queue.put(mod) + process_queue.wait() + if connected: dbif.close() Modified: grass/trunk/temporal/t.rast.aggregate/t.rast.aggregate.py =================================================================== --- grass/trunk/temporal/t.rast.aggregate/t.rast.aggregate.py 2015-09-24 19:31:33 UTC (rev 66324) +++ grass/trunk/temporal/t.rast.aggregate/t.rast.aggregate.py 2015-09-25 09:19:06 UTC (rev 66325) @@ -73,6 +73,15 @@ #% answer: 1 #%end +#%option +#% key: file_limit +#% type: integer +#% description: The maximum number of open files allowed for each r.series process +#% required: no +#% multiple: no +#% answer: 1000 +#%end + #%option G_OPT_T_SAMPLE #% options: equal,overlaps,overlapped,starts,started,finishes,finished,during,contains #% answer: contains @@ -109,12 +118,13 @@ sampling = options["sampling"] offset = options["offset"] nprocs = options["nprocs"] + file_limit = options["file_limit"] time_suffix = flags["s"] - + topo_list = sampling.split(",") tgis.init() - + dbif = tgis.SQLDatabaseInterfaceConnection() dbif.connect() @@ -128,7 +138,7 @@ # We will create the strds later, but need to check here tgis.check_new_stds(output, "strds", dbif, gcore.overwrite()) - + start_time = map_list[0].temporal_extent.get_start_time() if sp.is_time_absolute(): @@ -163,26 +173,26 @@ end = start_time + int(gran) granule.set_relative_time(start, end, sp.get_relative_time_unit()) start_time = end - + granularity_list.append(granule) - output_list = tgis.aggregate_by_topology(granularity_list=granularity_list, granularity=gran, - map_list=map_list, + output_list = tgis.aggregate_by_topology(granularity_list=granularity_list, granularity=gran, + map_list=map_list, topo_list=topo_list, basename=base, time_suffix=time_suffix, - offset=offset, method=method, nprocs=nprocs, spatial=None, - overwrite=gcore.overwrite()) + offset=offset, method=method, nprocs=nprocs, spatial=None, + overwrite=gcore.overwrite(), file_limit=file_limit) if output_list: temporal_type, semantic_type, title, description = sp.get_initial_values() output_strds = tgis.open_new_stds(output, "strds", temporal_type, title, description, semantic_type, dbif, gcore.overwrite()) - if register_null: - register_null=False - else: + if register_null: + register_null=False + else: register_null=True - - tgis.register_map_object_list("rast", output_list, output_strds, register_null, + + tgis.register_map_object_list("rast", output_list, output_strds, register_null, sp.get_relative_time_unit(), dbif) # Update the raster metadata table entries with aggregation type Modified: grass/trunk/temporal/t.rast.aggregate/testsuite/test_aggregation_absolute.py =================================================================== --- grass/trunk/temporal/t.rast.aggregate/testsuite/test_aggregation_absolute.py 2015-09-24 19:31:33 UTC (rev 66324) +++ grass/trunk/temporal/t.rast.aggregate/testsuite/test_aggregation_absolute.py 2015-09-25 09:19:06 UTC (rev 66325) @@ -22,42 +22,42 @@ os.putenv("GRASS_OVERWRITE", "1") tgis.init() cls.use_temp_region() - cls.runModule("g.region", s=0, n=80, w=0, e=120, b=0, + cls.runModule("g.region", s=0, n=80, w=0, e=120, b=0, t=50, res=10, res3=10) - cls.runModule("r.mapcalc", expression="a1 = 100", overwrite=True) - cls.runModule("r.mapcalc", expression="a2 = 200", overwrite=True) - cls.runModule("r.mapcalc", expression="a3 = 300", overwrite=True) - cls.runModule("r.mapcalc", expression="a4 = 400", overwrite=True) - cls.runModule("r.mapcalc", expression="a5 = 500", overwrite=True) - cls.runModule("r.mapcalc", expression="a6 = 600", overwrite=True) + cls.runModule("r.mapcalc", expression="a1 = 100.0", overwrite=True) + cls.runModule("r.mapcalc", expression="a2 = 200.0", overwrite=True) + cls.runModule("r.mapcalc", expression="a3 = 300.0", overwrite=True) + cls.runModule("r.mapcalc", expression="a4 = 400.0", overwrite=True) + cls.runModule("r.mapcalc", expression="a5 = 500.0", overwrite=True) + cls.runModule("r.mapcalc", expression="a6 = 600.0", overwrite=True) cls.runModule("r.mapcalc", expression="a7 = null()", overwrite=True) - cls.runModule("t.create", type="strds", temporaltype="absolute", - output="A", title="A test", + cls.runModule("t.create", type="strds", temporaltype="absolute", + output="A", title="A test", description="A test", overwrite=True) - cls.runModule("t.register", flags="i", type="raster", input="A", + cls.runModule("t.register", flags="i", type="raster", input="A", maps="a1,a2,a3,a4,a5,a6,a7", - start="2001-01-15 12:05:45", - increment="14 days", + start="2001-01-15 12:05:45", + increment="14 days", overwrite=True) @classmethod def tearDownClass(cls): """Remove the temporary region """ - cls.del_temp_region() + cls.del_temp_region() cls.runModule("t.remove", flags="rf", type="strds", inputs="A") def tearDown(self): - """Remove generated data""" + """Remove generated data""" self.runModule("t.remove", flags="rf", type="strds", inputs="B") - + def test_disaggregation(self): """Disaggregation with empty maps""" self.assertModule("t.rast.aggregate", input="A", output="B", - basename="b", granularity="2 days", + basename="b", granularity="2 days", method="average", - sampling=["overlaps","overlapped","during"], + sampling=["overlaps","overlapped","during"], nprocs=2, flags="n") tinfo_string="""start_time=2001-01-15 00:00:00 @@ -74,15 +74,15 @@ info = SimpleModule("t.info", flags="g", input="B") #info.run() #print info.outputs.stdout - self.assertModuleKeyValue(module=info, reference=tinfo_string, + self.assertModuleKeyValue(module=info, reference=tinfo_string, precision=2, sep="=") def test_aggregation_1month(self): """Aggregation one month""" self.assertModule("t.rast.aggregate", input="A", output="B", basename="b", granularity="1 months", - method="maximum", sampling=["contains"], - nprocs=3, flags="s") + method="maximum", sampling=["contains"], + file_limit=0, nprocs=3, flags="s") tinfo_string="""start_time=2001-01-01 00:00:00 end_time=2001-04-01 00:00:00 @@ -98,23 +98,23 @@ info = SimpleModule("t.info", flags="g", input="B") #info.run() #print info.outputs.stdout - self.assertModuleKeyValue(module=info, reference=tinfo_string, + self.assertModuleKeyValue(module=info, reference=tinfo_string, precision=2, sep="=") # Check the map names are correct - lister = SimpleModule("t.rast.list", input="B", columns="name", + lister = SimpleModule("t.rast.list", input="B", columns="name", flags="s") self.runModule(lister) #print lister.outputs.stdout maps="b_2001_01" + os.linesep + "b_2001_02" + os.linesep + \ "b_2001_03" + os.linesep self.assertEqual(maps, lister.outputs.stdout) - + def test_aggregation_2months(self): """Aggregation two month""" self.assertModule("t.rast.aggregate", input="A", output="B", basename="b", granularity="2 months", - method="minimum", sampling=["contains"], + method="minimum", sampling=["contains"], nprocs=4, offset=10) tinfo_string="""start_time=2001-01-01 00:00:00 @@ -131,23 +131,23 @@ info = SimpleModule("t.info", flags="g", input="B") #info.run() #print info.outputs.stdout - self.assertModuleKeyValue(module=info, reference=tinfo_string, + self.assertModuleKeyValue(module=info, reference=tinfo_string, precision=2, sep="=") # Check the map names are correct - lister = SimpleModule("t.rast.list", input="B", columns="name", + lister = SimpleModule("t.rast.list", input="B", columns="name", flags="s") self.runModule(lister) #print lister.outputs.stdout - maps="b_11" + os.linesep + "b_12" + os.linesep + maps="b_11" + os.linesep + "b_12" + os.linesep self.assertEqual(maps, lister.outputs.stdout) def test_aggregation_3months(self): """Aggregation three month""" self.assertModule("t.rast.aggregate", input="A", output="B", basename="b", granularity="3 months", - method="sum", sampling=["contains"], - nprocs=9, offset=100) + method="sum", sampling=["contains"], + file_limit=0, nprocs=9, offset=100) tinfo_string="""start_time=2001-01-01 00:00:00 end_time=2001-04-01 00:00:00 @@ -163,15 +163,15 @@ info = SimpleModule("t.info", flags="g", input="B") #info.run() #print info.outputs.stdout - self.assertModuleKeyValue(module=info, reference=tinfo_string, + self.assertModuleKeyValue(module=info, reference=tinfo_string, precision=2, sep="=") # Check the map names are correct - lister = SimpleModule("t.rast.list", input="B", columns="name", + lister = SimpleModule("t.rast.list", input="B", columns="name", flags="s") self.runModule(lister) #print lister.outputs.stdout - maps="b_101" + os.linesep + maps="b_101" + os.linesep self.assertEqual(maps, lister.outputs.stdout) if __name__ == '__main__': Modified: grass/trunk/temporal/t.rast.aggregate/testsuite/test_aggregation_absolute_parallel.py =================================================================== --- grass/trunk/temporal/t.rast.aggregate/testsuite/test_aggregation_absolute_parallel.py 2015-09-24 19:31:33 UTC (rev 66324) +++ grass/trunk/temporal/t.rast.aggregate/testsuite/test_aggregation_absolute_parallel.py 2015-09-25 09:19:06 UTC (rev 66325) @@ -23,41 +23,41 @@ os.putenv("GRASS_OVERWRITE", "1") tgis.init() cls.use_temp_region() - cls.runModule("g.region", s=0, n=80, w=0, e=120, b=0, + cls.runModule("g.region", s=0, n=80, w=0, e=120, b=0, t=50, res=10, res3=10) - + name_list = [] for i in range(540): cls.runModule("r.mapcalc", expression="a%i = %i"%(i + 1, i + 1), overwrite=True) name_list.append("a%i"%(i + 1)) - cls.runModule("t.create", type="strds", temporaltype="absolute", - output="A", title="A test", + cls.runModule("t.create", type="strds", temporaltype="absolute", + output="A", title="A test", description="A test", overwrite=True) - cls.runModule("t.register", flags="i", type="raster", input="A", + cls.runModule("t.register", flags="i", type="raster", input="A", maps=name_list, - start="2001-01-01", - increment="4 hours", + start="2001-01-01", + increment="4 hours", overwrite=True) @classmethod def tearDownClass(cls): """Remove the temporary region """ - cls.del_temp_region() + cls.del_temp_region() cls.runModule("t.remove", flags="rf", type="strds", inputs="A") def tearDown(self): - """Remove generated data""" + """Remove generated data""" self.runModule("t.remove", flags="rf", type="strds", inputs="B") def test_aggregation_12hours(self): """Aggregation one month""" self.assertModule("t.rast.aggregate", input="A", output="B", basename="b", granularity="12 hours", - method="sum", sampling=["contains"], - nprocs=9, flags="s") + method="sum", sampling=["contains"], + nprocs=9, flags="s", file_limit=2) tinfo_string="""start_time=2001-01-01 00:00:00 end_time=2001-04-01 00:00:00 @@ -73,7 +73,7 @@ info = SimpleModule("t.info", flags="g", input="B") #info.run() #print info.outputs.stdout - self.assertModuleKeyValue(module=info, reference=tinfo_string, + self.assertModuleKeyValue(module=info, reference=tinfo_string, precision=2, sep="=") def test_aggregation_1day_4procs(self): @@ -81,10 +81,10 @@ start = datetime.now() self.assertModule("t.rast.aggregate", input="A", output="B", basename="b", granularity="1 day", - method="sum", sampling=["contains"], + method="sum", sampling=["contains"], nprocs=4, flags="s") end = datetime.now() - + delta = end - start print "test_aggregation_1day_4procs:", delta.total_seconds() @@ -98,7 +98,7 @@ info = SimpleModule("t.info", flags="g", input="B") #info.run() #print info.outputs.stdout - self.assertModuleKeyValue(module=info, reference=tinfo_string, + self.assertModuleKeyValue(module=info, reference=tinfo_string, precision=2, sep="=") def test_aggregation_1day_3procs(self): @@ -106,10 +106,10 @@ start = datetime.now() self.assertModule("t.rast.aggregate", input="A", output="B", basename="b", granularity="1 day", - method="sum", sampling=["contains"], + method="sum", sampling=["contains"], nprocs=3, flags="s") end = datetime.now() - + delta = end - start print "test_aggregation_1day_3procs:", delta.total_seconds() @@ -128,7 +128,7 @@ info = SimpleModule("t.info", flags="g", input="B") #info.run() #print info.outputs.stdout - self.assertModuleKeyValue(module=info, reference=tinfo_string, + self.assertModuleKeyValue(module=info, reference=tinfo_string, precision=2, sep="=") def test_aggregation_1day_2procs(self): @@ -136,10 +136,10 @@ start = datetime.now() self.assertModule("t.rast.aggregate", input="A", output="B", basename="b", granularity="1 day", - method="sum", sampling=["contains"], + method="sum", sampling=["contains"], nprocs=2, flags="s") end = datetime.now() - + delta = end - start print "test_aggregation_1day_2procs:", delta.total_seconds() @@ -158,7 +158,7 @@ info = SimpleModule("t.info", flags="g", input="B") #info.run() #print info.outputs.stdout - self.assertModuleKeyValue(module=info, reference=tinfo_string, + self.assertModuleKeyValue(module=info, reference=tinfo_string, precision=2, sep="=") if __name__ == '__main__': from grass.gunittest.main import test Modified: grass/trunk/temporal/t.rast.aggregate/testsuite/test_aggregation_relative.py =================================================================== --- grass/trunk/temporal/t.rast.aggregate/testsuite/test_aggregation_relative.py 2015-09-24 19:31:33 UTC (rev 66324) +++ grass/trunk/temporal/t.rast.aggregate/testsuite/test_aggregation_relative.py 2015-09-25 09:19:06 UTC (rev 66325) @@ -22,7 +22,7 @@ os.putenv("GRASS_OVERWRITE", "1") tgis.init() cls.use_temp_region() - cls.runModule("g.region", s=0, n=80, w=0, e=120, b=0, + cls.runModule("g.region", s=0, n=80, w=0, e=120, b=0, t=50, res=10, res3=10) cls.runModule("r.mapcalc", expression="a1 = 100", overwrite=True) cls.runModule("r.mapcalc", expression="a2 = 200", overwrite=True) @@ -32,32 +32,32 @@ cls.runModule("r.mapcalc", expression="a6 = 600", overwrite=True) cls.runModule("r.mapcalc", expression="a7 = null()", overwrite=True) - cls.runModule("t.create", type="strds", temporaltype="relative", - output="A", title="A test", + cls.runModule("t.create", type="strds", temporaltype="relative", + output="A", title="A test", description="A test", overwrite=True) - cls.runModule("t.register", flags="i", type="raster", input="A", + cls.runModule("t.register", flags="i", type="raster", input="A", maps="a1,a2,a3,a4,a5,a6,a7", - start=0, unit="days", increment=3, + start=0, unit="days", increment=3, overwrite=True) @classmethod def tearDownClass(cls): """Remove the temporary region """ - cls.del_temp_region() + cls.del_temp_region() cls.runModule("t.remove", flags="rf", type="strds", inputs="A") def tearDown(self): - """Remove generated data""" + """Remove generated data""" self.runModule("t.remove", flags="rf", type="strds", inputs="B") def test_1(self): """Simple test""" self.assertModule("t.rast.aggregate", input="A", output="B", - basename="b", granularity=6, - method="average", - sampling=["overlaps","overlapped","contains"], - nprocs=2) + basename="b", granularity=6, + method="average", file_limit=0, + sampling=["overlaps","overlapped","contains"], + nprocs=2, verbose=True) tinfo_string="""start_time=0 end_time=18 @@ -74,16 +74,16 @@ info = SimpleModule("t.info", flags="g", input="B") #info.run() #print info.outputs.stdout - self.assertModuleKeyValue(module=info, reference=tinfo_string, + self.assertModuleKeyValue(module=info, reference=tinfo_string, precision=2, sep="=") def test_2(self): """Simple test register null maps""" self.assertModule("t.rast.aggregate", input="A", output="B", - basename="b", granularity=9, + basename="b", granularity=9, method="maximum", - sampling=["contains"], - nprocs=4, flags="n") + sampling=["contains"], + nprocs=4, flags="n", verbose=True) tinfo_string="""semantic_type=mean start_time=0 @@ -101,16 +101,16 @@ info = SimpleModule("t.info", flags="g", input="B") #info.run() #print info.outputs.stdout - self.assertModuleKeyValue(module=info, reference=tinfo_string, + self.assertModuleKeyValue(module=info, reference=tinfo_string, precision=2, sep="=") def test_3(self): """Simple test""" self.assertModule("t.rast.aggregate", input="A", output="B", - basename="b", granularity=9, + basename="b", granularity=9, method="maximum", - sampling=["contains"], - nprocs=4) + sampling=["contains"], + nprocs=4, verbose=True) tinfo_string="""semantic_type=mean start_time=0 @@ -128,16 +128,16 @@ info = SimpleModule("t.info", flags="g", input="B") #info.run() #print info.outputs.stdout - self.assertModuleKeyValue(module=info, reference=tinfo_string, + self.assertModuleKeyValue(module=info, reference=tinfo_string, precision=2, sep="=") def test_4(self): """Simple test""" self.assertModule("t.rast.aggregate", input="A", output="B", - basename="b", granularity=21, + basename="b", granularity=21, method="average", sampling=["contains"], - nprocs=4) + nprocs=4, verbose=True) tinfo_string="""semantic_type=mean start_time=0 @@ -155,7 +155,7 @@ info = SimpleModule("t.info", flags="g", input="B") #info.run() #print info.outputs.stdout - self.assertModuleKeyValue(module=info, reference=tinfo_string, + self.assertModuleKeyValue(module=info, reference=tinfo_string, precision=2, sep="=") if __name__ == '__main__': From svn_grass at osgeo.org Fri Sep 25 03:32:20 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Fri, 25 Sep 2015 03:32:20 -0700 Subject: [GRASS-SVN] r66326 - grass/trunk/scripts/v.what.strds Message-ID: <20150925103220.3B6B6390112@trac.osgeo.org> Author: lucadelu Date: 2015-09-25 03:32:20 -0700 (Fri, 25 Sep 2015) New Revision: 66326 Modified: grass/trunk/scripts/v.what.strds/v.what.strds.py Log: add capabilities to add columns and values in the input vector file Modified: grass/trunk/scripts/v.what.strds/v.what.strds.py =================================================================== --- grass/trunk/scripts/v.what.strds/v.what.strds.py 2015-09-25 09:19:06 UTC (rev 66325) +++ grass/trunk/scripts/v.what.strds/v.what.strds.py 2015-09-25 10:32:20 UTC (rev 66326) @@ -32,6 +32,7 @@ #%end #%option G_OPT_V_OUTPUT +#% required: no #%end #%option G_OPT_DB_WHERE @@ -41,6 +42,12 @@ #% key: t_where #%end +#%flag +#% key: u +#% label: Update input vector +#% description: Instead create a new vector update the input vector with the values +#%end + import grass.script as grass import grass.temporal as tgis from grass.pygrass.utils import copy as gcopy @@ -87,6 +94,13 @@ where = options["where"] tempwhere = options["t_where"] + if output and flags['u']: + grass.fatal(_("Cannot combine 'output' option and 'u' flag")) + elif not output and not flags['u']: + grass.fatal(_("'output' option or 'u' flag must be given")) + elif not output and flags['u']: + grass.warning(_("Vector {name} will be update...").format(name=input)) + if where == "" or where == " " or where == "\n": where = None @@ -172,7 +186,10 @@ samples.append(s) # Get the layer and database connections of the input vector - gcopy(input, output, 'vect') + if output: + gcopy(input, output, 'vect') + else: + output = input msgr = Messenger() perc_curr = 0 From svn_grass at osgeo.org Fri Sep 25 03:59:31 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Fri, 25 Sep 2015 03:59:31 -0700 Subject: [GRASS-SVN] r66327 - grass/trunk/scripts/v.what.strds Message-ID: <20150925105931.34A1139012E@trac.osgeo.org> Author: neteler Date: 2015-09-25 03:59:31 -0700 (Fri, 25 Sep 2015) New Revision: 66327 Modified: grass/trunk/scripts/v.what.strds/v.what.strds.py Log: v.what.strds: fix English in msgs; gcopy Modified: grass/trunk/scripts/v.what.strds/v.what.strds.py =================================================================== --- grass/trunk/scripts/v.what.strds/v.what.strds.py 2015-09-25 10:32:20 UTC (rev 66326) +++ grass/trunk/scripts/v.what.strds/v.what.strds.py 2015-09-25 10:59:31 UTC (rev 66327) @@ -44,8 +44,8 @@ #%flag #% key: u -#% label: Update input vector -#% description: Instead create a new vector update the input vector with the values +#% label: Update attribute table of input vector map +#% description: Instead of creating a new vector map update the attribute table with value(s) #%end import grass.script as grass @@ -99,7 +99,7 @@ elif not output and not flags['u']: grass.fatal(_("'output' option or 'u' flag must be given")) elif not output and flags['u']: - grass.warning(_("Vector {name} will be update...").format(name=input)) + grass.warning(_("Attribute table of vector {name} will be updated...").format(name=input)) if where == "" or where == " " or where == "\n": where = None @@ -187,7 +187,7 @@ # Get the layer and database connections of the input vector if output: - gcopy(input, output, 'vect') + gcopy(input, output, 'vector') else: output = input From svn_grass at osgeo.org Fri Sep 25 04:07:25 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Fri, 25 Sep 2015 04:07:25 -0700 Subject: [GRASS-SVN] r66328 - in grass/trunk/temporal: t.rast.what t.vect.what.strds Message-ID: <20150925110725.7AA0839012E@trac.osgeo.org> Author: neteler Date: 2015-09-25 04:07:25 -0700 (Fri, 25 Sep 2015) New Revision: 66328 Modified: grass/trunk/temporal/t.rast.what/t.rast.what.html grass/trunk/temporal/t.vect.what.strds/t.vect.what.strds.html Log: temporal manual: reference v.what.strds Modified: grass/trunk/temporal/t.rast.what/t.rast.what.html =================================================================== --- grass/trunk/temporal/t.rast.what/t.rast.what.html 2015-09-25 10:59:31 UTC (rev 66327) +++ grass/trunk/temporal/t.rast.what/t.rast.what.html 2015-09-25 11:07:25 UTC (rev 66328) @@ -1,21 +1,24 @@

    DESCRIPTION

    t.rast.what is designed to sample space time raster datasets -at specific point coordinates using r.what internally. -The output of r.what -is transformed to different output layouts. +at specific point coordinates using r.what +internally. The output of r.what is transformed +to different output layouts. The output layouts can be specified using the layout option.

    Three layouts can be specified:

    • 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, this order is the original r.what output, except that the column names are the time stamps
    • +
    • 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, + this order is the original r.what output, except that the column + names are the timestamps
    Please have a look at the example to see the supported layouts.

    -This module is designed to run several instances of r.what to sample +This module is designed to run several instances of r.what to sample subsets of a space time raster dataset in parallel. Several intermediate text files will be created that are merged into a single file at the end of the processing. @@ -31,7 +34,8 @@

    Data preparation

    In the following examples we sample a space time raster dataset that contains -4 raster map layers. First we create the STRDS that will be sampled with t.rast.what. +4 raster map layers. First we create the STRDS that will be sampled with +t.rast.what.
     g.region s=0 n=80 w=0 e=120 b=0 t=50 res=10
    @@ -116,13 +120,14 @@
     

    SEE ALSO

    -r.what , +g.region, +r.mask r.neighbors, +r.what, +t.info, t.rast.aggregate.ds, t.rast.extract, -t.info, -g.region, -r.mask +v.what.strds Modified: grass/trunk/temporal/t.vect.what.strds/t.vect.what.strds.html =================================================================== --- grass/trunk/temporal/t.vect.what.strds/t.vect.what.strds.html 2015-09-25 10:59:31 UTC (rev 66327) +++ grass/trunk/temporal/t.vect.what.strds/t.vect.what.strds.html 2015-09-25 11:07:25 UTC (rev 66328) @@ -24,6 +24,7 @@ v.univar, v.what.rast, v.what.rast3, +v.what.strds, v.what.vect, t.create, t.info From svn_grass at osgeo.org Fri Sep 25 04:08:41 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Fri, 25 Sep 2015 04:08:41 -0700 Subject: [GRASS-SVN] r66329 - grass/trunk/temporal Message-ID: <20150925110841.4AE2E39012E@trac.osgeo.org> Author: neteler Date: 2015-09-25 04:08:41 -0700 (Fri, 25 Sep 2015) New Revision: 66329 Modified: grass/trunk/temporal/temporalintro.html Log: temporal manual: reference v.what.strds Modified: grass/trunk/temporal/temporalintro.html =================================================================== --- grass/trunk/temporal/temporalintro.html 2015-09-25 11:07:25 UTC (rev 66328) +++ grass/trunk/temporal/temporalintro.html 2015-09-25 11:08:41 UTC (rev 66329) @@ -111,6 +111,8 @@
  • t.rast.neighbors
  • +Additionally, there is v.what.strds. +

    Aggregation and accumulation analysis

    The temporal framework support the aggregation of space time raster From svn_grass at osgeo.org Fri Sep 25 06:17:35 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Fri, 25 Sep 2015 06:17:35 -0700 Subject: [GRASS-SVN] r66330 - in grass/trunk: raster/r.timestamp raster3d/r3.timestamp temporal/t.create temporal/t.info temporal/t.list temporal/t.merge temporal/t.rast.accdetect temporal/t.rast.accumulate temporal/t.rast.aggregate temporal/t.rast.aggregate.ds temporal/t.rast.algebra temporal/t.rast.colors temporal/t.rast.contour temporal/t.rast.export temporal/t.rast.extract temporal/t.rast.gapfill temporal/t.rast.import temporal/t.rast.list temporal/t.rast.mapcalc temporal/t.rast.neighbors temporal/t.rast.out.vtk temporal/t.rast.series temporal/t.rast.to.rast3 temporal/t.rast.to.vect temporal/t.rast.univar temporal/t.rast.what temporal/t.rast3d.algebra temporal/t.rast3d.extract temporal/t.rast3d.list temporal/t.rast3d.mapcalc temporal/t.rast3d.univar temporal/t.register temporal/t.remove temporal/t.rename temporal/t.sample temporal/t.select temporal/t.shift temporal/t.snap temporal/t.support temporal/t.topology temporal/t.unregister temporal/t.vect.algebra temporal/t.vect.db.select temporal/t .vect.export temporal/t.vect.extract temporal/t.vect.import temporal/t.vect.list temporal/t.vect.observe.strds temporal/t.vect.univar temporal/t.vect.what.strds vector/v.timestamp Message-ID: <20150925131735.46B96390112@trac.osgeo.org> Author: neteler Date: 2015-09-25 06:17:35 -0700 (Fri, 25 Sep 2015) New Revision: 66330 Modified: grass/trunk/raster/r.timestamp/main.c grass/trunk/raster3d/r3.timestamp/main.c grass/trunk/temporal/t.create/t.create.py grass/trunk/temporal/t.info/t.info.py grass/trunk/temporal/t.list/t.list.py grass/trunk/temporal/t.merge/t.merge.py grass/trunk/temporal/t.rast.accdetect/t.rast.accdetect.py grass/trunk/temporal/t.rast.accumulate/t.rast.accumulate.py grass/trunk/temporal/t.rast.aggregate.ds/t.rast.aggregate.ds.py grass/trunk/temporal/t.rast.aggregate/t.rast.aggregate.py grass/trunk/temporal/t.rast.algebra/t.rast.algebra.py grass/trunk/temporal/t.rast.colors/t.rast.colors.py grass/trunk/temporal/t.rast.contour/t.rast.contour.py grass/trunk/temporal/t.rast.export/t.rast.export.py grass/trunk/temporal/t.rast.extract/t.rast.extract.py grass/trunk/temporal/t.rast.gapfill/t.rast.gapfill.py grass/trunk/temporal/t.rast.import/t.rast.import.py grass/trunk/temporal/t.rast.list/t.rast.list.py grass/trunk/temporal/t.rast.mapcalc/t.rast.mapcalc.py grass/trunk/temporal/t.rast.neighbors/t.rast.neighbors.py grass/trunk/temporal/t.rast.out.vtk/t.rast.out.vtk.py grass/trunk/temporal/t.rast.series/t.rast.series.py grass/trunk/temporal/t.rast.to.rast3/t.rast.to.rast3.py grass/trunk/temporal/t.rast.to.vect/t.rast.to.vect.py grass/trunk/temporal/t.rast.univar/t.rast.univar.py grass/trunk/temporal/t.rast.what/t.rast.what.py grass/trunk/temporal/t.rast3d.algebra/t.rast3d.algebra.py grass/trunk/temporal/t.rast3d.extract/t.rast3d.extract.py grass/trunk/temporal/t.rast3d.list/t.rast3d.list.py grass/trunk/temporal/t.rast3d.mapcalc/t.rast3d.mapcalc.py grass/trunk/temporal/t.rast3d.univar/t.rast3d.univar.py grass/trunk/temporal/t.register/t.register.py grass/trunk/temporal/t.remove/t.remove.py grass/trunk/temporal/t.rename/t.rename.py grass/trunk/temporal/t.sample/t.sample.py grass/trunk/temporal/t.select/t.select.py grass/trunk/temporal/t.shift/t.shift.py grass/trunk/temporal/t.snap/t.snap.py grass/trunk/temporal/t.support/t.support.py grass/trunk/temporal/t.topology/t.topology.py grass/trunk/temporal/t.unregister/t.unregister.py grass/trunk/temporal/t.vect.algebra/t.vect.algebra.py grass/trunk/temporal/t.vect.db.select/t.vect.db.select.py grass/trunk/temporal/t.vect.export/t.vect.export.py grass/trunk/temporal/t.vect.extract/t.vect.extract.py grass/trunk/temporal/t.vect.import/t.vect.import.py grass/trunk/temporal/t.vect.list/t.vect.list.py grass/trunk/temporal/t.vect.observe.strds/t.vect.observe.strds.py grass/trunk/temporal/t.vect.univar/t.vect.univar.py grass/trunk/temporal/t.vect.what.strds/t.vect.what.strds.py grass/trunk/vector/v.timestamp/main.c Log: temporal: add 'time' keyword for index Modified: grass/trunk/raster/r.timestamp/main.c =================================================================== --- grass/trunk/raster/r.timestamp/main.c 2015-09-25 11:08:41 UTC (rev 66329) +++ grass/trunk/raster/r.timestamp/main.c 2015-09-25 13:17:35 UTC (rev 66330) @@ -35,6 +35,7 @@ G_add_keyword(_("raster")); G_add_keyword(_("metadata")); G_add_keyword(_("timestamp")); + G_add_keyword(_("time")); module->label = _("Modifies a timestamp for a raster map."); module->description = _("Print/add/remove a timestamp for a raster map."); Modified: grass/trunk/raster3d/r3.timestamp/main.c =================================================================== --- grass/trunk/raster3d/r3.timestamp/main.c 2015-09-25 11:08:41 UTC (rev 66329) +++ grass/trunk/raster3d/r3.timestamp/main.c 2015-09-25 13:17:35 UTC (rev 66330) @@ -42,6 +42,7 @@ module = G_define_module(); G_add_keyword(_("raster3d")); G_add_keyword(_("timestamp")); + G_add_keyword(_("time")); G_add_keyword(_("voxel")); module->description = _("Print/add/remove a timestamp for a 3D raster map"); Modified: grass/trunk/temporal/t.create/t.create.py =================================================================== --- grass/trunk/temporal/t.create/t.create.py 2015-09-25 11:08:41 UTC (rev 66329) +++ grass/trunk/temporal/t.create/t.create.py 2015-09-25 13:17:35 UTC (rev 66330) @@ -19,6 +19,7 @@ #% keyword: temporal #% keyword: map management #% keyword: create +#% keyword: time #%end #%option G_OPT_STDS_OUTPUT Modified: grass/trunk/temporal/t.info/t.info.py =================================================================== --- grass/trunk/temporal/t.info/t.info.py 2015-09-25 11:08:41 UTC (rev 66329) +++ grass/trunk/temporal/t.info/t.info.py 2015-09-25 13:17:35 UTC (rev 66330) @@ -19,6 +19,7 @@ #% keyword: temporal #% keyword: metadata #% keyword: extent +#% keyword: time #%end #%option G_OPT_STDS_INPUT Modified: grass/trunk/temporal/t.list/t.list.py =================================================================== --- grass/trunk/temporal/t.list/t.list.py 2015-09-25 11:08:41 UTC (rev 66329) +++ grass/trunk/temporal/t.list/t.list.py 2015-09-25 13:17:35 UTC (rev 66330) @@ -19,6 +19,7 @@ #% keyword: temporal #% keyword: map management #% keyword: list +#% keyword: time #%end #%option Modified: grass/trunk/temporal/t.merge/t.merge.py =================================================================== --- grass/trunk/temporal/t.merge/t.merge.py 2015-09-25 11:08:41 UTC (rev 66329) +++ grass/trunk/temporal/t.merge/t.merge.py 2015-09-25 13:17:35 UTC (rev 66330) @@ -18,6 +18,7 @@ #% description: Merges several space time datasets into a single space time dataset. #% keyword: temporal #% keyword: merge +#% keyword: time #%end #%option G_OPT_STDS_INPUTS Modified: grass/trunk/temporal/t.rast.accdetect/t.rast.accdetect.py =================================================================== --- grass/trunk/temporal/t.rast.accdetect/t.rast.accdetect.py 2015-09-25 11:08:41 UTC (rev 66329) +++ grass/trunk/temporal/t.rast.accdetect/t.rast.accdetect.py 2015-09-25 13:17:35 UTC (rev 66330) @@ -19,6 +19,7 @@ #% keyword: temporal #% keyword: accumulation #% keyword: raster +#% keyword: time #%end #%option G_OPT_STRDS_INPUT Modified: grass/trunk/temporal/t.rast.accumulate/t.rast.accumulate.py =================================================================== --- grass/trunk/temporal/t.rast.accumulate/t.rast.accumulate.py 2015-09-25 11:08:41 UTC (rev 66329) +++ grass/trunk/temporal/t.rast.accumulate/t.rast.accumulate.py 2015-09-25 13:17:35 UTC (rev 66330) @@ -19,6 +19,7 @@ #% keyword: temporal #% keyword: accumulation #% keyword: raster +#% keyword: time #%end #%option G_OPT_STRDS_INPUT Modified: grass/trunk/temporal/t.rast.aggregate/t.rast.aggregate.py =================================================================== --- grass/trunk/temporal/t.rast.aggregate/t.rast.aggregate.py 2015-09-25 11:08:41 UTC (rev 66329) +++ grass/trunk/temporal/t.rast.aggregate/t.rast.aggregate.py 2015-09-25 13:17:35 UTC (rev 66330) @@ -19,6 +19,7 @@ #% keyword: temporal #% keyword: aggregation #% keyword: raster +#% keyword: time #%end #%option G_OPT_STRDS_INPUT Modified: grass/trunk/temporal/t.rast.aggregate.ds/t.rast.aggregate.ds.py =================================================================== --- grass/trunk/temporal/t.rast.aggregate.ds/t.rast.aggregate.ds.py 2015-09-25 11:08:41 UTC (rev 66329) +++ grass/trunk/temporal/t.rast.aggregate.ds/t.rast.aggregate.ds.py 2015-09-25 13:17:35 UTC (rev 66330) @@ -19,6 +19,7 @@ #% keyword: temporal #% keyword: aggregation #% keyword: raster +#% keyword: time #%end #%option G_OPT_STRDS_INPUT Modified: grass/trunk/temporal/t.rast.algebra/t.rast.algebra.py =================================================================== --- grass/trunk/temporal/t.rast.algebra/t.rast.algebra.py 2015-09-25 11:08:41 UTC (rev 66329) +++ grass/trunk/temporal/t.rast.algebra/t.rast.algebra.py 2015-09-25 13:17:35 UTC (rev 66330) @@ -21,6 +21,7 @@ #% keyword: temporal #% keyword: algebra #% keyword: raster +#% keyword: time #%end #%option Modified: grass/trunk/temporal/t.rast.colors/t.rast.colors.py =================================================================== --- grass/trunk/temporal/t.rast.colors/t.rast.colors.py 2015-09-25 11:08:41 UTC (rev 66329) +++ grass/trunk/temporal/t.rast.colors/t.rast.colors.py 2015-09-25 13:17:35 UTC (rev 66330) @@ -19,6 +19,7 @@ #% keyword: temporal #% keyword: color table #% keyword: raster +#% keyword: time #%end #%option G_OPT_STRDS_INPUT Modified: grass/trunk/temporal/t.rast.contour/t.rast.contour.py =================================================================== --- grass/trunk/temporal/t.rast.contour/t.rast.contour.py 2015-09-25 11:08:41 UTC (rev 66329) +++ grass/trunk/temporal/t.rast.contour/t.rast.contour.py 2015-09-25 13:17:35 UTC (rev 66330) @@ -21,6 +21,7 @@ #% keyword: contour #% keyword: raster #% keyword: vector +#% keyword: time #%end #%option G_OPT_STRDS_INPUT Modified: grass/trunk/temporal/t.rast.export/t.rast.export.py =================================================================== --- grass/trunk/temporal/t.rast.export/t.rast.export.py 2015-09-25 11:08:41 UTC (rev 66329) +++ grass/trunk/temporal/t.rast.export/t.rast.export.py 2015-09-25 13:17:35 UTC (rev 66330) @@ -19,6 +19,7 @@ #% keyword: temporal #% keyword: export #% keyword: raster +#% keyword: time #%end #%option G_OPT_STRDS_INPUT Modified: grass/trunk/temporal/t.rast.extract/t.rast.extract.py =================================================================== --- grass/trunk/temporal/t.rast.extract/t.rast.extract.py 2015-09-25 11:08:41 UTC (rev 66329) +++ grass/trunk/temporal/t.rast.extract/t.rast.extract.py 2015-09-25 13:17:35 UTC (rev 66330) @@ -19,6 +19,7 @@ #% keyword: temporal #% keyword: extract #% keyword: raster +#% keyword: time #%end #%option G_OPT_STRDS_INPUT Modified: grass/trunk/temporal/t.rast.gapfill/t.rast.gapfill.py =================================================================== --- grass/trunk/temporal/t.rast.gapfill/t.rast.gapfill.py 2015-09-25 11:08:41 UTC (rev 66329) +++ grass/trunk/temporal/t.rast.gapfill/t.rast.gapfill.py 2015-09-25 13:17:35 UTC (rev 66330) @@ -19,6 +19,7 @@ #% keyword: temporal #% keyword: interpolation #% keyword: raster +#% keyword: time #%end #%option G_OPT_STRDS_INPUT Modified: grass/trunk/temporal/t.rast.import/t.rast.import.py =================================================================== --- grass/trunk/temporal/t.rast.import/t.rast.import.py 2015-09-25 11:08:41 UTC (rev 66329) +++ grass/trunk/temporal/t.rast.import/t.rast.import.py 2015-09-25 13:17:35 UTC (rev 66330) @@ -19,6 +19,7 @@ #% keyword: temporal #% keyword: import #% keyword: raster +#% keyword: time #%end #%option G_OPT_F_INPUT Modified: grass/trunk/temporal/t.rast.list/t.rast.list.py =================================================================== --- grass/trunk/temporal/t.rast.list/t.rast.list.py 2015-09-25 11:08:41 UTC (rev 66329) +++ grass/trunk/temporal/t.rast.list/t.rast.list.py 2015-09-25 13:17:35 UTC (rev 66330) @@ -20,6 +20,7 @@ #% keyword: map management #% keyword: raster #% keyword: list +#% keyword: time #%end #%option G_OPT_STRDS_INPUT Modified: grass/trunk/temporal/t.rast.mapcalc/t.rast.mapcalc.py =================================================================== --- grass/trunk/temporal/t.rast.mapcalc/t.rast.mapcalc.py 2015-09-25 11:08:41 UTC (rev 66329) +++ grass/trunk/temporal/t.rast.mapcalc/t.rast.mapcalc.py 2015-09-25 13:17:35 UTC (rev 66330) @@ -19,6 +19,7 @@ #% keyword: temporal #% keyword: algebra #% keyword: raster +#% keyword: time #%end #%option G_OPT_STRDS_INPUTS Modified: grass/trunk/temporal/t.rast.neighbors/t.rast.neighbors.py =================================================================== --- grass/trunk/temporal/t.rast.neighbors/t.rast.neighbors.py 2015-09-25 11:08:41 UTC (rev 66329) +++ grass/trunk/temporal/t.rast.neighbors/t.rast.neighbors.py 2015-09-25 13:17:35 UTC (rev 66330) @@ -20,6 +20,7 @@ #% keyword: temporal #% keyword: aggregation #% keyword: raster +#% keyword: time #%end #%option G_OPT_STRDS_INPUT Modified: grass/trunk/temporal/t.rast.out.vtk/t.rast.out.vtk.py =================================================================== --- grass/trunk/temporal/t.rast.out.vtk/t.rast.out.vtk.py 2015-09-25 11:08:41 UTC (rev 66329) +++ grass/trunk/temporal/t.rast.out.vtk/t.rast.out.vtk.py 2015-09-25 13:17:35 UTC (rev 66330) @@ -20,6 +20,7 @@ #% keyword: export #% keyword: raster #% keyword: VTK +#% keyword: time #%end #%option G_OPT_STRDS_INPUT Modified: grass/trunk/temporal/t.rast.series/t.rast.series.py =================================================================== --- grass/trunk/temporal/t.rast.series/t.rast.series.py 2015-09-25 11:08:41 UTC (rev 66329) +++ grass/trunk/temporal/t.rast.series/t.rast.series.py 2015-09-25 13:17:35 UTC (rev 66330) @@ -20,6 +20,7 @@ #% keyword: temporal #% keyword: series #% keyword: raster +#% keyword: time #%end #%option G_OPT_STRDS_INPUT Modified: grass/trunk/temporal/t.rast.to.rast3/t.rast.to.rast3.py =================================================================== --- grass/trunk/temporal/t.rast.to.rast3/t.rast.to.rast3.py 2015-09-25 11:08:41 UTC (rev 66329) +++ grass/trunk/temporal/t.rast.to.rast3/t.rast.to.rast3.py 2015-09-25 13:17:35 UTC (rev 66330) @@ -21,6 +21,7 @@ #% keyword: raster #% keyword: raster3d #% keyword: voxel +#% keyword: time #%end #%option G_OPT_STRDS_INPUT Modified: grass/trunk/temporal/t.rast.to.vect/t.rast.to.vect.py =================================================================== --- grass/trunk/temporal/t.rast.to.vect/t.rast.to.vect.py 2015-09-25 11:08:41 UTC (rev 66329) +++ grass/trunk/temporal/t.rast.to.vect/t.rast.to.vect.py 2015-09-25 13:17:35 UTC (rev 66330) @@ -21,6 +21,7 @@ #% keyword: conversion #% keyword: raster #% keyword: vector +#% keyword: time #%end #%option G_OPT_STRDS_INPUT Modified: grass/trunk/temporal/t.rast.univar/t.rast.univar.py =================================================================== --- grass/trunk/temporal/t.rast.univar/t.rast.univar.py 2015-09-25 11:08:41 UTC (rev 66329) +++ grass/trunk/temporal/t.rast.univar/t.rast.univar.py 2015-09-25 13:17:35 UTC (rev 66330) @@ -19,6 +19,7 @@ #% keyword: temporal #% keyword: statistics #% keyword: raster +#% keyword: time #%end #%option G_OPT_STRDS_INPUT Modified: grass/trunk/temporal/t.rast.what/t.rast.what.py =================================================================== --- grass/trunk/temporal/t.rast.what/t.rast.what.py 2015-09-25 11:08:41 UTC (rev 66329) +++ grass/trunk/temporal/t.rast.what/t.rast.what.py 2015-09-25 13:17:35 UTC (rev 66330) @@ -22,6 +22,7 @@ #% keyword: temporal #% keyword: raster #% keyword: sampling +#% keyword: time #%end #%option G_OPT_V_INPUT Modified: grass/trunk/temporal/t.rast3d.algebra/t.rast3d.algebra.py =================================================================== --- grass/trunk/temporal/t.rast3d.algebra/t.rast3d.algebra.py 2015-09-25 11:08:41 UTC (rev 66329) +++ grass/trunk/temporal/t.rast3d.algebra/t.rast3d.algebra.py 2015-09-25 13:17:35 UTC (rev 66330) @@ -22,6 +22,7 @@ #% keyword: algebra #% keyword: raster3d #% keyword: voxel +#% keyword: time #%end #%option Modified: grass/trunk/temporal/t.rast3d.extract/t.rast3d.extract.py =================================================================== --- grass/trunk/temporal/t.rast3d.extract/t.rast3d.extract.py 2015-09-25 11:08:41 UTC (rev 66329) +++ grass/trunk/temporal/t.rast3d.extract/t.rast3d.extract.py 2015-09-25 13:17:35 UTC (rev 66330) @@ -20,6 +20,7 @@ #% keyword: extract #% keyword: raster3d #% keyword: voxel +#% keyword: time #%end #%option G_OPT_STR3DS_INPUT Modified: grass/trunk/temporal/t.rast3d.list/t.rast3d.list.py =================================================================== --- grass/trunk/temporal/t.rast3d.list/t.rast3d.list.py 2015-09-25 11:08:41 UTC (rev 66329) +++ grass/trunk/temporal/t.rast3d.list/t.rast3d.list.py 2015-09-25 13:17:35 UTC (rev 66330) @@ -21,6 +21,7 @@ #% keyword: list #% keyword: raster3d #% keyword: voxel +#% keyword: time #%end #%option G_OPT_STR3DS_INPUT Modified: grass/trunk/temporal/t.rast3d.mapcalc/t.rast3d.mapcalc.py =================================================================== --- grass/trunk/temporal/t.rast3d.mapcalc/t.rast3d.mapcalc.py 2015-09-25 11:08:41 UTC (rev 66329) +++ grass/trunk/temporal/t.rast3d.mapcalc/t.rast3d.mapcalc.py 2015-09-25 13:17:35 UTC (rev 66330) @@ -20,6 +20,7 @@ #% keyword: algebra #% keyword: raster3d #% keyword: voxel +#% keyword: time #%end #%option G_OPT_STR3DS_INPUTS Modified: grass/trunk/temporal/t.rast3d.univar/t.rast3d.univar.py =================================================================== --- grass/trunk/temporal/t.rast3d.univar/t.rast3d.univar.py 2015-09-25 11:08:41 UTC (rev 66329) +++ grass/trunk/temporal/t.rast3d.univar/t.rast3d.univar.py 2015-09-25 13:17:35 UTC (rev 66330) @@ -21,6 +21,7 @@ #% keyword: statistics #% keyword: raster3d #% keyword: voxel +#% keyword: time #%end #%option G_OPT_STR3DS_INPUT Modified: grass/trunk/temporal/t.register/t.register.py =================================================================== --- grass/trunk/temporal/t.register/t.register.py 2015-09-25 11:08:41 UTC (rev 66329) +++ grass/trunk/temporal/t.register/t.register.py 2015-09-25 13:17:35 UTC (rev 66330) @@ -19,6 +19,7 @@ #% keyword: temporal #% keyword: map management #% keyword: register +#% keyword: time #% overwrite: yes #%end Modified: grass/trunk/temporal/t.remove/t.remove.py =================================================================== --- grass/trunk/temporal/t.remove/t.remove.py 2015-09-25 11:08:41 UTC (rev 66329) +++ grass/trunk/temporal/t.remove/t.remove.py 2015-09-25 13:17:35 UTC (rev 66330) @@ -19,6 +19,7 @@ #% keyword: temporal #% keyword: map management #% keyword: remove +#% keyword: time #%end #%option G_OPT_STDS_INPUTS Modified: grass/trunk/temporal/t.rename/t.rename.py =================================================================== --- grass/trunk/temporal/t.rename/t.rename.py 2015-09-25 11:08:41 UTC (rev 66329) +++ grass/trunk/temporal/t.rename/t.rename.py 2015-09-25 13:17:35 UTC (rev 66330) @@ -19,6 +19,7 @@ #% keyword: temporal #% keyword: map management #% keyword: rename +#% keyword: time #%end #%option G_OPT_STDS_INPUT Modified: grass/trunk/temporal/t.sample/t.sample.py =================================================================== --- grass/trunk/temporal/t.sample/t.sample.py 2015-09-25 11:08:41 UTC (rev 66329) +++ grass/trunk/temporal/t.sample/t.sample.py 2015-09-25 13:17:35 UTC (rev 66330) @@ -18,6 +18,7 @@ #% description: Samples the input space time dataset(s) with a sample space time dataset and print the result to stdout. #% keyword: temporal #% keyword: sampling +#% keyword: time #%end #%option G_OPT_STDS_INPUTS Modified: grass/trunk/temporal/t.select/t.select.py =================================================================== --- grass/trunk/temporal/t.select/t.select.py 2015-09-25 11:08:41 UTC (rev 66329) +++ grass/trunk/temporal/t.select/t.select.py 2015-09-25 13:17:35 UTC (rev 66330) @@ -19,6 +19,7 @@ #% description: Select maps from space time datasets by topological relationships to other space time datasets using temporal algebra. #% keyword: temporal #% keyword: metadata +#% keyword: time #%end #%option G_OPT_STDS_TYPE Modified: grass/trunk/temporal/t.shift/t.shift.py =================================================================== --- grass/trunk/temporal/t.shift/t.shift.py 2015-09-25 11:08:41 UTC (rev 66329) +++ grass/trunk/temporal/t.shift/t.shift.py 2015-09-25 13:17:35 UTC (rev 66330) @@ -18,6 +18,7 @@ #% description: Shifts temporally the maps of a space time dataset. #% keyword: temporal #% keyword: shift +#% keyword: time #%end #%option G_OPT_STDS_INPUT Modified: grass/trunk/temporal/t.snap/t.snap.py =================================================================== --- grass/trunk/temporal/t.snap/t.snap.py 2015-09-25 11:08:41 UTC (rev 66329) +++ grass/trunk/temporal/t.snap/t.snap.py 2015-09-25 13:17:35 UTC (rev 66330) @@ -18,6 +18,7 @@ #% description: Snaps temporally the maps of a space time dataset. #% keyword: temporal #% keyword: snapping +#% keyword: time #%end #%option G_OPT_STDS_INPUT Modified: grass/trunk/temporal/t.support/t.support.py =================================================================== --- grass/trunk/temporal/t.support/t.support.py 2015-09-25 11:08:41 UTC (rev 66329) +++ grass/trunk/temporal/t.support/t.support.py 2015-09-25 13:17:35 UTC (rev 66330) @@ -18,6 +18,7 @@ #% description: Modifies the metadata of a space time dataset. #% keyword: temporal #% keyword: metadata +#% keyword: time #%end #%option G_OPT_STDS_INPUT Modified: grass/trunk/temporal/t.topology/t.topology.py =================================================================== --- grass/trunk/temporal/t.topology/t.topology.py 2015-09-25 11:08:41 UTC (rev 66329) +++ grass/trunk/temporal/t.topology/t.topology.py 2015-09-25 13:17:35 UTC (rev 66330) @@ -18,6 +18,7 @@ #% description: Lists temporal topology of a space time dataset. #% keyword: temporal #% keyword: topology +#% keyword: time #%end #%option G_OPT_STDS_INPUT Modified: grass/trunk/temporal/t.unregister/t.unregister.py =================================================================== --- grass/trunk/temporal/t.unregister/t.unregister.py 2015-09-25 11:08:41 UTC (rev 66329) +++ grass/trunk/temporal/t.unregister/t.unregister.py 2015-09-25 13:17:35 UTC (rev 66330) @@ -19,6 +19,7 @@ #% keyword: temporal #% keyword: map management #% keyword: unregister +#% keyword: time #%end #%option G_OPT_STDS_INPUT Modified: grass/trunk/temporal/t.vect.algebra/t.vect.algebra.py =================================================================== --- grass/trunk/temporal/t.vect.algebra/t.vect.algebra.py 2015-09-25 11:08:41 UTC (rev 66329) +++ grass/trunk/temporal/t.vect.algebra/t.vect.algebra.py 2015-09-25 13:17:35 UTC (rev 66330) @@ -21,6 +21,7 @@ #% keyword: temporal #% keyword: algebra #% keyword: vector +#% keyword: time #%end #%option Modified: grass/trunk/temporal/t.vect.db.select/t.vect.db.select.py =================================================================== --- grass/trunk/temporal/t.vect.db.select/t.vect.db.select.py 2015-09-25 11:08:41 UTC (rev 66329) +++ grass/trunk/temporal/t.vect.db.select/t.vect.db.select.py 2015-09-25 13:17:35 UTC (rev 66330) @@ -21,6 +21,7 @@ #% keyword: vector #% keyword: database #% keyword: select +#% keyword: time #%end #%option G_OPT_STVDS_INPUT Modified: grass/trunk/temporal/t.vect.export/t.vect.export.py =================================================================== --- grass/trunk/temporal/t.vect.export/t.vect.export.py 2015-09-25 11:08:41 UTC (rev 66329) +++ grass/trunk/temporal/t.vect.export/t.vect.export.py 2015-09-25 13:17:35 UTC (rev 66330) @@ -19,6 +19,7 @@ #% keyword: temporal #% keyword: export #% keyword: vector +#% keyword: time #%end #%option G_OPT_STVDS_INPUT Modified: grass/trunk/temporal/t.vect.extract/t.vect.extract.py =================================================================== --- grass/trunk/temporal/t.vect.extract/t.vect.extract.py 2015-09-25 11:08:41 UTC (rev 66329) +++ grass/trunk/temporal/t.vect.extract/t.vect.extract.py 2015-09-25 13:17:35 UTC (rev 66330) @@ -19,6 +19,7 @@ #% keyword: temporal #% keyword: extract #% keyword: vector +#% keyword: time #%end #%option G_OPT_STVDS_INPUT Modified: grass/trunk/temporal/t.vect.import/t.vect.import.py =================================================================== --- grass/trunk/temporal/t.vect.import/t.vect.import.py 2015-09-25 11:08:41 UTC (rev 66329) +++ grass/trunk/temporal/t.vect.import/t.vect.import.py 2015-09-25 13:17:35 UTC (rev 66330) @@ -19,6 +19,7 @@ #% keyword: temporal #% keyword: import #% keyword: vector +#% keyword: time #%end #%option G_OPT_F_INPUT Modified: grass/trunk/temporal/t.vect.list/t.vect.list.py =================================================================== --- grass/trunk/temporal/t.vect.list/t.vect.list.py 2015-09-25 11:08:41 UTC (rev 66329) +++ grass/trunk/temporal/t.vect.list/t.vect.list.py 2015-09-25 13:17:35 UTC (rev 66330) @@ -20,6 +20,7 @@ #% keyword: map management #% keyword: vector #% keyword: list +#% keyword: time #%end #%option G_OPT_STVDS_INPUT Modified: grass/trunk/temporal/t.vect.observe.strds/t.vect.observe.strds.py =================================================================== --- grass/trunk/temporal/t.vect.observe.strds/t.vect.observe.strds.py 2015-09-25 11:08:41 UTC (rev 66329) +++ grass/trunk/temporal/t.vect.observe.strds/t.vect.observe.strds.py 2015-09-25 13:17:35 UTC (rev 66330) @@ -19,6 +19,7 @@ #% keyword: temporal #% keyword: sampling #% keyword: vector +#% keyword: time #%end #%option G_OPT_V_INPUT Modified: grass/trunk/temporal/t.vect.univar/t.vect.univar.py =================================================================== --- grass/trunk/temporal/t.vect.univar/t.vect.univar.py 2015-09-25 11:08:41 UTC (rev 66329) +++ grass/trunk/temporal/t.vect.univar/t.vect.univar.py 2015-09-25 13:17:35 UTC (rev 66330) @@ -19,6 +19,7 @@ #% keyword: temporal #% keyword: statistics #% keyword: vector +#% keyword: time #%end #%option G_OPT_STVDS_INPUT Modified: grass/trunk/temporal/t.vect.what.strds/t.vect.what.strds.py =================================================================== --- grass/trunk/temporal/t.vect.what.strds/t.vect.what.strds.py 2015-09-25 11:08:41 UTC (rev 66329) +++ grass/trunk/temporal/t.vect.what.strds/t.vect.what.strds.py 2015-09-25 13:17:35 UTC (rev 66330) @@ -19,6 +19,7 @@ #% keyword: temporal #% keyword: sampling #% keyword: vector +#% keyword: time #%end #%option G_OPT_STVDS_INPUT Modified: grass/trunk/vector/v.timestamp/main.c =================================================================== --- grass/trunk/vector/v.timestamp/main.c 2015-09-25 11:08:41 UTC (rev 66329) +++ grass/trunk/vector/v.timestamp/main.c 2015-09-25 13:17:35 UTC (rev 66330) @@ -35,6 +35,7 @@ G_add_keyword(_("vector")); G_add_keyword(_("metadata")); G_add_keyword(_("timestamp")); + G_add_keyword(_("time")); module->label = _("Modifies a timestamp for a vector map."); module->description = _("Print/add/remove a timestamp for a vector map."); From svn_grass at osgeo.org Fri Sep 25 06:19:53 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Fri, 25 Sep 2015 06:19:53 -0700 Subject: [GRASS-SVN] r66331 - in grass/branches/releasebranch_7_0: raster/r.timestamp raster3d/r3.timestamp temporal/t.create temporal/t.info temporal/t.list temporal/t.merge temporal/t.rast.accdetect temporal/t.rast.accumulate temporal/t.rast.aggregate temporal/t.rast.aggregate.ds temporal/t.rast.algebra temporal/t.rast.colors temporal/t.rast.export temporal/t.rast.extract temporal/t.rast.gapfill temporal/t.rast.import temporal/t.rast.list temporal/t.rast.mapcalc temporal/t.rast.neighbors temporal/t.rast.out.vtk temporal/t.rast.series temporal/t.rast.to.rast3 temporal/t.rast.univar temporal/t.rast3d.algebra temporal/t.rast3d.extract temporal/t.rast3d.list temporal/t.rast3d.mapcalc temporal/t.rast3d.univar temporal/t.register temporal/t.remove temporal/t.rename temporal/t.sample temporal/t.select temporal/t.shift temporal/t.snap temporal/t.support temporal/t.topology temporal/t.unregister temporal/t.vect.algebra temporal/t.vect.db.select temporal/t.vect.export temporal/t.vect.extract temporal/t. vect.import temporal/t.vect.list temporal/t.vect.observe.strds temporal/t.vect.univar temporal/t.vect.what.strds vector/v.timestamp Message-ID: <20150925131953.2F788390112@trac.osgeo.org> Author: neteler Date: 2015-09-25 06:19:52 -0700 (Fri, 25 Sep 2015) New Revision: 66331 Modified: grass/branches/releasebranch_7_0/raster/r.timestamp/main.c grass/branches/releasebranch_7_0/raster3d/r3.timestamp/main.c grass/branches/releasebranch_7_0/temporal/t.create/t.create.py grass/branches/releasebranch_7_0/temporal/t.info/t.info.py grass/branches/releasebranch_7_0/temporal/t.list/t.list.py grass/branches/releasebranch_7_0/temporal/t.merge/t.merge.py grass/branches/releasebranch_7_0/temporal/t.rast.accdetect/t.rast.accdetect.py grass/branches/releasebranch_7_0/temporal/t.rast.accumulate/t.rast.accumulate.py grass/branches/releasebranch_7_0/temporal/t.rast.aggregate.ds/t.rast.aggregate.ds.py grass/branches/releasebranch_7_0/temporal/t.rast.aggregate/t.rast.aggregate.py grass/branches/releasebranch_7_0/temporal/t.rast.algebra/t.rast.algebra.py grass/branches/releasebranch_7_0/temporal/t.rast.colors/t.rast.colors.py grass/branches/releasebranch_7_0/temporal/t.rast.export/t.rast.export.py grass/branches/releasebranch_7_0/temporal/t.rast.extract/t.rast.extract.py grass/branches/releasebranch_7_0/temporal/t.rast.gapfill/t.rast.gapfill.py grass/branches/releasebranch_7_0/temporal/t.rast.import/t.rast.import.py grass/branches/releasebranch_7_0/temporal/t.rast.list/t.rast.list.py grass/branches/releasebranch_7_0/temporal/t.rast.mapcalc/t.rast.mapcalc.py grass/branches/releasebranch_7_0/temporal/t.rast.neighbors/t.rast.neighbors.py grass/branches/releasebranch_7_0/temporal/t.rast.out.vtk/t.rast.out.vtk.py grass/branches/releasebranch_7_0/temporal/t.rast.series/t.rast.series.py grass/branches/releasebranch_7_0/temporal/t.rast.to.rast3/t.rast.to.rast3.py grass/branches/releasebranch_7_0/temporal/t.rast.univar/t.rast.univar.py grass/branches/releasebranch_7_0/temporal/t.rast3d.algebra/t.rast3d.algebra.py grass/branches/releasebranch_7_0/temporal/t.rast3d.extract/t.rast3d.extract.py grass/branches/releasebranch_7_0/temporal/t.rast3d.list/t.rast3d.list.py grass/branches/releasebranch_7_0/temporal/t.rast3d.mapcalc/t.rast3d.mapcalc.py grass/branches/releasebranch_7_0/temporal/t.rast3d.univar/t.rast3d.univar.py grass/branches/releasebranch_7_0/temporal/t.register/t.register.py grass/branches/releasebranch_7_0/temporal/t.remove/t.remove.py grass/branches/releasebranch_7_0/temporal/t.rename/t.rename.py grass/branches/releasebranch_7_0/temporal/t.sample/t.sample.py grass/branches/releasebranch_7_0/temporal/t.select/t.select.py grass/branches/releasebranch_7_0/temporal/t.shift/t.shift.py grass/branches/releasebranch_7_0/temporal/t.snap/t.snap.py grass/branches/releasebranch_7_0/temporal/t.support/t.support.py grass/branches/releasebranch_7_0/temporal/t.topology/t.topology.py grass/branches/releasebranch_7_0/temporal/t.unregister/t.unregister.py grass/branches/releasebranch_7_0/temporal/t.vect.algebra/t.vect.algebra.py grass/branches/releasebranch_7_0/temporal/t.vect.db.select/t.vect.db.select.py grass/branches/releasebranch_7_0/temporal/t.vect.export/t.vect.export.py grass/branches/releasebranch_7_0/temporal/t.vect.extract/t.vect.extract.py grass/branches/releasebranch_7_0/temporal/t.vect.import/t.vect.import.py grass/branches/releasebranch_7_0/temporal/t.vect.list/t.vect.list.py grass/branches/releasebranch_7_0/temporal/t.vect.observe.strds/t.vect.observe.strds.py grass/branches/releasebranch_7_0/temporal/t.vect.univar/t.vect.univar.py grass/branches/releasebranch_7_0/temporal/t.vect.what.strds/t.vect.what.strds.py grass/branches/releasebranch_7_0/vector/v.timestamp/main.c Log: temporal: add 'time' keyword for index (trunk, r66330) Modified: grass/branches/releasebranch_7_0/raster/r.timestamp/main.c =================================================================== --- grass/branches/releasebranch_7_0/raster/r.timestamp/main.c 2015-09-25 13:17:35 UTC (rev 66330) +++ grass/branches/releasebranch_7_0/raster/r.timestamp/main.c 2015-09-25 13:19:52 UTC (rev 66331) @@ -35,6 +35,7 @@ G_add_keyword(_("raster")); G_add_keyword(_("metadata")); G_add_keyword(_("timestamp")); + G_add_keyword(_("time")); module->label = _("Modifies a timestamp for a raster map."); module->description = _("Print/add/remove a timestamp for a raster map."); Modified: grass/branches/releasebranch_7_0/raster3d/r3.timestamp/main.c =================================================================== --- grass/branches/releasebranch_7_0/raster3d/r3.timestamp/main.c 2015-09-25 13:17:35 UTC (rev 66330) +++ grass/branches/releasebranch_7_0/raster3d/r3.timestamp/main.c 2015-09-25 13:19:52 UTC (rev 66331) @@ -42,6 +42,7 @@ module = G_define_module(); G_add_keyword(_("raster3d")); G_add_keyword(_("timestamp")); + G_add_keyword(_("time")); G_add_keyword(_("voxel")); module->description = _("Print/add/remove a timestamp for a 3D raster map"); Modified: grass/branches/releasebranch_7_0/temporal/t.create/t.create.py =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.create/t.create.py 2015-09-25 13:17:35 UTC (rev 66330) +++ grass/branches/releasebranch_7_0/temporal/t.create/t.create.py 2015-09-25 13:19:52 UTC (rev 66331) @@ -19,6 +19,7 @@ #% keyword: temporal #% keyword: map management #% keyword: create +#% keyword: time #%end #%option G_OPT_STDS_OUTPUT Modified: grass/branches/releasebranch_7_0/temporal/t.info/t.info.py =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.info/t.info.py 2015-09-25 13:17:35 UTC (rev 66330) +++ grass/branches/releasebranch_7_0/temporal/t.info/t.info.py 2015-09-25 13:19:52 UTC (rev 66331) @@ -19,6 +19,7 @@ #% keyword: temporal #% keyword: metadata #% keyword: extent +#% keyword: time #%end #%option G_OPT_STDS_INPUT Modified: grass/branches/releasebranch_7_0/temporal/t.list/t.list.py =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.list/t.list.py 2015-09-25 13:17:35 UTC (rev 66330) +++ grass/branches/releasebranch_7_0/temporal/t.list/t.list.py 2015-09-25 13:19:52 UTC (rev 66331) @@ -19,6 +19,7 @@ #% keyword: temporal #% keyword: map management #% keyword: list +#% keyword: time #%end #%option Modified: grass/branches/releasebranch_7_0/temporal/t.merge/t.merge.py =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.merge/t.merge.py 2015-09-25 13:17:35 UTC (rev 66330) +++ grass/branches/releasebranch_7_0/temporal/t.merge/t.merge.py 2015-09-25 13:19:52 UTC (rev 66331) @@ -18,6 +18,7 @@ #% description: Merges several space time datasets into a single space time dataset. #% keyword: temporal #% keyword: merge +#% keyword: time #%end #%option G_OPT_STDS_INPUTS Modified: grass/branches/releasebranch_7_0/temporal/t.rast.accdetect/t.rast.accdetect.py =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.rast.accdetect/t.rast.accdetect.py 2015-09-25 13:17:35 UTC (rev 66330) +++ grass/branches/releasebranch_7_0/temporal/t.rast.accdetect/t.rast.accdetect.py 2015-09-25 13:19:52 UTC (rev 66331) @@ -19,6 +19,7 @@ #% keyword: temporal #% keyword: accumulation #% keyword: raster +#% keyword: time #%end #%option G_OPT_STRDS_INPUT Modified: grass/branches/releasebranch_7_0/temporal/t.rast.accumulate/t.rast.accumulate.py =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.rast.accumulate/t.rast.accumulate.py 2015-09-25 13:17:35 UTC (rev 66330) +++ grass/branches/releasebranch_7_0/temporal/t.rast.accumulate/t.rast.accumulate.py 2015-09-25 13:19:52 UTC (rev 66331) @@ -19,6 +19,7 @@ #% keyword: temporal #% keyword: accumulation #% keyword: raster +#% keyword: time #%end #%option G_OPT_STRDS_INPUT Modified: grass/branches/releasebranch_7_0/temporal/t.rast.aggregate/t.rast.aggregate.py =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.rast.aggregate/t.rast.aggregate.py 2015-09-25 13:17:35 UTC (rev 66330) +++ grass/branches/releasebranch_7_0/temporal/t.rast.aggregate/t.rast.aggregate.py 2015-09-25 13:19:52 UTC (rev 66331) @@ -19,6 +19,7 @@ #% keyword: temporal #% keyword: aggregation #% keyword: raster +#% keyword: time #%end #%option G_OPT_STRDS_INPUT Modified: grass/branches/releasebranch_7_0/temporal/t.rast.aggregate.ds/t.rast.aggregate.ds.py =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.rast.aggregate.ds/t.rast.aggregate.ds.py 2015-09-25 13:17:35 UTC (rev 66330) +++ grass/branches/releasebranch_7_0/temporal/t.rast.aggregate.ds/t.rast.aggregate.ds.py 2015-09-25 13:19:52 UTC (rev 66331) @@ -19,6 +19,7 @@ #% keyword: temporal #% keyword: aggregation #% keyword: raster +#% keyword: time #%end #%option G_OPT_STRDS_INPUT Modified: grass/branches/releasebranch_7_0/temporal/t.rast.algebra/t.rast.algebra.py =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.rast.algebra/t.rast.algebra.py 2015-09-25 13:17:35 UTC (rev 66330) +++ grass/branches/releasebranch_7_0/temporal/t.rast.algebra/t.rast.algebra.py 2015-09-25 13:19:52 UTC (rev 66331) @@ -21,6 +21,7 @@ #% keyword: temporal #% keyword: algebra #% keyword: raster +#% keyword: time #%end #%option Modified: grass/branches/releasebranch_7_0/temporal/t.rast.colors/t.rast.colors.py =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.rast.colors/t.rast.colors.py 2015-09-25 13:17:35 UTC (rev 66330) +++ grass/branches/releasebranch_7_0/temporal/t.rast.colors/t.rast.colors.py 2015-09-25 13:19:52 UTC (rev 66331) @@ -19,6 +19,7 @@ #% keyword: temporal #% keyword: color table #% keyword: raster +#% keyword: time #%end #%option G_OPT_STRDS_INPUT Modified: grass/branches/releasebranch_7_0/temporal/t.rast.export/t.rast.export.py =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.rast.export/t.rast.export.py 2015-09-25 13:17:35 UTC (rev 66330) +++ grass/branches/releasebranch_7_0/temporal/t.rast.export/t.rast.export.py 2015-09-25 13:19:52 UTC (rev 66331) @@ -19,6 +19,7 @@ #% keyword: temporal #% keyword: export #% keyword: raster +#% keyword: time #%end #%option G_OPT_STRDS_INPUT Modified: grass/branches/releasebranch_7_0/temporal/t.rast.extract/t.rast.extract.py =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.rast.extract/t.rast.extract.py 2015-09-25 13:17:35 UTC (rev 66330) +++ grass/branches/releasebranch_7_0/temporal/t.rast.extract/t.rast.extract.py 2015-09-25 13:19:52 UTC (rev 66331) @@ -19,6 +19,7 @@ #% keyword: temporal #% keyword: extract #% keyword: raster +#% keyword: time #%end #%option G_OPT_STRDS_INPUT Modified: grass/branches/releasebranch_7_0/temporal/t.rast.gapfill/t.rast.gapfill.py =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.rast.gapfill/t.rast.gapfill.py 2015-09-25 13:17:35 UTC (rev 66330) +++ grass/branches/releasebranch_7_0/temporal/t.rast.gapfill/t.rast.gapfill.py 2015-09-25 13:19:52 UTC (rev 66331) @@ -19,6 +19,7 @@ #% keyword: temporal #% keyword: interpolation #% keyword: raster +#% keyword: time #%end #%option G_OPT_STRDS_INPUT Modified: grass/branches/releasebranch_7_0/temporal/t.rast.import/t.rast.import.py =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.rast.import/t.rast.import.py 2015-09-25 13:17:35 UTC (rev 66330) +++ grass/branches/releasebranch_7_0/temporal/t.rast.import/t.rast.import.py 2015-09-25 13:19:52 UTC (rev 66331) @@ -19,6 +19,7 @@ #% keyword: temporal #% keyword: import #% keyword: raster +#% keyword: time #%end #%option G_OPT_F_INPUT Modified: grass/branches/releasebranch_7_0/temporal/t.rast.list/t.rast.list.py =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.rast.list/t.rast.list.py 2015-09-25 13:17:35 UTC (rev 66330) +++ grass/branches/releasebranch_7_0/temporal/t.rast.list/t.rast.list.py 2015-09-25 13:19:52 UTC (rev 66331) @@ -20,6 +20,7 @@ #% keyword: map management #% keyword: raster #% keyword: list +#% keyword: time #%end #%option G_OPT_STRDS_INPUT Modified: grass/branches/releasebranch_7_0/temporal/t.rast.mapcalc/t.rast.mapcalc.py =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.rast.mapcalc/t.rast.mapcalc.py 2015-09-25 13:17:35 UTC (rev 66330) +++ grass/branches/releasebranch_7_0/temporal/t.rast.mapcalc/t.rast.mapcalc.py 2015-09-25 13:19:52 UTC (rev 66331) @@ -19,6 +19,7 @@ #% keyword: temporal #% keyword: algebra #% keyword: raster +#% keyword: time #%end #%option G_OPT_STRDS_INPUTS Modified: grass/branches/releasebranch_7_0/temporal/t.rast.neighbors/t.rast.neighbors.py =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.rast.neighbors/t.rast.neighbors.py 2015-09-25 13:17:35 UTC (rev 66330) +++ grass/branches/releasebranch_7_0/temporal/t.rast.neighbors/t.rast.neighbors.py 2015-09-25 13:19:52 UTC (rev 66331) @@ -20,6 +20,7 @@ #% keyword: temporal #% keyword: aggregation #% keyword: raster +#% keyword: time #%end #%option G_OPT_STRDS_INPUT Modified: grass/branches/releasebranch_7_0/temporal/t.rast.out.vtk/t.rast.out.vtk.py =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.rast.out.vtk/t.rast.out.vtk.py 2015-09-25 13:17:35 UTC (rev 66330) +++ grass/branches/releasebranch_7_0/temporal/t.rast.out.vtk/t.rast.out.vtk.py 2015-09-25 13:19:52 UTC (rev 66331) @@ -20,6 +20,7 @@ #% keyword: export #% keyword: raster #% keyword: VTK +#% keyword: time #%end #%option G_OPT_STRDS_INPUT Modified: grass/branches/releasebranch_7_0/temporal/t.rast.series/t.rast.series.py =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.rast.series/t.rast.series.py 2015-09-25 13:17:35 UTC (rev 66330) +++ grass/branches/releasebranch_7_0/temporal/t.rast.series/t.rast.series.py 2015-09-25 13:19:52 UTC (rev 66331) @@ -20,6 +20,7 @@ #% keyword: temporal #% keyword: series #% keyword: raster +#% keyword: time #%end #%option G_OPT_STRDS_INPUT Modified: grass/branches/releasebranch_7_0/temporal/t.rast.to.rast3/t.rast.to.rast3.py =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.rast.to.rast3/t.rast.to.rast3.py 2015-09-25 13:17:35 UTC (rev 66330) +++ grass/branches/releasebranch_7_0/temporal/t.rast.to.rast3/t.rast.to.rast3.py 2015-09-25 13:19:52 UTC (rev 66331) @@ -21,6 +21,7 @@ #% keyword: raster #% keyword: raster3d #% keyword: voxel +#% keyword: time #%end #%option G_OPT_STRDS_INPUT Modified: grass/branches/releasebranch_7_0/temporal/t.rast.univar/t.rast.univar.py =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.rast.univar/t.rast.univar.py 2015-09-25 13:17:35 UTC (rev 66330) +++ grass/branches/releasebranch_7_0/temporal/t.rast.univar/t.rast.univar.py 2015-09-25 13:19:52 UTC (rev 66331) @@ -19,6 +19,7 @@ #% keyword: temporal #% keyword: statistics #% keyword: raster +#% keyword: time #%end #%option G_OPT_STRDS_INPUT Modified: grass/branches/releasebranch_7_0/temporal/t.rast3d.algebra/t.rast3d.algebra.py =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.rast3d.algebra/t.rast3d.algebra.py 2015-09-25 13:17:35 UTC (rev 66330) +++ grass/branches/releasebranch_7_0/temporal/t.rast3d.algebra/t.rast3d.algebra.py 2015-09-25 13:19:52 UTC (rev 66331) @@ -22,6 +22,7 @@ #% keyword: algebra #% keyword: raster3d #% keyword: voxel +#% keyword: time #%end #%option Modified: grass/branches/releasebranch_7_0/temporal/t.rast3d.extract/t.rast3d.extract.py =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.rast3d.extract/t.rast3d.extract.py 2015-09-25 13:17:35 UTC (rev 66330) +++ grass/branches/releasebranch_7_0/temporal/t.rast3d.extract/t.rast3d.extract.py 2015-09-25 13:19:52 UTC (rev 66331) @@ -20,6 +20,7 @@ #% keyword: extract #% keyword: raster3d #% keyword: voxel +#% keyword: time #%end #%option G_OPT_STR3DS_INPUT Modified: grass/branches/releasebranch_7_0/temporal/t.rast3d.list/t.rast3d.list.py =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.rast3d.list/t.rast3d.list.py 2015-09-25 13:17:35 UTC (rev 66330) +++ grass/branches/releasebranch_7_0/temporal/t.rast3d.list/t.rast3d.list.py 2015-09-25 13:19:52 UTC (rev 66331) @@ -21,6 +21,7 @@ #% keyword: list #% keyword: raster3d #% keyword: voxel +#% keyword: time #%end #%option G_OPT_STR3DS_INPUT Modified: grass/branches/releasebranch_7_0/temporal/t.rast3d.mapcalc/t.rast3d.mapcalc.py =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.rast3d.mapcalc/t.rast3d.mapcalc.py 2015-09-25 13:17:35 UTC (rev 66330) +++ grass/branches/releasebranch_7_0/temporal/t.rast3d.mapcalc/t.rast3d.mapcalc.py 2015-09-25 13:19:52 UTC (rev 66331) @@ -20,6 +20,7 @@ #% keyword: algebra #% keyword: raster3d #% keyword: voxel +#% keyword: time #%end #%option G_OPT_STR3DS_INPUTS Modified: grass/branches/releasebranch_7_0/temporal/t.rast3d.univar/t.rast3d.univar.py =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.rast3d.univar/t.rast3d.univar.py 2015-09-25 13:17:35 UTC (rev 66330) +++ grass/branches/releasebranch_7_0/temporal/t.rast3d.univar/t.rast3d.univar.py 2015-09-25 13:19:52 UTC (rev 66331) @@ -21,6 +21,7 @@ #% keyword: statistics #% keyword: raster3d #% keyword: voxel +#% keyword: time #%end #%option G_OPT_STR3DS_INPUT Modified: grass/branches/releasebranch_7_0/temporal/t.register/t.register.py =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.register/t.register.py 2015-09-25 13:17:35 UTC (rev 66330) +++ grass/branches/releasebranch_7_0/temporal/t.register/t.register.py 2015-09-25 13:19:52 UTC (rev 66331) @@ -19,6 +19,7 @@ #% keyword: temporal #% keyword: map management #% keyword: register +#% keyword: time #% overwrite: yes #%end Modified: grass/branches/releasebranch_7_0/temporal/t.remove/t.remove.py =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.remove/t.remove.py 2015-09-25 13:17:35 UTC (rev 66330) +++ grass/branches/releasebranch_7_0/temporal/t.remove/t.remove.py 2015-09-25 13:19:52 UTC (rev 66331) @@ -19,6 +19,7 @@ #% keyword: temporal #% keyword: map management #% keyword: remove +#% keyword: time #%end #%option G_OPT_STDS_INPUTS Modified: grass/branches/releasebranch_7_0/temporal/t.rename/t.rename.py =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.rename/t.rename.py 2015-09-25 13:17:35 UTC (rev 66330) +++ grass/branches/releasebranch_7_0/temporal/t.rename/t.rename.py 2015-09-25 13:19:52 UTC (rev 66331) @@ -19,6 +19,7 @@ #% keyword: temporal #% keyword: map management #% keyword: rename +#% keyword: time #%end #%option G_OPT_STDS_INPUT Modified: grass/branches/releasebranch_7_0/temporal/t.sample/t.sample.py =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.sample/t.sample.py 2015-09-25 13:17:35 UTC (rev 66330) +++ grass/branches/releasebranch_7_0/temporal/t.sample/t.sample.py 2015-09-25 13:19:52 UTC (rev 66331) @@ -18,6 +18,7 @@ #% description: Samples the input space time dataset(s) with a sample space time dataset and print the result to stdout. #% keyword: temporal #% keyword: sampling +#% keyword: time #%end #%option G_OPT_STDS_INPUTS Modified: grass/branches/releasebranch_7_0/temporal/t.select/t.select.py =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.select/t.select.py 2015-09-25 13:17:35 UTC (rev 66330) +++ grass/branches/releasebranch_7_0/temporal/t.select/t.select.py 2015-09-25 13:19:52 UTC (rev 66331) @@ -19,6 +19,7 @@ #% description: Select maps from space time datasets by topological relationships to other space time datasets using temporal algebra. #% keyword: temporal #% keyword: metadata +#% keyword: time #%end #%option G_OPT_STDS_TYPE Modified: grass/branches/releasebranch_7_0/temporal/t.shift/t.shift.py =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.shift/t.shift.py 2015-09-25 13:17:35 UTC (rev 66330) +++ grass/branches/releasebranch_7_0/temporal/t.shift/t.shift.py 2015-09-25 13:19:52 UTC (rev 66331) @@ -18,6 +18,7 @@ #% description: Shifts temporally the maps of a space time dataset. #% keyword: temporal #% keyword: shift +#% keyword: time #%end #%option G_OPT_STDS_INPUT Modified: grass/branches/releasebranch_7_0/temporal/t.snap/t.snap.py =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.snap/t.snap.py 2015-09-25 13:17:35 UTC (rev 66330) +++ grass/branches/releasebranch_7_0/temporal/t.snap/t.snap.py 2015-09-25 13:19:52 UTC (rev 66331) @@ -18,6 +18,7 @@ #% description: Snaps temporally the maps of a space time dataset. #% keyword: temporal #% keyword: snapping +#% keyword: time #%end #%option G_OPT_STDS_INPUT Modified: grass/branches/releasebranch_7_0/temporal/t.support/t.support.py =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.support/t.support.py 2015-09-25 13:17:35 UTC (rev 66330) +++ grass/branches/releasebranch_7_0/temporal/t.support/t.support.py 2015-09-25 13:19:52 UTC (rev 66331) @@ -18,6 +18,7 @@ #% description: Modifies the metadata of a space time dataset. #% keyword: temporal #% keyword: metadata +#% keyword: time #%end #%option G_OPT_STDS_INPUT Modified: grass/branches/releasebranch_7_0/temporal/t.topology/t.topology.py =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.topology/t.topology.py 2015-09-25 13:17:35 UTC (rev 66330) +++ grass/branches/releasebranch_7_0/temporal/t.topology/t.topology.py 2015-09-25 13:19:52 UTC (rev 66331) @@ -18,6 +18,7 @@ #% description: Lists temporal topology of a space time dataset. #% keyword: temporal #% keyword: topology +#% keyword: time #%end #%option G_OPT_STDS_INPUT Modified: grass/branches/releasebranch_7_0/temporal/t.unregister/t.unregister.py =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.unregister/t.unregister.py 2015-09-25 13:17:35 UTC (rev 66330) +++ grass/branches/releasebranch_7_0/temporal/t.unregister/t.unregister.py 2015-09-25 13:19:52 UTC (rev 66331) @@ -19,6 +19,7 @@ #% keyword: temporal #% keyword: map management #% keyword: unregister +#% keyword: time #%end #%option G_OPT_STDS_INPUT Modified: grass/branches/releasebranch_7_0/temporal/t.vect.algebra/t.vect.algebra.py =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.vect.algebra/t.vect.algebra.py 2015-09-25 13:17:35 UTC (rev 66330) +++ grass/branches/releasebranch_7_0/temporal/t.vect.algebra/t.vect.algebra.py 2015-09-25 13:19:52 UTC (rev 66331) @@ -21,6 +21,7 @@ #% keyword: temporal #% keyword: algebra #% keyword: vector +#% keyword: time #%end #%option Modified: grass/branches/releasebranch_7_0/temporal/t.vect.db.select/t.vect.db.select.py =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.vect.db.select/t.vect.db.select.py 2015-09-25 13:17:35 UTC (rev 66330) +++ grass/branches/releasebranch_7_0/temporal/t.vect.db.select/t.vect.db.select.py 2015-09-25 13:19:52 UTC (rev 66331) @@ -21,6 +21,7 @@ #% keyword: vector #% keyword: database #% keyword: select +#% keyword: time #%end #%option G_OPT_STVDS_INPUT Modified: grass/branches/releasebranch_7_0/temporal/t.vect.export/t.vect.export.py =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.vect.export/t.vect.export.py 2015-09-25 13:17:35 UTC (rev 66330) +++ grass/branches/releasebranch_7_0/temporal/t.vect.export/t.vect.export.py 2015-09-25 13:19:52 UTC (rev 66331) @@ -19,6 +19,7 @@ #% keyword: temporal #% keyword: export #% keyword: vector +#% keyword: time #%end #%option G_OPT_STVDS_INPUT Modified: grass/branches/releasebranch_7_0/temporal/t.vect.extract/t.vect.extract.py =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.vect.extract/t.vect.extract.py 2015-09-25 13:17:35 UTC (rev 66330) +++ grass/branches/releasebranch_7_0/temporal/t.vect.extract/t.vect.extract.py 2015-09-25 13:19:52 UTC (rev 66331) @@ -19,6 +19,7 @@ #% keyword: temporal #% keyword: extract #% keyword: vector +#% keyword: time #%end #%option G_OPT_STVDS_INPUT Modified: grass/branches/releasebranch_7_0/temporal/t.vect.import/t.vect.import.py =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.vect.import/t.vect.import.py 2015-09-25 13:17:35 UTC (rev 66330) +++ grass/branches/releasebranch_7_0/temporal/t.vect.import/t.vect.import.py 2015-09-25 13:19:52 UTC (rev 66331) @@ -19,6 +19,7 @@ #% keyword: temporal #% keyword: import #% keyword: vector +#% keyword: time #%end #%option G_OPT_F_INPUT Modified: grass/branches/releasebranch_7_0/temporal/t.vect.list/t.vect.list.py =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.vect.list/t.vect.list.py 2015-09-25 13:17:35 UTC (rev 66330) +++ grass/branches/releasebranch_7_0/temporal/t.vect.list/t.vect.list.py 2015-09-25 13:19:52 UTC (rev 66331) @@ -20,6 +20,7 @@ #% keyword: map management #% keyword: vector #% keyword: list +#% keyword: time #%end #%option G_OPT_STVDS_INPUT Modified: grass/branches/releasebranch_7_0/temporal/t.vect.observe.strds/t.vect.observe.strds.py =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.vect.observe.strds/t.vect.observe.strds.py 2015-09-25 13:17:35 UTC (rev 66330) +++ grass/branches/releasebranch_7_0/temporal/t.vect.observe.strds/t.vect.observe.strds.py 2015-09-25 13:19:52 UTC (rev 66331) @@ -19,6 +19,7 @@ #% keyword: temporal #% keyword: sampling #% keyword: vector +#% keyword: time #%end #%option G_OPT_V_INPUT Modified: grass/branches/releasebranch_7_0/temporal/t.vect.univar/t.vect.univar.py =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.vect.univar/t.vect.univar.py 2015-09-25 13:17:35 UTC (rev 66330) +++ grass/branches/releasebranch_7_0/temporal/t.vect.univar/t.vect.univar.py 2015-09-25 13:19:52 UTC (rev 66331) @@ -19,6 +19,7 @@ #% keyword: temporal #% keyword: statistics #% keyword: vector +#% keyword: time #%end #%option G_OPT_STVDS_INPUT Modified: grass/branches/releasebranch_7_0/temporal/t.vect.what.strds/t.vect.what.strds.py =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.vect.what.strds/t.vect.what.strds.py 2015-09-25 13:17:35 UTC (rev 66330) +++ grass/branches/releasebranch_7_0/temporal/t.vect.what.strds/t.vect.what.strds.py 2015-09-25 13:19:52 UTC (rev 66331) @@ -19,6 +19,7 @@ #% keyword: temporal #% keyword: sampling #% keyword: vector +#% keyword: time #%end #%option G_OPT_STVDS_INPUT Modified: grass/branches/releasebranch_7_0/vector/v.timestamp/main.c =================================================================== --- grass/branches/releasebranch_7_0/vector/v.timestamp/main.c 2015-09-25 13:17:35 UTC (rev 66330) +++ grass/branches/releasebranch_7_0/vector/v.timestamp/main.c 2015-09-25 13:19:52 UTC (rev 66331) @@ -35,6 +35,7 @@ G_add_keyword(_("vector")); G_add_keyword(_("metadata")); G_add_keyword(_("timestamp")); + G_add_keyword(_("time")); module->label = _("Modifies a timestamp for a vector map."); module->description = _("Print/add/remove a timestamp for a vector map."); From svn_grass at osgeo.org Fri Sep 25 06:48:44 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Fri, 25 Sep 2015 06:48:44 -0700 Subject: [GRASS-SVN] r66332 - in grass/trunk: gui/wxpython/vnet lib/python/pygrass/raster lib/python/temporal locale/po scripts/v.what.strds vector/v.net Message-ID: <20150925134847.6A6303900B4@trac.osgeo.org> Author: neteler Date: 2015-09-25 06:48:44 -0700 (Fri, 25 Sep 2015) New Revision: 66332 Modified: grass/trunk/gui/wxpython/vnet/dialogs.py grass/trunk/lib/python/pygrass/raster/__init__.py grass/trunk/lib/python/temporal/abstract_space_time_dataset.py grass/trunk/lib/python/temporal/core.py grass/trunk/lib/python/temporal/space_time_datasets.py grass/trunk/locale/po/grasslibs_ar.po grass/trunk/locale/po/grasslibs_cs.po grass/trunk/locale/po/grasslibs_de.po grass/trunk/locale/po/grasslibs_el.po grass/trunk/locale/po/grasslibs_es.po grass/trunk/locale/po/grasslibs_fi.po grass/trunk/locale/po/grasslibs_fr.po grass/trunk/locale/po/grasslibs_it.po grass/trunk/locale/po/grasslibs_ja.po grass/trunk/locale/po/grasslibs_ko.po grass/trunk/locale/po/grasslibs_lv.po grass/trunk/locale/po/grasslibs_ml.po grass/trunk/locale/po/grasslibs_pl.po grass/trunk/locale/po/grasslibs_pt.po grass/trunk/locale/po/grasslibs_pt_br.po grass/trunk/locale/po/grasslibs_ro.po grass/trunk/locale/po/grasslibs_ru.po grass/trunk/locale/po/grasslibs_sl.po grass/trunk/locale/po/grasslibs_th.po grass/trunk/locale/po/grasslibs_tr.po grass/trunk/locale/po/grasslibs_vi.po grass/trunk/locale/po/grasslibs_zh.po grass/trunk/locale/po/grassmods_ar.po grass/trunk/locale/po/grassmods_cs.po grass/trunk/locale/po/grassmods_de.po grass/trunk/locale/po/grassmods_el.po grass/trunk/locale/po/grassmods_es.po grass/trunk/locale/po/grassmods_fi.po grass/trunk/locale/po/grassmods_fr.po grass/trunk/locale/po/grassmods_it.po grass/trunk/locale/po/grassmods_ja.po grass/trunk/locale/po/grassmods_ko.po grass/trunk/locale/po/grassmods_lv.po grass/trunk/locale/po/grassmods_pl.po grass/trunk/locale/po/grassmods_pt.po grass/trunk/locale/po/grassmods_pt_br.po grass/trunk/locale/po/grassmods_ro.po grass/trunk/locale/po/grassmods_ru.po grass/trunk/locale/po/grassmods_sl.po grass/trunk/locale/po/grassmods_th.po grass/trunk/locale/po/grassmods_tr.po grass/trunk/locale/po/grassmods_vi.po grass/trunk/locale/po/grassmods_zh.po grass/trunk/locale/po/grasswxpy_cs.po grass/trunk/locale/po/grasswxpy_de.po grass/trunk/locale/po/grasswxpy_el.po grass/trunk/locale/po/grasswxpy_es.po grass/trunk/locale/po/grasswxpy_fi.po grass/trunk/locale/po/grasswxpy_fr.po grass/trunk/locale/po/grasswxpy_id.po grass/trunk/locale/po/grasswxpy_it.po grass/trunk/locale/po/grasswxpy_ja.po grass/trunk/locale/po/grasswxpy_ko.po grass/trunk/locale/po/grasswxpy_lv.po grass/trunk/locale/po/grasswxpy_ml.po grass/trunk/locale/po/grasswxpy_pl.po grass/trunk/locale/po/grasswxpy_pt.po grass/trunk/locale/po/grasswxpy_pt_br.po grass/trunk/locale/po/grasswxpy_ro.po grass/trunk/locale/po/grasswxpy_ru.po grass/trunk/locale/po/grasswxpy_th.po grass/trunk/locale/po/grasswxpy_tr.po grass/trunk/locale/po/grasswxpy_vi.po grass/trunk/locale/po/grasswxpy_zh.po grass/trunk/scripts/v.what.strds/v.what.strds.py grass/trunk/vector/v.net/turntable.c Log: fix msg grammar Modified: grass/trunk/gui/wxpython/vnet/dialogs.py =================================================================== --- grass/trunk/gui/wxpython/vnet/dialogs.py 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/gui/wxpython/vnet/dialogs.py 2015-09-25 13:48:44 UTC (rev 66332) @@ -795,7 +795,7 @@ if "input" in err_params: GMessage(parent = self, - message = _("Input vector map does not exists.")) + message = _("Input vector map does not exist.")) if ["turn_layer", "turn_cat_layer"] in err_params: GMessage(parent = self, message = "Please choose existing turntable layer and unique categories layer in Parameters tab.") Modified: grass/trunk/lib/python/pygrass/raster/__init__.py =================================================================== --- grass/trunk/lib/python/pygrass/raster/__init__.py 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/lib/python/pygrass/raster/__init__.py 2015-09-25 13:48:44 UTC (rev 66332) @@ -558,7 +558,7 @@ self._fd = libraster.Rast_open_new(self.name, self._gtype) else: if self.mode == "r": - str_err = _("Raster map <{0}> does not exists") + str_err = _("Raster map <{0}> does not exist") raise OpenError(str_err.format(self.name)) self._gtype = RTYPE[self.mtype]['grass type'] Modified: grass/trunk/lib/python/temporal/abstract_space_time_dataset.py =================================================================== --- grass/trunk/lib/python/temporal/abstract_space_time_dataset.py 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/lib/python/temporal/abstract_space_time_dataset.py 2015-09-25 13:48:44 UTC (rev 66332) @@ -327,7 +327,7 @@ dbif, connected = init_dbif(dbif) - # We need to create the register table if it does not exists + # We need to create the register table if it does not exist stds_register_table = self.get_map_register() # Create the map register table Modified: grass/trunk/lib/python/temporal/core.py =================================================================== --- grass/trunk/lib/python/temporal/core.py 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/lib/python/temporal/core.py 2015-09-25 13:48:44 UTC (rev 66332) @@ -463,7 +463,7 @@ # exists if driver == "sqlite" and not os.path.exists(database): message_interface.warning("Temporal database connection defined as:\n" + \ - database + "\nBut database file does not exists.") + database + "\nBut database file does not exist.") return tgis_mapsets @@ -474,7 +474,7 @@ """This function set the correct database backend from GRASS environmental variables and creates the grass temporal database structure for raster, vector and raster3d maps as well as for the space-time datasets strds, - str3ds and stvds in case it does not exists. + str3ds and stvds in case it does not exist. Several global variables are initiated and the messenger and C-library interface subprocesses are spawned. @@ -759,7 +759,7 @@ msgr.message(_("Creating temporal database: %s" % (str(tgis_database_string)))) if tgis_backend == "sqlite": - # We need to create the sqlite3 database path if it does not exists + # We need to create the sqlite3 database path if it does not exist tgis_dir = os.path.dirname(tgis_database_string) if not os.path.exists(tgis_dir): try: Modified: grass/trunk/lib/python/temporal/space_time_datasets.py =================================================================== --- grass/trunk/lib/python/temporal/space_time_datasets.py 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/lib/python/temporal/space_time_datasets.py 2015-09-25 13:48:44 UTC (rev 66332) @@ -171,7 +171,7 @@ the map will be exported using r.out.bin to a temporary location and assigned to the memmap object that is returned by this function. - In case the raster map does not exists, an empty temporary + In case the raster map does not exist, an empty temporary binary file will be created and assigned to the memap object. You need to call the write function to write the memmap @@ -505,7 +505,7 @@ the map will be exported using r3.out.bin to a temporary location and assigned to the memmap object that is returned by this function. - In case the 3D raster map does not exists, an empty temporary + In case the 3D raster map does not exist, an empty temporary binary file will be created and assigned to the memap object. You need to call the write function to write the memmap Modified: grass/trunk/locale/po/grasslibs_ar.po =================================================================== --- grass/trunk/locale/po/grasslibs_ar.po 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/locale/po/grasslibs_ar.po 2015-09-25 13:48:44 UTC (rev 66332) @@ -3640,7 +3640,7 @@ #: ../lib/python/pygrass/raster/__init__.py:432 #, fuzzy, python-brace-format -msgid "Raster map <{0}> does not exists" +msgid "Raster map <{0}> does not exist" msgstr "'%s' ???? ???????? ?????? ?????? ?????????????? ????????????????" #: ../lib/python/pygrass/raster/abstract.py:274 Modified: grass/trunk/locale/po/grasslibs_cs.po =================================================================== --- grass/trunk/locale/po/grasslibs_cs.po 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/locale/po/grasslibs_cs.po 2015-09-25 13:48:44 UTC (rev 66332) @@ -3692,7 +3692,7 @@ #: ../lib/python/pygrass/raster/__init__.py:432 #, fuzzy, python-brace-format -msgid "Raster map <{0}> does not exists" +msgid "Raster map <{0}> does not exist" msgstr "Tabulka <%s> p??ipojen?? k vektorov?? map?? <%s> neexistuje" #: ../lib/python/pygrass/raster/abstract.py:274 Modified: grass/trunk/locale/po/grasslibs_de.po =================================================================== --- grass/trunk/locale/po/grasslibs_de.po 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/locale/po/grasslibs_de.po 2015-09-25 13:48:44 UTC (rev 66332) @@ -3686,7 +3686,7 @@ #: ../lib/python/pygrass/raster/__init__.py:432 #, fuzzy, python-brace-format -msgid "Raster map <{0}> does not exists" +msgid "Raster map <{0}> does not exist" msgstr "Tabelle <%s> verkn??pft mit Vektorkarte <%s> existiert nicht." #: ../lib/python/pygrass/raster/abstract.py:274 Modified: grass/trunk/locale/po/grasslibs_el.po =================================================================== --- grass/trunk/locale/po/grasslibs_el.po 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/locale/po/grasslibs_el.po 2015-09-25 13:48:44 UTC (rev 66332) @@ -3680,7 +3680,7 @@ #: ../lib/python/pygrass/raster/__init__.py:432 #, fuzzy, python-brace-format -msgid "Raster map <{0}> does not exists" +msgid "Raster map <{0}> does not exist" msgstr "" "?? ?????????????? <%s> ?????? ?????????? ???????????????????????? ???? ?????? ???????????????????????? ?????????? <%s> ?????? " "??????????????" Modified: grass/trunk/locale/po/grasslibs_es.po =================================================================== --- grass/trunk/locale/po/grasslibs_es.po 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/locale/po/grasslibs_es.po 2015-09-25 13:48:44 UTC (rev 66332) @@ -3826,7 +3826,7 @@ # #: ../lib/python/pygrass/raster/__init__.py:432 #, fuzzy, python-brace-format -msgid "Raster map <{0}> does not exists" +msgid "Raster map <{0}> does not exist" msgstr "La tabla <%s> enlazada con el mapa vectorial <%s> no existe." #: ../lib/python/pygrass/raster/abstract.py:274 Modified: grass/trunk/locale/po/grasslibs_fi.po =================================================================== --- grass/trunk/locale/po/grasslibs_fi.po 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/locale/po/grasslibs_fi.po 2015-09-25 13:48:44 UTC (rev 66332) @@ -3503,7 +3503,7 @@ #: ../lib/python/pygrass/raster/__init__.py:432 #, python-brace-format -msgid "Raster map <{0}> does not exists" +msgid "Raster map <{0}> does not exist" msgstr "" #: ../lib/python/pygrass/raster/abstract.py:274 Modified: grass/trunk/locale/po/grasslibs_fr.po =================================================================== --- grass/trunk/locale/po/grasslibs_fr.po 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/locale/po/grasslibs_fr.po 2015-09-25 13:48:44 UTC (rev 66332) @@ -3718,7 +3718,7 @@ #: ../lib/python/pygrass/raster/__init__.py:432 #, fuzzy, python-brace-format -msgid "Raster map <{0}> does not exists" +msgid "Raster map <{0}> does not exist" msgstr "La table <%s> li??e ?? la carte vecteur <%s> n'existe pas " #: ../lib/python/pygrass/raster/abstract.py:274 Modified: grass/trunk/locale/po/grasslibs_it.po =================================================================== --- grass/trunk/locale/po/grasslibs_it.po 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/locale/po/grasslibs_it.po 2015-09-25 13:48:44 UTC (rev 66332) @@ -3696,7 +3696,7 @@ #: ../lib/python/pygrass/raster/__init__.py:432 #, fuzzy, python-brace-format -msgid "Raster map <{0}> does not exists" +msgid "Raster map <{0}> does not exist" msgstr "Tabella <%s> collegata al vettoriale <%s> non esiste" #: ../lib/python/pygrass/raster/abstract.py:274 Modified: grass/trunk/locale/po/grasslibs_ja.po =================================================================== --- grass/trunk/locale/po/grasslibs_ja.po 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/locale/po/grasslibs_ja.po 2015-09-25 13:48:44 UTC (rev 66332) @@ -3685,7 +3685,7 @@ #: ../lib/python/pygrass/raster/__init__.py:432 #, fuzzy, python-brace-format -msgid "Raster map <{0}> does not exists" +msgid "Raster map <{0}> does not exist" msgstr "????????????????????? <%s> ?????????????????????????????? <%s> ?????????????????????" #: ../lib/python/pygrass/raster/abstract.py:274 Modified: grass/trunk/locale/po/grasslibs_ko.po =================================================================== --- grass/trunk/locale/po/grasslibs_ko.po 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/locale/po/grasslibs_ko.po 2015-09-25 13:48:44 UTC (rev 66332) @@ -3599,7 +3599,7 @@ #: ../lib/python/pygrass/raster/__init__.py:432 #, fuzzy, python-brace-format -msgid "Raster map <{0}> does not exists" +msgid "Raster map <{0}> does not exist" msgstr "??????????????? ??? ??? ????????????" #: ../lib/python/pygrass/raster/abstract.py:274 Modified: grass/trunk/locale/po/grasslibs_lv.po =================================================================== --- grass/trunk/locale/po/grasslibs_lv.po 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/locale/po/grasslibs_lv.po 2015-09-25 13:48:44 UTC (rev 66332) @@ -3628,7 +3628,7 @@ #: ../lib/python/pygrass/raster/__init__.py:432 #, fuzzy, python-brace-format -msgid "Raster map <{0}> does not exists" +msgid "Raster map <{0}> does not exist" msgstr "Nevar atv??rt v??sturi vektoram '%s'" #: ../lib/python/pygrass/raster/abstract.py:274 Modified: grass/trunk/locale/po/grasslibs_ml.po =================================================================== --- grass/trunk/locale/po/grasslibs_ml.po 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/locale/po/grasslibs_ml.po 2015-09-25 13:48:44 UTC (rev 66332) @@ -3566,7 +3566,7 @@ #: ../lib/python/pygrass/raster/__init__.py:432 #, fuzzy, python-brace-format -msgid "Raster map <{0}> does not exists" +msgid "Raster map <{0}> does not exist" msgstr "???????????????????????? <%s> ??????????????????????????? \n" #: ../lib/python/pygrass/raster/abstract.py:274 Modified: grass/trunk/locale/po/grasslibs_pl.po =================================================================== --- grass/trunk/locale/po/grasslibs_pl.po 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/locale/po/grasslibs_pl.po 2015-09-25 13:48:44 UTC (rev 66332) @@ -3657,7 +3657,7 @@ #: ../lib/python/pygrass/raster/__init__.py:432 #, fuzzy, python-brace-format -msgid "Raster map <{0}> does not exists" +msgid "Raster map <{0}> does not exist" msgstr "Tabela <%s> pod????czona do mapy wektorowej <%s> nie istnieje" #: ../lib/python/pygrass/raster/abstract.py:274 Modified: grass/trunk/locale/po/grasslibs_pt.po =================================================================== --- grass/trunk/locale/po/grasslibs_pt.po 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/locale/po/grasslibs_pt.po 2015-09-25 13:48:44 UTC (rev 66332) @@ -3678,7 +3678,7 @@ #: ../lib/python/pygrass/raster/__init__.py:432 #, fuzzy, python-brace-format -msgid "Raster map <{0}> does not exists" +msgid "Raster map <{0}> does not exist" msgstr "Imposs?vel abrir topologia para mapa vetorial <%s>" #: ../lib/python/pygrass/raster/abstract.py:274 Modified: grass/trunk/locale/po/grasslibs_pt_br.po =================================================================== --- grass/trunk/locale/po/grasslibs_pt_br.po 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/locale/po/grasslibs_pt_br.po 2015-09-25 13:48:44 UTC (rev 66332) @@ -3663,7 +3663,7 @@ #: ../lib/python/pygrass/raster/__init__.py:432 #, fuzzy, python-brace-format -msgid "Raster map <{0}> does not exists" +msgid "Raster map <{0}> does not exist" msgstr "N?o consegui abrir hist?rico para o vetor %s" #: ../lib/python/pygrass/raster/abstract.py:274 Modified: grass/trunk/locale/po/grasslibs_ro.po =================================================================== --- grass/trunk/locale/po/grasslibs_ro.po 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/locale/po/grasslibs_ro.po 2015-09-25 13:48:44 UTC (rev 66332) @@ -3569,7 +3569,7 @@ #: ../lib/python/pygrass/raster/__init__.py:432 #, fuzzy, python-brace-format -msgid "Raster map <{0}> does not exists" +msgid "Raster map <{0}> does not exist" msgstr "Harta raster <%s> nu este g??sit??" #: ../lib/python/pygrass/raster/abstract.py:274 Modified: grass/trunk/locale/po/grasslibs_ru.po =================================================================== --- grass/trunk/locale/po/grasslibs_ru.po 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/locale/po/grasslibs_ru.po 2015-09-25 13:48:44 UTC (rev 66332) @@ -3694,7 +3694,7 @@ #: ../lib/python/pygrass/raster/__init__.py:432 #, fuzzy, python-brace-format -msgid "Raster map <{0}> does not exists" +msgid "Raster map <{0}> does not exist" msgstr "?????????????? <%s> ?????????????????? ?? ?????????????????? ?????????? <%s> ???? ????????????????????" #: ../lib/python/pygrass/raster/abstract.py:274 Modified: grass/trunk/locale/po/grasslibs_sl.po =================================================================== --- grass/trunk/locale/po/grasslibs_sl.po 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/locale/po/grasslibs_sl.po 2015-09-25 13:48:44 UTC (rev 66332) @@ -3663,7 +3663,7 @@ #: ../lib/python/pygrass/raster/__init__.py:432 #, fuzzy, python-brace-format -msgid "Raster map <{0}> does not exists" +msgid "Raster map <{0}> does not exist" msgstr "Ne morem odpreti datoteke z zgodovino za vektor '%s'" #: ../lib/python/pygrass/raster/abstract.py:274 Modified: grass/trunk/locale/po/grasslibs_th.po =================================================================== --- grass/trunk/locale/po/grasslibs_th.po 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/locale/po/grasslibs_th.po 2015-09-25 13:48:44 UTC (rev 66332) @@ -3682,7 +3682,7 @@ #: ../lib/python/pygrass/raster/__init__.py:432 #, fuzzy, python-brace-format -msgid "Raster map <{0}> does not exists" +msgid "Raster map <{0}> does not exist" msgstr "????????????????????????????????????????????????????????? <%s> ?????????????????????????????????????????????????????????????????????????????? <%s>" #: ../lib/python/pygrass/raster/abstract.py:274 Modified: grass/trunk/locale/po/grasslibs_tr.po =================================================================== --- grass/trunk/locale/po/grasslibs_tr.po 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/locale/po/grasslibs_tr.po 2015-09-25 13:48:44 UTC (rev 66332) @@ -3611,7 +3611,7 @@ #: ../lib/python/pygrass/raster/__init__.py:432 #, fuzzy, python-brace-format -msgid "Raster map <{0}> does not exists" +msgid "Raster map <{0}> does not exist" msgstr "<%s> raster haritas?? bo??" #: ../lib/python/pygrass/raster/abstract.py:274 Modified: grass/trunk/locale/po/grasslibs_vi.po =================================================================== --- grass/trunk/locale/po/grasslibs_vi.po 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/locale/po/grasslibs_vi.po 2015-09-25 13:48:44 UTC (rev 66332) @@ -3684,7 +3684,7 @@ #: ../lib/python/pygrass/raster/__init__.py:432 #, fuzzy, python-brace-format -msgid "Raster map <{0}> does not exists" +msgid "Raster map <{0}> does not exist" msgstr "B???ng <%s> ???????c li??n k???t v??o b???n ????? vec-t?? <%s> kh??ng t???n t???i" #: ../lib/python/pygrass/raster/abstract.py:274 Modified: grass/trunk/locale/po/grasslibs_zh.po =================================================================== --- grass/trunk/locale/po/grasslibs_zh.po 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/locale/po/grasslibs_zh.po 2015-09-25 13:48:44 UTC (rev 66332) @@ -3680,7 +3680,7 @@ #: ../lib/python/pygrass/raster/__init__.py:432 #, fuzzy, python-brace-format -msgid "Raster map <{0}> does not exists" +msgid "Raster map <{0}> does not exist" msgstr "??????????????????'%s'???????????????" #: ../lib/python/pygrass/raster/abstract.py:274 Modified: grass/trunk/locale/po/grassmods_ar.po =================================================================== --- grass/trunk/locale/po/grassmods_ar.po 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/locale/po/grassmods_ar.po 2015-09-25 13:48:44 UTC (rev 66332) @@ -10644,7 +10644,7 @@ #: ../vector/v.net/turntable.c:670 #, fuzzy, c-format -msgid "Arc layer <%s> does not exists in map <%s>." +msgid "Arc layer <%s> does not exist in map <%s>." msgstr "?????????????? ?????????????????? ?????????????? ?????????? ??????????" #: ../vector/v.net/turntable.c:675 Modified: grass/trunk/locale/po/grassmods_cs.po =================================================================== --- grass/trunk/locale/po/grassmods_cs.po 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/locale/po/grassmods_cs.po 2015-09-25 13:48:44 UTC (rev 66332) @@ -10620,7 +10620,7 @@ #: ../vector/v.net/turntable.c:670 #, fuzzy, c-format -msgid "Arc layer <%s> does not exists in map <%s>." +msgid "Arc layer <%s> does not exist in map <%s>." msgstr "Tabulka <%s> v datab??zi <%s> neexistuje" #: ../vector/v.net/turntable.c:675 Modified: grass/trunk/locale/po/grassmods_de.po =================================================================== --- grass/trunk/locale/po/grassmods_de.po 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/locale/po/grassmods_de.po 2015-09-25 13:48:44 UTC (rev 66332) @@ -10557,7 +10557,7 @@ #: ../vector/v.net/turntable.c:670 #, fuzzy, c-format -msgid "Arc layer <%s> does not exists in map <%s>." +msgid "Arc layer <%s> does not exist in map <%s>." msgstr "Die Tabelle <%s> existiert nicht in der Datenbank <%s>." #: ../vector/v.net/turntable.c:675 Modified: grass/trunk/locale/po/grassmods_el.po =================================================================== --- grass/trunk/locale/po/grassmods_el.po 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/locale/po/grassmods_el.po 2015-09-25 13:48:44 UTC (rev 66332) @@ -10208,7 +10208,7 @@ #: ../vector/v.net/turntable.c:670 #, fuzzy, c-format -msgid "Arc layer <%s> does not exists in map <%s>." +msgid "Arc layer <%s> does not exist in map <%s>." msgstr "?? ???????????? raster <%s> ?????? ??????????????" #: ../vector/v.net/turntable.c:675 Modified: grass/trunk/locale/po/grassmods_es.po =================================================================== --- grass/trunk/locale/po/grassmods_es.po 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/locale/po/grassmods_es.po 2015-09-25 13:48:44 UTC (rev 66332) @@ -10632,7 +10632,7 @@ #: ../vector/v.net/turntable.c:670 #, fuzzy, c-format -msgid "Arc layer <%s> does not exists in map <%s>." +msgid "Arc layer <%s> does not exist in map <%s>." msgstr "La tabla <%s> no existe en la base de datos <%s>" #: ../vector/v.net/turntable.c:675 Modified: grass/trunk/locale/po/grassmods_fi.po =================================================================== --- grass/trunk/locale/po/grassmods_fi.po 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/locale/po/grassmods_fi.po 2015-09-25 13:48:44 UTC (rev 66332) @@ -9805,7 +9805,7 @@ #: ../vector/v.net/turntable.c:670 #, c-format -msgid "Arc layer <%s> does not exists in map <%s>." +msgid "Arc layer <%s> does not exist in map <%s>." msgstr "" #: ../vector/v.net/turntable.c:675 Modified: grass/trunk/locale/po/grassmods_fr.po =================================================================== --- grass/trunk/locale/po/grassmods_fr.po 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/locale/po/grassmods_fr.po 2015-09-25 13:48:44 UTC (rev 66332) @@ -11082,7 +11082,7 @@ #: ../vector/v.net/turntable.c:670 #, fuzzy, c-format -msgid "Arc layer <%s> does not exists in map <%s>." +msgid "Arc layer <%s> does not exist in map <%s>." msgstr "La table <%s> n'existe pas dans la base de donn??es <%s>" #: ../vector/v.net/turntable.c:675 Modified: grass/trunk/locale/po/grassmods_it.po =================================================================== --- grass/trunk/locale/po/grassmods_it.po 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/locale/po/grassmods_it.po 2015-09-25 13:48:44 UTC (rev 66332) @@ -10488,7 +10488,7 @@ #: ../vector/v.net/turntable.c:670 #, fuzzy, c-format -msgid "Arc layer <%s> does not exists in map <%s>." +msgid "Arc layer <%s> does not exist in map <%s>." msgstr "La tabella <%s> non esiste nel database <%s>" #: ../vector/v.net/turntable.c:675 Modified: grass/trunk/locale/po/grassmods_ja.po =================================================================== --- grass/trunk/locale/po/grassmods_ja.po 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/locale/po/grassmods_ja.po 2015-09-25 13:48:44 UTC (rev 66332) @@ -10503,7 +10503,7 @@ #: ../vector/v.net/turntable.c:670 #, fuzzy, c-format -msgid "Arc layer <%s> does not exists in map <%s>." +msgid "Arc layer <%s> does not exist in map <%s>." msgstr "???????????? <%s> ????????????????????? <%s> ?????????????????????" #: ../vector/v.net/turntable.c:675 Modified: grass/trunk/locale/po/grassmods_ko.po =================================================================== --- grass/trunk/locale/po/grassmods_ko.po 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/locale/po/grassmods_ko.po 2015-09-25 13:48:44 UTC (rev 66332) @@ -10266,7 +10266,7 @@ #: ../vector/v.net/turntable.c:670 #, fuzzy, c-format -msgid "Arc layer <%s> does not exists in map <%s>." +msgid "Arc layer <%s> does not exist in map <%s>." msgstr "????????? ????????????" #: ../vector/v.net/turntable.c:675 Modified: grass/trunk/locale/po/grassmods_lv.po =================================================================== --- grass/trunk/locale/po/grassmods_lv.po 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/locale/po/grassmods_lv.po 2015-09-25 13:48:44 UTC (rev 66332) @@ -10625,7 +10625,7 @@ #: ../vector/v.net/turntable.c:670 #, fuzzy, c-format -msgid "Arc layer <%s> does not exists in map <%s>." +msgid "Arc layer <%s> does not exist in map <%s>." msgstr "P??rkod??t rastra kartes." #: ../vector/v.net/turntable.c:675 Modified: grass/trunk/locale/po/grassmods_pl.po =================================================================== --- grass/trunk/locale/po/grassmods_pl.po 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/locale/po/grassmods_pl.po 2015-09-25 13:48:44 UTC (rev 66332) @@ -10530,7 +10530,7 @@ # kolejno???? %s ma chyba znaczenie -> zmiana wypacza sens #: ../vector/v.net/turntable.c:670 #, fuzzy, c-format -msgid "Arc layer <%s> does not exists in map <%s>." +msgid "Arc layer <%s> does not exist in map <%s>." msgstr "Tabela <%s> nie istnieje w bazie danych <%s>" #: ../vector/v.net/turntable.c:675 Modified: grass/trunk/locale/po/grassmods_pt.po =================================================================== --- grass/trunk/locale/po/grassmods_pt.po 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/locale/po/grassmods_pt.po 2015-09-25 13:48:44 UTC (rev 66332) @@ -10761,7 +10761,7 @@ #: ../vector/v.net/turntable.c:670 #, fuzzy, c-format -msgid "Arc layer <%s> does not exists in map <%s>." +msgid "Arc layer <%s> does not exist in map <%s>." msgstr "Tabela <%s> n?o existe no banco de dados <%s>" #: ../vector/v.net/turntable.c:675 Modified: grass/trunk/locale/po/grassmods_pt_br.po =================================================================== --- grass/trunk/locale/po/grassmods_pt_br.po 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/locale/po/grassmods_pt_br.po 2015-09-25 13:48:44 UTC (rev 66332) @@ -10757,7 +10757,7 @@ #: ../vector/v.net/turntable.c:670 #, fuzzy, c-format -msgid "Arc layer <%s> does not exists in map <%s>." +msgid "Arc layer <%s> does not exist in map <%s>." msgstr "Tabela <%s> n?o existe no banco de dados <%s>" #: ../vector/v.net/turntable.c:675 Modified: grass/trunk/locale/po/grassmods_ro.po =================================================================== --- grass/trunk/locale/po/grassmods_ro.po 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/locale/po/grassmods_ro.po 2015-09-25 13:48:44 UTC (rev 66332) @@ -9902,7 +9902,7 @@ #: ../vector/v.net/turntable.c:670 #, fuzzy, c-format -msgid "Arc layer <%s> does not exists in map <%s>." +msgid "Arc layer <%s> does not exist in map <%s>." msgstr "<%s> deja exist?? ??n mapset <%s>" #: ../vector/v.net/turntable.c:675 Modified: grass/trunk/locale/po/grassmods_ru.po =================================================================== --- grass/trunk/locale/po/grassmods_ru.po 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/locale/po/grassmods_ru.po 2015-09-25 13:48:44 UTC (rev 66332) @@ -10624,7 +10624,7 @@ #: ../vector/v.net/turntable.c:670 #, fuzzy, c-format -msgid "Arc layer <%s> does not exists in map <%s>." +msgid "Arc layer <%s> does not exist in map <%s>." msgstr "?????????????? <%s> ???? ???????????????????? ?? ???????? ???????????? <%s>" #: ../vector/v.net/turntable.c:675 Modified: grass/trunk/locale/po/grassmods_sl.po =================================================================== --- grass/trunk/locale/po/grassmods_sl.po 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/locale/po/grassmods_sl.po 2015-09-25 13:48:44 UTC (rev 66332) @@ -10674,7 +10674,7 @@ #: ../vector/v.net/turntable.c:670 #, fuzzy, c-format -msgid "Arc layer <%s> does not exists in map <%s>." +msgid "Arc layer <%s> does not exist in map <%s>." msgstr "Rastrski sloj kateremu naj se regija prilagodi" #: ../vector/v.net/turntable.c:675 Modified: grass/trunk/locale/po/grassmods_th.po =================================================================== --- grass/trunk/locale/po/grassmods_th.po 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/locale/po/grassmods_th.po 2015-09-25 13:48:44 UTC (rev 66332) @@ -10609,7 +10609,7 @@ #: ../vector/v.net/turntable.c:670 #, fuzzy, c-format -msgid "Arc layer <%s> does not exists in map <%s>." +msgid "Arc layer <%s> does not exist in map <%s>." msgstr "??????????????? <%s> ???????????????????????????????????????????????????????????? <%s>" #: ../vector/v.net/turntable.c:675 Modified: grass/trunk/locale/po/grassmods_tr.po =================================================================== --- grass/trunk/locale/po/grassmods_tr.po 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/locale/po/grassmods_tr.po 2015-09-25 13:48:44 UTC (rev 66332) @@ -10471,7 +10471,7 @@ #: ../vector/v.net/turntable.c:670 #, fuzzy, c-format -msgid "Arc layer <%s> does not exists in map <%s>." +msgid "Arc layer <%s> does not exist in map <%s>." msgstr "<%s> tablosu <%s> veritaban??nda yok" #: ../vector/v.net/turntable.c:675 Modified: grass/trunk/locale/po/grassmods_vi.po =================================================================== --- grass/trunk/locale/po/grassmods_vi.po 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/locale/po/grassmods_vi.po 2015-09-25 13:48:44 UTC (rev 66332) @@ -10615,7 +10615,7 @@ #: ../vector/v.net/turntable.c:670 #, fuzzy, c-format -msgid "Arc layer <%s> does not exists in map <%s>." +msgid "Arc layer <%s> does not exist in map <%s>." msgstr "B???ng <%s> kh??ng c?? trong CSDL <%s>" #: ../vector/v.net/turntable.c:675 Modified: grass/trunk/locale/po/grassmods_zh.po =================================================================== --- grass/trunk/locale/po/grassmods_zh.po 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/locale/po/grassmods_zh.po 2015-09-25 13:48:44 UTC (rev 66332) @@ -10618,7 +10618,7 @@ #: ../vector/v.net/turntable.c:670 #, fuzzy, c-format -msgid "Arc layer <%s> does not exists in map <%s>." +msgid "Arc layer <%s> does not exist in map <%s>." msgstr "?????????????????????????????????" #: ../vector/v.net/turntable.c:675 Modified: grass/trunk/locale/po/grasswxpy_cs.po =================================================================== --- grass/trunk/locale/po/grasswxpy_cs.po 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/locale/po/grasswxpy_cs.po 2015-09-25 13:48:44 UTC (rev 66332) @@ -6870,7 +6870,7 @@ #: ../gui/wxpython/vnet/dialogs.py:798 #, fuzzy -msgid "Input vector map does not exists." +msgid "Input vector map does not exist." msgstr "Vektorov?? mapa <%s> nebyla nalezena." #: ../gui/wxpython/vnet/dialogs.py:816 Modified: grass/trunk/locale/po/grasswxpy_de.po =================================================================== --- grass/trunk/locale/po/grasswxpy_de.po 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/locale/po/grasswxpy_de.po 2015-09-25 13:48:44 UTC (rev 66332) @@ -6755,7 +6755,7 @@ #: ../gui/wxpython/vnet/dialogs.py:798 #, fuzzy -msgid "Input vector map does not exists." +msgid "Input vector map does not exist." msgstr "Verzeichnis %s existiert nicht." #: ../gui/wxpython/vnet/dialogs.py:816 Modified: grass/trunk/locale/po/grasswxpy_el.po =================================================================== --- grass/trunk/locale/po/grasswxpy_el.po 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/locale/po/grasswxpy_el.po 2015-09-25 13:48:44 UTC (rev 66332) @@ -6463,7 +6463,7 @@ #: ../gui/wxpython/vnet/dialogs.py:798 #, fuzzy -msgid "Input vector map does not exists." +msgid "Input vector map does not exist." msgstr "?? ?????????????? %s ?????? ??????????????," #: ../gui/wxpython/vnet/dialogs.py:816 Modified: grass/trunk/locale/po/grasswxpy_es.po =================================================================== --- grass/trunk/locale/po/grasswxpy_es.po 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/locale/po/grasswxpy_es.po 2015-09-25 13:48:44 UTC (rev 66332) @@ -6835,7 +6835,7 @@ msgstr "Cargando datos." #: ../gui/wxpython/vnet/dialogs.py:798 -msgid "Input vector map does not exists." +msgid "Input vector map does not exist." msgstr "Mapa vectorial de entrada no existe." #: ../gui/wxpython/vnet/dialogs.py:816 Modified: grass/trunk/locale/po/grasswxpy_fi.po =================================================================== --- grass/trunk/locale/po/grasswxpy_fi.po 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/locale/po/grasswxpy_fi.po 2015-09-25 13:48:44 UTC (rev 66332) @@ -6285,7 +6285,7 @@ msgstr "" #: ../gui/wxpython/vnet/dialogs.py:798 -msgid "Input vector map does not exists." +msgid "Input vector map does not exist." msgstr "" #: ../gui/wxpython/vnet/dialogs.py:816 Modified: grass/trunk/locale/po/grasswxpy_fr.po =================================================================== --- grass/trunk/locale/po/grasswxpy_fr.po 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/locale/po/grasswxpy_fr.po 2015-09-25 13:48:44 UTC (rev 66332) @@ -6698,7 +6698,7 @@ msgstr "" #: ../gui/wxpython/vnet/dialogs.py:798 -msgid "Input vector map does not exists." +msgid "Input vector map does not exist." msgstr "La couche vecteur entr??e n'existe pas." #: ../gui/wxpython/vnet/dialogs.py:816 Modified: grass/trunk/locale/po/grasswxpy_id.po =================================================================== --- grass/trunk/locale/po/grasswxpy_id.po 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/locale/po/grasswxpy_id.po 2015-09-25 13:48:44 UTC (rev 66332) @@ -6971,7 +6971,7 @@ #: ../gui/wxpython/vnet/dialogs.py:798 #, fuzzy -msgid "Input vector map does not exists." +msgid "Input vector map does not exist." msgstr "ERROR: Mapset <%s> tidak ada" #: ../gui/wxpython/vnet/dialogs.py:816 Modified: grass/trunk/locale/po/grasswxpy_it.po =================================================================== --- grass/trunk/locale/po/grasswxpy_it.po 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/locale/po/grasswxpy_it.po 2015-09-25 13:48:44 UTC (rev 66332) @@ -6567,7 +6567,7 @@ msgstr "Creando la tabella delle svolte..." #: ../gui/wxpython/vnet/dialogs.py:798 -msgid "Input vector map does not exists." +msgid "Input vector map does not exist." msgstr "Il vettoriale di input non esiste." #: ../gui/wxpython/vnet/dialogs.py:816 Modified: grass/trunk/locale/po/grasswxpy_ja.po =================================================================== --- grass/trunk/locale/po/grasswxpy_ja.po 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/locale/po/grasswxpy_ja.po 2015-09-25 13:48:44 UTC (rev 66332) @@ -6778,7 +6778,7 @@ #: ../gui/wxpython/vnet/dialogs.py:798 #, fuzzy -msgid "Input vector map does not exists." +msgid "Input vector map does not exist." msgstr "????????????????????? <%s> ????????????????????????" #: ../gui/wxpython/vnet/dialogs.py:816 Modified: grass/trunk/locale/po/grasswxpy_ko.po =================================================================== --- grass/trunk/locale/po/grasswxpy_ko.po 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/locale/po/grasswxpy_ko.po 2015-09-25 13:48:44 UTC (rev 66332) @@ -6268,7 +6268,7 @@ msgstr "" #: ../gui/wxpython/vnet/dialogs.py:798 -msgid "Input vector map does not exists." +msgid "Input vector map does not exist." msgstr "" #: ../gui/wxpython/vnet/dialogs.py:816 Modified: grass/trunk/locale/po/grasswxpy_lv.po =================================================================== --- grass/trunk/locale/po/grasswxpy_lv.po 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/locale/po/grasswxpy_lv.po 2015-09-25 13:48:44 UTC (rev 66332) @@ -6432,7 +6432,7 @@ #: ../gui/wxpython/vnet/dialogs.py:798 #, fuzzy -msgid "Input vector map does not exists." +msgid "Input vector map does not exist." msgstr "??pa????ba %s neeksist??" #: ../gui/wxpython/vnet/dialogs.py:816 Modified: grass/trunk/locale/po/grasswxpy_ml.po =================================================================== --- grass/trunk/locale/po/grasswxpy_ml.po 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/locale/po/grasswxpy_ml.po 2015-09-25 13:48:44 UTC (rev 66332) @@ -6709,7 +6709,7 @@ #: ../gui/wxpython/vnet/dialogs.py:798 #, fuzzy -msgid "Input vector map does not exists." +msgid "Input vector map does not exist." msgstr "?????????????????? <%s> ???????????????????????????" #: ../gui/wxpython/vnet/dialogs.py:816 Modified: grass/trunk/locale/po/grasswxpy_pl.po =================================================================== --- grass/trunk/locale/po/grasswxpy_pl.po 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/locale/po/grasswxpy_pl.po 2015-09-25 13:48:44 UTC (rev 66332) @@ -6650,7 +6650,7 @@ #: ../gui/wxpython/vnet/dialogs.py:798 #, fuzzy -msgid "Input vector map does not exists." +msgid "Input vector map does not exist." msgstr "Katalog %s nie istnieje." #: ../gui/wxpython/vnet/dialogs.py:816 Modified: grass/trunk/locale/po/grasswxpy_pt.po =================================================================== --- grass/trunk/locale/po/grasswxpy_pt.po 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/locale/po/grasswxpy_pt.po 2015-09-25 13:48:44 UTC (rev 66332) @@ -7008,7 +7008,7 @@ #: ../gui/wxpython/vnet/dialogs.py:798 #, fuzzy -msgid "Input vector map does not exists." +msgid "Input vector map does not exist." msgstr "Mapa <%s> n??o encontrado" #: ../gui/wxpython/vnet/dialogs.py:816 Modified: grass/trunk/locale/po/grasswxpy_pt_br.po =================================================================== --- grass/trunk/locale/po/grasswxpy_pt_br.po 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/locale/po/grasswxpy_pt_br.po 2015-09-25 13:48:44 UTC (rev 66332) @@ -7149,7 +7149,7 @@ #: ../gui/wxpython/vnet/dialogs.py:798 #, fuzzy -msgid "Input vector map does not exists." +msgid "Input vector map does not exist." msgstr "Mapa <%s> n??o encontrado" #: ../gui/wxpython/vnet/dialogs.py:816 Modified: grass/trunk/locale/po/grasswxpy_ro.po =================================================================== --- grass/trunk/locale/po/grasswxpy_ro.po 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/locale/po/grasswxpy_ro.po 2015-09-25 13:48:44 UTC (rev 66332) @@ -6796,7 +6796,7 @@ #: ../gui/wxpython/vnet/dialogs.py:798 #, fuzzy -msgid "Input vector map does not exists." +msgid "Input vector map does not exist." msgstr "Directorul %s nu exist??." #: ../gui/wxpython/vnet/dialogs.py:816 Modified: grass/trunk/locale/po/grasswxpy_ru.po =================================================================== --- grass/trunk/locale/po/grasswxpy_ru.po 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/locale/po/grasswxpy_ru.po 2015-09-25 13:48:44 UTC (rev 66332) @@ -6931,7 +6931,7 @@ #: ../gui/wxpython/vnet/dialogs.py:798 #, fuzzy -msgid "Input vector map does not exists." +msgid "Input vector map does not exist." msgstr "???????? <%s> ???? ????????????." #: ../gui/wxpython/vnet/dialogs.py:816 Modified: grass/trunk/locale/po/grasswxpy_th.po =================================================================== --- grass/trunk/locale/po/grasswxpy_th.po 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/locale/po/grasswxpy_th.po 2015-09-25 13:48:44 UTC (rev 66332) @@ -6683,7 +6683,7 @@ #: ../gui/wxpython/vnet/dialogs.py:798 #, fuzzy -msgid "Input vector map does not exists." +msgid "Input vector map does not exist." msgstr "????????????????????????????????????????????????????????? 3????????????" #: ../gui/wxpython/vnet/dialogs.py:816 Modified: grass/trunk/locale/po/grasswxpy_tr.po =================================================================== --- grass/trunk/locale/po/grasswxpy_tr.po 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/locale/po/grasswxpy_tr.po 2015-09-25 13:48:44 UTC (rev 66332) @@ -6946,7 +6946,7 @@ #: ../gui/wxpython/vnet/dialogs.py:798 #, fuzzy -msgid "Input vector map does not exists." +msgid "Input vector map does not exist." msgstr "<%s>haritas?? bulunamad??." #: ../gui/wxpython/vnet/dialogs.py:816 Modified: grass/trunk/locale/po/grasswxpy_vi.po =================================================================== --- grass/trunk/locale/po/grasswxpy_vi.po 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/locale/po/grasswxpy_vi.po 2015-09-25 13:48:44 UTC (rev 66332) @@ -6945,7 +6945,7 @@ #: ../gui/wxpython/vnet/dialogs.py:798 #, fuzzy -msgid "Input vector map does not exists." +msgid "Input vector map does not exist." msgstr "Kh??ng t??m th???y b???n ????? <%s>." #: ../gui/wxpython/vnet/dialogs.py:816 Modified: grass/trunk/locale/po/grasswxpy_zh.po =================================================================== --- grass/trunk/locale/po/grasswxpy_zh.po 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/locale/po/grasswxpy_zh.po 2015-09-25 13:48:44 UTC (rev 66332) @@ -6837,7 +6837,7 @@ #: ../gui/wxpython/vnet/dialogs.py:798 #, fuzzy -msgid "Input vector map does not exists." +msgid "Input vector map does not exist." msgstr "???????????? [%s] ?????????" #: ../gui/wxpython/vnet/dialogs.py:816 Modified: grass/trunk/scripts/v.what.strds/v.what.strds.py =================================================================== --- grass/trunk/scripts/v.what.strds/v.what.strds.py 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/scripts/v.what.strds/v.what.strds.py 2015-09-25 13:48:44 UTC (rev 66332) @@ -22,6 +22,7 @@ #% keyword: position #% keyword: querying #% keyword: attribute table +#% keyword: time #%end #%option G_OPT_V_INPUT Modified: grass/trunk/vector/v.net/turntable.c =================================================================== --- grass/trunk/vector/v.net/turntable.c 2015-09-25 13:19:52 UTC (rev 66331) +++ grass/trunk/vector/v.net/turntable.c 2015-09-25 13:48:44 UTC (rev 66332) @@ -667,17 +667,17 @@ tucfield = Vect_get_field_number(&InMap, opt->tucfield->answer); if (!Vect_get_field(&InMap, afield)) - G_fatal_error(_("Arc layer <%s> does not exists in map <%s>."), + G_fatal_error(_("Arc layer <%s> does not exist in map <%s>."), opt->afield_opt->answer, opt->output->answer); if (Vect_get_field(&InMap, tfield)) G_warning(_ - ("Layer <%s> already exists in map <%s>.\nIt will be overwritten by tlayer data."), + ("Layer <%s> already exist in map <%s>.\nIt will be overwritten by tlayer data."), opt->tfield->answer, opt->output->answer); if (Vect_get_field(&InMap, tucfield)) G_warning(_ - ("Layer <%s> already exists in map <%s>.\nIt will be overwritten by tuclayer data."), + ("Layer <%s> already exist in map <%s>.\nIt will be overwritten by tuclayer data."), opt->tucfield->answer, opt->output->answer); ttb_name = NULL; From svn_grass at osgeo.org Fri Sep 25 06:59:13 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Fri, 25 Sep 2015 06:59:13 -0700 Subject: [GRASS-SVN] r66333 - in grass/branches/releasebranch_7_0: gui/wxpython/vnet lib/python/pygrass/raster lib/python/temporal locale/po scripts/v.what.strds Message-ID: <20150925135914.5BA7B3900B4@trac.osgeo.org> Author: neteler Date: 2015-09-25 06:59:13 -0700 (Fri, 25 Sep 2015) New Revision: 66333 Modified: grass/branches/releasebranch_7_0/gui/wxpython/vnet/dialogs.py grass/branches/releasebranch_7_0/lib/python/pygrass/raster/__init__.py grass/branches/releasebranch_7_0/lib/python/temporal/abstract_space_time_dataset.py grass/branches/releasebranch_7_0/lib/python/temporal/space_time_datasets.py grass/branches/releasebranch_7_0/locale/po/grasslibs_ar.po grass/branches/releasebranch_7_0/locale/po/grasslibs_cs.po grass/branches/releasebranch_7_0/locale/po/grasslibs_de.po grass/branches/releasebranch_7_0/locale/po/grasslibs_el.po grass/branches/releasebranch_7_0/locale/po/grasslibs_es.po grass/branches/releasebranch_7_0/locale/po/grasslibs_fi.po grass/branches/releasebranch_7_0/locale/po/grasslibs_fr.po grass/branches/releasebranch_7_0/locale/po/grasslibs_it.po grass/branches/releasebranch_7_0/locale/po/grasslibs_ja.po grass/branches/releasebranch_7_0/locale/po/grasslibs_ko.po grass/branches/releasebranch_7_0/locale/po/grasslibs_lv.po grass/branches/releasebranch_7_0/locale/po/grasslibs_ml.po grass/branches/releasebranch_7_0/locale/po/grasslibs_pl.po grass/branches/releasebranch_7_0/locale/po/grasslibs_pt.po grass/branches/releasebranch_7_0/locale/po/grasslibs_pt_br.po grass/branches/releasebranch_7_0/locale/po/grasslibs_ro.po grass/branches/releasebranch_7_0/locale/po/grasslibs_ru.po grass/branches/releasebranch_7_0/locale/po/grasslibs_sl.po grass/branches/releasebranch_7_0/locale/po/grasslibs_th.po grass/branches/releasebranch_7_0/locale/po/grasslibs_tr.po grass/branches/releasebranch_7_0/locale/po/grasslibs_vi.po grass/branches/releasebranch_7_0/locale/po/grasslibs_zh.po grass/branches/releasebranch_7_0/locale/po/grassmods_es.po grass/branches/releasebranch_7_0/locale/po/grasswxpy_cs.po grass/branches/releasebranch_7_0/locale/po/grasswxpy_de.po grass/branches/releasebranch_7_0/locale/po/grasswxpy_el.po grass/branches/releasebranch_7_0/locale/po/grasswxpy_es.po grass/branches/releasebranch_7_0/locale/po/grasswxpy_fi.po grass/branches/releasebranch_7_0/locale/po/grasswxpy_fr.po grass/branches/releasebranch_7_0/locale/po/grasswxpy_id.po grass/branches/releasebranch_7_0/locale/po/grasswxpy_it.po grass/branches/releasebranch_7_0/locale/po/grasswxpy_ja.po grass/branches/releasebranch_7_0/locale/po/grasswxpy_ko.po grass/branches/releasebranch_7_0/locale/po/grasswxpy_lv.po grass/branches/releasebranch_7_0/locale/po/grasswxpy_ml.po grass/branches/releasebranch_7_0/locale/po/grasswxpy_pl.po grass/branches/releasebranch_7_0/locale/po/grasswxpy_pt.po grass/branches/releasebranch_7_0/locale/po/grasswxpy_pt_br.po grass/branches/releasebranch_7_0/locale/po/grasswxpy_ro.po grass/branches/releasebranch_7_0/locale/po/grasswxpy_ru.po grass/branches/releasebranch_7_0/locale/po/grasswxpy_th.po grass/branches/releasebranch_7_0/locale/po/grasswxpy_tr.po grass/branches/releasebranch_7_0/locale/po/grasswxpy_vi.po grass/branches/releasebranch_7_0/locale/po/grasswxpy_zh.po grass/branches/releasebranch_7_0/scripts/v.what.strds/v.what.strds.py Log: fix msg grammar Modified: grass/branches/releasebranch_7_0/gui/wxpython/vnet/dialogs.py =================================================================== --- grass/branches/releasebranch_7_0/gui/wxpython/vnet/dialogs.py 2015-09-25 13:48:44 UTC (rev 66332) +++ grass/branches/releasebranch_7_0/gui/wxpython/vnet/dialogs.py 2015-09-25 13:59:13 UTC (rev 66333) @@ -795,7 +795,7 @@ if "input" in err_params: GMessage(parent = self, - message = _("Input vector map does not exists.")) + message = _("Input vector map does not exist.")) if ["turn_layer", "turn_cat_layer"] in err_params: GMessage(parent = self, message = "Please choose existing turntable layer and unique categories layer in Parameters tab.") Modified: grass/branches/releasebranch_7_0/lib/python/pygrass/raster/__init__.py =================================================================== --- grass/branches/releasebranch_7_0/lib/python/pygrass/raster/__init__.py 2015-09-25 13:48:44 UTC (rev 66332) +++ grass/branches/releasebranch_7_0/lib/python/pygrass/raster/__init__.py 2015-09-25 13:59:13 UTC (rev 66333) @@ -429,7 +429,7 @@ self._fd = libraster.Rast_open_new(self.name, self._gtype) else: if self.mode == "r": - str_err = _("Raster map <{0}> does not exists") + str_err = _("Raster map <{0}> does not exist") raise OpenError(str_err.format(self.name)) self._gtype = RTYPE[self.mtype]['grass type'] Modified: grass/branches/releasebranch_7_0/lib/python/temporal/abstract_space_time_dataset.py =================================================================== --- grass/branches/releasebranch_7_0/lib/python/temporal/abstract_space_time_dataset.py 2015-09-25 13:48:44 UTC (rev 66332) +++ grass/branches/releasebranch_7_0/lib/python/temporal/abstract_space_time_dataset.py 2015-09-25 13:59:13 UTC (rev 66333) @@ -327,7 +327,7 @@ dbif, connected = init_dbif(dbif) - # We need to create the register table if it does not exists + # We need to create the register table if it does not exist stds_register_table = self.get_map_register() # Create the map register table Modified: grass/branches/releasebranch_7_0/lib/python/temporal/space_time_datasets.py =================================================================== --- grass/branches/releasebranch_7_0/lib/python/temporal/space_time_datasets.py 2015-09-25 13:48:44 UTC (rev 66332) +++ grass/branches/releasebranch_7_0/lib/python/temporal/space_time_datasets.py 2015-09-25 13:59:13 UTC (rev 66333) @@ -171,7 +171,7 @@ the map will be exported using r.out.bin to a temporary location and assigned to the memmap object that is returned by this function. - In case the raster map does not exists, an empty temporary + In case the raster map does not exist, an empty temporary binary file will be created and assigned to the memap object. You need to call the write function to write the memmap @@ -505,7 +505,7 @@ the map will be exported using r3.out.bin to a temporary location and assigned to the memmap object that is returned by this function. - In case the 3D raster map does not exists, an empty temporary + In case the 3D raster map does not exist, an empty temporary binary file will be created and assigned to the memap object. You need to call the write function to write the memmap Modified: grass/branches/releasebranch_7_0/locale/po/grasslibs_ar.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasslibs_ar.po 2015-09-25 13:48:44 UTC (rev 66332) +++ grass/branches/releasebranch_7_0/locale/po/grasslibs_ar.po 2015-09-25 13:59:13 UTC (rev 66333) @@ -3513,7 +3513,7 @@ #: ../lib/python/pygrass/raster/__init__.py:432 #, fuzzy, python-brace-format -msgid "Raster map <{0}> does not exists" +msgid "Raster map <{0}> does not exist" msgstr "'%s' ???? ???????? ?????? ?????? ?????????????? ????????????????" #: ../lib/python/pygrass/raster/abstract.py:274 Modified: grass/branches/releasebranch_7_0/locale/po/grasslibs_cs.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasslibs_cs.po 2015-09-25 13:48:44 UTC (rev 66332) +++ grass/branches/releasebranch_7_0/locale/po/grasslibs_cs.po 2015-09-25 13:59:13 UTC (rev 66333) @@ -3560,7 +3560,7 @@ #: ../lib/python/pygrass/raster/__init__.py:432 #, fuzzy, python-brace-format -msgid "Raster map <{0}> does not exists" +msgid "Raster map <{0}> does not exist" msgstr "Tabulka <%s> p??ipojen?? k vektorov?? map?? <%s> neexistuje" #: ../lib/python/pygrass/raster/abstract.py:274 Modified: grass/branches/releasebranch_7_0/locale/po/grasslibs_de.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasslibs_de.po 2015-09-25 13:48:44 UTC (rev 66332) +++ grass/branches/releasebranch_7_0/locale/po/grasslibs_de.po 2015-09-25 13:59:13 UTC (rev 66333) @@ -3552,7 +3552,7 @@ #: ../lib/python/pygrass/raster/__init__.py:432 #, fuzzy, python-brace-format -msgid "Raster map <{0}> does not exists" +msgid "Raster map <{0}> does not exist" msgstr "Tabelle <%s> verkn??pft mit Vektorkarte <%s> existiert nicht." #: ../lib/python/pygrass/raster/abstract.py:274 Modified: grass/branches/releasebranch_7_0/locale/po/grasslibs_el.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasslibs_el.po 2015-09-25 13:48:44 UTC (rev 66332) +++ grass/branches/releasebranch_7_0/locale/po/grasslibs_el.po 2015-09-25 13:59:13 UTC (rev 66333) @@ -3553,7 +3553,7 @@ #: ../lib/python/pygrass/raster/__init__.py:432 #, fuzzy, python-brace-format -msgid "Raster map <{0}> does not exists" +msgid "Raster map <{0}> does not exist" msgstr "" "?? ?????????????? <%s> ?????? ?????????? ???????????????????????? ???? ?????? ???????????????????????? ?????????? <%s> ?????? " "??????????????" Modified: grass/branches/releasebranch_7_0/locale/po/grasslibs_es.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasslibs_es.po 2015-09-25 13:48:44 UTC (rev 66332) +++ grass/branches/releasebranch_7_0/locale/po/grasslibs_es.po 2015-09-25 13:59:13 UTC (rev 66333) @@ -3689,7 +3689,7 @@ # #: ../lib/python/pygrass/raster/__init__.py:432 #, fuzzy, python-brace-format -msgid "Raster map <{0}> does not exists" +msgid "Raster map <{0}> does not exist" msgstr "La tabla <%s> enlazada con el mapa vectorial <%s> no existe." #: ../lib/python/pygrass/raster/abstract.py:274 Modified: grass/branches/releasebranch_7_0/locale/po/grasslibs_fi.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasslibs_fi.po 2015-09-25 13:48:44 UTC (rev 66332) +++ grass/branches/releasebranch_7_0/locale/po/grasslibs_fi.po 2015-09-25 13:59:13 UTC (rev 66333) @@ -3378,7 +3378,7 @@ #: ../lib/python/pygrass/raster/__init__.py:432 #, python-brace-format -msgid "Raster map <{0}> does not exists" +msgid "Raster map <{0}> does not exist" msgstr "" #: ../lib/python/pygrass/raster/abstract.py:274 Modified: grass/branches/releasebranch_7_0/locale/po/grasslibs_fr.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasslibs_fr.po 2015-09-25 13:48:44 UTC (rev 66332) +++ grass/branches/releasebranch_7_0/locale/po/grasslibs_fr.po 2015-09-25 13:59:13 UTC (rev 66333) @@ -3582,7 +3582,7 @@ #: ../lib/python/pygrass/raster/__init__.py:432 #, fuzzy, python-brace-format -msgid "Raster map <{0}> does not exists" +msgid "Raster map <{0}> does not exist" msgstr "La table <%s> li??e ?? la carte vecteur <%s> n'existe pas " #: ../lib/python/pygrass/raster/abstract.py:274 Modified: grass/branches/releasebranch_7_0/locale/po/grasslibs_it.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasslibs_it.po 2015-09-25 13:48:44 UTC (rev 66332) +++ grass/branches/releasebranch_7_0/locale/po/grasslibs_it.po 2015-09-25 13:59:13 UTC (rev 66333) @@ -3563,7 +3563,7 @@ #: ../lib/python/pygrass/raster/__init__.py:432 #, fuzzy, python-brace-format -msgid "Raster map <{0}> does not exists" +msgid "Raster map <{0}> does not exist" msgstr "Tabella <%s> collegata al vettoriale <%s> non esiste" #: ../lib/python/pygrass/raster/abstract.py:274 Modified: grass/branches/releasebranch_7_0/locale/po/grasslibs_ja.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasslibs_ja.po 2015-09-25 13:48:44 UTC (rev 66332) +++ grass/branches/releasebranch_7_0/locale/po/grasslibs_ja.po 2015-09-25 13:59:13 UTC (rev 66333) @@ -3551,7 +3551,7 @@ #: ../lib/python/pygrass/raster/__init__.py:432 #, fuzzy, python-brace-format -msgid "Raster map <{0}> does not exists" +msgid "Raster map <{0}> does not exist" msgstr "????????????????????? <%s> ?????????????????????????????? <%s> ?????????????????????" #: ../lib/python/pygrass/raster/abstract.py:274 Modified: grass/branches/releasebranch_7_0/locale/po/grasslibs_ko.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasslibs_ko.po 2015-09-25 13:48:44 UTC (rev 66332) +++ grass/branches/releasebranch_7_0/locale/po/grasslibs_ko.po 2015-09-25 13:59:13 UTC (rev 66333) @@ -3472,7 +3472,7 @@ #: ../lib/python/pygrass/raster/__init__.py:432 #, fuzzy, python-brace-format -msgid "Raster map <{0}> does not exists" +msgid "Raster map <{0}> does not exist" msgstr "??????????????? ??? ??? ????????????" #: ../lib/python/pygrass/raster/abstract.py:274 Modified: grass/branches/releasebranch_7_0/locale/po/grasslibs_lv.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasslibs_lv.po 2015-09-25 13:48:44 UTC (rev 66332) +++ grass/branches/releasebranch_7_0/locale/po/grasslibs_lv.po 2015-09-25 13:59:13 UTC (rev 66333) @@ -3500,7 +3500,7 @@ #: ../lib/python/pygrass/raster/__init__.py:432 #, fuzzy, python-brace-format -msgid "Raster map <{0}> does not exists" +msgid "Raster map <{0}> does not exist" msgstr "Nevar atv??rt v??sturi vektoram '%s'" #: ../lib/python/pygrass/raster/abstract.py:274 Modified: grass/branches/releasebranch_7_0/locale/po/grasslibs_ml.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasslibs_ml.po 2015-09-25 13:48:44 UTC (rev 66332) +++ grass/branches/releasebranch_7_0/locale/po/grasslibs_ml.po 2015-09-25 13:59:13 UTC (rev 66333) @@ -3441,7 +3441,7 @@ #: ../lib/python/pygrass/raster/__init__.py:432 #, fuzzy, python-brace-format -msgid "Raster map <{0}> does not exists" +msgid "Raster map <{0}> does not exist" msgstr "???????????????????????? <%s> ??????????????????????????? \n" #: ../lib/python/pygrass/raster/abstract.py:274 Modified: grass/branches/releasebranch_7_0/locale/po/grasslibs_pl.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasslibs_pl.po 2015-09-25 13:48:44 UTC (rev 66332) +++ grass/branches/releasebranch_7_0/locale/po/grasslibs_pl.po 2015-09-25 13:59:13 UTC (rev 66333) @@ -3522,7 +3522,7 @@ #: ../lib/python/pygrass/raster/__init__.py:432 #, fuzzy, python-brace-format -msgid "Raster map <{0}> does not exists" +msgid "Raster map <{0}> does not exist" msgstr "Tabela <%s> pod????czona do mapy wektorowej <%s> nie istnieje" #: ../lib/python/pygrass/raster/abstract.py:274 Modified: grass/branches/releasebranch_7_0/locale/po/grasslibs_pt.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasslibs_pt.po 2015-09-25 13:48:44 UTC (rev 66332) +++ grass/branches/releasebranch_7_0/locale/po/grasslibs_pt.po 2015-09-25 13:59:13 UTC (rev 66333) @@ -3544,7 +3544,7 @@ #: ../lib/python/pygrass/raster/__init__.py:432 #, fuzzy, python-brace-format -msgid "Raster map <{0}> does not exists" +msgid "Raster map <{0}> does not exist" msgstr "Imposs?vel abrir topologia para mapa vetorial <%s>" #: ../lib/python/pygrass/raster/abstract.py:274 Modified: grass/branches/releasebranch_7_0/locale/po/grasslibs_pt_br.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasslibs_pt_br.po 2015-09-25 13:48:44 UTC (rev 66332) +++ grass/branches/releasebranch_7_0/locale/po/grasslibs_pt_br.po 2015-09-25 13:59:13 UTC (rev 66333) @@ -3536,7 +3536,7 @@ #: ../lib/python/pygrass/raster/__init__.py:432 #, fuzzy, python-brace-format -msgid "Raster map <{0}> does not exists" +msgid "Raster map <{0}> does not exist" msgstr "N?o consegui abrir hist?rico para o vetor %s" #: ../lib/python/pygrass/raster/abstract.py:274 Modified: grass/branches/releasebranch_7_0/locale/po/grasslibs_ro.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasslibs_ro.po 2015-09-25 13:48:44 UTC (rev 66332) +++ grass/branches/releasebranch_7_0/locale/po/grasslibs_ro.po 2015-09-25 13:59:13 UTC (rev 66333) @@ -3444,7 +3444,7 @@ #: ../lib/python/pygrass/raster/__init__.py:432 #, fuzzy, python-brace-format -msgid "Raster map <{0}> does not exists" +msgid "Raster map <{0}> does not exist" msgstr "Harta raster <%s> nu este g??sit??" #: ../lib/python/pygrass/raster/abstract.py:274 Modified: grass/branches/releasebranch_7_0/locale/po/grasslibs_ru.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasslibs_ru.po 2015-09-25 13:48:44 UTC (rev 66332) +++ grass/branches/releasebranch_7_0/locale/po/grasslibs_ru.po 2015-09-25 13:59:13 UTC (rev 66333) @@ -3562,7 +3562,7 @@ #: ../lib/python/pygrass/raster/__init__.py:432 #, fuzzy, python-brace-format -msgid "Raster map <{0}> does not exists" +msgid "Raster map <{0}> does not exist" msgstr "?????????????? <%s> ?????????????????? ?? ?????????????????? ?????????? <%s> ???? ????????????????????" #: ../lib/python/pygrass/raster/abstract.py:274 Modified: grass/branches/releasebranch_7_0/locale/po/grasslibs_sl.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasslibs_sl.po 2015-09-25 13:48:44 UTC (rev 66332) +++ grass/branches/releasebranch_7_0/locale/po/grasslibs_sl.po 2015-09-25 13:59:13 UTC (rev 66333) @@ -3536,7 +3536,7 @@ #: ../lib/python/pygrass/raster/__init__.py:432 #, fuzzy, python-brace-format -msgid "Raster map <{0}> does not exists" +msgid "Raster map <{0}> does not exist" msgstr "Ne morem odpreti datoteke z zgodovino za vektor '%s'" #: ../lib/python/pygrass/raster/abstract.py:274 Modified: grass/branches/releasebranch_7_0/locale/po/grasslibs_th.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasslibs_th.po 2015-09-25 13:48:44 UTC (rev 66332) +++ grass/branches/releasebranch_7_0/locale/po/grasslibs_th.po 2015-09-25 13:59:13 UTC (rev 66333) @@ -3552,7 +3552,7 @@ #: ../lib/python/pygrass/raster/__init__.py:432 #, fuzzy, python-brace-format -msgid "Raster map <{0}> does not exists" +msgid "Raster map <{0}> does not exist" msgstr "????????????????????????????????????????????????????????? <%s> ?????????????????????????????????????????????????????????????????????????????? <%s>" #: ../lib/python/pygrass/raster/abstract.py:274 Modified: grass/branches/releasebranch_7_0/locale/po/grasslibs_tr.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasslibs_tr.po 2015-09-25 13:48:44 UTC (rev 66332) +++ grass/branches/releasebranch_7_0/locale/po/grasslibs_tr.po 2015-09-25 13:59:13 UTC (rev 66333) @@ -3484,7 +3484,7 @@ #: ../lib/python/pygrass/raster/__init__.py:432 #, fuzzy, python-brace-format -msgid "Raster map <{0}> does not exists" +msgid "Raster map <{0}> does not exist" msgstr "<%s> raster haritas?? bo??" #: ../lib/python/pygrass/raster/abstract.py:274 Modified: grass/branches/releasebranch_7_0/locale/po/grasslibs_vi.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasslibs_vi.po 2015-09-25 13:48:44 UTC (rev 66332) +++ grass/branches/releasebranch_7_0/locale/po/grasslibs_vi.po 2015-09-25 13:59:13 UTC (rev 66333) @@ -3554,7 +3554,7 @@ #: ../lib/python/pygrass/raster/__init__.py:432 #, fuzzy, python-brace-format -msgid "Raster map <{0}> does not exists" +msgid "Raster map <{0}> does not exist" msgstr "B???ng <%s> ???????c li??n k???t v??o b???n ????? vec-t?? <%s> kh??ng t???n t???i" #: ../lib/python/pygrass/raster/abstract.py:274 Modified: grass/branches/releasebranch_7_0/locale/po/grasslibs_zh.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasslibs_zh.po 2015-09-25 13:48:44 UTC (rev 66332) +++ grass/branches/releasebranch_7_0/locale/po/grasslibs_zh.po 2015-09-25 13:59:13 UTC (rev 66333) @@ -3553,7 +3553,7 @@ #: ../lib/python/pygrass/raster/__init__.py:432 #, fuzzy, python-brace-format -msgid "Raster map <{0}> does not exists" +msgid "Raster map <{0}> does not exist" msgstr "??????????????????'%s'???????????????" #: ../lib/python/pygrass/raster/abstract.py:274 Modified: grass/branches/releasebranch_7_0/locale/po/grassmods_es.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grassmods_es.po 2015-09-25 13:48:44 UTC (rev 66332) +++ grass/branches/releasebranch_7_0/locale/po/grassmods_es.po 2015-09-25 13:59:13 UTC (rev 66333) @@ -43330,7 +43330,7 @@ #~ msgstr "No se puede abrir el mapa vectorial <%s>" #, fuzzy -#~ msgid "Arc layer <%s> does not exists in map <%s>." +#~ msgid "Arc layer <%s> does not exist in map <%s>." #~ msgstr "La tabla <%s> no existe en la base de datos <%s>" #, fuzzy Modified: grass/branches/releasebranch_7_0/locale/po/grasswxpy_cs.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasswxpy_cs.po 2015-09-25 13:48:44 UTC (rev 66332) +++ grass/branches/releasebranch_7_0/locale/po/grasswxpy_cs.po 2015-09-25 13:59:13 UTC (rev 66333) @@ -6698,7 +6698,7 @@ #: ../gui/wxpython/vnet/dialogs.py:798 #, fuzzy -msgid "Input vector map does not exists." +msgid "Input vector map does not exist." msgstr "Vektorov?? mapa <%s> nebyla nalezena." #: ../gui/wxpython/vnet/dialogs.py:816 Modified: grass/branches/releasebranch_7_0/locale/po/grasswxpy_de.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasswxpy_de.po 2015-09-25 13:48:44 UTC (rev 66332) +++ grass/branches/releasebranch_7_0/locale/po/grasswxpy_de.po 2015-09-25 13:59:13 UTC (rev 66333) @@ -6583,7 +6583,7 @@ #: ../gui/wxpython/vnet/dialogs.py:798 #, fuzzy -msgid "Input vector map does not exists." +msgid "Input vector map does not exist." msgstr "Verzeichnis %s existiert nicht." #: ../gui/wxpython/vnet/dialogs.py:816 Modified: grass/branches/releasebranch_7_0/locale/po/grasswxpy_el.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasswxpy_el.po 2015-09-25 13:48:44 UTC (rev 66332) +++ grass/branches/releasebranch_7_0/locale/po/grasswxpy_el.po 2015-09-25 13:59:13 UTC (rev 66333) @@ -6294,7 +6294,7 @@ #: ../gui/wxpython/vnet/dialogs.py:798 #, fuzzy -msgid "Input vector map does not exists." +msgid "Input vector map does not exist." msgstr "?? ?????????????? %s ?????? ??????????????," #: ../gui/wxpython/vnet/dialogs.py:816 Modified: grass/branches/releasebranch_7_0/locale/po/grasswxpy_es.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasswxpy_es.po 2015-09-25 13:48:44 UTC (rev 66332) +++ grass/branches/releasebranch_7_0/locale/po/grasswxpy_es.po 2015-09-25 13:59:13 UTC (rev 66333) @@ -6662,7 +6662,7 @@ msgstr "Cargando datos." #: ../gui/wxpython/vnet/dialogs.py:798 -msgid "Input vector map does not exists." +msgid "Input vector map does not exist." msgstr "Mapa vectorial de entrada no existe." #: ../gui/wxpython/vnet/dialogs.py:816 Modified: grass/branches/releasebranch_7_0/locale/po/grasswxpy_fi.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasswxpy_fi.po 2015-09-25 13:48:44 UTC (rev 66332) +++ grass/branches/releasebranch_7_0/locale/po/grasswxpy_fi.po 2015-09-25 13:59:13 UTC (rev 66333) @@ -6132,7 +6132,7 @@ msgstr "" #: ../gui/wxpython/vnet/dialogs.py:798 -msgid "Input vector map does not exists." +msgid "Input vector map does not exist." msgstr "" #: ../gui/wxpython/vnet/dialogs.py:816 Modified: grass/branches/releasebranch_7_0/locale/po/grasswxpy_fr.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasswxpy_fr.po 2015-09-25 13:48:44 UTC (rev 66332) +++ grass/branches/releasebranch_7_0/locale/po/grasswxpy_fr.po 2015-09-25 13:59:13 UTC (rev 66333) @@ -6541,7 +6541,7 @@ msgstr "" #: ../gui/wxpython/vnet/dialogs.py:798 -msgid "Input vector map does not exists." +msgid "Input vector map does not exist." msgstr "La couche vecteur entr??e n'existe pas." #: ../gui/wxpython/vnet/dialogs.py:816 Modified: grass/branches/releasebranch_7_0/locale/po/grasswxpy_id.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasswxpy_id.po 2015-09-25 13:48:44 UTC (rev 66332) +++ grass/branches/releasebranch_7_0/locale/po/grasswxpy_id.po 2015-09-25 13:59:13 UTC (rev 66333) @@ -6801,7 +6801,7 @@ #: ../gui/wxpython/vnet/dialogs.py:798 #, fuzzy -msgid "Input vector map does not exists." +msgid "Input vector map does not exist." msgstr "ERROR: Mapset <%s> tidak ada" #: ../gui/wxpython/vnet/dialogs.py:816 Modified: grass/branches/releasebranch_7_0/locale/po/grasswxpy_it.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasswxpy_it.po 2015-09-25 13:48:44 UTC (rev 66332) +++ grass/branches/releasebranch_7_0/locale/po/grasswxpy_it.po 2015-09-25 13:59:13 UTC (rev 66333) @@ -6417,7 +6417,7 @@ msgstr "Creando la tabella delle svolte..." #: ../gui/wxpython/vnet/dialogs.py:798 -msgid "Input vector map does not exists." +msgid "Input vector map does not exist." msgstr "Il vettoriale di input non esiste." #: ../gui/wxpython/vnet/dialogs.py:816 Modified: grass/branches/releasebranch_7_0/locale/po/grasswxpy_ja.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasswxpy_ja.po 2015-09-25 13:48:44 UTC (rev 66332) +++ grass/branches/releasebranch_7_0/locale/po/grasswxpy_ja.po 2015-09-25 13:59:13 UTC (rev 66333) @@ -6608,7 +6608,7 @@ #: ../gui/wxpython/vnet/dialogs.py:798 #, fuzzy -msgid "Input vector map does not exists." +msgid "Input vector map does not exist." msgstr "????????????????????? <%s> ????????????????????????" #: ../gui/wxpython/vnet/dialogs.py:816 Modified: grass/branches/releasebranch_7_0/locale/po/grasswxpy_ko.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasswxpy_ko.po 2015-09-25 13:48:44 UTC (rev 66332) +++ grass/branches/releasebranch_7_0/locale/po/grasswxpy_ko.po 2015-09-25 13:59:13 UTC (rev 66333) @@ -6123,7 +6123,7 @@ msgstr "" #: ../gui/wxpython/vnet/dialogs.py:798 -msgid "Input vector map does not exists." +msgid "Input vector map does not exist." msgstr "" #: ../gui/wxpython/vnet/dialogs.py:816 Modified: grass/branches/releasebranch_7_0/locale/po/grasswxpy_lv.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasswxpy_lv.po 2015-09-25 13:48:44 UTC (rev 66332) +++ grass/branches/releasebranch_7_0/locale/po/grasswxpy_lv.po 2015-09-25 13:59:13 UTC (rev 66333) @@ -6261,7 +6261,7 @@ #: ../gui/wxpython/vnet/dialogs.py:798 #, fuzzy -msgid "Input vector map does not exists." +msgid "Input vector map does not exist." msgstr "??pa????ba %s neeksist??" #: ../gui/wxpython/vnet/dialogs.py:816 Modified: grass/branches/releasebranch_7_0/locale/po/grasswxpy_ml.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasswxpy_ml.po 2015-09-25 13:48:44 UTC (rev 66332) +++ grass/branches/releasebranch_7_0/locale/po/grasswxpy_ml.po 2015-09-25 13:59:13 UTC (rev 66333) @@ -6541,7 +6541,7 @@ #: ../gui/wxpython/vnet/dialogs.py:798 #, fuzzy -msgid "Input vector map does not exists." +msgid "Input vector map does not exist." msgstr "?????????????????? <%s> ???????????????????????????" #: ../gui/wxpython/vnet/dialogs.py:816 Modified: grass/branches/releasebranch_7_0/locale/po/grasswxpy_pl.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasswxpy_pl.po 2015-09-25 13:48:44 UTC (rev 66332) +++ grass/branches/releasebranch_7_0/locale/po/grasswxpy_pl.po 2015-09-25 13:59:13 UTC (rev 66333) @@ -6479,7 +6479,7 @@ #: ../gui/wxpython/vnet/dialogs.py:798 #, fuzzy -msgid "Input vector map does not exists." +msgid "Input vector map does not exist." msgstr "Katalog %s nie istnieje." #: ../gui/wxpython/vnet/dialogs.py:816 Modified: grass/branches/releasebranch_7_0/locale/po/grasswxpy_pt.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasswxpy_pt.po 2015-09-25 13:48:44 UTC (rev 66332) +++ grass/branches/releasebranch_7_0/locale/po/grasswxpy_pt.po 2015-09-25 13:59:13 UTC (rev 66333) @@ -6838,7 +6838,7 @@ #: ../gui/wxpython/vnet/dialogs.py:798 #, fuzzy -msgid "Input vector map does not exists." +msgid "Input vector map does not exist." msgstr "Mapa <%s> n??o encontrado" #: ../gui/wxpython/vnet/dialogs.py:816 Modified: grass/branches/releasebranch_7_0/locale/po/grasswxpy_pt_br.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasswxpy_pt_br.po 2015-09-25 13:48:44 UTC (rev 66332) +++ grass/branches/releasebranch_7_0/locale/po/grasswxpy_pt_br.po 2015-09-25 13:59:13 UTC (rev 66333) @@ -6978,7 +6978,7 @@ #: ../gui/wxpython/vnet/dialogs.py:798 #, fuzzy -msgid "Input vector map does not exists." +msgid "Input vector map does not exist." msgstr "Mapa <%s> n??o encontrado" #: ../gui/wxpython/vnet/dialogs.py:816 Modified: grass/branches/releasebranch_7_0/locale/po/grasswxpy_ro.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasswxpy_ro.po 2015-09-25 13:48:44 UTC (rev 66332) +++ grass/branches/releasebranch_7_0/locale/po/grasswxpy_ro.po 2015-09-25 13:59:13 UTC (rev 66333) @@ -6624,7 +6624,7 @@ #: ../gui/wxpython/vnet/dialogs.py:798 #, fuzzy -msgid "Input vector map does not exists." +msgid "Input vector map does not exist." msgstr "Directorul %s nu exist??." #: ../gui/wxpython/vnet/dialogs.py:816 Modified: grass/branches/releasebranch_7_0/locale/po/grasswxpy_ru.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasswxpy_ru.po 2015-09-25 13:48:44 UTC (rev 66332) +++ grass/branches/releasebranch_7_0/locale/po/grasswxpy_ru.po 2015-09-25 13:59:13 UTC (rev 66333) @@ -6761,7 +6761,7 @@ #: ../gui/wxpython/vnet/dialogs.py:798 #, fuzzy -msgid "Input vector map does not exists." +msgid "Input vector map does not exist." msgstr "???????? <%s> ???? ????????????." #: ../gui/wxpython/vnet/dialogs.py:816 Modified: grass/branches/releasebranch_7_0/locale/po/grasswxpy_th.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasswxpy_th.po 2015-09-25 13:48:44 UTC (rev 66332) +++ grass/branches/releasebranch_7_0/locale/po/grasswxpy_th.po 2015-09-25 13:59:13 UTC (rev 66333) @@ -6513,7 +6513,7 @@ #: ../gui/wxpython/vnet/dialogs.py:798 #, fuzzy -msgid "Input vector map does not exists." +msgid "Input vector map does not exist." msgstr "????????????????????????????????????????????????????????? 3????????????" #: ../gui/wxpython/vnet/dialogs.py:816 Modified: grass/branches/releasebranch_7_0/locale/po/grasswxpy_tr.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasswxpy_tr.po 2015-09-25 13:48:44 UTC (rev 66332) +++ grass/branches/releasebranch_7_0/locale/po/grasswxpy_tr.po 2015-09-25 13:59:13 UTC (rev 66333) @@ -6774,7 +6774,7 @@ #: ../gui/wxpython/vnet/dialogs.py:798 #, fuzzy -msgid "Input vector map does not exists." +msgid "Input vector map does not exist." msgstr "<%s>haritas?? bulunamad??." #: ../gui/wxpython/vnet/dialogs.py:816 Modified: grass/branches/releasebranch_7_0/locale/po/grasswxpy_vi.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasswxpy_vi.po 2015-09-25 13:48:44 UTC (rev 66332) +++ grass/branches/releasebranch_7_0/locale/po/grasswxpy_vi.po 2015-09-25 13:59:13 UTC (rev 66333) @@ -6773,7 +6773,7 @@ #: ../gui/wxpython/vnet/dialogs.py:798 #, fuzzy -msgid "Input vector map does not exists." +msgid "Input vector map does not exist." msgstr "Kh??ng t??m th???y b???n ????? <%s>." #: ../gui/wxpython/vnet/dialogs.py:816 Modified: grass/branches/releasebranch_7_0/locale/po/grasswxpy_zh.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasswxpy_zh.po 2015-09-25 13:48:44 UTC (rev 66332) +++ grass/branches/releasebranch_7_0/locale/po/grasswxpy_zh.po 2015-09-25 13:59:13 UTC (rev 66333) @@ -6667,7 +6667,7 @@ #: ../gui/wxpython/vnet/dialogs.py:798 #, fuzzy -msgid "Input vector map does not exists." +msgid "Input vector map does not exist." msgstr "???????????? [%s] ?????????" #: ../gui/wxpython/vnet/dialogs.py:816 Modified: grass/branches/releasebranch_7_0/scripts/v.what.strds/v.what.strds.py =================================================================== --- grass/branches/releasebranch_7_0/scripts/v.what.strds/v.what.strds.py 2015-09-25 13:48:44 UTC (rev 66332) +++ grass/branches/releasebranch_7_0/scripts/v.what.strds/v.what.strds.py 2015-09-25 13:59:13 UTC (rev 66333) @@ -22,6 +22,7 @@ #% keyword: position #% keyword: querying #% keyword: attribute table +#% keyword: time #%end #%option G_OPT_V_INPUT From svn_grass at osgeo.org Fri Sep 25 08:39:47 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Fri, 25 Sep 2015 08:39:47 -0700 Subject: [GRASS-SVN] r66334 - in grass-addons/grass7: . temporal temporal/t.rast.whatcsv temporal/t.rast.whatcsv/testsuite Message-ID: <20150925153947.91B4639012E@trac.osgeo.org> Author: neteler Date: 2015-09-25 08:39:47 -0700 (Fri, 25 Sep 2015) New Revision: 66334 Added: grass-addons/grass7/temporal/ grass-addons/grass7/temporal/Makefile grass-addons/grass7/temporal/t.rast.whatcsv/ grass-addons/grass7/temporal/t.rast.whatcsv/Makefile grass-addons/grass7/temporal/t.rast.whatcsv/t.rast.whatcsv.html grass-addons/grass7/temporal/t.rast.whatcsv/t.rast.whatcsv.py grass-addons/grass7/temporal/t.rast.whatcsv/testsuite/ grass-addons/grass7/temporal/t.rast.whatcsv/testsuite/test_whatcsv.py Modified: grass-addons/grass7/Makefile Log: t.rast.whatcsv Addon: new prototype module by Soeren Gebbert Modified: grass-addons/grass7/Makefile =================================================================== --- grass-addons/grass7/Makefile 2015-09-25 13:59:13 UTC (rev 66333) +++ grass-addons/grass7/Makefile 2015-09-25 15:39:47 UTC (rev 66334) @@ -7,7 +7,8 @@ general \ imagery \ raster \ - vector + vector \ + temporal include $(MODULE_TOPDIR)/include/Make/Dir.make Added: grass-addons/grass7/temporal/Makefile =================================================================== --- grass-addons/grass7/temporal/Makefile (rev 0) +++ grass-addons/grass7/temporal/Makefile 2015-09-25 15:39:47 UTC (rev 66334) @@ -0,0 +1,8 @@ +MODULE_TOPDIR = .. + +SUBDIRS = \ + t.rast.whatcsv + +include $(MODULE_TOPDIR)/include/Make/Dir.make + +default: subdirs Property changes on: grass-addons/grass7/temporal/Makefile ___________________________________________________________________ Added: svn:mime-type + text/x-makefile Added: svn:eol-style + native Added: grass-addons/grass7/temporal/t.rast.whatcsv/Makefile =================================================================== --- grass-addons/grass7/temporal/t.rast.whatcsv/Makefile (rev 0) +++ grass-addons/grass7/temporal/t.rast.whatcsv/Makefile 2015-09-25 15:39:47 UTC (rev 66334) @@ -0,0 +1,7 @@ +MODULE_TOPDIR = ../../ + +PGM = t.rast.whatcsv + +include $(MODULE_TOPDIR)/include/Make/Script.make + +default: script $(TEST_DST) Property changes on: grass-addons/grass7/temporal/t.rast.whatcsv/Makefile ___________________________________________________________________ Added: svn:mime-type + text/x-makefile Added: svn:eol-style + native Added: grass-addons/grass7/temporal/t.rast.whatcsv/t.rast.whatcsv.html =================================================================== --- grass-addons/grass7/temporal/t.rast.whatcsv/t.rast.whatcsv.html (rev 0) +++ grass-addons/grass7/temporal/t.rast.whatcsv/t.rast.whatcsv.html 2015-09-25 15:39:47 UTC (rev 66334) @@ -0,0 +1,133 @@ +

    DESCRIPTION

    + +t.rast.what is designed to sample space time raster datasets +at specific point coordinates using r.what internally. +The output of r.what +is transformed to different output layouts. +The output layouts can be specified using the layout option. +

    +Three layouts can be specified: +

      +
    • 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, this order is the original r.what output, except that the column names are the time stamps
    • +
    + +Please have a look at the example to see the supported layouts. +

    +This module is designed to run several instances of r.what to sample +subsets of a space time raster dataset in parallel. Several intermediate +text files will be created that are merged into a single file at the +end of the processing. +

    +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 +output option is set to "-". + +

    EXAMPLES

    + +

    Data preparation

    +In the following examples we sample a space time raster dataset that contains +4 raster map layers. First we create the STRDS that will be sampled with t.rast.what. + +
    +g.region s=0 n=80 w=0 e=120 b=0 t=50 res=10
    +
    +# Generate data
    +r.mapcalc expression="a_1 = 1" -s
    +r.mapcalc expression="a_2 = 2" -s
    +r.mapcalc expression="a_3 = 3" -s
    +r.mapcalc expression="a_4 = 4" -s
    +
    +t.create type=strds output=A title="A test" descr="A test"
    +
    +t.register -i type=raster input=A maps=a_1,a_2,a_3,a_4 \
    +    start='1990-01-01' increment="1 month"
    +
    + +

    Example 1

    + +The first approach uses text coordinates as input and stdout as output, +the layout is one coordinate(point per column: + + +
    +t.rast.what strds=A coordinates="115,36,79,45" layout=col -n
    +
    +start|end|115.0000000000;36.0000000000|79.0000000000;45.0000000000
    +1990-01-01 00:00:00|1990-02-01 00:00:00|1|1
    +1990-02-01 00:00:00|1990-03-01 00:00:00|2|2
    +1990-03-01 00:00:00|1990-04-01 00:00:00|3|3
    +1990-04-01 00:00:00|1990-05-01 00:00:00|4|4
    +
    + +

    Example 2

    + +A vector map layer can be used as input to sample the STRDS. All +three available layouts are demonstrated using the vector map for sampling. + +
    +# First create the vector map layer based on random points
    +v.random output=points n=3 seed=1
    +
    +# Row layout using a text file as output
    +t.rast.what strds=A points=points output=result.txt layout=row -n
    +
    +cat result.txt
    +
    +115.0043586274|36.3593955783|1990-01-01 00:00:00|1990-02-01 00:00:00|1
    +115.0043586274|36.3593955783|1990-02-01 00:00:00|1990-03-01 00:00:00|2
    +115.0043586274|36.3593955783|1990-03-01 00:00:00|1990-04-01 00:00:00|3
    +115.0043586274|36.3593955783|1990-04-01 00:00:00|1990-05-01 00:00:00|4
    +79.6816763826|45.2391522853|1990-01-01 00:00:00|1990-02-01 00:00:00|1
    +79.6816763826|45.2391522853|1990-02-01 00:00:00|1990-03-01 00:00:00|2
    +79.6816763826|45.2391522853|1990-03-01 00:00:00|1990-04-01 00:00:00|3
    +79.6816763826|45.2391522853|1990-04-01 00:00:00|1990-05-01 00:00:00|4
    +97.4892579600|79.2347263950|1990-01-01 00:00:00|1990-02-01 00:00:00|1
    +97.4892579600|79.2347263950|1990-02-01 00:00:00|1990-03-01 00:00:00|2
    +97.4892579600|79.2347263950|1990-03-01 00:00:00|1990-04-01 00:00:00|3
    +97.4892579600|79.2347263950|1990-04-01 00:00:00|1990-05-01 00:00:00|4
    +
    +
    +# Column layout order using stdout as output
    +t.rast.what strds=A points=points layout=col -n
    +
    +start|end|115.0043586274;36.3593955783|79.6816763826;45.2391522853|97.4892579600;79.2347263950
    +1990-01-01 00:00:00|1990-02-01 00:00:00|1|1|1
    +1990-02-01 00:00:00|1990-03-01 00:00:00|2|2|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 
    +# using the where statement to select a subset of the STRDS
    +# and stdout as output
    +t.rast.what strds=A points=points \
    +    where="start_time >= '1990-03-01'" layout=timerow -n
    +
    +x|y|1990-03-01 00:00:00;1990-04-01 00:00:00|1990-04-01 00:00:00;1990-05-01 00:00:00
    +115.004358627375|36.3593955782903|3|4
    +79.681676382576|45.2391522852909|3|4
    +97.4892579600048|79.2347263950131|3|4
    +
    + +

    SEE ALSO

    + + +r.what , +r.neighbors, +t.rast.aggregate.ds, +t.rast.extract, +t.info, +g.region, +r.mask + + + +

    AUTHOR

    + +Sören Gebbert, Thünen Institute of Climate-Smart Agriculture + +

    Last changed: $Date$ Property changes on: grass-addons/grass7/temporal/t.rast.whatcsv/t.rast.whatcsv.html ___________________________________________________________________ Added: svn:mime-type + text/html Added: svn:keywords + Author Date Id Added: svn:eol-style + native Added: grass-addons/grass7/temporal/t.rast.whatcsv/t.rast.whatcsv.py =================================================================== --- grass-addons/grass7/temporal/t.rast.whatcsv/t.rast.whatcsv.py (rev 0) +++ grass-addons/grass7/temporal/t.rast.whatcsv/t.rast.whatcsv.py 2015-09-25 15:39:47 UTC (rev 66334) @@ -0,0 +1,158 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +############################################################################ +# +# MODULE: t.rast.whatcsv +# AUTHOR(S): Soeren Gebbert +# +# PURPOSE: Sample a space time raster dataset at specific vector point +# coordinates and write the output to stdout using different +# layouts +# +# COPYRIGHT: (C) 2015 by the GRASS Development Team +# +# This program is free software under the GNU General Public +# License (version 2). Read the file COPYING that comes with GRASS +# for details. +# +############################################################################# + +#%module +#% description: Sample a space time raster dataset at specific space-time point coordinates from a csv file and write the output to stdout +#% keyword: temporal +#% keyword: raster +#% keyword: sampling +#% keyword: time +#%end + +#%option G_OPT_F_INPUT +#% key: csv +#% description: Name for the output input csv file +#%end + +#%option G_OPT_STRDS_INPUT +#% key: strds +#%end + +#%option G_OPT_F_OUTPUT +#% required: no +#% description: Name for the output file or "-" in case stdout should be used +#% answer: - +#%end + +#%option G_OPT_T_WHERE +#%end + +#%option G_OPT_M_NULL_VALUE +#%end + +#%option G_OPT_F_SEP +#%end + +#%option +#% key: skip +#% type: integer +#% description: Number of header lines to skip in the csv file +#% required: yes +#%end + +#%flag +#% key: n +#% description: Output header row +#%end + +## Temporary disabled the r.what flags due to test issues +##%flag +##% key: f +##% description: Show the category labels of the grid cell(s) +##%end + +##%flag +##% key: r +##% description: Output color values as RRR:GGG:BBB +##%end + +##%flag +##% key: i +##% description: Output integer category values, not cell values +##%end + +import sys +import copy +import csv +import grass.script as gscript +import grass.temporal as tgis +import grass.pygrass.modules as pymod +from grass.gunittest.gmodules import SimpleModule + + +############################################################################ + +def main(options, flags): + + # Get the options + csv_file = options["csv"] + strds = options["strds"] + output = options["output"] + where = options["where"] + null_value = options["null_value"] + separator = options["separator"] + + write_header = flags["n"] + + #output_cat_label = flags["f"] + #output_color = flags["r"] + #output_cat = flags["i"] + + overwrite = gscript.overwrite() + + # Make sure the temporal database exists + tgis.init() + # We need a database interface + dbif = tgis.SQLDatabaseInterfaceConnection() + dbif.connect() + + sp = tgis.open_old_stds(strds, "strds", dbif) + + # Setup separator + if separator == "pipe": + separator = "|" + if separator == "comma": + separator = "," + if separator == "space": + separator = " " + if separator == "tab": + separator = "\t" + if separator == "newline": + separator = "\n" + + + r_what = SimpleModule("r.what", map="dummy", + output="-", + separator=separator, + quiet=True) + + reader = csv.reader(open(csv_file, "r"), delimiter=separator) + + for line in reader: + id_, x, y, timestamp = line + + start = tgis.string_to_datetime(timestamp) + where = "start_time <= \'" + str(start) + "\' AND end_time > \'" + str(start) + "\'" + rows = sp.get_registered_maps(columns="id", where=where, + dbif=dbif) + for entry in rows: + r_what.inputs.map = entry[0] + r_what.inputs.coordinates = [x,y] + r_what.run() + out = "%s%s%s"%(id_, separator, r_what.outputs.stdout) + + sys.stdout.write(out) + + dbif.close() + + + +if __name__ == "__main__": + options, flags = gscript.parser() + main(options, flags) Property changes on: grass-addons/grass7/temporal/t.rast.whatcsv/t.rast.whatcsv.py ___________________________________________________________________ Added: svn:executable + * Added: svn:mime-type + text/x-python Added: svn:eol-style + native Added: grass-addons/grass7/temporal/t.rast.whatcsv/testsuite/test_whatcsv.py =================================================================== --- grass-addons/grass7/temporal/t.rast.whatcsv/testsuite/test_whatcsv.py (rev 0) +++ grass-addons/grass7/temporal/t.rast.whatcsv/testsuite/test_whatcsv.py 2015-09-25 15:39:47 UTC (rev 66334) @@ -0,0 +1,66 @@ +"""Test t.rast.whatcsv + +(C) 2014 by the GRASS Development Team +This program is free software under the GNU General Public +License (>=v2). Read the file COPYING that comes with GRASS +for details. + + at author Soeren Gebbert +""" + +from grass.gunittest.case import TestCase +from grass.gunittest.gmodules import SimpleModule + +class TestRasterWhatCSV(TestCase): + + @classmethod + def setUpClass(cls): + """Initiate the temporal GIS and set the region + """ + cls.use_temp_region() + cls.runModule("g.region", s=0, n=80, w=0, e=120, b=0, t=50, res=10, res3=10) + + cls.runModule("r.mapcalc", expression="a_1 = 100", overwrite=True) + cls.runModule("r.mapcalc", expression="a_2 = 200", overwrite=True) + cls.runModule("r.mapcalc", expression="a_3 = 300", overwrite=True) + cls.runModule("r.mapcalc", expression="a_4 = 400", overwrite=True) + + csv_file = open("test.csv", "w") + csv_file.write("1|115.0043586274|36.3593955783|2001-01-01 00:00:00\n") + csv_file.write("2|79.6816763826|45.2391522853|2001-04-01 00:00:00\n") + csv_file.write("3|97.4892579600|79.2347263950|2001-07-01 00:00:00\n") + csv_file.write("4|115.0043586274|36.3593955783|2001-11-01 00:00:00\n") + csv_file.close() + + cls.runModule("t.create", type="strds", temporaltype="absolute", + output="A", title="A test", description="A test", + overwrite=True) + cls.runModule("t.register", flags="i", type="raster", input="A", + maps="a_1,a_2,a_3,a_4", start="2001-01-01", + increment="3 months", overwrite=True) + + @classmethod + def tearDownClass(cls): + """Remove the temporary region + """ + cls.runModule("t.remove", flags="rf", type="strds", + inputs="A") + cls.del_temp_region() + + def test_1t(self): + + t_rast_whatcsv = SimpleModule("t.rast.whatcsv", strds="A", + csv="test.csv", overwrite=True, + skip=0, verbose=True) + self.assertModule(t_rast_whatcsv) + + text="""1|115.0043586274|36.3593955783||100 +2|79.6816763826|45.2391522853||200 +3|97.4892579600|79.2347263950||300 +4|115.0043586274|36.3593955783||400 +""" + self.assertLooksLike(text, t_rast_whatcsv.outputs.stdout) + +if __name__ == '__main__': + from grass.gunittest.main import test + test() Property changes on: grass-addons/grass7/temporal/t.rast.whatcsv/testsuite/test_whatcsv.py ___________________________________________________________________ Added: svn:mime-type + text/x-python Added: svn:eol-style + native From svn_grass at osgeo.org Fri Sep 25 08:45:54 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Fri, 25 Sep 2015 08:45:54 -0700 Subject: [GRASS-SVN] r66335 - in grass/branches/releasebranch_7_0/temporal: . t.vect.what.strds Message-ID: <20150925154554.387A739012E@trac.osgeo.org> Author: neteler Date: 2015-09-25 08:45:54 -0700 (Fri, 25 Sep 2015) New Revision: 66335 Modified: grass/branches/releasebranch_7_0/temporal/t.vect.what.strds/t.vect.what.strds.html grass/branches/releasebranch_7_0/temporal/temporalintro.html Log: temporal manual: link to v.what.strds Modified: grass/branches/releasebranch_7_0/temporal/t.vect.what.strds/t.vect.what.strds.html =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.vect.what.strds/t.vect.what.strds.html 2015-09-25 15:39:47 UTC (rev 66334) +++ grass/branches/releasebranch_7_0/temporal/t.vect.what.strds/t.vect.what.strds.html 2015-09-25 15:45:54 UTC (rev 66335) @@ -24,6 +24,7 @@ v.univar, v.what.rast, v.what.rast3, +v.what.strds, v.what.vect, t.create, t.info Modified: grass/branches/releasebranch_7_0/temporal/temporalintro.html =================================================================== --- grass/branches/releasebranch_7_0/temporal/temporalintro.html 2015-09-25 15:39:47 UTC (rev 66334) +++ grass/branches/releasebranch_7_0/temporal/temporalintro.html 2015-09-25 15:45:54 UTC (rev 66335) @@ -113,6 +113,8 @@

  • t.rast.neighbors
  • +Additionally, there is v.what.strds. +

    Aggregation and accumulation analysis

    The temporal framework support the aggregation of space time raster From svn_grass at osgeo.org Sat Sep 26 05:42:28 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sat, 26 Sep 2015 05:42:28 -0700 Subject: [GRASS-SVN] r66336 - grass/trunk/gui/wxpython/modules Message-ID: <20150926124228.6852C3900B4@trac.osgeo.org> Author: martinl Date: 2015-09-26 05:42:28 -0700 (Sat, 26 Sep 2015) New Revision: 66336 Modified: grass/trunk/gui/wxpython/modules/import_export.py Log: wxGUI: switch back from r.imprort/v.import to r.in.gdal/v.in.ogr Modified: grass/trunk/gui/wxpython/modules/import_export.py =================================================================== --- grass/trunk/gui/wxpython/modules/import_export.py 2015-09-25 15:45:54 UTC (rev 66335) +++ grass/trunk/gui/wxpython/modules/import_export.py 2015-09-26 12:42:28 UTC (rev 66336) @@ -87,7 +87,7 @@ continue elif cmd == 'r.external' and name not in ('o', 'e', 'r', 'h', 'v'): continue - elif cmd == 'v.import': + elif cmd == 'v.in.ogr' and name not in ('c', 'z', 't', 'o', 'r', 'e', 'w'): continue elif cmd == 'v.external' and name not in ('b'): continue @@ -103,7 +103,7 @@ desc = p.get('description', '') if not name and not desc: continue - if cmd == 'v.import' and name == 'encoding': + if cmd == 'v.in.ogr' and name == 'encoding': self.options_par[name] = (_('Encoding'), wx.TextCtrl(parent = self.panel, id = wx.ID_ANY)) @@ -375,7 +375,7 @@ 'output=%s' % output, 'layer=%s' % layer] else: - cmd = ['v.import', + cmd = ['v.in.ogr', 'input=%s' % dsn, 'layer=%s' % layer, 'output=%s' % output] @@ -452,7 +452,7 @@ return 'r.external' else: if self.ogr: - return 'v.import' + return 'v.in.ogr' else: return 'r.import' From svn_grass at osgeo.org Sat Sep 26 06:12:19 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sat, 26 Sep 2015 06:12:19 -0700 Subject: [GRASS-SVN] r66337 - grass/trunk/gui/wxpython/gui_core Message-ID: <20150926131219.B34EB3900B4@trac.osgeo.org> Author: martinl Date: 2015-09-26 06:12:19 -0700 (Sat, 26 Sep 2015) New Revision: 66337 Modified: grass/trunk/gui/wxpython/gui_core/dialogs.py Log: wxGUI: remove unused import (dialogs) Modified: grass/trunk/gui/wxpython/gui_core/dialogs.py =================================================================== --- grass/trunk/gui/wxpython/gui_core/dialogs.py 2015-09-26 12:42:28 UTC (rev 66336) +++ grass/trunk/gui/wxpython/gui_core/dialogs.py 2015-09-26 13:12:19 UTC (rev 66337) @@ -40,8 +40,7 @@ from core.gcmd import GError, RunCommand, GMessage from gui_core.gselect import LocationSelect, MapsetSelect, Select, \ OgrTypeSelect, SubGroupSelect -from gui_core.widgets import SingleSymbolPanel, GListCtrl, SimpleValidator, \ - MapValidator, LayersList +from gui_core.widgets import SingleSymbolPanel, GListCtrl, SimpleValidator, MapValidator from core.utils import _ from core.settings import UserSettings from core.debug import Debug From svn_grass at osgeo.org Sat Sep 26 06:14:18 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sat, 26 Sep 2015 06:14:18 -0700 Subject: [GRASS-SVN] r66338 - grass/trunk/gui/wxpython/gui_core Message-ID: <20150926131418.8178D3900B4@trac.osgeo.org> Author: martinl Date: 2015-09-26 06:14:18 -0700 (Sat, 26 Sep 2015) New Revision: 66338 Modified: grass/trunk/gui/wxpython/gui_core/forms.py Log: wxGUI: fix LayersList import (forms) Modified: grass/trunk/gui/wxpython/gui_core/forms.py =================================================================== --- grass/trunk/gui/wxpython/gui_core/forms.py 2015-09-26 13:12:19 UTC (rev 66337) +++ grass/trunk/gui/wxpython/gui_core/forms.py 2015-09-26 13:14:18 UTC (rev 66338) @@ -93,7 +93,7 @@ from core.settings import UserSettings from gui_core.widgets import FloatValidator, GNotebook, FormNotebook, FormListbook from core.giface import Notification -from gui_core.dialogs import LayersList +from gui_core.widgets import LayersList wxUpdateDialog, EVT_DIALOG_UPDATE = NewEvent() From svn_grass at osgeo.org Sat Sep 26 07:18:35 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sat, 26 Sep 2015 07:18:35 -0700 Subject: [GRASS-SVN] r66339 - grass/trunk/lib/python/temporal Message-ID: <20150926141836.057FC3901A9@trac.osgeo.org> Author: neteler Date: 2015-09-26 07:18:35 -0700 (Sat, 26 Sep 2015) New Revision: 66339 Modified: grass/trunk/lib/python/temporal/stds_import.py Log: t.rast.import: report progress to the user Modified: grass/trunk/lib/python/temporal/stds_import.py =================================================================== --- grass/trunk/lib/python/temporal/stds_import.py 2015-09-26 13:14:18 UTC (rev 66338) +++ grass/trunk/lib/python/temporal/stds_import.py 2015-09-26 14:18:35 UTC (rev 66339) @@ -210,6 +210,9 @@ tar = tarfile.open(name=input, mode='r') # Check for important files + msgr = get_tgis_message_interface() + msgr.message(_("Checking validity of input file (size: %0.1f MB). Make take a while..." + % (os.path.getsize(input)/(1024*1024.0)))) members = tar.getnames() # Make sure that the basenames of the files are used for comparison member_basenames = [os.path.basename(name) for name in members] @@ -221,6 +224,7 @@ if proj_file_name not in member_basenames: gscript.fatal(_("Unable to find projection file <%s>") % proj_file_name) + msgr.message(_("Extracting data...")) tar.extractall(path=directory) tar.close() From svn_grass at osgeo.org Sat Sep 26 07:18:59 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sat, 26 Sep 2015 07:18:59 -0700 Subject: [GRASS-SVN] r66340 - grass/branches/releasebranch_7_0/lib/python/temporal Message-ID: <20150926141859.54AA53901A9@trac.osgeo.org> Author: neteler Date: 2015-09-26 07:18:59 -0700 (Sat, 26 Sep 2015) New Revision: 66340 Modified: grass/branches/releasebranch_7_0/lib/python/temporal/stds_import.py Log: t.rast.import: report progress to the user Modified: grass/branches/releasebranch_7_0/lib/python/temporal/stds_import.py =================================================================== --- grass/branches/releasebranch_7_0/lib/python/temporal/stds_import.py 2015-09-26 14:18:35 UTC (rev 66339) +++ grass/branches/releasebranch_7_0/lib/python/temporal/stds_import.py 2015-09-26 14:18:59 UTC (rev 66340) @@ -210,6 +210,9 @@ tar = tarfile.open(name=input, mode='r') # Check for important files + msgr = get_tgis_message_interface() + msgr.message(_("Checking validity of input file (size: %0.1f MB). Make take a while..." + % (os.path.getsize(input)/(1024*1024.0)))) members = tar.getnames() # Make sure that the basenames of the files are used for comparison member_basenames = [os.path.basename(name) for name in members] @@ -221,6 +224,7 @@ if proj_file_name not in member_basenames: gscript.fatal(_("Unable to find projection file <%s>") % proj_file_name) + msgr.message(_("Extracting data...")) tar.extractall(path=directory) tar.close() From svn_grass at osgeo.org Sat Sep 26 16:23:29 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sat, 26 Sep 2015 16:23:29 -0700 Subject: [GRASS-SVN] r66341 - grass/trunk/temporal/t.rast.series Message-ID: <20150926232329.E212C3901A9@trac.osgeo.org> Author: neteler Date: 2015-09-26 16:23:29 -0700 (Sat, 26 Sep 2015) New Revision: 66341 Modified: grass/trunk/temporal/t.rast.series/t.rast.series.py Log: t.rast.series: inform user then -z flag is switched on (much slower) Modified: grass/trunk/temporal/t.rast.series/t.rast.series.py =================================================================== --- grass/trunk/temporal/t.rast.series/t.rast.series.py 2015-09-26 14:18:59 UTC (rev 66340) +++ grass/trunk/temporal/t.rast.series/t.rast.series.py 2015-09-26 23:23:29 UTC (rev 66341) @@ -101,6 +101,7 @@ flag = "" if len(rows) > 1000: + grass.warning(_("Processing over 1000 maps: activating -z flag of r.series which slows down processing")) flag += "z" if nulls: flag += "n" From svn_grass at osgeo.org Sat Sep 26 16:25:00 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sat, 26 Sep 2015 16:25:00 -0700 Subject: [GRASS-SVN] r66342 - grass/branches/releasebranch_7_0/temporal/t.rast.series Message-ID: <20150926232500.60E8D3901A9@trac.osgeo.org> Author: neteler Date: 2015-09-26 16:25:00 -0700 (Sat, 26 Sep 2015) New Revision: 66342 Modified: grass/branches/releasebranch_7_0/temporal/t.rast.series/t.rast.series.py Log: temporal modules: Fixed usage of the 'z' flag; inform user then -z flag is switched on (much slower) (trunk, r66319 + r66341) Modified: grass/branches/releasebranch_7_0/temporal/t.rast.series/t.rast.series.py =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.rast.series/t.rast.series.py 2015-09-26 23:23:29 UTC (rev 66341) +++ grass/branches/releasebranch_7_0/temporal/t.rast.series/t.rast.series.py 2015-09-26 23:25:00 UTC (rev 66342) @@ -99,7 +99,10 @@ file.close() - flag = "z" + flag = "" + if len(rows) > 1000: + grass.warning(_("Processing over 1000 maps: activating -z flag of r.series which slows down processing")) + flag += "z" if nulls: flag += "n" From svn_grass at osgeo.org Sat Sep 26 17:14:00 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sat, 26 Sep 2015 17:14:00 -0700 Subject: [GRASS-SVN] r66343 - grass/trunk/vector/v.in.lidar Message-ID: <20150927001400.9E9533901A9@trac.osgeo.org> Author: wenzeslaus Date: 2015-09-26 17:14:00 -0700 (Sat, 26 Sep 2015) New Revision: 66343 Modified: grass/trunk/vector/v.in.lidar/main.c Log: v.in.lidar: store return and class as cats or store no cats If requested, return, class and generated ID will be stored in separate layers specified by the user. ID is stored by default (original behavior). Storing of IDs can be disabled by -c flag. This offers a slight speed up comparing to just not storing the attributes. Using this one can get return and class to GRASS without creating the attribute table. Modified: grass/trunk/vector/v.in.lidar/main.c =================================================================== --- grass/trunk/vector/v.in.lidar/main.c 2015-09-26 23:25:00 UTC (rev 66342) +++ grass/trunk/vector/v.in.lidar/main.c 2015-09-27 00:14:00 UTC (rev 66343) @@ -112,9 +112,11 @@ float xmin = 0., ymin = 0., xmax = 0., ymax = 0.; struct GModule *module; struct Option *in_opt, *out_opt, *spat_opt, *filter_opt, *class_opt; + struct Option *id_layer_opt, *return_layer_opt, *class_layer_opt; struct Option *skip_opt, *preserve_opt, *offset_opt, *limit_opt; struct Option *outloc_opt; struct Flag *print_flag, *notab_flag, *region_flag, *notopo_flag; + struct Flag *nocats_flag; struct Flag *over_flag, *extend_flag, *no_import_flag; char buf[2000]; struct Key_Value *loc_proj_info = NULL, *loc_proj_units = NULL; @@ -170,7 +172,25 @@ in_opt->description = _("LiDAR input files in LAS format (*.las or *.laz)"); out_opt = G_define_standard_option(G_OPT_V_OUTPUT); - + + id_layer_opt = G_define_standard_option(G_OPT_V_FIELD); + id_layer_opt->key = "id_layer"; + id_layer_opt->label = _("Layer number to store generated point ID as category"); + id_layer_opt->answer = NULL; + id_layer_opt->guisection = _("Categories"); + + return_layer_opt = G_define_standard_option(G_OPT_V_FIELD); + return_layer_opt->key = "return_layer"; + return_layer_opt->label = _("Layer number to store return number as category"); + return_layer_opt->answer = NULL; + return_layer_opt->guisection = _("Categories"); + + class_layer_opt = G_define_standard_option(G_OPT_V_FIELD); + class_layer_opt->key = "class_layer"; + class_layer_opt->label = _("Layer number to store class number as category"); + class_layer_opt->answer = NULL; + class_layer_opt->guisection = _("Categories"); + spat_opt = G_define_option(); spat_opt->key = "spatial"; spat_opt->type = TYPE_DOUBLE; @@ -265,6 +285,14 @@ notab_flag = G_define_standard_flag(G_FLG_V_TABLE); notab_flag->guisection = _("Speed"); + nocats_flag = G_define_flag(); + nocats_flag->key = 'c'; + nocats_flag->label = + _("Store only the coordinates"); + nocats_flag->description = + _("Do not add categories to points and do not create attribute table"); + nocats_flag->guisection = _("Speed"); + notopo_flag = G_define_standard_flag(G_FLG_V_TOPO); notopo_flag->guisection = _("Speed"); @@ -283,6 +311,7 @@ no_import_flag->suppress_required = YES; G_option_exclusive(skip_opt, preserve_opt, NULL); + G_option_excludes(nocats_flag, id_layer_opt, return_layer_opt, class_layer_opt, NULL); /* The parser checks if the map already exists in current mapset, this is * wrong if location options is used, so we switch out the check and do it @@ -292,6 +321,10 @@ if (G_parser(argc, argv)) exit(EXIT_FAILURE); + /* no cats implies no table */ + if (nocats_flag->answer) + notab_flag->answer = 1; + /* Don't crash on cmd line if file not found */ if (access(in_opt->answer, F_OK) != 0) { G_fatal_error(_("Input file <%s> does not exist"), in_opt->answer); @@ -344,6 +377,36 @@ G_fatal_error(_("Unknown filter option <%s>"), filter_opt->answer); } + int id_layer = 0; + int return_layer = 0; + int class_layer = 0; + if (id_layer_opt->answer) + id_layer = atoi(id_layer_opt->answer); + if (return_layer_opt->answer) + return_layer = atoi(return_layer_opt->answer); + if (class_layer_opt->answer) + class_layer = atoi(class_layer_opt->answer); + /* If no layer specified by user, force 1 to be used for ids. + * If id_layer not specified by the attributes table was, find a layer. + * nocats implies notab and we don't add any layers. + * Also when layers are set to zero by user, we consider it as if + * the nocats flag would be specified. We use !id_layer_opt->answer + * to see that user was the one not setting the id_layer which are + * are about to turn on. + * Later on, layer set to 0 is considered as no layer set. + */ + if (!nocats_flag->answer && !id_layer_opt->answer && !return_layer && !class_layer) { + id_layer = 1; + } + if (!notab_flag->answer && !id_layer) { + /* get the first free layer number */ + for (i = 1; i <= MAX(return_layer, class_layer) + 1; i++) { + if (i != return_layer && i != class_layer) + break; + } + id_layer = i; + } + if (region_flag->answer) { if (spat_opt->answer) G_fatal_error(_("Select either the current region flag or the spatial option, not both")); @@ -568,9 +631,9 @@ if (!notab_flag->answer) { char *cat_col_name = GV_KEY_COLUMN; - Fi = Vect_default_field_info(&Map, 1, NULL, GV_1TABLE); + Fi = Vect_default_field_info(&Map, id_layer, NULL, GV_1TABLE); - Vect_map_add_dblink(&Map, 1, out_opt->answer, Fi->table, + Vect_map_add_dblink(&Map, id_layer, out_opt->answer, Fi->table, cat_col_name, Fi->database, Fi->driver); /* check available LAS info, depends on POINT DATA RECORD FORMAT [0-5] */ @@ -810,7 +873,12 @@ } Vect_append_point(Points, x, y, z); - Vect_cat_set(Cats, 1, cat); + if (id_layer) + Vect_cat_set(Cats, id_layer, cat); + if (return_layer) + Vect_cat_set(Cats, return_layer, LASPoint_GetReturnNumber(LAS_point)); + if (class_layer) + Vect_cat_set(Cats, class_layer, LASPoint_GetClassification(LAS_point)); Vect_write_line(&Map, GV_POINT, Points, Cats); /* Attributes */ From svn_grass at osgeo.org Sat Sep 26 18:30:37 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sat, 26 Sep 2015 18:30:37 -0700 Subject: [GRASS-SVN] r66344 - grass/trunk/vector/v.in.lidar Message-ID: <20150927013037.A2B2539012E@trac.osgeo.org> Author: wenzeslaus Date: 2015-09-26 18:30:37 -0700 (Sat, 26 Sep 2015) New Revision: 66344 Modified: grass/trunk/vector/v.in.lidar/main.c Log: v.in.lidar: catch case when we run out of categories We should be able to import more points then we can have unique categories. This protects against (signed) integer overflow, ends as if GV_CAT_MAX would be an import limit and reports a warning. This also fixes wrong format string in case of unsigned long implementation. Modified: grass/trunk/vector/v.in.lidar/main.c =================================================================== --- grass/trunk/vector/v.in.lidar/main.c 2015-09-27 00:14:00 UTC (rev 66343) +++ grass/trunk/vector/v.in.lidar/main.c 2015-09-27 01:30:37 UTC (rev 66344) @@ -149,6 +149,8 @@ struct line_pnts *Points; struct line_cats *Cats; + int cat_max_reached = FALSE; + #ifdef HAVE_LONG_LONG_INT unsigned long long n_features, feature_count, n_outside, n_filtered, n_class_filtered, not_valid; @@ -966,6 +968,11 @@ if (limit_n_counter == limit_n) break; } + + if (cat == GV_CAT_MAX) { + cat_max_reached = TRUE; + break; + } cat++; } G_percent(n_features, n_features, 1); /* finish it */ @@ -984,13 +991,21 @@ Vect_build(&Map); Vect_close(&Map); + /* compute how much we have imported */ #ifdef HAVE_LONG_LONG_INT + unsigned long long points_imported; +#else + unsigned long points_imported; +#endif + /* valid only when not having count limit */ + points_imported = n_features - not_valid - n_outside - n_filtered + - n_class_filtered - offset_n_counter - n_count_filtered; + +#ifdef HAVE_LONG_LONG_INT if (limit_n) G_message(_("%llu points imported (limit was %llu)"), limit_n_counter, limit_n); else - G_message(_("%llu points imported"), - n_features - not_valid - n_outside - n_filtered - n_class_filtered - - offset_n_counter - n_count_filtered); + G_message(_("%llu points imported"), points_imported); if (not_valid) G_message(_("%llu input points were not valid"), not_valid); if (n_outside) @@ -1005,11 +1020,9 @@ G_message(_("%llu input points were skipped by count-based decimation"), n_count_filtered); #else if (limit_n) - G_message(_("%d points imported (limit was %d)"), limit_n_counter, limit_n); + G_message(_("%lu points imported (limit was %d)"), limit_n_counter, limit_n); else - G_message(_("%d points imported"), - n_features - not_valid - n_outside - n_filtered - n_class_filtered - - offset_n_counter - n_count_filtered); + G_message(_("%lu points imported"), points_imported); if (not_valid) G_message(_("%lu input points were not valid"), not_valid); if (n_outside) @@ -1027,6 +1040,10 @@ if (limit_n) G_message(_("The rest of points was ignored")); + if (cat_max_reached) + G_warning(_("Maximum number of categories reached (%d). Import ended prematurely." + " Try to import without using category as an ID."), GV_CAT_MAX); + /* -------------------------------------------------------------------- */ /* Extend current window based on dataset. */ /* -------------------------------------------------------------------- */ From svn_grass at osgeo.org Sat Sep 26 18:59:51 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sat, 26 Sep 2015 18:59:51 -0700 Subject: [GRASS-SVN] r66345 - grass/trunk/vector/v.in.lidar Message-ID: <20150927015951.3CF3F3901A9@trac.osgeo.org> Author: wenzeslaus Date: 2015-09-26 18:59:51 -0700 (Sat, 26 Sep 2015) New Revision: 66345 Modified: grass/trunk/vector/v.in.lidar/main.c Log: v.in.lidar: count imported points explicitly This avoids limits imposed by header reading functions in libLAS. Assuming that the libLAS reading functions will actually still work. Ignoring the issue for messages before processing, percentage and info. Modified: grass/trunk/vector/v.in.lidar/main.c =================================================================== --- grass/trunk/vector/v.in.lidar/main.c 2015-09-27 01:30:37 UTC (rev 66344) +++ grass/trunk/vector/v.in.lidar/main.c 2015-09-27 01:59:51 UTC (rev 66345) @@ -152,10 +152,14 @@ int cat_max_reached = FALSE; #ifdef HAVE_LONG_LONG_INT - unsigned long long n_features, feature_count, n_outside, + unsigned long long n_features; /* what libLAS reports as point count */ + unsigned long long points_imported; /* counter how much we have imported */ + unsigned long long feature_count, n_outside, n_filtered, n_class_filtered, not_valid; #else - unsigned long n_features, feature_count, n_outside, + unsigned long n_features; + unsigned long points_imported; + unsigned long feature_count, n_outside, n_filtered, n_class_filtered, not_valid; #endif @@ -619,7 +623,12 @@ G_fatal_error(_("Unable to create vector map <%s>"), out_opt->answer); Vect_hist_command(&Map); - + + /* libLAS uses uint32_t according to the source code + * or unsigned int according to the online doc, + * so just storing in long doesn't help. + * Thus, we use this just for the messages and percents. + */ n_features = LASHeader_GetPointRecordsCount(LAS_header); las_point_format = LASHeader_GetDataFormatId(LAS_header); @@ -744,6 +753,7 @@ } /* Import feature */ + points_imported = 0; cat = 1; not_valid = 0; feature_count = 0; @@ -974,6 +984,7 @@ break; } cat++; + points_imported++; } G_percent(n_features, n_features, 1); /* finish it */ @@ -991,15 +1002,12 @@ Vect_build(&Map); Vect_close(&Map); - /* compute how much we have imported */ -#ifdef HAVE_LONG_LONG_INT - unsigned long long points_imported; -#else - unsigned long points_imported; -#endif - /* valid only when not having count limit */ - points_imported = n_features - not_valid - n_outside - n_filtered - - n_class_filtered - offset_n_counter - n_count_filtered; + /* can be easily determined only when not having count limit */ + if (!limit_n && points_imported != n_features - not_valid - n_outside + - n_filtered - n_class_filtered - offset_n_counter - n_count_filtered) + G_warning(_("The underlying libLAS library is at its limits." + " Previously reported counts might have been distorted." + " However, the import itself should be unaffected.")); #ifdef HAVE_LONG_LONG_INT if (limit_n) From svn_grass at osgeo.org Sat Sep 26 19:12:05 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sat, 26 Sep 2015 19:12:05 -0700 Subject: [GRASS-SVN] r66346 - grass/trunk/vector/v.in.lidar Message-ID: <20150927021205.C2A6E3901A9@trac.osgeo.org> Author: wenzeslaus Date: 2015-09-26 19:12:05 -0700 (Sat, 26 Sep 2015) New Revision: 66346 Modified: grass/trunk/vector/v.in.lidar/main.c Log: v.in.lidar: check cat counter only when actually used This fixes 66344 which ignored r66343. Also fixes 66345 which reported unrelated warning when 66344 actually happened. Modified: grass/trunk/vector/v.in.lidar/main.c =================================================================== --- grass/trunk/vector/v.in.lidar/main.c 2015-09-27 01:59:51 UTC (rev 66345) +++ grass/trunk/vector/v.in.lidar/main.c 2015-09-27 02:12:05 UTC (rev 66346) @@ -978,8 +978,7 @@ if (limit_n_counter == limit_n) break; } - - if (cat == GV_CAT_MAX) { + if (id_layer && cat == GV_CAT_MAX) { cat_max_reached = TRUE; break; } @@ -1002,9 +1001,10 @@ Vect_build(&Map); Vect_close(&Map); - /* can be easily determined only when not having count limit */ - if (!limit_n && points_imported != n_features - not_valid - n_outside - - n_filtered - n_class_filtered - offset_n_counter - n_count_filtered) + /* can be easily determined only when iterated over all points */ + if (!limit_n && !cat_max_reached && points_imported != n_features + - not_valid - n_outside - n_filtered - n_class_filtered + - offset_n_counter - n_count_filtered) G_warning(_("The underlying libLAS library is at its limits." " Previously reported counts might have been distorted." " However, the import itself should be unaffected.")); From svn_grass at osgeo.org Sun Sep 27 04:10:53 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sun, 27 Sep 2015 04:10:53 -0700 Subject: [GRASS-SVN] r66347 - grass/trunk/temporal/t.remove Message-ID: <20150927111054.02CBB39012E@trac.osgeo.org> Author: neteler Date: 2015-09-27 04:10:53 -0700 (Sun, 27 Sep 2015) New Revision: 66347 Modified: grass/trunk/temporal/t.remove/t.remove.html grass/trunk/temporal/t.remove/t.remove.py Log: t.remove: msgs added to tell user what it does; enhance manual Modified: grass/trunk/temporal/t.remove/t.remove.html =================================================================== --- grass/trunk/temporal/t.remove/t.remove.html 2015-09-27 02:12:05 UTC (rev 66346) +++ grass/trunk/temporal/t.remove/t.remove.html 2015-09-27 11:10:53 UTC (rev 66347) @@ -1,22 +1,24 @@

    DESCRIPTION

    The module t.remove removes space time datasets (STRDS, STR3DS, -STVDS) from the temporal database. In other words, it deletes the relevant -database entries and not the maps. +STVDS) from the temporal database. In other words, by default it deletes +the relevant database entries but not the maps.

    Optionally, also the raster, 3D raster and vector maps of the space time -datasets can be removed using the -r (recursive) and -f -(force) flags. Recursive removal works only if both flags are checked -(use -rf). +datasets can be removed from the current mapset using the -r (recursive) +and -f (force) flags. This recursive removal only works if both flags +are checked together (use -rf).

    EXAMPLE

    In this example a space time raster dataset (STRDS) named precip_months_sum will be created using a subset of the monthly precipitation raster maps from the North Carolina climate sample data set. -In order to be able to show case recursive removal without deleting original -sample data, new data is generated by means of computing yearly precipitation -sums. Finally, all newly produced data (STRDS and raster maps) is removed again. +
    +In order to be able to show the case of recursive removal without deleting +the original sample data, we generate new data by means of computing +yearly precipitation sums. Eventually, all newly produced data (STRDS and +raster maps) are removed:
     #Create new and empty STRDS
    @@ -36,7 +38,7 @@
       years" method=sum
     
     #Remove all newly produced data:
    -# a) the aggregated STRDS with 1 years granularity together with its raster maps
    +# a) the aggregated STRDS with 1 years granularity along with its raster maps
     t.remove -rf type=strds input=precip_years_sum
     
     # b) the STRDS with 1 months granularity, but not the original sample data
    
    Modified: grass/trunk/temporal/t.remove/t.remove.py
    ===================================================================
    --- grass/trunk/temporal/t.remove/t.remove.py	2015-09-27 02:12:05 UTC (rev 66346)
    +++ grass/trunk/temporal/t.remove/t.remove.py	2015-09-27 11:10:53 UTC (rev 66347)
    @@ -47,7 +47,7 @@
     
     #%flag
     #% key: r
    -#% description: Remove all registered maps from the temporal and spatial database
    +#% description: Remove all registered maps from the temporal and also from the spatial database
     #%end
     
     #%flag
    @@ -115,7 +115,7 @@
             sp = tgis.open_old_stds(name, type, dbif)
     
             if recursive and force:
    -            grass.message(_("Removing registered maps"))
    +            grass.message(_("Removing registered maps and %s" % type))
                 maps = sp.get_registered_maps_as_objects(dbif=dbif)
                 map_statement = ""
                 count = 1
    @@ -151,6 +151,8 @@
                         remove(type="vector", name=name_list, run_=True)
                     if type == "str3ds":
                         remove(type="raster_3d", name=name_list, run_=True)
    +        else:
    +            grass.message(_("Note: registered maps themselves have not been removed, only the %s" % type))
     
             statement += sp.delete(dbif=dbif, execute=False)
     
    
    
    From svn_grass at osgeo.org  Sun Sep 27 04:11:04 2015
    From: svn_grass at osgeo.org (svn_grass at osgeo.org)
    Date: Sun, 27 Sep 2015 04:11:04 -0700
    Subject: [GRASS-SVN] r66348 -
    	grass/branches/releasebranch_7_0/temporal/t.remove
    Message-ID: <20150927111104.7E4D439012E@trac.osgeo.org>
    
    Author: neteler
    Date: 2015-09-27 04:11:04 -0700 (Sun, 27 Sep 2015)
    New Revision: 66348
    
    Modified:
       grass/branches/releasebranch_7_0/temporal/t.remove/t.remove.html
       grass/branches/releasebranch_7_0/temporal/t.remove/t.remove.py
    Log:
    t.remove: msgs added to tell user what it does; enhance manual
    
    Modified: grass/branches/releasebranch_7_0/temporal/t.remove/t.remove.html
    ===================================================================
    --- grass/branches/releasebranch_7_0/temporal/t.remove/t.remove.html	2015-09-27 11:10:53 UTC (rev 66347)
    +++ grass/branches/releasebranch_7_0/temporal/t.remove/t.remove.html	2015-09-27 11:11:04 UTC (rev 66348)
    @@ -1,22 +1,24 @@
     

    DESCRIPTION

    The module t.remove removes space time datasets (STRDS, STR3DS, -STVDS) from the temporal database. In other words, it deletes the relevant -database entries and not the maps. +STVDS) from the temporal database. In other words, by default it deletes +the relevant database entries but not the maps.

    Optionally, also the raster, 3D raster and vector maps of the space time -datasets can be removed using the -r (recursive) and -f -(force) flags. Recursive removal works only if both flags are checked -(use -rf). +datasets can be removed from the current mapset using the -r (recursive) +and -f (force) flags. This recursive removal only works if both flags +are checked together (use -rf).

    EXAMPLE

    In this example a space time raster dataset (STRDS) named precip_months_sum will be created using a subset of the monthly precipitation raster maps from the North Carolina climate sample data set. -In order to be able to show case recursive removal without deleting original -sample data, new data is generated by means of computing yearly precipitation -sums. Finally, all newly produced data (STRDS and raster maps) is removed again. +
    +In order to be able to show the case of recursive removal without deleting +the original sample data, we generate new data by means of computing +yearly precipitation sums. Eventually, all newly produced data (STRDS and +raster maps) are removed:
     #Create new and empty STRDS
    @@ -36,7 +38,7 @@
       years" method=sum
     
     #Remove all newly produced data:
    -# a) the aggregated STRDS with 1 years granularity together with its raster maps
    +# a) the aggregated STRDS with 1 years granularity along with its raster maps
     t.remove -rf type=strds input=precip_years_sum
     
     # b) the STRDS with 1 months granularity, but not the original sample data
    
    Modified: grass/branches/releasebranch_7_0/temporal/t.remove/t.remove.py
    ===================================================================
    --- grass/branches/releasebranch_7_0/temporal/t.remove/t.remove.py	2015-09-27 11:10:53 UTC (rev 66347)
    +++ grass/branches/releasebranch_7_0/temporal/t.remove/t.remove.py	2015-09-27 11:11:04 UTC (rev 66348)
    @@ -47,7 +47,7 @@
     
     #%flag
     #% key: r
    -#% description: Remove all registered maps from the temporal and spatial database
    +#% description: Remove all registered maps from the temporal and also from the spatial database
     #%end
     
     #%flag
    @@ -115,7 +115,7 @@
             sp = tgis.open_old_stds(name, type, dbif)
     
             if recursive and force:
    -            grass.message(_("Removing registered maps"))
    +            grass.message(_("Removing registered maps and %s" % type))
                 maps = sp.get_registered_maps_as_objects(dbif=dbif)
                 map_statement = ""
                 count = 1
    @@ -151,6 +151,8 @@
                         remove(type="vector", name=name_list, run_=True)
                     if type == "str3ds":
                         remove(type="raster_3d", name=name_list, run_=True)
    +        else:
    +            grass.message(_("Note: registered maps themselves have not been removed, only the %s" % type))
     
             statement += sp.delete(dbif=dbif, execute=False)
     
    
    
    From svn_grass at osgeo.org  Sun Sep 27 05:51:49 2015
    From: svn_grass at osgeo.org (svn_grass at osgeo.org)
    Date: Sun, 27 Sep 2015 05:51:49 -0700
    Subject: [GRASS-SVN] r66349 - in grass/trunk/temporal: t.rast.aggregate
    	t.rast.aggregate.ds
    Message-ID: <20150927125149.5D68139012E@trac.osgeo.org>
    
    Author: neteler
    Date: 2015-09-27 05:51:49 -0700 (Sun, 27 Sep 2015)
    New Revision: 66349
    
    Modified:
       grass/trunk/temporal/t.rast.aggregate.ds/t.rast.aggregate.ds.py
       grass/trunk/temporal/t.rast.aggregate/t.rast.aggregate.py
    Log:
    temporal: fix typo in msg
    
    Modified: grass/trunk/temporal/t.rast.aggregate/t.rast.aggregate.py
    ===================================================================
    --- grass/trunk/temporal/t.rast.aggregate/t.rast.aggregate.py	2015-09-27 11:11:04 UTC (rev 66348)
    +++ grass/trunk/temporal/t.rast.aggregate/t.rast.aggregate.py	2015-09-27 12:51:49 UTC (rev 66349)
    @@ -98,7 +98,7 @@
     
     #%flag
     #% key: s
    -#% description: Use start time - truncated accoring to granularity - as suffix. This flag overrides the offset option.
    +#% description: Use start time - truncated according to granularity - as suffix (overrides offset option)
     #%end
     
     import grass.script as gcore
    
    Modified: grass/trunk/temporal/t.rast.aggregate.ds/t.rast.aggregate.ds.py
    ===================================================================
    --- grass/trunk/temporal/t.rast.aggregate.ds/t.rast.aggregate.ds.py	2015-09-27 11:11:04 UTC (rev 66348)
    +++ grass/trunk/temporal/t.rast.aggregate.ds/t.rast.aggregate.ds.py	2015-09-27 12:51:49 UTC (rev 66349)
    @@ -90,7 +90,7 @@
     
     #%flag
     #% key: s
    -#% description: Use start time - truncated accoring to granularity - as suffix. This flag overrides the offset option.
    +#% description: Use start time - truncated according to granularity - as suffix (overrides offset option)
     #%end
     
     import grass.script as gcore
    
    
    From svn_grass at osgeo.org  Sun Sep 27 05:55:22 2015
    From: svn_grass at osgeo.org (svn_grass at osgeo.org)
    Date: Sun, 27 Sep 2015 05:55:22 -0700
    Subject: [GRASS-SVN] r66350 - in grass/branches/releasebranch_7_0/temporal:
    	t.rast.aggregate t.rast.aggregate.ds
    Message-ID: <20150927125522.4A2B339012E@trac.osgeo.org>
    
    Author: neteler
    Date: 2015-09-27 05:55:22 -0700 (Sun, 27 Sep 2015)
    New Revision: 66350
    
    Modified:
       grass/branches/releasebranch_7_0/temporal/t.rast.aggregate.ds/t.rast.aggregate.ds.py
       grass/branches/releasebranch_7_0/temporal/t.rast.aggregate/t.rast.aggregate.py
    Log:
    temporal: fix typo in msg; sync white space to trunk
    
    Modified: grass/branches/releasebranch_7_0/temporal/t.rast.aggregate/t.rast.aggregate.py
    ===================================================================
    --- grass/branches/releasebranch_7_0/temporal/t.rast.aggregate/t.rast.aggregate.py	2015-09-27 12:51:49 UTC (rev 66349)
    +++ grass/branches/releasebranch_7_0/temporal/t.rast.aggregate/t.rast.aggregate.py	2015-09-27 12:55:22 UTC (rev 66350)
    @@ -89,7 +89,7 @@
     
     #%flag
     #% key: s
    -#% description: Use start time - truncated accoring to granularity - as suffix. This flag overrides the offset option.
    +#% description: Use start time - truncated according to granularity - as suffix (overrides offset option)
     #%end
     
     import grass.script as gcore
    @@ -111,11 +111,11 @@
         offset = options["offset"]
         nprocs = options["nprocs"]
         time_suffix = flags["s"]
    -    
    +
         topo_list = sampling.split(",")
     
         tgis.init()
    -    
    +
         dbif = tgis.SQLDatabaseInterfaceConnection()
         dbif.connect()
     
    @@ -129,7 +129,7 @@
     
         # We will create the strds later, but need to check here
         tgis.check_new_stds(output, "strds",   dbif,  gcore.overwrite())
    -    
    +
         start_time = map_list[0].temporal_extent.get_start_time()
     
         if sp.is_time_absolute():
    @@ -164,13 +164,13 @@
                 end = start_time + int(gran)
                 granule.set_relative_time(start, end,  sp.get_relative_time_unit())
             start_time = end
    -        
    +
             granularity_list.append(granule)
     
    -    output_list = tgis.aggregate_by_topology(granularity_list=granularity_list,  granularity=gran,  
    -                                                                       map_list=map_list,  
    +    output_list = tgis.aggregate_by_topology(granularity_list=granularity_list,  granularity=gran,
    +                                                                       map_list=map_list,
                                                                            topo_list=topo_list,  basename=base, time_suffix=time_suffix,
    -                                                                       offset=offset,  method=method,  nprocs=nprocs,  spatial=None, 
    +                                                                       offset=offset,  method=method,  nprocs=nprocs,  spatial=None,
                                                                            overwrite=gcore.overwrite())
     
         if output_list:
    @@ -178,12 +178,12 @@
             output_strds = tgis.open_new_stds(output, "strds", temporal_type,
                                                                      title, description, semantic_type,
                                                                      dbif, gcore.overwrite())
    -        if register_null: 
    -            register_null=False 
    -        else: 
    +        if register_null:
    +            register_null=False
    +        else:
                 register_null=True
    -        
    -        tgis.register_map_object_list("rast", output_list,  output_strds, register_null,  
    +
    +        tgis.register_map_object_list("rast", output_list,  output_strds, register_null,
                                                            sp.get_relative_time_unit(),  dbif)
     
             # Update the raster metadata table entries with aggregation type
    
    Modified: grass/branches/releasebranch_7_0/temporal/t.rast.aggregate.ds/t.rast.aggregate.ds.py
    ===================================================================
    --- grass/branches/releasebranch_7_0/temporal/t.rast.aggregate.ds/t.rast.aggregate.ds.py	2015-09-27 12:51:49 UTC (rev 66349)
    +++ grass/branches/releasebranch_7_0/temporal/t.rast.aggregate.ds/t.rast.aggregate.ds.py	2015-09-27 12:55:22 UTC (rev 66350)
    @@ -90,7 +90,7 @@
     
     #%flag
     #% key: s
    -#% description: Use start time - truncated accoring to granularity - as suffix. This flag overrides the offset option.
    +#% description: Use start time - truncated according to granularity - as suffix (overrides offset option)
     #%end
     
     import grass.script as gcore
    
    
    From svn_grass at osgeo.org  Sun Sep 27 13:12:40 2015
    From: svn_grass at osgeo.org (svn_grass at osgeo.org)
    Date: Sun, 27 Sep 2015 13:12:40 -0700
    Subject: [GRASS-SVN] r66351 - grass/trunk/gui/wxpython/vdigit
    Message-ID: <20150927201240.651F93900A7@trac.osgeo.org>
    
    Author: annakrat
    Date: 2015-09-27 13:12:40 -0700 (Sun, 27 Sep 2015)
    New Revision: 66351
    
    Modified:
       grass/trunk/gui/wxpython/vdigit/g.gui.vdigit.py
    Log:
    wxGUI/vdigit: fix standalone tool initialization #2746
    
    Modified: grass/trunk/gui/wxpython/vdigit/g.gui.vdigit.py
    ===================================================================
    --- grass/trunk/gui/wxpython/vdigit/g.gui.vdigit.py	2015-09-27 12:55:22 UTC (rev 66350)
    +++ grass/trunk/gui/wxpython/vdigit/g.gui.vdigit.py	2015-09-27 20:12:40 UTC (rev 66351)
    @@ -48,6 +48,7 @@
         import wx
         from core.globalvar import CheckWxVersion
         from core.utils import _
    +    from core.render import Map
         from mapdisp.frame import MapFrame
         from mapdisp.main import DMonGrassInterface
         from core.settings import UserSettings
    @@ -59,7 +60,7 @@
         class VDigitMapFrame(MapFrame):
             def __init__(self, vectorMap):
                 MapFrame.__init__(
    -                self, parent=None, giface=DMonGrassInterface(None),
    +                self, parent=None, Map=Map(), giface=DMonGrassInterface(None),
                     title=_("GRASS GIS Vector Digitizer"), size=(850, 600))
                 # this giface issue not solved yet, we must set mapframe aferwards
                 self._giface._mapframe = self
    
    
    From svn_grass at osgeo.org  Sun Sep 27 14:14:14 2015
    From: svn_grass at osgeo.org (svn_grass at osgeo.org)
    Date: Sun, 27 Sep 2015 14:14:14 -0700
    Subject: [GRASS-SVN] r66352 -
    	grass/branches/releasebranch_7_0/gui/wxpython/core
    Message-ID: <20150927211414.3FC9C390094@trac.osgeo.org>
    
    Author: annakrat
    Date: 2015-09-27 14:14:14 -0700 (Sun, 27 Sep 2015)
    New Revision: 66352
    
    Modified:
       grass/branches/releasebranch_7_0/gui/wxpython/core/toolboxes.py
    Log:
    workaround some compilation problems on Mac (see #2142, #1819), merge from trunk r66204
    
    Modified: grass/branches/releasebranch_7_0/gui/wxpython/core/toolboxes.py
    ===================================================================
    --- grass/branches/releasebranch_7_0/gui/wxpython/core/toolboxes.py	2015-09-27 20:12:40 UTC (rev 66351)
    +++ grass/branches/releasebranch_7_0/gui/wxpython/core/toolboxes.py	2015-09-27 21:14:14 UTC (rev 66352)
    @@ -62,14 +62,20 @@
             # (these files are always check for existence here)
             return ""
     
    -userToolboxesFile = os.path.join(GetSettingsPath(), 'toolboxes', 'toolboxes.xml')
    -userMainMenuFile = os.path.join(GetSettingsPath(), 'toolboxes', 'main_menu.xml')
    -if not os.path.exists(userToolboxesFile):
    -    userToolboxesFile = None
    -if not os.path.exists(userMainMenuFile):
    -    userMainMenuFile = None
    +def _getUserToolboxesFile():
    +    userToolboxesFile = os.path.join(GetSettingsPath(), 'toolboxes', 'toolboxes.xml')
    +    if not os.path.exists(userToolboxesFile):
    +        userToolboxesFile = None
    +    return userToolboxesFile
     
     
    +def _getUserMainMenuFile():
    +    userMainMenuFile = os.path.join(GetSettingsPath(), 'toolboxes', 'main_menu.xml')
    +    if not os.path.exists(userMainMenuFile):
    +        userMainMenuFile = None
    +    return userMainMenuFile
    +
    +
     def _(string):
         """Get translated version of a string"""
         # is attribute initialized to actual value?
    @@ -156,27 +162,27 @@
     
             if os.path.exists(menudataFile):
                 # remove menu file when there is no main_menu and toolboxes
    -            if not userToolboxesFile and not userRootFile:
    +            if not _getUserToolboxesFile() and not userRootFile:
                     os.remove(menudataFile)
                     _debug(2, "toolboxes.getMenudataFile: no user defined files, menudata deleted")
                     return fallback
     
    -            if bool(userToolboxesFile) != bool(userRootFile):
    +            if bool(_getUserToolboxesFile()) != bool(userRootFile):
                     # always generate new because we don't know if there has been any change
                     generateNew = True
                     _debug(2, "toolboxes.getMenudataFile: only one of the user defined files")
                 else:
                     # if newer files -> generate new
                     menudataTime = os.path.getmtime(menudataFile)
    -                if userToolboxesFile:
    -                    if os.path.getmtime(userToolboxesFile) > menudataTime:
    +                if _getUserToolboxesFile():
    +                    if os.path.getmtime(_getUserToolboxesFile()) > menudataTime:
                             _debug(2, "toolboxes.getMenudataFile: user toolboxes is newer than menudata")
                             generateNew = True
                     if userRootFile:
                         if os.path.getmtime(userRootFile) > menudataTime:
                             _debug(2, "toolboxes.getMenudataFile: user root file is newer than menudata")
                             generateNew = True
    -        elif userToolboxesFile or userRootFile:
    +        elif _getUserToolboxesFile() or userRootFile:
                 _debug(2, "toolboxes.getMenudataFile: no menudata")
                 generateNew = True
             else:
    @@ -256,8 +262,8 @@
     
         toolboxes = etree.parse(toolboxesFile)
     
    -    if userDefined and userToolboxesFile:
    -        userToolboxes = etree.parse(userToolboxesFile)
    +    if userDefined and _getUserToolboxesFile():
    +        userToolboxes = etree.parse(_getUserToolboxesFile())
         else:
             userToolboxes = None
     
    @@ -604,9 +610,11 @@
                     hasErrors = True
         
         if hasErrors:
    -        sys.stderr.write(_("WARNING: Some addons failed when loading. "
    -                           "Please consider to update your addons by running 'g.extension.all -f'.\n"))
    -    
    +        # not translatable until toolboxes compilation on Mac is fixed
    +        # translating causes importing globalvar, where sys.exit is called
    +        sys.stderr.write("WARNING: Some addons failed when loading. "
    +                         "Please consider to update your addons by running 'g.extension.all -f'.\n")
    +
     def _escapeXML(text):
         """Helper function for correct escaping characters for XML.
     
    
    
    From svn_grass at osgeo.org  Sun Sep 27 15:00:00 2015
    From: svn_grass at osgeo.org (svn_grass at osgeo.org)
    Date: Sun, 27 Sep 2015 15:00:00 -0700
    Subject: [GRASS-SVN] r66353 - in
    	grass/branches/releasebranch_7_0/gui/wxpython: animation core
    Message-ID: <20150927220000.994C13900A7@trac.osgeo.org>
    
    Author: annakrat
    Date: 2015-09-27 15:00:00 -0700 (Sun, 27 Sep 2015)
    New Revision: 66353
    
    Modified:
       grass/branches/releasebranch_7_0/gui/wxpython/animation/controller.py
       grass/branches/releasebranch_7_0/gui/wxpython/animation/dialogs.py
       grass/branches/releasebranch_7_0/gui/wxpython/animation/mapwindow.py
       grass/branches/releasebranch_7_0/gui/wxpython/animation/utils.py
       grass/branches/releasebranch_7_0/gui/wxpython/core/settings.py
    Log:
    wxGUI/animation: backport improvements from code sprint (resizing, text color, nprocs)
    
    Modified: grass/branches/releasebranch_7_0/gui/wxpython/animation/controller.py
    ===================================================================
    --- grass/branches/releasebranch_7_0/gui/wxpython/animation/controller.py	2015-09-27 21:14:14 UTC (rev 66352)
    +++ grass/branches/releasebranch_7_0/gui/wxpython/animation/controller.py	2015-09-27 22:00:00 UTC (rev 66353)
    @@ -371,7 +371,8 @@
                     self._load3DData(animData)
                 self._loadLegend(animData)
             color = UserSettings.Get(group='animation', key='bgcolor', subkey='color')
    -        self.bitmapProvider.Load(nprocs=getCpuCount(), bgcolor=color)
    +        cpus = UserSettings.Get(group='animation', key='nprocs', subkey='value')
    +        self.bitmapProvider.Load(nprocs=cpus, bgcolor=color)
             # clear pools
             self.bitmapPool.Clear()
             self.mapFilesPool.Clear()
    @@ -449,7 +450,8 @@
             self.EndAnimation()
     
             color = UserSettings.Get(group='animation', key='bgcolor', subkey='color')
    -        self.bitmapProvider.Load(nprocs=getCpuCount(), bgcolor=color, force=True)
    +        cpus = UserSettings.Get(group='animation', key='nprocs', subkey='value')
    +        self.bitmapProvider.Load(nprocs=cpus, bgcolor=color, force=True)
     
             self.EndAnimation()
     
    @@ -493,6 +495,8 @@
             busy = wx.BusyInfo(message=_("Preparing export, please wait..."), parent=self.frame)
             wx.Yield()
             lastBitmaps = {}
    +        fgcolor = UserSettings.Get(group='animation', key='font', subkey='fgcolor')
    +        bgcolor = UserSettings.Get(group='animation', key='font', subkey='bgcolor')
             for frameIndex in range(frameCount):
                 image = wx.EmptyImage(*size)
                 image.Replace(0, 0, 0, 255, 255, 255)
    @@ -545,10 +549,10 @@
                                 text = _("%(start)s %(unit)s") % \
                                         {'start': timeLabel[0], 'unit': timeLabel[2]}
     
    -                    decImage = RenderText(text, decoration['font']).ConvertToImage()
    +                    decImage = RenderText(text, decoration['font'], bgcolor, fgcolor).ConvertToImage()
                     elif decoration['name'] == 'text':
                         text = decoration['text']
    -                    decImage = RenderText(text, decoration['font']).ConvertToImage()
    +                    decImage = RenderText(text, decoration['font'], bgcolor, fgcolor).ConvertToImage()
     
                     image.Paste(decImage, x, y)
     
    
    Modified: grass/branches/releasebranch_7_0/gui/wxpython/animation/dialogs.py
    ===================================================================
    --- grass/branches/releasebranch_7_0/gui/wxpython/animation/dialogs.py	2015-09-27 21:14:14 UTC (rev 66352)
    +++ grass/branches/releasebranch_7_0/gui/wxpython/animation/dialogs.py	2015-09-27 22:00:00 UTC (rev 66353)
    @@ -37,7 +37,7 @@
     from gui_core.gselect import Select
     from gui_core.widgets import FloatValidator
     
    -from animation.utils import TemporalMode, getRegisteredMaps, getNameAndLayer
    +from animation.utils import TemporalMode, getRegisteredMaps, getNameAndLayer, getCpuCount
     from animation.data import AnimationData, AnimLayer
     from animation.toolbars import AnimSimpleLmgrToolbar, SIMPLE_LMGR_STDS
     from gui_core.simplelmgr import SimpleLayerManager, \
    @@ -1505,6 +1505,46 @@
     
             gridSizer.Add(item=color, pos=(row, 1), flag=wx.ALIGN_RIGHT)
     
    +        row += 1
    +        gridSizer.Add(item=wx.StaticText(parent=panel,
    +                                         label=_("Number of parallel processes:")),
    +                      flag=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL, pos=(row, 0))
    +        # when running for the first time, set nprocs based on the number of processes
    +        if UserSettings.Get(group='animation', key='nprocs', subkey='value') == -1:
    +            UserSettings.Set(group='animation', key='nprocs', subkey='value', value=getCpuCount())
    +        nprocs = wx.SpinCtrl(parent=panel,
    +                             initial=UserSettings.Get(group='animation', key='nprocs', subkey='value'))
    +        nprocs.SetName('GetValue')
    +        self.winId['animation:nprocs:value'] = nprocs.GetId()
    +
    +        gridSizer.Add(item=nprocs, pos=(row, 1), flag=wx.ALIGN_RIGHT)
    +
    +        row += 1
    +        gridSizer.Add(item=wx.StaticText(parent=panel,
    +                                         label=_("Text foreground color:")),
    +                      flag=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL, pos=(row, 0))
    +        color = csel.ColourSelect(parent=panel,
    +                                  colour=UserSettings.Get(group='animation',
    +                                                          key='font', subkey='fgcolor'),
    +                                  size=globalvar.DIALOG_COLOR_SIZE)
    +        color.SetName('GetColour')
    +        self.winId['animation:font:fgcolor'] = color.GetId()
    +
    +        gridSizer.Add(item=color, pos=(row, 1), flag=wx.ALIGN_RIGHT)
    +
    +        row += 1
    +        gridSizer.Add(item=wx.StaticText(parent=panel,
    +                                         label=_("Text background color:")),
    +                      flag=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL, pos=(row, 0))
    +        color = csel.ColourSelect(parent=panel,
    +                                  colour=UserSettings.Get(group='animation',
    +                                                          key='font', subkey='bgcolor'),
    +                                  size=globalvar.DIALOG_COLOR_SIZE)
    +        color.SetName('GetColour')
    +        self.winId['animation:font:bgcolor'] = color.GetId()
    +
    +        gridSizer.Add(item=color, pos=(row, 1), flag=wx.ALIGN_RIGHT)
    +
             gridSizer.AddGrowableCol(1)
             sizer.Add(item=gridSizer, proportion=1, flag=wx.ALL | wx.EXPAND, border=3)
             border.Add(item=sizer, proportion=0, flag=wx.ALL | wx.EXPAND, border=3)
    
    Modified: grass/branches/releasebranch_7_0/gui/wxpython/animation/mapwindow.py
    ===================================================================
    --- grass/branches/releasebranch_7_0/gui/wxpython/animation/mapwindow.py	2015-09-27 21:14:14 UTC (rev 66352)
    +++ grass/branches/releasebranch_7_0/gui/wxpython/animation/mapwindow.py	2015-09-27 22:00:00 UTC (rev 66353)
    @@ -17,6 +17,7 @@
     
     import wx
     from core.debug import Debug
    +from utils import ComputeScaledRect
     
     
     class BufferedWindow(wx.Window):
    @@ -107,6 +108,8 @@
             self._pdc = wx.PseudoDC()
             self._overlay = None
             self._tmpMousePos = None
    +        self.x = self.y = 0
    +        self.bitmap_overlay = None
     
             BufferedWindow.__init__(self, parent=parent, id=id, style=style)
             self.SetBackgroundColour(wx.BLACK)
    @@ -119,21 +122,40 @@
             Debug.msg(5, "AnimationWindow.Draw()")
     
             dc.Clear()  # make sure you clear the bitmap!
    -        dc.DrawBitmap(self.bitmap, x=0, y=0)
    +        dc.DrawBitmap(self.bitmap, x=self.x, y=self.y)
     
         def OnSize(self, event):
             Debug.msg(5, "AnimationWindow.OnSize()")
     
    -        self.DrawBitmap(self.bitmap)
    -
             BufferedWindow.OnSize(self, event)
             if event:
                 event.Skip()
     
    +    def _rescaleIfNeeded(self, bitmap):
    +        """!If the bitmap has different size than the window, rescale it."""
    +        bW, bH = bitmap.GetSize()
    +        wW, wH = self.GetClientSize()
    +        if abs(bW - wW) > 5 or abs(bH - wH) > 5:
    +            params = ComputeScaledRect((bW, bH), (wW, wH))
    +            im = wx.ImageFromBitmap(bitmap)
    +            im.Rescale(params['width'], params['height'])
    +            self.x = params['x']
    +            self.y = params['y']
    +            bitmap = wx.BitmapFromImage(im)
    +            if self._overlay:
    +                im = wx.ImageFromBitmap(self.bitmap_overlay)
    +                im.Rescale(im.GetWidth() * params['scale'], im.GetHeight() * params['scale'])
    +                self._setOverlay(wx.BitmapFromImage(im), xperc=self.perc[0], yperc=self.perc[1])
    +        else:
    +            self.x = 0
    +            self.y = 0
    +        return bitmap
    +
         def DrawBitmap(self, bitmap):
             """Draws bitmap.
             Does not draw the bitmap if it is the same one as last time.
             """
    +        bitmap = self._rescaleIfNeeded(bitmap)
             if self.bitmap == bitmap:
                 return
     
    @@ -148,6 +170,15 @@
                                              self._overlay.GetHeight()))
             self._pdc.EndDrawing()
     
    +    def _setOverlay(self, bitmap, xperc, yperc):
    +        if self._overlay:
    +            self._pdc.RemoveAll()
    +        self._overlay = bitmap
    +        size = self.GetClientSize()
    +        x = xperc * size[0]
    +        y = yperc * size[1]
    +        self.DrawOverlay(x, y)
    +
         def SetOverlay(self, bitmap, xperc, yperc):
             """Sets overlay bitmap (legend)
     
    @@ -157,22 +188,20 @@
             """
             Debug.msg(3, "AnimationWindow.SetOverlay()")
             if bitmap:
    -            if self._overlay:
    -                self._pdc.RemoveAll()
    -            self._overlay = bitmap
    -            size = self.GetClientSize()
    -            x = xperc * size[0]
    -            y = yperc * size[1]
    -            self.DrawOverlay(x, y)
    +            self._setOverlay(bitmap, xperc, yperc)
    +            self.bitmap_overlay = bitmap
    +            self.perc = (xperc, yperc)
             else:
                 self._overlay = None
                 self._pdc.RemoveAll()
    +            self.bitmap_overlay = None
             self.UpdateDrawing()
     
         def ClearOverlay(self):
             """Clear overlay (legend) """
             Debug.msg(3, "AnimationWindow.ClearOverlay()")
             self._overlay = None
    +        self.bitmap_overlay = None
             self._pdc.RemoveAll()
             self.UpdateDrawing()
     
    
    Modified: grass/branches/releasebranch_7_0/gui/wxpython/animation/utils.py
    ===================================================================
    --- grass/branches/releasebranch_7_0/gui/wxpython/animation/utils.py	2015-09-27 21:14:14 UTC (rev 66352)
    +++ grass/branches/releasebranch_7_0/gui/wxpython/animation/utils.py	2015-09-27 22:00:00 UTC (rev 66353)
    @@ -238,19 +238,19 @@
         return {'width': width, 'height': height, 'x': x, 'y': y, 'scale': scale}
     
     
    -def RenderText(text, font):
    +def RenderText(text, font, bgcolor, fgcolor):
         """Renderes text with given font to bitmap."""
         dc = wx.MemoryDC()
         dc.SetFont(font)
         w, h = dc.GetTextExtent(text)
         bmp = wx.EmptyBitmap(w + 2, h + 2)
         dc.SelectObject(bmp)
    -    dc.SetBrush(wx.TRANSPARENT_BRUSH)
    -    dc.SetBackgroundMode(wx.TRANSPARENT)
    +    dc.SetBackgroundMode(wx.SOLID)
    +    dc.SetTextBackground(wx.Colour(*bgcolor))
    +    dc.SetTextForeground(wx.Colour(*fgcolor))
         dc.Clear()
         dc.DrawText(text, 1, 1)
         dc.SelectObject(wx.NullBitmap)
    -    bmp.SetMaskColour(wx.WHITE)
     
         return bmp
     
    
    Modified: grass/branches/releasebranch_7_0/gui/wxpython/core/settings.py
    ===================================================================
    --- grass/branches/releasebranch_7_0/gui/wxpython/core/settings.py	2015-09-27 21:14:14 UTC (rev 66352)
    +++ grass/branches/releasebranch_7_0/gui/wxpython/core/settings.py	2015-09-27 22:00:00 UTC (rev 66353)
    @@ -811,6 +811,13 @@
                     'bgcolor': {
                         'color': (255, 255, 255, 255),
                         },
    +                'nprocs': {
    +                    'value': -1,
    +                    },
    +                'font': {
    +                    'bgcolor': (255, 255, 255, 255),
    +                    'fgcolor': (0, 0, 0, 255),
    +                    },
                     'temporal': {
                         'format': '%Y-%m-%d %H:%M:%S',
                         'nodata': {
    
    
    From svn_grass at osgeo.org  Sun Sep 27 15:05:26 2015
    From: svn_grass at osgeo.org (svn_grass at osgeo.org)
    Date: Sun, 27 Sep 2015 15:05:26 -0700
    Subject: [GRASS-SVN] r66354 -
    	grass/branches/releasebranch_7_0/gui/wxpython/gui_core
    Message-ID: <20150927220527.04BE23900A7@trac.osgeo.org>
    
    Author: annakrat
    Date: 2015-09-27 15:05:26 -0700 (Sun, 27 Sep 2015)
    New Revision: 66354
    
    Modified:
       grass/branches/releasebranch_7_0/gui/wxpython/gui_core/forms.py
    Log:
    wxGUI: catch and handle error from typo in console (merge from trunk, r65975)
    
    Modified: grass/branches/releasebranch_7_0/gui/wxpython/gui_core/forms.py
    ===================================================================
    --- grass/branches/releasebranch_7_0/gui/wxpython/gui_core/forms.py	2015-09-27 22:00:00 UTC (rev 66353)
    +++ grass/branches/releasebranch_7_0/gui/wxpython/gui_core/forms.py	2015-09-27 22:05:26 UTC (rev 66354)
    @@ -2360,6 +2360,8 @@
                 cmd_validated = [cmd[0]]
                 for option in cmd[1:]:
                     if option[0] == '-': # flag
    +                    if len(option) == 1:  # catch typo like 'g.proj - w'
    +                        raise gcmd.GException, _("Unable to parse command '%s'") % ' '.join(cmd)
                         if option[1] == '-':
                             self.grass_task.set_flag(option[2:], True)
                         else:
    
    
    From svn_grass at osgeo.org  Sun Sep 27 15:12:26 2015
    From: svn_grass at osgeo.org (svn_grass at osgeo.org)
    Date: Sun, 27 Sep 2015 15:12:26 -0700
    Subject: [GRASS-SVN] r66355 -
    	grass/branches/releasebranch_7_0/raster/r.horizon
    Message-ID: <20150927221226.EBF9B3900A7@trac.osgeo.org>
    
    Author: annakrat
    Date: 2015-09-27 15:12:26 -0700 (Sun, 27 Sep 2015)
    New Revision: 66355
    
    Added:
       grass/branches/releasebranch_7_0/raster/r.horizon/rhorizon_polar_plot.png
    Modified:
       grass/branches/releasebranch_7_0/raster/r.horizon/r.horizon.html
    Log:
    r.horizon: add polar plot example (merge from trunk, r65706)
    
    Modified: grass/branches/releasebranch_7_0/raster/r.horizon/r.horizon.html
    ===================================================================
    --- grass/branches/releasebranch_7_0/raster/r.horizon/r.horizon.html	2015-09-27 22:05:26 UTC (rev 66354)
    +++ grass/branches/releasebranch_7_0/raster/r.horizon/r.horizon.html	2015-09-27 22:12:26 UTC (rev 66355)
    @@ -170,6 +170,28 @@
     Horizon angles for test point (CCW from East)
     
     
    +

    We can plot horizon in polar coordinates using Matplotlib in Python: +

    +import numpy as np
    +import matplotlib.pyplot as plt
    +
    +horizon = np.genfromtxt('horizon.csv', delimiter=',')
    +horizon = horizon[1:, :]
    +
    +ax = plt.subplot(111, polar=True)
    +bars = ax.plot(horizon[:, 0] / 180 * np.pi,
    +               (90 - horizon[:, 1]) / 180 * np.pi)
    +# uncomment the 2 following lines when using -c flag
    +# ax.set_theta_direction(-1)
    +# ax.set_theta_zero_location('N')
    +plt.show()
    +
    + +
    +
    +Horizon plot in polar coordinates. +
    +

    Raster map mode

    Raster map mode (output maps "horangle*" become input for r.sun): Copied: grass/branches/releasebranch_7_0/raster/r.horizon/rhorizon_polar_plot.png (from rev 65706, grass/trunk/raster/r.horizon/rhorizon_polar_plot.png) =================================================================== (Binary files differ) From svn_grass at osgeo.org Sun Sep 27 15:40:22 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sun, 27 Sep 2015 15:40:22 -0700 Subject: [GRASS-SVN] r66356 - in grass/branches/releasebranch_7_0/gui/wxpython: dbmgr vdigit Message-ID: <20150927224022.D1C45390094@trac.osgeo.org> Author: annakrat Date: 2015-09-27 15:40:22 -0700 (Sun, 27 Sep 2015) New Revision: 66356 Modified: grass/branches/releasebranch_7_0/gui/wxpython/dbmgr/dialogs.py grass/branches/releasebranch_7_0/gui/wxpython/vdigit/mapwindow.py Log: wxGUI/vdigit: fix attribute dialog blocking window on MacOSX with wxpython 3 (merge from trunk, r65606) Modified: grass/branches/releasebranch_7_0/gui/wxpython/dbmgr/dialogs.py =================================================================== --- grass/branches/releasebranch_7_0/gui/wxpython/dbmgr/dialogs.py 2015-09-27 22:12:26 UTC (rev 66355) +++ grass/branches/releasebranch_7_0/gui/wxpython/dbmgr/dialogs.py 2015-09-27 22:40:22 UTC (rev 66356) @@ -310,9 +310,11 @@ elif frame.IsAutoRendered(): frame.RemoveQueryLayer() self.parent.UpdateMap(render = True) + if self.IsModal(): + self.EndModal(wx.ID_OK) + else: + self.Destroy() - self.Destroy() - def OnSubmit(self, event): """Submit records""" layer = 1 Modified: grass/branches/releasebranch_7_0/gui/wxpython/vdigit/mapwindow.py =================================================================== --- grass/branches/releasebranch_7_0/gui/wxpython/vdigit/mapwindow.py 2015-09-27 22:12:26 UTC (rev 66355) +++ grass/branches/releasebranch_7_0/gui/wxpython/vdigit/mapwindow.py 2015-09-27 22:40:22 UTC (rev 66356) @@ -194,22 +194,11 @@ for fid in fids: self._geomAttrb(fid, addRecordDlg, 'area') self._geomAttrb(fid, addRecordDlg, 'perimeter') - - if addRecordDlg.IsFound() and \ - addRecordDlg.ShowModal() == wx.ID_OK: - sqlfile = tempfile.NamedTemporaryFile(mode = "w") - for sql in addRecordDlg.GetSQLString(): - sqlfile.file.write(sql + ";\n") - sqlfile.file.flush() - - RunCommand('db.execute', - parent = self, - quiet = True, - input = sqlfile.name) - - if addRecordDlg.mapDBInfo: - self._updateATM() - + + if addRecordDlg.IsFound(): + addRecordDlg.ShowModal() + addRecordDlg.Destroy() + elif self.toolbar.GetAction('type') in ["line", "boundary", "area"]: # add new point to the line self.polycoords.append(self.Pixel2Cell(event.GetPositionTuple()[:])) @@ -945,21 +934,10 @@ self._geomAttrb(fid, addRecordDlg, 'area') self._geomAttrb(fid, addRecordDlg, 'perimeter') - - if addRecordDlg.mapDBInfo and \ - addRecordDlg.ShowModal() == wx.ID_OK: - sqlfile = tempfile.NamedTemporaryFile(mode = "w") - for sql in addRecordDlg.GetSQLString(): - sqlfile.file.write(sql + ";\n") - sqlfile.file.flush() - RunCommand('db.execute', - parent = True, - quiet = True, - input = sqlfile.name) - - if addRecordDlg.mapDBInfo: - self._updateATM() - + if addRecordDlg.IsFound(): + addRecordDlg.ShowModal() + addRecordDlg.Destroy() + elif action == "deleteLine": # -> delete selected vector features if self.digit.DeleteSelectedLines() < 0: From svn_grass at osgeo.org Sun Sep 27 15:44:21 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sun, 27 Sep 2015 15:44:21 -0700 Subject: [GRASS-SVN] r66357 - grass/branches/releasebranch_7_0/scripts/v.db.addtable Message-ID: <20150927224421.59353390094@trac.osgeo.org> Author: annakrat Date: 2015-09-27 15:44:21 -0700 (Sun, 27 Sep 2015) New Revision: 66357 Modified: grass/branches/releasebranch_7_0/scripts/v.db.addtable/v.db.addtable.py Log: v.db.addtable: fix wrong formatting code and condition (merge from trunk, r66022) Modified: grass/branches/releasebranch_7_0/scripts/v.db.addtable/v.db.addtable.py =================================================================== --- grass/branches/releasebranch_7_0/scripts/v.db.addtable/v.db.addtable.py 2015-09-27 22:40:22 UTC (rev 66356) +++ grass/branches/releasebranch_7_0/scripts/v.db.addtable/v.db.addtable.py 2015-09-27 22:44:21 UTC (rev 66357) @@ -125,8 +125,8 @@ grass.fatal(_("Unable to create table <%s>") % table) # connect the map to the DB: - if schema is not '': - table = '%s.%s' (schema, table) + if schema: + table = '{schema}.{table}'.format(schema=schema, table=table) grass.run_command('v.db.connect', quiet = True, map = map_name, database = database, driver = driver, layer = layer, table = table, key = key) From svn_grass at osgeo.org Sun Sep 27 15:57:43 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sun, 27 Sep 2015 15:57:43 -0700 Subject: [GRASS-SVN] r66358 - in grass/branches/releasebranch_7_0/scripts: r.unpack v.unpack Message-ID: <20150927225743.93813390094@trac.osgeo.org> Author: annakrat Date: 2015-09-27 15:57:43 -0700 (Sun, 27 Sep 2015) New Revision: 66358 Modified: grass/branches/releasebranch_7_0/scripts/r.unpack/r.unpack.py grass/branches/releasebranch_7_0/scripts/v.unpack/v.unpack.py Log: r.unpack/v.unpack: fix importing to xy location, see #2726 Modified: grass/branches/releasebranch_7_0/scripts/r.unpack/r.unpack.py =================================================================== --- grass/branches/releasebranch_7_0/scripts/r.unpack/r.unpack.py 2015-09-27 22:44:21 UTC (rev 66357) +++ grass/branches/releasebranch_7_0/scripts/r.unpack/r.unpack.py 2015-09-27 22:57:43 UTC (rev 66358) @@ -105,34 +105,41 @@ diff_result_1 = diff_result_2 = None proj_info_file_1 = 'PROJ_INFO' - proj_info_file_2 = os.path.join(mset_dir, '..', 'PERMANENT', 'PROJ_INFO') - - if not grass.compare_key_value_text_files(filename_a=proj_info_file_1, - filename_b=proj_info_file_2, - proj=True): - diff_result_1 = diff_files(proj_info_file_1, proj_info_file_2) - - proj_units_file_1 = 'PROJ_UNITS' - proj_units_file_2 = os.path.join(mset_dir, '..', 'PERMANENT', 'PROJ_UNITS') - - if not grass.compare_key_value_text_files(filename_a=proj_units_file_1, - filename_b=proj_units_file_2, - units=True): - diff_result_2 = diff_files(proj_units_file_1, proj_units_file_2) - - if diff_result_1 or diff_result_2: - - if diff_result_1: - grass.warning(_("Difference between PROJ_INFO file of packed map " - "and of current location:\n{diff}").format(diff=''.join(diff_result_1))) - if diff_result_2: - grass.warning(_("Difference between PROJ_UNITS file of packed map " - "and of current location:\n{diff}").format(diff=''.join(diff_result_2))) - grass.fatal(_("Projection of dataset does not appear to match current location." - " In case of no significant differences in the projection definitions," - " use the -o flag to ignore them and use" - " current location definition.")) + proj_info_file_2 = os.path.join(mset_dir, '..', 'PERMANENT', 'PROJ_INFO') + skip_projection_check = False + if not os.path.exists(proj_info_file_1): + if os.path.exists(proj_info_file_2): + grass.fatal(_("PROJ_INFO file is missing, unpack raster map in XY (unprojected) location.")) + skip_projection_check = True # XY location + + if not skip_projection_check: + if not grass.compare_key_value_text_files(filename_a=proj_info_file_1, + filename_b=proj_info_file_2, + proj=True): + diff_result_1 = diff_files(proj_info_file_1, proj_info_file_2) + + proj_units_file_1 = 'PROJ_UNITS' + proj_units_file_2 = os.path.join(mset_dir, '..', 'PERMANENT', 'PROJ_UNITS') + + if not grass.compare_key_value_text_files(filename_a=proj_units_file_1, + filename_b=proj_units_file_2, + units=True): + diff_result_2 = diff_files(proj_units_file_1, proj_units_file_2) + + if diff_result_1 or diff_result_2: + + if diff_result_1: + grass.warning(_("Difference between PROJ_INFO file of packed map " + "and of current location:\n{diff}").format(diff=''.join(diff_result_1))) + if diff_result_2: + grass.warning(_("Difference between PROJ_UNITS file of packed map " + "and of current location:\n{diff}").format(diff=''.join(diff_result_2))) + grass.fatal(_("Projection of dataset does not appear to match current location." + " In case of no significant differences in the projection definitions," + " use the -o flag to ignore them and use" + " current location definition.")) + # install in $MAPSET for element in ['cats', 'cell', 'cellhd', 'cell_misc', 'colr', 'fcell', 'hist']: if not os.path.exists(element): Modified: grass/branches/releasebranch_7_0/scripts/v.unpack/v.unpack.py =================================================================== --- grass/branches/releasebranch_7_0/scripts/v.unpack/v.unpack.py 2015-09-27 22:44:21 UTC (rev 66357) +++ grass/branches/releasebranch_7_0/scripts/v.unpack/v.unpack.py 2015-09-27 22:57:43 UTC (rev 66358) @@ -109,33 +109,40 @@ loc_proj = os.path.join(mset_dir, '..', 'PERMANENT', 'PROJ_INFO') loc_proj_units = os.path.join(mset_dir, '..', 'PERMANENT', 'PROJ_UNITS') - diff_result_1 = diff_result_2 = None - if not grass.compare_key_value_text_files(filename_a=os.path.join(tmp_dir, 'PROJ_INFO'), - filename_b=loc_proj, proj=True): - diff_result_1 = diff_files(os.path.join(tmp_dir, 'PROJ_INFO'), - loc_proj) + skip_projection_check = False + if not os.path.exists(os.path.join(tmp_dir, 'PROJ_INFO')): + if os.path.exists(loc_proj): + grass.fatal(_("PROJ_INFO file is missing, unpack vector map in XY (unprojected) location.")) + skip_projection_check = True # XY location - if not grass.compare_key_value_text_files(filename_a=os.path.join(tmp_dir, 'PROJ_UNITS'), - filename_b=loc_proj_units, - units=True): - diff_result_2 = diff_files(os.path.join(tmp_dir, 'PROJ_UNITS'), - loc_proj_units) + if not skip_projection_check: + diff_result_1 = diff_result_2 = None + if not grass.compare_key_value_text_files(filename_a=os.path.join(tmp_dir, 'PROJ_INFO'), + filename_b=loc_proj, proj=True): + diff_result_1 = diff_files(os.path.join(tmp_dir, 'PROJ_INFO'), + loc_proj) + + if not grass.compare_key_value_text_files(filename_a=os.path.join(tmp_dir, 'PROJ_UNITS'), + filename_b=loc_proj_units, + units=True): + diff_result_2 = diff_files(os.path.join(tmp_dir, 'PROJ_UNITS'), + loc_proj_units) + + if diff_result_1 or diff_result_2: + if flags['o']: + grass.warning(_("Projection information does not match. Proceeding...")) + else: + if diff_result_1: + grass.warning(_("Difference between PROJ_INFO file of packed map " + "and of current location:\n{diff}").format(diff=''.join(diff_result_1))) + if diff_result_2: + grass.warning(_("Difference between PROJ_UNITS file of packed map " + "and of current location:\n{diff}").format(diff=''.join(diff_result_2))) + grass.fatal(_("Projection of dataset does not appear to match current location." + " In case of no significant differences in the projection definitions," + " use the -o flag to ignore them and use" + " current location definition.")) - if diff_result_1 or diff_result_2: - if flags['o']: - grass.warning(_("Projection information does not match. Proceeding...")) - else: - if diff_result_1: - grass.warning(_("Difference between PROJ_INFO file of packed map " - "and of current location:\n{diff}").format(diff=''.join(diff_result_1))) - if diff_result_2: - grass.warning(_("Difference between PROJ_UNITS file of packed map " - "and of current location:\n{diff}").format(diff=''.join(diff_result_2))) - grass.fatal(_("Projection of dataset does not appear to match current location." - " In case of no significant differences in the projection definitions," - " use the -o flag to ignore them and use" - " current location definition.")) - # new db fromdb = os.path.join(tmp_dir, 'db.sqlite') # copy file From svn_grass at osgeo.org Sun Sep 27 16:06:39 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Sun, 27 Sep 2015 16:06:39 -0700 Subject: [GRASS-SVN] r66359 - grass/branches/releasebranch_7_0/scripts/v.unpack Message-ID: <20150927230639.7095B390094@trac.osgeo.org> Author: annakrat Date: 2015-09-27 16:06:39 -0700 (Sun, 27 Sep 2015) New Revision: 66359 Modified: grass/branches/releasebranch_7_0/scripts/v.unpack/v.unpack.py Log: v.unpack: fix unpacking when name of archive and the packed map differ (merge from trunk, r66021) Modified: grass/branches/releasebranch_7_0/scripts/v.unpack/v.unpack.py =================================================================== --- grass/branches/releasebranch_7_0/scripts/v.unpack/v.unpack.py 2015-09-27 22:57:43 UTC (rev 66358) +++ grass/branches/releasebranch_7_0/scripts/v.unpack/v.unpack.py 2015-09-27 23:06:39 UTC (rev 66359) @@ -97,11 +97,11 @@ # extract data tar.extractall() - if os.path.exists(os.path.join(map_name, 'coor')): + if os.path.exists(os.path.join(data_name, 'coor')): pass - elif os.path.exists(os.path.join(map_name, 'cell')): + elif os.path.exists(os.path.join(data_name, 'cell')): grass.fatal(_("This GRASS GIS pack file contains raster data. Use " - "r.unpack to unpack <%s>" % map_name)) + "v.unpack to unpack <%s>" % map_name)) else: grass.fatal(_("Pack file unreadable")) From svn_grass at osgeo.org Mon Sep 28 00:22:34 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Mon, 28 Sep 2015 00:22:34 -0700 Subject: [GRASS-SVN] r66360 - grass-addons/grass7/vector/v.kriging Message-ID: <20150928072234.60B81390094@trac.osgeo.org> Author: neteler Date: 2015-09-28 00:22:34 -0700 (Mon, 28 Sep 2015) New Revision: 66360 Modified: grass-addons/grass7/vector/v.kriging/geostat.c grass-addons/grass7/vector/v.kriging/utils_kriging.c Log: v.kriging addon: fix compiler warning -Wabsolute-value and return in void function Modified: grass-addons/grass7/vector/v.kriging/geostat.c =================================================================== --- grass-addons/grass7/vector/v.kriging/geostat.c 2015-09-27 23:06:39 UTC (rev 66359) +++ grass-addons/grass7/vector/v.kriging/geostat.c 2015-09-28 07:22:34 UTC (rev 66360) @@ -229,7 +229,7 @@ ddir1 = dir - tv; // difference between bearing and azimuth ddir2 = (dir + PI) - tv; - if (fabsf(ddir1) <= td || fabsf(ddir2) <= td) { // angle test: compare the diff with critical value + if (fabs(ddir1) <= td || fabs(ddir2) <= td) { // angle test: compare the diff with critical value // test squared distance: vertical variogram => 0., ... rv = type == 1 ? 0. : radius_hz_diff(dr); // ... otherwise horizontal distance @@ -238,11 +238,11 @@ } rvh = sqrt(rv) - *h; // the difference between distance and lag - if (rv <= radius && fabsf(rvh) <= lag) { // distance test: compare the distance with critical value and find out if the j-point is located within i-lag + if (rv <= radius && fabs(rvh) <= lag) { // distance test: compare the distance with critical value and find out if the j-point is located within i-lag if (type == 2) { // vertical test for bivariate variogram: rvh = *(dr + 2) - *vert; // compare vertical - if (fabsf(rvh) <= lag_vert) { // elevation test: vertical lag + if (fabs(rvh) <= lag_vert) { // elevation test: vertical lag goto delta_V; } else { Modified: grass-addons/grass7/vector/v.kriging/utils_kriging.c =================================================================== --- grass-addons/grass7/vector/v.kriging/utils_kriging.c 2015-09-27 23:06:39 UTC (rev 66359) +++ grass-addons/grass7/vector/v.kriging/utils_kriging.c 2015-09-28 07:22:34 UTC (rev 66360) @@ -175,7 +175,7 @@ double diff_sill_05, diff_sill; diff_sill_05 = sill_hz > sill_vert ? 0.05 * sill_hz : 0.05 * sill_vert; // critical value as 5% from bigger sill - diff_sill = fabsf(sill_hz - sill_vert); // difference between the sills + diff_sill = fabs(sill_hz - sill_vert); // difference between the sills if (xD->bivar == TRUE || (!flg->univariate->answer && diff_sill > diff_sill_05)) { // zonal anisotropy var_par->fin.type = 2; // code for bivariate variogram @@ -196,8 +196,6 @@ xD->aniso_ratio = var_par->hz.h_range / var_par->vert.h_range; // anisotropic ratio geometric_anisotropy(xD, pnts); // exaggerate z coords and build a new spatial index } - - return 0; } // formulation of variogram functions @@ -669,7 +667,7 @@ //Create output *norm = rslt_OK - *vals; // differences between input and interpolated values - *av = fabsf(*norm); // absolute values of the differences (quantile computation) + *av = fabs(*norm); // absolute values of the differences (quantile computation) if (xD->i3 == TRUE) { // 3D interpolation: fprintf(fp, "%d %.3f %.3f %.2f %f %f %f\n", i, *r, *(r + 1), From svn_grass at osgeo.org Mon Sep 28 01:34:05 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Mon, 28 Sep 2015 01:34:05 -0700 Subject: [GRASS-SVN] r66361 - grass-addons/grass7/vector/v.mapcalc Message-ID: <20150928083405.0DCE03900A7@trac.osgeo.org> Author: neteler Date: 2015-09-28 01:34:04 -0700 (Mon, 28 Sep 2015) New Revision: 66361 Modified: grass-addons/grass7/vector/v.mapcalc/Makefile Log: v.mapcalc addon: attempt to fix Makefile Modified: grass-addons/grass7/vector/v.mapcalc/Makefile =================================================================== --- grass-addons/grass7/vector/v.mapcalc/Makefile 2015-09-28 07:22:34 UTC (rev 66360) +++ grass-addons/grass7/vector/v.mapcalc/Makefile 2015-09-28 08:34:04 UTC (rev 66361) @@ -13,6 +13,8 @@ default: cmd +$(OBJDIR)/v.mapcalc.tab.o: v.mapcalc.tab.h + yylex.c: v.mapcalc.tab.h .INTERMEDIATE: v.mapcalc.tab.c v.mapcalc.tab.h v.mapcalc.output From svn_grass at osgeo.org Mon Sep 28 01:34:43 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Mon, 28 Sep 2015 01:34:43 -0700 Subject: [GRASS-SVN] r66362 - grass-addons/grass7/vector/v.kriging Message-ID: <20150928083443.B56503900A7@trac.osgeo.org> Author: neteler Date: 2015-09-28 01:34:43 -0700 (Mon, 28 Sep 2015) New Revision: 66362 Modified: grass-addons/grass7/vector/v.kriging/local_proto.h grass-addons/grass7/vector/v.kriging/main.c Log: v.kriging addon: issue reasonable compiler error when LAPACK is absent Modified: grass-addons/grass7/vector/v.kriging/local_proto.h =================================================================== --- grass-addons/grass7/vector/v.kriging/local_proto.h 2015-09-28 08:34:04 UTC (rev 66361) +++ grass-addons/grass7/vector/v.kriging/local_proto.h 2015-09-28 08:34:43 UTC (rev 66362) @@ -17,6 +17,12 @@ #include #include + +#if defined(HAVE_LIBLAPACK) && defined(HAVE_LIBBLAS) +#else /* defined(HAVE_LIBBLAS) */ +#warning G_matrix_product() not compiled; requires GRASS GIS compiled and installed with BLAS library support +#endif /* HAVE_BLAS && HAVE_LAPACK */ + #ifndef PI #define PI M_PI #define DEG2RAD(ang) (ang / 180. * PI) Modified: grass-addons/grass7/vector/v.kriging/main.c =================================================================== --- grass-addons/grass7/vector/v.kriging/main.c 2015-09-28 08:34:04 UTC (rev 66361) +++ grass-addons/grass7/vector/v.kriging/main.c 2015-09-28 08:34:43 UTC (rev 66362) @@ -21,7 +21,15 @@ **************************************************************/ #include "local_proto.h" +#ifndef HAVE_LIBBLAS +#error GRASS GIS is not configured with BLAS +#endif +#ifndef HAVE_LIBLAPACK +#error GRASS GIS is not configured with LAPACK +#endif + + int main(int argc, char *argv[]) { // Vector layer and module From svn_grass at osgeo.org Mon Sep 28 02:35:21 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Mon, 28 Sep 2015 02:35:21 -0700 Subject: [GRASS-SVN] r66363 - grass-addons/tools/addons Message-ID: <20150928093521.542EE390094@trac.osgeo.org> Author: martinl Date: 2015-09-28 02:35:21 -0700 (Mon, 28 Sep 2015) New Revision: 66363 Modified: grass-addons/tools/addons/grass-addons.sh Log: addons support scripts: cosmetics Modified: grass-addons/tools/addons/grass-addons.sh =================================================================== --- grass-addons/tools/addons/grass-addons.sh 2015-09-28 08:34:43 UTC (rev 66362) +++ grass-addons/tools/addons/grass-addons.sh 2015-09-28 09:35:21 UTC (rev 66363) @@ -82,12 +82,13 @@ # check last change date_last=`svn info --incremental --xml | grep date | cut -d '>' -f2 | cut -d '<' -f1` +date_now=`date -u` num_last=`date --date="$date_last" +%s` -num_now=`date -u +%s` +num_now=`date --date="$date_now" +%s` count=$(echo "($num_now - $num_last) / 60." | bc) if [ "$count" -lt "$CHECK_EVERY_MIN" ] || [ "$1" = "f" ] ; then - echo "TIME DIFF (min): $count" + echo "TIME DIFF (min): $count ($date_last / $date_now)" build_addons $1 exit 0 fi From svn_grass at osgeo.org Mon Sep 28 02:35:49 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Mon, 28 Sep 2015 02:35:49 -0700 Subject: [GRASS-SVN] r66364 - grass-addons/tools/addons Message-ID: <20150928093549.7B2DC390094@trac.osgeo.org> Author: martinl Date: 2015-09-28 02:35:49 -0700 (Mon, 28 Sep 2015) New Revision: 66364 Modified: grass-addons/tools/addons/compile.sh grass-addons/tools/addons/grass-addons-index.sh Log: addons support scripts: rename summary.html to index.html Modified: grass-addons/tools/addons/compile.sh =================================================================== --- grass-addons/tools/addons/compile.sh 2015-09-28 09:35:21 UTC (rev 66363) +++ grass-addons/tools/addons/compile.sh 2015-09-28 09:35:49 UTC (rev 66364) @@ -12,7 +12,7 @@ TOPDIR="$2" ADDON_PATH="$3" GRASS_VERSION=`echo $ADDON_PATH | cut -d'/' -f6 | sed 's/grass//g'` -INDEX_FILE="summary" +INDEX_FILE="index" if [ ! -d "$3" ] ; then mkdir -p "$3" Modified: grass-addons/tools/addons/grass-addons-index.sh =================================================================== --- grass-addons/tools/addons/grass-addons-index.sh 2015-09-28 09:35:21 UTC (rev 66363) +++ grass-addons/tools/addons/grass-addons-index.sh 2015-09-28 09:35:49 UTC (rev 66364) @@ -100,7 +100,7 @@ this document. Please also read GRASS GIS programming best practice.

    -See also: log files of compilation. +See also: log files of compilation.


    " > index.html From svn_grass at osgeo.org Mon Sep 28 03:06:52 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Mon, 28 Sep 2015 03:06:52 -0700 Subject: [GRASS-SVN] r66365 - grass-addons/tools/wingrass-packager Message-ID: <20150928100652.C813B390094@trac.osgeo.org> Author: martinl Date: 2015-09-28 03:06:52 -0700 (Mon, 28 Sep 2015) New Revision: 66365 Modified: grass-addons/tools/wingrass-packager/grass_copy_wwwroot.sh grass-addons/tools/wingrass-packager/grass_packager.bat Log: wingrass: 7.0.1svn -> 7.0.2svn Modified: grass-addons/tools/wingrass-packager/grass_copy_wwwroot.sh =================================================================== --- grass-addons/tools/wingrass-packager/grass_copy_wwwroot.sh 2015-09-28 09:35:49 UTC (rev 66364) +++ grass-addons/tools/wingrass-packager/grass_copy_wwwroot.sh 2015-09-28 10:06:52 UTC (rev 66365) @@ -56,7 +56,7 @@ # daily builds ### copy 64 6.4.5svn ### copy 65 - copy 70 7.0.1svn + copy 70 7.0.2svn copy 71 7.1.svn # releases copy_addon 644 6.4.4 Modified: grass-addons/tools/wingrass-packager/grass_packager.bat =================================================================== --- grass-addons/tools/wingrass-packager/grass_packager.bat 2015-09-28 09:35:49 UTC (rev 66364) +++ grass-addons/tools/wingrass-packager/grass_packager.bat 2015-09-28 10:06:52 UTC (rev 66365) @@ -7,7 +7,7 @@ REM REM rmdir /s /q C:\OSGeo4W\apps\grass\grass-6.4.5svn REM rmdir /s /q C:\OSGeo4W\apps\grass\grass-6.5.svn -rmdir /s /q C:\OSGeo4W\apps\grass\grass-7.0.1svn +rmdir /s /q C:\OSGeo4W\apps\grass\grass-7.0.2svn rmdir /s /q C:\OSGeo4W\apps\grass\grass-7.1.svn REM From svn_grass at osgeo.org Mon Sep 28 03:07:57 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Mon, 28 Sep 2015 03:07:57 -0700 Subject: [GRASS-SVN] r66366 - in grass/branches/releasebranch_7_0/lib: python/temporal temporal/lib Message-ID: <20150928100757.6DAE2390094@trac.osgeo.org> Author: neteler Date: 2015-09-28 03:07:57 -0700 (Mon, 28 Sep 2015) New Revision: 66366 Modified: grass/branches/releasebranch_7_0/lib/python/temporal/core.py grass/branches/releasebranch_7_0/lib/temporal/lib/default_name.c Log: temporal library: Store the default database connection as shell variable substitude to avoid wrong temporal database path's in cases the location was renamed or the path to the grass database changed. (trunk, r65519) Modified: grass/branches/releasebranch_7_0/lib/python/temporal/core.py =================================================================== --- grass/branches/releasebranch_7_0/lib/python/temporal/core.py 2015-09-28 10:06:52 UTC (rev 66365) +++ grass/branches/releasebranch_7_0/lib/python/temporal/core.py 2015-09-28 10:07:57 UTC (rev 66366) @@ -847,7 +847,8 @@ driver, dbstring = self.tgis_mapsets[mapset] if dbstring not in self.unique_connections.keys(): - self.unique_connections[dbstring] = DBConnection(driver) + self.unique_connections[dbstring] = DBConnection(backend=driver, + dbstring=dbstring) self.connections[mapset] = self.unique_connections[dbstring] @@ -891,7 +892,7 @@ close all temporal databases that have been opened. """ for key in self.unique_connections.keys(): - self.unique_connections[key] .close() + self.unique_connections[key].close() self.connected = False @@ -1001,16 +1002,20 @@ class DBConnection(object): """This class represents the database interface connection - and provides access to the chisen backend modules. + and provides access to the chosen backend modules. The following DBMS are supported: - sqlite via the sqlite3 standard library - postgresql via psycopg2 - """ - def __init__(self, backend=None): + def __init__(self, backend=None, dbstring=None): + """ Constructor of a database connection + + param backend:The database backend sqlite or pg + param dbstring: The database connection string + """ self.connected = False if backend is None: global tgis_backend @@ -1024,6 +1029,10 @@ else: self.dbmi = psycopg2 + if dbstring is None: + global tgis_database_string + self.dbstring = tgis_database_string + self.msgr = get_tgis_message_interface() self.msgr.debug(1, "SQLDatabaseInterfaceConnection constructor") @@ -1048,13 +1057,13 @@ def connect(self, dbstring=None): """Connect to the DBMI to execute SQL statements - Supported backends are sqlite3 and postgresql + Supported backends are sqlite3 and postgresql + + param dbstring: The database connection string """ # Connection in the current mapset if dbstring is None: - global tgis_database_string - dbstring = tgis_database_string - + dbstring = self.dbstring try: if self.dbmi.__name__ == "sqlite3": self.connection = self.dbmi.connect(dbstring, Modified: grass/branches/releasebranch_7_0/lib/temporal/lib/default_name.c =================================================================== --- grass/branches/releasebranch_7_0/lib/temporal/lib/default_name.c 2015-09-28 10:06:52 UTC (rev 66365) +++ grass/branches/releasebranch_7_0/lib/temporal/lib/default_name.c 2015-09-28 10:07:57 UTC (rev 66366) @@ -40,8 +40,8 @@ { char default_connection[2048]; - G_snprintf(default_connection, 2048, "%s/%s/%s/%s", G_gisdbase(), G_location(), - G_mapset(), TGISDB_DEFAULT_SQLITE_PATH); + G_snprintf(default_connection, 2048, "$GISDBASE/$LOCATION_NAME/$MAPSET/%s", + TGISDB_DEFAULT_SQLITE_PATH); return G_store(default_connection); } From svn_grass at osgeo.org Mon Sep 28 03:40:42 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Mon, 28 Sep 2015 03:40:42 -0700 Subject: [GRASS-SVN] r66367 - grass/trunk Message-ID: <20150928104042.D6E743900A7@trac.osgeo.org> Author: neteler Date: 2015-09-28 03:40:42 -0700 (Mon, 28 Sep 2015) New Revision: 66367 Modified: grass/trunk/contributors_extra.csv Log: contributors extra: some countries added Modified: grass/trunk/contributors_extra.csv =================================================================== --- grass/trunk/contributors_extra.csv 2015-09-28 10:07:57 UTC (rev 66366) +++ grass/trunk/contributors_extra.csv 2015-09-28 10:40:42 UTC (rev 66367) @@ -5,36 +5,36 @@ Antonio Galea,,Italy,- Ari Jolma,,Finland,- Bill Hughes,,-,- -Brook Milligan,,-,- -Bruce Byars,,-,- +Brook Milligan,,USA,- +Bruce Byars,,USA,- Carl Anderson,,-,- -Charles Ehlschlaeger,,-,- -Christoph Simon,,-,- +Charles Ehlschlaeger,,USA,- +Christoph Simon,,Brasil,- David Knapp,-,USA,- Duccio Rocchini,,Italy,- -Dylan Beaudette,,-,yes +Dylan Beaudette,,USA,yes Eric Mitchell,,-,- -Francesco Pirotti,,-,- -Jacques Bouchard,,-,- +Francesco Pirotti,,Italy,- +Jacques Bouchard,,France,- Jaro Hofierka,,Slovakia,- -Jeshua Lacock,,-,- +Jeshua Lacock,,USA,- Job Spijker,,-,- Lars Ahlzen,,-,- Lorenzo Moretti,,Italy,- -Lubos Mitas,,-,- +Lubos Mitas,,USA,- Malcolm Blue,,Canada,- Maria Brovelli,,Italy,- Michael Perdue,,-,- Michel Wurtz,,France,- Otto Dassau,,Germany,yes Philip Warner,,-,- -Phisan Santitamnont,,-,- +Phisan Santitamnont,,Thailand,- Pierre de Mouveaux,,-,- Ralf Gerlich,,-,- Roberto Flor,,Italy,- -Roger Bivand,,-,- +Roger Bivand,,Norway,- Roger Miller,,-,- Tereza Fiedlerov?,,Czech Republic,- Tomas Paudits,,Slovakia,- Trevor Wiens,,-,- -William Brown,,-,- +William Brown,,USA,- From svn_grass at osgeo.org Mon Sep 28 03:41:05 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Mon, 28 Sep 2015 03:41:05 -0700 Subject: [GRASS-SVN] r66368 - grass/trunk Message-ID: <20150928104105.0E3723900A7@trac.osgeo.org> Author: neteler Date: 2015-09-28 03:41:04 -0700 (Mon, 28 Sep 2015) New Revision: 66368 Modified: grass/trunk/contributors_extra.csv Log: t.rast.aggregate manual: more examples (contributed by Veronica Andreo) Modified: grass/trunk/contributors_extra.csv =================================================================== --- grass/trunk/contributors_extra.csv 2015-09-28 10:40:42 UTC (rev 66367) +++ grass/trunk/contributors_extra.csv 2015-09-28 10:41:04 UTC (rev 66368) @@ -37,4 +37,5 @@ Tereza Fiedlerov?,,Czech Republic,- Tomas Paudits,,Slovakia,- Trevor Wiens,,-,- +Veronica Andreo,,Argentina,- William Brown,,USA,- From svn_grass at osgeo.org Mon Sep 28 03:41:49 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Mon, 28 Sep 2015 03:41:49 -0700 Subject: [GRASS-SVN] r66369 - grass/branches/releasebranch_7_0 Message-ID: <20150928104149.6A1303900A7@trac.osgeo.org> Author: neteler Date: 2015-09-28 03:41:49 -0700 (Mon, 28 Sep 2015) New Revision: 66369 Modified: grass/branches/releasebranch_7_0/contributors_extra.csv Log: contributors extra: some countries added Modified: grass/branches/releasebranch_7_0/contributors_extra.csv =================================================================== --- grass/branches/releasebranch_7_0/contributors_extra.csv 2015-09-28 10:41:04 UTC (rev 66368) +++ grass/branches/releasebranch_7_0/contributors_extra.csv 2015-09-28 10:41:49 UTC (rev 66369) @@ -5,35 +5,35 @@ Antonio Galea,,Italy,- Ari Jolma,,Finland,- Bill Hughes,,-,- -Brook Milligan,,-,- -Bruce Byars,,-,- +Brook Milligan,,USA,- +Bruce Byars,,USA,- Carl Anderson,,-,- -Charles Ehlschlaeger,,-,- -Christoph Simon,,-,- +Charles Ehlschlaeger,,USA,- +Christoph Simon,,Brasil,- David Knapp,-,USA,- Duccio Rocchini,,Italy,- -Dylan Beaudette,,-,yes +Dylan Beaudette,,USA,yes Eric Mitchell,,-,- -Francesco Pirotti,,-,- -Jacques Bouchard,,-,- +Francesco Pirotti,,Italy,- +Jacques Bouchard,,France,- Jaro Hofierka,,Slovakia,- -Jeshua Lacock,,-,- +Jeshua Lacock,,USA,- Job Spijker,,-,- Lars Ahlzen,,-,- Lorenzo Moretti,,Italy,- -Lubos Mitas,,-,- +Lubos Mitas,,USA,- Malcolm Blue,,Canada,- Maria Brovelli,,Italy,- Michael Perdue,,-,- Michel Wurtz,,France,- Otto Dassau,,Germany,yes Philip Warner,,-,- -Phisan Santitamnont,,-,- +Phisan Santitamnont,,Thailand,- Pierre de Mouveaux,,-,- Ralf Gerlich,,-,- Roberto Flor,,Italy,- -Roger Bivand,,-,- +Roger Bivand,,Norway,- Roger Miller,,-,- Tomas Paudits,,Slovakia,- Trevor Wiens,,-,- -William Brown,,-,- +William Brown,,USA,- From svn_grass at osgeo.org Mon Sep 28 03:43:13 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Mon, 28 Sep 2015 03:43:13 -0700 Subject: [GRASS-SVN] r66370 - grass/trunk/temporal/t.rast.aggregate Message-ID: <20150928104313.C3C273900A7@trac.osgeo.org> Author: neteler Date: 2015-09-28 03:43:13 -0700 (Mon, 28 Sep 2015) New Revision: 66370 Modified: grass/trunk/temporal/t.rast.aggregate/t.rast.aggregate.html Log: t.rast.aggregate manual: more examples (contributed by Veronica Andreo) Modified: grass/trunk/temporal/t.rast.aggregate/t.rast.aggregate.html =================================================================== --- grass/trunk/temporal/t.rast.aggregate/t.rast.aggregate.html 2015-09-28 10:41:49 UTC (rev 66369) +++ grass/trunk/temporal/t.rast.aggregate/t.rast.aggregate.html 2015-09-28 10:43:13 UTC (rev 66370) @@ -52,14 +52,20 @@ r.series modules will be started, depending on the number of specified parallel processes (nprocs) and the number of intervals to aggregate. +

    +The flag -s allows to store a date as map name suffix rather than +using consecutive numbering. See the examples below for details. -

    EXAMPLE

    +

    EXAMPLES

    +

    Aggregation of monthly data into yearly data

    + In this example the user is going to aggregate monthly data into yearly data, running:
    -t.rast.aggregate input=tempmean_monthly output=tempmean_yearly basename=tempmean_year \
    +t.rast.aggregate input=tempmean_monthly output=tempmean_yearly \
    +                 basename=tempmean_year \
                      granularity="1 years" method=average
     
     t.support input=tempmean_yearly \
    @@ -120,7 +126,122 @@
      +----------------------------------------------------------------------------+
     
    +

    Different aggregations and map name suffix variants

    +Examples of resulting naming schemes for different aggregations when +using the -s flag: + +

    Weekly aggregation

    + +
    +t.rast.aggregate input=daily_temp output=weekly_avg_temp \
    +  basename=weekly_avg_temp method=average granularity="1 weeks"
    +
    +t.rast.list weekly_avg_temp
    +name|mapset|start_time|end_time
    +weekly_avg_temp_2003_01|climate|2003-01-03 00:00:00|2003-01-10 00:00:00
    +weekly_avg_temp_2003_02|climate|2003-01-10 00:00:00|2003-01-17 00:00:00
    +weekly_avg_temp_2003_03|climate|2003-01-17 00:00:00|2003-01-24 00:00:00
    +weekly_avg_temp_2003_04|climate|2003-01-24 00:00:00|2003-01-31 00:00:00
    +weekly_avg_temp_2003_05|climate|2003-01-31 00:00:00|2003-02-07 00:00:00
    +weekly_avg_temp_2003_06|climate|2003-02-07 00:00:00|2003-02-14 00:00:00
    +weekly_avg_temp_2003_07|climate|2003-02-14 00:00:00|2003-02-21 00:00:00
    +
    + +Variant with -s flag: +
    +t.rast.aggregate -s input=daily_temp output=weekly_avg_temp \
    +  basename=weekly_avg_temp method=average granularity="1 weeks"
    +
    +t.rast.list weekly_avg_temp
    +name|mapset|start_time|end_time
    +weekly_avg_temp_2003_01_03|climate|2003-01-03 00:00:00|2003-01-10 00:00:00
    +weekly_avg_temp_2003_01_10|climate|2003-01-10 00:00:00|2003-01-17 00:00:00
    +weekly_avg_temp_2003_01_17|climate|2003-01-17 00:00:00|2003-01-24 00:00:00
    +weekly_avg_temp_2003_01_24|climate|2003-01-24 00:00:00|2003-01-31 00:00:00
    +weekly_avg_temp_2003_01_31|climate|2003-01-31 00:00:00|2003-02-07 00:00:00
    +weekly_avg_temp_2003_02_07|climate|2003-02-07 00:00:00|2003-02-14 00:00:00
    +weekly_avg_temp_2003_02_14|climate|2003-02-14 00:00:00|2003-02-21 00:00:00
    +
    + + +

    8-day aggregation

    + +This "eight-day week" is used for some MODIS satellite sensor products: + +
    +t.rast.aggregate -s input=daily_temp output=8day_avg_temp \
    +  basename=8day_avg_temp method=average granularity="8 days"
    +
    +t.rast.list 8day_avg_temp
    +name|mapset|start_time|end_time
    +8day_avg_temp_2003_01_01|climate|2003-01-01 00:00:00|2003-01-09 00:00:00
    +8day_avg_temp_2003_01_09|climate|2003-01-09 00:00:00|2003-01-17 00:00:00
    +8day_avg_temp_2003_01_17|climate|2003-01-17 00:00:00|2003-01-25 00:00:00
    +8day_avg_temp_2003_01_25|climate|2003-01-25 00:00:00|2003-02-02 00:00:00
    +8day_avg_temp_2003_02_02|climate|2003-02-02 00:00:00|2003-02-10 00:00:00
    +8day_avg_temp_2003_02_10|climate|2003-02-10 00:00:00|2003-02-18 00:00:00
    +
    +# Note that to make this aggregation comparable with 8day MODIS products,
    +# for example, you should loop over years, and maybe merge resulting strds
    +# afterwards
    +
    +for YEAR in "2003 2004" "2004 2005" "2005 2006"; do
    +    set -- $YEAR ; echo $1 $2
    +    t.rast.aggregate -s input=daily_temp output=8day_avg_temp_${1} \
    +      basename=8day_avg_temp method=average granularity="8 days" \
    +      where="start_time >='${1}-01-01' and end_time < '${2}-01-01'"
    +done
    +
    +t.list
    +----------------------------------------------
    +Space time raster datasets with absolute time available in mapset <climate>:
    +8day_avg_temp_2003 at climate
    +8day_avg_temp_2004 at climate
    +daily_temp at climate
    +
    +t.rast.list 8day_avg_temp_2003
    +name|mapset|start_time|end_time
    +8day_avg_temp_2003_01_01|climate|2003-01-01 00:00:00|2003-01-09 00:00:00
    +8day_avg_temp_2003_01_09|climate|2003-01-09 00:00:00|2003-01-17 00:00:00
    +8day_avg_temp_2003_01_17|climate|2003-01-17 00:00:00|2003-01-25 00:00:00
    +8day_avg_temp_2003_01_25|climate|2003-01-25 00:00:00|2003-02-02 00:00:00
    +...
    +8day_avg_temp_2003_12_03|climate|2003-12-03 00:00:00|2003-12-11 00:00:00
    +8day_avg_temp_2003_12_11|climate|2003-12-11 00:00:00|2003-12-19 00:00:00
    +8day_avg_temp_2003_12_19|climate|2003-12-19 00:00:00|2003-12-27 00:00:00
    +8day_avg_temp_2003_12_27|climate|2003-12-27 00:00:00|2004-01-04 00:00:00
    +
    + +

    Monthly aggregation

    + +
    +t.rast.aggregate -s input=daily_temp output=monthly_avg_temp \
    +basename=monthly_avg_temp method=average granularity="1 months"
    +
    +t.rast.list monthly_avg_temp
    +name|mapset|start_time|end_time
    +monthly_avg_temp_2003_01|climate|2003-01-01 00:00:00|2003-02-01 00:00:00
    +monthly_avg_temp_2003_02|climate|2003-02-01 00:00:00|2003-03-01 00:00:00
    +monthly_avg_temp_2003_03|climate|2003-03-01 00:00:00|2003-04-01 00:00:00
    +monthly_avg_temp_2003_04|climate|2003-04-01 00:00:00|2003-05-01 00:00:00
    +monthly_avg_temp_2003_05|climate|2003-05-01 00:00:00|2003-06-01 00:00:00
    +monthly_avg_temp_2003_06|climate|2003-06-01 00:00:00|2003-07-01 00:00:00
    +
    + +

    Yearly aggregation

    + +
    +t.rast.aggregate -s input=daily_temp output=yearly_avg_temp \
    +  basename=yearly_avg_temp method=average granularity="1 years"
    +
    +t.rast.list yearly_avg_temp
    +name|mapset|start_time|end_time
    +yearly_avg_temp_2003|climate|2003-01-01 00:00:00|2004-01-01 00:00:00
    +yearly_avg_temp_2004|climate|2004-01-01 00:00:00|2005-01-01 00:00:00
    +
    + +

    SEE ALSO

    From svn_grass at osgeo.org Mon Sep 28 03:43:57 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Mon, 28 Sep 2015 03:43:57 -0700 Subject: [GRASS-SVN] r66371 - in grass/branches/releasebranch_7_0: . temporal/t.rast.aggregate Message-ID: <20150928104357.16FEB3900A7@trac.osgeo.org> Author: neteler Date: 2015-09-28 03:43:57 -0700 (Mon, 28 Sep 2015) New Revision: 66371 Modified: grass/branches/releasebranch_7_0/contributors_extra.csv grass/branches/releasebranch_7_0/temporal/t.rast.aggregate/t.rast.aggregate.html Log: t.rast.aggregate manual: more examples (contributed by Veronica Andreo) Modified: grass/branches/releasebranch_7_0/contributors_extra.csv =================================================================== --- grass/branches/releasebranch_7_0/contributors_extra.csv 2015-09-28 10:43:13 UTC (rev 66370) +++ grass/branches/releasebranch_7_0/contributors_extra.csv 2015-09-28 10:43:57 UTC (rev 66371) @@ -36,4 +36,5 @@ Roger Miller,,-,- Tomas Paudits,,Slovakia,- Trevor Wiens,,-,- +Veronica Andreo,,Argentina,- William Brown,,USA,- Modified: grass/branches/releasebranch_7_0/temporal/t.rast.aggregate/t.rast.aggregate.html =================================================================== --- grass/branches/releasebranch_7_0/temporal/t.rast.aggregate/t.rast.aggregate.html 2015-09-28 10:43:13 UTC (rev 66370) +++ grass/branches/releasebranch_7_0/temporal/t.rast.aggregate/t.rast.aggregate.html 2015-09-28 10:43:57 UTC (rev 66371) @@ -52,14 +52,20 @@ r.series modules will be started, depending on the number of specified parallel processes (nprocs) and the number of intervals to aggregate. +

    +The flag -s allows to store a date as map name suffix rather than +using consecutive numbering. See the examples below for details. -

    EXAMPLE

    +

    EXAMPLES

    +

    Aggregation of monthly data into yearly data

    + In this example the user is going to aggregate monthly data into yearly data, running:
    -t.rast.aggregate input=tempmean_monthly output=tempmean_yearly basename=tempmean_year \
    +t.rast.aggregate input=tempmean_monthly output=tempmean_yearly \
    +                 basename=tempmean_year \
                      granularity="1 years" method=average
     
     t.support input=tempmean_yearly \
    @@ -120,7 +126,122 @@
      +----------------------------------------------------------------------------+
     
    +

    Different aggregations and map name suffix variants

    +Examples of resulting naming schemes for different aggregations when +using the -s flag: + +

    Weekly aggregation

    + +
    +t.rast.aggregate input=daily_temp output=weekly_avg_temp \
    +  basename=weekly_avg_temp method=average granularity="1 weeks"
    +
    +t.rast.list weekly_avg_temp
    +name|mapset|start_time|end_time
    +weekly_avg_temp_2003_01|climate|2003-01-03 00:00:00|2003-01-10 00:00:00
    +weekly_avg_temp_2003_02|climate|2003-01-10 00:00:00|2003-01-17 00:00:00
    +weekly_avg_temp_2003_03|climate|2003-01-17 00:00:00|2003-01-24 00:00:00
    +weekly_avg_temp_2003_04|climate|2003-01-24 00:00:00|2003-01-31 00:00:00
    +weekly_avg_temp_2003_05|climate|2003-01-31 00:00:00|2003-02-07 00:00:00
    +weekly_avg_temp_2003_06|climate|2003-02-07 00:00:00|2003-02-14 00:00:00
    +weekly_avg_temp_2003_07|climate|2003-02-14 00:00:00|2003-02-21 00:00:00
    +
    + +Variant with -s flag: +
    +t.rast.aggregate -s input=daily_temp output=weekly_avg_temp \
    +  basename=weekly_avg_temp method=average granularity="1 weeks"
    +
    +t.rast.list weekly_avg_temp
    +name|mapset|start_time|end_time
    +weekly_avg_temp_2003_01_03|climate|2003-01-03 00:00:00|2003-01-10 00:00:00
    +weekly_avg_temp_2003_01_10|climate|2003-01-10 00:00:00|2003-01-17 00:00:00
    +weekly_avg_temp_2003_01_17|climate|2003-01-17 00:00:00|2003-01-24 00:00:00
    +weekly_avg_temp_2003_01_24|climate|2003-01-24 00:00:00|2003-01-31 00:00:00
    +weekly_avg_temp_2003_01_31|climate|2003-01-31 00:00:00|2003-02-07 00:00:00
    +weekly_avg_temp_2003_02_07|climate|2003-02-07 00:00:00|2003-02-14 00:00:00
    +weekly_avg_temp_2003_02_14|climate|2003-02-14 00:00:00|2003-02-21 00:00:00
    +
    + + +

    8-day aggregation

    + +This "eight-day week" is used for some MODIS satellite sensor products: + +
    +t.rast.aggregate -s input=daily_temp output=8day_avg_temp \
    +  basename=8day_avg_temp method=average granularity="8 days"
    +
    +t.rast.list 8day_avg_temp
    +name|mapset|start_time|end_time
    +8day_avg_temp_2003_01_01|climate|2003-01-01 00:00:00|2003-01-09 00:00:00
    +8day_avg_temp_2003_01_09|climate|2003-01-09 00:00:00|2003-01-17 00:00:00
    +8day_avg_temp_2003_01_17|climate|2003-01-17 00:00:00|2003-01-25 00:00:00
    +8day_avg_temp_2003_01_25|climate|2003-01-25 00:00:00|2003-02-02 00:00:00
    +8day_avg_temp_2003_02_02|climate|2003-02-02 00:00:00|2003-02-10 00:00:00
    +8day_avg_temp_2003_02_10|climate|2003-02-10 00:00:00|2003-02-18 00:00:00
    +
    +# Note that to make this aggregation comparable with 8day MODIS products,
    +# for example, you should loop over years, and maybe merge resulting strds
    +# afterwards
    +
    +for YEAR in "2003 2004" "2004 2005" "2005 2006"; do
    +    set -- $YEAR ; echo $1 $2
    +    t.rast.aggregate -s input=daily_temp output=8day_avg_temp_${1} \
    +      basename=8day_avg_temp method=average granularity="8 days" \
    +      where="start_time >='${1}-01-01' and end_time < '${2}-01-01'"
    +done
    +
    +t.list
    +----------------------------------------------
    +Space time raster datasets with absolute time available in mapset <climate>:
    +8day_avg_temp_2003 at climate
    +8day_avg_temp_2004 at climate
    +daily_temp at climate
    +
    +t.rast.list 8day_avg_temp_2003
    +name|mapset|start_time|end_time
    +8day_avg_temp_2003_01_01|climate|2003-01-01 00:00:00|2003-01-09 00:00:00
    +8day_avg_temp_2003_01_09|climate|2003-01-09 00:00:00|2003-01-17 00:00:00
    +8day_avg_temp_2003_01_17|climate|2003-01-17 00:00:00|2003-01-25 00:00:00
    +8day_avg_temp_2003_01_25|climate|2003-01-25 00:00:00|2003-02-02 00:00:00
    +...
    +8day_avg_temp_2003_12_03|climate|2003-12-03 00:00:00|2003-12-11 00:00:00
    +8day_avg_temp_2003_12_11|climate|2003-12-11 00:00:00|2003-12-19 00:00:00
    +8day_avg_temp_2003_12_19|climate|2003-12-19 00:00:00|2003-12-27 00:00:00
    +8day_avg_temp_2003_12_27|climate|2003-12-27 00:00:00|2004-01-04 00:00:00
    +
    + +

    Monthly aggregation

    + +
    +t.rast.aggregate -s input=daily_temp output=monthly_avg_temp \
    +basename=monthly_avg_temp method=average granularity="1 months"
    +
    +t.rast.list monthly_avg_temp
    +name|mapset|start_time|end_time
    +monthly_avg_temp_2003_01|climate|2003-01-01 00:00:00|2003-02-01 00:00:00
    +monthly_avg_temp_2003_02|climate|2003-02-01 00:00:00|2003-03-01 00:00:00
    +monthly_avg_temp_2003_03|climate|2003-03-01 00:00:00|2003-04-01 00:00:00
    +monthly_avg_temp_2003_04|climate|2003-04-01 00:00:00|2003-05-01 00:00:00
    +monthly_avg_temp_2003_05|climate|2003-05-01 00:00:00|2003-06-01 00:00:00
    +monthly_avg_temp_2003_06|climate|2003-06-01 00:00:00|2003-07-01 00:00:00
    +
    + +

    Yearly aggregation

    + +
    +t.rast.aggregate -s input=daily_temp output=yearly_avg_temp \
    +  basename=yearly_avg_temp method=average granularity="1 years"
    +
    +t.rast.list yearly_avg_temp
    +name|mapset|start_time|end_time
    +yearly_avg_temp_2003|climate|2003-01-01 00:00:00|2004-01-01 00:00:00
    +yearly_avg_temp_2004|climate|2004-01-01 00:00:00|2005-01-01 00:00:00
    +
    + +

    SEE ALSO

    From svn_grass at osgeo.org Mon Sep 28 03:55:21 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Mon, 28 Sep 2015 03:55:21 -0700 Subject: [GRASS-SVN] r66372 - grass/trunk/locale/po Message-ID: <20150928105521.817293900A7@trac.osgeo.org> Author: neteler Date: 2015-09-28 03:55:21 -0700 (Mon, 28 Sep 2015) New Revision: 66372 Modified: grass/trunk/locale/po/grasslibs_fr.po Log: Sylvain Maillard: FR translation cont'ed Modified: grass/trunk/locale/po/grasslibs_fr.po =================================================================== --- grass/trunk/locale/po/grasslibs_fr.po 2015-09-28 10:43:57 UTC (rev 66371) +++ grass/trunk/locale/po/grasslibs_fr.po 2015-09-28 10:55:21 UTC (rev 66372) @@ -1,18 +1,18 @@ # French translation of grasslibs_fr.po # This file is distributed under the same license as the GRASS package. -# Copyright (C) 2005, 2012 GRASS Development Team +# Copyright (C) 2005, 2012-2015 GRASS Development Team # Emmanuel Saracco , 2004 # Daniel Calvelo , 2005 # Eve (alias 'phyto') , 2005 # ->just re-reading/editing to harmonize terminology with the GRASS6 french documentation project # Vincent Bain , 2012. -# Sylvain Maillard , 2011, 2012. +# Sylvain Maillard , 2011, 2012, 2015. msgid "" msgstr "" "Project-Id-Version: grasslibs_fr\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-08-18 13:14+0200\n" -"PO-Revision-Date: 2015-08-10 21:14+0200\n" +"PO-Revision-Date: 2015-09-28 08:46+0200\n" "Last-Translator: Sylvain Maillard \n" "Language-Team: French \n" "Language: fr\n" @@ -59,9 +59,9 @@ msgstr "Impossible d'obtenir la liste des tables dans la base de donn?es <%s>" #: ../lib/db/dbmi_client/copy_tab.c:189 -#, fuzzy, c-format +#, c-format msgid "Table <%s> already exists in database and will be overwritten" -msgstr "La couche vectorielle <%s> existe d?j? et va ?tre ?cras?" +msgstr "La table <%s> existe d?j? dans la base de donn?es et va ?tre ?cras?e" #: ../lib/db/dbmi_client/copy_tab.c:194 #, c-format @@ -144,9 +144,9 @@ msgstr "db_get_index_column_name() : num?ro de colonne invalide" #: ../lib/db/dbmi_base/login.c:110 -#, fuzzy, c-format +#, c-format msgid "Unable to read file '%s'" -msgstr "Impossible d'ouvrir le fichier %s" +msgstr "Impossible de lire le fichier '%s'" #: ../lib/db/dbmi_base/login.c:125 #, fuzzy, c-format @@ -154,35 +154,31 @@ msgstr "Fichier de connexion corrompu" #: ../lib/db/dbmi_base/login.c:154 -#, fuzzy, c-format +#, c-format msgid "Unable to write file '%s'" -msgstr "Impossible de supprimer le fichier <%s>" +msgstr "Impossible d'?crire le fichier '%s'" #: ../lib/db/dbmi_base/login.c:219 #, fuzzy, c-format msgid "DB connection <%s/%s> already exists and will be overwritten" -msgstr "La couche vectorielle <%s> existe d?j? et va ?tre ?cras?" +msgstr "La connexion <%s> existe d?j? et va ?tre ?cras?e" #: ../lib/db/dbmi_base/login.c:222 #, fuzzy, c-format -msgid "" -"DB connection <%s/%s> already exists. Re-run '%s' with '--%s' flag to " -"overwrite existing settings." -msgstr "La couche vectorielle <%s> existe d?j? et va ?tre ?cras?" +msgid "DB connection <%s/%s> already exists. Re-run '%s' with '--%s' flag to overwrite existing settings." +msgstr "La connexion <%s> existe d?j?. R?-ex?cuter '%s' avec l'option '--%s' pour ?craser les param?tres existants." #: ../lib/db/dbmi_base/error.c:72 -#, fuzzy msgid "" -msgstr "Message d'erreur : %s" +msgstr "" #: ../lib/db/dbmi_base/error.c:91 msgid "dbmi: Protocol error" msgstr "dbmi : erreur de protocole" #: ../lib/db/dbmi_base/error.c:136 -#, fuzzy msgid "dbmi: Out of Memory" -msgstr "G_malloc : d?passement de m?moire" +msgstr "dbmi : d?passement de m?moire" #: ../lib/db/dbmi_base/error.c:149 #, c-format @@ -195,20 +191,19 @@ msgstr "dbmi : proc?dure %d invalide" #: ../lib/db/dbmi_base/legal_dbname.c:38 -#, fuzzy, c-format +#, c-format msgid "Illegal table map name <%s>. May not contain '.' or 'NULL'." -msgstr "Nom de table ill?gal <%s>. Ne doit contenir ni '.', ni 'NULL'.\n" +msgstr "Nom de table <%s> incorrect. Ne doit contenir ni '.' ni 'NULL'." #: ../lib/db/dbmi_base/legal_dbname.c:45 -#, fuzzy, c-format +#, c-format msgid "Illegal table map name <%s>. Must start with a letter." -msgstr "Nom de table ill?gal <%s>. Doit commencer par une lettre.\n" +msgstr "Nom de table <%s> incorrect. Doit commencer par une lettre." #: ../lib/db/dbmi_base/legal_dbname.c:54 -#, fuzzy, c-format +#, c-format msgid "Illegal table map name <%s>. Character <%c> not allowed." -msgstr "" -"Nom de couche table ill?gal <%s>. Le caract?re <%c> n'est pas autoris?.\n" +msgstr "Nom de table <%s> incorrect. Le caract?re <%c> n'est pas autoris?." #: ../lib/db/dbmi_base/valuefmt.c:52 msgid "db_convert_Cstring_to_value(): unrecognized sqltype" @@ -249,36 +244,32 @@ msgstr "?x?cuter tous les tests unitaires et d'int?gration" #: ../lib/db/dbmi_base/test/test_main.c:83 -#, fuzzy msgid "Performs unit and integration tests for the dbmi base library" -msgstr "Effectue les tests unitaires et d'int?gration pour la librairie gpde" +msgstr "Effectue les tests unitaires et d'int?gration pour la librairie dbmi" #: ../lib/db/dbmi_base/test/test_columns.c:37 -#, fuzzy msgid "" "\n" "++ Running column unit tests ++" msgstr "" "\n" -"++ ?x?cution du solveur des tests unitaires ++" +"++ Ex?cution des tests unitaires de colonne ++" #: ../lib/db/dbmi_base/test/test_columns.c:42 -#, fuzzy msgid "" "\n" "-- column unit tests failure --" msgstr "" "\n" -"-- ?chec du solveur des tests unitaires --" +"-- ?chec des tests unitaires de colonne --" #: ../lib/db/dbmi_base/test/test_columns.c:44 -#, fuzzy msgid "" "\n" "-- column unit tests finished successfully --" msgstr "" "\n" -"-- Tests unitaires du solveur termin?s avec succ?s --" +"-- Tests unitaires de colonne termin?s avec succ?s --" #: ../lib/db/dbmi_base/test/test_columns.c:57 msgid "" @@ -297,60 +288,57 @@ "++ Test de copie de colonne termin? ++" #: ../lib/db/dbmi_base/test/test_table.c:38 -#, fuzzy msgid "" "\n" "++ Running table unit tests ++" msgstr "" "\n" -"++ ?x?cution du solveur des tests unitaires ++" +"++ Ex?cution des tests unitaires de table ++" #: ../lib/db/dbmi_base/test/test_table.c:43 -#, fuzzy msgid "" "\n" "-- Table unit tests failure --" msgstr "" "\n" -"-- ?chec du solveur des tests unitaires --" +"-- ?chec des tests unitaires de table --" #: ../lib/db/dbmi_base/test/test_table.c:45 -#, fuzzy msgid "" "\n" "-- Table unit tests finished successfully --" msgstr "" "\n" -"-- Tests unitaires du solveur termin?s avec succ?s --" +"-- Tests unitaires de table termin?s avec succ?s --" #: ../lib/db/dbmi_base/xdrvalue.c:82 msgid "send data: invalid C-type" msgstr "envoi de donn?es : type C invalide" #: ../lib/cairodriver/read_xid.c:14 -#, fuzzy, c-format +#, c-format msgid "Unable to open input file <%s>" -msgstr "Impossible d'ouvrir le fichier %s" +msgstr "Impossible d'ouvrir le fichier d'entr?e <%s>" #: ../lib/cairodriver/read_xid.c:17 -#, fuzzy, c-format +#, c-format msgid "Unable to read input file <%s>" -msgstr "Impossible d'ouvrir le fichier statistique <%s>" +msgstr "Impossible de lire le fichier d'entr?e <%s>" #: ../lib/cairodriver/read_xid.c:20 -#, fuzzy, c-format +#, c-format msgid "Unable to parse input file <%s>" -msgstr "Impossible d'ouvrir le fichier statistique <%s>" +msgstr "Impossible d'analyser le fichier d'entr?e <%s>" #: ../lib/cairodriver/graph.c:67 #, fuzzy msgid "Unable to open display" -msgstr "Impossible d'ouvrir %s" +msgstr "Impossible d'ouvrir l'affichage" #: ../lib/cairodriver/graph.c:85 #, fuzzy msgid "Unable to obtain visual" -msgstr "Impossible d'ouvrir %s" +msgstr "Impossible d'ouvrir un visuel" #: ../lib/cairodriver/graph.c:160 #, c-format @@ -360,7 +348,7 @@ #: ../lib/cairodriver/graph.c:190 #, fuzzy, c-format msgid "cairo: collecting to file '%s'" -msgstr "Erreur ? la fermeture du fichier g3d" +msgstr "cairo : enregistrement vers le fichier '%s'" #: ../lib/cairodriver/graph.c:192 #, c-format @@ -370,66 +358,61 @@ #: ../lib/cairodriver/graph.c:371 #, fuzzy msgid "Unknown Cairo surface type" -msgstr "Type vectoriel inconnu." +msgstr "Type de surface Cairo inconnue" #: ../lib/cairodriver/graph.c:376 #, fuzzy msgid "Failed to initialize Cairo surface" -msgstr "Impossible d'initialiser pj cause : %s" +msgstr "?chec d'initialisation de la surface Cairo" #: ../lib/cairodriver/raster.c:109 #, fuzzy msgid "Failed to create cairo surface" -msgstr "Impossible de cr?er un nouveau processus" +msgstr "?chec de cr?ation de la surface Cairo" #: ../lib/cairodriver/draw_bitmap.c:47 msgid "Cairo_Bitmap: Failed to create source" msgstr "Cairo_Bitmap : ?chec de cr?ation de la source" #: ../lib/cairodriver/read_ppm.c:28 ../lib/cairodriver/read_bmp.c:88 -#, fuzzy, c-format +#, c-format msgid "Cairo: unable to open input file <%s>" -msgstr "G_spawn : impossible d'ouvrir le fichier %s" +msgstr "Cairo : impossible d'ouvrir le fichier d'entr?e <%s>" #: ../lib/cairodriver/read_ppm.c:32 ../lib/cairodriver/read_bmp.c:92 -#, fuzzy, c-format +#, c-format msgid "Cairo: invalid input file <%s>" -msgstr "Impossible de trouver la couche d'entr?e '%s'" +msgstr "Cairo : fichier d'entr?e invalide <%s>" #: ../lib/cairodriver/read_ppm.c:38 #, c-format msgid "Cairo: input file has incorrect dimensions: expected: %dx%d got: %dx%d" -msgstr "" -"Cairo : le fichier d'entr?e a des dimensions incorrectes : attendu : %dx%d " -"re?u : %dx%d" +msgstr "Cairo : le fichier d'entr?e a des dimensions incorrectes : attendu : %dx%d re?u : %dx%d" #: ../lib/cairodriver/read_ppm.c:46 -#, fuzzy, c-format +#, c-format msgid "Cairo: unable to open input mask file <%s>" -msgstr "G_spawn : impossible d'ouvrir le fichier %s" +msgstr "Cairo : impossible d'ouvrir le fichier de masque en entr?e <%s>" #: ../lib/cairodriver/read_ppm.c:50 -#, fuzzy, c-format +#, c-format msgid "Cairo: invalid input mask file <%s>" -msgstr "Impossible de trouver la couche d'entr?e '%s'" +msgstr "Cairo : fichier de masque en entr?e invalide <%s>" #: ../lib/cairodriver/read_ppm.c:56 #, c-format -msgid "" -"Cairo: input mask file has incorrect dimensions: expected: %dx%d got: %dx%d" -msgstr "" -"Cairo : le fichier de masque a des dimensions incorrects : attendu : %dx%d " -"re?u : %dx%d" +msgid "Cairo: input mask file has incorrect dimensions: expected: %dx%d got: %dx%d" +msgstr "Cairo : le fichier de masque a des dimensions incorrects : attendu : %dx%d re?u : %dx%d" #: ../lib/cairodriver/write_xid.c:14 -#, fuzzy, c-format +#, c-format msgid "Unable to open output file <%s>" -msgstr "Impossible d'ouvrir le fichier %s" +msgstr "Impossible d'ouvrir le fichier de sortie <%s>" #: ../lib/cairodriver/write_xid.c:19 -#, fuzzy, c-format +#, c-format msgid "Unable to write output file <%s>" -msgstr "Impossible d'ouvrir le fichier statistique <%s>" +msgstr "Impossible d'?crire le fichier de sortie <%s>" #: ../lib/cairodriver/read_bmp.c:96 #, c-format @@ -437,30 +420,28 @@ msgstr "Cairo : en-t?te BMP invalide pour <%s>" #: ../lib/cairodriver/text.c:46 -#, fuzzy, c-format +#, c-format msgid "Unable to convert from <%s> to UTF-8" -msgstr "Impossible de copier la couche vectorielle <%s> vers <%s>" +msgstr "Impossible de convertir <%s> vers UTF-8" #: ../lib/cairodriver/text.c:56 msgid "Some characters could not be converted to UTF-8" msgstr "Certains caract?res ne peuvent pas ?tre convertis en UTF-8" #: ../lib/cairodriver/write_ppm.c:27 ../lib/cairodriver/write_bmp.c:72 -#, fuzzy, c-format +#, c-format msgid "Cairo: unable to open output file <%s>" -msgstr "G_spawn : impossible d'ouvrir le fichier %s" +msgstr "Cairo : impossible d'ouvrir le fichier de sortie <%s>" #: ../lib/cairodriver/write_ppm.c:34 -#, fuzzy, c-format +#, c-format msgid "Cairo: unable to open mask file <%s>" -msgstr "G_spawn : impossible d'ouvrir le fichier %s" +msgstr "Cairo : impossible d'ouvrir le fichier de masque <%s>" #: ../lib/driver/parse_ftcap.c:84 #, c-format msgid "%s: Unable to read font definition file; use the default" -msgstr "" -"%s: Impossible de lire le fichier de d?finition de police, utilisation de " -"celle par d?faut" +msgstr "%s: Impossible de lire le fichier de d?finition de police, utilisation de celle par d?faut" #: ../lib/driver/parse_ftcap.c:90 #, c-format @@ -469,34 +450,31 @@ #: ../lib/vector/rtree/test_suite/test_main.c:61 msgid "Unit tests for the vector rtree library" -msgstr "" +msgstr "Tests unitaires pour la librairie vecteur rtree" #: ../lib/vector/rtree/test_suite/test_basics.c:40 -#, fuzzy msgid "" "\n" "++ Running basic unit tests ++" msgstr "" "\n" -"++ ?x?cution du solveur des tests unitaires ++" +"++ Ex?cution des tests unitaires basiques ++" #: ../lib/vector/rtree/test_suite/test_basics.c:48 -#, fuzzy msgid "" "\n" "-- Basic rtree unit tests failure --" msgstr "" "\n" -"-- ?chec du solveur des tests unitaires --" +"-- ?chec des tests unitaires basiques rtree --" #: ../lib/vector/rtree/test_suite/test_basics.c:50 -#, fuzzy msgid "" "\n" "-- Basic rtree unit tests finished successfully --" msgstr "" "\n" -"-- Tests unitaires du solveur termin?s avec succ?s --" +"-- Tests unitaires basiques rtree termin?s avec succ?s --" #: ../lib/vector/vedit/cats.c:63 #, c-format @@ -518,9 +496,9 @@ msgstr "Pas de surface trouv?e pour le centro?de %d" #: ../lib/vector/vedit/delete.c:76 -#, c-format +#, fuzzy, c-format msgid "Duplicate centroid %d, unable to delete area" -msgstr "" +msgstr "Centro?de %d dupliqu?, impossible de supprimer la surface" #: ../lib/vector/vedit/delete.c:105 #, c-format @@ -544,24 +522,18 @@ #: ../lib/vector/diglib/spindex_rw.c:302 #, c-format -msgid "" -"This version of GRASS (%d.%d) is too old to read this spatial index format. " -"Try to rebuild topology or upgrade GRASS to at least version %d." -msgstr "" +msgid "This version of GRASS (%d.%d) is too old to read this spatial index format. Try to rebuild topology or upgrade GRASS to at least version %d." +msgstr "Cette version de GRASS (%d.%d) est trop vieille pour lire ce format d'index spatial. Essayez de reconstruire la topologie ou de mettre ? jour GRASS vers la version %d." #: ../lib/vector/diglib/spindex_rw.c:308 #, c-format -msgid "" -"Your GRASS version does not fully support spatial index format %d.%d of the " -"vector. Consider to rebuild topology or upgrade GRASS." -msgstr "" +msgid "Your GRASS version does not fully support spatial index format %d.%d of the vector. Consider to rebuild topology or upgrade GRASS." +msgstr "Votre version de GRASS ne supporte pas pleinement le format d'index spatial %d.%d du vecteur. Veuillez reconstruire la topologie ou mettre ? jour GRASS." #: ../lib/vector/diglib/spindex_rw.c:317 -#, c-format -msgid "" -"Spatial index format version %d.%d is not supported by this release. Please " -"rebuild topology." -msgstr "" +#, fuzzy, c-format +msgid "Spatial index format version %d.%d is not supported by this release. Please rebuild topology." +msgstr "La version %d.%d du format d'index spatial n'est pas support? par cette version. Merci de reconstruire la topologie." #: ../lib/vector/diglib/file.c:159 msgid "Writing to file loaded to memory not supported" @@ -577,24 +549,19 @@ #: ../lib/vector/diglib/cindex_rw.c:156 #, c-format -msgid "" -"This version of GRASS (%d.%d) is too old to read this category index format. " -"Try to rebuild topology or upgrade GRASS to at least version %d." -msgstr "" +msgid "This version of GRASS (%d.%d) is too old to read this category index format. Try to rebuild topology or upgrade GRASS to at least version %d." +msgstr "Cette version de GRASS (%d.%d) est trop vieille pour lire ce format d'index de cat?gories. Essayez de reconstruire la topologie ou de mettre ? jour GRASS vers la version %d." #: ../lib/vector/diglib/plus_node.c:214 #, c-format -msgid "" -"Attempt to read line angle for the line which is not connected to the node: " -"node %d, line %d" -msgstr "" -"Tentative de lire l'angle d'une ligne qui n'est pas connect?e au noeud: " -"noeud %d, ligne %d" +msgid "Attempt to read line angle for the line which is not connected to the node: node %d, line %d" +msgstr "Tentative de lire l'angle d'une ligne qui n'est pas connect?e au noeud: noeud %d, ligne %d" #: ../lib/vector/diglib/portable.c:208 ../lib/vector/diglib/portable.c:241 #: ../lib/vector/diglib/portable.c:683 ../lib/vector/diglib/plus_struct.c:563 +#, fuzzy msgid "Vector exceeds supported file size limit" -msgstr "" +msgstr "Le vecteur d?passe la limite de taille de fichier support?e." #: ../lib/vector/diglib/plus.c:222 msgid "Unable read topology for nodes" @@ -663,8 +630,9 @@ msgstr "La ligne %d a d?j? une surface/?le %d ? droite" #: ../lib/vector/diglib/plus_area.c:279 +#, fuzzy msgid "Isle already registered in area" -msgstr "" +msgstr "L'?le est d?j? enregistr?e dans la surface" #: ../lib/vector/diglib/plus_area.c:313 msgid "Attempt to delete isle from dead area" @@ -682,20 +650,17 @@ #: ../lib/vector/diglib/plus_area.c:408 #, c-format msgid "Dead centroid %d registered for area (bug in the vector library)" -msgstr "" -"Centro?de mort %d enregistr? pour une surface (bug dans la librairie vecteur)" +msgstr "Centro?de mort %d enregistr? pour une surface (bug dans la librairie vecteur)" #: ../lib/vector/diglib/plus_area.c:431 #, c-format msgid "Attempt to delete area %d info from dead isle %d" -msgstr "" -"Tentative de suppression des information de la surface %d de l'?le morte %d" +msgstr "Tentative de suppression des information de la surface %d de l'?le morte %d" #: ../lib/vector/diglib/plus_area.c:777 #, c-format msgid "Attempt to delete isle %d info from dead area %d" -msgstr "" -"Tentative de suppression des informations de l'?le % de la surface morte %d" +msgstr "Tentative de suppression des informations de l'?le % de la surface morte %d" #: ../lib/vector/diglib/frmt.c:45 ../lib/vector/diglib/frmt.c:70 #, fuzzy, c-format @@ -710,7 +675,7 @@ #: ../lib/vector/diglib/frmt.c:97 #, c-format msgid "Format definition is not correct: %s" -msgstr "" +msgstr "D?finition du format incorrecte : %s" #: ../lib/vector/diglib/struct_alloc.c:491 #, fuzzy @@ -724,28 +689,22 @@ #: ../lib/vector/diglib/test.c:75 #, c-format -msgid "" -"Error in read/write portable double, byte_order = %d Written: %.16e3E Read: " -"%.16e3E" +msgid "Error in read/write portable double, byte_order = %d Written: %.16e3E Read: %.16e3E" msgstr "" #: ../lib/vector/diglib/test.c:89 #, c-format -msgid "" -"Error in read/write portable float, byte_order = %d Written: %.8e3E Read: " -"%.8e3E" +msgid "Error in read/write portable float, byte_order = %d Written: %.8e3E Read: %.8e3E" msgstr "" #: ../lib/vector/diglib/test.c:104 #, c-format -msgid "" -"Error in read/write portable off_t, byte_order = %d Written: %lu Read: %lu" +msgid "Error in read/write portable off_t, byte_order = %d Written: %lu Read: %lu" msgstr "" #: ../lib/vector/diglib/test.c:119 #, c-format -msgid "" -"Error in read/write portable long, byte_order = %d Written: %lu Read: %lu" +msgid "Error in read/write portable long, byte_order = %d Written: %lu Read: %lu" msgstr "" #: ../lib/vector/diglib/test.c:134 @@ -755,8 +714,7 @@ #: ../lib/vector/diglib/test.c:150 #, c-format -msgid "" -"Error in read/write portable short, byte_order = %d Written: %d Read: %d" +msgid "Error in read/write portable short, byte_order = %d Written: %d Read: %d" msgstr "" #: ../lib/vector/diglib/test.c:165 @@ -790,26 +748,18 @@ #: ../lib/vector/diglib/plus_struct.c:523 #, c-format -msgid "" -"This version of GRASS (%d.%d) is too old to read this topology format. Try " -"to rebuild topology or upgrade GRASS to at least version %d." -msgstr "" +msgid "This version of GRASS (%d.%d) is too old to read this topology format. Try to rebuild topology or upgrade GRASS to at least version %d." +msgstr "Cette version de GRASS (%d.%d) est trop vieille pour lire ce format de topologie. Essayez de reconstruire la topologie ou de mettre ? jour GRASS vers la version %d." #: ../lib/vector/diglib/plus_struct.c:529 #, c-format -msgid "" -"Your GRASS version does not fully support topology format %d.%d of the " -"vector. Consider to rebuild topology or upgrade GRASS." -msgstr "" +msgid "Your GRASS version does not fully support topology format %d.%d of the vector. Consider to rebuild topology or upgrade GRASS." +msgstr "Votre version de GRASS ne supporte pas enti?rement le format de topologie %d.%d du vecteur. Merci de reconstruire la topologie ou de mettre ? jour GRASS." #: ../lib/vector/diglib/plus_struct.c:539 #, fuzzy, c-format -msgid "" -"Old topology format version %d.%d is not supported by this release. Try to " -"rebuild topology using v.build or v.build.all module." -msgstr "" -"Le format d'index %d.%d n'est pas support? par cette version. Essayez de " -"reconstruire la topologie ou de mettre ? jour GRASS." +msgid "Old topology format version %d.%d is not supported by this release. Try to rebuild topology using v.build or v.build.all module." +msgstr "Le format d'index %d.%d n'est pas support? par cette version. Essayez de reconstruire la topologie ou de mettre ? jour GRASS." #: ../lib/vector/neta/flow.c:64 ../lib/vector/neta/flow.c:179 #: ../lib/vector/neta/spanningtree.c:99 ../lib/vector/neta/timetables.c:69 @@ -854,7 +804,7 @@ #: ../lib/vector/neta/utils.c:230 #, c-format msgid "'%s' must be > 0" -msgstr "" +msgstr "'%s' doit ?tre > 0" #: ../lib/vector/neta/utils.c:239 msgid "'where' and 'cats' parameters were supplied, cat will be ignored" @@ -884,9 +834,7 @@ #: ../lib/vector/Vlib/cindex.c:488 #, fuzzy, c-format msgid "Unable to create category index file for vector map <%s>" -msgstr "" -"Impossible d'ouvrir le fichier des cat?gories d'index pour la couche " -"vectorielle <%s>" +msgstr "Impossible d'ouvrir le fichier des cat?gories d'index pour la couche vectorielle <%s>" #: ../lib/vector/Vlib/cindex.c:497 #, fuzzy @@ -896,9 +844,7 @@ #: ../lib/vector/Vlib/cindex.c:539 ../lib/vector/Vlib/open.c:383 #, c-format msgid "Unable to open category index file for vector map <%s>" -msgstr "" -"Impossible d'ouvrir le fichier des cat?gories d'index pour la couche " -"vectorielle <%s>" +msgstr "Impossible d'ouvrir le fichier des cat?gories d'index pour la couche vectorielle <%s>" #: ../lib/vector/Vlib/build.c:37 ../lib/vector/Vlib/rewind.c:29 #: ../lib/vector/Vlib/close.c:38 ../lib/vector/Vlib/open.c:59 @@ -925,8 +871,7 @@ #: ../lib/vector/Vlib/build.c:200 msgid "Request to find area outside nonexistent isle" -msgstr "" -"Requ?te pour trouver des surfaces ? l'ext?rieur d'une ?le non-existante" +msgstr "Requ?te pour trouver des surfaces ? l'ext?rieur d'une ?le non-existante" #: ../lib/vector/Vlib/build.c:351 msgid "Larger bbox but smaller area!!!" @@ -934,7 +879,7 @@ #: ../lib/vector/Vlib/build.c:606 msgid "Checking for topological errors..." -msgstr "" +msgstr "V?rification des erreurs de topologie ..." #: ../lib/vector/Vlib/build.c:641 #, c-format @@ -1069,28 +1014,23 @@ msgstr "Erreur ? l'?criture du fichier topo." #: ../lib/vector/Vlib/build.c:1210 -msgid "" -"Unable to build spatial index from topology, vector map is not opened at " -"topology level 2" -msgstr "" -"Impossible de construire l'index spatial depuis la topologie, la couche " -"vecteur n'est pas ouverte au niveau topologique 2" +msgid "Unable to build spatial index from topology, vector map is not opened at topology level 2" +msgstr "Impossible de construire l'index spatial depuis la topologie, la couche vecteur n'est pas ouverte au niveau topologique 2" #: ../lib/vector/Vlib/build.c:1233 #, c-format msgid "%s is no longer supported" -msgstr "" +msgstr "%s n'est plus support?" #: ../lib/vector/Vlib/build.c:1256 +#, fuzzy msgid "Spatial index not available, can not be saved" -msgstr "" +msgstr "Index spatial non disponible, impossible d'enregistrer" #: ../lib/vector/Vlib/build.c:1268 #, c-format msgid "Unable to create spatial index file for vector map <%s>" -msgstr "" -"Impossible de cr?er le fichier d'index spatial pour la couche vectorielle <" -"%s>" +msgstr "Impossible de cr?er le fichier d'index spatial pour la couche vectorielle <%s>" #: ../lib/vector/Vlib/build.c:1277 msgid "Error writing out spatial index file" @@ -1108,7 +1048,7 @@ #: ../lib/vector/Vlib/ascii.c:143 msgid "End of ASCII file reached before end of coordinates" -msgstr "" +msgstr "Fin du fichier ASCII atteinte avant la fin des coordonn?es" #: ../lib/vector/Vlib/ascii.c:155 #, fuzzy, c-format @@ -1123,11 +1063,11 @@ #: ../lib/vector/Vlib/ascii.c:165 #, c-format msgid "Unparsable latitude value: [%s]" -msgstr "" +msgstr "Valeur de latitude non analysable : [%s]" #: ../lib/vector/Vlib/ascii.c:201 msgid "End of ASCII file reached before end of categories" -msgstr "" +msgstr "Fin du fichier ASCII atteinte avant la fin des cat?gories" #: ../lib/vector/Vlib/ascii.c:212 #, fuzzy, c-format @@ -1140,16 +1080,18 @@ msgstr "Impossible de copier la table <%s>" #: ../lib/vector/Vlib/ascii.c:238 -#, c-format +#, fuzzy, c-format msgid "Vector map <%s> is 2D. %d 3D features (faces or kernels) skipped." -msgstr "" +msgstr "La carte vecteur est 2D. %d entit?s 3D (faces ou noyaux) saut?s." #: ../lib/vector/Vlib/ascii.c:270 -#, c-format +#, fuzzy, c-format msgid "" "Unexpected data in vector header:\n" "[%s]" msgstr "" +"Donn?es inatendues dans l'en-t?te du vecteur :\n" +"[%s]" #: ../lib/vector/Vlib/ascii.c:306 #, fuzzy, c-format @@ -1175,11 +1117,11 @@ #: ../lib/vector/Vlib/ascii.c:467 msgid "Available columns:" -msgstr "" +msgstr "Colonnes disponibles :" #: ../lib/vector/Vlib/ascii.c:472 msgid "Export cancelled" -msgstr "" +msgstr "Export annul?" #: ../lib/vector/Vlib/ascii.c:505 #, c-format @@ -1199,7 +1141,7 @@ #: ../lib/vector/Vlib/ascii.c:701 #, c-format msgid "Feature has more categories. Only one category (%d) is exported." -msgstr "" +msgstr "L'objet a plus de cat?gories. Seulement une cat?gorie (%d) est export?e." #: ../lib/vector/Vlib/ascii.c:718 #, c-format @@ -1229,8 +1171,9 @@ msgstr "Format inconnu" #: ../lib/vector/Vlib/ascii.c:850 +#, fuzzy msgid "Topology not available, unable to process areas" -msgstr "" +msgstr "Topologie non disponible, impossible de traiter les surfaces" #: ../lib/vector/Vlib/ascii.c:863 #, c-format @@ -1240,16 +1183,12 @@ #: ../lib/vector/Vlib/ascii.c:875 #, fuzzy, c-format msgid "Unable to get boundary of isle id %d (area id %d)" -msgstr "" -"Impossible d'ouvrir le fichier des cat?gories d'index pour la couche " -"vectorielle <%s>" +msgstr "Impossible d'ouvrir le fichier des cat?gories d'index pour la couche vectorielle <%s>" #: ../lib/vector/Vlib/ascii.c:889 #, c-format -msgid "" -"%d features without category skipped. To export also features without " -"category use '%s=-1'." -msgstr "" +msgid "%d features without category skipped. To export also features without category use '%s=-1'." +msgstr "%d objets sans cat?gories saut?s. Pour exporter ?galement les objets sans cat?gories, utiliser '%s=-1'." #: ../lib/vector/Vlib/graph.c:138 msgid "Unable to add network arc" @@ -1263,21 +1202,17 @@ #: ../lib/vector/Vlib/open_nat.c:56 #, fuzzy, c-format msgid "Unable to open coor file for vector map <%s>" -msgstr "" -"Impossible d'ouvrir le fichier d'historique pour la couche vectorielle <%s>" +msgstr "Impossible d'ouvrir le fichier d'historique pour la couche vectorielle <%s>" #: ../lib/vector/Vlib/open_nat.c:152 #, c-format -msgid "" -"Coor file of vector map <%s@%s> is larger than it should be (%ld bytes " -"excess)" -msgstr "" +msgid "Coor file of vector map <%s@%s> is larger than it should be (%ld bytes excess)" +msgstr "Le fichier coor de la carte vecteur <%s@%s> est plus grand qu'il ne devrait (%ld bytes en trop)" #: ../lib/vector/Vlib/open_nat.c:156 #, c-format -msgid "" -"Coor file of vector <%s@%s> is shorter than it should be (%ld bytes missing)." -msgstr "" +msgid "Coor file of vector <%s@%s> is shorter than it should be (%ld bytes missing)." +msgstr "Le fichier coor de la carte vecteur <%s@%s> est plus petit qu'il ne devrait (%ld bytes en moins)" #: ../lib/vector/Vlib/area.c:50 msgid "Attempt to read points of nonexistent area" @@ -1304,7 +1239,7 @@ #: ../lib/vector/Vlib/header_finfo.c:47 ../lib/vector/Vlib/header_finfo.c:86 #: ../lib/vector/Vlib/header_finfo.c:123 ../lib/vector/Vlib/header_finfo.c:171 msgid "GRASS is not compiled with PostgreSQL support" -msgstr "" +msgstr "GRASS n'est pas compil? avec le support de PostgreSQL" #: ../lib/vector/Vlib/area.c:121 ../lib/vector/Vlib/area.c:153 #: ../lib/vector/Vlib/area.c:219 ../lib/vector/Vlib/area.c:248 @@ -1336,9 +1271,7 @@ #: ../lib/vector/Vlib/close_ogr.c:104 ../lib/vector/Vlib/close_pg.c:139 #, c-format msgid "Unable to save feature index file for vector map <%s>" -msgstr "" -"Impossible d'enregistrer le fichier d'index des objets pour la carte vecteur " -"<%s>" +msgstr "Impossible d'enregistrer le fichier d'index des objets pour la carte vecteur <%s>" #: ../lib/vector/Vlib/write_sfa.c:117 #, fuzzy @@ -1348,7 +1281,7 @@ #: ../lib/vector/Vlib/write_sfa.c:131 ../lib/vector/Vlib/write_sfa.c:173 #: ../lib/vector/Vlib/write_sfa.c:273 ../lib/vector/Vlib/read_sfa.c:124 msgid "GRASS is not compiled with OGR/PostgreSQL support" -msgstr "" +msgstr "GRASS n'est pas compil? avec le support de OGR/PostgreSQL" #: ../lib/vector/Vlib/write_sfa.c:158 ../lib/vector/Vlib/write_sfa.c:207 #: ../lib/vector/Vlib/write_pg.c:236 ../lib/vector/Vlib/write_pg.c:381 @@ -1378,13 +1311,14 @@ #: ../lib/vector/Vlib/write_sfa.c:349 ../lib/vector/Vlib/write_pg.c:554 #: ../lib/vector/Vlib/write_pg.c:1294 +#, fuzzy msgid "Boundary is not closed. Skipping." -msgstr "" +msgstr "Contour non ferm?. Saut?." #: ../lib/vector/Vlib/array.c:96 #, c-format msgid "%d errors in category string" -msgstr "" +msgstr "%d erreurs dans les cat?gories" #: ../lib/vector/Vlib/array.c:142 ../lib/vector/Vlib/array.c:267 msgid "Mixed area and other type requested for vector array" @@ -1398,14 +1332,12 @@ #: ../lib/vector/Vlib/array.c:292 #, c-format msgid "Unable to select record from table <%s> (key %s, where %s)" -msgstr "" -"Impossible de s?lectionner un enregistrement depuis la table <%s> (clef %s, " -"o? %s)" +msgstr "Impossible de s?lectionner un enregistrement depuis la table <%s> (clef %s, o? %s)" #: ../lib/vector/Vlib/clean_nodes.c:248 #, c-format msgid "Modifications: %d" -msgstr "" +msgstr "Modifications : %d" #: ../lib/vector/Vlib/write_pg.c:242 ../lib/vector/Vlib/write_pg.c:402 #: ../lib/vector/Vlib/write_pg.c:2584 ../lib/vector/Vlib/write_pg.c:2681 @@ -1467,7 +1399,7 @@ #: ../lib/vector/Vlib/write_pg.c:841 #, c-format msgid "Schema <%s> doesn't exist, created" -msgstr "" +msgstr "Le sch?ma <%s> n'existe pas, cr?ation" #: ../lib/vector/Vlib/write_pg.c:920 #, fuzzy, c-format @@ -1498,9 +1430,9 @@ msgstr "Type(s) d'entit?(s)" #: ../lib/vector/Vlib/write_pg.c:1117 ../lib/vector/Vlib/write_ogr.c:338 -#, c-format +#, fuzzy, c-format msgid "More layers defined, using driver <%s> and database <%s>" -msgstr "" +msgstr "Plus de couches d?finies, utilisation du pilote <%s> et de la base de donn?es <%s>" #: ../lib/vector/Vlib/write_pg.c:1122 ../lib/vector/Vlib/write_ogr.c:344 #, fuzzy @@ -1527,7 +1459,7 @@ #: ../lib/vector/Vlib/write_ogr.c:410 #, c-format msgid "Feature has more categories, using category %d (from layer %d)" -msgstr "" +msgstr "L'objet a plus de cat?gories, utilisation de la cat?gorie %d (depuis la couche %d)" #: ../lib/vector/Vlib/write_pg.c:1250 #, fuzzy, c-format @@ -1542,11 +1474,11 @@ #: ../lib/vector/Vlib/write_pg.c:1264 #, c-format msgid "Boundary/centroid skipped (output feature type: %s)" -msgstr "" +msgstr "Contour/centro?de saut? (type d'objet en sortie : %s)" #: ../lib/vector/Vlib/write_pg.c:1266 ../lib/vector/Vlib/write_ogr.c:439 msgid "Feature is not a polygon. Skipping." -msgstr "" +msgstr "L'objet n'est pas un polygone. Saut?." #: ../lib/vector/Vlib/write_pg.c:1272 #, fuzzy, c-format @@ -1565,11 +1497,11 @@ #: ../lib/vector/Vlib/write_pg.c:1872 msgid "Trying to insert 3D data into feature table which store 2D data only" -msgstr "" +msgstr "Tentative d'ins?rer des donn?es 3D dans une table avec des donn?es en 2D uniquement" #: ../lib/vector/Vlib/write_pg.c:1877 msgid "Trying to insert 2D data into feature table which store 3D data only" -msgstr "" +msgstr "Tentative d'ins?rer des donn?es 2D dans une table avec des donn?es en 3D uniquement" #: ../lib/vector/Vlib/write_pg.c:1902 #, fuzzy @@ -1589,7 +1521,7 @@ #: ../lib/vector/Vlib/write_pg.c:2040 #, c-format msgid "FID column must be integer, column <%s> ignored!" -msgstr "" +msgstr "La colonne FID doit ?tre un entier, colonne <%s> ignor?e !" #: ../lib/vector/Vlib/write_pg.c:2074 ../lib/vector/Vlib/write_ogr.c:653 #, fuzzy, c-format @@ -1598,7 +1530,7 @@ #: ../lib/vector/Vlib/write_pg.c:2081 msgid "Invalid value for FID column: NULL" -msgstr "" +msgstr "Valeur invalide pour la colonne FID : NULL" #: ../lib/vector/Vlib/write_pg.c:2173 #, fuzzy, c-format @@ -1656,12 +1588,8 @@ #: ../lib/vector/Vlib/geos.c:55 #, c-format -msgid "" -"Vect_read_line_geos(): feature id %d is not reasonable (max features in " -"vector map <%s>: %d)" -msgstr "" -"Vect_read_line_geos(): l'id d'objet %d n'est pas plausible (nombre maxi " -"d'objets dans la carte vecteur <%s>: %d)" +msgid "Vect_read_line_geos(): feature id %d is not reasonable (max features in vector map <%s>: %d)" +msgstr "Vect_read_line_geos(): l'id d'objet %d n'est pas plausible (nombre maxi d'objets dans la carte vecteur <%s>: %d)" #: ../lib/vector/Vlib/geos.c:60 msgid "only native format supported" @@ -1679,8 +1607,7 @@ #: ../lib/vector/Vlib/geos.c:104 #, c-format msgid "Vect_read_area_geos(): unable to read isle id %d of area id %d" -msgstr "" -"Vect_read_area_geos(): impossible de lire l'?le d'id %d de la surface d'id %d" +msgstr "Vect_read_area_geos(): impossible de lire l'?le d'id %d de la surface d'id %d" #: ../lib/vector/Vlib/geos.c:206 #, c-format @@ -1744,7 +1671,7 @@ #: ../lib/vector/Vlib/close.c:257 #, c-format msgid "Invalid request for writing frmt file - map format is %d" -msgstr "" +msgstr "Demande d'?criture invalide pour ?crire un fichier frmt - la carte est au format %d" #: ../lib/vector/Vlib/close.c:289 #, c-format @@ -1777,17 +1704,18 @@ msgstr "Le type d'objet OGR %d n'est pas g?r?" #: ../lib/vector/Vlib/net_analyze.c:288 ../lib/vector/Vlib/net_analyze.c:329 -#, c-format +#, fuzzy, c-format msgid "Unable to find point with defined unique category for node <%d>." -msgstr "" +msgstr "Impossible de trouver un point avec une cat?gorie unique pour le noeuf <%d>." #: ../lib/vector/Vlib/net_analyze.c:292 ../lib/vector/Vlib/net_analyze.c:333 -#, c-format +#, fuzzy, c-format msgid "" -"There exists more than one point on node <%d> with unique category in field " -"<%d>.\n" +"There exists more than one point on node <%d> with unique category in field <%d>.\n" "The unique category layer may not be valid." msgstr "" +"Il existe plus de un point sur le noeud <%d> avec une cat?gorie unique dans le champ <%d>.\n" +"La couche de cat?gories uniques ne semble pas valide." #: ../lib/vector/Vlib/net_analyze.c:449 msgid "Wrong line direction in Vect_net_get_line_cost()" @@ -1795,22 +1723,21 @@ #: ../lib/vector/Vlib/build_ogr.c:71 msgid "Empty OGR layer, nothing to build" -msgstr "" +msgstr "Couche OGR vide, rien ? construire" #: ../lib/vector/Vlib/build_ogr.c:82 ../lib/vector/Vlib/build_pg.c:93 -#, c-format +#, fuzzy, c-format msgid "Feature table <%s> has no primary key defined" -msgstr "" +msgstr "La table <%s> n'a pas de clef primaire d?finie" #: ../lib/vector/Vlib/build_ogr.c:84 -msgid "" -"Random read is not supported by OGR for this layer. Unable to build topology." -msgstr "" +msgid "Random read is not supported by OGR for this layer. Unable to build topology." +msgstr "La lecture al?atoire n'est pas support?e par OGR pour cette couche. Impossible de cr?er la topologie." #: ../lib/vector/Vlib/build_ogr.c:90 ../lib/vector/Vlib/build_pg.c:101 #, c-format msgid "Using external data format '%s' (feature type '%s')" -msgstr "" +msgstr "Utilisation du format de donn?es externe '%s' (entit? de type '%s')" #: ../lib/vector/Vlib/build_ogr.c:134 #, fuzzy, c-format @@ -1838,9 +1765,7 @@ #: ../lib/vector/Vlib/copy.c:81 #, c-format msgid "Unable to copy features. Input vector map <%s> is not open" -msgstr "" -"Impossible de copier les objets. La carte vecteur <%s> en entr?e n'est pas " -"ouverte" +msgstr "Impossible de copier les objets. La carte vecteur <%s> en entr?e n'est pas ouverte" #: ../lib/vector/Vlib/copy.c:104 #, c-format @@ -1850,9 +1775,7 @@ #: ../lib/vector/Vlib/copy.c:133 #, c-format msgid "Vector map <%s> not open on topological level. Areas will be skipped!" -msgstr "" -"La carte vecteur <%s> n'est pas ouverte au niveau topologique. Les surfaces " -"seront ignor?es !" +msgstr "La carte vecteur <%s> n'est pas ouverte au niveau topologique. Les surfaces seront ignor?es !" #: ../lib/vector/Vlib/copy.c:168 ../lib/vector/Vlib/copy.c:245 #: ../lib/ogsf/gp3.c:92 @@ -1867,11 +1790,12 @@ #: ../lib/vector/Vlib/copy.c:231 #, c-format msgid "Copying features (%s)..." -msgstr "" +msgstr "Copie de l'objet (%s) en cours ..." #: ../lib/vector/Vlib/copy.c:334 +#, fuzzy msgid "Writing new feature failed" -msgstr "" +msgstr "L'?criture des nouveaux objets a ?chou?" #: ../lib/vector/Vlib/copy.c:340 #, c-format @@ -1969,7 +1893,7 @@ #: ../lib/vector/Vlib/open_ogr.c:65 ../lib/vector/Vlib/write_ogr.c:129 msgid "OGR layer not defined" -msgstr "" +msgstr "Couche OGR non d?finie" #: ../lib/vector/Vlib/open_ogr.c:77 ../lib/vector/Vlib/field.c:690 #, c-format @@ -1984,9 +1908,7 @@ #: ../lib/vector/Vlib/open_ogr.c:145 ../lib/vector/Vlib/open_pg.c:193 #, fuzzy, c-format msgid "Unable to open feature index file for vector map <%s>" -msgstr "" -"Impossible d'ouvrir le fichier des cat?gories d'index pour la couche " -"vectorielle <%s>" +msgstr "Impossible d'ouvrir le fichier des cat?gories d'index pour la couche vectorielle <%s>" #: ../lib/vector/Vlib/open_ogr.c:191 #, c-format @@ -2015,22 +1937,13 @@ #: ../lib/vector/Vlib/open_ogr.c:279 #, c-format -msgid "" -"Feature index format version %d.%d is not supported by this release. Try to " -"rebuild topology or upgrade GRASS." -msgstr "" -"Le format d'index %d.%d n'est pas support? par cette version. Essayez de " -"reconstruire la topologie ou de mettre ? jour GRASS." +msgid "Feature index format version %d.%d is not supported by this release. Try to rebuild topology or upgrade GRASS." +msgstr "Le format d'index %d.%d n'est pas support? par cette version. Essayez de reconstruire la topologie ou de mettre ? jour GRASS." #: ../lib/vector/Vlib/open_ogr.c:284 #, c-format -msgid "" -"Your GRASS version does not fully support feature index format %d.%d of the " -"vector. Consider to rebuild topology or upgrade GRASS." -msgstr "" -"Votre version de GRASS ne supporte pas compl?tement le format d'index %d.%d " -"pour le vecteur. Reconstruisez la topologie ou faites une mise ? jour de " -"GRASS." +msgid "Your GRASS version does not fully support feature index format %d.%d of the vector. Consider to rebuild topology or upgrade GRASS." +msgstr "Votre version de GRASS ne supporte pas compl?tement le format d'index %d.%d pour le vecteur. Reconstruisez la topologie ou faites une mise ? jour de GRASS." #: ../lib/vector/Vlib/intersect.c:127 msgid "3D not supported by Vect_segment_intersection()" @@ -2042,8 +1955,7 @@ #: ../lib/vector/Vlib/intersect.c:407 msgid "Vect_segment_intersection() ERROR (collinear non vertical segments)" -msgstr "" -"Vect_segment_intersection() ERREUR (segments verticaux non colin?aires)" +msgstr "Vect_segment_intersection() ERREUR (segments verticaux non colin?aires)" #: ../lib/vector/Vlib/simple_features.c:225 #, fuzzy, c-format @@ -2053,9 +1965,7 @@ #: ../lib/vector/Vlib/simple_features.c:332 #, fuzzy msgid "Unable to get number of simple features" -msgstr "" -"Impossible d'ouvrir le fichier des cat?gories d'index pour la couche " -"vectorielle <%s>" +msgstr "Impossible d'ouvrir le fichier des cat?gories d'index pour la couche vectorielle <%s>" #: ../lib/vector/Vlib/simple_features.c:341 #, fuzzy, c-format @@ -2069,7 +1979,7 @@ #: ../lib/vector/Vlib/build_pg.c:95 msgid "Random read is not supported for this layer. Unable to build topology." -msgstr "" +msgstr "La lecture al?atoire n'est pas support?e pour cette couche. Impossible de reconstruire la topologie." #: ../lib/vector/Vlib/build_pg.c:105 msgid "Building pseudo-topology over simple features..." @@ -2083,7 +1993,7 @@ #: ../lib/vector/Vlib/build_pg.c:212 ../lib/vector/Vlib/open_pg.c:1483 #, c-format msgid "Inconsistency in topology: number of nodes %d (should be %d)" -msgstr "" +msgstr "Inconsistance dans la topologie : nombre de noeuds %d (devrait ?tre %d)" #: ../lib/vector/Vlib/build_pg.c:237 msgid "Cleaning-up topology schema..." @@ -2101,11 +2011,11 @@ #: ../lib/vector/Vlib/build_pg.c:323 msgid "Inconsistency in topology detected. Dead line found." -msgstr "" +msgstr "Inconsistance d?tect?e dans la topologie. Ligne morte trouv?e." #: ../lib/vector/Vlib/build_pg.c:377 msgid "Updating TopoGeometry data..." -msgstr "" +msgstr "Mise ? jour des donn?es TopoGeometry ..." #: ../lib/vector/Vlib/build_pg.c:462 #, fuzzy, c-format @@ -2142,13 +2052,12 @@ #: ../lib/vector/Vlib/build_pg.c:1000 msgid "Create simple features topology from topogeometry data..." -msgstr "" +msgstr "Cr?e des objets topologiques simples depuis des donn?es topogeometry ..." #: ../lib/vector/Vlib/build_pg.c:1018 #, c-format -msgid "" -"Unable to build simple features from topogeometry data. Unsupported type %d." -msgstr "" +msgid "Unable to build simple features from topogeometry data. Unsupported type %d." +msgstr "Impossible de construire des objets simples depuis les donn?es topogeometry. Type %d non support?." #: ../lib/vector/Vlib/level_two.c:23 #, fuzzy, c-format @@ -2230,8 +2139,9 @@ msgstr "Seul le format natif est pris en charge" #: ../lib/vector/Vlib/build_sfa.c:748 +#, fuzzy msgid "Feature index is built only for non-native formats. Nothing to dump." -msgstr "" +msgstr "L'index est construit uniquement pour les formats non natifs. Rien ? exporter." #: ../lib/vector/Vlib/line.c:184 ../lib/vector/Vlib/line.c:217 #: ../lib/vector/Vlib/line.c:250 @@ -2268,16 +2178,11 @@ #: ../lib/vector/Vlib/open.c:252 msgid "Temporary vector maps can be accessed only in the current mapset" -msgstr "" -"Les cartes vecteur temporaires ne sont accessibles que dans le jeu de cartes " -"courant" +msgstr "Les cartes vecteur temporaires ne sont accessibles que dans le jeu de cartes courant" #: ../lib/vector/Vlib/open.c:267 -msgid "" -"Vector map which is not in the current mapset cannot be opened for update" -msgstr "" -"Une couche vectorielle qui n'est pas dans le jeu de donn?es courant ne peut " -"pas ?tre ouverte pour une mise ? jour" +msgid "Vector map which is not in the current mapset cannot be opened for update" +msgstr "Une couche vectorielle qui n'est pas dans le jeu de donn?es courant ne peut pas ?tre ouverte pour une mise ? jour" #: ../lib/vector/Vlib/open.c:291 ../lib/vector/Vlib/open.c:427 #: ../lib/vector/Vlib/map.c:157 ../lib/vector/Vlib/map.c:167 @@ -2296,24 +2201,17 @@ #: ../lib/vector/Vlib/open.c:342 #, c-format msgid "Unable to open topology file for vector map <%s>" -msgstr "" -"Impossible d'ouvrir le fichier topologique pour la couche vectorielle <%s>" +msgstr "Impossible d'ouvrir le fichier topologique pour la couche vectorielle <%s>" #: ../lib/vector/Vlib/open.c:409 #, c-format -msgid "" -"Unable to open vector map <%s> on level %d. Try to rebuild vector topology " -"with v.build." -msgstr "" -"Impossible d'ouvrir la carte vecteur <%s> au niveau %d. Essayez de " -"reconstruire la topologie avec v.build." +msgid "Unable to open vector map <%s> on level %d. Try to rebuild vector topology with v.build." +msgstr "Impossible d'ouvrir la carte vecteur <%s> au niveau %d. Essayez de reconstruire la topologie avec v.build." #: ../lib/vector/Vlib/open.c:435 #, c-format msgid "Building topology for OGR layer <%s> from datasource '%s'..." -msgstr "" -"Construction de la topologie pour la couche OGR <%s> ? partir dans la source " -"'%s' ..." +msgstr "Construction de la topologie pour la couche OGR <%s> ? partir dans la source '%s' ..." #: ../lib/vector/Vlib/open.c:443 #, c-format @@ -2323,15 +2221,12 @@ #: ../lib/vector/Vlib/open.c:497 #, c-format msgid "Unable to open history file for vector map <%s>" -msgstr "" -"Impossible d'ouvrir le fichier d'historique pour la couche vectorielle <%s>" +msgstr "Impossible d'ouvrir le fichier d'historique pour la couche vectorielle <%s>" #: ../lib/vector/Vlib/open.c:767 #, c-format msgid "Unable to create vector map: <%s> is not in the current mapset (%s)" -msgstr "" -"Impossible de cr?er la carte vecteur : <%s> n'est pas dans le jeux de carte " -"courant (%s)" +msgstr "Impossible de cr?er la carte vecteur : <%s> n'est pas dans le jeux de carte courant (%s)" #: ../lib/vector/Vlib/open.c:776 #, c-format @@ -2353,21 +2248,20 @@ #: ../lib/vector/Vlib/open.c:836 #, fuzzy, c-format msgid "Unable to open history file of vector map <%s>" -msgstr "" -"Impossible d'ouvrir le fichier d'historique pour la couche vectorielle <%s>" +msgstr "Impossible d'ouvrir le fichier d'historique pour la couche vectorielle <%s>" #: ../lib/vector/Vlib/open.c:877 #, c-format msgid "Using OGR/%s format" -msgstr "" +msgstr "Utilisation du format OGR/%s" #: ../lib/vector/Vlib/open.c:881 msgid "Using PostGIS Topology format" -msgstr "" +msgstr "Utilisation du format PostGIS Topology" #: ../lib/vector/Vlib/open.c:883 msgid "Using PostGIS format" -msgstr "" +msgstr "Utilisation du format PostGIS" #: ../lib/vector/Vlib/open.c:886 msgid "Using native format" @@ -2379,15 +2273,13 @@ msgstr "Impossible d'ouvrir le fichier statistique <%s>" #: ../lib/vector/Vlib/open.c:1039 -#, c-format +#, fuzzy, c-format msgid "unknown %d (update Vect_maptype_info)" -msgstr "" +msgstr "%d inconnu (mise ? jour de Vect_maptype_info)" #: ../lib/vector/Vlib/open.c:1128 msgid "Size of 'coor' file differs from value saved in topology file" -msgstr "" -"La taille du fichier 'coord' est diff?rente de la valeur sauvegard?e dans le " -"fichier de topologie" +msgstr "La taille du fichier 'coord' est diff?rente de la valeur sauvegard?e dans le fichier de topologie" #: ../lib/vector/Vlib/open.c:1139 ../lib/vector/Vlib/open.c:1238 #, c-format @@ -2404,7 +2296,7 @@ #: ../lib/vector/Vlib/open.c:1333 msgid "OGR output also detected, using OGR" -msgstr "" +msgstr "Sortie OGR ?galement d?tect?e, utilisation de OGR" #: ../lib/vector/Vlib/cats.c:45 msgid "Vect_new_cats_struct(): Out of memory" @@ -2413,15 +2305,12 @@ #: ../lib/vector/Vlib/cats.c:127 #, c-format msgid "Too many categories (%d), unable to set cat %d (layer %d)" -msgstr "" -"Trop de cat?gories (%d), dans l'impossibilit? de mettre en cat %d (couche %d)" +msgstr "Trop de cat?gories (%d), dans l'impossibilit? de mettre en cat %d (couche %d)" #: ../lib/vector/Vlib/cats.c:419 #, c-format msgid "Unable to convert category string '%s' (from '%s') to category range" -msgstr "" -"Impossible de convertir les cat?gories de caract?res '%s' (de '%s') en " -"intervalle de cat?gorie" +msgstr "Impossible de convertir les cat?gories de caract?res '%s' (de '%s') en intervalle de cat?gorie" #: ../lib/vector/Vlib/cats.c:572 ../lib/vector/Vlib/cats.c:668 #, fuzzy @@ -2448,7 +2337,7 @@ #: ../lib/vector/Vlib/cats.c:627 #, c-format msgid "No categories selected with '%s' option" -msgstr "" +msgstr "Pas de cat?gories s?lectionn?es avec l'option '%s'" #: ../lib/vector/Vlib/cats.c:637 #, fuzzy, c-format @@ -2495,29 +2384,22 @@ #: ../lib/vector/Vlib/legal_vname.c:43 #, c-format msgid "Illegal vector map name <%s>. May not contain '.' or 'NULL'." -msgstr "" -"Nom de couche vectorielle ill?gale <%s>. Ne doit contenir ni '.', ni 'NULL'." +msgstr "Nom de couche vectorielle ill?gale <%s>. Ne doit contenir ni '.', ni 'NULL'." #: ../lib/vector/Vlib/legal_vname.c:50 #, c-format msgid "Illegal vector map name <%s>. Must start with a letter." -msgstr "" -"Nom de couche vectorielle ill?gale <%s>. Doit commencer par une lettre." +msgstr "Nom de couche vectorielle ill?gale <%s>. Doit commencer par une lettre." #: ../lib/vector/Vlib/legal_vname.c:58 #, c-format msgid "Illegal vector map name <%s>. Character '%c' not allowed." -msgstr "" -"Nom de couche vectorielle ill?gale <%s>. Le caract?re '%c' n'est pas " -"autoris?." +msgstr "Nom de couche vectorielle ill?gale <%s>. Le caract?re '%c' n'est pas autoris?." #: ../lib/vector/Vlib/legal_vname.c:65 #, c-format -msgid "" -"Illegal vector map name <%s>. SQL keyword cannot be used as vector map name." -msgstr "" -"Nom de couche vectorielle ill?gale <%s>. Les mot-clefs SQL ne peut pas ?tre " -"utilis?s comme nom de carte vectorielle." +msgid "Illegal vector map name <%s>. SQL keyword cannot be used as vector map name." +msgstr "Nom de couche vectorielle ill?gale <%s>. Les mot-clefs SQL ne peut pas ?tre utilis?s comme nom de carte vectorielle." #: ../lib/vector/Vlib/legal_vname.c:100 ../lib/vector/Vlib/legal_vname.c:104 #, fuzzy, c-format @@ -2545,8 +2427,9 @@ msgstr "la couche matricielle demand?e <%s> n'a pas ?t? trouv?e" #: ../lib/vector/Vlib/open_pg.c:181 +#, fuzzy msgid "Topology schema not found." -msgstr "" +msgstr "Sch?ma Topology non trouv?." #: ../lib/vector/Vlib/open_pg.c:273 #, fuzzy, c-format @@ -2576,13 +2459,11 @@ #: ../lib/vector/Vlib/open_pg.c:476 #, c-format msgid "PostGIS topology schema <%s> dropped" -msgstr "" +msgstr "Sch?ma de topologie PostGIS <%s> supprim?" #: ../lib/vector/Vlib/open_pg.c:557 #, fuzzy -msgid "" -"Connection to PostgreSQL database failed. Try to set up username/password by " -"db.login." +msgid "Connection to PostgreSQL database failed. Try to set up username/password by db.login." msgstr "Echec de la connexion." #: ../lib/vector/Vlib/open_pg.c:564 @@ -2593,7 +2474,7 @@ #: ../lib/vector/Vlib/open_pg.c:569 #, c-format msgid "<%s> is not PostGIS database. DB table 'spatial_ref_sys' not found." -msgstr "" +msgstr "<%s> n'est pas une base de don?es PostGIS. Table 'spatial_ref_sys' non trouv?e." #: ../lib/vector/Vlib/open_pg.c:578 #, fuzzy, c-format @@ -2601,13 +2482,14 @@ msgstr "L'objet OGR sans ID a ?t? ignor?" #: ../lib/vector/Vlib/open_pg.c:665 +#, fuzzy msgid "Empty bounding box" -msgstr "" +msgstr "Boite enveloppante vide" #: ../lib/vector/Vlib/open_pg.c:766 #, c-format msgid "Inconsistency in topology: unable to read node %d" -msgstr "" +msgstr "Inconsistance dans la topologie : impossible de lire le noeud %d" #: ../lib/vector/Vlib/open_pg.c:832 #, fuzzy, c-format @@ -2620,9 +2502,9 @@ msgstr "Nombre de surfaces sans centro?de : %d" #: ../lib/vector/Vlib/open_pg.c:1059 -#, c-format +#, fuzzy, c-format msgid "Isle %d without boundary detected" -msgstr "" +msgstr "?le %d sans contour d?tect?e" #: ../lib/vector/Vlib/open_pg.c:1126 #, fuzzy @@ -2639,31 +2521,32 @@ #: ../lib/vector/Vlib/open_pg.c:1157 #, c-format msgid "Different number of nodes detected (%d, %d)" -msgstr "" +msgstr "Nombre de noeuds diff?rents d?tect?s (%d, %d)" #: ../lib/vector/Vlib/open_pg.c:1185 ../lib/vector/Vlib/open_pg.c:1207 #, c-format msgid "Different number of areas detected (%d, %d)" -msgstr "" +msgstr "Nombre de surfaces diff?rents d?tect?s (%d, %d)" #: ../lib/vector/Vlib/open_pg.c:1378 +#, fuzzy msgid "To be implemented: isles not attached in Topo-Geo-only mode" -msgstr "" +msgstr "A impl?menter : ?les non attach?es dans le mode Topo-G?o" #: ../lib/vector/Vlib/open_pg.c:1567 #, c-format msgid "Inconsistency in topology: number of points %d (should be %d)" -msgstr "" +msgstr "Inconsistance dans la topologie : nombre de points %d (devrait ?tre %d)" #: ../lib/vector/Vlib/open_pg.c:1612 #, c-format msgid "Inconsistency in topology: number of lines %d (should be %d)" -msgstr "" +msgstr "Inconsistance dans la topologie : nombre de lignes %d (devrait ?tre %d)" #: ../lib/vector/Vlib/open_pg.c:1666 #, c-format msgid "Inconsistency in topology: number of centroids %d (should be %d)" -msgstr "" +msgstr "Inconsistance dans la topologie : nombre de centro?des %d (devrait ?tre %d)" #: ../lib/vector/Vlib/snap.c:223 ../lib/vector/Vlib/snap.c:582 msgid "Snap vertices Pass 1: select points" @@ -2722,13 +2605,11 @@ msgstr "" #: ../lib/vector/Vlib/buffer2.c:589 -msgid "" -"Next edge was visited (right) but it is not the first one !!! breaking loop" +msgid "Next edge was visited (right) but it is not the first one !!! breaking loop" msgstr "" #: ../lib/vector/Vlib/buffer2.c:600 -msgid "" -"Next edge was visited (left) but it is not the first one !!! breaking loop" +msgid "Next edge was visited (left) but it is not the first one !!! breaking loop" msgstr "" #: ../lib/vector/Vlib/buffer2.c:648 @@ -2759,8 +2640,7 @@ #: ../lib/vector/Vlib/read_pg.c:365 #, c-format -msgid "" -"Requesting invalid feature from cache (%d). Number of features in cache: %d" +msgid "Requesting invalid feature from cache (%d). Number of features in cache: %d" msgstr "" #: ../lib/vector/Vlib/read_pg.c:368 @@ -2769,48 +2649,49 @@ msgstr "Objet %d : type (%d) inattendu - devrait ?tre %d" #: ../lib/vector/Vlib/read_pg.c:575 +#, fuzzy msgid "No geometry or topo geometry column defined" -msgstr "" +msgstr "Pas de colonne de g?omt?rie ou de g?om?trie topo d?finie" #: ../lib/vector/Vlib/read_pg.c:585 msgid "Random access not supported. Primary key not defined." -msgstr "" +msgstr "Acc?s al?atoires non support?s. Clef primaire non d?finie." #: ../lib/vector/Vlib/read_pg.c:652 msgid "Inconsistency in topology: detected centroid (should be point)" -msgstr "" +msgstr "Inconsistance dans la topologie : contro?des d?tect?s (devraient ?tre des points)" #: ../lib/vector/Vlib/read_pg.c:662 msgid "Inconsistency in topology: detected boundary (should be line)" -msgstr "" +msgstr "Inconsistance dans la topologie : contours d?tect?s (devraient ?tre des lignes)" #: ../lib/vector/Vlib/read_pg.c:787 #, c-format msgid "Invalid WKB content: %d bytes" -msgstr "" +msgstr "Contenu WKB invalide : %d bytes" #: ../lib/vector/Vlib/read_pg.c:803 msgid "Reading EWKB with 4-dimensional coordinates (XYZM) is not supported" -msgstr "" +msgstr "Lecture de EWKB avec des coordonn?es 4 dimensions (XYZM) non support?e" #: ../lib/vector/Vlib/read_pg.c:996 ../lib/vector/Vlib/read_pg.c:1066 #: ../lib/vector/Vlib/read_pg.c:1137 msgid "Length of input WKB is too small" -msgstr "" +msgstr "Longueur du WKB en entr?e trop petite" #: ../lib/vector/Vlib/read_pg.c:1077 #, c-format msgid "Invalid cache index %d (max: %d)" -msgstr "" +msgstr "Index de cache invalide %d (max : %d)" #: ../lib/vector/Vlib/read_pg.c:1215 #, c-format msgid "Corrupted data. %s." -msgstr "" +msgstr "Donn?es corrompues. %s." #: ../lib/vector/Vlib/read_pg.c:1217 msgid "Corrupted data" -msgstr "" +msgstr "Donn?es corrompues" #: ../lib/vector/Vlib/read_pg.c:1515 #, fuzzy, c-format @@ -2846,9 +2727,7 @@ #: ../lib/vector/Vlib/field.c:96 #, fuzzy msgid "Unable to add attribute link, vector map is not opened in WRITE mode" -msgstr "" -"Impossible d'ajouter un lien base de donn?es, la couche n'est pas ouverte en " -"ECRITURE." +msgstr "Impossible d'ajouter un lien base de donn?es, la couche n'est pas ouverte en ECRITURE." #: ../lib/vector/Vlib/field.c:103 #, fuzzy @@ -2870,10 +2749,9 @@ msgstr "Connexion ? la base de donn?es ind?finie pour la couche %d" #: ../lib/vector/Vlib/field.c:185 -msgid "" -"More DB links defined for input vector map. Using only first DB link for " -"output." -msgstr "" +#, fuzzy +msgid "More DB links defined for input vector map. Using only first DB link for output." +msgstr "Plusieurs liens base de donn?es d?finis pour la carte vecteur en entr?e. Utilisation uniquement du premier lien pour la sortie." #: ../lib/vector/Vlib/field.c:261 #, c-format @@ -2919,22 +2797,17 @@ msgstr "Impossible d'ouvrir le pilote OGR DBMI" #: ../lib/vector/Vlib/field.c:773 -msgid "" -"All FID tests failed. Neither 'FID' nor 'ogc_fid' nor 'ogr_fid' nor 'gid' " -"available in OGR DB table" -msgstr "" -"Tous les tests FID ont ?chou?s. Ni 'FID' ni 'ogc_fid' ni 'ogr_fid' ni 'gid' " -"ne sont disponibles dans la table OGR DB" +msgid "All FID tests failed. Neither 'FID' nor 'ogc_fid' nor 'ogr_fid' nor 'gid' available in OGR DB table" +msgstr "Tous les tests FID ont ?chou?s. Ni 'FID' ni 'ogc_fid' ni 'ogr_fid' ni 'gid' ne sont disponibles dans la table OGR DB" #: ../lib/vector/Vlib/field.c:840 -#, c-format -msgid "" -"Feature table <%s> has no primary key defined. Unable to define DB links." -msgstr "" +#, fuzzy, c-format +msgid "Feature table <%s> has no primary key defined. Unable to define DB links." +msgstr "La table <%s> n'a pas de clef primaire d?finie. Impossible de d?finir le lien base de donn?e." #: ../lib/vector/Vlib/field.c:860 msgid "GRASS not compiled with PostgreSQL support" -msgstr "" +msgstr "GRASS n'est pas compil? avec le support PostgreSQL" #: ../lib/vector/Vlib/field.c:892 #, fuzzy @@ -2944,14 +2817,11 @@ #: ../lib/vector/Vlib/field.c:925 #, fuzzy, c-format msgid "Unable to create database definition file for vector map <%s>" -msgstr "" -"Impossible d'ouvrir le fichier d'historique pour la couche vectorielle <%s>" +msgstr "Impossible d'ouvrir le fichier d'historique pour la couche vectorielle <%s>" #: ../lib/vector/Vlib/field.c:1020 msgid "Bug: attempt to update map which is not in current mapset" -msgstr "" -"Bug: tentative de mise ? jour d'une couche qui n'est pas dans le jeu de " -"cartes courant" +msgstr "Bug: tentative de mise ? jour d'une couche qui n'est pas dans le jeu de cartes courant" #: ../lib/vector/Vlib/write_ogr.c:239 #, c-format @@ -2965,15 +2835,15 @@ #: ../lib/vector/Vlib/write_ogr.c:424 msgid "Feature is not a point. Skipping." -msgstr "" +msgstr "L'entit? n'est pas un point. Saut?." #: ../lib/vector/Vlib/write_ogr.c:432 msgid "Feature is not a line. Skipping." -msgstr "" +msgstr "L'entit? n'est pas une ligne. Saut?." #: ../lib/vector/Vlib/write_ogr.c:446 msgid "Feature is not a face. Skipping." -msgstr "" +msgstr "L'entit? n'est pas une face. Saut?." #: ../lib/vector/Vlib/write_ogr.c:452 #, c-format @@ -2982,7 +2852,7 @@ #: ../lib/vector/Vlib/write_ogr.c:471 msgid "Boundary is not closed. Feature skipped." -msgstr "" +msgstr "Contour non ferm?. Entit? saut?e." #: ../lib/vector/Vlib/write_ogr.c:500 msgid "Unable to writes feature attributes" @@ -2999,9 +2869,7 @@ msgstr "Impossible de cr?er la champ <%s>" #: ../lib/vector/Vlib/dgraph.c:432 -msgid "" -"Trying to add more edges to the planar_graph than the initial allocation " -"size allows" +msgid "Trying to add more edges to the planar_graph than the initial allocation size allows" msgstr "" #: ../lib/vector/Vlib/box.c:228 @@ -3017,9 +2885,7 @@ #: ../lib/vector/Vlib/box.c:289 #, fuzzy, c-format msgid "Unable to determine bbox for area %d" -msgstr "" -"Impossible d'ouvrir le fichier des cat?gories d'index pour la couche " -"vectorielle <%s>" +msgstr "Impossible d'ouvrir le fichier des cat?gories d'index pour la couche vectorielle <%s>" #: ../lib/vector/Vlib/box.c:335 #, fuzzy, c-format @@ -3058,15 +2924,15 @@ #: ../lib/vector/Vlib/dangles.c:148 msgid "Changed" -msgstr "" +msgstr "Modifi?" #: ../lib/vector/Vlib/dangles.c:151 msgid "Removed" -msgstr "" +msgstr "Supprim?" #: ../lib/vector/Vlib/dangles.c:154 msgid "Selected" -msgstr "" +msgstr "S?lectionn?" #: ../lib/vector/Vlib/dangles.c:262 #, c-format @@ -3096,7 +2962,7 @@ #: ../lib/vector/Vlib/read_sfa.c:95 #, c-format msgid "Centroid %d: invalid area %d" -msgstr "" +msgstr "Centro?de %d : surface %d invalide" #: ../lib/vector/Vlib/select.c:116 #, c-format @@ -3106,8 +2972,7 @@ #: ../lib/vector/Vlib/header.c:86 #, c-format msgid "Unable to create header file for vector map <%s>" -msgstr "" -"Impossible de cr?er le fichier d'en-t?te pour la couche vectorielle <%s>" +msgstr "Impossible de cr?er le fichier d'en-t?te pour la couche vectorielle <%s>" #: ../lib/vector/Vlib/header.c:129 #, c-format @@ -3155,7 +3020,7 @@ #: ../lib/vector/Vlib/map.c:367 #, c-format msgid "Ignoring invalid mapset: %s" -msgstr "" +msgstr "Jeu de cartes invalide ignor? : %s" #: ../lib/vector/Vlib/map.c:372 #, c-format @@ -3208,7 +3073,7 @@ #: ../lib/vector/Vlib/remove_areas.c:194 ../lib/vector/Vlib/remove_areas.c:602 #, c-format msgid "%d areas of total size %g removed" -msgstr "" +msgstr "%d surfaces d'une taille totale de %g supprim?es" #: ../lib/vector/Vlib/remove_areas.c:395 #, fuzzy @@ -3309,8 +3174,7 @@ #: ../lib/vector/Vlib/net_build.c:985 #, c-format msgid "Data type of column <%s> not supported (must be numeric)" -msgstr "" -"Type de donn?es de la colonne <%s> non pris en charge (doit ?tre numeric)" +msgstr "Type de donn?es de la colonne <%s> non pris en charge (doit ?tre numeric)" #: ../lib/vector/Vlib/net_build.c:202 ../lib/vector/Vlib/net_build.c:964 msgid "Setting node costs..." @@ -3319,9 +3183,7 @@ #: ../lib/vector/Vlib/net_build.c:277 ../lib/vector/Vlib/net_build.c:1029 #, c-format msgid "Database record for node %d (cat = %d) not found (cost set to 0)" -msgstr "" -"L'enregistrement de la base de donn?es pour le noeud %d (cat = %d) n'a pas " -"?t? trouv? (co?t fix? ? 0)" +msgstr "L'enregistrement de la base de donn?es pour le noeud %d (cat = %d) n'a pas ?t? trouv? (co?t fix? ? 0)" #: ../lib/vector/Vlib/net_build.c:332 ../lib/vector/Vlib/net_build.c:352 #, fuzzy @@ -3331,39 +3193,30 @@ #: ../lib/vector/Vlib/net_build.c:364 #, c-format msgid "" -"There exists more than one point of node <%d> with unique category field <" -"%d>.\n" -"The unique categories layer is not valid therefore you will probably get " -"incorrect results." +"There exists more than one point of node <%d> with unique category field <%d>.\n" +"The unique categories layer is not valid therefore you will probably get incorrect results." msgstr "" #: ../lib/vector/Vlib/net_build.c:393 #, c-format msgid "" -"Unable to find point representing intersection <%d> in unique categories " -"field <%d>.\n" +"Unable to find point representing intersection <%d> in unique categories field <%d>.\n" "Cost for the intersection was set to 0.\n" -"The unique categories layer is not valid therefore you will probably get " -"incorrect results." +"The unique categories layer is not valid therefore you will probably get incorrect results." msgstr "" #: ../lib/vector/Vlib/net_build.c:407 #, c-format msgid "" -"Unable to find node for point representing intersection <%d> in unique " -"categories field <%d>.\n" +"Unable to find node for point representing intersection <%d> in unique categories field <%d>.\n" "Cost for the intersection was set to 0.\n" -"The unique categories layer is not valid therefore you will probably get " -"incorrect results." +"The unique categories layer is not valid therefore you will probably get incorrect results." msgstr "" #: ../lib/vector/Vlib/net_build.c:432 #, fuzzy, c-format -msgid "" -"Database record for turn with cat = %d in not found. (The turn was skipped." -msgstr "" -"L'enregistrement de la base de donn?es pour le noeud %d (cat = %d) n'a pas " -"?t? trouv? (co?t fix? ? 0)" +msgid "Database record for turn with cat = %d in not found. (The turn was skipped." +msgstr "L'enregistrement de la base de donn?es pour le noeud %d (cat = %d) n'a pas ?t? trouv? (co?t fix? ? 0)" #: ../lib/vector/Vlib/net_build.c:465 #, fuzzy @@ -3382,27 +3235,18 @@ #, c-format msgid "" "Line with id <%d> has more unique categories defined in field <%d>.\n" -"The unique categories layer is not valid therefore you will probably get " -"incorrect results." +"The unique categories layer is not valid therefore you will probably get incorrect results." msgstr "" #: ../lib/vector/Vlib/net_build.c:579 #, fuzzy, c-format -msgid "" -"Database record for line %d (cat = %d, forward/both direction(s)) not found " -"(cost was set to 0)" -msgstr "" -"L'enregistrement de la base de donn?es de la ligne %d (cat = %d, avant/" -"toutes directions) introuvable (avant/toutes directions de la ligne saut?e)" +msgid "Database record for line %d (cat = %d, forward/both direction(s)) not found (cost was set to 0)" +msgstr "L'enregistrement de la base de donn?es de la ligne %d (cat = %d, avant/toutes directions) introuvable (avant/toutes directions de la ligne saut?e)" #: ../lib/vector/Vlib/net_build.c:596 #, fuzzy, c-format -msgid "" -"Database record for line %d (cat = %d, backword direction) not found(cost " -"was set to 0)" -msgstr "" -"L'enregistrement de la base de donn?es de la ligne %d (cat = %d, direction " -"arri?re) introuvable (direction de la ligne saut?e)" +msgid "Database record for line %d (cat = %d, backword direction) not found(cost was set to 0)" +msgstr "L'enregistrement de la base de donn?es de la ligne %d (cat = %d, direction arri?re) introuvable (direction de la ligne saut?e)" #: ../lib/vector/Vlib/net_build.c:658 ../lib/vector/Vlib/net_build.c:1061 msgid "Flattening the graph..." @@ -3414,21 +3258,13 @@ #: ../lib/vector/Vlib/net_build.c:866 #, c-format -msgid "" -"Database record for line %d (cat = %d, forward/both direction(s)) not found " -"(forward/both direction(s) of line skipped)" -msgstr "" -"L'enregistrement de la base de donn?es de la ligne %d (cat = %d, avant/" -"toutes directions) introuvable (avant/toutes directions de la ligne saut?e)" +msgid "Database record for line %d (cat = %d, forward/both direction(s)) not found (forward/both direction(s) of line skipped)" +msgstr "L'enregistrement de la base de donn?es de la ligne %d (cat = %d, avant/toutes directions) introuvable (avant/toutes directions de la ligne saut?e)" #: ../lib/vector/Vlib/net_build.c:885 #, c-format -msgid "" -"Database record for line %d (cat = %d, backword direction) not " -"found(direction of line skipped)" -msgstr "" -"L'enregistrement de la base de donn?es de la ligne %d (cat = %d, direction " -"arri?re) introuvable (direction de la ligne saut?e)" +msgid "Database record for line %d (cat = %d, backword direction) not found(direction of line skipped)" +msgstr "L'enregistrement de la base de donn?es de la ligne %d (cat = %d, direction arri?re) introuvable (direction de la ligne saut?e)" #: ../lib/vector/Vlib/net_build.c:934 msgid "Cannot add network arc" @@ -3456,7 +3292,7 @@ #: ../lib/vector/Vlib/break_polygons.c:592 msgid "Point not in search tree!" -msgstr "" +msgstr "Point pas dans l'arbre de recherche !" #: ../lib/segment/format.c:143 msgid "Segment format: file size too large" @@ -3526,8 +3362,7 @@ #: ../lib/temporal/lib/default_name.c:69 msgid "Programmer error - only SQLite driver is currently supported" -msgstr "" -"Erreur du programmeur - seul le pilote SQLite est actuellement support?" +msgstr "Erreur du programmeur - seul le pilote SQLite est actuellement support?" #: ../lib/gpde/n_parse_options.c:106 msgid "The calculation time in seconds" @@ -3747,8 +3582,7 @@ #: ../lib/python/temporal/stds_export.py:110 #, fuzzy, python-format msgid "Unable to export color rules for raster map <%s> r.out.gdal" -msgstr "" -"Impossible d'ouvrir le fichier topologique pour la couche vectorielle <%s>" +msgstr "Impossible d'ouvrir le fichier topologique pour la couche vectorielle <%s>" #: ../lib/python/temporal/stds_export.py:134 #, fuzzy, python-format @@ -3788,15 +3622,12 @@ #: ../lib/python/temporal/open_stds.py:122 #, fuzzy, python-format -msgid "" -"Space time %(sp)s dataset <%(name)s> is already in the database. Use the " -"overwrite flag." +msgid "Space time %(sp)s dataset <%(name)s> is already in the database. Use the overwrite flag." msgstr "La couche vectorielle <%s> existe d?j? et va ?tre ?cras?" #: ../lib/python/temporal/open_stds.py:157 #, fuzzy, python-format -msgid "" -"Overwriting space time %(sp)s dataset <%(name)s> and unregistering all maps" +msgid "Overwriting space time %(sp)s dataset <%(name)s> and unregistering all maps" msgstr "Impossible de cr?er le fichier d'en-t?te pour [%s]" #: ../lib/python/temporal/open_stds.py:165 @@ -3807,8 +3638,7 @@ #: ../lib/python/temporal/open_stds.py:208 #: ../lib/python/temporal/extract.py:114 ../lib/python/temporal/mapcalc.py:236 #, fuzzy, python-format -msgid "" -"Map <%s> is already in temporal database, use overwrite flag to overwrite" +msgid "Map <%s> is already in temporal database, use overwrite flag to overwrite" msgstr "La couche vectorielle <%s> existe d?j? et va ?tre ?cras?" #: ../lib/python/temporal/sampling.py:91 ../lib/python/temporal/sampling.py:96 @@ -3834,9 +3664,7 @@ #: ../lib/python/temporal/abstract_dataset.py:388 #, python-format -msgid "" -"Unable to insert dataset <%(ds)s> of type %(type)s in the temporal database. " -"The mapset of the dataset does not match the current mapset" +msgid "Unable to insert dataset <%(ds)s> of type %(type)s in the temporal database. The mapset of the dataset does not match the current mapset" msgstr "" #: ../lib/python/temporal/abstract_dataset.py:428 @@ -3845,9 +3673,7 @@ #: ../lib/python/temporal/abstract_map_dataset.py:415 #: ../lib/python/temporal/abstract_map_dataset.py:511 #, python-format -msgid "" -"Unable to update dataset <%(ds)s> of type %(type)s in the temporal database. " -"The mapset of the dataset does not match the current mapset" +msgid "Unable to update dataset <%(ds)s> of type %(type)s in the temporal database. The mapset of the dataset does not match the current mapset" msgstr "" #: ../lib/python/temporal/factory.py:47 @@ -3893,9 +3719,7 @@ #: ../lib/python/temporal/space_time_datasets.py:249 #, fuzzy, python-format msgid "Invalid datetime in timestamp for raster map <%s>" -msgstr "" -"Fichier d'?tiquette date&heure (timestamp) invalide pour la couche %s %s " -"dans le jeu de donn?es (mapset) %s" +msgstr "Fichier d'?tiquette date&heure (timestamp) invalide pour la couche %s %s dans le jeu de donn?es (mapset) %s" #: ../lib/python/temporal/space_time_datasets.py:254 #: ../lib/python/temporal/space_time_datasets.py:588 @@ -3922,9 +3746,7 @@ #: ../lib/python/temporal/space_time_datasets.py:583 #, fuzzy, python-format msgid "Invalid datetime in timestamp for 3D raster map <%s>" -msgstr "" -"Fichier d'?tiquette date&heure (timestamp) invalide pour la couche %s %s " -"dans le jeu de donn?es (mapset) %s" +msgstr "Fichier d'?tiquette date&heure (timestamp) invalide pour la couche %s %s dans le jeu de donn?es (mapset) %s" #: ../lib/python/temporal/space_time_datasets.py:847 #, fuzzy, python-format @@ -3939,9 +3761,7 @@ #: ../lib/python/temporal/space_time_datasets.py:875 #, fuzzy, python-format msgid "Invalid datetime in timestamp for vector map <%s>" -msgstr "" -"Fichier d'?tiquette date&heure (timestamp) invalide pour la couche %s %s " -"dans le jeu de donn?es (mapset) %s" +msgstr "Fichier d'?tiquette date&heure (timestamp) invalide pour la couche %s %s dans le jeu de donn?es (mapset) %s" #: ../lib/python/temporal/space_time_datasets.py:891 #, fuzzy, python-format @@ -3956,8 +3776,7 @@ #: ../lib/python/temporal/stds_import.py:95 #, fuzzy, python-format msgid "Unable to set the color rules for raster map <%s>." -msgstr "" -"Impossible d'ouvrir le fichier topologique pour la couche vectorielle <%s>" +msgstr "Impossible d'ouvrir le fichier topologique pour la couche vectorielle <%s>" #: ../lib/python/temporal/stds_import.py:119 #, fuzzy, python-format @@ -4009,8 +3828,7 @@ "Difference between PROJ_INFO file of imported map and of current location:\n" "{diff}" msgstr "" -"Diff?rences antre le fichier PROJ_INFO de la carte import?e et celui du " -"secteur courant :\n" +"Diff?rences antre le fichier PROJ_INFO de la carte import?e et celui du secteur courant :\n" "{diff}" #: ../lib/python/temporal/stds_import.py:253 @@ -4073,9 +3891,7 @@ #: ../lib/python/temporal/stds_import.py:411 #, fuzzy, python-format -msgid "" -"Space time %(t)s dataset <%(sp)s> is already in the database. Use the " -"overwrite flag." +msgid "Space time %(t)s dataset <%(sp)s> is already in the database. Use the overwrite flag." msgstr "La couche vectorielle <%s> existe d?j? et va ?tre ?cras?" #: ../lib/python/temporal/stds_import.py:431 @@ -4099,12 +3915,8 @@ #: ../lib/python/temporal/temporal_vector_algebra.py:372 #, fuzzy, python-format -msgid "" -"Error vector maps with basename %s exist. Use --o flag to overwrite existing " -"file" -msgstr "" -"Des cartes vecteur d'erreur avec %s comme base de nom existent. Utiliser " -"l'option --o pour ?craser les fichiers existants" +msgid "Error vector maps with basename %s exist. Use --o flag to overwrite existing file" +msgstr "Des cartes vecteur d'erreur avec %s comme base de nom existent. Utiliser l'option --o pour ?craser les fichiers existants" #: ../lib/python/temporal/temporal_vector_algebra.py:404 #, fuzzy, python-format @@ -4121,9 +3933,7 @@ msgstr "La couche vectorielle <%s> existe d?j? et va ?tre ?cras?" #: ../lib/python/temporal/core.py:589 -msgid "" -"Unable to initialize the temporal DBMI interface. Please use t.connect to " -"specify the driver and the database string" +msgid "Unable to initialize the temporal DBMI interface. Please use t.connect to specify the driver and the database string" msgstr "" #: ../lib/python/temporal/core.py:652 @@ -4165,46 +3975,32 @@ #: ../lib/python/temporal/core.py:927 #, python-format -msgid "" -"Unable to mogrify sql statement. There is no temporal database connection " -"defined for mapset <%(mapset)s>" +msgid "Unable to mogrify sql statement. There is no temporal database connection defined for mapset <%(mapset)s>" msgstr "" #: ../lib/python/temporal/core.py:950 #, fuzzy, python-format -msgid "" -"Unable to check table. There is no temporal database connection defined for " -"mapset <%(mapset)s>" +msgid "Unable to check table. There is no temporal database connection defined for mapset <%(mapset)s>" msgstr "impossible d'ouvrir le fichier de datums : %s" #: ../lib/python/temporal/core.py:967 #, python-format -msgid "" -"Unable to execute sql statement. There is no temporal database connection " -"defined for mapset <%(mapset)s>" +msgid "Unable to execute sql statement. There is no temporal database connection defined for mapset <%(mapset)s>" msgstr "" #: ../lib/python/temporal/core.py:978 #, fuzzy, python-format -msgid "" -"Unable to fetch one. There is no temporal database connection defined for " -"mapset <%(mapset)s>" -msgstr "" -"Impossible d'ouvrir le fichier d'historique pour la couche vectorielle <%s>" +msgid "Unable to fetch one. There is no temporal database connection defined for mapset <%(mapset)s>" +msgstr "Impossible d'ouvrir le fichier d'historique pour la couche vectorielle <%s>" #: ../lib/python/temporal/core.py:989 #, fuzzy, python-format -msgid "" -"Unable to fetch all. There is no temporal database connection defined for " -"mapset <%(mapset)s>" -msgstr "" -"Impossible d'ouvrir le fichier d'historique pour la couche vectorielle <%s>" +msgid "Unable to fetch all. There is no temporal database connection defined for mapset <%(mapset)s>" +msgstr "Impossible d'ouvrir le fichier d'historique pour la couche vectorielle <%s>" #: ../lib/python/temporal/core.py:1007 #, python-format -msgid "" -"Unable to execute transaction. There is no temporal database connection " -"defined for mapset <%(mapset)s>" +msgid "Unable to execute transaction. There is no temporal database connection defined for mapset <%(mapset)s>" msgstr "" #: ../lib/python/temporal/core.py:1096 @@ -4275,23 +4071,17 @@ #: ../lib/python/temporal/abstract_space_time_dataset.py:1598 #, python-format -msgid "" -"Unable to shift dataset <%(ds)s> of type %(type)s in the temporal database. " -"The mapset of the dataset does not match the current mapset" +msgid "Unable to shift dataset <%(ds)s> of type %(type)s in the temporal database. The mapset of the dataset does not match the current mapset" msgstr "" #: ../lib/python/temporal/abstract_space_time_dataset.py:1767 #, python-format -msgid "" -"Unable to snap dataset <%(ds)s> of type %(type)s in the temporal database. " -"The mapset of the dataset does not match the current mapset" +msgid "Unable to snap dataset <%(ds)s> of type %(type)s in the temporal database. The mapset of the dataset does not match the current mapset" msgstr "" #: ../lib/python/temporal/abstract_space_time_dataset.py:1869 #, python-format -msgid "" -"Unable to rename dataset <%(ds)s> of type %(type)s in the temporal database. " -"The mapset of the dataset does not match the current mapset" +msgid "Unable to rename dataset <%(ds)s> of type %(type)s in the temporal database. The mapset of the dataset does not match the current mapset" msgstr "" #: ../lib/python/temporal/abstract_space_time_dataset.py:1878 @@ -4306,9 +4096,7 @@ #: ../lib/python/temporal/abstract_space_time_dataset.py:1949 #: ../lib/python/temporal/abstract_map_dataset.py:823 #, python-format -msgid "" -"Unable to delete dataset <%(ds)s> of type %(type)s from the temporal " -"database. The mapset of the dataset does not match the current mapset" +msgid "Unable to delete dataset <%(ds)s> of type %(type)s from the temporal database. The mapset of the dataset does not match the current mapset" msgstr "" #: ../lib/python/temporal/abstract_space_time_dataset.py:1962 @@ -4323,15 +4111,11 @@ #: ../lib/python/temporal/abstract_space_time_dataset.py:2046 #, fuzzy, python-format -msgid "" -"Unable to register map in dataset <%(ds)s> of type %(type)s. The mapset of " -"the dataset does not match the current mapset" +msgid "Unable to register map in dataset <%(ds)s> of type %(type)s. The mapset of the dataset does not match the current mapset" msgstr "la couche matricielle demand?e <%s> n'a pas ?t? trouv?e" #: ../lib/python/temporal/abstract_space_time_dataset.py:2055 -msgid "" -"Only a map that was inserted in the temporal database can be registered in a " -"space time dataset" +msgid "Only a map that was inserted in the temporal database can be registered in a space time dataset" msgstr "" #: ../lib/python/temporal/abstract_space_time_dataset.py:2078 @@ -4346,15 +4130,12 @@ #: ../lib/python/temporal/abstract_space_time_dataset.py:2100 #, fuzzy, python-format -msgid "" -"Temporal type of space time dataset <%(id)s> and map <%(map)s> with layer " -"%(l)s are different" +msgid "Temporal type of space time dataset <%(id)s> and map <%(map)s> with layer %(l)s are different" msgstr "Impossible de copier la couche vectorielle <%s> vers <%s>" #: ../lib/python/temporal/abstract_space_time_dataset.py:2106 #, fuzzy, python-format -msgid "" -"Temporal type of space time dataset <%(id)s> and map <%(map)s> are different" +msgid "Temporal type of space time dataset <%(id)s> and map <%(map)s> are different" msgstr "la couche matricielle demand?e <%s> n'a pas ?t? trouv?e" #: ../lib/python/temporal/abstract_space_time_dataset.py:2121 @@ -4364,16 +4145,12 @@ #: ../lib/python/temporal/abstract_space_time_dataset.py:2131 #, python-format -msgid "" -"Relative time units of space time dataset <%(id)s> and map <%(map)s> with " -"layer %(l)s are different" +msgid "Relative time units of space time dataset <%(id)s> and map <%(map)s> with layer %(l)s are different" msgstr "" #: ../lib/python/temporal/abstract_space_time_dataset.py:2137 #, python-format -msgid "" -"Relative time units of space time dataset <%(id)s> and map <%(map)s> are " -"different" +msgid "Relative time units of space time dataset <%(id)s> and map <%(map)s> are different" msgstr "" #: ../lib/python/temporal/abstract_space_time_dataset.py:2143 @@ -4392,17 +4169,12 @@ #: ../lib/python/temporal/abstract_space_time_dataset.py:2200 #, python-format -msgid "" -"Unable to unregister map from dataset <%(ds)s> of type %(type)s in the " -"temporal database. The mapset of the dataset does not match the current " -"mapset" +msgid "Unable to unregister map from dataset <%(ds)s> of type %(type)s in the temporal database. The mapset of the dataset does not match the current mapset" msgstr "" #: ../lib/python/temporal/abstract_space_time_dataset.py:2213 #, fuzzy, python-format -msgid "" -"Map <%(map)s> with layer %(l)s is not registered in space time dataset <" -"%(base)s>" +msgid "Map <%(map)s> with layer %(l)s is not registered in space time dataset <%(base)s>" msgstr "pas de fichier %s disponible dans le jeu de donn?es actuel\n" #: ../lib/python/temporal/abstract_space_time_dataset.py:2219 @@ -4412,8 +4184,7 @@ #: ../lib/python/temporal/abstract_space_time_dataset.py:2280 #, python-format -msgid "" -"Update metadata, spatial and temporal extent from all registered maps of <%s>" +msgid "Update metadata, spatial and temporal extent from all registered maps of <%s>" msgstr "" #: ../lib/python/temporal/mapcalc.py:105 @@ -4429,10 +4200,7 @@ msgstr "" #: ../lib/python/temporal/mapcalc.py:151 -msgid "" -"Found more than a single map in a sample granule. Only the first map is used " -"for computation. Use t.rast.aggregate.ds to create synchronous raster " -"datasets." +msgid "Found more than a single map in a sample granule. Only the first map is used for computation. Use t.rast.aggregate.ds to create synchronous raster datasets." msgstr "" #: ../lib/python/temporal/mapcalc.py:169 @@ -4496,9 +4264,7 @@ #: ../lib/python/temporal/aggregation.py:135 #, fuzzy, python-format -msgid "" -"Raster map <%(name)s> is already in temporal database, use overwrite flag to " -"overwrite" +msgid "Raster map <%(name)s> is already in temporal database, use overwrite flag to overwrite" msgstr "La couche vectorielle <%s> existe d?j? et va ?tre ?cras?" #: ../lib/python/temporal/aggregation.py:140 @@ -4518,9 +4284,7 @@ #: ../lib/python/temporal/aggregation.py:289 #, python-format -msgid "" -"Unable to perform aggregation. Output raster map <%(name)s> exists and " -"overwrite flag was not set" +msgid "Unable to perform aggregation. Output raster map <%(name)s> exists and overwrite flag was not set" msgstr "" #: ../lib/python/temporal/register.py:76 ../lib/python/temporal/register.py:79 @@ -4544,9 +4308,7 @@ #: ../lib/python/temporal/register.py:98 #, python-format -msgid "" -"Space time %(sp)s dataset <%(name)s> with relative time found, but no " -"relative unit set for %(sp)s maps" +msgid "Space time %(sp)s dataset <%(name)s> with relative time found, but no relative unit set for %(sp)s maps" msgstr "" #: ../lib/python/temporal/register.py:163 @@ -4560,16 +4322,12 @@ #: ../lib/python/temporal/register.py:191 #, fuzzy, python-format -msgid "" -"Unable to register %(t)s map <%(id)s> with layer %(l)s. The map has " -"timestamp and the start time is not set." +msgid "Unable to register %(t)s map <%(id)s> with layer %(l)s. The map has timestamp and the start time is not set." msgstr "la couche matricielle demand?e <%s> n'a pas ?t? trouv?e" #: ../lib/python/temporal/register.py:197 #, fuzzy, python-format -msgid "" -"Unable to register %(t)s map <%(id)s>. The map has no timestamp and the " -"start time is not set." +msgid "Unable to register %(t)s map <%(id)s>. The map has no timestamp and the start time is not set." msgstr "la couche matricielle demand?e <%s> n'a pas ?t? trouv?e" #: ../lib/python/temporal/register.py:205 @@ -4584,23 +4342,17 @@ #: ../lib/python/temporal/register.py:221 #, fuzzy, python-format -msgid "" -"Map is already registered in temporal database. Unable to update %(t)s map <" -"%(id)s> with layer %(l)s. Overwrite flag is not set." +msgid "Map is already registered in temporal database. Unable to update %(t)s map <%(id)s> with layer %(l)s. Overwrite flag is not set." msgstr "La couche vectorielle <%s> existe d?j? et va ?tre ?cras?" #: ../lib/python/temporal/register.py:228 #, fuzzy, python-format -msgid "" -"Map is already registered in temporal database. Unable to update %(t)s map <" -"%(id)s>. Overwrite flag is not set." +msgid "Map is already registered in temporal database. Unable to update %(t)s map <%(id)s>. Overwrite flag is not set." msgstr "La couche vectorielle <%s> existe d?j? et va ?tre ?cras?" #: ../lib/python/temporal/register.py:252 #, fuzzy, python-format -msgid "" -"Unable to update %(t)s map <%(id)s> with layer %(l)s. The temporal types are " -"different." +msgid "Unable to update %(t)s map <%(id)s> with layer %(l)s. The temporal types are different." msgstr "Impossible de copier la couche vectorielle <%s> vers <%s>" #: ../lib/python/temporal/register.py:258 @@ -4637,9 +4389,7 @@ #: ../lib/python/temporal/register.py:396 #, fuzzy, python-format -msgid "" -"Set absolute valid time for map <%(id)s> with layer %(layer)s to %(start)s - " -"%(end)s" +msgid "Set absolute valid time for map <%(id)s> with layer %(layer)s to %(start)s - %(end)s" msgstr "Impossible de copier la couche vectorielle <%s> vers <%s>" #: ../lib/python/temporal/register.py:401 @@ -4649,8 +4399,7 @@ #: ../lib/python/temporal/register.py:418 #, fuzzy, python-format -msgid "" -"Set relative valid time for map <%s> with layer %s to %i - %s with unit %s" +msgid "Set relative valid time for map <%s> with layer %s to %i - %s with unit %s" msgstr "Impossible de copier la couche vectorielle <%s> vers <%s>" #: ../lib/python/temporal/register.py:423 @@ -4670,9 +4419,7 @@ #: ../lib/python/temporal/base.py:620 #, fuzzy msgid "Wrong identifier, the mapset is missing" -msgstr "" -"Impossible d'ouvrir le fichier d'index de cat?gorie pour la couche " -"vectorielle <%s@%s>" +msgstr "Impossible d'ouvrir le fichier d'index de cat?gorie pour la couche vectorielle <%s@%s>" #: ../lib/python/temporal/univar_statistics.py:50 #: ../lib/python/temporal/univar_statistics.py:149 @@ -4751,9 +4498,7 @@ #: ../lib/python/temporal/temporal_algebra.py:1134 #: ../lib/python/temporal/temporal_algebra.py:1138 #, python-format -msgid "" -"Wrong temporal type of space time dataset <" -"%s> <%s> time is required" +msgid "Wrong temporal type of space time dataset <%s> <%s> time is required" msgstr "" #: ../lib/python/temporal/temporal_algebra.py:1158 @@ -4763,22 +4508,16 @@ #: ../lib/python/temporal/temporal_algebra.py:2032 #, python-format -msgid "" -"The resulting space time dataset type <%(a)s> is different from the " -"requested type <%(b)s>" +msgid "The resulting space time dataset type <%(a)s> is different from the requested type <%(b)s>" msgstr "" #: ../lib/python/temporal/temporal_algebra.py:2038 -msgid "" -"Maps that should be registered in the resulting space time dataset have " -"different types." +msgid "Maps that should be registered in the resulting space time dataset have different types." msgstr "" #: ../lib/python/temporal/temporal_algebra.py:2219 #, python-format -msgid "" -"Wrong map type <%s> . TMAP only supports single maps that are registered in " -"the temporal GRASS database" +msgid "Wrong map type <%s> . TMAP only supports single maps that are registered in the temporal GRASS database" msgstr "" #: ../lib/python/temporal/temporal_algebra.py:2248 @@ -4807,25 +4546,19 @@ msgstr "Entr?e vide dans la liste de cartes, ceci ne devrait pas se produire" #: ../lib/python/temporal/spatial_extent.py:118 -msgid "" -"Projections are different. Unable to compute overlapping_2d for spatial " -"extents" +msgid "Projections are different. Unable to compute overlapping_2d for spatial extents" msgstr "" #: ../lib/python/temporal/spatial_extent.py:524 -msgid "" -"Projections are different. Unable to compute is_in_2d for spatial extents" +msgid "Projections are different. Unable to compute is_in_2d for spatial extents" msgstr "" #: ../lib/python/temporal/spatial_extent.py:656 -msgid "" -"Projections are different. Unable to compute equivalent_2d for spatial " -"extents" +msgid "Projections are different. Unable to compute equivalent_2d for spatial extents" msgstr "" #: ../lib/python/temporal/spatial_extent.py:761 -msgid "" -"Projections are different. Unable to compute cover_2d for spatial extents" +msgid "Projections are different. Unable to compute cover_2d for spatial extents" msgstr "" #: ../lib/python/temporal/spatial_extent.py:833 @@ -4842,40 +4575,27 @@ #: ../lib/python/temporal/abstract_map_dataset.py:341 #, fuzzy, python-format -msgid "" -"Start time must be of type datetime for %(type)s map <%(id)s> with layer: " -"%(l)s" -msgstr "" -"Impossible de cr?er le fichier d'?tiquettes date&heure (timestamp) pour la " -"couche %s %s dans le jeu de donn?es (mapset) %s" +msgid "Start time must be of type datetime for %(type)s map <%(id)s> with layer: %(l)s" +msgstr "Impossible de cr?er le fichier d'?tiquettes date&heure (timestamp) pour la couche %s %s dans le jeu de donn?es (mapset) %s" #: ../lib/python/temporal/abstract_map_dataset.py:348 #, fuzzy, python-format msgid "Start time must be of type datetime for %(type)s map <%(id)s>" -msgstr "" -"Fichier d'?tiquette date&heure (timestamp) invalide pour la couche %s %s " -"dans le jeu de donn?es (mapset) %s" +msgstr "Fichier d'?tiquette date&heure (timestamp) invalide pour la couche %s %s dans le jeu de donn?es (mapset) %s" #: ../lib/python/temporal/abstract_map_dataset.py:356 #, fuzzy, python-format -msgid "" -"End time must be of type datetime for %(type)s map <%(id)s> with layer: %(l)s" -msgstr "" -"Fichier d'?tiquette date&heure (timestamp) invalide pour la couche %s %s " -"dans le jeu de donn?es (mapset) %s" +msgid "End time must be of type datetime for %(type)s map <%(id)s> with layer: %(l)s" +msgstr "Fichier d'?tiquette date&heure (timestamp) invalide pour la couche %s %s dans le jeu de donn?es (mapset) %s" #: ../lib/python/temporal/abstract_map_dataset.py:363 #, fuzzy, python-format msgid "End time must be of type datetime for %(type)s map <%(id)s>" -msgstr "" -"Fichier d'?tiquette date&heure (timestamp) invalide pour la couche %s %s " -"dans le jeu de donn?es (mapset) %s" +msgstr "Fichier d'?tiquette date&heure (timestamp) invalide pour la couche %s %s dans le jeu de donn?es (mapset) %s" #: ../lib/python/temporal/abstract_map_dataset.py:372 #, fuzzy, python-format -msgid "" -"End time must be greater than start time for %(type)s map <%(id)s> with " -"layer: %(l)s" +msgid "End time must be greater than start time for %(type)s map <%(id)s> with layer: %(l)s" msgstr "L'Est doit ?tre plus grand que l'Ouest" #: ../lib/python/temporal/abstract_map_dataset.py:380 @@ -4886,12 +4606,8 @@ #: ../lib/python/temporal/abstract_map_dataset.py:451 #, fuzzy, python-format -msgid "" -"Unsupported relative time unit type for %(type)s map <%(id)s> with layer " -"%(l)s: %(u)s" -msgstr "" -"Impossible de cr?er le fichier d'?tiquettes date&heure (timestamp) pour la " -"couche %s %s dans le jeu de donn?es (mapset) %s" +msgid "Unsupported relative time unit type for %(type)s map <%(id)s> with layer %(l)s: %(u)s" +msgstr "Impossible de cr?er le fichier d'?tiquettes date&heure (timestamp) pour la couche %s %s dans le jeu de donn?es (mapset) %s" #: ../lib/python/temporal/abstract_map_dataset.py:458 #, fuzzy, python-format @@ -4900,22 +4616,17 @@ #: ../lib/python/temporal/abstract_map_dataset.py:467 #, fuzzy, python-format -msgid "" -"End time must be greater than start time for %(typ)s map <%(id)s> with layer " -"%(l)s" +msgid "End time must be greater than start time for %(typ)s map <%(id)s> with layer %(l)s" msgstr "L'Est doit ?tre plus grand que l'Ouest" #: ../lib/python/temporal/abstract_map_dataset.py:782 #, python-format -msgid "" -"Map <%(id)s> with layer %(layer)s has incorrect time interval, start time is " -"greater than end time" +msgid "Map <%(id)s> with layer %(layer)s has incorrect time interval, start time is greater than end time" msgstr "" #: ../lib/python/temporal/abstract_map_dataset.py:788 #, python-format -msgid "" -"Map <%s> has incorrect time interval, start time is greater than end time" +msgid "Map <%s> has incorrect time interval, start time is greater than end time" msgstr "" #: ../lib/python/temporal/abstract_map_dataset.py:794 @@ -4930,9 +4641,7 @@ #: ../lib/python/temporal/abstract_map_dataset.py:891 #, python-format -msgid "" -"Unable to unregister dataset <%(ds)s> of type %(type)s from the temporal " -"database. The mapset of the dataset does not match the current mapset" +msgid "Unable to unregister dataset <%(ds)s> of type %(type)s from the temporal database. The mapset of the dataset does not match the current mapset" msgstr "" #: ../lib/python/gunittest/gmodules.py:103 @@ -4962,11 +4671,8 @@ #: ../lib/python/script/db.py:149 #, python-format -msgid "" -"Programmer error: '%(sql)s', '%(filename)s', or '%(table)s' must be provided" -msgstr "" -"Erreur du programmeur : '%(sql)s', '%(filename)s', ou '%(table)s' doivent " -"?tre fournis" +msgid "Programmer error: '%(sql)s', '%(filename)s', or '%(table)s' must be provided" +msgstr "Erreur du programmeur : '%(sql)s', '%(filename)s', ou '%(table)s' doivent ?tre fournis" #: ../lib/python/script/db.py:159 #, fuzzy @@ -5005,8 +4711,7 @@ "\n" "Details: %(det)s" msgstr "" -"Impossible de r?cup?rer la description de l'interface pour la commande " -"'%(cmd)s'.\n" +"Impossible de r?cup?rer la description de l'interface pour la commande '%(cmd)s'.\n" "\n" "D?tails: %(det)s" @@ -5017,10 +4722,7 @@ #: ../lib/python/script/core.py:303 #, python-format -msgid "" -"To run the module <%s> add underscore at the end of the option <%s> to avoid " -"conflict with Python keywords. Underscore at the beginning is depreciated in " -"GRASS GIS 7.0 and will be removed in version 7.1." +msgid "To run the module <%s> add underscore at the end of the option <%s> to avoid conflict with Python keywords. Underscore at the beginning is depreciated in GRASS GIS 7.0 and will be removed in version 7.1." msgstr "" #: ../lib/python/script/core.py:923 @@ -5091,12 +4793,8 @@ #: ../lib/python/script/raster.py:47 #, fuzzy, python-format -msgid "" -"Unable to write history for <%(map)s>. Raster map <%(map)s> not found in " -"current mapset." -msgstr "" -"Impossible de supprimer la ligne, la couche '%s' n'est pas ouverte en mode " -"'?criture'" +msgid "Unable to write history for <%(map)s>. Raster map <%(map)s> not found in current mapset." +msgstr "Impossible de supprimer la ligne, la couche '%s' n'est pas ouverte en mode '?criture'" #: ../lib/python/script/raster.py:106 msgid "An error occurred while running r.mapcalc" @@ -5127,11 +4825,8 @@ #: ../lib/symbol/read.c:260 #, c-format -msgid "" -"Incorrect symbol name: '%s' (should be: group/name or group/name at mapset)" -msgstr "" -"Nom du symbole incorrect: '%s' (devrait ?tre group/nom ou groupe/" -"nom at jeudedonn?es)" +msgid "Incorrect symbol name: '%s' (should be: group/name or group/name at mapset)" +msgstr "Nom du symbole incorrect: '%s' (devrait ?tre group/nom ou groupe/nom at jeudedonn?es)" #: ../lib/symbol/read.c:284 #, c-format @@ -5179,12 +4874,8 @@ #: ../lib/ogsf/gp3.c:288 #, c-format -msgid "" -"%d points without category. Unable to determine color rules for features " -"without category." -msgstr "" -"%d points sans cat?gorie. Impossible de d?terminer les r?gles de couleurs " -"pour les points sans cat?gorie." +msgid "%d points without category. Unable to determine color rules for features without category." +msgstr "%d points sans cat?gorie. Impossible de d?terminer les r?gles de couleurs pour les points sans cat?gorie." #: ../lib/ogsf/gp2.c:705 msgid "Unknown icon marker, using \"sphere\"" @@ -5231,9 +4922,7 @@ #: ../lib/ogsf/gs3.c:596 #, c-format msgid "Color table range doesn't match data (mincol=%d, maxcol=%d" -msgstr "" -"L'?tendue de la table de couleur ne correspond pas aux donn?es (mincol=%d, " -"maxcol=%d" +msgstr "L'?tendue de la table de couleur ne correspond pas aux donn?es (mincol=%d, maxcol=%d" #: ../lib/ogsf/gs3.c:658 ../lib/ogsf/gs3.c:730 #, c-format @@ -5259,18 +4948,13 @@ #: ../lib/ogsf/gsd_prim.c:630 #, c-format -msgid "" -"gsd_rot(): %c is an invalid axis specification. Rotation ignored. Please " -"advise GRASS developers of this error" -msgstr "" -"gsd_rot(): %c est une sp?cification d'axe non valide. Rotation ignor?e. " -"Merci d'avertir les d?veloppeurs GRASS de cette erreur" +msgid "gsd_rot(): %c is an invalid axis specification. Rotation ignored. Please advise GRASS developers of this error" +msgstr "gsd_rot(): %c est une sp?cification d'axe non valide. Rotation ignor?e. Merci d'avertir les d?veloppeurs GRASS de cette erreur" #: ../lib/ogsf/gv3.c:269 #, c-format msgid "No features from vector map <%s> fall within current region" -msgstr "" -"Aucune entit? de la carte vecteur <%s> ne tombe dans la r?gion courante" +msgstr "Aucune entit? de la carte vecteur <%s> ne tombe dans la r?gion courante" #: ../lib/ogsf/gv3.c:274 #, c-format @@ -5284,12 +4968,8 @@ #: ../lib/ogsf/gv3.c:414 #, c-format -msgid "" -"%d features without category. Unable to determine color rules for features " -"without category." -msgstr "" -"%d entit?s sans cat?gories. Impossible de d?terminer les r?gles de couleurs " -"pour les entit?s sans cat?gorie." +msgid "%d features without category. Unable to determine color rules for features without category." +msgstr "%d entit?s sans cat?gories. Impossible de d?terminer les r?gles de couleurs pour les entit?s sans cat?gorie." #: ../lib/ogsf/gsd_label.c:58 msgid "Max. number of labels reached!" @@ -5308,8 +4988,7 @@ #: ../lib/ogsf/gs2.c:1655 #, c-format msgid "Raster map <%s> is outside of current region. Load failed." -msgstr "" -"La carte raster <%s> est en dehors de la r?gion courante. Chargement ?chou?." +msgstr "La carte raster <%s> est en dehors de la r?gion courante. Chargement ?chou?." #: ../lib/ogsf/gs2.c:1733 ../lib/ogsf/gs2.c:1739 ../lib/ogsf/gs2.c:1747 #: ../lib/ogsf/gs2.c:1756 ../lib/ogsf/gs2.c:1764 ../lib/ogsf/gs2.c:1774 @@ -5327,8 +5006,7 @@ #: ../lib/ogsf/gsd_surf.c:1742 msgid "Cut-plane points mis-match between surfaces. Check resolution(s)." -msgstr "" -"Non concordance des points de surfaces de coupe. V?rifiez les r?solutions." +msgstr "Non concordance des points de surfaces de coupe. V?rifiez les r?solutions." #: ../lib/ogsf/gsd_legend.c:246 #, c-format @@ -5356,8 +5034,7 @@ #: ../lib/ogsf/gsd_legend.c:385 msgid "Unable to show discrete FP range (use list)" -msgstr "" -"Impossible d'afficher une plage flottante discr?te (utilisation d'une liste)" +msgstr "Impossible d'afficher une plage flottante discr?te (utilisation d'une liste)" #: ../lib/ogsf/gsd_legend.c:501 msgid "Too many categories to show as discrete!" @@ -5432,8 +5109,7 @@ #: ../lib/arraystats/class.c:42 msgid "Discont algorithm currently not available because of bugs" -msgstr "" -"L'algorithme discont n'est actuellement pas disponible ? cause d'un bug" +msgstr "L'algorithme discont n'est actuellement pas disponible ? cause d'un bug" #: ../lib/arraystats/class.c:49 #, fuzzy @@ -5446,12 +5122,8 @@ #: ../lib/arraystats/class.c:242 #, c-format -msgid "" -"There are classbreaks outside the range min-max. Number of classes reduced " -"to %i, but using probabilities for %i classes." -msgstr "" -"Il y a des ruptures de classes en dehors de la plage min-max. Nombre de " -"classes r?duites ? %i, mais utilisation des probabilit?s sur %i classes." +msgid "There are classbreaks outside the range min-max. Number of classes reduced to %i, but using probabilities for %i classes." +msgstr "Il y a des ruptures de classes en dehors de la plage min-max. Nombre de classes r?duites ? %i, mais utilisation des probabilit?s sur %i classes." #: ../lib/psdriver/graph_set.c:199 #, c-format @@ -5581,9 +5253,7 @@ #: ../lib/raster3d/open.c:119 #, fuzzy msgid "Rast3d_open_cell_old: projection does not match window projection" -msgstr "" -"Rast3d_openCellOld : la projection ne correspond pas ? la projection de la " -"fen?tre" +msgstr "Rast3d_openCellOld : la projection ne correspond pas ? la projection de la fen?tre" #: ../lib/raster3d/open.c:123 #, fuzzy @@ -5643,9 +5313,7 @@ #: ../lib/raster3d/color.c:354 #, fuzzy, c-format msgid "mapset <%s> is not the current mapset" -msgstr "" -"Bug: tentative de mise ? jour d'une couche qui n'est pas dans le jeu de " -"donn?es (mapset) courant." +msgstr "Bug: tentative de mise ? jour d'une couche qui n'est pas dans le jeu de donn?es (mapset) courant." #: ../lib/raster3d/history.c:43 #, c-format @@ -5793,17 +5461,12 @@ #: ../lib/gis/view.c:545 #, c-format msgid " Window saved in \"%s\" is completely outside of current GRASS window." -msgstr "" -"La fen?tre sauvegard?e dans \"%s\" est compl?tement en dehors de la fen?tre " -"GRASS courante." +msgstr "La fen?tre sauvegard?e dans \"%s\" est compl?tement en dehors de la fen?tre GRASS courante." #: ../lib/gis/view.c:549 #, c-format -msgid "" -" Only %d%% of window saved in \"%s\" overlaps with current GRASS window." -msgstr "" -" Seulement %d%% de la fen?tre sauvegard?e dans \"%s\" chevauche(nt) la " -"fen?tre GRASS courante." +msgid " Only %d%% of window saved in \"%s\" overlaps with current GRASS window." +msgstr " Seulement %d%% de la fen?tre sauvegard?e dans \"%s\" chevauche(nt) la fen?tre GRASS courante." #: ../lib/gis/parser_interface.c:329 ../lib/gis/parser_html.c:167 #: ../lib/gis/parser_help.c:200 ../lib/gis/parser_rest.c:164 @@ -5885,8 +5548,7 @@ #: ../lib/gis/legal_name.c:77 ../lib/gis/legal_name.c:81 #, c-format msgid "Output raster map name <%s> is not valid map name" -msgstr "" -"Le nom <%s> de la carte raster en sortie n'est pas un nom de carte valide" +msgstr "Le nom <%s> de la carte raster en sortie n'est pas un nom de carte valide" #: ../lib/gis/legal_name.c:118 ../lib/gis/legal_name.c:122 #, c-format @@ -5896,8 +5558,7 @@ #: ../lib/gis/find_file.c:114 #, c-format msgid "'%s/%s' was found in more mapsets (also found in <%s>)" -msgstr "" -"'%s/%s' trouv? dans plusieurs jeux de cartes (?galement trouv? dans <%s>)" +msgstr "'%s/%s' trouv? dans plusieurs jeux de cartes (?galement trouv? dans <%s>)" #: ../lib/gis/find_file.c:127 #, c-format @@ -5910,12 +5571,8 @@ #: ../lib/gis/gisinit.c:53 ../lib/gis/gisinit.c:87 #, fuzzy, c-format -msgid "" -"Module built against version %s but trying to use version %s. You need to " -"rebuild GRASS GIS or untangle multiple installations." -msgstr "" -"Version de librairie incompatible pour le module. Vous devez recompiler " -"GRASS ou g?rer les versions multiples." +msgid "Module built against version %s but trying to use version %s. You need to rebuild GRASS GIS or untangle multiple installations." +msgstr "Version de librairie incompatible pour le module. Vous devez recompiler GRASS ou g?rer les versions multiples." #: ../lib/gis/gisinit.c:65 #, c-format @@ -5939,37 +5596,27 @@ #: ../lib/gis/timestamp.c:301 #, fuzzy, c-format msgid "Invalid timestamp specified for %s map <%s@%s>" -msgstr "" -"L'?tiquette date&heure (timestamp) sp?cifi?e pour la couche %s %s est " -"invalide dans le jeu de donn?es (mapset) %s" +msgstr "L'?tiquette date&heure (timestamp) sp?cifi?e pour la couche %s %s est invalide dans le jeu de donn?es (mapset) %s" #: ../lib/gis/timestamp.c:331 #, fuzzy, c-format msgid "Unable to open timestamp file for %s map <%s@%s>" -msgstr "" -"Impossible d'ouvrir le fichier d'index de cat?gorie pour la couche " -"vectorielle <%s@%s>" +msgstr "Impossible d'ouvrir le fichier d'index de cat?gorie pour la couche vectorielle <%s@%s>" #: ../lib/gis/timestamp.c:340 #, fuzzy, c-format msgid "Invalid timestamp file for %s map <%s@%s>" -msgstr "" -"Fichier d'?tiquette date&heure (timestamp) invalide pour la couche %s %s " -"dans le jeu de donn?es (mapset) %s" +msgstr "Fichier d'?tiquette date&heure (timestamp) invalide pour la couche %s %s dans le jeu de donn?es (mapset) %s" #: ../lib/gis/timestamp.c:479 #, fuzzy, c-format msgid "Unable to open timestamp file for vector map <%s@%s>" -msgstr "" -"Impossible d'ouvrir le fichier d'index de cat?gorie pour la couche " -"vectorielle <%s@%s>" +msgstr "Impossible d'ouvrir le fichier d'index de cat?gorie pour la couche vectorielle <%s@%s>" #: ../lib/gis/timestamp.c:488 #, fuzzy, c-format msgid "Invalid timestamp file for vector map <%s@%s>" -msgstr "" -"Fichier d'?tiquette date&heure (timestamp) invalide pour la couche %s %s " -"dans le jeu de donn?es (mapset) %s" +msgstr "Fichier d'?tiquette date&heure (timestamp) invalide pour la couche %s %s dans le jeu de donn?es (mapset) %s" #: ../lib/gis/timestamp.c:524 #, fuzzy, c-format @@ -5979,9 +5626,7 @@ #: ../lib/gis/timestamp.c:533 #, fuzzy, c-format msgid "Invalid timestamp specified for vector map <%s@%s>" -msgstr "" -"L'?tiquette date&heure (timestamp) sp?cifi?e pour la couche %s %s est " -"invalide dans le jeu de donn?es (mapset) %s" +msgstr "L'?tiquette date&heure (timestamp) sp?cifi?e pour la couche %s %s est invalide dans le jeu de donn?es (mapset) %s" #: ../lib/gis/error.c:361 msgid "WARNING: " @@ -6155,9 +5800,7 @@ #: ../lib/gis/adj_cellhd.c:74 ../lib/gis/adj_cellhd.c:239 #, c-format msgid "Fixing subtle input data rounding error of north boundary (%g>%g)" -msgstr "" -"Ajustement d'une l?g?re erreur d'arrondi sur la valeur de la limite Nord (%g>" -"%g)" +msgstr "Ajustement d'une l?g?re erreur d'arrondi sur la valeur de la limite Nord (%g>%g)" #: ../lib/gis/adj_cellhd.c:79 ../lib/gis/adj_cellhd.c:244 msgid "Illegal latitude for North" @@ -6166,9 +5809,7 @@ #: ../lib/gis/adj_cellhd.c:85 ../lib/gis/adj_cellhd.c:250 #, c-format msgid "Fixing subtle input data rounding error of south boundary (%g>%g)" -msgstr "" -"justement d'une l?g?re erreur d'arrondi sur la valeur de la limite Sud (%g>" -"%g)" +msgstr "justement d'une l?g?re erreur d'arrondi sur la valeur de la limite Sud (%g>%g)" #: ../lib/gis/adj_cellhd.c:90 ../lib/gis/adj_cellhd.c:255 msgid "Illegal latitude for South" @@ -6177,16 +5818,12 @@ #: ../lib/gis/adj_cellhd.c:102 ../lib/gis/adj_cellhd.c:267 #, c-format msgid "Fixing subtle input data rounding error of west boundary (%g>%g)" -msgstr "" -"Erreur dans les m?thodes de fixation des donn?es d'entr?e ? la fronti?re " -"Ouest (%g>%g)" +msgstr "Erreur dans les m?thodes de fixation des donn?es d'entr?e ? la fronti?re Ouest (%g>%g)" #: ../lib/gis/adj_cellhd.c:113 ../lib/gis/adj_cellhd.c:278 #, c-format msgid "Fixing subtle input data rounding error of east boundary (%g>%g)" -msgstr "" -"Erreur dans les m?thodes de fixation des donn?es d'entr?e ? la fronti?re Est " -"(%g>%g)" +msgstr "Erreur dans les m?thodes de fixation des donn?es d'entr?e ? la fronti?re Est (%g>%g)" #: ../lib/gis/adj_cellhd.c:126 ../lib/gis/adj_cellhd.c:291 msgid "North must be north of South" @@ -6532,11 +6169,8 @@ msgstr "Nom de la base de donn?es" #: ../lib/gis/parser_standard_options.c:192 -msgid "" -"Do not use this option if schemas are not supported by driver/database server" -msgstr "" -"Ne pas utiliser cette option si les sch?mas ne sont pas support?s par le " -"pilote / serveur de base de donn?es" +msgid "Do not use this option if schemas are not supported by driver/database server" +msgstr "Ne pas utiliser cette option si les sch?mas ne sont pas support?s par le pilote / serveur de base de donn?es" #: ../lib/gis/parser_standard_options.c:201 msgid "Name of attribute column" @@ -6670,12 +6304,8 @@ #: ../lib/gis/parser_standard_options.c:418 #, fuzzy -msgid "" -"Number of digits used as mantissa in the internal map storage, 0 -23 for " -"float, 0 - 52 for double, max or default" -msgstr "" -"Nombre de d?cimales ? utiliser comme 'mantissa' dans le stockage interne des " -"cartes, 0-23 pour flottant, 0-52 pour double, max ou d?faut" +msgid "Number of digits used as mantissa in the internal map storage, 0 -23 for float, 0 - 52 for double, max or default" +msgstr "Nombre de d?cimales ? utiliser comme 'mantissa' dans le stockage interne des cartes, 0-23 pour flottant, 0-52 pour double, max ou d?faut" #: ../lib/gis/parser_standard_options.c:428 #, fuzzy @@ -6684,9 +6314,7 @@ #: ../lib/gis/parser_standard_options.c:438 #, fuzzy -msgid "" -"The dimensions of the tiles used in the output raster3d map (XxYxZ or " -"default: 16x16x8)" +msgid "The dimensions of the tiles used in the output raster3d map (XxYxZ or default: 16x16x8)" msgstr "Les dimensions des dalles utilis?es dans le fichier de sortie" #: ../lib/gis/parser_standard_options.c:448 @@ -6733,13 +6361,8 @@ #: ../lib/gis/parser_standard_options.c:512 #, fuzzy -msgid "" -"Vector features can have category values in different layers. This number " -"determines which layer to use. When used with direct OGR access this is the " -"layer name." -msgstr "" -"Une seule carte vectorielle peut ?tre connect?e ? plusieurs tables de base " -"de donn?es. Ce nombre d?termine la table ? utiliser." +msgid "Vector features can have category values in different layers. This number determines which layer to use. When used with direct OGR access this is the layer name." +msgstr "Une seule carte vectorielle peut ?tre connect?e ? plusieurs tables de base de donn?es. Ce nombre d?termine la table ? utiliser." #: ../lib/gis/parser_standard_options.c:522 #, fuzzy @@ -6748,13 +6371,8 @@ #: ../lib/gis/parser_standard_options.c:524 #, fuzzy -msgid "" -"A single vector map can be connected to multiple database tables. This " -"number determines which table to use. When used with direct OGR access this " -"is the layer name." -msgstr "" -"Une seule carte vectorielle peut ?tre connect?e ? plusieurs tables de base " -"de donn?es. Ce nombre d?termine la table ? utiliser." +msgid "A single vector map can be connected to multiple database tables. This number determines which table to use. When used with direct OGR access this is the layer name." +msgstr "Une seule carte vectorielle peut ?tre connect?e ? plusieurs tables de base de donn?es. Ce nombre d?termine la table ? utiliser." #: ../lib/gis/parser_standard_options.c:533 msgid "Category value" @@ -6952,9 +6570,7 @@ #: ../lib/gis/parser_standard_options.c:872 #, fuzzy -msgid "" -"WHERE conditions of SQL statement without 'where' keyword used in the " -"temporal GIS framework" +msgid "WHERE conditions of SQL statement without 'where' keyword used in the temporal GIS framework" msgstr "WHERE conditions d'une clause SQL sans le mot-clef 'where'" #: ../lib/gis/parser_standard_options.c:873 @@ -7107,15 +6723,11 @@ #: ../lib/gis/parser.c:519 msgid "Use either --quiet or --verbose flag, not both. Assuming --verbose." -msgstr "" -"Utiliser le drapeau soit --quiet soit --verbose, pas les deux ; --verbose " -"suppos?." +msgstr "Utiliser le drapeau soit --quiet soit --verbose, pas les deux ; --verbose suppos?." #: ../lib/gis/parser.c:533 msgid "Use either --quiet or --verbose flag, not both. Assuming --quiet." -msgstr "" -"Utiliser le drapeau soit --quiet soit --verbose, pas les deux ; --quiet " -"suppos?." +msgstr "Utiliser le drapeau soit --quiet soit --verbose, pas les deux ; --quiet suppos?." #: ../lib/gis/parser.c:564 #, fuzzy, c-format @@ -7149,9 +6761,7 @@ #: ../lib/gis/parser.c:1020 #, c-format msgid "Please update the usage of <%s>: option <%s> has been renamed to <%s>" -msgstr "" -"Merci de mettre ? jour l'utilisation de <%s> : l'option <%s> a ?t? renomm?e " -"en <%s>" +msgstr "Merci de mettre ? jour l'utilisation de <%s> : l'option <%s> a ?t? renomm?e en <%s>" #: ../lib/gis/parser.c:1033 #, fuzzy, c-format @@ -7509,8 +7119,7 @@ #: ../lib/rst/interp_float/vinput2d.c:249 #, c-format msgid "There are points outside specified 2D/3D region - %d points ignored" -msgstr "" -"il y a des points en-dehors de la r?gion 2D/3D sp?cifi?e - %d points ignor?s" +msgstr "il y a des points en-dehors de la r?gion 2D/3D sp?cifi?e - %d points ignor?s" #: ../lib/rst/interp_float/vinput2d.c:252 #, c-format @@ -7519,12 +7128,8 @@ #: ../lib/rst/interp_float/vinput2d.c:256 #, c-format -msgid "" -"%d points given for interpolation (after thinning) is less than given NPMIN=" -"%d" -msgstr "" -"%d points donn?s pour l'interpolation (apr?s squelettisation) est moins que " -"le NPMIN=% donn?d" +msgid "%d points given for interpolation (after thinning) is less than given NPMIN=%d" +msgstr "%d points donn?s pour l'interpolation (apr?s squelettisation) est moins que le NPMIN=% donn?d" #: ../lib/rst/interp_float/vinput2d.c:261 msgid "Zero points in the given region" @@ -7532,22 +7137,13 @@ #: ../lib/rst/interp_float/vinput2d.c:266 #, c-format -msgid "" -"Segmentation parameters set to invalid values: npmin= %d, segmax= %d for " -"smooth connection of segments, npmin > segmax (see manual)" -msgstr "" -"Param?tres de segmentation invalides: npmin= %d, segmax= %d pour une bonne " -"connexion des segments, npmin > segmax (voir le manuel)" +msgid "Segmentation parameters set to invalid values: npmin= %d, segmax= %d for smooth connection of segments, npmin > segmax (see manual)" +msgstr "Param?tres de segmentation invalides: npmin= %d, segmax= %d pour une bonne connexion des segments, npmin > segmax (voir le manuel)" #: ../lib/rst/interp_float/vinput2d.c:272 #, c-format -msgid "" -"There are less than %d points for interpolation. No segmentation is " -"necessary, to run the program faster set segmax=%d (see manual)" -msgstr "" -"Il y a moins de %d poitns pour l'interpolation. Aucune segmentation n'est " -"n?cessaire, pour faire tourner le programme plus vite, param?trez segmax=%d " -"(voir manuel)" +msgid "There are less than %d points for interpolation. No segmentation is necessary, to run the program faster set segmax=%d (see manual)" +msgstr "Il y a moins de %d poitns pour l'interpolation. Aucune segmentation n'est n?cessaire, pour faire tourner le programme plus vite, param?trez segmax=%d (voir manuel)" #: ../lib/rst/interp_float/vinput2d.c:276 #, c-format @@ -7585,12 +7181,8 @@ msgstr "Impossible de r??crire la ligne" #: ../lib/rst/interp_float/segmen2d.c:118 -msgid "" -"Taking too long to find points for interpolation - please change the region " -"to area where your points are. Continuing calculations..." -msgstr "" -"Recherche de points pour l'interpolation trop longue -- merci de changer la " -"r?gion pour la zone o? se trouvent vos points. Poursuite des calculs ..." +msgid "Taking too long to find points for interpolation - please change the region to area where your points are. Continuing calculations..." +msgstr "Recherche de points pour l'interpolation trop longue -- merci de changer la r?gion pour la zone o? se trouvent vos points. Poursuite des calculs ..." #: ../lib/rst/interp_float/input2d.c:48 #, c-format @@ -7613,12 +7205,8 @@ #: ../lib/rst/interp_float/interp2d.c:214 #, c-format -msgid "" -"Overshoot - increase in tension suggested. Overshoot occures at (%d,%d) " -"cell. Z-value %f, zmin %f, zmax %f." -msgstr "" -"D?passement - augmentation de la tension sugg?r?e. Le d?passement se produit " -"? la cellule (%d,%d), valeur Z %f, zmin %f, zmax %f." +msgid "Overshoot - increase in tension suggested. Overshoot occures at (%d,%d) cell. Z-value %f, zmin %f, zmax %f." +msgstr "D?passement - augmentation de la tension sugg?r?e. Le d?passement se produit ? la cellule (%d,%d), valeur Z %f, zmin %f, zmax %f." #: ../lib/rst/interp_float/resout2d.c:77 msgid "Temporarily changing the region to desired resolution..." @@ -7636,9 +7224,7 @@ #: ../lib/rst/interp_float/resout2d.c:264 msgid "No color table for input raster map -- will not create color table" -msgstr "" -"Pas de table de couleur pour la carte raster en entr?e -- pas de cr?ation de " -"table de couleur" +msgstr "Pas de table de couleur pour la carte raster en entr?e -- pas de cr?ation de table de couleur" #: ../lib/rst/interp_float/resout2d.c:458 msgid "Changing the region back to initial..." @@ -7776,8 +7362,7 @@ #: ../lib/gmath/la.c:788 msgid "Specified matrix column index is outside range" -msgstr "" -"L'index de colonne de la matrice sp?cifi? est en dehors de l'intervalle" +msgstr "L'index de colonne de la matrice sp?cifi? est en dehors de l'intervalle" #: ../lib/gmath/la.c:793 ../lib/gmath/la.c:834 ../lib/gmath/la.c:1198 #: ../lib/gmath/la.c:1250 ../lib/gmath/la.c:1325 @@ -7875,13 +7460,12 @@ msgstr "" #: ../lib/gmath/test/bench_blas2.c:35 -#, fuzzy msgid "" "\n" "++ Running blas level 2 benchmark ++" msgstr "" "\n" -"++ ?x?cution du solveur des tests unitaires ++" +"++ Ex?cution des tests unitaires blas niveau 2 ++" #: ../lib/gmath/test/test_main.c:61 msgid "The size of the matrices and vectors for benchmarking" @@ -7919,13 +7503,12 @@ "-- ?chec des tests unitaires des outils math?matiques --" #: ../lib/gmath/test/test_ccmath_wrapper.c:44 -#, fuzzy msgid "" "\n" "-- ccmath wrapper unit tests finished successfully --" msgstr "" "\n" -"-- tests unitaires des outils math?matiques termin?s avec succ?s --" +"-- tests unitaires des outils math?matiques termin?s avec succ?s --" #: ../lib/gmath/test/test_solvers.c:37 msgid "" @@ -7949,16 +7532,15 @@ "-- Solver unit tests finished successfully --" msgstr "" "\n" -"-- Tests unitaires du solveur termin?s avec succ?s --" +"-- Tests unitaires du solveur termin?s avec succ?s --" #: ../lib/gmath/test/bench_blas3.c:34 -#, fuzzy msgid "" "\n" "++ Running blas level 3 benchmark ++" msgstr "" "\n" -"++ ?x?cution du solveur des tests unitaires ++" +"++ Ex?cution des tests unitaires blas niveau 3 ++" #: ../lib/gmath/test/bench_solver_krylov.c:34 #, fuzzy @@ -7967,7 +7549,7 @@ "++ Running krylov solver benchmark ++" msgstr "" "\n" -"++ ?x?cution du solveur des tests unitaires ++" +"++ Ex?cution du solveur des tests unitaires ++" #: ../lib/gmath/test/test_blas3.c:38 #, fuzzy @@ -7976,7 +7558,7 @@ "++ Running blas level 3 unit tests ++" msgstr "" "\n" -"++ ?x?cution du solveur des tests unitaires ++" +"++ Ex?cution du solveur des tests unitaires ++" #: ../lib/gmath/test/test_blas3.c:44 #, fuzzy @@ -7988,13 +7570,12 @@ "-- ?chec du solveur des tests unitaires --" #: ../lib/gmath/test/test_blas3.c:46 -#, fuzzy msgid "" "\n" "-- blas level 3 unit tests finished successfully --" msgstr "" "\n" -"-- Tests unitaires du solveur termin?s avec succ?s --" +"-- Tests unitaires du solveur termin?s avec succ?s --" #: ../lib/gmath/test/test_blas1.c:40 #, fuzzy @@ -8003,7 +7584,7 @@ "++ Running blas level 1 unit tests ++" msgstr "" "\n" -"++ ?x?cution du solveur des tests unitaires ++" +"++ Ex?cution du solveur des tests unitaires ++" #: ../lib/gmath/test/test_blas1.c:47 #, fuzzy @@ -8015,13 +7596,12 @@ "-- ?chec du solveur des tests unitaires --" #: ../lib/gmath/test/test_blas1.c:49 -#, fuzzy msgid "" "\n" "-- blas level 1 unit tests finished successfully --" msgstr "" "\n" -"-- Tests unitaires du solveur termin?s avec succ?s --" +"-- Tests unitaires du solveur termin?s avec succ?s --" #: ../lib/gmath/test/bench_solver_direct.c:34 #, fuzzy @@ -8030,7 +7610,7 @@ "++ Running direct solver benchmark ++" msgstr "" "\n" -"++ ?x?cution du solveur des tests unitaires ++" +"++ Ex?cution du solveur des tests unitaires ++" #: ../lib/gmath/test/test_matrix_conversion.c:37 #, fuzzy @@ -8051,13 +7631,12 @@ "-- ?chec du solveur des tests unitaires --" #: ../lib/gmath/test/test_matrix_conversion.c:44 -#, fuzzy msgid "" "\n" "-- Matrix conversion unit tests finished successfully --" msgstr "" "\n" -"-- Tests unitaires du solveur termin?s avec succ?s --" +"-- Tests unitaires du solveur termin?s avec succ?s --" #: ../lib/gmath/test/test_blas2.c:38 #, fuzzy @@ -8078,13 +7657,12 @@ "-- ?chec du solveur des tests unitaires --" #: ../lib/gmath/test/test_blas2.c:46 -#, fuzzy msgid "" "\n" "-- blas level 2 unit tests finished successfully --" msgstr "" "\n" -"-- Tests unitaires du solveur termin?s avec succ?s --" +"-- Tests unitaires du solveur termin?s avec succ?s --" #: ../lib/gmath/solvers_krylov.c:262 #, c-format @@ -8126,11 +7704,8 @@ #: ../lib/proj/convert.c:139 #, c-format -msgid "" -"OGR can't parse PROJ.4-style parameter string: %s (OGR Error code was %d)" -msgstr "" -"OGR ne peut pas analyser la cha?ne de param?tre PROJ.4: %s (Le code erreur " -"OGR ?tait %d)" +msgid "OGR can't parse PROJ.4-style parameter string: %s (OGR Error code was %d)" +msgstr "OGR ne peut pas analyser la cha?ne de param?tre PROJ.4: %s (Le code erreur OGR ?tait %d)" #: ../lib/proj/convert.c:146 #, c-format @@ -8139,9 +7714,7 @@ #: ../lib/proj/convert.c:406 msgid "No projection name! Projection parameters likely to be meaningless." -msgstr "" -"Aucun nom de projection ! Projection de param?tres susceptibles d'?tre vide " -"de sens." +msgstr "Aucun nom de projection ! Projection de param?tres susceptibles d'?tre vide de sens." #: ../lib/proj/convert.c:442 #, c-format @@ -8150,21 +7723,13 @@ #: ../lib/proj/convert.c:458 #, c-format -msgid "" -"Datum <%s> apparently recognised by GRASS but no parameters found. You may " -"want to look into this." -msgstr "" -"La date <% s> est apparemment reconnue par GRASS mais aucun param?tre " -"trouv?. Vous devez examiner." +msgid "Datum <%s> apparently recognised by GRASS but no parameters found. You may want to look into this." +msgstr "La date <% s> est apparemment reconnue par GRASS mais aucun param?tre trouv?. Vous devez examiner." #: ../lib/proj/convert.c:462 #, c-format -msgid "" -"Invalid transformation number %d; valid range is 1 to %d. Leaving datum " -"transform parameters unspecified." -msgstr "" -"Num?ro de transformation %d invalide ; la plage valide est de 1 ? %d. " -"Param?tres datum de la transformation laiss?s non sp?cifi?s." +msgid "Invalid transformation number %d; valid range is 1 to %d. Leaving datum transform parameters unspecified." +msgstr "Num?ro de transformation %d invalide ; la plage valide est de 1 ? %d. Param?tres datum de la transformation laiss?s non sp?cifi?s." #: ../lib/proj/get_proj.c:148 #, c-format @@ -8227,13 +7792,11 @@ #: ../lib/proj/ellipse.c:103 msgid "No secondary ellipsoid descriptor (rf, es or b) in file" -msgstr "" -"Pas de descripteur secondaire (rf, es or b) d'ellipso?de dans le fichier" +msgstr "Pas de descripteur secondaire (rf, es or b) d'ellipso?de dans le fichier" #: ../lib/proj/ellipse.c:107 msgid "Invalid ellipsoid descriptors (a, rf, es or b) in file" -msgstr "" -"Descripteurs de l'ellipso?de (a, rf, es ou b) invalides dans le fichier" +msgstr "Descripteurs de l'ellipso?de (a, rf, es ou b) invalides dans le fichier" #: ../lib/proj/ellipse.c:120 msgid "No ellipsoid info given in file" @@ -8252,9 +7815,7 @@ #: ../lib/raster/init.c:61 #, fuzzy msgid "Raster library not initialized. Programmer forgot to call Rast_init()." -msgstr "" -"\aERREUR : Le syst?me n'est pas initialis?. Le d?veloppeur a oubli? " -"d'appeler G_gisinit()\n" +msgstr "\aERREUR : Le syst?me n'est pas initialis?. Le d?veloppeur a oubli? d'appeler G_gisinit()\n" #: ../lib/raster/histogram.c:55 #, c-format @@ -8279,30 +7840,22 @@ #: ../lib/raster/put_row.c:121 #, fuzzy, c-format msgid "Error writing uncompressed FP data for row %d of <%s>: %s" -msgstr "" -"erreur en lisant la couche compress?e [%s] dans le jeu de donn?es [%s], " -"ligne %d" +msgstr "erreur en lisant la couche compress?e [%s] dans le jeu de donn?es [%s], ligne %d" #: ../lib/raster/put_row.c:131 #, fuzzy, c-format msgid "Error writing compressed FP data for row %d of <%s>: %s" -msgstr "" -"erreur en lisant la couche compress?e [%s] dans le jeu de donn?es [%s], " -"ligne %d" +msgstr "erreur en lisant la couche compress?e [%s] dans le jeu de donn?es [%s], ligne %d" #: ../lib/raster/put_row.c:390 ../lib/raster/put_row.c:396 #, fuzzy, c-format msgid "Error writing compressed data for row %d of <%s>" -msgstr "" -"erreur en lisant la couche compress?e [%s] dans le jeu de donn?es [%s], " -"ligne %d" +msgstr "erreur en lisant la couche compress?e [%s] dans le jeu de donn?es [%s], ligne %d" #: ../lib/raster/put_row.c:406 #, fuzzy, c-format msgid "Error writing uncompressed data for row %d of <%s>" -msgstr "" -"erreur en lisant la couche compress?e [%s] dans le jeu de donn?es [%s], " -"ligne %d" +msgstr "erreur en lisant la couche compress?e [%s] dans le jeu de donn?es [%s], ligne %d" #: ../lib/raster/put_row.c:465 #, fuzzy, c-format @@ -8321,9 +7874,7 @@ #: ../lib/raster/put_row.c:515 ../lib/raster/put_row.c:520 #, fuzzy, c-format msgid "Error writing compressed null data for row %d of <%s>" -msgstr "" -"erreur en lisant la couche compress?e [%s] dans le jeu de donn?es [%s], " -"ligne %d" +msgstr "erreur en lisant la couche compress?e [%s] dans le jeu de donn?es [%s], ligne %d" #: ../lib/raster/put_row.c:554 ../lib/raster/put_row.c:557 #, fuzzy, c-format @@ -8358,16 +7909,12 @@ #: ../lib/raster/quant_io.c:135 #, fuzzy, c-format msgid "Quantization file for raster map <%s> is missing" -msgstr "" -"Impossible d'ouvrir le fichier d'index de cat?gorie pour la couche " -"vectorielle <%s@%s>" +msgstr "Impossible d'ouvrir le fichier d'index de cat?gorie pour la couche vectorielle <%s@%s>" #: ../lib/raster/quant_io.c:145 #, fuzzy, c-format msgid "Quantization file for raster map <%s> is empty" -msgstr "" -"Impossible d'ouvrir le fichier d'index de cat?gorie pour la couche " -"vectorielle <%s@%s>" +msgstr "Impossible d'ouvrir le fichier d'index de cat?gorie pour la couche vectorielle <%s@%s>" #: ../lib/raster/reclass.c:168 #, fuzzy, c-format @@ -8377,9 +7924,7 @@ #: ../lib/raster/reclass.c:171 #, fuzzy, c-format msgid "Illegal reclass format in header file for <%s@%s>" -msgstr "" -"Format de reclassification ill?gal dans l'en-t?te de fichier pour [%s dans " -"%s]" +msgstr "Format de reclassification ill?gal dans l'en-t?te de fichier pour [%s dans %s]" #: ../lib/raster/reclass.c:273 msgid "Illegal reclass request" @@ -8400,21 +7945,15 @@ msgstr "Impossible de cr?er le fichier de d?pendances dans [%s dans %s]" #: ../lib/raster/window.c:31 -msgid "" -"Internal error: Rast_get_window() called with split window. Use " -"Rast_get_input_window() or Rast_get_output_window() instead." +msgid "Internal error: Rast_get_window() called with split window. Use Rast_get_input_window() or Rast_get_output_window() instead." msgstr "" #: ../lib/raster/window.c:90 -msgid "" -"Internal error: Rast_window_rows() called with split window. Use " -"Rast_input_window_rows() or Rast_output_window_rows() instead." +msgid "Internal error: Rast_window_rows() called with split window. Use Rast_input_window_rows() or Rast_output_window_rows() instead." msgstr "" #: ../lib/raster/window.c:125 -msgid "" -"Internal error: Rast_window_cols() called with split window. Use " -"Rast_input_window_cols() or Rast_output_window_cols() instead." +msgid "Internal error: Rast_window_cols() called with split window. Use Rast_input_window_cols() or Rast_output_window_cols() instead." msgstr "" #: ../lib/raster/raster_metadata.c:109 @@ -8449,8 +7988,7 @@ #: ../lib/raster/close.c:535 msgid "unable to write f_format file for CELL maps" -msgstr "" -"pas en mesure d'?crire des fichiers f_format pour des couches de cellules" +msgstr "pas en mesure d'?crire des fichiers f_format pour des couches de cellules" #: ../lib/raster/quant_rw.c:88 #, fuzzy, c-format @@ -8465,8 +8003,7 @@ #: ../lib/raster/quant_rw.c:157 #, fuzzy, c-format msgid "Unable to write quant rules: raster map <%s> is integer" -msgstr "" -"Impossible d'?crire les r?gles de quantit? : la couche %s est un entier" +msgstr "Impossible d'?crire les r?gles de quantit? : la couche %s est un entier" #: ../lib/raster/quant_rw.c:166 #, fuzzy, c-format @@ -8516,80 +8053,62 @@ #: ../lib/raster/open.c:191 #, c-format -msgid "" -"Unable to open raster map <%s@%s> since it is a reclass of raster map <%s@" -"%s> which does not exist" -msgstr "" -"Impossible d'ouvrir la carte raster <%s@%s> car il s'agit d'une " -"reclassification de la carte raster <%s@%s> qui n'existe pas" +msgid "Unable to open raster map <%s@%s> since it is a reclass of raster map <%s@%s> which does not exist" +msgstr "Impossible d'ouvrir la carte raster <%s@%s> car il s'agit d'une reclassification de la carte raster <%s@%s> qui n'existe pas" #: ../lib/raster/open.c:196 -#, fuzzy, c-format +#, c-format msgid "Error reading reclass file for raster map <%s>" -msgstr "impossible de lire le fichier de limites pour [%s dans %s]" +msgstr "Erreur de lecture du fichier reclass pour la carte raster <%s>" #: ../lib/raster/open.c:207 -#, fuzzy, c-format +#, c-format msgid "Error reading map type for raster map <%s>" -msgstr "Erreur ? l'ouverture de la couche matricielle %s" +msgstr "Erreur de lecture du type de la carte raster <%s>" #: ../lib/raster/open.c:215 #, c-format msgid "Raster map <%s@%s>: format field in header file invalid" -msgstr "" -"Carte raster <%s@%s>: format de champ invalide dans le fichier d'en-t?te" +msgstr "Carte raster <%s@%s>: format de champ invalide dans le fichier d'en-t?te" #: ../lib/raster/open.c:220 -#, fuzzy, c-format -msgid "" -"Raster map <%s> is in different projection than current region. Found <%s>, " -"should be <%s>." -msgstr "" -"[%s] dans le jeu de donn?es (mapset) [%s] - est dans une projection " -"diff?rente par rapport ? la r?gion courante :\n" -" la couche [%s] dans: <%s>, devrait ?tre <%s> " +#, c-format +msgid "Raster map <%s> is in different projection than current region. Found <%s>, should be <%s>." +msgstr "La carte raster <%s> est dans une projection diff?rente de la r?gion courante. Trouv? <%s>, devrait ?tre <%s>." #: ../lib/raster/open.c:227 -#, fuzzy, c-format +#, c-format msgid "Raster map <%s> is in different zone (%d) than current region (%d)" -msgstr "" -"[%s] dans le jeu de donn?es (mapset) [%s] - est dans une zone diff?rente " -"[%d] de celle de la r?gion courante [%d]" +msgstr "La carte raster <%s> est dans une zone diff?rente (%d) de la r?gion courante (%d)" #: ../lib/raster/open.c:232 -#, fuzzy, c-format +#, c-format msgid "Raster map <%s>: bytes per cell (%d) too large" -msgstr "[%s] dans [%s] - octets par cellule (%d) trop grand" +msgstr "Carte raster <%s> : octets par cellule (%d) trop grand" #: ../lib/raster/open.c:257 #, c-format -msgid "" -"Raster map <%s@%s> is a GDAL link but GRASS is compiled without GDAL support" -msgstr "" -"La carte raster <%s@%s> est un lien GDAL mais GRASS est compil? sans le " -"support de GDAL" +msgid "Raster map <%s@%s> is a GDAL link but GRASS is compiled without GDAL support" +msgstr "La carte raster <%s@%s> est un lien GDAL mais GRASS est compil? sans le support de GDAL" #: ../lib/raster/open.c:265 -#, fuzzy, c-format +#, c-format msgid "Unable to open %s file for raster map <%s@%s>" -msgstr "" -"Impossible d'ouvrir le fichier d'index de cat?gorie pour la couche " -"vectorielle <%s@%s>" +msgstr "Impossible d'ouvrir le fichier %s pour la carte raster <%s@%s>" #: ../lib/raster/open.c:302 -#, fuzzy, c-format +#, c-format msgid "Error reading format for <%s@%s>" -msgstr "erreur en lisant la couche [%s] dans le jeu de donn?es [%s], ligne %d" +msgstr "Erreur de lecture du format pour <%s@%s>" #: ../lib/raster/open.c:507 -#, fuzzy msgid "Unable to create GDAL link" -msgstr "Impossible d'ouvrir le fichier %s" +msgstr "Impossible de cr?er un lien GDAL" #: ../lib/raster/open.c:579 ../lib/raster/gdal.c:475 -#, fuzzy, c-format +#, c-format msgid "Invalid map type <%d>" -msgstr "Format invalide\n" +msgstr "Type de carte invalide <%d>" #: ../lib/raster/open.c:584 ../lib/raster/open.c:729 #, c-format @@ -8602,19 +8121,18 @@ msgstr "<%s> est un nom de fichier ill?gal" #: ../lib/raster/open.c:605 ../lib/raster/open.c:677 ../lib/raster/open.c:751 -#, fuzzy, c-format +#, c-format msgid "No temp files available: %s" -msgstr "aucun fichier %s disponible\n" +msgstr "Pas de fichier temporaire disponible : %s" #: ../lib/raster/open.c:725 -#, fuzzy, c-format +#, c-format msgid "Raster map <%s> does not exist in the current mapset (%s)" -msgstr "La carte raster <%s> n'est pas dans le jeux de carte courant (%s)" +msgstr "La carte raster <%s> n'existe pas dans le jeux de cartes courant (%s)" #: ../lib/raster/open.c:790 msgid "Rast_set_fp_type(): can only be called with FCELL_TYPE or DCELL_TYPE" -msgstr "" -"Rast_set_fp_type() : ne peut ?tre appel? qu'avec FCELL_TYPE ou DCELL_TYPE" +msgstr "Rast_set_fp_type() : ne peut ?tre appel? qu'avec FCELL_TYPE ou DCELL_TYPE" #: ../lib/raster/open.c:848 #, c-format @@ -8632,9 +8150,9 @@ msgstr "type invalide: champ '%s' dans le fichier '%s'" #: ../lib/raster/open.c:925 -#, fuzzy, c-format +#, c-format msgid "Missing type: field in file '%s'" -msgstr "type invalide : champ %s dans le fichier %s" +msgstr "Type manquant : champ dans le fichier '%s'" #: ../lib/raster/open.c:930 #, c-format @@ -8642,11 +8160,8 @@ msgstr "La carte raster <%s> n'est pas xdr: byte_order: %s" #: ../lib/raster/open.c:999 -msgid "" -"Rast_set_quant_rules() can be called only for raster maps opened for reading" -msgstr "" -"Rast_set_quant_rules() ne peut ?tre appel? que sur une carte raster ouverte " -"en lecture" +msgid "Rast_set_quant_rules() can be called only for raster maps opened for reading" +msgstr "Rast_set_quant_rules() ne peut ?tre appel? que sur une carte raster ouverte en lecture" #: ../lib/raster/cats.c:109 #, fuzzy, c-format @@ -8661,21 +8176,17 @@ #: ../lib/raster/cats.c:145 #, fuzzy, c-format msgid "Category support for vector map <%s@%s> missing" -msgstr "" -"support de la cat?gorie pour le fichier vecteur [%s] dans le jeu de donn?es " -"(mapset) [%s] %s" +msgstr "support de la cat?gorie pour le fichier vecteur [%s] dans le jeu de donn?es (mapset) [%s] %s" #: ../lib/raster/cats.c:149 #, fuzzy, c-format msgid "Category support for vector map <%s@%s> invalid" -msgstr "" -"support de la cat?gorie pour le fichier vecteur [%s] dans le jeu de donn?es " -"(mapset) [%s] %s" +msgstr "support de la cat?gorie pour le fichier vecteur [%s] dans le jeu de donn?es (mapset) [%s] %s" #: ../lib/raster/cats.c:968 -#, fuzzy, c-format +#, c-format msgid "Unable to open %s file for map <%s>" -msgstr "Impossible d'ouvrir le fichier %s" +msgstr "Impossible d'ouvrir le fichier %s pour la carte <%s>" #: ../lib/raster/alloc_cell.c:151 #, c-format @@ -8690,49 +8201,38 @@ #: ../lib/raster/get_row.c:36 ../lib/raster/get_row.c:882 #, c-format msgid "Reading raster map <%s@%s> request for row %d is outside region" -msgstr "" -"La lecture de la carte raster <%s@%s> demande la ligne %d en dehors de la " -"r?gion" +msgstr "La lecture de la carte raster <%s@%s> demande la ligne %d en dehors de la r?gion" #: ../lib/raster/get_row.c:95 ../lib/raster/get_row.c:101 #: ../lib/raster/get_row.c:135 ../lib/raster/get_row.c:142 #: ../lib/raster/get_row.c:177 ../lib/raster/get_row.c:181 -#, fuzzy, c-format +#, c-format msgid "Error reading raster data for row %d of <%s>" -msgstr "" -"erreur en lisant la couche compress?e [%s] dans le jeu de donn?es [%s], " -"ligne %d" +msgstr "Erreur de lecture des donn?es raster ? la ligne %d de <%s>" #: ../lib/raster/get_row.c:217 -#, fuzzy, c-format +#, c-format msgid "Error reading raster data via GDAL for row %d of <%s>" -msgstr "Erreur lors de l'?criture du fichier d'index de cat?gorie <%s>." +msgstr "Erreur de lecture des donn?es raster avec GDAL ? la ligne %d de <%s>" #: ../lib/raster/get_row.c:817 ../lib/raster/get_row.c:822 #: ../lib/raster/get_row.c:830 -#, fuzzy, c-format +#, c-format msgid "Error reading null data for row %d of <%s>" -msgstr "" -"erreur en lisant la couche compress?e [%s] dans le jeu de donn?es [%s], " -"ligne %d" +msgstr "Erreur de lecture de donn?es nulles ? la ligne %d de <%s>" #: ../lib/raster/get_row.c:866 ../lib/raster/get_row.c:869 -#, fuzzy, c-format +#, c-format msgid "Error reading null row %d for <%s>" -msgstr "Erreur de lecture de la ligne nulle %d" +msgstr "Erreur de lecture de la ligne nulle %d de <%s>" #: ../lib/raster/set_window.c:48 msgid "Rast_set_window() called while window split" msgstr "" #: ../lib/raster/set_window.c:131 -#, fuzzy -msgid "" -"Rast_set_read_window(): projection/zone differs from that of currently open " -"raster maps" -msgstr "" -"G_set_window() : projection/zone diff?rent de ceux pr?sents dans le fichier " -"matriciel actuellement ouvert" +msgid "Rast_set_read_window(): projection/zone differs from that of currently open raster maps" +msgstr "Rast_set_read_window() : la projection/zone est diff?rente des cartes raster actuellement ouvertes" #: ../lib/raster/set_window.c:158 #, c-format @@ -8765,17 +8265,12 @@ #: ../lib/raster/put_title.c:67 #, c-format msgid "can't write category information for [%s] in [%s]" -msgstr "" -"impossible d'?crire les informations de la cat?gorie pour [%s] dans [%s]" +msgstr "impossible d'?crire les informations de la cat?gorie pour [%s] dans [%s]" #: ../lib/raster/get_cellhd.c:66 -#, fuzzy, c-format -msgid "" -"Unable to read header file for raster map <%s@%s>. It is a reclass of raster " -"map <%s@%s> %s" -msgstr "" -"impossible d'ouvrir [%s] dans [%s] puisqu'il s'agit d'une reclassification " -"de [%s] dans [%s] qui n'existe pas" +#, c-format +msgid "Unable to read header file for raster map <%s@%s>. It is a reclass of raster map <%s@%s> %s" +msgstr "Impossible de lire le fichier header de la carte raster <%s@%s>. II s'agit d'une reclassification de <%s@%s> %s" #: ../lib/raster/get_cellhd.c:70 msgid "which is missing." @@ -8799,32 +8294,27 @@ msgstr "?tiquette \"no data\" trouv?e, r?gl? ? z?ro" #: ../lib/raster/color_read.c:103 -#, fuzzy msgid "missing" -msgstr "qui est manquant" +msgstr "manquant" #: ../lib/raster/color_read.c:106 -#, fuzzy msgid "invalid" -msgstr "" -"est invalide\n" -"%s" +msgstr "invalide" #: ../lib/raster/color_read.c:112 -#, fuzzy, c-format +#, c-format msgid "Color support for <%s@%s> %s" -msgstr "" -"support de la couleur pour [%s] dans le jeu de donn?es (mapset) [%s] %s" +msgstr "support de la couleur pour <%s@%s> %s" #: ../lib/raster/history.c:115 ../lib/raster/history.c:123 -#, fuzzy, c-format +#, c-format msgid "Unable to get history information for <%s@%s>" -msgstr "impossible d'?crire l'historique pour [%s]" +msgstr "impossible de charger l'historique pour <%s@%s>" #: ../lib/raster/history.c:162 -#, fuzzy, c-format +#, c-format msgid "Unable to write history information for <%s>" -msgstr "impossible d'?crire l'historique pour [%s]" +msgstr "impossible d'?crire l'historique pour <%s>" #: ../lib/raster/history.c:235 #, c-format @@ -8879,38 +8369,32 @@ msgstr "Impossible de charger la librairie GDAL" #: ../lib/raster/gdal.c:371 -#, fuzzy msgid "Unable to open GDAL file" -msgstr "Impossible d'ouvrir le fichier %s" +msgstr "Impossible d'ouvrir le fichier GDAL" #: ../lib/raster/gdal.c:481 -#, fuzzy, c-format +#, c-format msgid "Unable to get <%s> driver" -msgstr "Impossible d'ouvrir la base de donn?es <%s> avec le driver <%s>" +msgstr "Impossible de charger le pilote <%s>" #: ../lib/raster/gdal.c:490 -#, fuzzy, c-format +#, c-format msgid "Unable to create <%s> dataset using <%s> driver" -msgstr "Impossible d'ouvrir la base de donn?es <%s> avec le driver <%s>" +msgstr "Impossible de cr?er le jeu de donn?es <%s> avec le pilote <%s>" #: ../lib/raster/gdal.c:498 #, c-format -msgid "" -"Driver <%s> does not support direct writing. Using MEM driver for " -"intermediate dataset." -msgstr "" -"Le pilote <%s> ne g?re pas l'?criture directe. Utiliser le pilote MEM pour " -"les donn?es interm?diaires." +msgid "Driver <%s> does not support direct writing. Using MEM driver for intermediate dataset." +msgstr "Le pilote <%s> ne g?re pas l'?criture directe. Utiliser le pilote MEM pour les donn?es interm?diaires." #: ../lib/raster/gdal.c:504 -#, fuzzy msgid "Unable to get in-memory raster driver" -msgstr "Impossible d'?crire la ligne matricielle %i" +msgstr "Impossible de charger le pilote raster en-m?moire" #: ../lib/raster/gdal.c:511 #, fuzzy, c-format msgid "Unable to create <%s> dataset using memory driver" -msgstr "Impossible d'ouvrir la base de donn?es <%s> avec le driver <%s>" +msgstr "Impossible de cr?er le jeu de donn?es <%s> avec le pilote m?moire" #: ../lib/raster/gdal.c:515 #, c-format @@ -8918,29 +8402,27 @@ msgstr "Le pilote <%s> ne g?re pas la cr?ation de raster" #: ../lib/raster/gdal.c:531 -#, fuzzy msgid "Unable to set geo transform" -msgstr "Impossible de deviner le format site!" +msgstr "Impossible de d?finir la transformation g?ographique" #: ../lib/raster/gdal.c:535 -#, fuzzy msgid "Unable to set projection" -msgstr "Allocation m?moire impossible\n" +msgstr "Impossible de d?finir la projection" #: ../lib/raster/gdal.c:539 -#, fuzzy, c-format +#, c-format msgid "Unable to create cell_misc/%s/gdal file" -msgstr "Impossible de lire le fichier d'en-t?te" +msgstr "Impossible de cr?er le fichier cell_misc/%s/gdal" #: ../lib/raster/gdal.c:555 -#, fuzzy, c-format +#, c-format msgid "Error writing cell_misc/%s/gdal file" -msgstr "Erreur lors de l'?criture du fichier d'index spatial." +msgstr "Erreur d'?criture du fichier cell_misc/%s/gdal" #: ../lib/raster/gdal.c:603 -#, fuzzy, c-format +#, c-format msgid "Unable to create output file <%s> using driver <%s>" -msgstr "Impossible d'ouvrir la base de donn?es <%s> avec le driver <%s>" +msgstr "Impossible de cr?er le fichier de sortie <%s> avec le pilote <%s>" #: ../lib/raster/mask_info.c:43 #, c-format @@ -8956,31 +8438,29 @@ msgstr "inconnu" #: ../lib/display/icon.c:80 -#, fuzzy, c-format +#, c-format msgid "Unsupported icon %d" -msgstr "Type(s) d'entit?(s)" +msgstr "Ic?ne non support?e %d" #: ../lib/display/r_raster.c:98 -#, fuzzy, c-format +#, c-format msgid "Both %s and %s are defined. %s will be ignored." -msgstr "les param?tres 'where' et 'cats' ont ?t? fournis, cat sera ignor?" +msgstr "%s et %s sont tous les deux d?finis. %s sera ignor?." #: ../lib/display/r_raster.c:131 #, c-format -msgid "" -"Neither %s (managed by d.mon command) nor %s (used for direct rendering) " -"defined" +msgid "Neither %s (managed by d.mon command) nor %s (used for direct rendering) defined" msgstr "" #: ../lib/display/r_raster.c:150 -#, fuzzy, c-format +#, c-format msgid "Unknown display driver <%s>" -msgstr "Impossible d'ouvrir le fichier statistique <%s>" +msgstr "Pilote graphique <%s> inconnu" #: ../lib/display/r_raster.c:151 -#, fuzzy, c-format +#, c-format msgid "Using display driver <%s>..." -msgstr "Impossible d'ouvrir le fichier statistique <%s>" +msgstr "Utilisation du pilote graphique <%s> ..." #: ../lib/display/tran_colr.c:107 ../lib/display/tran_colr.c:109 #, c-format @@ -9037,7 +8517,7 @@ #: ../lib/nviz/render.c:112 #, fuzzy msgid "Unable to get visual info" -msgstr "Impossible d'ouvrir %s" +msgstr "Impossible d'obtenir l'information visuelle" #: ../lib/nviz/render.c:119 msgid "Unable to create rendering context" @@ -9050,31 +8530,25 @@ #: ../lib/init/lock.c:42 msgid "Concurrent mapset locking is not supported on Windows" -msgstr "" -"Le verrouillage concurrent de jeux de cartes n'est pas pris en charge dans " -"Windows" +msgstr "Le verrouillage concurrent de jeux de cartes n'est pas pris en charge dans Windows" #: ../lib/init/lock.c:60 -#, fuzzy, c-format +#, c-format msgid "Unable to write lockfile %s (%s)" -msgstr "Impossible d'ouvrir le fichier statistique <%s>" +msgstr "Impossible d'?crire le fichier de verrou %s (%s)" #: ../lib/init/grass.py:115 -#, fuzzy msgid "WARNING" -msgstr "ATTENTION : " +msgstr "ATTENTION" #: ../lib/init/grass.py:179 -#, fuzzy msgid "Exiting..." -msgstr "R?glage des co?ts du noeud..." +msgstr "Sortie ..." #: ../lib/init/grass.py:323 -#, fuzzy msgid "Usage" msgstr "" -"\n" -"Utilisation :\n" +"Utilisation\n" " " #: ../lib/init/grass.py:325 @@ -9091,25 +8565,19 @@ #: ../lib/init/grass.py:328 msgid "exit after creation of location or mapset. Only with -c flag" -msgstr "" -"quitter apr?s la cr?ation du secteur ou du jeu de cartes. Uniquement avec " -"l'argument -c" +msgstr "quitter apr?s la cr?ation du secteur ou du jeu de cartes. Uniquement avec l'argument -c" #: ../lib/init/grass.py:329 -msgid "" -"force removal of .gislock if exists (use with care!). Only with -text flag" -msgstr "" -"force la suppression de .gislock si il existe (utiliser avec pr?causion). " -"Uniquement avec l'argument -text" +msgid "force removal of .gislock if exists (use with care!). Only with -text flag" +msgstr "force la suppression de .gislock si il existe (utiliser avec pr?causion). Uniquement avec l'argument -text" #: ../lib/init/grass.py:330 msgid "use text based interface (skip welcome screen)" msgstr "utiliser l'interface texte (sauter l'?cran de bienvenue)" #: ../lib/init/grass.py:331 ../lib/init/grass.py:333 ../lib/init/grass.py:335 -#, fuzzy msgid "and set as default" -msgstr "pour accepter le choix par d?faut" +msgstr "et d?finir par d?faut" #: ../lib/init/grass.py:332 msgid "use text based interface (show welcome screen)" @@ -9136,21 +8604,16 @@ msgstr "" #: ../lib/init/grass.py:341 -#, fuzzy msgid "initial GRASS Location" -msgstr "" -"\n" -"projection invalide\n" +msgstr "Secteur GRASS initla" #: ../lib/init/grass.py:342 -msgid "" -"directory containing Mapsets with one common coordinate system (projection)" +msgid "directory containing Mapsets with one common coordinate system (projection)" msgstr "" #: ../lib/init/grass.py:343 -#, fuzzy msgid "initial GRASS Mapset" -msgstr "jeu de cartes initial" +msgstr "Jeu de cartes GRASS initial" #: ../lib/init/grass.py:344 msgid "fully qualified initial Mapset directory" @@ -9170,18 +8633,13 @@ #: ../lib/init/grass.py:348 msgid "set additional path(s) to local GRASS modules or user scripts" -msgstr "" -"d?finir des chemins suppl?mentaires pour les modules GRASS locaux ou les " -"scripts utilisateurs" +msgstr "d?finir des chemins suppl?mentaires pour les modules GRASS locaux ou les scripts utilisateurs" #: ../lib/init/grass.py:349 msgid "set additional GISBASE for locally installed GRASS Addons" -msgstr "" -"d?finir un GISBASE suppl?mentaire pour les extentions GRASS install?es " -"localement" +msgstr "d?finir un GISBASE suppl?mentaire pour les extentions GRASS install?es localement" #: ../lib/init/grass.py:350 -#, fuzzy msgid "shell script to be processed as batch job" msgstr "script shell ? ex?cuter par lot" @@ -9210,10 +8668,9 @@ msgstr "" #: ../lib/init/grass.py:423 -#, fuzzy, python-format -msgid "" -"Unable to create temporary directory ! Exiting." -msgstr "Allocation m?moire impossible\n" +#, python-format +msgid "Unable to create temporary directory ! Exiting." +msgstr "Impossible de cr?er le dossier temporaire ! Sortie." #: ../lib/init/grass.py:476 #, python-brace-format @@ -9221,16 +8678,15 @@ msgstr "" #: ../lib/init/grass.py:530 -#, fuzzy, python-format +#, python-format msgid "GUI <%s> not supported in this version" -msgstr "Le format demand? n'est pas compatible avec cette version" +msgstr "Interface <%s> non support?e par cette version" #: ../lib/init/grass.py:689 msgid "Searched for a web browser, but none found" msgstr "Aucun navigateur web trouv?" #: ../lib/init/grass.py:727 -#, fuzzy msgid "" "The python command does not work as expected!\n" "Please check your GRASS_PYTHON environment variable.\n" @@ -9240,7 +8696,7 @@ "Hit RETURN to continue.\n" msgstr "" "La commande python ne fonctionne pas comme pr?vu !\n" -"Merci de v?rifier vos variables d'environnement GRASS_PYTHON.\n" +"Merci de v?rifier votre variable d'environnement GRASS_PYTHON.\n" "Utilisez l'option -help pour les d?tails.\n" "Bascule vers l'interface en mode texte.\n" "\n" @@ -9268,19 +8724,13 @@ #: ../lib/init/grass.py:825 #, python-format -msgid "" -"<%s> is not a valid GRASS Location because PERMANENT Mapset does not have a " -"DEFAULT_WIND file (default computational region)" +msgid "<%s> is not a valid GRASS Location because PERMANENT Mapset does not have a DEFAULT_WIND file (default computational region)" msgstr "" #: ../lib/init/grass.py:829 -#, fuzzy, python-brace-format -msgid "" -"Mapset <{mapset}> doesn't exist in GRASS Location <{loc}>. A new mapset can " -"be created by '-c' switch." -msgstr "" -"Le jeu de cartes <%s> n'existepas dans le secteur GRASS <%s>. Il est " -"possible de cr?er un nouveau jeu de cartes avec l'option '-c'." +#, python-brace-format +msgid "Mapset <{mapset}> doesn't exist in GRASS Location <{loc}>. A new mapset can be created by '-c' switch." +msgstr "Le jeu de cartes <{mapset}> n'existe pas dans le secteur GRASS <{loc}>. Il est possible de cr?er un nouveau jeu de cartes avec l'option '-c'." #: ../lib/init/grass.py:892 #, python-format @@ -9296,25 +8746,18 @@ "GISDBASE, LOCATION_NAME and MAPSET variables not set properly.\n" "Interactive startup needed." msgstr "" -"Les variables GISDBASE, LOCATION_NAME et MAPSET ne sont aps d?finies " -"correctement.\n" +"Les variables GISDBASE, LOCATION_NAME et MAPSET ne sont aps d?finies correctement.\n" "D?marrage interactif n?cessaire." #: ../lib/init/grass.py:935 #, python-format -msgid "" -"Invalid user interface specified - <%s>. Use the --help option to see valid " -"interface names." -msgstr "" -"Interface utilisateur sp?cifi?e invalide - <%s>. Utilisez l'option --help " -"pour voir les noms d'interfaces valides." +msgid "Invalid user interface specified - <%s>. Use the --help option to see valid interface names." +msgstr "Interface utilisateur sp?cifi?e invalide - <%s>. Utilisez l'option --help pour voir les noms d'interfaces valides." #: ../lib/init/grass.py:953 msgid "" -"Error in GUI startup. See messages above (if any) and if necessary, please " -"report this error to the GRASS developers.\n" -"On systems with package manager, make sure you have the right GUI package, " -"probably named grass-gui, installed.\n" +"Error in GUI startup. See messages above (if any) and if necessary, please report this error to the GRASS developers.\n" +"On systems with package manager, make sure you have the right GUI package, probably named grass-gui, installed.\n" "To run GRASS GIS in text mode use the -text flag." msgstr "" @@ -9325,14 +8768,15 @@ msgstr "" #: ../lib/init/grass.py:964 -#, fuzzy msgid "" "Invalid return code from GUI startup script.\n" "Please advise GRASS developers of this error." -msgstr "Veuillez avertir les d?veloppeurs GRASS de cette erreur.\n" +msgstr "" +"Code de retour d'erreur invalide pour le lancement de l'interface graphique.\n" +"Veuillez avertir les d?veloppeurs GRASS de cette erreur." #: ../lib/init/grass.py:1011 -#, fuzzy, python-brace-format +#, python-brace-format msgid "" "Error reading data path information from g.gisenv.\n" "GISDBASE={gisbase}\n" @@ -9341,19 +8785,16 @@ "\n" "Check the <{file}> file." msgstr "" -"Erreur de lecture des informations de chemin des donn?es depuis g.gisenv.\n" -"GISDBASE=%(gisbase)s\n" -"LOCATION_NAME=%(location)s\n" -"MAPSET=%(mapset)s\n" +"Erreur de lecture des informations du chemin des donn?es depuis g.gisenv.\n" +"GISDBASE={gisbase}\n" +"LOCATION_NAME={location}\n" +"MAPSET={mapset}\n" "\n" -"V?rifier le fichier <%s(file)>." +"V?rifier le fichier <{file}>." #: ../lib/init/grass.py:1094 -#, fuzzy msgid "Default locale settings are missing. GRASS running with C locale." -msgstr "" -"Les param?tres de locale par d?faut sont manquants. Lancement de GRASS avec " -"la locale C." +msgstr "Les param?tres de locale par d?faut sont manquants. Utilisation de la locale C." #: ../lib/init/grass.py:1163 #, python-format @@ -9363,29 +8804,19 @@ #: ../lib/init/grass.py:1170 #, python-format msgid "" -"%(user)s is currently running GRASS in selected mapset (file %(file)s " -"found). Concurrent use not allowed.\n" -"You can force launching GRASS using -f flag (note that you need permission " -"for this operation). Have another look in the processor manager just to be " -"sure..." +"%(user)s is currently running GRASS in selected mapset (file %(file)s found). Concurrent use not allowed.\n" +"You can force launching GRASS using -f flag (note that you need permission for this operation). Have another look in the processor manager just to be sure..." msgstr "" -"%(user)s utilise GRASS dans le jeu de cartes s?lectionn? (fichier %(file)s " -"trouv?). Les utilisations simultan?es ne sont pas permises.\n" -"Vous pouvez forcer le d?marrage de GRASS avec l'option -f (vous devez avoir " -"les permissions pour cette op?ration). V?rifiez le gestionnaire de processus " -"pour ?tre s?r ..." +"%(user)s utilise GRASS dans le jeu de cartes s?lectionn? (fichier %(file)s trouv?). Les utilisations simultan?es ne sont pas permises.\n" +"Vous pouvez forcer le d?marrage de GRASS avec l'option -f (vous devez avoir les permissions pour cette op?ration). V?rifiez le gestionnaire de processus pour ?tre s?r ..." #: ../lib/init/grass.py:1177 #, python-format -msgid "" -"%(user)s is currently running GRASS in selected mapset (file %(file)s " -"found). Forcing to launch GRASS..." -msgstr "" -"%(user)s utilise GRASS dans le jeu de cartes s?lectionn? (fichier %(file)s " -"trouv?). Lancement de GRASS forc? ..." +msgid "%(user)s is currently running GRASS in selected mapset (file %(file)s found). Forcing to launch GRASS..." +msgstr "%(user)s utilise GRASS dans le jeu de cartes s?lectionn? (fichier %(file)s trouv?). Lancement de GRASS forc? ..." #: ../lib/init/grass.py:1181 -#, fuzzy, python-format +#, python-format msgid "" "Unable to properly access '%s'.\n" "Please notify system personel." @@ -9399,20 +8830,18 @@ msgstr "Construction du graphique ..." #: ../lib/init/grass.py:1261 -#, fuzzy msgid "The SHELL variable is not set" -msgstr "GISRC - variable sans valeur" +msgstr "La variable SHELL n'est pas d?finie" #: ../lib/init/grass.py:1277 -#, fuzzy, python-brace-format +#, python-brace-format msgid "Unsupported shell <{sh}>: {env_file}" -msgstr "Shell <%(sh)s> non support? : %(env)s" +msgstr "Shell <{sh}> non support? : {env_file}" #: ../lib/init/grass.py:1293 #, python-format msgid "" -"Job file <%s> has been defined in the 'GRASS_BATCH_JOB' variable but not " -"found. Exiting.\n" +"Job file <%s> has been defined in the 'GRASS_BATCH_JOB' variable but not found. Exiting.\n" "\n" "Use 'unset GRASS_BATCH_JOB' to disable batch job processing." msgstr "" @@ -9423,21 +8852,23 @@ msgstr "" #: ../lib/init/grass.py:1315 -#, fuzzy, python-format +#, python-format msgid "Executing <%s> ..." -msgstr "R?glage des co?ts du noeud..." +msgstr "Ex?cution de <%s> ..." #: ../lib/init/grass.py:1322 -#, fuzzy, python-brace-format +#, python-brace-format msgid "" "Execution of <{cmd}> failed:\n" "{error}" -msgstr "Echec de la connexion." +msgstr "" +"La commande <{cmd}> a ?chou? :\n" +"{error}" #: ../lib/init/grass.py:1325 -#, fuzzy, python-format +#, python-format msgid "Execution of <%s> finished." -msgstr "La cr?ation du champ <%s> a ?chou?" +msgstr "Ex?cution de <%s> termin?e." #: ../lib/init/grass.py:1367 #, python-format @@ -9453,9 +8884,8 @@ msgstr "Cette version fonctionne avec :" #: ../lib/init/grass.py:1391 -#, fuzzy msgid "Help is available with the command:" -msgstr "Aucune aide disponible pour la commande [%s]\n" +msgstr "L'aide est disponible par la commande :" #: ../lib/init/grass.py:1392 msgid "See the licence terms with:" @@ -9486,32 +8916,30 @@ msgstr "MASK raster 3D pr?sent" #: ../lib/init/grass.py:1524 -#, fuzzy, python-format +#, python-format msgid "Failed to start shell '%s'" -msgstr "Impossible d'ouvrir le fichier statistique <%s>" +msgstr "?chec au lancement du shell '%s'" #: ../lib/init/grass.py:1530 -#, fuzzy msgid "Done." -msgstr "Aucun" +msgstr "Termin?." #: ../lib/init/grass.py:1532 msgid "Goodbye from GRASS GIS" msgstr "" #: ../lib/init/grass.py:1537 -#, fuzzy msgid "Cleaning up temporary files..." -msgstr "Impossible d'ouvrir le fichier temporaire" +msgstr "Nettoyage des fichiers temporaires ..." #: ../lib/init/grass.py:1557 msgid "Please install the GRASS GIS development package" msgstr "" #: ../lib/init/grass.py:1589 -#, fuzzy, python-format +#, python-format msgid "Parameter <%s> not supported" -msgstr "Le type d'objet OGR %d n'est pas g?r?" +msgstr "Param?tres <%s> on support?" #: ../lib/init/grass.py:1733 msgid "Flag -e requires also flag -c" @@ -9521,10 +8949,8 @@ #, python-brace-format msgid "" "Unable to start GRASS GIS. You have the choice to:\n" -" - Launch the GRASS GIS interface with the '-gui' switch (`{cmd_name} -" -"gui`)\n" -" - Launch GRASS GIS directly with path to the location/mapset as an argument " -"(`{cmd_name} /path/to/location/mapset`)\n" +" - Launch the GRASS GIS interface with the '-gui' switch (`{cmd_name} -gui`)\n" +" - Launch GRASS GIS directly with path to the location/mapset as an argument (`{cmd_name} /path/to/location/mapset`)\n" " - Create manually the GISRC file ({gisrcrc})" msgstr "" @@ -9539,9 +8965,7 @@ #: ../lib/init/grass.py:1870 #, fuzzy, python-format msgid "Launching <%s> GUI in the background, please wait..." -msgstr "" -"D?marrage de l'interface graphique <%s> en t?che de fond, merci de " -"patienter ..." +msgstr "D?marrage de l'interface graphique <%s> en t?che de fond, merci de patienter ..." #: ../lib/imagery/target.c:38 #, c-format @@ -9556,8 +8980,7 @@ #: ../lib/imagery/list_subgp.c:85 #, c-format msgid "subgroup <%s> of group <%s> references the following raster maps\n" -msgstr "" -"Le sous-groupe <%s> du groupe <%s>r?f?rence les cartes raster suivantes\n" +msgstr "Le sous-groupe <%s> du groupe <%s>r?f?rence les cartes raster suivantes\n" #: ../lib/imagery/iclass_statistics.c:218 msgid "prepare_signature: outline has odd number of points." @@ -9586,9 +9009,8 @@ #: ../lib/imagery/iclass_statistics.c:712 #: ../lib/imagery/iclass_statistics.c:735 #: ../lib/imagery/iclass_statistics.c:758 -#, fuzzy msgid "Band index out of range" -msgstr "Index de couche en dehors des limites" +msgstr "Index de bande en dehors des limites" #: ../lib/imagery/iclass_statistics.c:684 #, fuzzy @@ -9596,58 +9018,49 @@ msgstr "Couche ou index de cat?gorie en dehors des limites" #: ../lib/imagery/iclass.c:83 -#, fuzzy, c-format +#, c-format msgid "No areas in category %d" -msgstr "Impossible de supprimer la couche vectorielle <%s>" +msgstr "Pas de surface pour la cat?gorie %d" #: ../lib/imagery/iclass.c:127 -#, fuzzy, c-format +#, c-format msgid "Raster map <%s@%s> in subgroup <%s> does not exist" -msgstr "La table <%s> li?e ? la carte vecteur <%s> n'existe pas " +msgstr "La carte raster <%s@%s> du sous-groupe <%s> n'existe pas " #: ../lib/imagery/iclass.c:131 -#, fuzzy, c-format +#, c-format msgid "Raster map <%s@%s> in group <%s> does not exist" -msgstr "La table <%s> li?e ? la carte vecteur <%s> n'existe pas " +msgstr "La carte raster <%s@%s> du groupe <%s> n'existe pas " #: ../lib/imagery/iclass.c:143 #, c-format msgid "Subgroup <%s> does not have enough files (it has %d files)" -msgstr "" -"Le sous-groupe <%s> ne contient pas suffisamment de fichiers (il a %d " -"fichiers)" +msgstr "Le sous-groupe <%s> ne contient pas suffisamment de fichiers (il a %d fichiers)" #: ../lib/imagery/iclass.c:147 #, c-format msgid "Group <%s> does not have enough files (it has %d files)" -msgstr "" -"Le groupe <%s> ne contient pas suffisamment de fichiers (il a %d fichiers)" +msgstr "Le groupe <%s> ne contient pas suffisamment de fichiers (il a %d fichiers)" #: ../lib/imagery/iclass_signatures.c:120 -#, fuzzy, c-format +#, c-format msgid "Unable to open output signature file '%s'" -msgstr "Impossible d'ouvrir le fichier %s" +msgstr "Impossible d'ouvrir le fichier de signatures '%s'" #: ../lib/imagery/points.c:124 #, c-format msgid "Unable to open control point file for group [%s in %s]" -msgstr "" -"Impossible d'ouvrir le fichier de points de contr?le pour le groupe [%s dans " -"%s]" +msgstr "Impossible d'ouvrir le fichier de points de contr?le pour le groupe [%s dans %s]" #: ../lib/imagery/points.c:132 #, c-format msgid "Bad format in control point file for group [%s in %s]" -msgstr "" -"Mauvais format dans le fichier de points de contr?le pour le groupe [%s dans " -"%s]" +msgstr "Mauvais format dans le fichier de points de contr?le pour le groupe [%s dans %s]" #: ../lib/imagery/points.c:159 #, c-format msgid "Unable to create control point file for group [%s in %s]" -msgstr "" -"Impossible de cr?er le fichier de points de contr?le pour le groupe [%s dans " -"%s]" +msgstr "Impossible de cr?er le fichier de points de contr?le pour le groupe [%s dans %s]" #: ../lib/imagery/fopen.c:23 #, c-format @@ -9667,37 +9080,27 @@ #: ../lib/imagery/fopen.c:79 #, c-format msgid "Unable to create file [%s] for subgroup [%s] of group [%s in %s]" -msgstr "" -"Impossible de cr?er le fichier [%s] du sous-groupe [%s] du groupe [%s de %s]" +msgstr "Impossible de cr?er le fichier [%s] du sous-groupe [%s] du groupe [%s de %s]" #: ../lib/imagery/fopen.c:101 ../lib/imagery/fopen.c:127 #, c-format msgid "Unable to open file [%s] for subgroup [%s] of group [%s in %s]" -msgstr "" -"Impossible d'ouvrir le fichier [%s] du sous-groupe [%s] du groupe [%s de %s]" +msgstr "Impossible d'ouvrir le fichier [%s] du sous-groupe [%s] du groupe [%s de %s]" #: ../lib/imagery/fopen.c:116 #, c-format msgid "Unable to find file [%s] for subgroup [%s] of group [%s in %s]" -msgstr "" -"Impossible de trouver le fichier [%s] pour le sous-groupe [%s] du groupe [%s " -"de %s]" +msgstr "Impossible de trouver le fichier [%s] pour le sous-groupe [%s] du groupe [%s de %s]" #: ../lib/imagery/sigsetfile.c:41 #, c-format -msgid "" -"Unable to create signature file <%s> for subgroup <%s> of group <%s> - <%s> " -"is not current mapset" -msgstr "" -"Impossible de cr?er le fichier de signatures <%s> pour le sous-groupe <%s> " -"du groupe <%s> - <%s> n'est pas le jeux de cartes courant" +msgid "Unable to create signature file <%s> for subgroup <%s> of group <%s> - <%s> is not current mapset" +msgstr "Impossible de cr?er le fichier de signatures <%s> pour le sous-groupe <%s> du groupe <%s> - <%s> n'est pas le jeux de cartes courant" #: ../lib/imagery/sigsetfile.c:57 #, c-format msgid "Unable to create signature file <%s> for subgroup <%s> of group <%s>" -msgstr "" -"Impossible de cr?er le fichier de signatures <%s> pour le sous-groupe <%s> " -"du groupe <%s>" +msgstr "Impossible de cr?er le fichier de signatures <%s> pour le sous-groupe <%s> du groupe <%s>" #: ../lib/imagery/iscatt_core.c:81 #, fuzzy, c-format @@ -9712,9 +9115,7 @@ #: ../lib/imagery/iscatt_core.c:255 #, fuzzy, c-format msgid "Unable to open category raster condtions file <%s>." -msgstr "" -"impossible d'ouvrir le fichier de d?finition de base de donn?es pour le " -"vecteur '%s'" +msgstr "impossible d'ouvrir le fichier de d?finition de base de donn?es pour le vecteur '%s'" #: ../lib/imagery/iscatt_core.c:263 #, fuzzy, c-format @@ -9746,9 +9147,7 @@ msgstr "" #: ../lib/imagery/iscatt_core.c:579 -msgid "" -"Data inconsistent. Value computed for scatter plot is out of initialized " -"range." +msgid "Data inconsistent. Value computed for scatter plot is out of initialized range." msgstr "" #: ../lib/imagery/iscatt_core.c:745 @@ -9757,14 +9156,14 @@ msgstr "Impossible de lire la plage de valeurs du raster <%s>" #: ../lib/imagery/iscatt_core.c:755 -#, fuzzy, c-format +#, c-format msgid "Unbale to open raster <%s>" -msgstr "Impossible d'ouvrir la carte raster <%s>" +msgstr "Impossible d'ouvrir le raster <%s>" #: ../lib/imagery/iscatt_core.c:761 -#, fuzzy, c-format +#, c-format msgid "Raster <%s> type is not <%s>" -msgstr "Carte raster <%s> non trouv?e dans le jeux de donn?es <%s>" +msgstr "Le raster <%s> n'est pas de type <%s>" #: ../lib/imagery/iscatt_core.c:775 #, fuzzy, c-format @@ -9774,9 +9173,7 @@ #: ../lib/imagery/iscatt_core.c:803 #, fuzzy, c-format msgid "Unable to open category raster condtition file <%s>" -msgstr "" -"impossible d'ouvrir le fichier de d?finition de base de donn?es pour le " -"vecteur '%s'" +msgstr "impossible d'ouvrir le fichier de d?finition de base de donn?es pour le vecteur '%s'" #: ../lib/imagery/iscatt_core.c:817 msgid "Corrupted category raster conditions file (fseek failed)" @@ -9820,9 +9217,9 @@ #: ../lib/imagery/georef_tps.c:279 ../lib/imagery/georef_tps.c:282 #: ../lib/imagery/georef_tps.c:285 ../lib/imagery/georef_tps.c:290 #: ../lib/imagery/georef_tps.c:293 -#, fuzzy, c-format +#, c-format msgid "%s: out of memory" -msgstr "D?passement de m?moire" +msgstr "%s : d?passement de m?moire" #, fuzzy #~ msgid "Unable to find a temporary null file <%s>" @@ -9841,23 +9238,18 @@ #, fuzzy #~ msgid "" -#~ "Error in GUI startup. If necessary, please report this error to the GRASS " -#~ "developers.\n" +#~ "Error in GUI startup. If necessary, please report this error to the GRASS developers.\n" #~ "Switching to text mode now.\n" #~ "\n" #~ "Hit RETURN to continue..." #~ msgstr "" -#~ "Erreur dans le d?marrage de l'interface graphique. Si n?cessaire, merci " -#~ "de rapporter cette erreur aux d?veloppeurs GRASS.\n" +#~ "Erreur dans le d?marrage de l'interface graphique. Si n?cessaire, merci de rapporter cette erreur aux d?veloppeurs GRASS.\n" #~ "Bascule vers le mode texte.\n" #~ "\n" #~ "Appuyez sur ENTR?E pour continuer ..." -#~ msgid "" -#~ "A language override has been requested. Trying to switch GRASS into " -#~ "'%s'..." -#~ msgstr "" -#~ "Un for?age de langage a ?t? demand?. Essai de basculer GRASS en '%s' ..." +#~ msgid "A language override has been requested. Trying to switch GRASS into '%s'..." +#~ msgstr "Un for?age de langage a ?t? demand?. Essai de basculer GRASS en '%s' ..." #~ msgid "ERROR: option <%s>: <%s> exists.\n" #~ msgstr "ERREUR: option <%s>: <%s> existe.\n" @@ -9909,12 +9301,8 @@ #~ msgid "Illegal TimeStamp string" #~ msgstr "Cha?ne d'horodatage ill?gale" -#~ msgid "" -#~ "Dev note: Adapted sites library used for vector points. (module should be " -#~ "updated to GRASS 6 vector library)" -#~ msgstr "" -#~ "Note du dev : librairie sites adapt?e utilis?e pour le vecteur de points. " -#~ "(le module devrait ?tre mis ? jour vers la librairie vecteur GRASS 6)" +#~ msgid "Dev note: Adapted sites library used for vector points. (module should be updated to GRASS 6 vector library)" +#~ msgstr "Note du dev : librairie sites adapt?e utilis?e pour le vecteur de points. (le module devrait ?tre mis ? jour vers la librairie vecteur GRASS 6)" #~ msgid "Cannot fetch row" #~ msgstr "Impossible de r?cup?rer la ligne" @@ -9924,15 +9312,11 @@ #, fuzzy #~ msgid "Error writing uncompressed FP data for row %d of <%s>" -#~ msgstr "" -#~ "erreur en lisant la couche compress?e [%s] dans le jeu de donn?es [%s], " -#~ "ligne %d" +#~ msgstr "erreur en lisant la couche compress?e [%s] dans le jeu de donn?es [%s], ligne %d" #, fuzzy #~ msgid "Error writing compressed FP data for row %d of <%s>" -#~ msgstr "" -#~ "erreur en lisant la couche compress?e [%s] dans le jeu de donn?es [%s], " -#~ "ligne %d" +#~ msgstr "erreur en lisant la couche compress?e [%s] dans le jeu de donn?es [%s], ligne %d" #, fuzzy #~ msgid "initial location" @@ -9957,12 +9341,8 @@ #~ "\n" #~ "Appuyez sur ENTR?E pour continuer" -#~ msgid "" -#~ "Mapset <%s> doesn't exist in GRASS location <%s>. A new mapset can be " -#~ "created by '-c' switch." -#~ msgstr "" -#~ "Le jeu de cartes <%s> n'existepas dans le secteur GRASS <%s>. Il est " -#~ "possible de cr?er un nouveau jeu de cartes avec l'option '-c'." +#~ msgid "Mapset <%s> doesn't exist in GRASS location <%s>. A new mapset can be created by '-c' switch." +#~ msgstr "Le jeu de cartes <%s> n'existepas dans le secteur GRASS <%s>. Il est possible de cr?er un nouveau jeu de cartes avec l'option '-c'." #, fuzzy #~ msgid "" @@ -9980,8 +9360,7 @@ #~ "\n" #~ "Check the <%s(file)> file." #~ msgstr "" -#~ "Erreur de lecture des informations de chemin des donn?es depuis g." -#~ "gisenv.\n" +#~ "Erreur de lecture des informations de chemin des donn?es depuis g.gisenv.\n" #~ "GISDBASE=%(gisbase)s\n" #~ "LOCATION_NAME=%(location)s\n" #~ "MAPSET=%(mapset)s\n" @@ -9993,16 +9372,13 @@ #, fuzzy #~ msgid "" -#~ "Job file '%s' has been defined in the 'GRASS_BATCH_JOB' variable but not " -#~ "found. Exiting.\n" +#~ "Job file '%s' has been defined in the 'GRASS_BATCH_JOB' variable but not found. Exiting.\n" #~ "\n" #~ "Use 'unset GRASS_BATCH_JOB' to disable batch job processing." #~ msgstr "" -#~ "Le fichier de t?che '%s' a ?t? d?fini dans la variable 'GRASS_BATCH_JOB' " -#~ "mais n'est pas trouv?. Sortie.\n" +#~ "Le fichier de t?che '%s' a ?t? d?fini dans la variable 'GRASS_BATCH_JOB' mais n'est pas trouv?. Sortie.\n" #~ "\n" -#~ "Utilisez 'ne pas d?finir GRASS_BATCH_JOB' pour d?sactiver le traitement " -#~ "des t?ches par lot." +#~ "Utilisez 'ne pas d?finir GRASS_BATCH_JOB' pour d?sactiver le traitement des t?ches par lot." #~ msgid "Change file permission to 'executable' for '%s'" #~ msgstr "Changer les permissions du fichier '%s' pour 'ex?cutable'" @@ -10017,9 +9393,7 @@ #~ msgstr "L'innterface graphique de GRASS devrait ?tre <%s>" #~ msgid "Batch job '%s' (defined in GRASS_BATCH_JOB variable) was executed." -#~ msgstr "" -#~ "La t?che par lot '%s' (d?finie dans la variable GRASS_BATCH_JOB) a ?t? " -#~ "ex?cut?e." +#~ msgstr "La t?che par lot '%s' (d?finie dans la variable GRASS_BATCH_JOB) a ?t? ex?cut?e." #, fuzzy #~ msgid "Flag -e required also flag -c" @@ -10028,14 +9402,12 @@ #~ msgid "" #~ "Unable to start GRASS GIS. You have the choice to:\n" #~ " - Launch the GRASS GIS interface with the '-gui' switch (`%s -gui`)\n" -#~ " - Launch GRASS GIS directly with path to the location/mapset as an " -#~ "argument (`%s /path/to/location/mapset`)\n" +#~ " - Launch GRASS GIS directly with path to the location/mapset as an argument (`%s /path/to/location/mapset`)\n" #~ " - Create manually the GISRC file (%s)" #~ msgstr "" #~ "Impossible de d?marrer le SIG GRASS. Vous avez le choix de :\n" #~ "- D?marrer l'interface graphique avec l'argument '-gui' (`%s -gui`)\n" -#~ "- D?marrer le SIG GRASS directement avec le chemin du secteur/jeu de " -#~ "cartes en argument (`%s /chemin/vers/secteur/jeu/de/cartes`)\n" +#~ "- D?marrer le SIG GRASS directement avec le chemin du secteur/jeu de cartes en argument (`%s /chemin/vers/secteur/jeu/de/cartes`)\n" #~ "- Cr?er manuellement le fichier GISRC (%s)" #~ msgid "Unable to remove directory '%s'" From svn_grass at osgeo.org Mon Sep 28 03:56:21 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Mon, 28 Sep 2015 03:56:21 -0700 Subject: [GRASS-SVN] r66373 - grass/branches/releasebranch_7_0/locale/po Message-ID: <20150928105621.69C693900A7@trac.osgeo.org> Author: neteler Date: 2015-09-28 03:56:21 -0700 (Mon, 28 Sep 2015) New Revision: 66373 Modified: grass/branches/releasebranch_7_0/locale/po/grasslibs_fr.po Log: Sylvain Maillard: FR translation cont'ed Modified: grass/branches/releasebranch_7_0/locale/po/grasslibs_fr.po =================================================================== --- grass/branches/releasebranch_7_0/locale/po/grasslibs_fr.po 2015-09-28 10:55:21 UTC (rev 66372) +++ grass/branches/releasebranch_7_0/locale/po/grasslibs_fr.po 2015-09-28 10:56:21 UTC (rev 66373) @@ -1,18 +1,18 @@ # French translation of grasslibs_fr.po # This file is distributed under the same license as the GRASS package. -# Copyright (C) 2005, 2012 GRASS Development Team +# Copyright (C) 2005, 2012-2015 GRASS Development Team # Emmanuel Saracco , 2004 # Daniel Calvelo , 2005 # Eve (alias 'phyto') , 2005 # ->just re-reading/editing to harmonize terminology with the GRASS6 french documentation project # Vincent Bain , 2012. -# Sylvain Maillard , 2011, 2012. +# Sylvain Maillard , 2011, 2012, 2015. msgid "" msgstr "" "Project-Id-Version: grasslibs_fr\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-08-18 12:56+0200\n" -"PO-Revision-Date: 2015-08-10 21:14+0200\n" +"PO-Revision-Date: 2015-09-28 08:46+0200\n" "Last-Translator: Sylvain Maillard \n" "Language-Team: French \n" "Language: fr\n" @@ -57,9 +57,9 @@ msgstr "Impossible d'obtenir la liste des tables dans la base de donn?es <%s>" #: ../lib/db/dbmi_client/copy_tab.c:167 -#, fuzzy, c-format +#, c-format msgid "Table <%s> already exists in database and will be overwritten" -msgstr "La couche vectorielle <%s> existe d?j? et va ?tre ?cras?" +msgstr "La table <%s> existe d?j? dans la base de donn?es et va ?tre ?cras?e" #: ../lib/db/dbmi_client/copy_tab.c:172 #, c-format @@ -142,9 +142,9 @@ msgstr "db_get_index_column_name() : num?ro de colonne invalide" #: ../lib/db/dbmi_base/login.c:99 -#, fuzzy, c-format +#, c-format msgid "Unable to read file '%s'" -msgstr "Impossible d'ouvrir le fichier %s" +msgstr "Impossible de lire le fichier '%s'" #: ../lib/db/dbmi_base/login.c:113 #, fuzzy, c-format @@ -152,23 +152,21 @@ msgstr "Fichier de connexion corrompu" #: ../lib/db/dbmi_base/login.c:142 -#, fuzzy, c-format +#, c-format msgid "Unable to write file '%s'" -msgstr "Impossible de supprimer le fichier <%s>" +msgstr "Impossible d'?crire le fichier '%s'" #: ../lib/db/dbmi_base/error.c:72 -#, fuzzy msgid "" -msgstr "Message d'erreur : %s" +msgstr "" #: ../lib/db/dbmi_base/error.c:91 msgid "dbmi: Protocol error" msgstr "dbmi : erreur de protocole" #: ../lib/db/dbmi_base/error.c:136 -#, fuzzy msgid "dbmi: Out of Memory" -msgstr "G_malloc : d?passement de m?moire" +msgstr "dbmi : d?passement de m?moire" #: ../lib/db/dbmi_base/error.c:149 #, c-format @@ -181,20 +179,19 @@ msgstr "dbmi : proc?dure %d invalide" #: ../lib/db/dbmi_base/legal_dbname.c:38 -#, fuzzy, c-format +#, c-format msgid "Illegal table map name <%s>. May not contain '.' or 'NULL'." -msgstr "Nom de table ill?gal <%s>. Ne doit contenir ni '.', ni 'NULL'.\n" +msgstr "Nom de table <%s> incorrect. Ne doit contenir ni '.' ni 'NULL'." #: ../lib/db/dbmi_base/legal_dbname.c:45 -#, fuzzy, c-format +#, c-format msgid "Illegal table map name <%s>. Must start with a letter." -msgstr "Nom de table ill?gal <%s>. Doit commencer par une lettre.\n" +msgstr "Nom de table <%s> incorrect. Doit commencer par une lettre." #: ../lib/db/dbmi_base/legal_dbname.c:54 -#, fuzzy, c-format +#, c-format msgid "Illegal table map name <%s>. Character <%c> not allowed." -msgstr "" -"Nom de couche table ill?gal <%s>. Le caract?re <%c> n'est pas autoris?.\n" +msgstr "Nom de table <%s> incorrect. Le caract?re <%c> n'est pas autoris?." #: ../lib/db/dbmi_base/valuefmt.c:52 msgid "db_convert_Cstring_to_value(): unrecognized sqltype" @@ -235,36 +232,32 @@ msgstr "?x?cuter tous les tests unitaires et d'int?gration" #: ../lib/db/dbmi_base/test/test_main.c:83 -#, fuzzy msgid "Performs unit and integration tests for the dbmi base library" -msgstr "Effectue les tests unitaires et d'int?gration pour la librairie gpde" +msgstr "Effectue les tests unitaires et d'int?gration pour la librairie dbmi" #: ../lib/db/dbmi_base/test/test_columns.c:37 -#, fuzzy msgid "" "\n" "++ Running column unit tests ++" msgstr "" "\n" -"++ ?x?cution du solveur des tests unitaires ++" +"++ Ex?cution des tests unitaires de colonne ++" #: ../lib/db/dbmi_base/test/test_columns.c:42 -#, fuzzy msgid "" "\n" "-- column unit tests failure --" msgstr "" "\n" -"-- ?chec du solveur des tests unitaires --" +"-- ?chec des tests unitaires de colonne --" #: ../lib/db/dbmi_base/test/test_columns.c:44 -#, fuzzy msgid "" "\n" "-- column unit tests finished successfully --" msgstr "" "\n" -"-- Tests unitaires du solveur termin?s avec succ?s --" +"-- Tests unitaires de colonne termin?s avec succ?s --" #: ../lib/db/dbmi_base/test/test_columns.c:57 msgid "" @@ -283,60 +276,57 @@ "++ Test de copie de colonne termin? ++" #: ../lib/db/dbmi_base/test/test_table.c:38 -#, fuzzy msgid "" "\n" "++ Running table unit tests ++" msgstr "" "\n" -"++ ?x?cution du solveur des tests unitaires ++" +"++ Ex?cution des tests unitaires de table ++" #: ../lib/db/dbmi_base/test/test_table.c:43 -#, fuzzy msgid "" "\n" "-- Table unit tests failure --" msgstr "" "\n" -"-- ?chec du solveur des tests unitaires --" +"-- ?chec des tests unitaires de table --" #: ../lib/db/dbmi_base/test/test_table.c:45 -#, fuzzy msgid "" "\n" "-- Table unit tests finished successfully --" msgstr "" "\n" -"-- Tests unitaires du solveur termin?s avec succ?s --" +"-- Tests unitaires de table termin?s avec succ?s --" #: ../lib/db/dbmi_base/xdrvalue.c:82 msgid "send data: invalid C-type" msgstr "envoi de donn?es : type C invalide" #: ../lib/cairodriver/read_xid.c:14 -#, fuzzy, c-format +#, c-format msgid "Unable to open input file <%s>" -msgstr "Impossible d'ouvrir le fichier %s" +msgstr "Impossible d'ouvrir le fichier d'entr?e <%s>" #: ../lib/cairodriver/read_xid.c:17 -#, fuzzy, c-format +#, c-format msgid "Unable to read input file <%s>" -msgstr "Impossible d'ouvrir le fichier statistique <%s>" +msgstr "Impossible de lire le fichier d'entr?e <%s>" #: ../lib/cairodriver/read_xid.c:20 -#, fuzzy, c-format +#, c-format msgid "Unable to parse input file <%s>" -msgstr "Impossible d'ouvrir le fichier statistique <%s>" +msgstr "Impossible d'analyser le fichier d'entr?e <%s>" #: ../lib/cairodriver/graph.c:67 #, fuzzy msgid "Unable to open display" -msgstr "Impossible d'ouvrir %s" +msgstr "Impossible d'ouvrir l'affichage" #: ../lib/cairodriver/graph.c:85 #, fuzzy msgid "Unable to obtain visual" -msgstr "Impossible d'ouvrir %s" +msgstr "Impossible d'ouvrir un visuel" #: ../lib/cairodriver/graph.c:160 #, c-format @@ -346,7 +336,7 @@ #: ../lib/cairodriver/graph.c:190 #, fuzzy, c-format msgid "cairo: collecting to file '%s'" -msgstr "Erreur ? la fermeture du fichier g3d" +msgstr "cairo : enregistrement vers le fichier '%s'" #: ../lib/cairodriver/graph.c:192 #, c-format @@ -356,66 +346,61 @@ #: ../lib/cairodriver/graph.c:371 #, fuzzy msgid "Unknown Cairo surface type" -msgstr "Type vectoriel inconnu." +msgstr "Type de surface Cairo inconnue" #: ../lib/cairodriver/graph.c:376 #, fuzzy msgid "Failed to initialize Cairo surface" -msgstr "Impossible d'initialiser pj cause : %s" +msgstr "?chec d'initialisation de la surface Cairo" #: ../lib/cairodriver/raster.c:109 #, fuzzy msgid "Failed to create cairo surface" -msgstr "Impossible de cr?er un nouveau processus" +msgstr "?chec de cr?ation de la surface Cairo" #: ../lib/cairodriver/draw_bitmap.c:47 msgid "Cairo_Bitmap: Failed to create source" msgstr "Cairo_Bitmap : ?chec de cr?ation de la source" #: ../lib/cairodriver/read_ppm.c:28 ../lib/cairodriver/read_bmp.c:88 -#, fuzzy, c-format +#, c-format msgid "Cairo: unable to open input file <%s>" -msgstr "G_spawn : impossible d'ouvrir le fichier %s" +msgstr "Cairo : impossible d'ouvrir le fichier d'entr?e <%s>" #: ../lib/cairodriver/read_ppm.c:32 ../lib/cairodriver/read_bmp.c:92 -#, fuzzy, c-format +#, c-format msgid "Cairo: invalid input file <%s>" -msgstr "Impossible de trouver la couche d'entr?e '%s'" +msgstr "Cairo : fichier d'entr?e invalide <%s>" #: ../lib/cairodriver/read_ppm.c:38 #, c-format msgid "Cairo: input file has incorrect dimensions: expected: %dx%d got: %dx%d" -msgstr "" -"Cairo : le fichier d'entr?e a des dimensions incorrectes : attendu : %dx%d " -"re?u : %dx%d" +msgstr "Cairo : le fichier d'entr?e a des dimensions incorrectes : attendu : %dx%d re?u : %dx%d" #: ../lib/cairodriver/read_ppm.c:46 -#, fuzzy, c-format +#, c-format msgid "Cairo: unable to open input mask file <%s>" -msgstr "G_spawn : impossible d'ouvrir le fichier %s" +msgstr "Cairo : impossible d'ouvrir le fichier de masque en entr?e <%s>" #: ../lib/cairodriver/read_ppm.c:50 -#, fuzzy, c-format +#, c-format msgid "Cairo: invalid input mask file <%s>" -msgstr "Impossible de trouver la couche d'entr?e '%s'" +msgstr "Cairo : fichier de masque en entr?e invalide <%s>" #: ../lib/cairodriver/read_ppm.c:56 #, c-format -msgid "" -"Cairo: input mask file has incorrect dimensions: expected: %dx%d got: %dx%d" -msgstr "" -"Cairo : le fichier de masque a des dimensions incorrects : attendu : %dx%d " -"re?u : %dx%d" +msgid "Cairo: input mask file has incorrect dimensions: expected: %dx%d got: %dx%d" +msgstr "Cairo : le fichier de masque a des dimensions incorrects : attendu : %dx%d re?u : %dx%d" #: ../lib/cairodriver/write_xid.c:14 -#, fuzzy, c-format +#, c-format msgid "Unable to open output file <%s>" -msgstr "Impossible d'ouvrir le fichier %s" +msgstr "Impossible d'ouvrir le fichier de sortie <%s>" #: ../lib/cairodriver/write_xid.c:19 -#, fuzzy, c-format +#, c-format msgid "Unable to write output file <%s>" -msgstr "Impossible d'ouvrir le fichier statistique <%s>" +msgstr "Impossible d'?crire le fichier de sortie <%s>" #: ../lib/cairodriver/read_bmp.c:96 #, c-format @@ -423,30 +408,28 @@ msgstr "Cairo : en-t?te BMP invalide pour <%s>" #: ../lib/cairodriver/text.c:46 -#, fuzzy, c-format +#, c-format msgid "Unable to convert from <%s> to UTF-8" -msgstr "Impossible de copier la couche vectorielle <%s> vers <%s>" +msgstr "Impossible de convertir <%s> vers UTF-8" #: ../lib/cairodriver/text.c:56 msgid "Some characters could not be converted to UTF-8" msgstr "Certains caract?res ne peuvent pas ?tre convertis en UTF-8" #: ../lib/cairodriver/write_ppm.c:27 ../lib/cairodriver/write_bmp.c:72 -#, fuzzy, c-format +#, c-format msgid "Cairo: unable to open output file <%s>" -msgstr "G_spawn : impossible d'ouvrir le fichier %s" +msgstr "Cairo : impossible d'ouvrir le fichier de sortie <%s>" #: ../lib/cairodriver/write_ppm.c:34 -#, fuzzy, c-format +#, c-format msgid "Cairo: unable to open mask file <%s>" -msgstr "G_spawn : impossible d'ouvrir le fichier %s" +msgstr "Cairo : impossible d'ouvrir le fichier de masque <%s>" #: ../lib/driver/parse_ftcap.c:84 #, c-format msgid "%s: Unable to read font definition file; use the default" -msgstr "" -"%s: Impossible de lire le fichier de d?finition de police, utilisation de " -"celle par d?faut" +msgstr "%s: Impossible de lire le fichier de d?finition de police, utilisation de celle par d?faut" #: ../lib/driver/parse_ftcap.c:90 #, c-format @@ -455,34 +438,31 @@ #: ../lib/vector/rtree/test_suite/test_main.c:61 msgid "Unit tests for the vector rtree library" -msgstr "" +msgstr "Tests unitaires pour la librairie vecteur rtree" #: ../lib/vector/rtree/test_suite/test_basics.c:40 -#, fuzzy msgid "" "\n" "++ Running basic unit tests ++" msgstr "" "\n" -"++ ?x?cution du solveur des tests unitaires ++" +"++ Ex?cution des tests unitaires basiques ++" #: ../lib/vector/rtree/test_suite/test_basics.c:48 -#, fuzzy msgid "" "\n" "-- Basic rtree unit tests failure --" msgstr "" "\n" -"-- ?chec du solveur des tests unitaires --" +"-- ?chec des tests unitaires basiques rtree --" #: ../lib/vector/rtree/test_suite/test_basics.c:50 -#, fuzzy msgid "" "\n" "-- Basic rtree unit tests finished successfully --" msgstr "" "\n" -"-- Tests unitaires du solveur termin?s avec succ?s --" +"-- Tests unitaires basiques rtree termin?s avec succ?s --" #: ../lib/vector/vedit/cats.c:63 #, c-format @@ -504,9 +484,9 @@ msgstr "Pas de surface trouv?e pour le centro?de %d" #: ../lib/vector/vedit/delete.c:76 -#, c-format +#, fuzzy, c-format msgid "Duplicate centroid %d, unable to delete area" -msgstr "" +msgstr "Centro?de %d dupliqu?, impossible de supprimer la surface" #: ../lib/vector/vedit/delete.c:105 #, c-format @@ -530,24 +510,18 @@ #: ../lib/vector/diglib/spindex_rw.c:302 #, c-format -msgid "" -"This version of GRASS (%d.%d) is too old to read this spatial index format. " -"Try to rebuild topology or upgrade GRASS to at least version %d." -msgstr "" +msgid "This version of GRASS (%d.%d) is too old to read this spatial index format. Try to rebuild topology or upgrade GRASS to at least version %d." +msgstr "Cette version de GRASS (%d.%d) est trop vieille pour lire ce format d'index spatial. Essayez de reconstruire la topologie ou de mettre ? jour GRASS vers la version %d." #: ../lib/vector/diglib/spindex_rw.c:308 #, c-format -msgid "" -"Your GRASS version does not fully support spatial index format %d.%d of the " -"vector. Consider to rebuild topology or upgrade GRASS." -msgstr "" +msgid "Your GRASS version does not fully support spatial index format %d.%d of the vector. Consider to rebuild topology or upgrade GRASS." +msgstr "Votre version de GRASS ne supporte pas pleinement le format d'index spatial %d.%d du vecteur. Veuillez reconstruire la topologie ou mettre ? jour GRASS." #: ../lib/vector/diglib/spindex_rw.c:317 -#, c-format -msgid "" -"Spatial index format version %d.%d is not supported by this release. Please " -"rebuild topology." -msgstr "" +#, fuzzy, c-format +msgid "Spatial index format version %d.%d is not supported by this release. Please rebuild topology." +msgstr "La version %d.%d du format d'index spatial n'est pas support? par cette version. Merci de reconstruire la topologie." #: ../lib/vector/diglib/file.c:159 msgid "Writing to file loaded to memory not supported" @@ -563,24 +537,19 @@ #: ../lib/vector/diglib/cindex_rw.c:156 #, c-format -msgid "" -"This version of GRASS (%d.%d) is too old to read this category index format. " -"Try to rebuild topology or upgrade GRASS to at least version %d." -msgstr "" +msgid "This version of GRASS (%d.%d) is too old to read this category index format. Try to rebuild topology or upgrade GRASS to at least version %d." +msgstr "Cette version de GRASS (%d.%d) est trop vieille pour lire ce format d'index de cat?gories. Essayez de reconstruire la topologie ou de mettre ? jour GRASS vers la version %d." #: ../lib/vector/diglib/plus_node.c:214 #, c-format -msgid "" -"Attempt to read line angle for the line which is not connected to the node: " -"node %d, line %d" -msgstr "" -"Tentative de lire l'angle d'une ligne qui n'est pas connect?e au noeud: " -"noeud %d, ligne %d" +msgid "Attempt to read line angle for the line which is not connected to the node: node %d, line %d" +msgstr "Tentative de lire l'angle d'une ligne qui n'est pas connect?e au noeud: noeud %d, ligne %d" #: ../lib/vector/diglib/portable.c:208 ../lib/vector/diglib/portable.c:241 #: ../lib/vector/diglib/portable.c:683 ../lib/vector/diglib/plus_struct.c:563 +#, fuzzy msgid "Vector exceeds supported file size limit" -msgstr "" +msgstr "Le vecteur d?passe la limite de taille de fichier support?e." #: ../lib/vector/diglib/plus.c:222 msgid "Unable read topology for nodes" @@ -649,8 +618,9 @@ msgstr "La ligne %d a d?j? une surface/?le %d ? droite" #: ../lib/vector/diglib/plus_area.c:279 +#, fuzzy msgid "Isle already registered in area" -msgstr "" +msgstr "L'?le est d?j? enregistr?e dans la surface" #: ../lib/vector/diglib/plus_area.c:313 msgid "Attempt to delete isle from dead area" @@ -668,20 +638,17 @@ #: ../lib/vector/diglib/plus_area.c:408 #, c-format msgid "Dead centroid %d registered for area (bug in the vector library)" -msgstr "" -"Centro?de mort %d enregistr? pour une surface (bug dans la librairie vecteur)" +msgstr "Centro?de mort %d enregistr? pour une surface (bug dans la librairie vecteur)" #: ../lib/vector/diglib/plus_area.c:431 #, c-format msgid "Attempt to delete area %d info from dead isle %d" -msgstr "" -"Tentative de suppression des information de la surface %d de l'?le morte %d" +msgstr "Tentative de suppression des information de la surface %d de l'?le morte %d" #: ../lib/vector/diglib/plus_area.c:777 #, c-format msgid "Attempt to delete isle %d info from dead area %d" -msgstr "" -"Tentative de suppression des informations de l'?le % de la surface morte %d" +msgstr "Tentative de suppression des informations de l'?le % de la surface morte %d" #: ../lib/vector/diglib/frmt.c:45 ../lib/vector/diglib/frmt.c:70 #, fuzzy, c-format @@ -696,7 +663,7 @@ #: ../lib/vector/diglib/frmt.c:97 #, c-format msgid "Format definition is not correct: %s" -msgstr "" +msgstr "D?finition du format incorrecte : %s" #: ../lib/vector/diglib/struct_alloc.c:491 #, fuzzy @@ -710,28 +677,22 @@ #: ../lib/vector/diglib/test.c:75 #, c-format -msgid "" -"Error in read/write portable double, byte_order = %d Written: %.16e3E Read: " -"%.16e3E" +msgid "Error in read/write portable double, byte_order = %d Written: %.16e3E Read: %.16e3E" msgstr "" #: ../lib/vector/diglib/test.c:89 #, c-format -msgid "" -"Error in read/write portable float, byte_order = %d Written: %.8e3E Read: " -"%.8e3E" +msgid "Error in read/write portable float, byte_order = %d Written: %.8e3E Read: %.8e3E" msgstr "" #: ../lib/vector/diglib/test.c:104 #, c-format -msgid "" -"Error in read/write portable off_t, byte_order = %d Written: %lu Read: %lu" +msgid "Error in read/write portable off_t, byte_order = %d Written: %lu Read: %lu" msgstr "" #: ../lib/vector/diglib/test.c:119 #, c-format -msgid "" -"Error in read/write portable long, byte_order = %d Written: %lu Read: %lu" +msgid "Error in read/write portable long, byte_order = %d Written: %lu Read: %lu" msgstr "" #: ../lib/vector/diglib/test.c:134 @@ -741,8 +702,7 @@ #: ../lib/vector/diglib/test.c:150 #, c-format -msgid "" -"Error in read/write portable short, byte_order = %d Written: %d Read: %d" +msgid "Error in read/write portable short, byte_order = %d Written: %d Read: %d" msgstr "" #: ../lib/vector/diglib/test.c:165 @@ -776,26 +736,18 @@ #: ../lib/vector/diglib/plus_struct.c:523 #, c-format -msgid "" -"This version of GRASS (%d.%d) is too old to read this topology format. Try " -"to rebuild topology or upgrade GRASS to at least version %d." -msgstr "" +msgid "This version of GRASS (%d.%d) is too old to read this topology format. Try to rebuild topology or upgrade GRASS to at least version %d." +msgstr "Cette version de GRASS (%d.%d) est trop vieille pour lire ce format de topologie. Essayez de reconstruire la topologie ou de mettre ? jour GRASS vers la version %d." #: ../lib/vector/diglib/plus_struct.c:529 #, c-format -msgid "" -"Your GRASS version does not fully support topology format %d.%d of the " -"vector. Consider to rebuild topology or upgrade GRASS." -msgstr "" +msgid "Your GRASS version does not fully support topology format %d.%d of the vector. Consider to rebuild topology or upgrade GRASS." +msgstr "Votre version de GRASS ne supporte pas enti?rement le format de topologie %d.%d du vecteur. Merci de reconstruire la topologie ou de mettre ? jour GRASS." #: ../lib/vector/diglib/plus_struct.c:539 #, fuzzy, c-format -msgid "" -"Old topology format version %d.%d is not supported by this release. Try to " -"rebuild topology using v.build or v.build.all module." -msgstr "" -"Le format d'index %d.%d n'est pas support? par cette version. Essayez de " -"reconstruire la topologie ou de mettre ? jour GRASS." +msgid "Old topology format version %d.%d is not supported by this release. Try to rebuild topology using v.build or v.build.all module." +msgstr "Le format d'index %d.%d n'est pas support? par cette version. Essayez de reconstruire la topologie ou de mettre ? jour GRASS." #: ../lib/vector/neta/flow.c:64 ../lib/vector/neta/flow.c:179 #: ../lib/vector/neta/spanningtree.c:99 ../lib/vector/neta/timetables.c:69 @@ -840,7 +792,7 @@ #: ../lib/vector/neta/utils.c:230 #, c-format msgid "'%s' must be > 0" -msgstr "" +msgstr "'%s' doit ?tre > 0" #: ../lib/vector/neta/utils.c:239 msgid "'where' and 'cats' parameters were supplied, cat will be ignored" @@ -870,9 +822,7 @@ #: ../lib/vector/Vlib/cindex.c:489 #, fuzzy, c-format msgid "Unable to create category index file for vector map <%s>" -msgstr "" -"Impossible d'ouvrir le fichier des cat?gories d'index pour la couche " -"vectorielle <%s>" +msgstr "Impossible d'ouvrir le fichier des cat?gories d'index pour la couche vectorielle <%s>" #: ../lib/vector/Vlib/cindex.c:498 #, fuzzy @@ -882,9 +832,7 @@ #: ../lib/vector/Vlib/cindex.c:542 ../lib/vector/Vlib/open.c:382 #, c-format msgid "Unable to open category index file for vector map <%s>" -msgstr "" -"Impossible d'ouvrir le fichier des cat?gories d'index pour la couche " -"vectorielle <%s>" +msgstr "Impossible d'ouvrir le fichier des cat?gories d'index pour la couche vectorielle <%s>" #: ../lib/vector/Vlib/build.c:37 ../lib/vector/Vlib/rewind.c:29 #: ../lib/vector/Vlib/close.c:38 ../lib/vector/Vlib/open.c:59 @@ -911,8 +859,7 @@ #: ../lib/vector/Vlib/build.c:200 msgid "Request to find area outside nonexistent isle" -msgstr "" -"Requ?te pour trouver des surfaces ? l'ext?rieur d'une ?le non-existante" +msgstr "Requ?te pour trouver des surfaces ? l'ext?rieur d'une ?le non-existante" #: ../lib/vector/Vlib/build.c:351 msgid "Larger bbox but smaller area!!!" @@ -920,7 +867,7 @@ #: ../lib/vector/Vlib/build.c:606 msgid "Checking for topological errors..." -msgstr "" +msgstr "V?rification des erreurs de topologie ..." #: ../lib/vector/Vlib/build.c:641 #, c-format @@ -1055,28 +1002,23 @@ msgstr "Erreur ? l'?criture du fichier topo." #: ../lib/vector/Vlib/build.c:1211 -msgid "" -"Unable to build spatial index from topology, vector map is not opened at " -"topology level 2" -msgstr "" -"Impossible de construire l'index spatial depuis la topologie, la couche " -"vecteur n'est pas ouverte au niveau topologique 2" +msgid "Unable to build spatial index from topology, vector map is not opened at topology level 2" +msgstr "Impossible de construire l'index spatial depuis la topologie, la couche vecteur n'est pas ouverte au niveau topologique 2" #: ../lib/vector/Vlib/build.c:1234 #, c-format msgid "%s is no longer supported" -msgstr "" +msgstr "%s n'est plus support?" #: ../lib/vector/Vlib/build.c:1257 +#, fuzzy msgid "Spatial index not available, can not be saved" -msgstr "" +msgstr "Index spatial non disponible, impossible d'enregistrer" #: ../lib/vector/Vlib/build.c:1270 #, c-format msgid "Unable to create spatial index file for vector map <%s>" -msgstr "" -"Impossible de cr?er le fichier d'index spatial pour la couche vectorielle <" -"%s>" +msgstr "Impossible de cr?er le fichier d'index spatial pour la couche vectorielle <%s>" #: ../lib/vector/Vlib/build.c:1279 msgid "Error writing out spatial index file" @@ -1094,7 +1036,7 @@ #: ../lib/vector/Vlib/ascii.c:143 msgid "End of ASCII file reached before end of coordinates" -msgstr "" +msgstr "Fin du fichier ASCII atteinte avant la fin des coordonn?es" #: ../lib/vector/Vlib/ascii.c:155 #, fuzzy, c-format @@ -1109,11 +1051,11 @@ #: ../lib/vector/Vlib/ascii.c:165 #, c-format msgid "Unparsable latitude value: [%s]" -msgstr "" +msgstr "Valeur de latitude non analysable : [%s]" #: ../lib/vector/Vlib/ascii.c:201 msgid "End of ASCII file reached before end of categories" -msgstr "" +msgstr "Fin du fichier ASCII atteinte avant la fin des cat?gories" #: ../lib/vector/Vlib/ascii.c:212 #, fuzzy, c-format @@ -1126,16 +1068,18 @@ msgstr "Impossible de copier la table <%s>" #: ../lib/vector/Vlib/ascii.c:238 -#, c-format +#, fuzzy, c-format msgid "Vector map <%s> is 2D. %d 3D features (faces or kernels) skipped." -msgstr "" +msgstr "La carte vecteur est 2D. %d entit?s 3D (faces ou noyaux) saut?s." #: ../lib/vector/Vlib/ascii.c:270 -#, c-format +#, fuzzy, c-format msgid "" "Unexpected data in vector header:\n" "[%s]" msgstr "" +"Donn?es inatendues dans l'en-t?te du vecteur :\n" +"[%s]" #: ../lib/vector/Vlib/ascii.c:306 #, fuzzy, c-format @@ -1159,11 +1103,11 @@ #: ../lib/vector/Vlib/ascii.c:467 msgid "Available columns:" -msgstr "" +msgstr "Colonnes disponibles :" #: ../lib/vector/Vlib/ascii.c:472 msgid "Export cancelled" -msgstr "" +msgstr "Export annul?" #: ../lib/vector/Vlib/ascii.c:505 #, c-format @@ -1183,7 +1127,7 @@ #: ../lib/vector/Vlib/ascii.c:701 #, c-format msgid "Feature has more categories. Only one category (%d) is exported." -msgstr "" +msgstr "L'objet a plus de cat?gories. Seulement une cat?gorie (%d) est export?e." #: ../lib/vector/Vlib/ascii.c:718 #, c-format @@ -1211,8 +1155,9 @@ msgstr "Format inconnu" #: ../lib/vector/Vlib/ascii.c:850 +#, fuzzy msgid "Topology not available, unable to process areas" -msgstr "" +msgstr "Topologie non disponible, impossible de traiter les surfaces" #: ../lib/vector/Vlib/ascii.c:863 #, c-format @@ -1222,16 +1167,12 @@ #: ../lib/vector/Vlib/ascii.c:875 #, fuzzy, c-format msgid "Unable to get boundary of isle id %d (area id %d)" -msgstr "" -"Impossible d'ouvrir le fichier des cat?gories d'index pour la couche " -"vectorielle <%s>" +msgstr "Impossible d'ouvrir le fichier des cat?gories d'index pour la couche vectorielle <%s>" #: ../lib/vector/Vlib/ascii.c:889 #, c-format -msgid "" -"%d features without category skipped. To export also features without " -"category use '%s=-1'." -msgstr "" +msgid "%d features without category skipped. To export also features without category use '%s=-1'." +msgstr "%d objets sans cat?gories saut?s. Pour exporter ?galement les objets sans cat?gories, utiliser '%s=-1'." #: ../lib/vector/Vlib/graph.c:138 msgid "Unable to add network arc" @@ -1245,21 +1186,17 @@ #: ../lib/vector/Vlib/open_nat.c:57 #, fuzzy, c-format msgid "Unable to open coor file for vector map <%s>" -msgstr "" -"Impossible d'ouvrir le fichier d'historique pour la couche vectorielle <%s>" +msgstr "Impossible d'ouvrir le fichier d'historique pour la couche vectorielle <%s>" #: ../lib/vector/Vlib/open_nat.c:154 #, c-format -msgid "" -"Coor file of vector map <%s@%s> is larger than it should be (%ld bytes " -"excess)" -msgstr "" +msgid "Coor file of vector map <%s@%s> is larger than it should be (%ld bytes excess)" +msgstr "Le fichier coor de la carte vecteur <%s@%s> est plus grand qu'il ne devrait (%ld bytes en trop)" #: ../lib/vector/Vlib/open_nat.c:158 #, c-format -msgid "" -"Coor file of vector <%s@%s> is shorter than it should be (%ld bytes missing)." -msgstr "" +msgid "Coor file of vector <%s@%s> is shorter than it should be (%ld bytes missing)." +msgstr "Le fichier coor de la carte vecteur <%s@%s> est plus petit qu'il ne devrait (%ld bytes en moins)" #: ../lib/vector/Vlib/area.c:50 msgid "Attempt to read points of nonexistent area" @@ -1286,7 +1223,7 @@ #: ../lib/vector/Vlib/header_finfo.c:47 ../lib/vector/Vlib/header_finfo.c:86 #: ../lib/vector/Vlib/header_finfo.c:123 ../lib/vector/Vlib/header_finfo.c:171 msgid "GRASS is not compiled with PostgreSQL support" -msgstr "" +msgstr "GRASS n'est pas compil? avec le support de PostgreSQL" #: ../lib/vector/Vlib/area.c:121 ../lib/vector/Vlib/area.c:153 #: ../lib/vector/Vlib/area.c:219 ../lib/vector/Vlib/area.c:248 @@ -1318,9 +1255,7 @@ #: ../lib/vector/Vlib/close_ogr.c:104 ../lib/vector/Vlib/close_pg.c:140 #, c-format msgid "Unable to save feature index file for vector map <%s>" -msgstr "" -"Impossible d'enregistrer le fichier d'index des objets pour la carte vecteur " -"<%s>" +msgstr "Impossible d'enregistrer le fichier d'index des objets pour la carte vecteur <%s>" #: ../lib/vector/Vlib/write_sfa.c:117 #, fuzzy @@ -1330,7 +1265,7 @@ #: ../lib/vector/Vlib/write_sfa.c:131 ../lib/vector/Vlib/write_sfa.c:173 #: ../lib/vector/Vlib/write_sfa.c:273 ../lib/vector/Vlib/read_sfa.c:124 msgid "GRASS is not compiled with OGR/PostgreSQL support" -msgstr "" +msgstr "GRASS n'est pas compil? avec le support de OGR/PostgreSQL" #: ../lib/vector/Vlib/write_sfa.c:158 ../lib/vector/Vlib/write_sfa.c:207 #: ../lib/vector/Vlib/write_pg.c:236 ../lib/vector/Vlib/write_pg.c:381 @@ -1360,13 +1295,14 @@ #: ../lib/vector/Vlib/write_sfa.c:349 ../lib/vector/Vlib/write_pg.c:554 #: ../lib/vector/Vlib/write_pg.c:1294 +#, fuzzy msgid "Boundary is not closed. Skipping." -msgstr "" +msgstr "Contour non ferm?. Saut?." #: ../lib/vector/Vlib/array.c:96 #, c-format msgid "%d errors in category string" -msgstr "" +msgstr "%d erreurs dans les cat?gories" #: ../lib/vector/Vlib/array.c:142 ../lib/vector/Vlib/array.c:267 msgid "Mixed area and other type requested for vector array" @@ -1380,14 +1316,12 @@ #: ../lib/vector/Vlib/array.c:292 #, c-format msgid "Unable to select record from table <%s> (key %s, where %s)" -msgstr "" -"Impossible de s?lectionner un enregistrement depuis la table <%s> (clef %s, " -"o? %s)" +msgstr "Impossible de s?lectionner un enregistrement depuis la table <%s> (clef %s, o? %s)" #: ../lib/vector/Vlib/clean_nodes.c:248 #, c-format msgid "Modifications: %d" -msgstr "" +msgstr "Modifications : %d" #: ../lib/vector/Vlib/write_pg.c:242 ../lib/vector/Vlib/write_pg.c:402 #: ../lib/vector/Vlib/write_pg.c:2584 ../lib/vector/Vlib/write_pg.c:2681 @@ -1449,7 +1383,7 @@ #: ../lib/vector/Vlib/write_pg.c:841 #, c-format msgid "Schema <%s> doesn't exist, created" -msgstr "" +msgstr "Le sch?ma <%s> n'existe pas, cr?ation" #: ../lib/vector/Vlib/write_pg.c:920 #, fuzzy, c-format @@ -1480,9 +1414,9 @@ msgstr "Type(s) d'entit?(s)" #: ../lib/vector/Vlib/write_pg.c:1117 ../lib/vector/Vlib/write_ogr.c:338 -#, c-format +#, fuzzy, c-format msgid "More layers defined, using driver <%s> and database <%s>" -msgstr "" +msgstr "Plus de couches d?finies, utilisation du pilote <%s> et de la base de donn?es <%s>" #: ../lib/vector/Vlib/write_pg.c:1122 ../lib/vector/Vlib/write_ogr.c:344 #, fuzzy @@ -1509,7 +1443,7 @@ #: ../lib/vector/Vlib/write_ogr.c:410 #, c-format msgid "Feature has more categories, using category %d (from layer %d)" -msgstr "" +msgstr "L'objet a plus de cat?gories, utilisation de la cat?gorie %d (depuis la couche %d)" #: ../lib/vector/Vlib/write_pg.c:1250 #, fuzzy, c-format @@ -1524,11 +1458,11 @@ #: ../lib/vector/Vlib/write_pg.c:1264 #, c-format msgid "Boundary/centroid skipped (output feature type: %s)" -msgstr "" +msgstr "Contour/centro?de saut? (type d'objet en sortie : %s)" #: ../lib/vector/Vlib/write_pg.c:1266 ../lib/vector/Vlib/write_ogr.c:439 msgid "Feature is not a polygon. Skipping." -msgstr "" +msgstr "L'objet n'est pas un polygone. Saut?." #: ../lib/vector/Vlib/write_pg.c:1272 #, fuzzy, c-format @@ -1547,11 +1481,11 @@ #: ../lib/vector/Vlib/write_pg.c:1872 msgid "Trying to insert 3D data into feature table which store 2D data only" -msgstr "" +msgstr "Tentative d'ins?rer des donn?es 3D dans une table avec des donn?es en 2D uniquement" #: ../lib/vector/Vlib/write_pg.c:1877 msgid "Trying to insert 2D data into feature table which store 3D data only" -msgstr "" +msgstr "Tentative d'ins?rer des donn?es 2D dans une table avec des donn?es en 3D uniquement" #: ../lib/vector/Vlib/write_pg.c:1902 #, fuzzy @@ -1571,7 +1505,7 @@ #: ../lib/vector/Vlib/write_pg.c:2040 #, c-format msgid "FID column must be integer, column <%s> ignored!" -msgstr "" +msgstr "La colonne FID doit ?tre un entier, colonne <%s> ignor?e !" #: ../lib/vector/Vlib/write_pg.c:2074 ../lib/vector/Vlib/write_ogr.c:653 #, fuzzy, c-format @@ -1580,7 +1514,7 @@ #: ../lib/vector/Vlib/write_pg.c:2081 msgid "Invalid value for FID column: NULL" -msgstr "" +msgstr "Valeur invalide pour la colonne FID : NULL" #: ../lib/vector/Vlib/write_pg.c:2173 #, fuzzy, c-format @@ -1638,12 +1572,8 @@ #: ../lib/vector/Vlib/geos.c:55 #, c-format -msgid "" -"Vect_read_line_geos(): feature id %d is not reasonable (max features in " -"vector map <%s>: %d)" -msgstr "" -"Vect_read_line_geos(): l'id d'objet %d n'est pas plausible (nombre maxi " -"d'objets dans la carte vecteur <%s>: %d)" +msgid "Vect_read_line_geos(): feature id %d is not reasonable (max features in vector map <%s>: %d)" +msgstr "Vect_read_line_geos(): l'id d'objet %d n'est pas plausible (nombre maxi d'objets dans la carte vecteur <%s>: %d)" #: ../lib/vector/Vlib/geos.c:60 msgid "only native format supported" @@ -1661,8 +1591,7 @@ #: ../lib/vector/Vlib/geos.c:104 #, c-format msgid "Vect_read_area_geos(): unable to read isle id %d of area id %d" -msgstr "" -"Vect_read_area_geos(): impossible de lire l'?le d'id %d de la surface d'id %d" +msgstr "Vect_read_area_geos(): impossible de lire l'?le d'id %d de la surface d'id %d" #: ../lib/vector/Vlib/geos.c:206 #, c-format @@ -1726,7 +1655,7 @@ #: ../lib/vector/Vlib/close.c:257 #, c-format msgid "Invalid request for writing frmt file - map format is %d" -msgstr "" +msgstr "Demande d'?criture invalide pour ?crire un fichier frmt - la carte est au format %d" #: ../lib/vector/Vlib/close.c:289 #, c-format @@ -1760,22 +1689,21 @@ #: ../lib/vector/Vlib/build_ogr.c:69 msgid "Empty OGR layer, nothing to build" -msgstr "" +msgstr "Couche OGR vide, rien ? construire" #: ../lib/vector/Vlib/build_ogr.c:80 ../lib/vector/Vlib/build_pg.c:93 -#, c-format +#, fuzzy, c-format msgid "Feature table <%s> has no primary key defined" -msgstr "" +msgstr "La table <%s> n'a pas de clef primaire d?finie" #: ../lib/vector/Vlib/build_ogr.c:82 -msgid "" -"Random read is not supported by OGR for this layer. Unable to build topology." -msgstr "" +msgid "Random read is not supported by OGR for this layer. Unable to build topology." +msgstr "La lecture al?atoire n'est pas support?e par OGR pour cette couche. Impossible de cr?er la topologie." #: ../lib/vector/Vlib/build_ogr.c:88 ../lib/vector/Vlib/build_pg.c:101 #, c-format msgid "Using external data format '%s' (feature type '%s')" -msgstr "" +msgstr "Utilisation du format de donn?es externe '%s' (entit? de type '%s')" #: ../lib/vector/Vlib/build_ogr.c:132 #, fuzzy, c-format @@ -1803,9 +1731,7 @@ #: ../lib/vector/Vlib/copy.c:81 #, c-format msgid "Unable to copy features. Input vector map <%s> is not open" -msgstr "" -"Impossible de copier les objets. La carte vecteur <%s> en entr?e n'est pas " -"ouverte" +msgstr "Impossible de copier les objets. La carte vecteur <%s> en entr?e n'est pas ouverte" #: ../lib/vector/Vlib/copy.c:104 #, c-format @@ -1815,9 +1741,7 @@ #: ../lib/vector/Vlib/copy.c:133 #, c-format msgid "Vector map <%s> not open on topological level. Areas will be skipped!" -msgstr "" -"La carte vecteur <%s> n'est pas ouverte au niveau topologique. Les surfaces " -"seront ignor?es !" +msgstr "La carte vecteur <%s> n'est pas ouverte au niveau topologique. Les surfaces seront ignor?es !" #: ../lib/vector/Vlib/copy.c:168 ../lib/vector/Vlib/copy.c:245 #: ../lib/ogsf/gp3.c:92 @@ -1832,11 +1756,12 @@ #: ../lib/vector/Vlib/copy.c:231 #, c-format msgid "Copying features (%s)..." -msgstr "" +msgstr "Copie de l'objet (%s) en cours ..." #: ../lib/vector/Vlib/copy.c:334 +#, fuzzy msgid "Writing new feature failed" -msgstr "" +msgstr "L'?criture des nouveaux objets a ?chou?" #: ../lib/vector/Vlib/copy.c:340 #, c-format @@ -1918,7 +1843,7 @@ #: ../lib/vector/Vlib/open_ogr.c:65 ../lib/vector/Vlib/write_ogr.c:129 msgid "OGR layer not defined" -msgstr "" +msgstr "Couche OGR non d?finie" #: ../lib/vector/Vlib/open_ogr.c:77 ../lib/vector/Vlib/field.c:675 #, c-format @@ -1933,9 +1858,7 @@ #: ../lib/vector/Vlib/open_ogr.c:145 ../lib/vector/Vlib/open_pg.c:193 #, fuzzy, c-format msgid "Unable to open feature index file for vector map <%s>" -msgstr "" -"Impossible d'ouvrir le fichier des cat?gories d'index pour la couche " -"vectorielle <%s>" +msgstr "Impossible d'ouvrir le fichier des cat?gories d'index pour la couche vectorielle <%s>" #: ../lib/vector/Vlib/open_ogr.c:191 #, c-format @@ -1964,22 +1887,13 @@ #: ../lib/vector/Vlib/open_ogr.c:279 #, c-format -msgid "" -"Feature index format version %d.%d is not supported by this release. Try to " -"rebuild topology or upgrade GRASS." -msgstr "" -"Le format d'index %d.%d n'est pas support? par cette version. Essayez de " -"reconstruire la topologie ou de mettre ? jour GRASS." +msgid "Feature index format version %d.%d is not supported by this release. Try to rebuild topology or upgrade GRASS." +msgstr "Le format d'index %d.%d n'est pas support? par cette version. Essayez de reconstruire la topologie ou de mettre ? jour GRASS." #: ../lib/vector/Vlib/open_ogr.c:284 #, c-format -msgid "" -"Your GRASS version does not fully support feature index format %d.%d of the " -"vector. Consider to rebuild topology or upgrade GRASS." -msgstr "" -"Votre version de GRASS ne supporte pas compl?tement le format d'index %d.%d " -"pour le vecteur. Reconstruisez la topologie ou faites une mise ? jour de " -"GRASS." +msgid "Your GRASS version does not fully support feature index format %d.%d of the vector. Consider to rebuild topology or upgrade GRASS." +msgstr "Votre version de GRASS ne supporte pas compl?tement le format d'index %d.%d pour le vecteur. Reconstruisez la topologie ou faites une mise ? jour de GRASS." #: ../lib/vector/Vlib/intersect.c:127 msgid "3D not supported by Vect_segment_intersection()" @@ -1991,8 +1905,7 @@ #: ../lib/vector/Vlib/intersect.c:407 msgid "Vect_segment_intersection() ERROR (collinear non vertical segments)" -msgstr "" -"Vect_segment_intersection() ERREUR (segments verticaux non colin?aires)" +msgstr "Vect_segment_intersection() ERREUR (segments verticaux non colin?aires)" #: ../lib/vector/Vlib/simple_features.c:225 #, fuzzy, c-format @@ -2002,9 +1915,7 @@ #: ../lib/vector/Vlib/simple_features.c:332 #, fuzzy msgid "Unable to get number of simple features" -msgstr "" -"Impossible d'ouvrir le fichier des cat?gories d'index pour la couche " -"vectorielle <%s>" +msgstr "Impossible d'ouvrir le fichier des cat?gories d'index pour la couche vectorielle <%s>" #: ../lib/vector/Vlib/simple_features.c:341 #, fuzzy, c-format @@ -2018,7 +1929,7 @@ #: ../lib/vector/Vlib/build_pg.c:95 msgid "Random read is not supported for this layer. Unable to build topology." -msgstr "" +msgstr "La lecture al?atoire n'est pas support?e pour cette couche. Impossible de reconstruire la topologie." #: ../lib/vector/Vlib/build_pg.c:105 msgid "Building pseudo-topology over simple features..." @@ -2032,7 +1943,7 @@ #: ../lib/vector/Vlib/build_pg.c:212 ../lib/vector/Vlib/open_pg.c:1475 #, c-format msgid "Inconsistency in topology: number of nodes %d (should be %d)" -msgstr "" +msgstr "Inconsistance dans la topologie : nombre de noeuds %d (devrait ?tre %d)" #: ../lib/vector/Vlib/build_pg.c:237 msgid "Cleaning-up topology schema..." @@ -2050,11 +1961,11 @@ #: ../lib/vector/Vlib/build_pg.c:323 msgid "Inconsistency in topology detected. Dead line found." -msgstr "" +msgstr "Inconsistance d?tect?e dans la topologie. Ligne morte trouv?e." #: ../lib/vector/Vlib/build_pg.c:377 msgid "Updating TopoGeometry data..." -msgstr "" +msgstr "Mise ? jour des donn?es TopoGeometry ..." #: ../lib/vector/Vlib/build_pg.c:462 #, fuzzy, c-format @@ -2091,13 +2002,12 @@ #: ../lib/vector/Vlib/build_pg.c:1000 msgid "Create simple features topology from topogeometry data..." -msgstr "" +msgstr "Cr?e des objets topologiques simples depuis des donn?es topogeometry ..." #: ../lib/vector/Vlib/build_pg.c:1018 #, c-format -msgid "" -"Unable to build simple features from topogeometry data. Unsupported type %d." -msgstr "" +msgid "Unable to build simple features from topogeometry data. Unsupported type %d." +msgstr "Impossible de construire des objets simples depuis les donn?es topogeometry. Type %d non support?." #: ../lib/vector/Vlib/level_two.c:23 #, fuzzy, c-format @@ -2179,8 +2089,9 @@ msgstr "Seul le format natif est pris en charge" #: ../lib/vector/Vlib/build_sfa.c:748 +#, fuzzy msgid "Feature index is built only for non-native formats. Nothing to dump." -msgstr "" +msgstr "L'index est construit uniquement pour les formats non natifs. Rien ? exporter." #: ../lib/vector/Vlib/line.c:184 ../lib/vector/Vlib/line.c:217 #: ../lib/vector/Vlib/line.c:250 @@ -2217,16 +2128,11 @@ #: ../lib/vector/Vlib/open.c:252 msgid "Temporary vector maps can be accessed only in the current mapset" -msgstr "" -"Les cartes vecteur temporaires ne sont accessibles que dans le jeu de cartes " -"courant" +msgstr "Les cartes vecteur temporaires ne sont accessibles que dans le jeu de cartes courant" #: ../lib/vector/Vlib/open.c:266 -msgid "" -"Vector map which is not in the current mapset cannot be opened for update" -msgstr "" -"Une couche vectorielle qui n'est pas dans le jeu de donn?es courant ne peut " -"pas ?tre ouverte pour une mise ? jour" +msgid "Vector map which is not in the current mapset cannot be opened for update" +msgstr "Une couche vectorielle qui n'est pas dans le jeu de donn?es courant ne peut pas ?tre ouverte pour une mise ? jour" #: ../lib/vector/Vlib/open.c:290 ../lib/vector/Vlib/open.c:426 #: ../lib/vector/Vlib/map.c:156 ../lib/vector/Vlib/map.c:166 @@ -2245,24 +2151,17 @@ #: ../lib/vector/Vlib/open.c:341 #, c-format msgid "Unable to open topology file for vector map <%s>" -msgstr "" -"Impossible d'ouvrir le fichier topologique pour la couche vectorielle <%s>" +msgstr "Impossible d'ouvrir le fichier topologique pour la couche vectorielle <%s>" #: ../lib/vector/Vlib/open.c:408 #, c-format -msgid "" -"Unable to open vector map <%s> on level %d. Try to rebuild vector topology " -"with v.build." -msgstr "" -"Impossible d'ouvrir la carte vecteur <%s> au niveau %d. Essayez de " -"reconstruire la topologie avec v.build." +msgid "Unable to open vector map <%s> on level %d. Try to rebuild vector topology with v.build." +msgstr "Impossible d'ouvrir la carte vecteur <%s> au niveau %d. Essayez de reconstruire la topologie avec v.build." #: ../lib/vector/Vlib/open.c:434 #, c-format msgid "Building topology for OGR layer <%s> from datasource '%s'..." -msgstr "" -"Construction de la topologie pour la couche OGR <%s> ? partir dans la source " -"'%s' ..." +msgstr "Construction de la topologie pour la couche OGR <%s> ? partir dans la source '%s' ..." #: ../lib/vector/Vlib/open.c:442 #, c-format @@ -2272,15 +2171,12 @@ #: ../lib/vector/Vlib/open.c:496 #, c-format msgid "Unable to open history file for vector map <%s>" -msgstr "" -"Impossible d'ouvrir le fichier d'historique pour la couche vectorielle <%s>" +msgstr "Impossible d'ouvrir le fichier d'historique pour la couche vectorielle <%s>" #: ../lib/vector/Vlib/open.c:768 #, c-format msgid "Unable to create vector map: <%s> is not in the current mapset (%s)" -msgstr "" -"Impossible de cr?er la carte vecteur : <%s> n'est pas dans le jeux de carte " -"courant (%s)" +msgstr "Impossible de cr?er la carte vecteur : <%s> n'est pas dans le jeux de carte courant (%s)" #: ../lib/vector/Vlib/open.c:777 #, c-format @@ -2302,21 +2198,20 @@ #: ../lib/vector/Vlib/open.c:835 #, fuzzy, c-format msgid "Unable to open history file of vector map <%s>" -msgstr "" -"Impossible d'ouvrir le fichier d'historique pour la couche vectorielle <%s>" +msgstr "Impossible d'ouvrir le fichier d'historique pour la couche vectorielle <%s>" #: ../lib/vector/Vlib/open.c:876 #, c-format msgid "Using OGR/%s format" -msgstr "" +msgstr "Utilisation du format OGR/%s" #: ../lib/vector/Vlib/open.c:880 msgid "Using PostGIS Topology format" -msgstr "" +msgstr "Utilisation du format PostGIS Topology" #: ../lib/vector/Vlib/open.c:882 msgid "Using PostGIS format" -msgstr "" +msgstr "Utilisation du format PostGIS" #: ../lib/vector/Vlib/open.c:885 msgid "Using native format" @@ -2328,15 +2223,13 @@ msgstr "Impossible d'ouvrir le fichier statistique <%s>" #: ../lib/vector/Vlib/open.c:1040 -#, c-format +#, fuzzy, c-format msgid "unknown %d (update Vect_maptype_info)" -msgstr "" +msgstr "%d inconnu (mise ? jour de Vect_maptype_info)" #: ../lib/vector/Vlib/open.c:1132 msgid "Size of 'coor' file differs from value saved in topology file" -msgstr "" -"La taille du fichier 'coord' est diff?rente de la valeur sauvegard?e dans le " -"fichier de topologie" +msgstr "La taille du fichier 'coord' est diff?rente de la valeur sauvegard?e dans le fichier de topologie" #: ../lib/vector/Vlib/open.c:1143 ../lib/vector/Vlib/open.c:1244 #, c-format @@ -2353,7 +2246,7 @@ #: ../lib/vector/Vlib/open.c:1339 msgid "OGR output also detected, using OGR" -msgstr "" +msgstr "Sortie OGR ?galement d?tect?e, utilisation de OGR" #: ../lib/vector/Vlib/cats.c:45 msgid "Vect_new_cats_struct(): Out of memory" @@ -2362,15 +2255,12 @@ #: ../lib/vector/Vlib/cats.c:127 #, c-format msgid "Too many categories (%d), unable to set cat %d (layer %d)" -msgstr "" -"Trop de cat?gories (%d), dans l'impossibilit? de mettre en cat %d (couche %d)" +msgstr "Trop de cat?gories (%d), dans l'impossibilit? de mettre en cat %d (couche %d)" #: ../lib/vector/Vlib/cats.c:419 #, c-format msgid "Unable to convert category string '%s' (from '%s') to category range" -msgstr "" -"Impossible de convertir les cat?gories de caract?res '%s' (de '%s') en " -"intervalle de cat?gorie" +msgstr "Impossible de convertir les cat?gories de caract?res '%s' (de '%s') en intervalle de cat?gorie" #: ../lib/vector/Vlib/cats.c:572 ../lib/vector/Vlib/cats.c:668 #, fuzzy @@ -2397,7 +2287,7 @@ #: ../lib/vector/Vlib/cats.c:627 #, c-format msgid "No categories selected with '%s' option" -msgstr "" +msgstr "Pas de cat?gories s?lectionn?es avec l'option '%s'" #: ../lib/vector/Vlib/cats.c:637 #, fuzzy, c-format @@ -2444,29 +2334,22 @@ #: ../lib/vector/Vlib/legal_vname.c:43 #, c-format msgid "Illegal vector map name <%s>. May not contain '.' or 'NULL'." -msgstr "" -"Nom de couche vectorielle ill?gale <%s>. Ne doit contenir ni '.', ni 'NULL'." +msgstr "Nom de couche vectorielle ill?gale <%s>. Ne doit contenir ni '.', ni 'NULL'." #: ../lib/vector/Vlib/legal_vname.c:50 #, c-format msgid "Illegal vector map name <%s>. Must start with a letter." -msgstr "" -"Nom de couche vectorielle ill?gale <%s>. Doit commencer par une lettre." +msgstr "Nom de couche vectorielle ill?gale <%s>. Doit commencer par une lettre." #: ../lib/vector/Vlib/legal_vname.c:58 #, c-format msgid "Illegal vector map name <%s>. Character '%c' not allowed." -msgstr "" -"Nom de couche vectorielle ill?gale <%s>. Le caract?re '%c' n'est pas " -"autoris?." +msgstr "Nom de couche vectorielle ill?gale <%s>. Le caract?re '%c' n'est pas autoris?." #: ../lib/vector/Vlib/legal_vname.c:65 #, c-format -msgid "" -"Illegal vector map name <%s>. SQL keyword cannot be used as vector map name." -msgstr "" -"Nom de couche vectorielle ill?gale <%s>. Les mot-clefs SQL ne peut pas ?tre " -"utilis?s comme nom de carte vectorielle." +msgid "Illegal vector map name <%s>. SQL keyword cannot be used as vector map name." +msgstr "Nom de couche vectorielle ill?gale <%s>. Les mot-clefs SQL ne peut pas ?tre utilis?s comme nom de carte vectorielle." #: ../lib/vector/Vlib/legal_vname.c:100 ../lib/vector/Vlib/legal_vname.c:104 #, fuzzy, c-format @@ -2494,8 +2377,9 @@ msgstr "la couche matricielle demand?e <%s> n'a pas ?t? trouv?e" #: ../lib/vector/Vlib/open_pg.c:181 +#, fuzzy msgid "Topology schema not found." -msgstr "" +msgstr "Sch?ma Topology non trouv?." #: ../lib/vector/Vlib/open_pg.c:273 #, fuzzy, c-format @@ -2525,13 +2409,11 @@ #: ../lib/vector/Vlib/open_pg.c:476 #, c-format msgid "PostGIS topology schema <%s> dropped" -msgstr "" +msgstr "Sch?ma de topologie PostGIS <%s> supprim?" #: ../lib/vector/Vlib/open_pg.c:549 #, fuzzy -msgid "" -"Connection to PostgreSQL database failed. Try to set up username/password by " -"db.login." +msgid "Connection to PostgreSQL database failed. Try to set up username/password by db.login." msgstr "Echec de la connexion." #: ../lib/vector/Vlib/open_pg.c:556 @@ -2542,7 +2424,7 @@ #: ../lib/vector/Vlib/open_pg.c:561 #, c-format msgid "<%s> is not PostGIS database. DB table 'spatial_ref_sys' not found." -msgstr "" +msgstr "<%s> n'est pas une base de don?es PostGIS. Table 'spatial_ref_sys' non trouv?e." #: ../lib/vector/Vlib/open_pg.c:570 #, fuzzy, c-format @@ -2550,13 +2432,14 @@ msgstr "L'objet OGR sans ID a ?t? ignor?" #: ../lib/vector/Vlib/open_pg.c:657 +#, fuzzy msgid "Empty bounding box" -msgstr "" +msgstr "Boite enveloppante vide" #: ../lib/vector/Vlib/open_pg.c:758 #, c-format msgid "Inconsistency in topology: unable to read node %d" -msgstr "" +msgstr "Inconsistance dans la topologie : impossible de lire le noeud %d" #: ../lib/vector/Vlib/open_pg.c:824 #, fuzzy, c-format @@ -2569,9 +2452,9 @@ msgstr "Nombre de surfaces sans centro?de : %d" #: ../lib/vector/Vlib/open_pg.c:1051 -#, c-format +#, fuzzy, c-format msgid "Isle %d without boundary detected" -msgstr "" +msgstr "?le %d sans contour d?tect?e" #: ../lib/vector/Vlib/open_pg.c:1118 #, fuzzy @@ -2588,31 +2471,32 @@ #: ../lib/vector/Vlib/open_pg.c:1149 #, c-format msgid "Different number of nodes detected (%d, %d)" -msgstr "" +msgstr "Nombre de noeuds diff?rents d?tect?s (%d, %d)" #: ../lib/vector/Vlib/open_pg.c:1177 ../lib/vector/Vlib/open_pg.c:1199 #, c-format msgid "Different number of areas detected (%d, %d)" -msgstr "" +msgstr "Nombre de surfaces diff?rents d?tect?s (%d, %d)" #: ../lib/vector/Vlib/open_pg.c:1370 +#, fuzzy msgid "To be implemented: isles not attached in Topo-Geo-only mode" -msgstr "" +msgstr "A impl?menter : ?les non attach?es dans le mode Topo-G?o" #: ../lib/vector/Vlib/open_pg.c:1559 #, c-format msgid "Inconsistency in topology: number of points %d (should be %d)" -msgstr "" +msgstr "Inconsistance dans la topologie : nombre de points %d (devrait ?tre %d)" #: ../lib/vector/Vlib/open_pg.c:1604 #, c-format msgid "Inconsistency in topology: number of lines %d (should be %d)" -msgstr "" +msgstr "Inconsistance dans la topologie : nombre de lignes %d (devrait ?tre %d)" #: ../lib/vector/Vlib/open_pg.c:1658 #, c-format msgid "Inconsistency in topology: number of centroids %d (should be %d)" -msgstr "" +msgstr "Inconsistance dans la topologie : nombre de centro?des %d (devrait ?tre %d)" #: ../lib/vector/Vlib/snap.c:213 msgid "Snap vertices Pass 1: select points" @@ -2681,8 +2565,7 @@ #: ../lib/vector/Vlib/net.c:369 #, c-format msgid "Data type of column <%s> not supported (must be numeric)" -msgstr "" -"Type de donn?es de la colonne <%s> non pris en charge (doit ?tre numeric)" +msgstr "Type de donn?es de la colonne <%s> non pris en charge (doit ?tre numeric)" #: ../lib/vector/Vlib/net.c:222 msgid "Registering arcs..." @@ -2690,21 +2573,13 @@ #: ../lib/vector/Vlib/net.c:251 #, c-format -msgid "" -"Database record for line %d (cat = %d, forward/both direction(s)) not found " -"(forward/both direction(s) of line skipped)" -msgstr "" -"L'enregistrement de la base de donn?es de la ligne %d (cat = %d, avant/" -"toutes directions) introuvable (avant/toutes directions de la ligne saut?e)" +msgid "Database record for line %d (cat = %d, forward/both direction(s)) not found (forward/both direction(s) of line skipped)" +msgstr "L'enregistrement de la base de donn?es de la ligne %d (cat = %d, avant/toutes directions) introuvable (avant/toutes directions de la ligne saut?e)" #: ../lib/vector/Vlib/net.c:270 #, c-format -msgid "" -"Database record for line %d (cat = %d, backword direction) not " -"found(direction of line skipped)" -msgstr "" -"L'enregistrement de la base de donn?es de la ligne %d (cat = %d, direction " -"arri?re) introuvable (direction de la ligne saut?e)" +msgid "Database record for line %d (cat = %d, backword direction) not found(direction of line skipped)" +msgstr "L'enregistrement de la base de donn?es de la ligne %d (cat = %d, direction arri?re) introuvable (direction de la ligne saut?e)" #: ../lib/vector/Vlib/net.c:319 msgid "Cannot add network arc" @@ -2717,9 +2592,7 @@ #: ../lib/vector/Vlib/net.c:412 #, c-format msgid "Database record for node %d (cat = %d) not found (cost set to 0)" -msgstr "" -"L'enregistrement de la base de donn?es pour le noeud %d (cat = %d) n'a pas " -"?t? trouv? (co?t fix? ? 0)" +msgstr "L'enregistrement de la base de donn?es pour le noeud %d (cat = %d) n'a pas ?t? trouv? (co?t fix? ? 0)" #: ../lib/vector/Vlib/net.c:441 msgid "Flattening the graph..." @@ -2743,13 +2616,11 @@ msgstr "" #: ../lib/vector/Vlib/buffer2.c:589 -msgid "" -"Next edge was visited (right) but it is not the first one !!! breaking loop" +msgid "Next edge was visited (right) but it is not the first one !!! breaking loop" msgstr "" #: ../lib/vector/Vlib/buffer2.c:600 -msgid "" -"Next edge was visited (left) but it is not the first one !!! breaking loop" +msgid "Next edge was visited (left) but it is not the first one !!! breaking loop" msgstr "" #: ../lib/vector/Vlib/buffer2.c:648 @@ -2780,8 +2651,7 @@ #: ../lib/vector/Vlib/read_pg.c:365 #, c-format -msgid "" -"Requesting invalid feature from cache (%d). Number of features in cache: %d" +msgid "Requesting invalid feature from cache (%d). Number of features in cache: %d" msgstr "" #: ../lib/vector/Vlib/read_pg.c:368 @@ -2790,48 +2660,49 @@ msgstr "Objet %d : type (%d) inattendu - devrait ?tre %d" #: ../lib/vector/Vlib/read_pg.c:575 +#, fuzzy msgid "No geometry or topo geometry column defined" -msgstr "" +msgstr "Pas de colonne de g?omt?rie ou de g?om?trie topo d?finie" #: ../lib/vector/Vlib/read_pg.c:585 msgid "Random access not supported. Primary key not defined." -msgstr "" +msgstr "Acc?s al?atoires non support?s. Clef primaire non d?finie." #: ../lib/vector/Vlib/read_pg.c:652 msgid "Inconsistency in topology: detected centroid (should be point)" -msgstr "" +msgstr "Inconsistance dans la topologie : contro?des d?tect?s (devraient ?tre des points)" #: ../lib/vector/Vlib/read_pg.c:662 msgid "Inconsistency in topology: detected boundary (should be line)" -msgstr "" +msgstr "Inconsistance dans la topologie : contours d?tect?s (devraient ?tre des lignes)" #: ../lib/vector/Vlib/read_pg.c:787 #, c-format msgid "Invalid WKB content: %d bytes" -msgstr "" +msgstr "Contenu WKB invalide : %d bytes" #: ../lib/vector/Vlib/read_pg.c:803 msgid "Reading EWKB with 4-dimensional coordinates (XYZM) is not supported" -msgstr "" +msgstr "Lecture de EWKB avec des coordonn?es 4 dimensions (XYZM) non support?e" #: ../lib/vector/Vlib/read_pg.c:996 ../lib/vector/Vlib/read_pg.c:1066 #: ../lib/vector/Vlib/read_pg.c:1137 msgid "Length of input WKB is too small" -msgstr "" +msgstr "Longueur du WKB en entr?e trop petite" #: ../lib/vector/Vlib/read_pg.c:1077 #, c-format msgid "Invalid cache index %d (max: %d)" -msgstr "" +msgstr "Index de cache invalide %d (max : %d)" #: ../lib/vector/Vlib/read_pg.c:1215 #, c-format msgid "Corrupted data. %s." -msgstr "" +msgstr "Donn?es corrompues. %s." #: ../lib/vector/Vlib/read_pg.c:1217 msgid "Corrupted data" -msgstr "" +msgstr "Donn?es corrompues" #: ../lib/vector/Vlib/read_pg.c:1510 ../lib/vector/Vlib/read_pg.c:1541 #, c-format @@ -2858,9 +2729,7 @@ #: ../lib/vector/Vlib/field.c:96 #, fuzzy msgid "Unable to add attribute link, vector map is not opened in WRITE mode" -msgstr "" -"Impossible d'ajouter un lien base de donn?es, la couche n'est pas ouverte en " -"ECRITURE." +msgstr "Impossible d'ajouter un lien base de donn?es, la couche n'est pas ouverte en ECRITURE." #: ../lib/vector/Vlib/field.c:103 #, fuzzy @@ -2882,10 +2751,9 @@ msgstr "Connexion ? la base de donn?es ind?finie pour la couche %d" #: ../lib/vector/Vlib/field.c:185 -msgid "" -"More DB links defined for input vector map. Using only first DB link for " -"output." -msgstr "" +#, fuzzy +msgid "More DB links defined for input vector map. Using only first DB link for output." +msgstr "Plusieurs liens base de donn?es d?finis pour la carte vecteur en entr?e. Utilisation uniquement du premier lien pour la sortie." #: ../lib/vector/Vlib/field.c:261 #, c-format @@ -2931,22 +2799,17 @@ msgstr "Impossible d'ouvrir le pilote OGR DBMI" #: ../lib/vector/Vlib/field.c:758 -msgid "" -"All FID tests failed. Neither 'FID' nor 'ogc_fid' nor 'ogr_fid' nor 'gid' " -"available in OGR DB table" -msgstr "" -"Tous les tests FID ont ?chou?s. Ni 'FID' ni 'ogc_fid' ni 'ogr_fid' ni 'gid' " -"ne sont disponibles dans la table OGR DB" +msgid "All FID tests failed. Neither 'FID' nor 'ogc_fid' nor 'ogr_fid' nor 'gid' available in OGR DB table" +msgstr "Tous les tests FID ont ?chou?s. Ni 'FID' ni 'ogc_fid' ni 'ogr_fid' ni 'gid' ne sont disponibles dans la table OGR DB" #: ../lib/vector/Vlib/field.c:825 -#, c-format -msgid "" -"Feature table <%s> has no primary key defined. Unable to define DB links." -msgstr "" +#, fuzzy, c-format +msgid "Feature table <%s> has no primary key defined. Unable to define DB links." +msgstr "La table <%s> n'a pas de clef primaire d?finie. Impossible de d?finir le lien base de donn?e." #: ../lib/vector/Vlib/field.c:845 msgid "GRASS not compiled with PostgreSQL support" -msgstr "" +msgstr "GRASS n'est pas compil? avec le support PostgreSQL" #: ../lib/vector/Vlib/field.c:877 #, fuzzy @@ -2956,14 +2819,11 @@ #: ../lib/vector/Vlib/field.c:911 #, fuzzy, c-format msgid "Unable to create database definition file for vector map <%s>" -msgstr "" -"Impossible d'ouvrir le fichier d'historique pour la couche vectorielle <%s>" +msgstr "Impossible d'ouvrir le fichier d'historique pour la couche vectorielle <%s>" #: ../lib/vector/Vlib/field.c:1006 msgid "Bug: attempt to update map which is not in current mapset" -msgstr "" -"Bug: tentative de mise ? jour d'une couche qui n'est pas dans le jeu de " -"cartes courant" +msgstr "Bug: tentative de mise ? jour d'une couche qui n'est pas dans le jeu de cartes courant" #: ../lib/vector/Vlib/write_ogr.c:134 #, fuzzy, c-format @@ -2982,15 +2842,15 @@ #: ../lib/vector/Vlib/write_ogr.c:424 msgid "Feature is not a point. Skipping." -msgstr "" +msgstr "L'entit? n'est pas un point. Saut?." #: ../lib/vector/Vlib/write_ogr.c:432 msgid "Feature is not a line. Skipping." -msgstr "" +msgstr "L'entit? n'est pas une ligne. Saut?." #: ../lib/vector/Vlib/write_ogr.c:446 msgid "Feature is not a face. Skipping." -msgstr "" +msgstr "L'entit? n'est pas une face. Saut?." #: ../lib/vector/Vlib/write_ogr.c:452 #, c-format @@ -2999,7 +2859,7 @@ #: ../lib/vector/Vlib/write_ogr.c:471 msgid "Boundary is not closed. Feature skipped." -msgstr "" +msgstr "Contour non ferm?. Entit? saut?e." #: ../lib/vector/Vlib/write_ogr.c:500 msgid "Unable to writes feature attributes" @@ -3016,9 +2876,7 @@ msgstr "Impossible de cr?er la champ <%s>" #: ../lib/vector/Vlib/dgraph.c:432 -msgid "" -"Trying to add more edges to the planar_graph than the initial allocation " -"size allows" +msgid "Trying to add more edges to the planar_graph than the initial allocation size allows" msgstr "" #: ../lib/vector/Vlib/box.c:228 @@ -3034,9 +2892,7 @@ #: ../lib/vector/Vlib/box.c:289 #, fuzzy, c-format msgid "Unable to determine bbox for area %d" -msgstr "" -"Impossible d'ouvrir le fichier des cat?gories d'index pour la couche " -"vectorielle <%s>" +msgstr "Impossible d'ouvrir le fichier des cat?gories d'index pour la couche vectorielle <%s>" #: ../lib/vector/Vlib/box.c:335 #, fuzzy, c-format @@ -3075,15 +2931,15 @@ #: ../lib/vector/Vlib/dangles.c:148 msgid "Changed" -msgstr "" +msgstr "Modifi?" #: ../lib/vector/Vlib/dangles.c:151 msgid "Removed" -msgstr "" +msgstr "Supprim?" #: ../lib/vector/Vlib/dangles.c:154 msgid "Selected" -msgstr "" +msgstr "S?lectionn?" #: ../lib/vector/Vlib/dangles.c:262 #, c-format @@ -3113,7 +2969,7 @@ #: ../lib/vector/Vlib/read_sfa.c:95 #, c-format msgid "Centroid %d: invalid area %d" -msgstr "" +msgstr "Centro?de %d : surface %d invalide" #: ../lib/vector/Vlib/select.c:116 #, c-format @@ -3123,8 +2979,7 @@ #: ../lib/vector/Vlib/header.c:87 #, c-format msgid "Unable to create header file for vector map <%s>" -msgstr "" -"Impossible de cr?er le fichier d'en-t?te pour la couche vectorielle <%s>" +msgstr "Impossible de cr?er le fichier d'en-t?te pour la couche vectorielle <%s>" #: ../lib/vector/Vlib/header.c:131 #, c-format @@ -3172,7 +3027,7 @@ #: ../lib/vector/Vlib/map.c:366 #, c-format msgid "Ignoring invalid mapset: %s" -msgstr "" +msgstr "Jeu de cartes invalide ignor? : %s" #: ../lib/vector/Vlib/map.c:371 #, c-format @@ -3225,7 +3080,7 @@ #: ../lib/vector/Vlib/remove_areas.c:194 ../lib/vector/Vlib/remove_areas.c:602 #, c-format msgid "%d areas of total size %g removed" -msgstr "" +msgstr "%d surfaces d'une taille totale de %g supprim?es" #: ../lib/vector/Vlib/remove_areas.c:395 #, fuzzy @@ -3320,7 +3175,7 @@ #: ../lib/vector/Vlib/break_polygons.c:592 msgid "Point not in search tree!" -msgstr "" +msgstr "Point pas dans l'arbre de recherche !" #: ../lib/segment/format.c:143 msgid "Segment format: file size too large" @@ -3390,8 +3245,7 @@ #: ../lib/temporal/lib/default_name.c:69 msgid "Programmer error - only SQLite driver is currently supported" -msgstr "" -"Erreur du programmeur - seul le pilote SQLite est actuellement support?" +msgstr "Erreur du programmeur - seul le pilote SQLite est actuellement support?" #: ../lib/gpde/n_parse_options.c:106 msgid "The calculation time in seconds" @@ -3607,8 +3461,7 @@ #: ../lib/python/temporal/stds_export.py:110 #, fuzzy, python-format msgid "Unable to export color rules for raster map <%s> r.out.gdal" -msgstr "" -"Impossible d'ouvrir le fichier topologique pour la couche vectorielle <%s>" +msgstr "Impossible d'ouvrir le fichier topologique pour la couche vectorielle <%s>" #: ../lib/python/temporal/stds_export.py:134 #, fuzzy, python-format @@ -3648,15 +3501,12 @@ #: ../lib/python/temporal/open_stds.py:122 #, fuzzy, python-format -msgid "" -"Space time %(sp)s dataset <%(name)s> is already in the database. Use the " -"overwrite flag." +msgid "Space time %(sp)s dataset <%(name)s> is already in the database. Use the overwrite flag." msgstr "La couche vectorielle <%s> existe d?j? et va ?tre ?cras?" #: ../lib/python/temporal/open_stds.py:157 #, fuzzy, python-format -msgid "" -"Overwriting space time %(sp)s dataset <%(name)s> and unregistering all maps" +msgid "Overwriting space time %(sp)s dataset <%(name)s> and unregistering all maps" msgstr "Impossible de cr?er le fichier d'en-t?te pour [%s]" #: ../lib/python/temporal/open_stds.py:165 @@ -3667,8 +3517,7 @@ #: ../lib/python/temporal/open_stds.py:208 #: ../lib/python/temporal/extract.py:114 ../lib/python/temporal/mapcalc.py:236 #, fuzzy, python-format -msgid "" -"Map <%s> is already in temporal database, use overwrite flag to overwrite" +msgid "Map <%s> is already in temporal database, use overwrite flag to overwrite" msgstr "La couche vectorielle <%s> existe d?j? et va ?tre ?cras?" #: ../lib/python/temporal/sampling.py:91 ../lib/python/temporal/sampling.py:96 @@ -3694,9 +3543,7 @@ #: ../lib/python/temporal/abstract_dataset.py:388 #, python-format -msgid "" -"Unable to insert dataset <%(ds)s> of type %(type)s in the temporal database. " -"The mapset of the dataset does not match the current mapset" +msgid "Unable to insert dataset <%(ds)s> of type %(type)s in the temporal database. The mapset of the dataset does not match the current mapset" msgstr "" #: ../lib/python/temporal/abstract_dataset.py:428 @@ -3705,9 +3552,7 @@ #: ../lib/python/temporal/abstract_map_dataset.py:415 #: ../lib/python/temporal/abstract_map_dataset.py:511 #, python-format -msgid "" -"Unable to update dataset <%(ds)s> of type %(type)s in the temporal database. " -"The mapset of the dataset does not match the current mapset" +msgid "Unable to update dataset <%(ds)s> of type %(type)s in the temporal database. The mapset of the dataset does not match the current mapset" msgstr "" #: ../lib/python/temporal/factory.py:47 @@ -3753,9 +3598,7 @@ #: ../lib/python/temporal/space_time_datasets.py:249 #, fuzzy, python-format msgid "Invalid datetime in timestamp for raster map <%s>" -msgstr "" -"Fichier d'?tiquette date&heure (timestamp) invalide pour la couche %s %s " -"dans le jeu de donn?es (mapset) %s" +msgstr "Fichier d'?tiquette date&heure (timestamp) invalide pour la couche %s %s dans le jeu de donn?es (mapset) %s" #: ../lib/python/temporal/space_time_datasets.py:254 #: ../lib/python/temporal/space_time_datasets.py:588 @@ -3782,9 +3625,7 @@ #: ../lib/python/temporal/space_time_datasets.py:583 #, fuzzy, python-format msgid "Invalid datetime in timestamp for 3D raster map <%s>" -msgstr "" -"Fichier d'?tiquette date&heure (timestamp) invalide pour la couche %s %s " -"dans le jeu de donn?es (mapset) %s" +msgstr "Fichier d'?tiquette date&heure (timestamp) invalide pour la couche %s %s dans le jeu de donn?es (mapset) %s" #: ../lib/python/temporal/space_time_datasets.py:847 #, fuzzy, python-format @@ -3799,9 +3640,7 @@ #: ../lib/python/temporal/space_time_datasets.py:875 #, fuzzy, python-format msgid "Invalid datetime in timestamp for vector map <%s>" -msgstr "" -"Fichier d'?tiquette date&heure (timestamp) invalide pour la couche %s %s " -"dans le jeu de donn?es (mapset) %s" +msgstr "Fichier d'?tiquette date&heure (timestamp) invalide pour la couche %s %s dans le jeu de donn?es (mapset) %s" #: ../lib/python/temporal/space_time_datasets.py:891 #, fuzzy, python-format @@ -3816,8 +3655,7 @@ #: ../lib/python/temporal/stds_import.py:95 #, fuzzy, python-format msgid "Unable to set the color rules for raster map <%s>." -msgstr "" -"Impossible d'ouvrir le fichier topologique pour la couche vectorielle <%s>" +msgstr "Impossible d'ouvrir le fichier topologique pour la couche vectorielle <%s>" #: ../lib/python/temporal/stds_import.py:119 #, fuzzy, python-format @@ -3869,8 +3707,7 @@ "Difference between PROJ_INFO file of imported map and of current location:\n" "{diff}" msgstr "" -"Diff?rences antre le fichier PROJ_INFO de la carte import?e et celui du " -"secteur courant :\n" +"Diff?rences antre le fichier PROJ_INFO de la carte import?e et celui du secteur courant :\n" "{diff}" #: ../lib/python/temporal/stds_import.py:253 @@ -3933,9 +3770,7 @@ #: ../lib/python/temporal/stds_import.py:411 #, fuzzy, python-format -msgid "" -"Space time %(t)s dataset <%(sp)s> is already in the database. Use the " -"overwrite flag." +msgid "Space time %(t)s dataset <%(sp)s> is already in the database. Use the overwrite flag." msgstr "La couche vectorielle <%s> existe d?j? et va ?tre ?cras?" #: ../lib/python/temporal/stds_import.py:431 @@ -3959,12 +3794,8 @@ #: ../lib/python/temporal/temporal_vector_algebra.py:372 #, fuzzy, python-format -msgid "" -"Error vector maps with basename %s exist. Use --o flag to overwrite existing " -"file" -msgstr "" -"Des cartes vecteur d'erreur avec %s comme base de nom existent. Utiliser " -"l'option --o pour ?craser les fichiers existants" +msgid "Error vector maps with basename %s exist. Use --o flag to overwrite existing file" +msgstr "Des cartes vecteur d'erreur avec %s comme base de nom existent. Utiliser l'option --o pour ?craser les fichiers existants" #: ../lib/python/temporal/temporal_vector_algebra.py:404 #, fuzzy, python-format @@ -3981,9 +3812,7 @@ msgstr "La couche vectorielle <%s> existe d?j? et va ?tre ?cras?" #: ../lib/python/temporal/core.py:576 -msgid "" -"Unable to initialize the temporal DBMI interface. Please use t.connect to " -"specify the driver and the database string" +msgid "Unable to initialize the temporal DBMI interface. Please use t.connect to specify the driver and the database string" msgstr "" #: ../lib/python/temporal/core.py:639 @@ -4025,46 +3854,32 @@ #: ../lib/python/temporal/core.py:913 #, python-format -msgid "" -"Unable to mogrify sql statement. There is no temporal database connection " -"defined for mapset <%(mapset)s>" +msgid "Unable to mogrify sql statement. There is no temporal database connection defined for mapset <%(mapset)s>" msgstr "" #: ../lib/python/temporal/core.py:936 #, fuzzy, python-format -msgid "" -"Unable to check table. There is no temporal database connection defined for " -"mapset <%(mapset)s>" +msgid "Unable to check table. There is no temporal database connection defined for mapset <%(mapset)s>" msgstr "impossible d'ouvrir le fichier de datums : %s" #: ../lib/python/temporal/core.py:953 #, python-format -msgid "" -"Unable to execute sql statement. There is no temporal database connection " -"defined for mapset <%(mapset)s>" +msgid "Unable to execute sql statement. There is no temporal database connection defined for mapset <%(mapset)s>" msgstr "" #: ../lib/python/temporal/core.py:964 #, fuzzy, python-format -msgid "" -"Unable to fetch one. There is no temporal database connection defined for " -"mapset <%(mapset)s>" -msgstr "" -"Impossible d'ouvrir le fichier d'historique pour la couche vectorielle <%s>" +msgid "Unable to fetch one. There is no temporal database connection defined for mapset <%(mapset)s>" +msgstr "Impossible d'ouvrir le fichier d'historique pour la couche vectorielle <%s>" #: ../lib/python/temporal/core.py:975 #, fuzzy, python-format -msgid "" -"Unable to fetch all. There is no temporal database connection defined for " -"mapset <%(mapset)s>" -msgstr "" -"Impossible d'ouvrir le fichier d'historique pour la couche vectorielle <%s>" +msgid "Unable to fetch all. There is no temporal database connection defined for mapset <%(mapset)s>" +msgstr "Impossible d'ouvrir le fichier d'historique pour la couche vectorielle <%s>" #: ../lib/python/temporal/core.py:993 #, python-format -msgid "" -"Unable to execute transaction. There is no temporal database connection " -"defined for mapset <%(mapset)s>" +msgid "Unable to execute transaction. There is no temporal database connection defined for mapset <%(mapset)s>" msgstr "" #: ../lib/python/temporal/core.py:1074 @@ -4135,23 +3950,17 @@ #: ../lib/python/temporal/abstract_space_time_dataset.py:1598 #, python-format -msgid "" -"Unable to shift dataset <%(ds)s> of type %(type)s in the temporal database. " -"The mapset of the dataset does not match the current mapset" +msgid "Unable to shift dataset <%(ds)s> of type %(type)s in the temporal database. The mapset of the dataset does not match the current mapset" msgstr "" #: ../lib/python/temporal/abstract_space_time_dataset.py:1767 #, python-format -msgid "" -"Unable to snap dataset <%(ds)s> of type %(type)s in the temporal database. " -"The mapset of the dataset does not match the current mapset" +msgid "Unable to snap dataset <%(ds)s> of type %(type)s in the temporal database. The mapset of the dataset does not match the current mapset" msgstr "" #: ../lib/python/temporal/abstract_space_time_dataset.py:1869 #, python-format -msgid "" -"Unable to rename dataset <%(ds)s> of type %(type)s in the temporal database. " -"The mapset of the dataset does not match the current mapset" +msgid "Unable to rename dataset <%(ds)s> of type %(type)s in the temporal database. The mapset of the dataset does not match the current mapset" msgstr "" #: ../lib/python/temporal/abstract_space_time_dataset.py:1878 @@ -4166,9 +3975,7 @@ #: ../lib/python/temporal/abstract_space_time_dataset.py:1949 #: ../lib/python/temporal/abstract_map_dataset.py:823 #, python-format -msgid "" -"Unable to delete dataset <%(ds)s> of type %(type)s from the temporal " -"database. The mapset of the dataset does not match the current mapset" +msgid "Unable to delete dataset <%(ds)s> of type %(type)s from the temporal database. The mapset of the dataset does not match the current mapset" msgstr "" #: ../lib/python/temporal/abstract_space_time_dataset.py:1962 @@ -4183,15 +3990,11 @@ #: ../lib/python/temporal/abstract_space_time_dataset.py:2046 #, fuzzy, python-format -msgid "" -"Unable to register map in dataset <%(ds)s> of type %(type)s. The mapset of " -"the dataset does not match the current mapset" +msgid "Unable to register map in dataset <%(ds)s> of type %(type)s. The mapset of the dataset does not match the current mapset" msgstr "la couche matricielle demand?e <%s> n'a pas ?t? trouv?e" #: ../lib/python/temporal/abstract_space_time_dataset.py:2055 -msgid "" -"Only a map that was inserted in the temporal database can be registered in a " -"space time dataset" +msgid "Only a map that was inserted in the temporal database can be registered in a space time dataset" msgstr "" #: ../lib/python/temporal/abstract_space_time_dataset.py:2078 @@ -4206,15 +4009,12 @@ #: ../lib/python/temporal/abstract_space_time_dataset.py:2100 #, fuzzy, python-format -msgid "" -"Temporal type of space time dataset <%(id)s> and map <%(map)s> with layer " -"%(l)s are different" +msgid "Temporal type of space time dataset <%(id)s> and map <%(map)s> with layer %(l)s are different" msgstr "Impossible de copier la couche vectorielle <%s> vers <%s>" #: ../lib/python/temporal/abstract_space_time_dataset.py:2106 #, fuzzy, python-format -msgid "" -"Temporal type of space time dataset <%(id)s> and map <%(map)s> are different" +msgid "Temporal type of space time dataset <%(id)s> and map <%(map)s> are different" msgstr "la couche matricielle demand?e <%s> n'a pas ?t? trouv?e" #: ../lib/python/temporal/abstract_space_time_dataset.py:2121 @@ -4224,16 +4024,12 @@ #: ../lib/python/temporal/abstract_space_time_dataset.py:2131 #, python-format -msgid "" -"Relative time units of space time dataset <%(id)s> and map <%(map)s> with " -"layer %(l)s are different" +msgid "Relative time units of space time dataset <%(id)s> and map <%(map)s> with layer %(l)s are different" msgstr "" #: ../lib/python/temporal/abstract_space_time_dataset.py:2137 #, python-format -msgid "" -"Relative time units of space time dataset <%(id)s> and map <%(map)s> are " -"different" +msgid "Relative time units of space time dataset <%(id)s> and map <%(map)s> are different" msgstr "" #: ../lib/python/temporal/abstract_space_time_dataset.py:2143 @@ -4252,17 +4048,12 @@ #: ../lib/python/temporal/abstract_space_time_dataset.py:2200 #, python-format -msgid "" -"Unable to unregister map from dataset <%(ds)s> of type %(type)s in the " -"temporal database. The mapset of the dataset does not match the current " -"mapset" +msgid "Unable to unregister map from dataset <%(ds)s> of type %(type)s in the temporal database. The mapset of the dataset does not match the current mapset" msgstr "" #: ../lib/python/temporal/abstract_space_time_dataset.py:2213 #, fuzzy, python-format -msgid "" -"Map <%(map)s> with layer %(l)s is not registered in space time dataset <" -"%(base)s>" +msgid "Map <%(map)s> with layer %(l)s is not registered in space time dataset <%(base)s>" msgstr "pas de fichier %s disponible dans le jeu de donn?es actuel\n" #: ../lib/python/temporal/abstract_space_time_dataset.py:2219 @@ -4272,8 +4063,7 @@ #: ../lib/python/temporal/abstract_space_time_dataset.py:2280 #, python-format -msgid "" -"Update metadata, spatial and temporal extent from all registered maps of <%s>" +msgid "Update metadata, spatial and temporal extent from all registered maps of <%s>" msgstr "" #: ../lib/python/temporal/mapcalc.py:105 @@ -4289,10 +4079,7 @@ msgstr "" #: ../lib/python/temporal/mapcalc.py:151 -msgid "" -"Found more than a single map in a sample granule. Only the first map is used " -"for computation. Use t.rast.aggregate.ds to create synchronous raster " -"datasets." +msgid "Found more than a single map in a sample granule. Only the first map is used for computation. Use t.rast.aggregate.ds to create synchronous raster datasets." msgstr "" #: ../lib/python/temporal/mapcalc.py:169 @@ -4356,9 +4143,7 @@ #: ../lib/python/temporal/aggregation.py:135 #, fuzzy, python-format -msgid "" -"Raster map <%(name)s> is already in temporal database, use overwrite flag to " -"overwrite" +msgid "Raster map <%(name)s> is already in temporal database, use overwrite flag to overwrite" msgstr "La couche vectorielle <%s> existe d?j? et va ?tre ?cras?" #: ../lib/python/temporal/aggregation.py:140 @@ -4378,9 +4163,7 @@ #: ../lib/python/temporal/aggregation.py:289 #, python-format -msgid "" -"Unable to perform aggregation. Output raster map <%(name)s> exists and " -"overwrite flag was not set" +msgid "Unable to perform aggregation. Output raster map <%(name)s> exists and overwrite flag was not set" msgstr "" #: ../lib/python/temporal/register.py:76 ../lib/python/temporal/register.py:79 @@ -4404,9 +4187,7 @@ #: ../lib/python/temporal/register.py:98 #, python-format -msgid "" -"Space time %(sp)s dataset <%(name)s> with relative time found, but no " -"relative unit set for %(sp)s maps" +msgid "Space time %(sp)s dataset <%(name)s> with relative time found, but no relative unit set for %(sp)s maps" msgstr "" #: ../lib/python/temporal/register.py:163 @@ -4420,16 +4201,12 @@ #: ../lib/python/temporal/register.py:191 #, fuzzy, python-format -msgid "" -"Unable to register %(t)s map <%(id)s> with layer %(l)s. The map has " -"timestamp and the start time is not set." +msgid "Unable to register %(t)s map <%(id)s> with layer %(l)s. The map has timestamp and the start time is not set." msgstr "la couche matricielle demand?e <%s> n'a pas ?t? trouv?e" #: ../lib/python/temporal/register.py:197 #, fuzzy, python-format -msgid "" -"Unable to register %(t)s map <%(id)s>. The map has no timestamp and the " -"start time is not set." +msgid "Unable to register %(t)s map <%(id)s>. The map has no timestamp and the start time is not set." msgstr "la couche matricielle demand?e <%s> n'a pas ?t? trouv?e" #: ../lib/python/temporal/register.py:205 @@ -4444,23 +4221,17 @@ #: ../lib/python/temporal/register.py:221 #, fuzzy, python-format -msgid "" -"Map is already registered in temporal database. Unable to update %(t)s map <" -"%(id)s> with layer %(l)s. Overwrite flag is not set." +msgid "Map is already registered in temporal database. Unable to update %(t)s map <%(id)s> with layer %(l)s. Overwrite flag is not set." msgstr "La couche vectorielle <%s> existe d?j? et va ?tre ?cras?" #: ../lib/python/temporal/register.py:228 #, fuzzy, python-format -msgid "" -"Map is already registered in temporal database. Unable to update %(t)s map <" -"%(id)s>. Overwrite flag is not set." +msgid "Map is already registered in temporal database. Unable to update %(t)s map <%(id)s>. Overwrite flag is not set." msgstr "La couche vectorielle <%s> existe d?j? et va ?tre ?cras?" #: ../lib/python/temporal/register.py:252 #, fuzzy, python-format -msgid "" -"Unable to update %(t)s map <%(id)s> with layer %(l)s. The temporal types are " -"different." +msgid "Unable to update %(t)s map <%(id)s> with layer %(l)s. The temporal types are different." msgstr "Impossible de copier la couche vectorielle <%s> vers <%s>" #: ../lib/python/temporal/register.py:258 @@ -4497,9 +4268,7 @@ #: ../lib/python/temporal/register.py:396 #, fuzzy, python-format -msgid "" -"Set absolute valid time for map <%(id)s> with layer %(layer)s to %(start)s - " -"%(end)s" +msgid "Set absolute valid time for map <%(id)s> with layer %(layer)s to %(start)s - %(end)s" msgstr "Impossible de copier la couche vectorielle <%s> vers <%s>" #: ../lib/python/temporal/register.py:401 @@ -4509,8 +4278,7 @@ #: ../lib/python/temporal/register.py:418 #, fuzzy, python-format -msgid "" -"Set relative valid time for map <%s> with layer %s to %i - %s with unit %s" +msgid "Set relative valid time for map <%s> with layer %s to %i - %s with unit %s" msgstr "Impossible de copier la couche vectorielle <%s> vers <%s>" #: ../lib/python/temporal/register.py:423 @@ -4530,9 +4298,7 @@ #: ../lib/python/temporal/base.py:620 #, fuzzy msgid "Wrong identifier, the mapset is missing" -msgstr "" -"Impossible d'ouvrir le fichier d'index de cat?gorie pour la couche " -"vectorielle <%s@%s>" +msgstr "Impossible d'ouvrir le fichier d'index de cat?gorie pour la couche vectorielle <%s@%s>" #: ../lib/python/temporal/univar_statistics.py:50 #: ../lib/python/temporal/univar_statistics.py:149 @@ -4611,9 +4377,7 @@ #: ../lib/python/temporal/temporal_algebra.py:1133 #: ../lib/python/temporal/temporal_algebra.py:1137 #, python-format -msgid "" -"Wrong temporal type of space time dataset <" -"%s> <%s> time is required" +msgid "Wrong temporal type of space time dataset <%s> <%s> time is required" msgstr "" #: ../lib/python/temporal/temporal_algebra.py:1157 @@ -4623,22 +4387,16 @@ #: ../lib/python/temporal/temporal_algebra.py:2031 #, python-format -msgid "" -"The resulting space time dataset type <%(a)s> is different from the " -"requested type <%(b)s>" +msgid "The resulting space time dataset type <%(a)s> is different from the requested type <%(b)s>" msgstr "" #: ../lib/python/temporal/temporal_algebra.py:2037 -msgid "" -"Maps that should be registered in the resulting space time dataset have " -"different types." +msgid "Maps that should be registered in the resulting space time dataset have different types." msgstr "" #: ../lib/python/temporal/temporal_algebra.py:2218 #, python-format -msgid "" -"Wrong map type <%s> . TMAP only supports single maps that are registered in " -"the temporal GRASS database" +msgid "Wrong map type <%s> . TMAP only supports single maps that are registered in the temporal GRASS database" msgstr "" #: ../lib/python/temporal/list_stds.py:191 @@ -4650,25 +4408,19 @@ msgstr "Entr?e vide dans la liste de cartes, ceci ne devrait pas se produire" #: ../lib/python/temporal/spatial_extent.py:118 -msgid "" -"Projections are different. Unable to compute overlapping_2d for spatial " -"extents" +msgid "Projections are different. Unable to compute overlapping_2d for spatial extents" msgstr "" #: ../lib/python/temporal/spatial_extent.py:524 -msgid "" -"Projections are different. Unable to compute is_in_2d for spatial extents" +msgid "Projections are different. Unable to compute is_in_2d for spatial extents" msgstr "" #: ../lib/python/temporal/spatial_extent.py:656 -msgid "" -"Projections are different. Unable to compute equivalent_2d for spatial " -"extents" +msgid "Projections are different. Unable to compute equivalent_2d for spatial extents" msgstr "" #: ../lib/python/temporal/spatial_extent.py:761 -msgid "" -"Projections are different. Unable to compute cover_2d for spatial extents" +msgid "Projections are different. Unable to compute cover_2d for spatial extents" msgstr "" #: ../lib/python/temporal/spatial_extent.py:833 @@ -4685,40 +4437,27 @@ #: ../lib/python/temporal/abstract_map_dataset.py:341 #, fuzzy, python-format -msgid "" -"Start time must be of type datetime for %(type)s map <%(id)s> with layer: " -"%(l)s" -msgstr "" -"Impossible de cr?er le fichier d'?tiquettes date&heure (timestamp) pour la " -"couche %s %s dans le jeu de donn?es (mapset) %s" +msgid "Start time must be of type datetime for %(type)s map <%(id)s> with layer: %(l)s" +msgstr "Impossible de cr?er le fichier d'?tiquettes date&heure (timestamp) pour la couche %s %s dans le jeu de donn?es (mapset) %s" #: ../lib/python/temporal/abstract_map_dataset.py:348 #, fuzzy, python-format msgid "Start time must be of type datetime for %(type)s map <%(id)s>" -msgstr "" -"Fichier d'?tiquette date&heure (timestamp) invalide pour la couche %s %s " -"dans le jeu de donn?es (mapset) %s" +msgstr "Fichier d'?tiquette date&heure (timestamp) invalide pour la couche %s %s dans le jeu de donn?es (mapset) %s" #: ../lib/python/temporal/abstract_map_dataset.py:356 #, fuzzy, python-format -msgid "" -"End time must be of type datetime for %(type)s map <%(id)s> with layer: %(l)s" -msgstr "" -"Fichier d'?tiquette date&heure (timestamp) invalide pour la couche %s %s " -"dans le jeu de donn?es (mapset) %s" +msgid "End time must be of type datetime for %(type)s map <%(id)s> with layer: %(l)s" +msgstr "Fichier d'?tiquette date&heure (timestamp) invalide pour la couche %s %s dans le jeu de donn?es (mapset) %s" #: ../lib/python/temporal/abstract_map_dataset.py:363 #, fuzzy, python-format msgid "End time must be of type datetime for %(type)s map <%(id)s>" -msgstr "" -"Fichier d'?tiquette date&heure (timestamp) invalide pour la couche %s %s " -"dans le jeu de donn?es (mapset) %s" +msgstr "Fichier d'?tiquette date&heure (timestamp) invalide pour la couche %s %s dans le jeu de donn?es (mapset) %s" #: ../lib/python/temporal/abstract_map_dataset.py:372 #, fuzzy, python-format -msgid "" -"End time must be greater than start time for %(type)s map <%(id)s> with " -"layer: %(l)s" +msgid "End time must be greater than start time for %(type)s map <%(id)s> with layer: %(l)s" msgstr "L'Est doit ?tre plus grand que l'Ouest" #: ../lib/python/temporal/abstract_map_dataset.py:380 @@ -4729,12 +4468,8 @@ #: ../lib/python/temporal/abstract_map_dataset.py:451 #, fuzzy, python-format -msgid "" -"Unsupported relative time unit type for %(type)s map <%(id)s> with layer " -"%(l)s: %(u)s" -msgstr "" -"Impossible de cr?er le fichier d'?tiquettes date&heure (timestamp) pour la " -"couche %s %s dans le jeu de donn?es (mapset) %s" +msgid "Unsupported relative time unit type for %(type)s map <%(id)s> with layer %(l)s: %(u)s" +msgstr "Impossible de cr?er le fichier d'?tiquettes date&heure (timestamp) pour la couche %s %s dans le jeu de donn?es (mapset) %s" #: ../lib/python/temporal/abstract_map_dataset.py:458 #, fuzzy, python-format @@ -4743,22 +4478,17 @@ #: ../lib/python/temporal/abstract_map_dataset.py:467 #, fuzzy, python-format -msgid "" -"End time must be greater than start time for %(typ)s map <%(id)s> with layer " -"%(l)s" +msgid "End time must be greater than start time for %(typ)s map <%(id)s> with layer %(l)s" msgstr "L'Est doit ?tre plus grand que l'Ouest" #: ../lib/python/temporal/abstract_map_dataset.py:782 #, python-format -msgid "" -"Map <%(id)s> with layer %(layer)s has incorrect time interval, start time is " -"greater than end time" +msgid "Map <%(id)s> with layer %(layer)s has incorrect time interval, start time is greater than end time" msgstr "" #: ../lib/python/temporal/abstract_map_dataset.py:788 #, python-format -msgid "" -"Map <%s> has incorrect time interval, start time is greater than end time" +msgid "Map <%s> has incorrect time interval, start time is greater than end time" msgstr "" #: ../lib/python/temporal/abstract_map_dataset.py:794 @@ -4773,18 +4503,13 @@ #: ../lib/python/temporal/abstract_map_dataset.py:891 #, python-format -msgid "" -"Unable to unregister dataset <%(ds)s> of type %(type)s from the temporal " -"database. The mapset of the dataset does not match the current mapset" +msgid "Unable to unregister dataset <%(ds)s> of type %(type)s from the temporal database. The mapset of the dataset does not match the current mapset" msgstr "" #: ../lib/python/script/db.py:149 #, python-format -msgid "" -"Programmer error: '%(sql)s', '%(filename)s', or '%(table)s' must be provided" -msgstr "" -"Erreur du programmeur : '%(sql)s', '%(filename)s', ou '%(table)s' doivent " -"?tre fournis" +msgid "Programmer error: '%(sql)s', '%(filename)s', or '%(table)s' must be provided" +msgstr "Erreur du programmeur : '%(sql)s', '%(filename)s', ou '%(table)s' doivent ?tre fournis" #: ../lib/python/script/db.py:159 #, fuzzy @@ -4823,8 +4548,7 @@ "\n" "Details: %(det)s" msgstr "" -"Impossible de r?cup?rer la description de l'interface pour la commande " -"'%(cmd)s'.\n" +"Impossible de r?cup?rer la description de l'interface pour la commande '%(cmd)s'.\n" "\n" "D?tails: %(det)s" @@ -4835,10 +4559,7 @@ #: ../lib/python/script/core.py:287 #, python-format -msgid "" -"To run the module <%s> add underscore at the end of the option <%s> to avoid " -"conflict with Python keywords. Underscore at the beginning is depreciated in " -"GRASS GIS 7.0 and will be removed in version 7.1." +msgid "To run the module <%s> add underscore at the end of the option <%s> to avoid conflict with Python keywords. Underscore at the beginning is depreciated in GRASS GIS 7.0 and will be removed in version 7.1." msgstr "" #: ../lib/python/script/core.py:909 @@ -4909,12 +4630,8 @@ #: ../lib/python/script/raster.py:46 #, fuzzy, python-format -msgid "" -"Unable to write history for <%(map)s>. Raster map <%(map)s> not found in " -"current mapset." -msgstr "" -"Impossible de supprimer la ligne, la couche '%s' n'est pas ouverte en mode " -"'?criture'" +msgid "Unable to write history for <%(map)s>. Raster map <%(map)s> not found in current mapset." +msgstr "Impossible de supprimer la ligne, la couche '%s' n'est pas ouverte en mode '?criture'" #: ../lib/python/script/raster.py:105 msgid "An error occurred while running r.mapcalc" @@ -4945,11 +4662,8 @@ #: ../lib/symbol/read.c:260 #, c-format -msgid "" -"Incorrect symbol name: '%s' (should be: group/name or group/name at mapset)" -msgstr "" -"Nom du symbole incorrect: '%s' (devrait ?tre group/nom ou groupe/" -"nom at jeudedonn?es)" +msgid "Incorrect symbol name: '%s' (should be: group/name or group/name at mapset)" +msgstr "Nom du symbole incorrect: '%s' (devrait ?tre group/nom ou groupe/nom at jeudedonn?es)" #: ../lib/symbol/read.c:284 #, c-format @@ -4997,12 +4711,8 @@ #: ../lib/ogsf/gp3.c:288 #, c-format -msgid "" -"%d points without category. Unable to determine color rules for features " -"without category." -msgstr "" -"%d points sans cat?gorie. Impossible de d?terminer les r?gles de couleurs " -"pour les points sans cat?gorie." +msgid "%d points without category. Unable to determine color rules for features without category." +msgstr "%d points sans cat?gorie. Impossible de d?terminer les r?gles de couleurs pour les points sans cat?gorie." #: ../lib/ogsf/gp2.c:705 msgid "Unknown icon marker, using \"sphere\"" @@ -5049,9 +4759,7 @@ #: ../lib/ogsf/gs3.c:596 #, c-format msgid "Color table range doesn't match data (mincol=%d, maxcol=%d" -msgstr "" -"L'?tendue de la table de couleur ne correspond pas aux donn?es (mincol=%d, " -"maxcol=%d" +msgstr "L'?tendue de la table de couleur ne correspond pas aux donn?es (mincol=%d, maxcol=%d" #: ../lib/ogsf/gs3.c:658 ../lib/ogsf/gs3.c:730 #, c-format @@ -5077,18 +4785,13 @@ #: ../lib/ogsf/gsd_prim.c:630 #, c-format -msgid "" -"gsd_rot(): %c is an invalid axis specification. Rotation ignored. Please " -"advise GRASS developers of this error" -msgstr "" -"gsd_rot(): %c est une sp?cification d'axe non valide. Rotation ignor?e. " -"Merci d'avertir les d?veloppeurs GRASS de cette erreur" +msgid "gsd_rot(): %c is an invalid axis specification. Rotation ignored. Please advise GRASS developers of this error" +msgstr "gsd_rot(): %c est une sp?cification d'axe non valide. Rotation ignor?e. Merci d'avertir les d?veloppeurs GRASS de cette erreur" #: ../lib/ogsf/gv3.c:269 #, c-format msgid "No features from vector map <%s> fall within current region" -msgstr "" -"Aucune entit? de la carte vecteur <%s> ne tombe dans la r?gion courante" +msgstr "Aucune entit? de la carte vecteur <%s> ne tombe dans la r?gion courante" #: ../lib/ogsf/gv3.c:274 #, c-format @@ -5102,12 +4805,8 @@ #: ../lib/ogsf/gv3.c:414 #, c-format -msgid "" -"%d features without category. Unable to determine color rules for features " -"without category." -msgstr "" -"%d entit?s sans cat?gories. Impossible de d?terminer les r?gles de couleurs " -"pour les entit?s sans cat?gorie." +msgid "%d features without category. Unable to determine color rules for features without category." +msgstr "%d entit?s sans cat?gories. Impossible de d?terminer les r?gles de couleurs pour les entit?s sans cat?gorie." #: ../lib/ogsf/gsd_label.c:58 msgid "Max. number of labels reached!" @@ -5126,8 +4825,7 @@ #: ../lib/ogsf/gs2.c:1655 #, c-format msgid "Raster map <%s> is outside of current region. Load failed." -msgstr "" -"La carte raster <%s> est en dehors de la r?gion courante. Chargement ?chou?." +msgstr "La carte raster <%s> est en dehors de la r?gion courante. Chargement ?chou?." #: ../lib/ogsf/gs2.c:1733 ../lib/ogsf/gs2.c:1739 ../lib/ogsf/gs2.c:1747 #: ../lib/ogsf/gs2.c:1756 ../lib/ogsf/gs2.c:1764 ../lib/ogsf/gs2.c:1774 @@ -5145,8 +4843,7 @@ #: ../lib/ogsf/gsd_surf.c:1742 msgid "Cut-plane points mis-match between surfaces. Check resolution(s)." -msgstr "" -"Non concordance des points de surfaces de coupe. V?rifiez les r?solutions." +msgstr "Non concordance des points de surfaces de coupe. V?rifiez les r?solutions." #: ../lib/ogsf/gsd_legend.c:246 #, c-format @@ -5174,8 +4871,7 @@ #: ../lib/ogsf/gsd_legend.c:385 msgid "Unable to show discrete FP range (use list)" -msgstr "" -"Impossible d'afficher une plage flottante discr?te (utilisation d'une liste)" +msgstr "Impossible d'afficher une plage flottante discr?te (utilisation d'une liste)" #: ../lib/ogsf/gsd_legend.c:501 msgid "Too many categories to show as discrete!" @@ -5250,8 +4946,7 @@ #: ../lib/arraystats/class.c:42 msgid "Discont algorithm currently not available because of bugs" -msgstr "" -"L'algorithme discont n'est actuellement pas disponible ? cause d'un bug" +msgstr "L'algorithme discont n'est actuellement pas disponible ? cause d'un bug" #: ../lib/arraystats/class.c:49 #, fuzzy @@ -5264,12 +4959,8 @@ #: ../lib/arraystats/class.c:242 #, c-format -msgid "" -"There are classbreaks outside the range min-max. Number of classes reduced " -"to %i, but using probabilities for %i classes." -msgstr "" -"Il y a des ruptures de classes en dehors de la plage min-max. Nombre de " -"classes r?duites ? %i, mais utilisation des probabilit?s sur %i classes." +msgid "There are classbreaks outside the range min-max. Number of classes reduced to %i, but using probabilities for %i classes." +msgstr "Il y a des ruptures de classes en dehors de la plage min-max. Nombre de classes r?duites ? %i, mais utilisation des probabilit?s sur %i classes." #: ../lib/psdriver/graph_set.c:199 #, c-format @@ -5399,9 +5090,7 @@ #: ../lib/raster3d/open.c:119 #, fuzzy msgid "Rast3d_open_cell_old: projection does not match window projection" -msgstr "" -"Rast3d_openCellOld : la projection ne correspond pas ? la projection de la " -"fen?tre" +msgstr "Rast3d_openCellOld : la projection ne correspond pas ? la projection de la fen?tre" #: ../lib/raster3d/open.c:123 #, fuzzy @@ -5461,9 +5150,7 @@ #: ../lib/raster3d/color.c:354 #, fuzzy, c-format msgid "mapset <%s> is not the current mapset" -msgstr "" -"Bug: tentative de mise ? jour d'une couche qui n'est pas dans le jeu de " -"donn?es (mapset) courant." +msgstr "Bug: tentative de mise ? jour d'une couche qui n'est pas dans le jeu de donn?es (mapset) courant." #: ../lib/raster3d/history.c:43 #, c-format @@ -5611,17 +5298,12 @@ #: ../lib/gis/view.c:545 #, c-format msgid " Window saved in \"%s\" is completely outside of current GRASS window." -msgstr "" -"La fen?tre sauvegard?e dans \"%s\" est compl?tement en dehors de la fen?tre " -"GRASS courante." +msgstr "La fen?tre sauvegard?e dans \"%s\" est compl?tement en dehors de la fen?tre GRASS courante." #: ../lib/gis/view.c:549 #, c-format -msgid "" -" Only %d%% of window saved in \"%s\" overlaps with current GRASS window." -msgstr "" -" Seulement %d%% de la fen?tre sauvegard?e dans \"%s\" chevauche(nt) la " -"fen?tre GRASS courante." +msgid " Only %d%% of window saved in \"%s\" overlaps with current GRASS window." +msgstr " Seulement %d%% de la fen?tre sauvegard?e dans \"%s\" chevauche(nt) la fen?tre GRASS courante." #: ../lib/gis/parser_interface.c:329 ../lib/gis/parser_html.c:167 #: ../lib/gis/parser_help.c:200 ../lib/gis/parser_rest.c:164 @@ -5703,8 +5385,7 @@ #: ../lib/gis/legal_name.c:77 ../lib/gis/legal_name.c:81 #, c-format msgid "Output raster map name <%s> is not valid map name" -msgstr "" -"Le nom <%s> de la carte raster en sortie n'est pas un nom de carte valide" +msgstr "Le nom <%s> de la carte raster en sortie n'est pas un nom de carte valide" #: ../lib/gis/legal_name.c:118 ../lib/gis/legal_name.c:122 #, c-format @@ -5714,8 +5395,7 @@ #: ../lib/gis/find_file.c:114 #, c-format msgid "'%s/%s' was found in more mapsets (also found in <%s>)" -msgstr "" -"'%s/%s' trouv? dans plusieurs jeux de cartes (?galement trouv? dans <%s>)" +msgstr "'%s/%s' trouv? dans plusieurs jeux de cartes (?galement trouv? dans <%s>)" #: ../lib/gis/find_file.c:127 #, c-format @@ -5728,12 +5408,8 @@ #: ../lib/gis/gisinit.c:53 ../lib/gis/gisinit.c:87 #, fuzzy, c-format -msgid "" -"Module built against version %s but trying to use version %s. You need to " -"rebuild GRASS GIS or untangle multiple installations." -msgstr "" -"Version de librairie incompatible pour le module. Vous devez recompiler " -"GRASS ou g?rer les versions multiples." +msgid "Module built against version %s but trying to use version %s. You need to rebuild GRASS GIS or untangle multiple installations." +msgstr "Version de librairie incompatible pour le module. Vous devez recompiler GRASS ou g?rer les versions multiples." #: ../lib/gis/gisinit.c:65 #, c-format @@ -5757,37 +5433,27 @@ #: ../lib/gis/timestamp.c:301 #, fuzzy, c-format msgid "Invalid timestamp specified for %s map <%s@%s>" -msgstr "" -"L'?tiquette date&heure (timestamp) sp?cifi?e pour la couche %s %s est " -"invalide dans le jeu de donn?es (mapset) %s" +msgstr "L'?tiquette date&heure (timestamp) sp?cifi?e pour la couche %s %s est invalide dans le jeu de donn?es (mapset) %s" #: ../lib/gis/timestamp.c:331 #, fuzzy, c-format msgid "Unable to open timestamp file for %s map <%s@%s>" -msgstr "" -"Impossible d'ouvrir le fichier d'index de cat?gorie pour la couche " -"vectorielle <%s@%s>" +msgstr "Impossible d'ouvrir le fichier d'index de cat?gorie pour la couche vectorielle <%s@%s>" #: ../lib/gis/timestamp.c:340 #, fuzzy, c-format msgid "Invalid timestamp file for %s map <%s@%s>" -msgstr "" -"Fichier d'?tiquette date&heure (timestamp) invalide pour la couche %s %s " -"dans le jeu de donn?es (mapset) %s" +msgstr "Fichier d'?tiquette date&heure (timestamp) invalide pour la couche %s %s dans le jeu de donn?es (mapset) %s" #: ../lib/gis/timestamp.c:479 #, fuzzy, c-format msgid "Unable to open timestamp file for vector map <%s@%s>" -msgstr "" -"Impossible d'ouvrir le fichier d'index de cat?gorie pour la couche " -"vectorielle <%s@%s>" +msgstr "Impossible d'ouvrir le fichier d'index de cat?gorie pour la couche vectorielle <%s@%s>" #: ../lib/gis/timestamp.c:488 #, fuzzy, c-format msgid "Invalid timestamp file for vector map <%s@%s>" -msgstr "" -"Fichier d'?tiquette date&heure (timestamp) invalide pour la couche %s %s " -"dans le jeu de donn?es (mapset) %s" +msgstr "Fichier d'?tiquette date&heure (timestamp) invalide pour la couche %s %s dans le jeu de donn?es (mapset) %s" #: ../lib/gis/timestamp.c:524 #, fuzzy, c-format @@ -5797,9 +5463,7 @@ #: ../lib/gis/timestamp.c:533 #, fuzzy, c-format msgid "Invalid timestamp specified for vector map <%s@%s>" -msgstr "" -"L'?tiquette date&heure (timestamp) sp?cifi?e pour la couche %s %s est " -"invalide dans le jeu de donn?es (mapset) %s" +msgstr "L'?tiquette date&heure (timestamp) sp?cifi?e pour la couche %s %s est invalide dans le jeu de donn?es (mapset) %s" #: ../lib/gis/error.c:361 msgid "WARNING: " @@ -5973,9 +5637,7 @@ #: ../lib/gis/adj_cellhd.c:74 ../lib/gis/adj_cellhd.c:239 #, c-format msgid "Fixing subtle input data rounding error of north boundary (%g>%g)" -msgstr "" -"Ajustement d'une l?g?re erreur d'arrondi sur la valeur de la limite Nord (%g>" -"%g)" +msgstr "Ajustement d'une l?g?re erreur d'arrondi sur la valeur de la limite Nord (%g>%g)" #: ../lib/gis/adj_cellhd.c:79 ../lib/gis/adj_cellhd.c:244 msgid "Illegal latitude for North" @@ -5984,9 +5646,7 @@ #: ../lib/gis/adj_cellhd.c:85 ../lib/gis/adj_cellhd.c:250 #, c-format msgid "Fixing subtle input data rounding error of south boundary (%g>%g)" -msgstr "" -"justement d'une l?g?re erreur d'arrondi sur la valeur de la limite Sud (%g>" -"%g)" +msgstr "justement d'une l?g?re erreur d'arrondi sur la valeur de la limite Sud (%g>%g)" #: ../lib/gis/adj_cellhd.c:90 ../lib/gis/adj_cellhd.c:255 msgid "Illegal latitude for South" @@ -5995,16 +5655,12 @@ #: ../lib/gis/adj_cellhd.c:102 ../lib/gis/adj_cellhd.c:267 #, c-format msgid "Fixing subtle input data rounding error of west boundary (%g>%g)" -msgstr "" -"Erreur dans les m?thodes de fixation des donn?es d'entr?e ? la fronti?re " -"Ouest (%g>%g)" +msgstr "Erreur dans les m?thodes de fixation des donn?es d'entr?e ? la fronti?re Ouest (%g>%g)" #: ../lib/gis/adj_cellhd.c:113 ../lib/gis/adj_cellhd.c:278 #, c-format msgid "Fixing subtle input data rounding error of east boundary (%g>%g)" -msgstr "" -"Erreur dans les m?thodes de fixation des donn?es d'entr?e ? la fronti?re Est " -"(%g>%g)" +msgstr "Erreur dans les m?thodes de fixation des donn?es d'entr?e ? la fronti?re Est (%g>%g)" #: ../lib/gis/adj_cellhd.c:126 ../lib/gis/adj_cellhd.c:291 msgid "North must be north of South" @@ -6345,11 +6001,8 @@ msgstr "Nom de la base de donn?es" #: ../lib/gis/parser_standard_options.c:192 -msgid "" -"Do not use this option if schemas are not supported by driver/database server" -msgstr "" -"Ne pas utiliser cette option si les sch?mas ne sont pas support?s par le " -"pilote / serveur de base de donn?es" +msgid "Do not use this option if schemas are not supported by driver/database server" +msgstr "Ne pas utiliser cette option si les sch?mas ne sont pas support?s par le pilote / serveur de base de donn?es" #: ../lib/gis/parser_standard_options.c:201 msgid "Name of attribute column" @@ -6483,12 +6136,8 @@ #: ../lib/gis/parser_standard_options.c:418 #, fuzzy -msgid "" -"Number of digits used as mantissa in the internal map storage, 0 -23 for " -"float, 0 - 52 for double, max or default" -msgstr "" -"Nombre de d?cimales ? utiliser comme 'mantissa' dans le stockage interne des " -"cartes, 0-23 pour flottant, 0-52 pour double, max ou d?faut" +msgid "Number of digits used as mantissa in the internal map storage, 0 -23 for float, 0 - 52 for double, max or default" +msgstr "Nombre de d?cimales ? utiliser comme 'mantissa' dans le stockage interne des cartes, 0-23 pour flottant, 0-52 pour double, max ou d?faut" #: ../lib/gis/parser_standard_options.c:428 #, fuzzy @@ -6497,9 +6146,7 @@ #: ../lib/gis/parser_standard_options.c:438 #, fuzzy -msgid "" -"The dimensions of the tiles used in the output raster3d map (XxYxZ or " -"default: 16x16x8)" +msgid "The dimensions of the tiles used in the output raster3d map (XxYxZ or default: 16x16x8)" msgstr "Les dimensions des dalles utilis?es dans le fichier de sortie" #: ../lib/gis/parser_standard_options.c:448 @@ -6546,13 +6193,8 @@ #: ../lib/gis/parser_standard_options.c:512 #, fuzzy -msgid "" -"Vector features can have category values in different layers. This number " -"determines which layer to use. When used with direct OGR access this is the " -"layer name." -msgstr "" -"Une seule carte vectorielle peut ?tre connect?e ? plusieurs tables de base " -"de donn?es. Ce nombre d?termine la table ? utiliser." +msgid "Vector features can have category values in different layers. This number determines which layer to use. When used with direct OGR access this is the layer name." +msgstr "Une seule carte vectorielle peut ?tre connect?e ? plusieurs tables de base de donn?es. Ce nombre d?termine la table ? utiliser." #: ../lib/gis/parser_standard_options.c:522 #, fuzzy @@ -6561,13 +6203,8 @@ #: ../lib/gis/parser_standard_options.c:524 #, fuzzy -msgid "" -"A single vector map can be connected to multiple database tables. This " -"number determines which table to use. When used with direct OGR access this " -"is the layer name." -msgstr "" -"Une seule carte vectorielle peut ?tre connect?e ? plusieurs tables de base " -"de donn?es. Ce nombre d?termine la table ? utiliser." +msgid "A single vector map can be connected to multiple database tables. This number determines which table to use. When used with direct OGR access this is the layer name." +msgstr "Une seule carte vectorielle peut ?tre connect?e ? plusieurs tables de base de donn?es. Ce nombre d?termine la table ? utiliser." #: ../lib/gis/parser_standard_options.c:533 msgid "Category value" @@ -6765,9 +6402,7 @@ #: ../lib/gis/parser_standard_options.c:870 #, fuzzy -msgid "" -"WHERE conditions of SQL statement without 'where' keyword used in the " -"temporal GIS framework" +msgid "WHERE conditions of SQL statement without 'where' keyword used in the temporal GIS framework" msgstr "WHERE conditions d'une clause SQL sans le mot-clef 'where'" #: ../lib/gis/parser_standard_options.c:871 @@ -6915,15 +6550,11 @@ #: ../lib/gis/parser.c:519 msgid "Use either --quiet or --verbose flag, not both. Assuming --verbose." -msgstr "" -"Utiliser le drapeau soit --quiet soit --verbose, pas les deux ; --verbose " -"suppos?." +msgstr "Utiliser le drapeau soit --quiet soit --verbose, pas les deux ; --verbose suppos?." #: ../lib/gis/parser.c:533 msgid "Use either --quiet or --verbose flag, not both. Assuming --quiet." -msgstr "" -"Utiliser le drapeau soit --quiet soit --verbose, pas les deux ; --quiet " -"suppos?." +msgstr "Utiliser le drapeau soit --quiet soit --verbose, pas les deux ; --quiet suppos?." #: ../lib/gis/parser.c:564 #, fuzzy, c-format @@ -6957,9 +6588,7 @@ #: ../lib/gis/parser.c:1020 #, c-format msgid "Please update the usage of <%s>: option <%s> has been renamed to <%s>" -msgstr "" -"Merci de mettre ? jour l'utilisation de <%s> : l'option <%s> a ?t? renomm?e " -"en <%s>" +msgstr "Merci de mettre ? jour l'utilisation de <%s> : l'option <%s> a ?t? renomm?e en <%s>" #: ../lib/gis/parser.c:1033 #, fuzzy, c-format @@ -7317,8 +6946,7 @@ #: ../lib/rst/interp_float/vinput2d.c:249 #, c-format msgid "There are points outside specified 2D/3D region - %d points ignored" -msgstr "" -"il y a des points en-dehors de la r?gion 2D/3D sp?cifi?e - %d points ignor?s" +msgstr "il y a des points en-dehors de la r?gion 2D/3D sp?cifi?e - %d points ignor?s" #: ../lib/rst/interp_float/vinput2d.c:252 #, c-format @@ -7327,12 +6955,8 @@ #: ../lib/rst/interp_float/vinput2d.c:256 #, c-format -msgid "" -"%d points given for interpolation (after thinning) is less than given NPMIN=" -"%d" -msgstr "" -"%d points donn?s pour l'interpolation (apr?s squelettisation) est moins que " -"le NPMIN=% donn?d" +msgid "%d points given for interpolation (after thinning) is less than given NPMIN=%d" +msgstr "%d points donn?s pour l'interpolation (apr?s squelettisation) est moins que le NPMIN=% donn?d" #: ../lib/rst/interp_float/vinput2d.c:261 msgid "Zero points in the given region" @@ -7340,22 +6964,13 @@ #: ../lib/rst/interp_float/vinput2d.c:266 #, c-format -msgid "" -"Segmentation parameters set to invalid values: npmin= %d, segmax= %d for " -"smooth connection of segments, npmin > segmax (see manual)" -msgstr "" -"Param?tres de segmentation invalides: npmin= %d, segmax= %d pour une bonne " -"connexion des segments, npmin > segmax (voir le manuel)" +msgid "Segmentation parameters set to invalid values: npmin= %d, segmax= %d for smooth connection of segments, npmin > segmax (see manual)" +msgstr "Param?tres de segmentation invalides: npmin= %d, segmax= %d pour une bonne connexion des segments, npmin > segmax (voir le manuel)" #: ../lib/rst/interp_float/vinput2d.c:272 #, c-format -msgid "" -"There are less than %d points for interpolation. No segmentation is " -"necessary, to run the program faster set segmax=%d (see manual)" -msgstr "" -"Il y a moins de %d poitns pour l'interpolation. Aucune segmentation n'est " -"n?cessaire, pour faire tourner le programme plus vite, param?trez segmax=%d " -"(voir manuel)" +msgid "There are less than %d points for interpolation. No segmentation is necessary, to run the program faster set segmax=%d (see manual)" +msgstr "Il y a moins de %d poitns pour l'interpolation. Aucune segmentation n'est n?cessaire, pour faire tourner le programme plus vite, param?trez segmax=%d (voir manuel)" #: ../lib/rst/interp_float/vinput2d.c:276 #, c-format @@ -7393,12 +7008,8 @@ msgstr "Impossible de r??crire la ligne" #: ../lib/rst/interp_float/segmen2d.c:118 -msgid "" -"Taking too long to find points for interpolation - please change the region " -"to area where your points are. Continuing calculations..." -msgstr "" -"Recherche de points pour l'interpolation trop longue -- merci de changer la " -"r?gion pour la zone o? se trouvent vos points. Poursuite des calculs ..." +msgid "Taking too long to find points for interpolation - please change the region to area where your points are. Continuing calculations..." +msgstr "Recherche de points pour l'interpolation trop longue -- merci de changer la r?gion pour la zone o? se trouvent vos points. Poursuite des calculs ..." #: ../lib/rst/interp_float/input2d.c:48 #, c-format @@ -7421,12 +7032,8 @@ #: ../lib/rst/interp_float/interp2d.c:214 #, c-format -msgid "" -"Overshoot - increase in tension suggested. Overshoot occures at (%d,%d) " -"cell. Z-value %f, zmin %f, zmax %f." -msgstr "" -"D?passement - augmentation de la tension sugg?r?e. Le d?passement se produit " -"? la cellule (%d,%d), valeur Z %f, zmin %f, zmax %f." +msgid "Overshoot - increase in tension suggested. Overshoot occures at (%d,%d) cell. Z-value %f, zmin %f, zmax %f." +msgstr "D?passement - augmentation de la tension sugg?r?e. Le d?passement se produit ? la cellule (%d,%d), valeur Z %f, zmin %f, zmax %f." #: ../lib/rst/interp_float/resout2d.c:77 msgid "Temporarily changing the region to desired resolution..." @@ -7444,9 +7051,7 @@ #: ../lib/rst/interp_float/resout2d.c:264 msgid "No color table for input raster map -- will not create color table" -msgstr "" -"Pas de table de couleur pour la carte raster en entr?e -- pas de cr?ation de " -"table de couleur" +msgstr "Pas de table de couleur pour la carte raster en entr?e -- pas de cr?ation de table de couleur" #: ../lib/rst/interp_float/resout2d.c:458 msgid "Changing the region back to initial..." @@ -7584,8 +7189,7 @@ #: ../lib/gmath/la.c:788 msgid "Specified matrix column index is outside range" -msgstr "" -"L'index de colonne de la matrice sp?cifi? est en dehors de l'intervalle" +msgstr "L'index de colonne de la matrice sp?cifi? est en dehors de l'intervalle" #: ../lib/gmath/la.c:793 ../lib/gmath/la.c:834 ../lib/gmath/la.c:1198 #: ../lib/gmath/la.c:1250 ../lib/gmath/la.c:1325 @@ -7683,13 +7287,12 @@ msgstr "" #: ../lib/gmath/test/bench_blas2.c:35 -#, fuzzy msgid "" "\n" "++ Running blas level 2 benchmark ++" msgstr "" "\n" -"++ ?x?cution du solveur des tests unitaires ++" +"++ Ex?cution des tests unitaires blas niveau 2 ++" #: ../lib/gmath/test/test_main.c:61 msgid "The size of the matrices and vectors for benchmarking" @@ -7727,13 +7330,12 @@ "-- ?chec des tests unitaires des outils math?matiques --" #: ../lib/gmath/test/test_ccmath_wrapper.c:44 -#, fuzzy msgid "" "\n" "-- ccmath wrapper unit tests finished successfully --" msgstr "" "\n" -"-- tests unitaires des outils math?matiques termin?s avec succ?s --" +"-- tests unitaires des outils math?matiques termin?s avec succ?s --" #: ../lib/gmath/test/test_solvers.c:37 msgid "" @@ -7757,16 +7359,15 @@ "-- Solver unit tests finished successfully --" msgstr "" "\n" -"-- Tests unitaires du solveur termin?s avec succ?s --" +"-- Tests unitaires du solveur termin?s avec succ?s --" #: ../lib/gmath/test/bench_blas3.c:34 -#, fuzzy msgid "" "\n" "++ Running blas level 3 benchmark ++" msgstr "" "\n" -"++ ?x?cution du solveur des tests unitaires ++" +"++ Ex?cution des tests unitaires blas niveau 3 ++" #: ../lib/gmath/test/bench_solver_krylov.c:34 #, fuzzy @@ -7775,7 +7376,7 @@ "++ Running krylov solver benchmark ++" msgstr "" "\n" -"++ ?x?cution du solveur des tests unitaires ++" +"++ Ex?cution du solveur des tests unitaires ++" #: ../lib/gmath/test/test_blas3.c:38 #, fuzzy @@ -7784,7 +7385,7 @@ "++ Running blas level 3 unit tests ++" msgstr "" "\n" -"++ ?x?cution du solveur des tests unitaires ++" +"++ Ex?cution du solveur des tests unitaires ++" #: ../lib/gmath/test/test_blas3.c:44 #, fuzzy @@ -7796,13 +7397,12 @@ "-- ?chec du solveur des tests unitaires --" #: ../lib/gmath/test/test_blas3.c:46 -#, fuzzy msgid "" "\n" "-- blas level 3 unit tests finished successfully --" msgstr "" "\n" -"-- Tests unitaires du solveur termin?s avec succ?s --" +"-- Tests unitaires du solveur termin?s avec succ?s --" #: ../lib/gmath/test/test_blas1.c:40 #, fuzzy @@ -7811,7 +7411,7 @@ "++ Running blas level 1 unit tests ++" msgstr "" "\n" -"++ ?x?cution du solveur des tests unitaires ++" +"++ Ex?cution du solveur des tests unitaires ++" #: ../lib/gmath/test/test_blas1.c:47 #, fuzzy @@ -7823,13 +7423,12 @@ "-- ?chec du solveur des tests unitaires --" #: ../lib/gmath/test/test_blas1.c:49 -#, fuzzy msgid "" "\n" "-- blas level 1 unit tests finished successfully --" msgstr "" "\n" -"-- Tests unitaires du solveur termin?s avec succ?s --" +"-- Tests unitaires du solveur termin?s avec succ?s --" #: ../lib/gmath/test/bench_solver_direct.c:34 #, fuzzy @@ -7838,7 +7437,7 @@ "++ Running direct solver benchmark ++" msgstr "" "\n" -"++ ?x?cution du solveur des tests unitaires ++" +"++ Ex?cution du solveur des tests unitaires ++" #: ../lib/gmath/test/test_matrix_conversion.c:37 #, fuzzy @@ -7859,13 +7458,12 @@ "-- ?chec du solveur des tests unitaires --" #: ../lib/gmath/test/test_matrix_conversion.c:44 -#, fuzzy msgid "" "\n" "-- Matrix conversion unit tests finished successfully --" msgstr "" "\n" -"-- Tests unitaires du solveur termin?s avec succ?s --" +"-- Tests unitaires du solveur termin?s avec succ?s --" #: ../lib/gmath/test/test_blas2.c:38 #, fuzzy @@ -7886,13 +7484,12 @@ "-- ?chec du solveur des tests unitaires --" #: ../lib/gmath/test/test_blas2.c:46 -#, fuzzy msgid "" "\n" "-- blas level 2 unit tests finished successfully --" msgstr "" "\n" -"-- Tests unitaires du solveur termin?s avec succ?s --" +"-- Tests unitaires du solveur termin?s avec succ?s --" #: ../lib/gmath/solvers_krylov.c:262 #, c-format @@ -7934,11 +7531,8 @@ #: ../lib/proj/convert.c:139 #, c-format -msgid "" -"OGR can't parse PROJ.4-style parameter string: %s (OGR Error code was %d)" -msgstr "" -"OGR ne peut pas analyser la cha?ne de param?tre PROJ.4: %s (Le code erreur " -"OGR ?tait %d)" +msgid "OGR can't parse PROJ.4-style parameter string: %s (OGR Error code was %d)" +msgstr "OGR ne peut pas analyser la cha?ne de param?tre PROJ.4: %s (Le code erreur OGR ?tait %d)" #: ../lib/proj/convert.c:146 #, c-format @@ -7947,9 +7541,7 @@ #: ../lib/proj/convert.c:406 msgid "No projection name! Projection parameters likely to be meaningless." -msgstr "" -"Aucun nom de projection ! Projection de param?tres susceptibles d'?tre vide " -"de sens." +msgstr "Aucun nom de projection ! Projection de param?tres susceptibles d'?tre vide de sens." #: ../lib/proj/convert.c:442 #, c-format @@ -7958,21 +7550,13 @@ #: ../lib/proj/convert.c:458 #, c-format -msgid "" -"Datum <%s> apparently recognised by GRASS but no parameters found. You may " -"want to look into this." -msgstr "" -"La date <% s> est apparemment reconnue par GRASS mais aucun param?tre " -"trouv?. Vous devez examiner." +msgid "Datum <%s> apparently recognised by GRASS but no parameters found. You may want to look into this." +msgstr "La date <% s> est apparemment reconnue par GRASS mais aucun param?tre trouv?. Vous devez examiner." #: ../lib/proj/convert.c:462 #, c-format -msgid "" -"Invalid transformation number %d; valid range is 1 to %d. Leaving datum " -"transform parameters unspecified." -msgstr "" -"Num?ro de transformation %d invalide ; la plage valide est de 1 ? %d. " -"Param?tres datum de la transformation laiss?s non sp?cifi?s." +msgid "Invalid transformation number %d; valid range is 1 to %d. Leaving datum transform parameters unspecified." +msgstr "Num?ro de transformation %d invalide ; la plage valide est de 1 ? %d. Param?tres datum de la transformation laiss?s non sp?cifi?s." #: ../lib/proj/get_proj.c:148 #, c-format @@ -8035,13 +7619,11 @@ #: ../lib/proj/ellipse.c:103 msgid "No secondary ellipsoid descriptor (rf, es or b) in file" -msgstr "" -"Pas de descripteur secondaire (rf, es or b) d'ellipso?de dans le fichier" +msgstr "Pas de descripteur secondaire (rf, es or b) d'ellipso?de dans le fichier" #: ../lib/proj/ellipse.c:107 msgid "Invalid ellipsoid descriptors (a, rf, es or b) in file" -msgstr "" -"Descripteurs de l'ellipso?de (a, rf, es ou b) invalides dans le fichier" +msgstr "Descripteurs de l'ellipso?de (a, rf, es ou b) invalides dans le fichier" #: ../lib/proj/ellipse.c:120 msgid "No ellipsoid info given in file" @@ -8055,9 +7637,7 @@ #: ../lib/raster/init.c:61 #, fuzzy msgid "Raster library not initialized. Programmer forgot to call Rast_init()." -msgstr "" -"\aERREUR : Le syst?me n'est pas initialis?. Le d?veloppeur a oubli? " -"d'appeler G_gisinit()\n" +msgstr "\aERREUR : Le syst?me n'est pas initialis?. Le d?veloppeur a oubli? d'appeler G_gisinit()\n" #: ../lib/raster/histogram.c:55 #, c-format @@ -8082,30 +7662,22 @@ #: ../lib/raster/put_row.c:121 #, fuzzy, c-format msgid "Error writing uncompressed FP data for row %d of <%s>: %s" -msgstr "" -"erreur en lisant la couche compress?e [%s] dans le jeu de donn?es [%s], " -"ligne %d" +msgstr "erreur en lisant la couche compress?e [%s] dans le jeu de donn?es [%s], ligne %d" #: ../lib/raster/put_row.c:131 #, fuzzy, c-format msgid "Error writing compressed FP data for row %d of <%s>: %s" -msgstr "" -"erreur en lisant la couche compress?e [%s] dans le jeu de donn?es [%s], " -"ligne %d" +msgstr "erreur en lisant la couche compress?e [%s] dans le jeu de donn?es [%s], ligne %d" #: ../lib/raster/put_row.c:390 ../lib/raster/put_row.c:396 #, fuzzy, c-format msgid "Error writing compressed data for row %d of <%s>" -msgstr "" -"erreur en lisant la couche compress?e [%s] dans le jeu de donn?es [%s], " -"ligne %d" +msgstr "erreur en lisant la couche compress?e [%s] dans le jeu de donn?es [%s], ligne %d" #: ../lib/raster/put_row.c:406 #, fuzzy, c-format msgid "Error writing uncompressed data for row %d of <%s>" -msgstr "" -"erreur en lisant la couche compress?e [%s] dans le jeu de donn?es [%s], " -"ligne %d" +msgstr "erreur en lisant la couche compress?e [%s] dans le jeu de donn?es [%s], ligne %d" #: ../lib/raster/put_row.c:465 #, fuzzy, c-format @@ -8164,16 +7736,12 @@ #: ../lib/raster/quant_io.c:135 #, fuzzy, c-format msgid "Quantization file for raster map <%s> is missing" -msgstr "" -"Impossible d'ouvrir le fichier d'index de cat?gorie pour la couche " -"vectorielle <%s@%s>" +msgstr "Impossible d'ouvrir le fichier d'index de cat?gorie pour la couche vectorielle <%s@%s>" #: ../lib/raster/quant_io.c:145 #, fuzzy, c-format msgid "Quantization file for raster map <%s> is empty" -msgstr "" -"Impossible d'ouvrir le fichier d'index de cat?gorie pour la couche " -"vectorielle <%s@%s>" +msgstr "Impossible d'ouvrir le fichier d'index de cat?gorie pour la couche vectorielle <%s@%s>" #: ../lib/raster/reclass.c:168 #, fuzzy, c-format @@ -8183,9 +7751,7 @@ #: ../lib/raster/reclass.c:171 #, fuzzy, c-format msgid "Illegal reclass format in header file for <%s@%s>" -msgstr "" -"Format de reclassification ill?gal dans l'en-t?te de fichier pour [%s dans " -"%s]" +msgstr "Format de reclassification ill?gal dans l'en-t?te de fichier pour [%s dans %s]" #: ../lib/raster/reclass.c:273 msgid "Illegal reclass request" @@ -8206,21 +7772,15 @@ msgstr "Impossible de cr?er le fichier de d?pendances dans [%s dans %s]" #: ../lib/raster/window.c:31 -msgid "" -"Internal error: Rast_get_window() called with split window. Use " -"Rast_get_input_window() or Rast_get_output_window() instead." +msgid "Internal error: Rast_get_window() called with split window. Use Rast_get_input_window() or Rast_get_output_window() instead." msgstr "" #: ../lib/raster/window.c:90 -msgid "" -"Internal error: Rast_window_rows() called with split window. Use " -"Rast_input_window_rows() or Rast_output_window_rows() instead." +msgid "Internal error: Rast_window_rows() called with split window. Use Rast_input_window_rows() or Rast_output_window_rows() instead." msgstr "" #: ../lib/raster/window.c:125 -msgid "" -"Internal error: Rast_window_cols() called with split window. Use " -"Rast_input_window_cols() or Rast_output_window_cols() instead." +msgid "Internal error: Rast_window_cols() called with split window. Use Rast_input_window_cols() or Rast_output_window_cols() instead." msgstr "" #: ../lib/raster/raster_metadata.c:109 @@ -8255,8 +7815,7 @@ #: ../lib/raster/close.c:476 msgid "unable to write f_format file for CELL maps" -msgstr "" -"pas en mesure d'?crire des fichiers f_format pour des couches de cellules" +msgstr "pas en mesure d'?crire des fichiers f_format pour des couches de cellules" #: ../lib/raster/quant_rw.c:88 #, fuzzy, c-format @@ -8271,8 +7830,7 @@ #: ../lib/raster/quant_rw.c:157 #, fuzzy, c-format msgid "Unable to write quant rules: raster map <%s> is integer" -msgstr "" -"Impossible d'?crire les r?gles de quantit? : la couche %s est un entier" +msgstr "Impossible d'?crire les r?gles de quantit? : la couche %s est un entier" #: ../lib/raster/quant_rw.c:166 #, fuzzy, c-format @@ -8322,80 +7880,62 @@ #: ../lib/raster/open.c:190 #, c-format -msgid "" -"Unable to open raster map <%s@%s> since it is a reclass of raster map <%s@" -"%s> which does not exist" -msgstr "" -"Impossible d'ouvrir la carte raster <%s@%s> car il s'agit d'une " -"reclassification de la carte raster <%s@%s> qui n'existe pas" +msgid "Unable to open raster map <%s@%s> since it is a reclass of raster map <%s@%s> which does not exist" +msgstr "Impossible d'ouvrir la carte raster <%s@%s> car il s'agit d'une reclassification de la carte raster <%s@%s> qui n'existe pas" #: ../lib/raster/open.c:195 -#, fuzzy, c-format +#, c-format msgid "Error reading reclass file for raster map <%s>" -msgstr "impossible de lire le fichier de limites pour [%s dans %s]" +msgstr "Erreur de lecture du fichier reclass pour la carte raster <%s>" #: ../lib/raster/open.c:206 -#, fuzzy, c-format +#, c-format msgid "Error reading map type for raster map <%s>" -msgstr "Erreur ? l'ouverture de la couche matricielle %s" +msgstr "Erreur de lecture du type de la carte raster <%s>" #: ../lib/raster/open.c:214 #, c-format msgid "Raster map <%s@%s>: format field in header file invalid" -msgstr "" -"Carte raster <%s@%s>: format de champ invalide dans le fichier d'en-t?te" +msgstr "Carte raster <%s@%s>: format de champ invalide dans le fichier d'en-t?te" #: ../lib/raster/open.c:219 -#, fuzzy, c-format -msgid "" -"Raster map <%s> is in different projection than current region. Found <%s>, " -"should be <%s>." -msgstr "" -"[%s] dans le jeu de donn?es (mapset) [%s] - est dans une projection " -"diff?rente par rapport ? la r?gion courante :\n" -" la couche [%s] dans: <%s>, devrait ?tre <%s> " +#, c-format +msgid "Raster map <%s> is in different projection than current region. Found <%s>, should be <%s>." +msgstr "La carte raster <%s> est dans une projection diff?rente de la r?gion courante. Trouv? <%s>, devrait ?tre <%s>." #: ../lib/raster/open.c:226 -#, fuzzy, c-format +#, c-format msgid "Raster map <%s> is in different zone (%d) than current region (%d)" -msgstr "" -"[%s] dans le jeu de donn?es (mapset) [%s] - est dans une zone diff?rente " -"[%d] de celle de la r?gion courante [%d]" +msgstr "La carte raster <%s> est dans une zone diff?rente (%d) de la r?gion courante (%d)" #: ../lib/raster/open.c:231 -#, fuzzy, c-format +#, c-format msgid "Raster map <%s>: bytes per cell (%d) too large" -msgstr "[%s] dans [%s] - octets par cellule (%d) trop grand" +msgstr "Carte raster <%s> : octets par cellule (%d) trop grand" #: ../lib/raster/open.c:256 #, c-format -msgid "" -"Raster map <%s@%s> is a GDAL link but GRASS is compiled without GDAL support" -msgstr "" -"La carte raster <%s@%s> est un lien GDAL mais GRASS est compil? sans le " -"support de GDAL" +msgid "Raster map <%s@%s> is a GDAL link but GRASS is compiled without GDAL support" +msgstr "La carte raster <%s@%s> est un lien GDAL mais GRASS est compil? sans le support de GDAL" #: ../lib/raster/open.c:264 -#, fuzzy, c-format +#, c-format msgid "Unable to open %s file for raster map <%s@%s>" -msgstr "" -"Impossible d'ouvrir le fichier d'index de cat?gorie pour la couche " -"vectorielle <%s@%s>" +msgstr "Impossible d'ouvrir le fichier %s pour la carte raster <%s@%s>" #: ../lib/raster/open.c:301 -#, fuzzy, c-format +#, c-format msgid "Error reading format for <%s@%s>" -msgstr "erreur en lisant la couche [%s] dans le jeu de donn?es [%s], ligne %d" +msgstr "Erreur de lecture du format pour <%s@%s>" #: ../lib/raster/open.c:498 -#, fuzzy msgid "Unable to create GDAL link" -msgstr "Impossible d'ouvrir le fichier %s" +msgstr "Impossible de cr?er un lien GDAL" #: ../lib/raster/open.c:569 ../lib/raster/gdal.c:475 -#, fuzzy, c-format +#, c-format msgid "Invalid map type <%d>" -msgstr "Format invalide\n" +msgstr "Type de carte invalide <%d>" #: ../lib/raster/open.c:574 #, c-format @@ -8408,14 +7948,13 @@ msgstr "<%s> est un nom de fichier ill?gal" #: ../lib/raster/open.c:595 ../lib/raster/open.c:667 -#, fuzzy, c-format +#, c-format msgid "No temp files available: %s" -msgstr "aucun fichier %s disponible\n" +msgstr "Pas de fichier temporaire disponible : %s" #: ../lib/raster/open.c:720 msgid "Rast_set_fp_type(): can only be called with FCELL_TYPE or DCELL_TYPE" -msgstr "" -"Rast_set_fp_type() : ne peut ?tre appel? qu'avec FCELL_TYPE ou DCELL_TYPE" +msgstr "Rast_set_fp_type() : ne peut ?tre appel? qu'avec FCELL_TYPE ou DCELL_TYPE" #: ../lib/raster/open.c:778 #, c-format @@ -8433,9 +7972,9 @@ msgstr "type invalide: champ '%s' dans le fichier '%s'" #: ../lib/raster/open.c:855 -#, fuzzy, c-format +#, c-format msgid "Missing type: field in file '%s'" -msgstr "type invalide : champ %s dans le fichier %s" +msgstr "Type manquant : champ dans le fichier '%s'" #: ../lib/raster/open.c:860 #, c-format @@ -8443,11 +7982,8 @@ msgstr "La carte raster <%s> n'est pas xdr: byte_order: %s" #: ../lib/raster/open.c:929 -msgid "" -"Rast_set_quant_rules() can be called only for raster maps opened for reading" -msgstr "" -"Rast_set_quant_rules() ne peut ?tre appel? que sur une carte raster ouverte " -"en lecture" +msgid "Rast_set_quant_rules() can be called only for raster maps opened for reading" +msgstr "Rast_set_quant_rules() ne peut ?tre appel? que sur une carte raster ouverte en lecture" #: ../lib/raster/cats.c:109 #, fuzzy, c-format @@ -8462,21 +7998,17 @@ #: ../lib/raster/cats.c:145 #, fuzzy, c-format msgid "Category support for vector map <%s@%s> missing" -msgstr "" -"support de la cat?gorie pour le fichier vecteur [%s] dans le jeu de donn?es " -"(mapset) [%s] %s" +msgstr "support de la cat?gorie pour le fichier vecteur [%s] dans le jeu de donn?es (mapset) [%s] %s" #: ../lib/raster/cats.c:149 #, fuzzy, c-format msgid "Category support for vector map <%s@%s> invalid" -msgstr "" -"support de la cat?gorie pour le fichier vecteur [%s] dans le jeu de donn?es " -"(mapset) [%s] %s" +msgstr "support de la cat?gorie pour le fichier vecteur [%s] dans le jeu de donn?es (mapset) [%s] %s" #: ../lib/raster/cats.c:968 -#, fuzzy, c-format +#, c-format msgid "Unable to open %s file for map <%s>" -msgstr "Impossible d'ouvrir le fichier %s" +msgstr "Impossible d'ouvrir le fichier %s pour la carte <%s>" #: ../lib/raster/alloc_cell.c:151 #, c-format @@ -8491,41 +8023,32 @@ #: ../lib/raster/get_row.c:36 ../lib/raster/get_row.c:845 #, c-format msgid "Reading raster map <%s@%s> request for row %d is outside region" -msgstr "" -"La lecture de la carte raster <%s@%s> demande la ligne %d en dehors de la " -"r?gion" +msgstr "La lecture de la carte raster <%s@%s> demande la ligne %d en dehors de la r?gion" #: ../lib/raster/get_row.c:95 ../lib/raster/get_row.c:101 #: ../lib/raster/get_row.c:135 ../lib/raster/get_row.c:142 #: ../lib/raster/get_row.c:177 ../lib/raster/get_row.c:181 -#, fuzzy, c-format +#, c-format msgid "Error reading raster data for row %d of <%s>" -msgstr "" -"erreur en lisant la couche compress?e [%s] dans le jeu de donn?es [%s], " -"ligne %d" +msgstr "Erreur de lecture des donn?es raster ? la ligne %d de <%s>" #: ../lib/raster/get_row.c:217 -#, fuzzy, c-format +#, c-format msgid "Error reading raster data via GDAL for row %d of <%s>" -msgstr "Erreur lors de l'?criture du fichier d'index de cat?gorie <%s>." +msgstr "Erreur de lecture des donn?es raster avec GDAL ? la ligne %d de <%s>" #: ../lib/raster/get_row.c:829 ../lib/raster/get_row.c:832 -#, fuzzy, c-format +#, c-format msgid "Error reading null row %d for <%s>" -msgstr "Erreur de lecture de la ligne nulle %d" +msgstr "Erreur de lecture de la ligne nulle %d de <%s>" #: ../lib/raster/set_window.c:48 msgid "Rast_set_window() called while window split" msgstr "" #: ../lib/raster/set_window.c:131 -#, fuzzy -msgid "" -"Rast_set_read_window(): projection/zone differs from that of currently open " -"raster maps" -msgstr "" -"G_set_window() : projection/zone diff?rent de ceux pr?sents dans le fichier " -"matriciel actuellement ouvert" +msgid "Rast_set_read_window(): projection/zone differs from that of currently open raster maps" +msgstr "Rast_set_read_window() : la projection/zone est diff?rente des cartes raster actuellement ouvertes" #: ../lib/raster/set_window.c:158 #, c-format @@ -8558,17 +8081,12 @@ #: ../lib/raster/put_title.c:67 #, c-format msgid "can't write category information for [%s] in [%s]" -msgstr "" -"impossible d'?crire les informations de la cat?gorie pour [%s] dans [%s]" +msgstr "impossible d'?crire les informations de la cat?gorie pour [%s] dans [%s]" #: ../lib/raster/get_cellhd.c:66 -#, fuzzy, c-format -msgid "" -"Unable to read header file for raster map <%s@%s>. It is a reclass of raster " -"map <%s@%s> %s" -msgstr "" -"impossible d'ouvrir [%s] dans [%s] puisqu'il s'agit d'une reclassification " -"de [%s] dans [%s] qui n'existe pas" +#, c-format +msgid "Unable to read header file for raster map <%s@%s>. It is a reclass of raster map <%s@%s> %s" +msgstr "Impossible de lire le fichier header de la carte raster <%s@%s>. II s'agit d'une reclassification de <%s@%s> %s" #: ../lib/raster/get_cellhd.c:70 msgid "which is missing." @@ -8592,32 +8110,27 @@ msgstr "?tiquette \"no data\" trouv?e, r?gl? ? z?ro" #: ../lib/raster/color_read.c:103 -#, fuzzy msgid "missing" -msgstr "qui est manquant" +msgstr "manquant" #: ../lib/raster/color_read.c:106 -#, fuzzy msgid "invalid" -msgstr "" -"est invalide\n" -"%s" +msgstr "invalide" #: ../lib/raster/color_read.c:112 -#, fuzzy, c-format +#, c-format msgid "Color support for <%s@%s> %s" -msgstr "" -"support de la couleur pour [%s] dans le jeu de donn?es (mapset) [%s] %s" +msgstr "support de la couleur pour <%s@%s> %s" #: ../lib/raster/history.c:115 ../lib/raster/history.c:123 -#, fuzzy, c-format +#, c-format msgid "Unable to get history information for <%s@%s>" -msgstr "impossible d'?crire l'historique pour [%s]" +msgstr "impossible de charger l'historique pour <%s@%s>" #: ../lib/raster/history.c:162 -#, fuzzy, c-format +#, c-format msgid "Unable to write history information for <%s>" -msgstr "impossible d'?crire l'historique pour [%s]" +msgstr "impossible d'?crire l'historique pour <%s>" #: ../lib/raster/history.c:235 #, c-format @@ -8672,38 +8185,32 @@ msgstr "Impossible de charger la librairie GDAL" #: ../lib/raster/gdal.c:371 -#, fuzzy msgid "Unable to open GDAL file" -msgstr "Impossible d'ouvrir le fichier %s" +msgstr "Impossible d'ouvrir le fichier GDAL" #: ../lib/raster/gdal.c:481 -#, fuzzy, c-format +#, c-format msgid "Unable to get <%s> driver" -msgstr "Impossible d'ouvrir la base de donn?es <%s> avec le driver <%s>" +msgstr "Impossible de charger le pilote <%s>" #: ../lib/raster/gdal.c:490 -#, fuzzy, c-format +#, c-format msgid "Unable to create <%s> dataset using <%s> driver" -msgstr "Impossible d'ouvrir la base de donn?es <%s> avec le driver <%s>" +msgstr "Impossible de cr?er le jeu de donn?es <%s> avec le pilote <%s>" #: ../lib/raster/gdal.c:498 #, c-format -msgid "" -"Driver <%s> does not support direct writing. Using MEM driver for " -"intermediate dataset." -msgstr "" -"Le pilote <%s> ne g?re pas l'?criture directe. Utiliser le pilote MEM pour " -"les donn?es interm?diaires." +msgid "Driver <%s> does not support direct writing. Using MEM driver for intermediate dataset." +msgstr "Le pilote <%s> ne g?re pas l'?criture directe. Utiliser le pilote MEM pour les donn?es interm?diaires." #: ../lib/raster/gdal.c:504 -#, fuzzy msgid "Unable to get in-memory raster driver" -msgstr "Impossible d'?crire la ligne matricielle %i" +msgstr "Impossible de charger le pilote raster en-m?moire" #: ../lib/raster/gdal.c:511 #, fuzzy, c-format msgid "Unable to create <%s> dataset using memory driver" -msgstr "Impossible d'ouvrir la base de donn?es <%s> avec le driver <%s>" +msgstr "Impossible de cr?er le jeu de donn?es <%s> avec le pilote m?moire" #: ../lib/raster/gdal.c:515 #, c-format @@ -8711,29 +8218,27 @@ msgstr "Le pilote <%s> ne g?re pas la cr?ation de raster" #: ../lib/raster/gdal.c:531 -#, fuzzy msgid "Unable to set geo transform" -msgstr "Impossible de deviner le format site!" +msgstr "Impossible de d?finir la transformation g?ographique" #: ../lib/raster/gdal.c:535 -#, fuzzy msgid "Unable to set projection" -msgstr "Allocation m?moire impossible\n" +msgstr "Impossible de d?finir la projection" #: ../lib/raster/gdal.c:539 -#, fuzzy, c-format +#, c-format msgid "Unable to create cell_misc/%s/gdal file" -msgstr "Impossible de lire le fichier d'en-t?te" +msgstr "Impossible de cr?er le fichier cell_misc/%s/gdal" #: ../lib/raster/gdal.c:555 -#, fuzzy, c-format +#, c-format msgid "Error writing cell_misc/%s/gdal file" -msgstr "Erreur lors de l'?criture du fichier d'index spatial." +msgstr "Erreur d'?criture du fichier cell_misc/%s/gdal" #: ../lib/raster/gdal.c:603 -#, fuzzy, c-format +#, c-format msgid "Unable to create output file <%s> using driver <%s>" -msgstr "Impossible d'ouvrir la base de donn?es <%s> avec le driver <%s>" +msgstr "Impossible de cr?er le fichier de sortie <%s> avec le pilote <%s>" #: ../lib/raster/mask_info.c:43 #, c-format @@ -8749,9 +8254,9 @@ msgstr "inconnu" #: ../lib/display/icon.c:80 -#, fuzzy, c-format +#, c-format msgid "Unsupported icon %d" -msgstr "Type(s) d'entit?(s)" +msgstr "Ic?ne non support?e %d" #: ../lib/display/r_raster.c:128 #, c-format @@ -8760,20 +8265,18 @@ #: ../lib/display/r_raster.c:147 #, c-format -msgid "" -"Neither %s (managed by d.mon command) nor %s (used for direct rendering) " -"defined" +msgid "Neither %s (managed by d.mon command) nor %s (used for direct rendering) defined" msgstr "" #: ../lib/display/r_raster.c:165 -#, fuzzy, c-format +#, c-format msgid "Unknown display driver <%s>" -msgstr "Impossible d'ouvrir le fichier statistique <%s>" +msgstr "Pilote graphique <%s> inconnu" #: ../lib/display/r_raster.c:166 -#, fuzzy, c-format +#, c-format msgid "Using display driver <%s>..." -msgstr "Impossible d'ouvrir le fichier statistique <%s>" +msgstr "Utilisation du pilote graphique <%s> ..." #: ../lib/display/r_raster.c:236 #, fuzzy, c-format @@ -8835,7 +8338,7 @@ #: ../lib/nviz/render.c:112 #, fuzzy msgid "Unable to get visual info" -msgstr "Impossible d'ouvrir %s" +msgstr "Impossible d'obtenir l'information visuelle" #: ../lib/nviz/render.c:119 msgid "Unable to create rendering context" @@ -8848,31 +8351,25 @@ #: ../lib/init/lock.c:42 msgid "Concurrent mapset locking is not supported on Windows" -msgstr "" -"Le verrouillage concurrent de jeux de cartes n'est pas pris en charge dans " -"Windows" +msgstr "Le verrouillage concurrent de jeux de cartes n'est pas pris en charge dans Windows" #: ../lib/init/lock.c:60 -#, fuzzy, c-format +#, c-format msgid "Unable to write lockfile %s (%s)" -msgstr "Impossible d'ouvrir le fichier statistique <%s>" +msgstr "Impossible d'?crire le fichier de verrou %s (%s)" #: ../lib/init/grass.py:74 -#, fuzzy msgid "WARNING" -msgstr "ATTENTION : " +msgstr "ATTENTION" #: ../lib/init/grass.py:130 -#, fuzzy msgid "Exiting..." -msgstr "R?glage des co?ts du noeud..." +msgstr "Sortie ..." #: ../lib/init/grass.py:203 -#, fuzzy msgid "Usage" msgstr "" -"\n" -"Utilisation :\n" +"Utilisation\n" " " #: ../lib/init/grass.py:205 @@ -8889,18 +8386,15 @@ #: ../lib/init/grass.py:208 msgid "exit after creation of location or mapset. Only with -c flag" -msgstr "" -"quitter apr?s la cr?ation du secteur ou du jeu de cartes. Uniquement avec " -"l'argument -c" +msgstr "quitter apr?s la cr?ation du secteur ou du jeu de cartes. Uniquement avec l'argument -c" #: ../lib/init/grass.py:209 msgid "use text based interface (skip welcome screen)" msgstr "utiliser l'interface texte (sauter l'?cran de bienvenue)" #: ../lib/init/grass.py:210 ../lib/init/grass.py:212 ../lib/init/grass.py:214 -#, fuzzy msgid "and set as default" -msgstr "pour accepter le choix par d?faut" +msgstr "et d?finir par d?faut" #: ../lib/init/grass.py:211 msgid "use text based interface (show welcome screen)" @@ -8951,18 +8445,13 @@ #: ../lib/init/grass.py:225 msgid "set additional path(s) to local GRASS modules or user scripts" -msgstr "" -"d?finir des chemins suppl?mentaires pour les modules GRASS locaux ou les " -"scripts utilisateurs" +msgstr "d?finir des chemins suppl?mentaires pour les modules GRASS locaux ou les scripts utilisateurs" #: ../lib/init/grass.py:226 msgid "set additional GISBASE for locally installed GRASS Addons" -msgstr "" -"d?finir un GISBASE suppl?mentaire pour les extentions GRASS install?es " -"localement" +msgstr "d?finir un GISBASE suppl?mentaire pour les extentions GRASS install?es localement" #: ../lib/init/grass.py:227 -#, fuzzy msgid "shell script to be processed as batch job" msgstr "script shell ? ex?cuter par lot" @@ -8971,10 +8460,9 @@ msgstr "d?finir le nom du shell python pour supplanter 'python'" #: ../lib/init/grass.py:266 -#, fuzzy, python-format -msgid "" -"Unable to create temporary directory ! Exiting." -msgstr "Allocation m?moire impossible\n" +#, python-format +msgid "Unable to create temporary directory ! Exiting." +msgstr "Impossible de cr?er le dossier temporaire ! Sortie." #: ../lib/init/grass.py:301 #, python-format @@ -8982,16 +8470,15 @@ msgstr "" #: ../lib/init/grass.py:354 -#, fuzzy, python-format +#, python-format msgid "GUI <%s> not supported in this version" -msgstr "Le format demand? n'est pas compatible avec cette version" +msgstr "Interface <%s> non support?e par cette version" #: ../lib/init/grass.py:499 msgid "Searched for a web browser, but none found" msgstr "Aucun navigateur web trouv?" #: ../lib/init/grass.py:533 -#, fuzzy msgid "" "The python command does not work as expected!\n" "Please check your GRASS_PYTHON environment variable.\n" @@ -9001,7 +8488,7 @@ "Hit RETURN to continue.\n" msgstr "" "La commande python ne fonctionne pas comme pr?vu !\n" -"Merci de v?rifier vos variables d'environnement GRASS_PYTHON.\n" +"Merci de v?rifier votre variable d'environnement GRASS_PYTHON.\n" "Utilisez l'option -help pour les d?tails.\n" "Bascule vers l'interface en mode texte.\n" "\n" @@ -9029,12 +8516,8 @@ #: ../lib/init/grass.py:600 #, python-format -msgid "" -"Mapset <%s> doesn't exist in GRASS location <%s>. A new mapset can be " -"created by '-c' switch." -msgstr "" -"Le jeu de cartes <%s> n'existepas dans le secteur GRASS <%s>. Il est " -"possible de cr?er un nouveau jeu de cartes avec l'option '-c'." +msgid "Mapset <%s> doesn't exist in GRASS location <%s>. A new mapset can be created by '-c' switch." +msgstr "Le jeu de cartes <%s> n'existepas dans le secteur GRASS <%s>. Il est possible de cr?er un nouveau jeu de cartes avec l'option '-c'." #: ../lib/init/grass.py:619 #, python-format @@ -9050,30 +8533,23 @@ "GISDBASE, LOCATION_NAME and MAPSET variables not set properly.\n" "Interactive startup needed." msgstr "" -"Les variables GISDBASE, LOCATION_NAME et MAPSET ne sont aps d?finies " -"correctement.\n" +"Les variables GISDBASE, LOCATION_NAME et MAPSET ne sont aps d?finies correctement.\n" "D?marrage interactif n?cessaire." #: ../lib/init/grass.py:678 #, python-format -msgid "" -"Invalid user interface specified - <%s>. Use the --help option to see valid " -"interface names." -msgstr "" -"Interface utilisateur sp?cifi?e invalide - <%s>. Utilisez l'option --help " -"pour voir les noms d'interfaces valides." +msgid "Invalid user interface specified - <%s>. Use the --help option to see valid interface names." +msgstr "Interface utilisateur sp?cifi?e invalide - <%s>. Utilisez l'option --help pour voir les noms d'interfaces valides." #: ../lib/init/grass.py:691 #, fuzzy msgid "" -"Error in GUI startup. If necessary, please report this error to the GRASS " -"developers.\n" +"Error in GUI startup. If necessary, please report this error to the GRASS developers.\n" "Switching to text mode now.\n" "\n" "Hit RETURN to continue..." msgstr "" -"Erreur dans le d?marrage de l'interface graphique. Si n?cessaire, merci de " -"rapporter cette erreur aux d?veloppeurs GRASS.\n" +"Erreur dans le d?marrage de l'interface graphique. Si n?cessaire, merci de rapporter cette erreur aux d?veloppeurs GRASS.\n" "Bascule vers le mode texte.\n" "\n" "Appuyez sur ENTR?E pour continuer ..." @@ -9088,11 +8564,12 @@ "GRASS n'est pas d?marr?. Au revoir." #: ../lib/init/grass.py:704 -#, fuzzy msgid "" "Invalid return code from GUI startup script.\n" "Please advise GRASS developers of this error." -msgstr "Veuillez avertir les d?veloppeurs GRASS de cette erreur.\n" +msgstr "" +"Code de retour d'erreur invalide pour le lancement de l'interface graphique.\n" +"Veuillez avertir les d?veloppeurs GRASS de cette erreur." #: ../lib/init/grass.py:715 msgid "" @@ -9116,18 +8593,13 @@ msgstr "" #: ../lib/init/grass.py:804 -#, fuzzy msgid "Default locale settings are missing. GRASS running with C locale." -msgstr "" -"Les param?tres de locale par d?faut sont manquants. Lancement de GRASS avec " -"la locale C." +msgstr "Les param?tres de locale par d?faut sont manquants. Utilisation de la locale C." #: ../lib/init/grass.py:809 #, python-format -msgid "" -"A language override has been requested. Trying to switch GRASS into '%s'..." -msgstr "" -"Un for?age de langage a ?t? demand?. Essai de basculer GRASS en '%s' ..." +msgid "A language override has been requested. Trying to switch GRASS into '%s'..." +msgstr "Un for?age de langage a ?t? demand?. Essai de basculer GRASS en '%s' ..." #: ../lib/init/grass.py:868 #, python-format @@ -9136,13 +8608,11 @@ #: ../lib/init/grass.py:876 #, python-format -msgid "" -"%(user)s is currently running GRASS in selected mapset (file %(file)s " -"found). Concurrent use not allowed." +msgid "%(user)s is currently running GRASS in selected mapset (file %(file)s found). Concurrent use not allowed." msgstr "" #: ../lib/init/grass.py:880 -#, fuzzy, python-format +#, python-format msgid "" "Unable to properly access '%s'.\n" "Please notify system personel." @@ -9161,23 +8631,19 @@ msgstr "Shell <%(sh)s> non support? : %(env)s" #: ../lib/init/grass.py:952 -#, fuzzy msgid "The SHELL variable is not set" -msgstr "GISRC - variable sans valeur" +msgstr "La variable SHELL n'est pas d?finie" #: ../lib/init/grass.py:963 #, fuzzy, python-format msgid "" -"Job file '%s' has been defined in the 'GRASS_BATCH_JOB' variable but not " -"found. Exiting.\n" +"Job file '%s' has been defined in the 'GRASS_BATCH_JOB' variable but not found. Exiting.\n" "\n" "Use 'unset GRASS_BATCH_JOB' to disable batch job processing." msgstr "" -"Le fichier de t?che '%s' a ?t? d?fini dans la variable 'GRASS_BATCH_JOB' " -"mais n'est pas trouv?. Sortie.\n" +"Le fichier de t?che '%s' a ?t? d?fini dans la variable 'GRASS_BATCH_JOB' mais n'est pas trouv?. Sortie.\n" "\n" -"Utilisez 'ne pas d?finir GRASS_BATCH_JOB' pour d?sactiver le traitement des " -"t?ches par lot." +"Utilisez 'ne pas d?finir GRASS_BATCH_JOB' pour d?sactiver le traitement des t?ches par lot." #: ../lib/init/grass.py:968 #, python-format @@ -9213,9 +8679,8 @@ msgstr "Cette version fonctionne avec :" #: ../lib/init/grass.py:1032 -#, fuzzy msgid "Help is available with the command:" -msgstr "Aucune aide disponible pour la commande [%s]\n" +msgstr "L'aide est disponible par la commande :" #: ../lib/init/grass.py:1033 msgid "See the licence terms with:" @@ -9246,39 +8711,35 @@ msgstr "MASK raster 3D pr?sent" #: ../lib/init/grass.py:1171 -#, fuzzy, python-format +#, python-format msgid "Failed to start shell '%s'" -msgstr "Impossible d'ouvrir le fichier statistique <%s>" +msgstr "?chec au lancement du shell '%s'" #: ../lib/init/grass.py:1176 #, python-format msgid "Batch job '%s' (defined in GRASS_BATCH_JOB variable) was executed." -msgstr "" -"La t?che par lot '%s' (d?finie dans la variable GRASS_BATCH_JOB) a ?t? " -"ex?cut?e." +msgstr "La t?che par lot '%s' (d?finie dans la variable GRASS_BATCH_JOB) a ?t? ex?cut?e." #: ../lib/init/grass.py:1177 ../lib/init/grass.py:1182 msgid "Goodbye from GRASS GIS" msgstr "" #: ../lib/init/grass.py:1180 -#, fuzzy msgid "Done." -msgstr "Aucun" +msgstr "Termin?." #: ../lib/init/grass.py:1187 -#, fuzzy msgid "Cleaning up temporary files..." -msgstr "Impossible d'ouvrir le fichier temporaire" +msgstr "Nettoyage des fichiers temporaires ..." #: ../lib/init/grass.py:1201 msgid "Please install the GRASS GIS development package" msgstr "" #: ../lib/init/grass.py:1233 -#, fuzzy, python-format +#, python-format msgid "Parameter <%s> not supported" -msgstr "Le type d'objet OGR %d n'est pas g?r?" +msgstr "Param?tres <%s> on support?" #: ../lib/init/grass.py:1356 #, fuzzy @@ -9291,8 +8752,7 @@ "Unable to start GRASS. You can:\n" " - Launch GRASS with '-gui' switch (`grass70 -gui`)\n" " - Create manually GISRC file (%s)\n" -" - Launch GRASS with path to the location/mapset as an argument (`grass70 /" -"path/to/location/mapset`)" +" - Launch GRASS with path to the location/mapset as an argument (`grass70 /path/to/location/mapset`)" msgstr "" #: ../lib/init/grass.py:1409 @@ -9306,9 +8766,7 @@ #: ../lib/init/grass.py:1469 #, fuzzy, python-format msgid "Launching <%s> GUI in the background, please wait..." -msgstr "" -"D?marrage de l'interface graphique <%s> en t?che de fond, merci de " -"patienter ..." +msgstr "D?marrage de l'interface graphique <%s> en t?che de fond, merci de patienter ..." #: ../lib/imagery/target.c:38 #, c-format @@ -9323,8 +8781,7 @@ #: ../lib/imagery/list_subgp.c:85 #, c-format msgid "subgroup <%s> of group <%s> references the following raster maps\n" -msgstr "" -"Le sous-groupe <%s> du groupe <%s>r?f?rence les cartes raster suivantes\n" +msgstr "Le sous-groupe <%s> du groupe <%s>r?f?rence les cartes raster suivantes\n" #: ../lib/imagery/iclass_statistics.c:218 msgid "prepare_signature: outline has odd number of points." @@ -9353,9 +8810,8 @@ #: ../lib/imagery/iclass_statistics.c:712 #: ../lib/imagery/iclass_statistics.c:735 #: ../lib/imagery/iclass_statistics.c:758 -#, fuzzy msgid "Band index out of range" -msgstr "Index de couche en dehors des limites" +msgstr "Index de bande en dehors des limites" #: ../lib/imagery/iclass_statistics.c:684 #, fuzzy @@ -9363,58 +8819,49 @@ msgstr "Couche ou index de cat?gorie en dehors des limites" #: ../lib/imagery/iclass.c:83 -#, fuzzy, c-format +#, c-format msgid "No areas in category %d" -msgstr "Impossible de supprimer la couche vectorielle <%s>" +msgstr "Pas de surface pour la cat?gorie %d" #: ../lib/imagery/iclass.c:127 -#, fuzzy, c-format +#, c-format msgid "Raster map <%s@%s> in subgroup <%s> does not exist" -msgstr "La table <%s> li?e ? la carte vecteur <%s> n'existe pas " +msgstr "La carte raster <%s@%s> du sous-groupe <%s> n'existe pas " #: ../lib/imagery/iclass.c:131 -#, fuzzy, c-format +#, c-format msgid "Raster map <%s@%s> in group <%s> does not exist" -msgstr "La table <%s> li?e ? la carte vecteur <%s> n'existe pas " +msgstr "La carte raster <%s@%s> du groupe <%s> n'existe pas " #: ../lib/imagery/iclass.c:143 #, c-format msgid "Subgroup <%s> does not have enough files (it has %d files)" -msgstr "" -"Le sous-groupe <%s> ne contient pas suffisamment de fichiers (il a %d " -"fichiers)" +msgstr "Le sous-groupe <%s> ne contient pas suffisamment de fichiers (il a %d fichiers)" #: ../lib/imagery/iclass.c:147 #, c-format msgid "Group <%s> does not have enough files (it has %d files)" -msgstr "" -"Le groupe <%s> ne contient pas suffisamment de fichiers (il a %d fichiers)" +msgstr "Le groupe <%s> ne contient pas suffisamment de fichiers (il a %d fichiers)" #: ../lib/imagery/iclass_signatures.c:120 -#, fuzzy, c-format +#, c-format msgid "Unable to open output signature file '%s'" -msgstr "Impossible d'ouvrir le fichier %s" +msgstr "Impossible d'ouvrir le fichier de signatures '%s'" #: ../lib/imagery/points.c:124 #, c-format msgid "Unable to open control point file for group [%s in %s]" -msgstr "" -"Impossible d'ouvrir le fichier de points de contr?le pour le groupe [%s dans " -"%s]" +msgstr "Impossible d'ouvrir le fichier de points de contr?le pour le groupe [%s dans %s]" #: ../lib/imagery/points.c:132 #, c-format msgid "Bad format in control point file for group [%s in %s]" -msgstr "" -"Mauvais format dans le fichier de points de contr?le pour le groupe [%s dans " -"%s]" +msgstr "Mauvais format dans le fichier de points de contr?le pour le groupe [%s dans %s]" #: ../lib/imagery/points.c:159 #, c-format msgid "Unable to create control point file for group [%s in %s]" -msgstr "" -"Impossible de cr?er le fichier de points de contr?le pour le groupe [%s dans " -"%s]" +msgstr "Impossible de cr?er le fichier de points de contr?le pour le groupe [%s dans %s]" #: ../lib/imagery/fopen.c:23 #, c-format @@ -9434,37 +8881,27 @@ #: ../lib/imagery/fopen.c:79 #, c-format msgid "Unable to create file [%s] for subgroup [%s] of group [%s in %s]" -msgstr "" -"Impossible de cr?er le fichier [%s] du sous-groupe [%s] du groupe [%s de %s]" +msgstr "Impossible de cr?er le fichier [%s] du sous-groupe [%s] du groupe [%s de %s]" #: ../lib/imagery/fopen.c:101 ../lib/imagery/fopen.c:127 #, c-format msgid "Unable to open file [%s] for subgroup [%s] of group [%s in %s]" -msgstr "" -"Impossible d'ouvrir le fichier [%s] du sous-groupe [%s] du groupe [%s de %s]" +msgstr "Impossible d'ouvrir le fichier [%s] du sous-groupe [%s] du groupe [%s de %s]" #: ../lib/imagery/fopen.c:116 #, c-format msgid "Unable to find file [%s] for subgroup [%s] of group [%s in %s]" -msgstr "" -"Impossible de trouver le fichier [%s] pour le sous-groupe [%s] du groupe [%s " -"de %s]" +msgstr "Impossible de trouver le fichier [%s] pour le sous-groupe [%s] du groupe [%s de %s]" #: ../lib/imagery/sigsetfile.c:41 #, c-format -msgid "" -"Unable to create signature file <%s> for subgroup <%s> of group <%s> - <%s> " -"is not current mapset" -msgstr "" -"Impossible de cr?er le fichier de signatures <%s> pour le sous-groupe <%s> " -"du groupe <%s> - <%s> n'est pas le jeux de cartes courant" +msgid "Unable to create signature file <%s> for subgroup <%s> of group <%s> - <%s> is not current mapset" +msgstr "Impossible de cr?er le fichier de signatures <%s> pour le sous-groupe <%s> du groupe <%s> - <%s> n'est pas le jeux de cartes courant" #: ../lib/imagery/sigsetfile.c:57 #, c-format msgid "Unable to create signature file <%s> for subgroup <%s> of group <%s>" -msgstr "" -"Impossible de cr?er le fichier de signatures <%s> pour le sous-groupe <%s> " -"du groupe <%s>" +msgstr "Impossible de cr?er le fichier de signatures <%s> pour le sous-groupe <%s> du groupe <%s>" #: ../lib/imagery/iscatt_core.c:81 #, fuzzy, c-format @@ -9479,9 +8916,7 @@ #: ../lib/imagery/iscatt_core.c:255 #, fuzzy, c-format msgid "Unable to open category raster condtions file <%s>." -msgstr "" -"impossible d'ouvrir le fichier de d?finition de base de donn?es pour le " -"vecteur '%s'" +msgstr "impossible d'ouvrir le fichier de d?finition de base de donn?es pour le vecteur '%s'" #: ../lib/imagery/iscatt_core.c:263 #, fuzzy, c-format @@ -9513,9 +8948,7 @@ msgstr "" #: ../lib/imagery/iscatt_core.c:579 -msgid "" -"Data inconsistent. Value computed for scatter plot is out of initialized " -"range." +msgid "Data inconsistent. Value computed for scatter plot is out of initialized range." msgstr "" #: ../lib/imagery/iscatt_core.c:745 @@ -9524,14 +8957,14 @@ msgstr "Impossible de lire la plage de valeurs du raster <%s>" #: ../lib/imagery/iscatt_core.c:755 -#, fuzzy, c-format +#, c-format msgid "Unbale to open raster <%s>" -msgstr "Impossible d'ouvrir la carte raster <%s>" +msgstr "Impossible d'ouvrir le raster <%s>" #: ../lib/imagery/iscatt_core.c:761 -#, fuzzy, c-format +#, c-format msgid "Raster <%s> type is not <%s>" -msgstr "Carte raster <%s> non trouv?e dans le jeux de donn?es <%s>" +msgstr "Le raster <%s> n'est pas de type <%s>" #: ../lib/imagery/iscatt_core.c:775 #, fuzzy, c-format @@ -9541,9 +8974,7 @@ #: ../lib/imagery/iscatt_core.c:803 #, fuzzy, c-format msgid "Unable to open category raster condtition file <%s>" -msgstr "" -"impossible d'ouvrir le fichier de d?finition de base de donn?es pour le " -"vecteur '%s'" +msgstr "impossible d'ouvrir le fichier de d?finition de base de donn?es pour le vecteur '%s'" #: ../lib/imagery/iscatt_core.c:817 msgid "Corrupted category raster conditions file (fseek failed)" @@ -9587,173 +9018,6 @@ #: ../lib/imagery/georef_tps.c:279 ../lib/imagery/georef_tps.c:282 #: ../lib/imagery/georef_tps.c:285 ../lib/imagery/georef_tps.c:290 #: ../lib/imagery/georef_tps.c:293 -#, fuzzy, c-format +#, c-format msgid "%s: out of memory" -msgstr "D?passement de m?moire" - -#~ msgid "ERROR: option <%s>: <%s> exists.\n" -#~ msgstr "ERREUR: option <%s>: <%s> existe.\n" - -#, fuzzy -#~ msgid "Hit RETURN to continue" -#~ msgstr "pressez RETOUR pour continuer -->" - -#, fuzzy -#~ msgid "Vector map <%s> is not opened on topology level" -#~ msgstr "La couche vectorielle <%s> n'a pas ?t? trouv?e" - -#~ msgid "Attributes for category %d not found" -#~ msgstr "Attributs pour la cat?gorie %d non trouv?s" - -#~ msgid "Category must be integer" -#~ msgstr "La cat?gorie doit ?tre un entier" - -#~ msgid "Memory error in writing timestamp" -#~ msgstr "Erreur de m?moire dans l'?criture de l'horodatage" - -#~ msgid "Illegal TimeStamp string" -#~ msgstr "Cha?ne d'horodatage ill?gale" - -#~ msgid "" -#~ "Dev note: Adapted sites library used for vector points. (module should be " -#~ "updated to GRASS 6 vector library)" -#~ msgstr "" -#~ "Note du dev : librairie sites adapt?e utilis?e pour le vecteur de points. " -#~ "(le module devrait ?tre mis ? jour vers la librairie vecteur GRASS 6)" - -#~ msgid "Cannot fetch row" -#~ msgstr "Impossible de r?cup?rer la ligne" - -#~ msgid "G_oldsite_new_struct: invalid # dims or fields" -#~ msgstr "G_oldsite_new_struct : # dims ou champs invalides" - -#~ msgid "Background color" -#~ msgstr "Couleur d'arri?re-plan" - -#, fuzzy -#~ msgid "Mode type: {0} not supported." -#~ msgstr "Le type de colonne n'est pas support?" - -#, fuzzy -#~ msgid "Invalid type {0}" -#~ msgstr "Format invalide\n" - -#, fuzzy -#~ msgid "Invalid size {0}" -#~ msgstr "Format invalide\n" - -#, fuzzy -#~ msgid "Removing empty 3D raster maps" -#~ msgstr "Nom de la couche matricielle d'entr?e" - -#, fuzzy -#~ msgid "Error writing uncompressed FP data for row %d of <%s>" -#~ msgstr "" -#~ "erreur en lisant la couche compress?e [%s] dans le jeu de donn?es [%s], " -#~ "ligne %d" - -#, fuzzy -#~ msgid "Error writing compressed FP data for row %d of <%s>" -#~ msgstr "" -#~ "erreur en lisant la couche compress?e [%s] dans le jeu de donn?es [%s], " -#~ "ligne %d" - -#, fuzzy -#~ msgid "Both %s and %s are defined. %s will be ignored." -#~ msgstr "les param?tres 'where' et 'cats' ont ?t? fournis, cat sera ignor?" - -#, fuzzy -#~ msgid "Turntable field < 1" -#~ msgstr "Arc < 1" - -#, fuzzy -#~ msgid "Turntable column <%s> not found in table <%s>" -#~ msgstr "Colonne <%s> non trouv?e dans la table <%s>" - -#, fuzzy -#~ msgid "Cannot add network arc for virtual node connection." -#~ msgstr "Impossible d'ajouter un arc de r?seau" - -#, fuzzy -#~ msgid "" -#~ "Database record for turn with cat = %d in not found. (The turn was " -#~ "skipped." -#~ msgstr "" -#~ "L'enregistrement de la base de donn?es pour le noeud %d (cat = %d) n'a " -#~ "pas ?t? trouv? (co?t fix? ? 0)" - -#, fuzzy -#~ msgid "Cannot add network arc representing turn." -#~ msgstr "Impossible d'ajouter un arc de r?seau" - -#, fuzzy -#~ msgid "" -#~ "Database record for line %d (cat = %d, forward/both direction(s)) not " -#~ "found (cost was set to 0)" -#~ msgstr "" -#~ "L'enregistrement de la base de donn?es de la ligne %d (cat = %d, avant/" -#~ "toutes directions) introuvable (avant/toutes directions de la ligne " -#~ "saut?e)" - -#, fuzzy -#~ msgid "" -#~ "Database record for line %d (cat = %d, backword direction) not found(cost " -#~ "was set to 0)" -#~ msgstr "" -#~ "L'enregistrement de la base de donn?es de la ligne %d (cat = %d, " -#~ "direction arri?re) introuvable (direction de la ligne saut?e)" - -#~ msgid "" -#~ "force removal of .gislock if exists (use with care!). Only with -text flag" -#~ msgstr "" -#~ "force la suppression de .gislock si il existe (utiliser avec pr?causion). " -#~ "Uniquement avec l'argument -text" - -#~ msgid "" -#~ "%(user)s is currently running GRASS in selected mapset (file %(file)s " -#~ "found). Concurrent use not allowed.\n" -#~ "You can force launching GRASS using -f flag (note that you need " -#~ "permission for this operation). Have another look in the processor " -#~ "manager just to be sure..." -#~ msgstr "" -#~ "%(user)s utilise GRASS dans le jeu de cartes s?lectionn? (fichier " -#~ "%(file)s trouv?). Les utilisations simultan?es ne sont pas permises.\n" -#~ "Vous pouvez forcer le d?marrage de GRASS avec l'option -f (vous devez " -#~ "avoir les permissions pour cette op?ration). V?rifiez le gestionnaire de " -#~ "processus pour ?tre s?r ..." - -#~ msgid "" -#~ "%(user)s is currently running GRASS in selected mapset (file %(file)s " -#~ "found). Forcing to launch GRASS..." -#~ msgstr "" -#~ "%(user)s utilise GRASS dans le jeu de cartes s?lectionn? (fichier " -#~ "%(file)s trouv?). Lancement de GRASS forc? ..." - -#~ msgid "" -#~ "Unable to start GRASS GIS. You have the choice to:\n" -#~ " - Launch the GRASS GIS interface with the '-gui' switch (`%s -gui`)\n" -#~ " - Launch GRASS GIS directly with path to the location/mapset as an " -#~ "argument (`%s /path/to/location/mapset`)\n" -#~ " - Create manually the GISRC file (%s)" -#~ msgstr "" -#~ "Impossible de d?marrer le SIG GRASS. Vous avez le choix de :\n" -#~ "- D?marrer l'interface graphique avec l'argument '-gui' (`%s -gui`)\n" -#~ "- D?marrer le SIG GRASS directement avec le chemin du secteur/jeu de " -#~ "cartes en argument (`%s /chemin/vers/secteur/jeu/de/cartes`)\n" -#~ "- Cr?er manuellement le fichier GISRC (%s)" - -#~ msgid "input='-' must be used when stdin is specified" -#~ msgstr "input='-' doit ?tre utilis? quand stdin est sp?cifi?" - -#, fuzzy -#~ msgid "stdin must be string or buffer, not PIPE" -#~ msgstr "stdin doit ?tre une cha?ne ou un tampon, pas un PIPE" - -#~ msgid "stdin must be used when input='-'" -#~ msgstr "stdin doit ?tre utilis? quand input='-'" - -#~ msgid "stdout argument not allowed, it could be overridden" -#~ msgstr "argument stdout non autoris?, il peut ?tre ?cras?" - -#~ msgid "stderr argument not allowed, it could be overridden" -#~ msgstr "argument stderr non autoris?, il peut ?tre ?cras?" +msgstr "%s : d?passement de m?moire" From svn_grass at osgeo.org Mon Sep 28 09:20:58 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Mon, 28 Sep 2015 09:20:58 -0700 Subject: [GRASS-SVN] r66374 - in grass-addons/grass7/vector: v.kriging v.nnstat Message-ID: <20150928162058.8DA603900A7@trac.osgeo.org> Author: neteler Date: 2015-09-28 09:20:58 -0700 (Mon, 28 Sep 2015) New Revision: 66374 Modified: grass-addons/grass7/vector/v.kriging/Makefile grass-addons/grass7/vector/v.nnstat/Makefile grass-addons/grass7/vector/v.nnstat/utils.c Log: v.kriging, v.nnstat addons: attempt to fix Makefile; fix compiler warning -Wabsolute-value and return in void function Modified: grass-addons/grass7/vector/v.kriging/Makefile =================================================================== --- grass-addons/grass7/vector/v.kriging/Makefile 2015-09-28 10:56:21 UTC (rev 66373) +++ grass-addons/grass7/vector/v.kriging/Makefile 2015-09-28 16:20:58 UTC (rev 66374) @@ -2,9 +2,8 @@ PGM = v.kriging -LIBES = $(RASTER3DLIB) $(RASTERLIB) $(VECTORLIB) $(DBMILIB) $(GMATHLIB) $(GISLIB) $(IOSTREAMLIB) $(RTREELIB) - -DEPENDENCIES= $(RASTER3DDEP) $(RASTERDEP) $(VECTORDEP) $(DBMIDEP) $(GMATHDEP) $(GISDEP) $(IOSTREAMDEP) $(RTREEDEP) +LIBES = $(VECTORLIB) $(DBMILIB) $(GISLIB) $(GMATHLIB) $(IOSTREAMLIB) $(MATHLIB) $(RTREELIB) $(RASTER3DLIB) $(RASTERLIB) +DEPENDENCIES = $(VECTORDEP) $(DBMIDEP) $(GISDEP) $(GMATHDEP) $(IOSTREAMDEP) $(RTREEDEP) $(RASTER3DDEP) $(RASTERDEP) EXTRA_INC = $(VECT_INC) $(PROJINC) EXTRA_CFLAGS = $(VECT_CFLAGS) Modified: grass-addons/grass7/vector/v.nnstat/Makefile =================================================================== --- grass-addons/grass7/vector/v.nnstat/Makefile 2015-09-28 10:56:21 UTC (rev 66373) +++ grass-addons/grass7/vector/v.nnstat/Makefile 2015-09-28 16:20:58 UTC (rev 66374) @@ -3,7 +3,7 @@ PGM = v.nnstat LIBES = $(VECTORLIB) $(DBMILIB) $(GISLIB) $(GMATHLIB) $(IOSTREAMLIB) $(MATHLIB) $(RTREELIB) -DEPENDENCIES= $(VECTORDEP) $(DBMIDEP) $(GISDEP) $(IOSTREAMDEP) $(RTREEDEP) +DEPENDENCIES = $(VECTORDEP) $(DBMIDEP) $(GISDEP) $(GMATHDEP) $(IOSTREAMDEP) $(RTREEDEP) EXTRA_INC = $(VECT_INC) EXTRA_CFLAGS = $(VECT_CFLAGS) Modified: grass-addons/grass7/vector/v.nnstat/utils.c =================================================================== --- grass-addons/grass7/vector/v.nnstat/utils.c 2015-09-28 10:56:21 UTC (rev 66373) +++ grass-addons/grass7/vector/v.nnstat/utils.c 2015-09-28 16:20:58 UTC (rev 66374) @@ -25,7 +25,7 @@ return -9999; } - us = atan(fabsf(dy / dx)); + us = atan(fabs(dy / dx)); if (dx == 0. && dy > 0.) { us = 0.5 * PI; } From svn_grass at osgeo.org Mon Sep 28 14:48:58 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Mon, 28 Sep 2015 14:48:58 -0700 Subject: [GRASS-SVN] r66375 - grass/trunk/gui/wxpython/animation Message-ID: <20150928214858.396D03900A7@trac.osgeo.org> Author: annakrat Date: 2015-09-28 14:48:58 -0700 (Mon, 28 Sep 2015) New Revision: 66375 Modified: grass/trunk/gui/wxpython/animation/mapwindow.py Log: wxGUI/animation: prevent drawing empty bitmap which causes problems with wxGTK3 Modified: grass/trunk/gui/wxpython/animation/mapwindow.py =================================================================== --- grass/trunk/gui/wxpython/animation/mapwindow.py 2015-09-28 16:20:58 UTC (rev 66374) +++ grass/trunk/gui/wxpython/animation/mapwindow.py 2015-09-28 21:48:58 UTC (rev 66375) @@ -122,7 +122,7 @@ Debug.msg(5, "AnimationWindow.Draw()") dc.Clear() # make sure you clear the bitmap! - if self.bitmap.IsOk(): + if self.bitmap.GetWidth() > 1: dc.DrawBitmap(self.bitmap, x=self.x, y=self.y) def OnSize(self, event): From svn_grass at osgeo.org Mon Sep 28 14:55:06 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Mon, 28 Sep 2015 14:55:06 -0700 Subject: [GRASS-SVN] r66376 - grass/branches/releasebranch_7_0/gui/wxpython/animation Message-ID: <20150928215506.C7A633900A7@trac.osgeo.org> Author: annakrat Date: 2015-09-28 14:55:06 -0700 (Mon, 28 Sep 2015) New Revision: 66376 Modified: grass/branches/releasebranch_7_0/gui/wxpython/animation/mapwindow.py Log: wxGUI/animation: prevent drawing empty bitmap which causes problems with wxGTK3 (merge from trunk, r66375) Modified: grass/branches/releasebranch_7_0/gui/wxpython/animation/mapwindow.py =================================================================== --- grass/branches/releasebranch_7_0/gui/wxpython/animation/mapwindow.py 2015-09-28 21:48:58 UTC (rev 66375) +++ grass/branches/releasebranch_7_0/gui/wxpython/animation/mapwindow.py 2015-09-28 21:55:06 UTC (rev 66376) @@ -122,7 +122,8 @@ Debug.msg(5, "AnimationWindow.Draw()") dc.Clear() # make sure you clear the bitmap! - dc.DrawBitmap(self.bitmap, x=self.x, y=self.y) + if self.bitmap.GetWidth() > 1: + dc.DrawBitmap(self.bitmap, x=self.x, y=self.y) def OnSize(self, event): Debug.msg(5, "AnimationWindow.OnSize()") From svn_grass at osgeo.org Tue Sep 29 04:06:28 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Tue, 29 Sep 2015 04:06:28 -0700 Subject: [GRASS-SVN] r66377 - grass-addons/grass7/vector/v.mapcalc Message-ID: <20150929110628.DF7253900A7@trac.osgeo.org> Author: neteler Date: 2015-09-29 04:06:28 -0700 (Tue, 29 Sep 2015) New Revision: 66377 Modified: grass-addons/grass7/vector/v.mapcalc/Makefile Log: v.mapcalc addon: attempt to fix Makefile Modified: grass-addons/grass7/vector/v.mapcalc/Makefile =================================================================== --- grass-addons/grass7/vector/v.mapcalc/Makefile 2015-09-28 21:55:06 UTC (rev 66376) +++ grass-addons/grass7/vector/v.mapcalc/Makefile 2015-09-29 11:06:28 UTC (rev 66377) @@ -1,5 +1,7 @@ MODULE_TOPDIR = ../.. +include $(MODULE_TOPDIR)/include/Make/Vars.make + PGM = v.mapcalc LIBES = $(VECTORLIB) $(GISLIB) $(DLLIB) $(MATHLIB) From svn_grass at osgeo.org Tue Sep 29 06:44:37 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Tue, 29 Sep 2015 06:44:37 -0700 Subject: [GRASS-SVN] r66378 - grass-addons/grass7/general/g.cloud Message-ID: <20150929134437.1A060390273@trac.osgeo.org> Author: neteler Date: 2015-09-29 06:44:37 -0700 (Tue, 29 Sep 2015) New Revision: 66378 Modified: grass-addons/grass7/general/g.cloud/cloud_collect.sh grass-addons/grass7/general/g.cloud/cloud_mail.sh grass-addons/grass7/general/g.cloud/g.cloud.py Log: g.cloud addon: minor updates for G7.0.x Modified: grass-addons/grass7/general/g.cloud/cloud_collect.sh =================================================================== --- grass-addons/grass7/general/g.cloud/cloud_collect.sh 2015-09-29 11:06:28 UTC (rev 66377) +++ grass-addons/grass7/general/g.cloud/cloud_collect.sh 2015-09-29 13:44:37 UTC (rev 66378) @@ -32,13 +32,13 @@ echo "" echo "Usage: $0 targetgrassdbase targetlocation mail_address remove_file" echo "" - echo "targetgrassdbase = GRASSDBASE where write files" - echo "targetlocation = LOCATION where write files" - echo "mail_address = Mail address where send email when jobs finish, NOOO to no mail" - echo "remove_file = Remove temporary files, NOOO to no remove" + echo "targetgrassdbase = GRASSDBASE where to write files" + echo "targetlocation = LOCATION where to write files" + echo "mail_address = Mail address where to send email when jobs finish, put NOOO for no email" + echo "remove_file = Remove temporary files, put NOOO for no removal" echo "" echo "Example:" - echo " $0 /grassdata patUTM32 launch_SGE_grassjob_rsun_energy.sh" + echo " $0 /path/to/grassdata patUTM32 launch_SGE_grassjob_rsun_energy.sh" exit 0 fi @@ -88,11 +88,11 @@ TOCOLLECTFILE=to_be_collected_$MYPID.csv -ls -1 $GRASSDBROOT/$MYLOC/sge*/${MYPID} > $GRASSDBROOT/$MYLOC/$TOCOLLECTFILE +ls -1 "$GRASSDBROOT/$MYLOC/sge*/${MYPID}" > "$GRASSDBROOT/$MYLOC/$TOCOLLECTFILE" -rm -f $GRASSDBROOT/$MYLOC/clean_$TOCOLLECTFILE +rm -f "$GRASSDBROOT/$MYLOC/clean_$TOCOLLECTFILE" for myname in `cat $GRASSDBROOT/$MYLOC/$TOCOLLECTFILE` ; do - basename `dirname $myname` >> $GRASSDBROOT/$MYLOC/clean_$TOCOLLECTFILE + basename `dirname $myname` >> "$GRASSDBROOT/$MYLOC/clean_$TOCOLLECTFILE" done LIST=`cat $GRASSDBROOT/$MYLOC/clean_$TOCOLLECTFILE` @@ -101,40 +101,41 @@ for mapset in $LIST ; do - MAPS=`g.list rast mapset=$mapset` + MAPS=`g.list raster mapset=$mapset` for map in $MAPS ; do g.copy raster=$map@$mapset,$map --o done done for mapset in $LIST ; do - MAPS=`g.list rast3d mapset=$mapset` + MAPS=`g.list raster3d mapset=$mapset` for map in $MAPS ; do g.copy raster=$map@$mapset,$map --o done done for mapset in $LIST ; do - MAPS=`g.list vect mapset=$mapset` + MAPS=`g.list vector mapset=$mapset` for map in $MAPS ; do g.copy vector=$map@$mapset,$map --o done done if [ "$REMOVE" != "NOOO" ] ; then - rm -f $GRASSDBROOT/$MYLOC/$MYMAPSET/.gislock - rm -f $GRASSDBROOT/$MYLOC/clean_$TOCOLLECTFILE - rm -f $GRASSDBROOT/$MYLOC/$TOCOLLECTFILE + rm -f "$GRASSDBROOT/$MYLOC/$MYMAPSET/.gislock" + rm -f "$GRASSDBROOT/$MYLOC/clean_$TOCOLLECTFILE" + rm -f "$GRASSDBROOT/$MYLOC/$TOCOLLECTFILE" if [ ! -z "$GRASSDBROOT" ] ; then if [ ! -z "$MYLOC" ] ; then - rm -fr $GRASSDBROOT/$MYLOC/sge* + rm -fr "$GRASSDBROOT/$MYLOC/sge*" fi fi fi if [ "$MAILADDR" != "NOOO" ] ; then - sh -x cloud_mail.sh $MAILADDR + #sh -x cloud_mail.sh $MAILADDR + sh cloud_mail.sh $MAILADDR fi rm -f $MYGISRC Modified: grass-addons/grass7/general/g.cloud/cloud_mail.sh =================================================================== --- grass-addons/grass7/general/g.cloud/cloud_mail.sh 2015-09-29 11:06:28 UTC (rev 66377) +++ grass-addons/grass7/general/g.cloud/cloud_mail.sh 2015-09-29 13:44:37 UTC (rev 66378) @@ -1,5 +1,5 @@ #!/bin/sh -FROMMAIL="me at somewhere.com" # TO BE SET +FROMMAIL="me at example.com" # TO BE SET echo "$1 The jobs that you submitted have finished" | mail -s "Jobs finished" $1 Modified: grass-addons/grass7/general/g.cloud/g.cloud.py =================================================================== --- grass-addons/grass7/general/g.cloud/g.cloud.py 2015-09-29 11:06:28 UTC (rev 66377) +++ grass-addons/grass7/general/g.cloud/g.cloud.py 2015-09-29 13:44:37 UTC (rev 66378) @@ -226,17 +226,17 @@ mapset_name = os.path.join(home,"grassdata%s" % pid, location_name,"PERMANENT") grass.message(_("Job %s terminated, now coping the result data..." % pid)) - conn.ssh('"cd %s; tar --exclude=DEFAULT_WIND --exclude=PROJ_INFO --exclude=PROJ_UNITS -czf %s *;"' \ + conn.ssh('"cd %s; tar --exclude=DEFAULT_WIND --exclude=PROJ_INFO --exclude=PROJ_UNITS --exclude=PROJ_EPSG -czf %s *;"' \ % (mapset_name, output_file)) conn.pcs(output_file, path) new_mapset = os.path.join(vari['GISDBASE'],vari['LOCATION_NAME'],'gcloud%s' % pid) #os.mkdir(new_mapset) outtar = tarfile.open(os.path.join(path,"gcloud_result_%s.tar.gz" % pid), "r:gz") outtar.extractall(path=new_mapset) - grass.message(_("To see the new data launch\n g.mapsets add=gcloud%s" % pid)) + grass.message(_("To see the new data launch\n g.mapsets mapset=gcloud operation=add%s" % pid)) else: - grass.message(_("Job %s it is not terminated yet" % pid)) - return + grass.message(_("Job %s not yet completed..." % pid)) + return # main function def main(): @@ -260,7 +260,7 @@ grassVersion = 'grass%s%s' % (version['version'][0],version['version'][2]) session_path = '.grass%s' % version['version'][0] else: - grass.fatal(_('You are not in GRASS GIS version 7')) + grass.fatal(_('You are not in a GRASS GIS version 7 session')) return 0 # set the path of grassdata/location/mapset # set to .grass7 folder @@ -333,8 +333,9 @@ ssh_conn.ssh('mkdir -p %s' % new_perm) tar = tarfile.open("PERMANENT.tar.gz", "w:gz") tar.add(os.path.join(permanent,'PROJ_INFO'),'PROJ_INFO') + tar.add(os.path.join(permanent,'PROJ_UNITS'),'PROJ_UNITS') + tar.add(os.path.join(permanent,'PROJ_EPSG'),'PROJ_EPSG') tar.add(os.path.join(permanent,'DEFAULT_WIND'),'DEFAULT_WIND') - tar.add(os.path.join(permanent,'PROJ_UNITS'),'PROJ_UNITS') tar.add(os.path.join(permanent,'WIND'),'WIND') if os.path.isfile(os.path.join(permanent,'VAR')): tar.add(os.path.join(permanent,'VAR'),'VAR') From svn_grass at osgeo.org Tue Sep 29 18:07:13 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Tue, 29 Sep 2015 18:07:13 -0700 Subject: [GRASS-SVN] r66379 - grass/trunk/vector/v.random Message-ID: <20150930010713.7F257390273@trac.osgeo.org> Author: wenzeslaus Date: 2015-09-29 18:07:13 -0700 (Tue, 29 Sep 2015) New Revision: 66379 Modified: grass/trunk/vector/v.random/main.c Log: v.random: use unsigned long and strtoul for number of points Modified: grass/trunk/vector/v.random/main.c =================================================================== --- grass/trunk/vector/v.random/main.c 2015-09-29 13:44:37 UTC (rev 66378) +++ grass/trunk/vector/v.random/main.c 2015-09-30 01:07:13 UTC (rev 66379) @@ -64,7 +64,8 @@ double (*rng)(void) = G_drand48; double zmin, zmax; int seed; - int i, j, k, n, type, usefloat; + unsigned long i, n; + int j, k, type, usefloat; int area, nareas, field; struct boxlist *List = NULL; BOX_SIZE *size_list = NULL; @@ -179,8 +180,8 @@ exit(EXIT_FAILURE); output = parm.output->answer; - n = atoi(parm.nsites->answer); - + n = strtoul(parm.nsites->answer, NULL, 10); + if(parm.seed->answer) seed = atoi(parm.seed->answer); From svn_grass at osgeo.org Tue Sep 29 19:31:39 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Tue, 29 Sep 2015 19:31:39 -0700 Subject: [GRASS-SVN] r66380 - grass/trunk/raster/r.in.lidar Message-ID: <20150930023139.96B3A3901A5@trac.osgeo.org> Author: wenzeslaus Date: 2015-09-29 19:31:39 -0700 (Tue, 29 Sep 2015) New Revision: 66380 Modified: grass/trunk/raster/r.in.lidar/main.c Log: r.in.lidar: more gui sections Modified: grass/trunk/raster/r.in.lidar/main.c =================================================================== --- grass/trunk/raster/r.in.lidar/main.c 2015-09-30 01:07:13 UTC (rev 66379) +++ grass/trunk/raster/r.in.lidar/main.c 2015-09-30 02:31:39 UTC (rev 66380) @@ -205,6 +205,7 @@ base_raster_opt->required = NO; base_raster_opt->label = _("Subtract raster values from the z coordinates"); base_raster_opt->description = _("The scale for z is applied beforehand, the filter afterwards"); + base_raster_opt->guisection = _("Transform"); zrange_opt = G_define_option(); zrange_opt->key = "zrange"; @@ -212,6 +213,7 @@ zrange_opt->required = NO; zrange_opt->key_desc = "min,max"; zrange_opt->description = _("Filter range for z data (min,max)"); + zrange_opt->guisection = _("Selection"); zscale_opt = G_define_option(); zscale_opt->key = "zscale"; @@ -219,6 +221,7 @@ zscale_opt->required = NO; zscale_opt->answer = "1.0"; zscale_opt->description = _("Scale to apply to z data"); + zscale_opt->guisection = _("Transform"); percent_opt = G_define_option(); percent_opt->key = "percent"; @@ -243,6 +246,7 @@ trim_opt->type = TYPE_DOUBLE; trim_opt->required = NO; trim_opt->options = "0-50"; + trim_opt->label = _("Discard given percentage of the smallest and largest values"); trim_opt->description = _("Discard percent of the smallest and percent of the largest observations"); trim_opt->guisection = _("Statistic"); @@ -261,6 +265,7 @@ filter_opt->label = _("Only import points of selected return type"); filter_opt->description = _("If not specified, all points are imported"); filter_opt->options = "first,last,mid"; + filter_opt->guisection = _("Selection"); class_opt = G_define_option(); class_opt->key = "class_filter"; @@ -270,6 +275,7 @@ class_opt->label = _("Only import points of selected class(es)"); class_opt->description = _("Input is comma separated integers. " "If not specified, all points are imported."); + class_opt->guisection = _("Selection"); print_flag = G_define_flag(); print_flag->key = 'p'; From svn_grass at osgeo.org Wed Sep 30 08:43:34 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Wed, 30 Sep 2015 08:43:34 -0700 Subject: [GRASS-SVN] r66381 - grass-addons/grass7/raster/r.stream.distance Message-ID: <20150930154334.2869A39015C@trac.osgeo.org> Author: hcho Date: 2015-09-30 08:43:34 -0700 (Wed, 30 Sep 2015) New Revision: 66381 Modified: grass-addons/grass7/raster/r.stream.distance/r.stream.distance.html Log: r.stream.distance: duplicate words Modified: grass-addons/grass7/raster/r.stream.distance/r.stream.distance.html =================================================================== --- grass-addons/grass7/raster/r.stream.distance/r.stream.distance.html 2015-09-30 02:31:39 UTC (rev 66380) +++ grass-addons/grass7/raster/r.stream.distance/r.stream.distance.html 2015-09-30 15:43:34 UTC (rev 66381) @@ -70,7 +70,7 @@ Alternatively, in outlet mode, it's the raster map of the outlet.
    direction
    -
    Flow direction: name of input input raster map with flow direction, +
    Flow direction: name of input raster map with flow direction, produced using either r.watershed or r.stream.extract. If r.stream.extract output map is used, it is non-NULL only where streams occur and NULL elsewhere. NULL (nodata) cells are ignored, From svn_grass at osgeo.org Wed Sep 30 09:37:51 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Wed, 30 Sep 2015 09:37:51 -0700 Subject: [GRASS-SVN] r66382 - grass/trunk/display/d.rast.arrow Message-ID: <20150930163751.3A0F839015C@trac.osgeo.org> Author: hcho Date: 2015-09-30 09:37:51 -0700 (Wed, 30 Sep 2015) New Revision: 66382 Modified: grass/trunk/display/d.rast.arrow/d.rast.arrow.html grass/trunk/display/d.rast.arrow/main.c Log: d.rast.arrow: Added the Drainage aspect type (r.watershed drainage= output) Modified: grass/trunk/display/d.rast.arrow/d.rast.arrow.html =================================================================== --- grass/trunk/display/d.rast.arrow/d.rast.arrow.html 2015-09-30 15:43:34 UTC (rev 66381) +++ grass/trunk/display/d.rast.arrow/d.rast.arrow.html 2015-09-30 16:37:51 UTC (rev 66382) @@ -25,9 +25,9 @@ You may adjust the overall scale using the scale option. d.rast.arrow will ignore NULL and negative magnitudes, and will warn you if the debug level is set at 5 or higher. Be aware. If your application -uses negative values for magnitude, you can use r.mapcalc to prepare -the magnitude map to suit your needs (absolute value, inverted direction and -so on). +uses negative values for magnitude, you can use +r.mapcalc to prepare the magnitude map to +suit your needs (absolute value, inverted direction and so on).

    NOTES

    By default, arrows are drawn at the size of a cell and cannot be seen if @@ -36,11 +36,14 @@ with relatively high resolutions. It may be useful to disable the grid in this case, which is accomplished by setting its color to "none".

    For GRASS and Compass type aspect maps, the cell values of the aspect map -will determine the corresponding direction in 360 degrees. ANSWERS type -aspect maps will be plotted in multiples of 15 degrees, and AGNPS type -aspect maps will be displayed in D8 representation, i.e. the eight multiples -of 45 degrees. -

    GRASS aspect maps are measured using Cartesian conventions, i.e. in degrees +will determine the corresponding direction in 360 degrees. ANSWERS type aspect +maps will be plotted in multiples of 15 degrees counterclockwise from east, and +AGNPS and Drainage type aspect maps will be displayed in D8 representation, +i.e. the eight multiples of 45 degrees. Cell values are 1 to 8 clockwise from +north for AGNPS and 1 to 8 counterclockwise from north east for Drainage. See +r.watershed for more details about the +Drainage aspect. +

    GRASS aspect maps are measured using Cartesian conventions, i.e. in degrees counterclockwise from east. e.g.:

    @@ -50,7 +53,8 @@
     0,360 East
     
    -They can be created from a raster elevation map with r.slope.aspect. +They can be created from a raster elevation map with +r.slope.aspect.

    Compass type aspect maps are measured in degrees clockwise from north.

    This module uses oceanographic conventions, i.e. arrows point downslope or direction "to", as opposed to atmospheric conventions (direction "from"). @@ -75,6 +79,7 @@ d.rast.num
    g.region
    r.slope.aspect
    +r.watershed

    AUTHORS

    @@ -86,6 +91,8 @@ Magnitude and 360 arrow code
    Hamish Bowman
    Department of Marine Science,
    -University of Otago, New Zealand
    +University of Otago, New Zealand


    +Align grids with raster cells and Drainage aspect type
    +Huidae Cho

    Last changed: $Date$ Modified: grass/trunk/display/d.rast.arrow/main.c =================================================================== --- grass/trunk/display/d.rast.arrow/main.c 2015-09-30 15:43:34 UTC (rev 66381) +++ grass/trunk/display/d.rast.arrow/main.c 2015-09-30 16:37:51 UTC (rev 66382) @@ -15,6 +15,8 @@ /* some minor cleanup done by Andreas Lange, andreas.lange at rhein-main.de * Update to handle NULLs and floating point aspect maps: Hamish Bowman, Aug 2004 * Update for 360 degree arrows and magnitude scaling: Hamish Bowman, Oct 2005 + * Align grids with raster cells: Huidae Cho, Apr 2009 + * Drainage aspect type: Huidae Cho, Sep 2015 */ /* @@ -107,7 +109,7 @@ opt2->type = TYPE_STRING; opt2->required = NO; opt2->answer = "grass"; - opt2->options = "grass,compass,agnps,answers"; + opt2->options = "grass,compass,drainage,agnps,answers"; opt2->description = _("Type of existing raster aspect map"); opt3 = G_define_standard_option(G_OPT_C); @@ -199,6 +201,8 @@ map_type = 3; else if (strcmp("compass", opt2->answer) == 0) map_type = 4; + else if (strcmp("drainage", opt2->answer) == 0) + map_type = 5; scale = atof(opt8->answer); @@ -373,7 +377,7 @@ /* treat AGNPS and ANSWERS data like old zero-as-null CELL */ /* TODO: update models */ - if (map_type == 2 || map_type == 3) { + if (map_type == 2 || map_type == 3 || map_type == 5) { if (Rast_is_null_value(ptr, raster_type)) aspect_c = 0; else @@ -507,6 +511,53 @@ } } + /* case switch for r.watershed drainage type aspect map */ + else if (map_type == 5) { + D_use_color(arrow_color); + switch (aspect_c >= 0 ? aspect_c : -aspect_c) { + case 0: + /* only draw if x_color is not none (transparent) */ + if (x_color > 0) { + D_use_color(x_color); + draw_x(); + D_use_color(arrow_color); + } + break; + case 1: + arrow_ne(); + break; + case 2: + arrow_n(); + break; + case 3: + arrow_nw(); + break; + case 4: + arrow_w(); + break; + case 5: + arrow_sw(); + break; + case 6: + arrow_s(); + break; + case 7: + arrow_se(); + break; + case 8: + arrow_e(); + break; + default: + /* only draw if unknown_color is not none */ + if (unknown_color > 0) { + D_use_color(unknown_color); + unknown_(); + D_use_color(arrow_color); + } + break; + } + } + ptr = G_incr_void_ptr(ptr, Rast_cell_size(raster_type)); if (opt7->answer) mag_ptr = From svn_grass at osgeo.org Wed Sep 30 09:42:11 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Wed, 30 Sep 2015 09:42:11 -0700 Subject: [GRASS-SVN] r66383 - grass/trunk/display/d.rast.arrow Message-ID: <20150930164211.E4253390108@trac.osgeo.org> Author: hcho Date: 2015-09-30 09:42:11 -0700 (Wed, 30 Sep 2015) New Revision: 66383 Modified: grass/trunk/display/d.rast.arrow/d.rast.arrow.html Log: d.rast.arrow: Remove trailing spaces Modified: grass/trunk/display/d.rast.arrow/d.rast.arrow.html =================================================================== --- grass/trunk/display/d.rast.arrow/d.rast.arrow.html 2015-09-30 16:37:51 UTC (rev 66382) +++ grass/trunk/display/d.rast.arrow/d.rast.arrow.html 2015-09-30 16:42:11 UTC (rev 66383) @@ -19,20 +19,20 @@ You can disable drawing of null data and unknown aspect values by setting its color to "none". -

    If you specify the magnitude_map option, arrow lengths -denoting magnitude will be extracted from the cell values of the specified +

    If you specify the magnitude_map option, arrow lengths +denoting magnitude will be extracted from the cell values of the specified map. In this case the tail of the arrow will be centered on the source cell. You may adjust the overall scale using the scale option. d.rast.arrow will ignore NULL and negative magnitudes, and will warn you if the debug level is set at 5 or higher. Be aware. If your application uses negative values for magnitude, you can use r.mapcalc to prepare the magnitude map to -suit your needs (absolute value, inverted direction and so on). +suit your needs (absolute value, inverted direction and so on).

    NOTES

    -By default, arrows are drawn at the size of a cell and cannot be seen if -the raster map is relatively close in scale. You can use the skip -option to draw arrows every n-th cell in both directions if you are working +By default, arrows are drawn at the size of a cell and cannot be seen if +the raster map is relatively close in scale. You can use the skip +option to draw arrows every n-th cell in both directions if you are working with relatively high resolutions. It may be useful to disable the grid in this case, which is accomplished by setting its color to "none".

    For GRASS and Compass type aspect maps, the cell values of the aspect map @@ -56,15 +56,15 @@ They can be created from a raster elevation map with r.slope.aspect.

    Compass type aspect maps are measured in degrees clockwise from north. -

    This module uses oceanographic conventions, i.e. arrows point downslope or +

    This module uses oceanographic conventions, i.e. arrows point downslope or direction "to", as opposed to atmospheric conventions (direction "from").

    EXAMPLE

    -Convert U,V velocity component maps into magnitide,direction maps for use +Convert U,V velocity component maps into magnitide,direction maps for use with d.rast.arrow: - +
     r.mapcalc "magnitude = sqrt(U_map^2 + V_map^2)"
     r.mapcalc "direction = atan(U_map, V_map)"
    @@ -90,7 +90,7 @@
     Purdue University

    Magnitude and 360 arrow code
    Hamish Bowman
    -Department of Marine Science,
    +Department of Marine Science,
    University of Otago, New Zealand


    Align grids with raster cells and Drainage aspect type
    Huidae Cho
    From svn_grass at osgeo.org Wed Sep 30 12:11:48 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Wed, 30 Sep 2015 12:11:48 -0700 Subject: [GRASS-SVN] r66384 - grass/trunk/imagery/i.segment Message-ID: <20150930191148.BD6A1390108@trac.osgeo.org> Author: neteler Date: 2015-09-30 12:11:48 -0700 (Wed, 30 Sep 2015) New Revision: 66384 Added: grass/trunk/imagery/i.segment/i_segment_lsat7_pan.png grass/trunk/imagery/i.segment/i_segment_lsat7_seg_min100.png grass/trunk/imagery/i.segment/i_segment_lsat7_seg_min5.png grass/trunk/imagery/i.segment/i_segment_ortho_segs_final.jpg grass/trunk/imagery/i.segment/i_segment_ortho_segs_l1.jpg grass/trunk/imagery/i.segment/i_segment_ortho_segs_l2_l5.jpg Removed: grass/trunk/imagery/i.segment/ortho_segs_final.jpg grass/trunk/imagery/i.segment/ortho_segs_l1.jpg grass/trunk/imagery/i.segment/ortho_segs_l2_l5.jpg Modified: grass/trunk/imagery/i.segment/ grass/trunk/imagery/i.segment/i.segment.html Log: i.segment manual: Landsat7 example added Property changes on: grass/trunk/imagery/i.segment ___________________________________________________________________ Modified: svn:ignore - OBJ.* + OBJ.* *.tmp.html Modified: grass/trunk/imagery/i.segment/i.segment.html =================================================================== --- grass/trunk/imagery/i.segment/i.segment.html 2015-09-30 16:42:11 UTC (rev 66383) +++ grass/trunk/imagery/i.segment/i.segment.html 2015-09-30 19:11:48 UTC (rev 66384) @@ -111,7 +111,10 @@ identical values, perfect fit, and a value of 0 means maximum possible distance, worst possible fit. -

    EXAMPLE

    +

    EXAMPLES

    + +

    Segmentation of RGB orthophoto

    + This example uses the ortho photograph included in the NC Sample Dataset. Set up an imagery group:
    @@ -131,7 +134,7 @@
     
    - +

    @@ -149,7 +152,7 @@

    - +

    @@ -173,13 +176,51 @@

    - +

    Processing the entire ortho image with nearly 10 million pixels took about 450 times more then for the final run. +

    Segmentation of panchromatic channel

    + +This example uses the panchromatic channel of the Landsat7 scene included +in the North Carolina sample dataset: + +
    +# create group with single channel
    +i.group group=singleband input=lsat7_2002_80
    +
    +# set computational region to Landsat7 PAN band
    +g.region raster=lsat7_2002_80 -p
    +
    +# perform segmentation with minsize=5
    +i.segment group=singleband threshold=0.05 minsize=5 \
    +  output=lsat7_2002_80_segmented_min5 goodness=lsat7_2002_80_goodness_min5
    +
    +# perform segmentation with minsize=100
    +i.segment group=singleband threshold=0.05 minsize=100
    +  output=lsat7_2002_80_segmented_min100 goodness=lsat7_2002_80_goodness_min100
    +
    + +

    +

    +
    +Original panchromatic channel of the Landsat7 scene +
    + +

    +

    +
    +Segmented panchromatic channel, minsize=5 +
    +

    +

    +
    +Segmented panchromatic channel, minsize=100 +
    +

    TODO

    Functionality

      Added: grass/trunk/imagery/i.segment/i_segment_lsat7_pan.png =================================================================== (Binary files differ) Property changes on: grass/trunk/imagery/i.segment/i_segment_lsat7_pan.png ___________________________________________________________________ Added: svn:mime-type + image/png Added: grass/trunk/imagery/i.segment/i_segment_lsat7_seg_min100.png =================================================================== (Binary files differ) Property changes on: grass/trunk/imagery/i.segment/i_segment_lsat7_seg_min100.png ___________________________________________________________________ Added: svn:mime-type + image/png Added: grass/trunk/imagery/i.segment/i_segment_lsat7_seg_min5.png =================================================================== (Binary files differ) Property changes on: grass/trunk/imagery/i.segment/i_segment_lsat7_seg_min5.png ___________________________________________________________________ Added: svn:mime-type + image/png Copied: grass/trunk/imagery/i.segment/i_segment_ortho_segs_final.jpg (from rev 66371, grass/trunk/imagery/i.segment/ortho_segs_final.jpg) =================================================================== (Binary files differ) Copied: grass/trunk/imagery/i.segment/i_segment_ortho_segs_l1.jpg (from rev 66371, grass/trunk/imagery/i.segment/ortho_segs_l1.jpg) =================================================================== (Binary files differ) Copied: grass/trunk/imagery/i.segment/i_segment_ortho_segs_l2_l5.jpg (from rev 66371, grass/trunk/imagery/i.segment/ortho_segs_l2_l5.jpg) =================================================================== (Binary files differ) Deleted: grass/trunk/imagery/i.segment/ortho_segs_final.jpg =================================================================== (Binary files differ) Deleted: grass/trunk/imagery/i.segment/ortho_segs_l1.jpg =================================================================== (Binary files differ) Deleted: grass/trunk/imagery/i.segment/ortho_segs_l2_l5.jpg =================================================================== (Binary files differ) From svn_grass at osgeo.org Wed Sep 30 12:14:28 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Wed, 30 Sep 2015 12:14:28 -0700 Subject: [GRASS-SVN] r66385 - grass/branches/releasebranch_7_0/imagery/i.segment Message-ID: <20150930191428.966FF390108@trac.osgeo.org> Author: neteler Date: 2015-09-30 12:14:28 -0700 (Wed, 30 Sep 2015) New Revision: 66385 Added: grass/branches/releasebranch_7_0/imagery/i.segment/i_segment_lsat7_pan.png grass/branches/releasebranch_7_0/imagery/i.segment/i_segment_lsat7_seg_min100.png grass/branches/releasebranch_7_0/imagery/i.segment/i_segment_lsat7_seg_min5.png grass/branches/releasebranch_7_0/imagery/i.segment/i_segment_ortho_segs_final.jpg grass/branches/releasebranch_7_0/imagery/i.segment/i_segment_ortho_segs_l1.jpg grass/branches/releasebranch_7_0/imagery/i.segment/i_segment_ortho_segs_l2_l5.jpg Removed: grass/branches/releasebranch_7_0/imagery/i.segment/ortho_segs_final.jpg grass/branches/releasebranch_7_0/imagery/i.segment/ortho_segs_l1.jpg grass/branches/releasebranch_7_0/imagery/i.segment/ortho_segs_l2_l5.jpg Modified: grass/branches/releasebranch_7_0/imagery/i.segment/ grass/branches/releasebranch_7_0/imagery/i.segment/i.segment.html Log: i.segment manual: Landsat7 example added Property changes on: grass/branches/releasebranch_7_0/imagery/i.segment ___________________________________________________________________ Modified: svn:ignore - OBJ.* + OBJ.* *.tmp.html Modified: grass/branches/releasebranch_7_0/imagery/i.segment/i.segment.html =================================================================== --- grass/branches/releasebranch_7_0/imagery/i.segment/i.segment.html 2015-09-30 19:11:48 UTC (rev 66384) +++ grass/branches/releasebranch_7_0/imagery/i.segment/i.segment.html 2015-09-30 19:14:28 UTC (rev 66385) @@ -111,7 +111,10 @@ identical values, perfect fit, and a value of 0 means maximum possible distance, worst possible fit. -

      EXAMPLE

      +

      EXAMPLES

      + +

      Segmentation of RGB orthophoto

      + This example uses the ortho photograph included in the NC Sample Dataset. Set up an imagery group:
      @@ -131,7 +134,7 @@
       
      - +

      @@ -149,7 +152,7 @@

      - +

      @@ -173,13 +176,51 @@

      - +

      Processing the entire ortho image with nearly 10 million pixels took about 450 times more then for the final run. +

      Segmentation of panchromatic channel

      + +This example uses the panchromatic channel of the Landsat7 scene included +in the North Carolina sample dataset: + +
      +# create group with single channel
      +i.group group=singleband input=lsat7_2002_80
      +
      +# set computational region to Landsat7 PAN band
      +g.region raster=lsat7_2002_80 -p
      +
      +# perform segmentation with minsize=5
      +i.segment group=singleband threshold=0.05 minsize=5 \
      +  output=lsat7_2002_80_segmented_min5 goodness=lsat7_2002_80_goodness_min5
      +
      +# perform segmentation with minsize=100
      +i.segment group=singleband threshold=0.05 minsize=100
      +  output=lsat7_2002_80_segmented_min100 goodness=lsat7_2002_80_goodness_min100
      +
      + +

      +

      +
      +Original panchromatic channel of the Landsat7 scene +
      + +

      +

      +
      +Segmented panchromatic channel, minsize=5 +
      +

      +

      +
      +Segmented panchromatic channel, minsize=100 +
      +

      TODO

      Functionality

        Copied: grass/branches/releasebranch_7_0/imagery/i.segment/i_segment_lsat7_pan.png (from rev 66384, grass/trunk/imagery/i.segment/i_segment_lsat7_pan.png) =================================================================== (Binary files differ) Copied: grass/branches/releasebranch_7_0/imagery/i.segment/i_segment_lsat7_seg_min100.png (from rev 66384, grass/trunk/imagery/i.segment/i_segment_lsat7_seg_min100.png) =================================================================== (Binary files differ) Copied: grass/branches/releasebranch_7_0/imagery/i.segment/i_segment_lsat7_seg_min5.png (from rev 66384, grass/trunk/imagery/i.segment/i_segment_lsat7_seg_min5.png) =================================================================== (Binary files differ) Copied: grass/branches/releasebranch_7_0/imagery/i.segment/i_segment_ortho_segs_final.jpg (from rev 66384, grass/trunk/imagery/i.segment/i_segment_ortho_segs_final.jpg) =================================================================== (Binary files differ) Copied: grass/branches/releasebranch_7_0/imagery/i.segment/i_segment_ortho_segs_l1.jpg (from rev 66384, grass/trunk/imagery/i.segment/i_segment_ortho_segs_l1.jpg) =================================================================== (Binary files differ) Copied: grass/branches/releasebranch_7_0/imagery/i.segment/i_segment_ortho_segs_l2_l5.jpg (from rev 66384, grass/trunk/imagery/i.segment/i_segment_ortho_segs_l2_l5.jpg) =================================================================== (Binary files differ) Deleted: grass/branches/releasebranch_7_0/imagery/i.segment/ortho_segs_final.jpg =================================================================== (Binary files differ) Deleted: grass/branches/releasebranch_7_0/imagery/i.segment/ortho_segs_l1.jpg =================================================================== (Binary files differ) Deleted: grass/branches/releasebranch_7_0/imagery/i.segment/ortho_segs_l2_l5.jpg =================================================================== (Binary files differ) From svn_grass at osgeo.org Wed Sep 30 13:12:39 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Wed, 30 Sep 2015 13:12:39 -0700 Subject: [GRASS-SVN] r66386 - grass/trunk/scripts/v.krige Message-ID: <20150930201239.7F19A39015C@trac.osgeo.org> Author: neteler Date: 2015-09-30 13:12:39 -0700 (Wed, 30 Sep 2015) New Revision: 66386 Modified: grass/trunk/scripts/v.krige/v.krige.py Log: v.krige: update to rgrass7 (contributed by pvanbosgeo) Modified: grass/trunk/scripts/v.krige/v.krige.py =================================================================== --- grass/trunk/scripts/v.krige/v.krige.py 2015-09-30 19:14:28 UTC (rev 66385) +++ grass/trunk/scripts/v.krige/v.krige.py 2015-09-30 20:12:39 UTC (rev 66386) @@ -6,7 +6,7 @@ PURPOSE: Performs ordinary or block kriging -DEPENDS: R 2.x, packages gstat, maptools and spgrass6, optional: automap +DEPENDS: R 2.x, packages gstat, maptools and rgrass7, optional: automap COPYRIGHT: (C) 2009-2014 the GRASS Development Team @@ -140,7 +140,7 @@ Checks for NULL values in the provided column and exits if they are present.""" #@NOTE: new way with R - as it doesn't alter original data - Rpointmap = robjects.r.readVECT6(map, type = 'point') + Rpointmap = robjects.r.readVECT(map, type = 'point') # checks if x,y columns are present in dataframe. If they do are present, but with different names, # they'll be duplicated. if "x" not in robjects.r.names(Rpointmap): @@ -232,7 +232,7 @@ def ExportMap(self, map, column, name, overwrite, command, variograms): # add kriging parameters to raster map history - robjects.r.writeRAST6(map, vname = name, zcol = column, overwrite = overwrite) + robjects.r.writeRAST(map, vname = name, zcol = column, overwrite = overwrite) grass.run_command('r.support', map = name, title = 'Kriging output', @@ -408,7 +408,7 @@ # R packages check. Will create one error message after check of all packages. missingPackagesList = [] - for each in ["rgeos", "gstat", "spgrass6", "maptools"]: + for each in ["rgeos", "gstat", "rgrass7", "maptools"]: if not robjects.r.require(each, quietly = True)[0]: missingPackagesList.append(each) if missingPackagesList: From svn_grass at osgeo.org Wed Sep 30 18:55:00 2015 From: svn_grass at osgeo.org (svn_grass at osgeo.org) Date: Wed, 30 Sep 2015 18:55:00 -0700 Subject: [GRASS-SVN] r66387 - in grass/trunk/vector: . v.decimate Message-ID: <20151001015500.5199B390108@trac.osgeo.org> Author: wenzeslaus Date: 2015-09-30 18:55:00 -0700 (Wed, 30 Sep 2015) New Revision: 66387 Added: grass/trunk/vector/v.decimate/ grass/trunk/vector/v.decimate/Makefile grass/trunk/vector/v.decimate/count_decimation.c grass/trunk/vector/v.decimate/count_decimation.h grass/trunk/vector/v.decimate/grid_decimation.c grass/trunk/vector/v.decimate/grid_decimation.h grass/trunk/vector/v.decimate/main.c grass/trunk/vector/v.decimate/v.decimate.html grass/trunk/vector/v.decimate/v_decimate_count.png grass/trunk/vector/v.decimate/v_decimate_grid_cat.png grass/trunk/vector/v.decimate/v_decimate_original.png Log: v.decimate: grid and count based decimation [news] Added: grass/trunk/vector/v.decimate/Makefile =================================================================== --- grass/trunk/vector/v.decimate/Makefile (rev 0) +++ grass/trunk/vector/v.decimate/Makefile 2015-10-01 01:55:00 UTC (rev 66387) @@ -0,0 +1,14 @@ + +MODULE_TOPDIR = ../.. + +PGM = v.decimate + +LIBES = $(VECTORLIB) $(DBMILIB) $(RASTERLIB) $(GISLIB) $(BTREE2LIB) $(SEGMENTLIB) +DEPENDENCIES = $(VECTORDEP) $(DBMIDEP) $(RASTERDEP) $(GISDEP) $(SEGMENTDEP) + +EXTRA_INC = $(VECT_INC) +EXTRA_CFLAGS = $(VECT_CFLAGS) + +include $(MODULE_TOPDIR)/include/Make/Module.make + +default: cmd Property changes on: grass/trunk/vector/v.decimate/Makefile ___________________________________________________________________ Added: svn:mime-type + text/x-makefile Added: svn:eol-style + native Added: grass/trunk/vector/v.decimate/count_decimation.c =================================================================== --- grass/trunk/vector/v.decimate/count_decimation.c (rev 0) +++ grass/trunk/vector/v.decimate/count_decimation.c 2015-10-01 01:55:00 UTC (rev 66387) @@ -0,0 +1,132 @@ +/**************************************************************************** + * + * MODULE: v.decimate + * AUTHOR(S): Vaclav Petras + * PURPOSE: Reduce the number of points in a vector map + * COPYRIGHT: (C) 2015 by the GRASS Development Team + * + * This program is free software under the GNU General Public + * License (>=v2). Read the COPYING file that comes with GRASS + * for details. + * + *****************************************************************************/ + + +/* TODO: change int */ +/* TODO: revise names */ + +#include "count_decimation.h" + +#include + +#include + + +void count_decimation_init(struct CountDecimationControl *control, + int *skip, int *preserve, + int *offset, int *limit) +{ + control->skip_every = 0; + control->preserve_every = 0; + /* counter used by both but that's ok, skip and preserve are exclusive */ + control->every_counter = 0; + control->n_count_filtered = 0; + control->offset_n = 0; + control->offset_n_counter = 0; + control->limit_n = 0; + control->limit_n_counter = 0; + if (skip) + control->skip_every = *skip; + if (preserve) + control->preserve_every = *preserve; + if (offset) + control->offset_n = *offset; + if (limit) + control->limit_n = *limit; +} + + +int count_decimation_is_valid(struct CountDecimationControl *control) +{ + if (control->skip_every == 1) + return FALSE; + if (control->skip_every && control->preserve_every > 1) + return FALSE; + return TRUE; +} + + +int count_decimation_is_noop(struct CountDecimationControl *control) +{ + if (control->skip_every < 2 && control->preserve_every < 2 + && !control->offset_n && !control->limit_n) + return TRUE; + return FALSE; +} + +void count_decimation_init_from_str(struct CountDecimationControl *control, + const char *skip, const char *preserve, + const char *offset, const char *limit) +{ + control->skip_every = 0; + control->preserve_every = 0; + control->every_counter = 0; + control->n_count_filtered = 0; + control->offset_n = 0; + control->offset_n_counter = 0; + control->limit_n = 0; + control->limit_n_counter = 0; + /* TODO: atoi is probably not appropriate */ + if (skip) + control->skip_every = atoi(skip); + if (preserve) + control->preserve_every = atoi(preserve); + if (offset) + control->offset_n = atoi(offset); + if (limit) + control->limit_n = atoi(limit); +} + + +/* TODO: eliminate noop cases */ +int count_decimation_is_out(struct CountDecimationControl *control) +{ + if (control->offset_n) { + control->offset_n_counter++; + if (control->offset_n_counter < control->offset_n) + return TRUE; + else + control->offset_n = 0; /* disable offset check */ + } + if (control->skip_every) { + control->every_counter++; + if (control->every_counter == control->skip_every) { + control->n_count_filtered++; + control->every_counter = 0; + return TRUE; + } + } + else if (control->preserve_every) { + control->every_counter++; + if (control->every_counter == control->preserve_every) { + control->every_counter = 0; + } + else { + control->n_count_filtered++; + return TRUE; + } + } + return FALSE; +} + + +int count_decimation_is_end(struct CountDecimationControl *control) +{ + if (control->limit_n) { + control->limit_n_counter++; + /* this matches the last successfully imported point */ + if (control->limit_n_counter == control->limit_n) + return TRUE; + } + return FALSE; +} Property changes on: grass/trunk/vector/v.decimate/count_decimation.c ___________________________________________________________________ Added: svn:mime-type + text/x-csrc Added: svn:eol-style + native Added: grass/trunk/vector/v.decimate/count_decimation.h =================================================================== --- grass/trunk/vector/v.decimate/count_decimation.h (rev 0) +++ grass/trunk/vector/v.decimate/count_decimation.h 2015-10-01 01:55:00 UTC (rev 66387) @@ -0,0 +1,43 @@ +/**************************************************************************** + * + * MODULE: v.decimate + * AUTHOR(S): Vaclav Petras + * PURPOSE: Reduce the number of points in a vector map + * COPYRIGHT: (C) 2015 by the GRASS Development Team + * + * This program is free software under the GNU General Public + * License (>=v2). Read the COPYING file that comes with GRASS + * for details. + * + *****************************************************************************/ + + +#ifndef GRASS_COUNT_DECIMATION_H +#define GRASS_COUNT_DECIMATION_H + +/* TODO: change int to ul/ull */ +/* TODO: revise names (now partially on some vars in v.in.lidar code) */ + +struct CountDecimationControl { + int offset_n; + int offset_n_counter; + int skip_every; + int preserve_every; + int every_counter; + int n_count_filtered; + int limit_n; + int limit_n_counter; +}; + +void count_decimation_init(struct CountDecimationControl *control, + int *skip, int *preserve, + int *offset, int *limit); +int count_decimation_is_valid(struct CountDecimationControl *control); +int count_decimation_is_noop(struct CountDecimationControl *control); +void count_decimation_init_from_str(struct CountDecimationControl *control, + const char *skip, const char *preserve, + const char *offset, const char *limit); +int count_decimation_is_out(struct CountDecimationControl *control); +int count_decimation_is_end(struct CountDecimationControl *control); + +#endif /* GRASS_COUNT_DECIMATION_H */ Property changes on: grass/trunk/vector/v.decimate/count_decimation.h ___________________________________________________________________ Added: svn:mime-type + text/x-chdr Added: svn:eol-style + native Added: grass/trunk/vector/v.decimate/grid_decimation.c =================================================================== --- grass/trunk/vector/v.decimate/grid_decimation.c (rev 0) +++ grass/trunk/vector/v.decimate/grid_decimation.c 2015-10-01 01:55:00 UTC (rev 66387) @@ -0,0 +1,179 @@ +/**************************************************************************** + * + * MODULE: v.decimate + * AUTHOR(S): Vaclav Petras + * PURPOSE: Reduce the number of points in a vector map + * COPYRIGHT: (C) 2015 by the GRASS Development Team + * + * This program is free software under the GNU General Public + * License (>=v2). Read the COPYING file that comes with GRASS + * for details. + * + *****************************************************************************/ + + +#include "grid_decimation.h" + +#include + + +/* max size: rows * cols < max of size_t (using 1D array) */ +void grid_decimation_create(struct GridDecimation *grid_decimation, + size_t rows, size_t cols) +{ + grid_decimation->grid_points = + G_calloc(rows * cols, sizeof(struct DecimationPoint *)); + grid_decimation->grid_sizes = G_calloc(rows * cols, sizeof(size_t)); + grid_decimation->rows = rows; + grid_decimation->cols = cols; + grid_decimation->if_add_point = NULL; + grid_decimation->on_add_point = NULL; + grid_decimation->if_context = NULL; + grid_decimation->on_context = NULL; +} + + +void grid_decimation_destroy(struct GridDecimation *grid_decimation) +{ + /* TODO: we could also offer mode without dealloc (faster) */ + int row, col; + size_t point, npoints; + for (row = 0; row < grid_decimation->rows; row++) { + for (col = 0; col < grid_decimation->cols; col++) { + /* TODO: make index function */ + size_t index = row * grid_decimation->cols + col; + if ((npoints = grid_decimation->grid_sizes[index])) { + /* delete points in list */ + for (point = 0; point < npoints; point++) + G_free(grid_decimation->grid_points[index][point]); + /* delete list */ + G_free(grid_decimation->grid_points[index]); + } + } + } + G_free(grid_decimation->grid_points); + G_free(grid_decimation->grid_sizes); +} + + +/* TODO: use Cell_head as storage? */ +void grid_decimation_create_from_region(struct GridDecimation + *grid_decimation, + struct Cell_head *region) +{ + grid_decimation_create(grid_decimation, region->rows, region->cols); + grid_decimation_set_region(grid_decimation, region->west, region->east, + region->south, region->north, region->ew_res, + region->ns_res); +} + + +/* TODO: change order of ns_res and ew_res to match xy */ +void grid_decimation_set_region(struct GridDecimation *grid_decimation, + double minx, double maxx, double miny, + double maxy, double ew_res, double ns_res) +{ + grid_decimation->minx = minx; + grid_decimation->maxx = maxx; + grid_decimation->miny = miny; + grid_decimation->maxy = maxy; + grid_decimation->ns_res = ns_res; + grid_decimation->ew_res = ew_res; +} + + +void grid_decimation_create_list_with_point(struct GridDecimation + *grid_decimation, size_t index, + struct DecimationPoint *point, + size_t npoints) +{ + struct DecimationPoint **point_list = + G_malloc(1 * sizeof(struct DecimationPoint *)); + point_list[0] = point; + grid_decimation->grid_points[index] = point_list; + grid_decimation->grid_sizes[index] = 1; +} + + +void grid_decimation_add_point_to_list(struct GridDecimation *grid_decimation, + size_t index, + struct DecimationPoint *point, + size_t npoints) +{ + /* TODO: this might be too much reallocation */ + /* TODO: line_ptns struct could be reused, it is not meant for this but it would work */ + struct DecimationPoint **point_list = + G_realloc(grid_decimation->grid_points[index], + (npoints + 1) * sizeof(struct DecimationPoint *)); + + point_list[npoints] = point; + grid_decimation->grid_points[index] = point_list; + grid_decimation->grid_sizes[index] = npoints + 1; +} + + +static size_t grid_decimation_xy_to_index(struct GridDecimation + *grid_decimation, double x, + double y) +{ + /* TODO: test x, y */ + int row = (y - grid_decimation->miny) / grid_decimation->ns_res; + int col = (x - grid_decimation->minx) / grid_decimation->ew_res; + + if (row < 0 || row > grid_decimation->rows || col < 0 || + col > grid_decimation->cols) { + G_fatal_error + ("Row (%d) or column (%d) outside of range (0 - %d, 0 - %d)", row, + col, grid_decimation->rows, grid_decimation->cols); + } + size_t index = row * grid_decimation->cols + col; + + /* TODO: are the tests really needed, especially the second one? */ + if (row * grid_decimation->cols + col > + grid_decimation->rows * grid_decimation->cols) { + G_fatal_error("Index (%d) out of range (max: %d)", + row * grid_decimation->cols + col, + grid_decimation->rows * grid_decimation->cols); + } + return index; +} + + +void grid_decimation_try_add_point(struct GridDecimation *grid_decimation, + int cat, double x, double y, double z, void *point_data) +{ + size_t index = grid_decimation_xy_to_index(grid_decimation, x, y); + int npoints = grid_decimation->grid_sizes[index]; + + /* TODO: when max is 1, we don't have to store the point at all */ + if (grid_decimation->max_points && grid_decimation->max_points == npoints) + return; + + struct DecimationPoint *point = G_malloc(sizeof(struct DecimationPoint)); + + point->cat = cat; + point->x = x; + point->y = y; + point->z = z; + + if (!npoints) { + grid_decimation_create_list_with_point(grid_decimation, index, point, + npoints); + if (grid_decimation->on_add_point) + grid_decimation->on_add_point(point, point_data, grid_decimation->on_context); + } + else { + if (grid_decimation->if_add_point + (point, point_data, grid_decimation->grid_points[index], npoints, + grid_decimation->if_context)) { + grid_decimation_add_point_to_list(grid_decimation, index, point, + npoints); + if (grid_decimation->on_add_point) + grid_decimation->on_add_point(point, point_data, + grid_decimation->on_context); + } + else { + G_free(point); + } + } +} Property changes on: grass/trunk/vector/v.decimate/grid_decimation.c ___________________________________________________________________ Added: svn:mime-type + text/x-csrc Added: svn:eol-style + native Added: grass/trunk/vector/v.decimate/grid_decimation.h =================================================================== --- grass/trunk/vector/v.decimate/grid_decimation.h (rev 0) +++ grass/trunk/vector/v.decimate/grid_decimation.h 2015-10-01 01:55:00 UTC (rev 66387) @@ -0,0 +1,79 @@ +/**************************************************************************** + * + * MODULE: v.decimate + * AUTHOR(S): Vaclav Petras + * PURPOSE: Reduce the number of points in a vector map + * COPYRIGHT: (C) 2015 by the GRASS Development Team + * + * This program is free software under the GNU General Public + * License (>=v2). Read the COPYING file that comes with GRASS + * for details. + * + *****************************************************************************/ + + +#ifndef GRASS_GRID_DECIMATION_H +#define GRASS_GRID_DECIMATION_H + +#include + +struct DecimationPoint +{ + int cat; + double x; + double y; + double z; +}; + + +struct GridDecimation +{ + struct DecimationPoint ***grid_points; + size_t *grid_sizes; + int rows; + int cols; + int max_points; + double minx; + double maxx; + double miny; + double maxy; + double ns_res; + double ew_res; + int (*if_add_point) (struct DecimationPoint * point, void *point_data, + struct DecimationPoint ** point_list, size_t npoints, + void *context); + void (*on_add_point) (struct DecimationPoint * point, void *point_data, void *context); + void *if_context; + void *on_context; +}; + + +/* max size: rows * cols < max of size_t (using 1D array) */ +void grid_decimation_create(struct GridDecimation *grid_decimation, + size_t rows, size_t cols); + +void grid_decimation_create_from_region(struct GridDecimation + *grid_decimation, + struct Cell_head *region); + +/* TODO: possible use (also?) Cell_head as input or storage */ +void grid_decimation_set_region(struct GridDecimation *grid_decimation, + double minx, double maxx, double miny, + double maxy, double ns_res, double ew_res); + +void grid_decimation_create_list_with_point(struct GridDecimation + *grid_decimation, size_t index, + struct DecimationPoint *point, + size_t npoints); + +void grid_decimation_add_point_to_list(struct GridDecimation *grid_decimation, + size_t index, + struct DecimationPoint *point, + size_t npoints); + +void grid_decimation_try_add_point(struct GridDecimation *grid_decimation, + int cat, double x, double y, double z, void *point_data); + +void grid_decimation_destroy(struct GridDecimation *grid_decimation); + +#endif /* GRASS_GRID_DECIMATION_H */ Property changes on: grass/trunk/vector/v.decimate/grid_decimation.h ___________________________________________________________________ Added: svn:mime-type + text/x-chdr Added: svn:eol-style + native Added: grass/trunk/vector/v.decimate/main.c =================================================================== --- grass/trunk/vector/v.decimate/main.c (rev 0) +++ grass/trunk/vector/v.decimate/main.c 2015-10-01 01:55:00 UTC (rev 66387) @@ -0,0 +1,465 @@ +/* + **************************************************************************** + * + * MODULE: v.decimate + * AUTHOR(S): Vaclav Petras + * PURPOSE: Reduce the number of points in a vector map + * COPYRIGHT: (C) 2015 by the GRASS Development Team + * + * This program is free software under the GNU General + * Public License (>=v2). Read the file COPYING that + * comes with GRASS for details. + * + *****************************************************************************/ + + +/* using the most-specific-first order of includes */ +#include "count_decimation.h" +#include "grid_decimation.h" + +#include +#include +#include +#include + +#include + + +struct DecimationContext +{ + int use_z; /*!< TRUE or FALSE */ + double zdiff; + int unique_cats; /*!< TRUE or FALSE */ +}; + + +static int if_add_point(struct DecimationPoint *point, void *point_data, + struct DecimationPoint **point_list, size_t npoints, + void *context) +{ + /* according to cat (which could be cluster, return or class) */ + struct DecimationContext *dc = context; + double zdiff = dc->zdiff; + int j; + + /* TODO: use something like Vect_cat_in_cat_list? */ + for (j = 0; j < npoints; j++) { + if (dc->use_z && fabs(point_list[j]->z - point->z) < zdiff) + return FALSE; + if (dc->unique_cats && point_list[j]->cat == point->cat) + return FALSE; + } + return TRUE; +} + + +struct WriteContext +{ + struct Map_info *voutput; + struct line_pnts *line; + struct line_cats *cats; + int write_cats; +}; + + +static void write_point(struct WriteContext *context, int cat, double x, + double y, double z, struct line_cats *cats) +{ + if (Vect_append_point(context->line, x, y, z) != 1) + G_fatal_error + ("Unable to create a point in vector map (probably out of memory)"); + struct line_cats *cats_to_write = context->cats; + /* only when writing cats use the ones from parameter, otherwise + * use the default (which is assumed to be empty) */ + if (context->write_cats && cats) + cats_to_write = cats; + Vect_write_line(context->voutput, GV_POINT, context->line, cats_to_write); + Vect_reset_line(context->line); +} + + +static void on_add_point(struct DecimationPoint *point, void *point_data, void *context) +{ + write_point((struct WriteContext *)context, point->cat, point->x, point->y, + point->z, (struct line_cats *)point_data); +} + +/* TODO: these have overlap with vector lib, really needed? */ +static int point_in_region_2d(struct Cell_head *region, double x, double y) +{ + if (x > region->east || x < region->west || y < region->south || + y > region->north) + return FALSE; + return TRUE; +} + + +static int point_in_region_3d(struct Cell_head *region, double x, double y, + double z) +{ + if (x > region->east || x < region->west || y < region->south || + y > region->north || z > region->top || z < region->bottom) + return FALSE; + return TRUE; +} + +/* TODO: max tries per grid cell (useful?) */ + + +int main(int argc, char **argv) +{ + struct GModule *module; + struct Option *map_opt, *voutput_opt; + struct Option *field_opt, *cats_opt; + struct Option *skip_opt, *preserve_opt, *offset_opt, *limit_opt; + struct Option *zdiff_opt, *limit_per_cell_opt, *zrange_opt; + struct Flag *grid_decimation_flg, *first_point_flg, *cat_in_grid_flg; + struct Flag *use_z_flg, *nocats_flag, *notopo_flag; + struct Map_info vinput, voutput; + + G_gisinit(argv[0]); + + module = G_define_module(); + G_add_keyword(_("vector")); + G_add_keyword(_("LIDAR")); + G_add_keyword(_("generalization")); + G_add_keyword(_("decimation")); + G_add_keyword(_("extract")); + G_add_keyword(_("select")); + G_add_keyword(_("points")); + module->label = _("Decimates a point cloud"); + module->description = _("Copies points from one vector to another" + " while applying different decimations"); + + map_opt = G_define_standard_option(G_OPT_V_INPUT); + + field_opt = G_define_standard_option(G_OPT_V_FIELD_ALL); + field_opt->required = NO; + + voutput_opt = G_define_standard_option(G_OPT_V_OUTPUT); + + zrange_opt = G_define_option(); + zrange_opt->key = "zrange"; + zrange_opt->type = TYPE_DOUBLE; + zrange_opt->required = NO; + zrange_opt->key_desc = "min,max"; + zrange_opt->description = _("Filter range for z data (min,max)"); + zrange_opt->guisection = _("Selection"); + + cats_opt = G_define_standard_option(G_OPT_V_CATS); + cats_opt->guisection = _("Selection"); + + /* TODO: -r region only (now enforced for grid), spatial */ + + skip_opt = G_define_option(); + skip_opt->key = "skip"; + skip_opt->type = TYPE_INTEGER; + skip_opt->multiple = NO; + skip_opt->required = NO; + skip_opt->label = _("Throw away every n-th point"); + skip_opt->description = + _("For example, 5 will import 80 percent of points. " + "If not specified, all points are copied"); + skip_opt->guisection = _("Count"); + + preserve_opt = G_define_option(); + preserve_opt->key = "preserve"; + preserve_opt->type = TYPE_INTEGER; + preserve_opt->multiple = NO; + preserve_opt->required = NO; + preserve_opt->label = _("Preserve only every n-th point"); + preserve_opt->description = + _("For example, 4 will import 25 percent of points. " + "If not specified, all points are copied"); + preserve_opt->guisection = _("Count"); + + offset_opt = G_define_option(); + offset_opt->key = "offset"; + offset_opt->type = TYPE_INTEGER; + offset_opt->multiple = NO; + offset_opt->required = NO; + offset_opt->label = _("Skip first n points"); + offset_opt->description = + _("Skips the given number of points at the beginning."); + offset_opt->guisection = _("Count"); + + limit_opt = G_define_option(); + limit_opt->key = "limit"; + limit_opt->type = TYPE_INTEGER; + limit_opt->multiple = NO; + limit_opt->required = NO; + limit_opt->label = _("Copy only n points"); + limit_opt->description = _("Copies only the given number of points"); + limit_opt->guisection = _("Count"); + + zdiff_opt = G_define_option(); + zdiff_opt->key = "zdiff"; + zdiff_opt->type = TYPE_DOUBLE; + zdiff_opt->required = NO; + zdiff_opt->label = _("Minimal difference of z values"); + zdiff_opt->description = + _("Minimal difference between z values in grid-based decimation"); + zdiff_opt->guisection = _("Grid"); + + limit_per_cell_opt = G_define_option(); + limit_per_cell_opt->key = "cell_limit"; + limit_per_cell_opt->type = TYPE_INTEGER; + limit_per_cell_opt->multiple = NO; + limit_per_cell_opt->required = NO; + limit_per_cell_opt->label = _("Preserve only n points per grid cell"); + limit_per_cell_opt->description = + _("Preserves only the given number of points per grid cell in grid-based decimation"); + limit_per_cell_opt->guisection = _("Grid"); + + grid_decimation_flg = G_define_flag(); + grid_decimation_flg->key = 'g'; + grid_decimation_flg->description = _("Apply grid-based decimation"); + grid_decimation_flg->guisection = _("Grid"); + + first_point_flg = G_define_flag(); + first_point_flg->key = 'f'; + first_point_flg->description = + _("Use only first point in grid cell during grid-based decimation"); + first_point_flg->guisection = _("Grid"); + + cat_in_grid_flg = G_define_flag(); + cat_in_grid_flg->key = 'c'; + cat_in_grid_flg->description = _("Only one point per cat in grid cell"); + cat_in_grid_flg->guisection = _("Grid"); + + use_z_flg = G_define_flag(); + use_z_flg->key = 'z'; + use_z_flg->description = _("Use z in grid decimation"); + use_z_flg->guisection = _("Grid"); + + nocats_flag = G_define_flag(); + nocats_flag->key = 'x'; + nocats_flag->label = + _("Store only the coordinates, throw away categories"); + nocats_flag->description = + _("Do not story any categories even if they are present in input data"); + nocats_flag->guisection = _("Speed"); + + notopo_flag = G_define_standard_flag(G_FLG_V_TOPO); + notopo_flag->guisection = _("Speed"); + + /* here we have different decimations but also selections/filters */ + G_option_required(skip_opt, preserve_opt, offset_opt, limit_opt, + grid_decimation_flg, zrange_opt, cats_opt, NULL); + /* this doesn't play well with GUI dialog unless we add defaults to options + * the default values would solve it but looks strange in the manual + * this we use explicit check in the code */ + /* G_option_exclusive(skip_opt, preserve_opt, NULL); */ + G_option_requires(grid_decimation_flg, first_point_flg, + limit_per_cell_opt, use_z_flg, zdiff_opt, + cat_in_grid_flg, NULL); + G_option_requires(first_point_flg, grid_decimation_flg, NULL); + G_option_requires(limit_per_cell_opt, grid_decimation_flg, NULL); + G_option_requires(use_z_flg, grid_decimation_flg, NULL); + G_option_requires(zdiff_opt, grid_decimation_flg, NULL); + G_option_requires(cat_in_grid_flg, grid_decimation_flg, NULL); + G_option_exclusive(zdiff_opt, first_point_flg, limit_per_cell_opt, NULL); + + if (G_parser(argc, argv)) + exit(EXIT_FAILURE); + + Vect_check_input_output_name(map_opt->answer, voutput_opt->answer, + G_FATAL_EXIT); + + if (Vect_open_old2(&vinput, map_opt->answer, "", field_opt->answer) < 0) + G_fatal_error(_("Unable to open vector map <%s>"), map_opt->answer); + int layer = Vect_get_field_number(&vinput, field_opt->answer); + + if (layer < 1 && (cats_opt->answer || cat_in_grid_flg->answer)) + G_fatal_error(_("Input layer must be set to a particular layer" + ", not <%s>, when using <%s> option or <-%c> flag"), + field_opt->answer, cats_opt->key, cat_in_grid_flg->key); + + struct cat_list *allowed_cats = NULL; + + if (layer > 0) + allowed_cats = Vect_cats_set_constraint(&vinput, layer, NULL, + cats_opt->answer); + + struct line_pnts *line = Vect_new_line_struct(); + struct line_cats *cats = Vect_new_cats_struct(); + + double zrange_min, zrange_max; + int use_zrange = FALSE; + + if (zrange_opt->answer != NULL) { + if (zrange_opt->answers[0] == NULL || zrange_opt->answers[1] == NULL) + G_fatal_error(_("Invalid zrange <%s>"), zrange_opt->answer); + sscanf(zrange_opt->answers[0], "%lf", &zrange_min); + sscanf(zrange_opt->answers[1], "%lf", &zrange_max); + /* for convenience, switch order to make valid input */ + if (zrange_min > zrange_max) { + double tmp = zrange_max; + + zrange_max = zrange_min; + zrange_min = tmp; + } + use_zrange = TRUE; + } + + int use_z = FALSE; + double zdiff; + + if (use_z_flg->answer) { + use_z = TRUE; + zdiff = atof(zdiff_opt->answer); + } + + /* z input checks */ + if (!Vect_is_3d(&vinput)) { + if (use_z) + G_fatal_error(_("Cannot use z for decimation, input is not 3D")); + if (use_zrange) + G_fatal_error(_("Cannot select by z range, input is not 3D")); + } + + int do_grid_decimation = FALSE; + + if (grid_decimation_flg->answer) + do_grid_decimation = TRUE; + int limit_per_cell = 0; + + if (limit_per_cell_opt->answer) + limit_per_cell = atof(limit_per_cell_opt->answer); + if (first_point_flg->answer) + limit_per_cell = 1; + + /* when user enters 1 or zero e.g. for skip, we accept it and use it + * but the is no advantage, however, we count it as an error when + * no other options are selected + */ + struct CountDecimationControl count_decimation_control; + + count_decimation_init_from_str(&count_decimation_control, + skip_opt->answer, preserve_opt->answer, + offset_opt->answer, limit_opt->answer); + if (!count_decimation_is_valid(&count_decimation_control)) + G_fatal_error(_("Settings for count-based decimation are not valid")); + /* TODO: implement count_decimation_is_invalid_reason() */ + /* the following must be in sync with required options */ + if (count_decimation_is_noop(&count_decimation_control) && + !grid_decimation_flg->answer && !zrange_opt->answer && + !cats_opt->answer) + G_fatal_error(_("Settings for count-based decimation would cause it" + " to do nothing and no other options has been set.")); + + struct Cell_head comp_region; + Rast_get_window(&comp_region); + if (use_zrange) { + comp_region.bottom = zrange_min; + comp_region.top = zrange_max; + } + struct GridDecimation grid_decimation; + struct DecimationContext decimation_context; + struct WriteContext write_context; + + write_context.line = Vect_new_line_struct(); + write_context.cats = Vect_new_cats_struct(); + if (!nocats_flag->answer) + write_context.write_cats = TRUE; + else + write_context.write_cats = FALSE; + write_context.voutput = &voutput; + if (do_grid_decimation) { + grid_decimation_create_from_region(&grid_decimation, &comp_region); + grid_decimation.max_points = limit_per_cell; + + if (cat_in_grid_flg->answer) + decimation_context.unique_cats = TRUE; + else + decimation_context.unique_cats = FALSE; + decimation_context.use_z = FALSE; + if (use_z) { + decimation_context.use_z = TRUE; + decimation_context.zdiff = zdiff; + } + grid_decimation.if_add_point = if_add_point; + grid_decimation.if_context = &decimation_context; + + grid_decimation.on_add_point = on_add_point; + grid_decimation.on_context = &write_context; + } + + if (Vect_open_new(&voutput, voutput_opt->answer, Vect_is_3d(&vinput)) < 0) + G_fatal_error(_("Unable to create vector map <%s>"), + voutput_opt->answer); + + /* some constraints can be set on the map */ + Vect_set_constraint_type(&vinput, GV_POINT); + /* noop for layer=-1 and non-native format, skips lines without cat */ + Vect_set_constraint_field(&vinput, layer); + /* TODO: replace region checks by Vect_set_constraint_region? */ + + int ltype; + int cat; + + while (TRUE) { + ltype = Vect_read_next_line(&vinput, line, cats); + if (ltype == -1) + G_fatal_error(_("Unable to read vector map")); + if (ltype == -2) + break; /* end of the map */ + + double x, y, z; + Vect_line_get_point(line, 0, &x, &y, &z); + + /* selections/filters */ + /* TODO: use region only when actually needed */ + if (!use_zrange && !point_in_region_2d(&comp_region, x, y)) + continue; + /* TODO: allow zrange to be used without region */ + if (use_zrange && !point_in_region_3d(&comp_region, x, y, z)) + continue; + if (allowed_cats && + !Vect_cats_in_constraint(cats, layer, allowed_cats)) + continue; + + /* decimation */ + if (count_decimation_is_out(&count_decimation_control)) + continue; + + /* TODO: test: skip points without category, unless layer=-1 */ + /* Use cases: + * - all points have category (correct) + * - no categories for any point (correct, layer=-1 required) + * - some points miss category (not handled) + * Here we assume that only one cat has meaning for grid decimation. + * If no layer available, cat contains junk and shouldn't be used. + */ + if (layer > 0) + Vect_cat_get(cats, layer, &cat); + + /* using callback when using grid, direct call otherwise */ + if (do_grid_decimation) + grid_decimation_try_add_point(&grid_decimation, cat, x, y, z, + cats); + else + write_point(&write_context, cat, x, y, z, cats); + + if (count_decimation_is_end(&count_decimation_control)) + break; + } + + /* partially unnecessary as deallocated by the system */ + Vect_destroy_line_struct(line); + Vect_destroy_cats_struct(cats); + Vect_destroy_line_struct(write_context.line); + Vect_destroy_cats_struct(write_context.cats); + + Vect_hist_command(&voutput); + + Vect_close(&vinput); + if (!notopo_flag->answer) + Vect_build(&voutput); + Vect_close(&voutput); + + if (do_grid_decimation) + grid_decimation_destroy(&grid_decimation); + + return EXIT_SUCCESS; +} Property changes on: grass/trunk/vector/v.decimate/main.c ___________________________________________________________________ Added: svn:mime-type + text/x-csrc Added: svn:eol-style + native Added: grass/trunk/vector/v.decimate/v.decimate.html =================================================================== --- grass/trunk/vector/v.decimate/v.decimate.html (rev 0) +++ grass/trunk/vector/v.decimate/v.decimate.html 2015-10-01 01:55:00 UTC (rev 66387) @@ -0,0 +1,138 @@ +

        DESCRIPTION

        + +v.decimate reduces number of points in the input vector map +and copies them over to the output vector map. Different point decimation +techniques can be applied to reduce the number of points. + +

        +Two main decimation techniques are: +

          +
        • count-based decimation (skip, preserve, offset + and limit options) +
        • grid-based decimation (-g flag) +
        + +

        +The grid-based decimation will remove points based on: +

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

        +The grid-based decimation is currently using a 2D grid, so the points +are placed and compared within this 2D grid. The comparison can happen +using z coordinates or categories. +Note that although the grid is only 2D, the module works with 3D points. + +

        +The grid-based decimation extent and resolution depend on the current +computational region as set by g.region. +As a consequence, the output is limited only to computational region +in this case. + +

        +TODO: Currently, any output is limited by the region. + +

        +The count-based decimation result highly depends on how the data are +ordered in the input. This applies especially to offset and +limit options where the resulting shape and densities can be +surprising. The options skip and preserve are influenced +by order of points in a similar way but they usually keep relative +density of points (which may or may not be desired). +On the other hand, the grid-based decimation will generally result in +more even density of output points (see Figure 1). + +

        +Besides decimation, point count can be reduced by applying different +selections or filters, these are: +

          +
        • selection by category (cats option) +
        • selection by z values (zrange option) +
        + + +

        NOTES

        + +The grid-based decimation requires all points which will be saved in output +to fit into the computer's memory (RAM). +It is advantageous to have the region only in the area +with the points, otherwise unnecessary memory is allocated. +Higher (finer) resolutions and higher amount of preserved points +per cell require more memory. +The count-based decimation has no limitation regarding the available memory. + +

        +Significant speed up can be gained using -b flag which disables +building of topology for the output vector map. This may limit the use +of the vector map by some modules, but for example, this module works +without topology as well. + + +

        EXAMPLES

        + +Keep only every forth point, throw away the rest: + +
        +v.decimate input=points_all output=points_decimated_every_4 preserve=4
        +
        + +

        +Keep only points within a grid cell (given by the current computational +region) which has unique categories (e.g. LIDAR classes): + +

        +v.decimate input=points_all output=points_decimated_unique_cats layer=1 -g -c
        +
        + +
        + + + +

        + Figure 1: Comparison of original points, decimation result + with every forth point preserved, and grid-based decimation + result with points with unique categories in each grid cell +

        +
        + +

        +Keep only points with category 2 and keep only approximately 80% of the points: + +

        +v.decimate input=points_all output=points_decimated_ skip=5 cats=2 layer=1
        +
        + + + + +

        SEE ALSO

        + + +v.extract, +v.outlier, +v.select, +v.category, +v.build, +v.in.lidar, +g.region + + + +

        AUTHORS

        + +Vaclav Petras, NCSU OSGeoREL + +

        Last changed: $Date$ Property changes on: grass/trunk/vector/v.decimate/v.decimate.html ___________________________________________________________________ Added: svn:mime-type + text/html Added: svn:keywords + Author Date Id Added: svn:eol-style + native Added: grass/trunk/vector/v.decimate/v_decimate_count.png =================================================================== (Binary files differ) Property changes on: grass/trunk/vector/v.decimate/v_decimate_count.png ___________________________________________________________________ Added: svn:mime-type + image/png Added: grass/trunk/vector/v.decimate/v_decimate_grid_cat.png =================================================================== (Binary files differ) Property changes on: grass/trunk/vector/v.decimate/v_decimate_grid_cat.png ___________________________________________________________________ Added: svn:mime-type + image/png Added: grass/trunk/vector/v.decimate/v_decimate_original.png =================================================================== (Binary files differ) Property changes on: grass/trunk/vector/v.decimate/v_decimate_original.png ___________________________________________________________________ Added: svn:mime-type + image/png