[GRASS-SVN] r64018 - in grass/branches/releasebranch_7_0/lib: cairodriver cdhc gpde proj python/docs/src python/pygrass/gis python/pygrass/messages python/pygrass/modules/interface python/pygrass/vector python/temporal raster symbol vector

svn_grass at osgeo.org svn_grass at osgeo.org
Thu Jan 8 14:45:30 PST 2015


Author: neteler
Date: 2015-01-08 14:45:30 -0800 (Thu, 08 Jan 2015)
New Revision: 64018

Removed:
   grass/branches/releasebranch_7_0/lib/python/temporal/pythontemporallib.dox
Modified:
   grass/branches/releasebranch_7_0/lib/cairodriver/raster.c
   grass/branches/releasebranch_7_0/lib/cdhc/Makefile
   grass/branches/releasebranch_7_0/lib/gpde/n_gwflow.c
   grass/branches/releasebranch_7_0/lib/proj/README.txt
   grass/branches/releasebranch_7_0/lib/python/docs/src/index.rst
   grass/branches/releasebranch_7_0/lib/python/pygrass/gis/__init__.py
   grass/branches/releasebranch_7_0/lib/python/pygrass/messages/__init__.py
   grass/branches/releasebranch_7_0/lib/python/pygrass/modules/interface/module.py
   grass/branches/releasebranch_7_0/lib/python/pygrass/vector/geometry.py
   grass/branches/releasebranch_7_0/lib/python/temporal/open_stds.py
   grass/branches/releasebranch_7_0/lib/python/temporal/register.py
   grass/branches/releasebranch_7_0/lib/raster/close.c
   grass/branches/releasebranch_7_0/lib/symbol/read.c
   grass/branches/releasebranch_7_0/lib/vector/vectorlib.dox
Log:
minor backports from trunk

Modified: grass/branches/releasebranch_7_0/lib/cairodriver/raster.c
===================================================================
--- grass/branches/releasebranch_7_0/lib/cairodriver/raster.c	2015-01-08 22:28:02 UTC (rev 64017)
+++ grass/branches/releasebranch_7_0/lib/cairodriver/raster.c	2015-01-08 22:45:30 UTC (rev 64018)
@@ -96,7 +96,7 @@
     dst_w = dst_r - dst_l;
     dst_h = dst_b - dst_t;
 
-    G_debug(1, "Cairo_begin_raster(): masked=%d, src_lrtb=%d %d %d %d -> w/h=%d/%d, "
+    G_debug(1, "Cairo_begin_raster(): masked=%d, src_lrtb=%d %d %d %d -> w/h=%d %d, "
             "dst_lrtb=%d %d %d %d -> w/h=%d %d",
             masked, src_l, src_r, src_t, src_b, src_w, src_h,
             dst_l, dst_r, dst_t, dst_b, dst_w, dst_h);
@@ -145,7 +145,7 @@
     if (y1 <= y0)
         return next_row(row, d_y1);
 
-    G_debug(3, "Cairo_raster(): row=%d", row);
+    G_debug(3, "Cairo_raster(): n=%d row=%d", n, row);
 
     for (x = x0; x < x1; x++) {
 	int xx = dst_l + x;

Modified: grass/branches/releasebranch_7_0/lib/cdhc/Makefile
===================================================================
--- grass/branches/releasebranch_7_0/lib/cdhc/Makefile	2015-01-08 22:28:02 UTC (rev 64017)
+++ grass/branches/releasebranch_7_0/lib/cdhc/Makefile	2015-01-08 22:45:30 UTC (rev 64018)
@@ -16,7 +16,7 @@
 endif
 
 test: $(OBJDIR)/test$(EXE)
-	cd $(OBJDIR) && $(call run_grass,./test < ../test_numbers.csv)
+	$(call run_grass,$(OBJDIR)/test$(EXE) < test_numbers.csv)
 
 #  Test functions
 $(OBJDIR)/test$(EXE): $(OBJDIR)/test.o $(GISDEP) $(CDHCDEP)

Modified: grass/branches/releasebranch_7_0/lib/gpde/n_gwflow.c
===================================================================
--- grass/branches/releasebranch_7_0/lib/gpde/n_gwflow.c	2015-01-08 22:28:02 UTC (rev 64017)
+++ grass/branches/releasebranch_7_0/lib/gpde/n_gwflow.c	2015-01-08 22:45:30 UTC (rev 64018)
@@ -435,7 +435,7 @@
     if(fabs(sum) < 0.0000000001)
         G_message(_("The total sum of the water budget: %g\n"), sum);
     else
-        G_warning(_("The total sum of the water budget is significant larger then 0: %g\n"), sum);
+        G_warning(_("The total sum of the water budget is significantly larger then 0: %g\n"), sum);
 
     return;
 }
@@ -714,7 +714,7 @@
     if(fabs(sum) < 0.0000000001)
         G_message(_("The total sum of the water budget: %g\n"), sum);
     else
-        G_warning(_("The total sum of the water budget is significant larger then 0: %g\n"), sum);
+        G_warning(_("The total sum of the water budget is significantly larger then 0: %g\n"), sum);
 
     return;
 }

Modified: grass/branches/releasebranch_7_0/lib/proj/README.txt
===================================================================
--- grass/branches/releasebranch_7_0/lib/proj/README.txt	2015-01-08 22:28:02 UTC (rev 64017)
+++ grass/branches/releasebranch_7_0/lib/proj/README.txt	2015-01-08 22:45:30 UTC (rev 64018)
@@ -4,3 +4,5 @@
 according to this procedure:
 http://svn.osgeo.org/metacrs/geotiff/trunk/libgeotiff/csv/README
 
+alternative:
+ls `gdal-config --datadir`

Modified: grass/branches/releasebranch_7_0/lib/python/docs/src/index.rst
===================================================================
--- grass/branches/releasebranch_7_0/lib/python/docs/src/index.rst	2015-01-08 22:28:02 UTC (rev 64017)
+++ grass/branches/releasebranch_7_0/lib/python/docs/src/index.rst	2015-01-08 22:45:30 UTC (rev 64018)
@@ -12,17 +12,16 @@
 A set of packages is provided to the user in order to provide functionality
 at various levels:
 
-* **script package**: Python interface to launch GRASS GIS modules in scripts
-* **PyGRASS documentation**: PyGRASS is an object-oriented Python Application 
+* **script package** provides Python interface to launch GRASS GIS modules in scripts
+* **PyGRASS** is an object-oriented Python Application 
   Programming Interface (API) for GRASS GIS which uses the GRASS C API as 
   backend but additionally offers a convenient interface to the GRASS GIS 
   modules
-* **GRASS GIS Temporal Framework**: implements the temporal GIS functionality
+* **GRASS GIS Temporal Framework** implements the temporal GIS functionality
   of GRASS GIS and provides an API to implement spatio-temporal processing modules
-* **exceptions package**: FIXME
-* **imaging package**: library to create animated images and films
-* **Testing GRASS GIS source code and modules**: (gunittest package
-* **pydispatch package**: Multiple-producer-multiple-consumer signal-dispatching
+* **exceptions package** contains exceptions used by other packages
+* **imaging package** is a library to create animated images and films
+* **pydispatch package** is a library for signal-dispatching
 
 Contents:
 

Modified: grass/branches/releasebranch_7_0/lib/python/pygrass/gis/__init__.py
===================================================================
--- grass/branches/releasebranch_7_0/lib/python/pygrass/gis/__init__.py	2015-01-08 22:28:02 UTC (rev 64017)
+++ grass/branches/releasebranch_7_0/lib/python/pygrass/gis/__init__.py	2015-01-08 22:45:30 UTC (rev 64018)
@@ -19,9 +19,7 @@
          'raster_3d': libgis.G_ELEMENT_RASTER3D,
          'vector': libgis.G_ELEMENT_VECTOR,
          'ascii_vector': libgis.G_ELEMENT_ASCIIVECTOR,
-         'icon': libgis.G_ELEMENT_ICON,
-         'labels': libgis.G_ELEMENT_LABEL,
-         'sites': libgis.G_ELEMENT_SITE,
+         'label': libgis.G_ELEMENT_LABEL,
          'region': libgis.G_ELEMENT_REGION,
          'group': libgis.G_ELEMENT_GROUP}
 

Modified: grass/branches/releasebranch_7_0/lib/python/pygrass/messages/__init__.py
===================================================================
--- grass/branches/releasebranch_7_0/lib/python/pygrass/messages/__init__.py	2015-01-08 22:28:02 UTC (rev 64017)
+++ grass/branches/releasebranch_7_0/lib/python/pygrass/messages/__init__.py	2015-01-08 22:45:30 UTC (rev 64018)
@@ -76,7 +76,7 @@
             libgis.G_debug(1, "Stop messenger server")
             sys.exit()
 
-        message = data[1]            
+        message = data[1]
         # libgis limitation
         if isinstance(message,  type(" ")):
             if len(message) >= 2000:

Modified: grass/branches/releasebranch_7_0/lib/python/pygrass/modules/interface/module.py
===================================================================
--- grass/branches/releasebranch_7_0/lib/python/pygrass/modules/interface/module.py	2015-01-08 22:28:02 UTC (rev 64017)
+++ grass/branches/releasebranch_7_0/lib/python/pygrass/modules/interface/module.py	2015-01-08 22:45:30 UTC (rev 64018)
@@ -67,7 +67,7 @@
     number of parallel processes it will wait for all processes to finish,
     sets the stdout and stderr of the Module object and removes it
     from the queue when its finished.
-    
+
     To finish the queue before the maximum number of parallel
     processes was reached call wait() .
 
@@ -77,13 +77,13 @@
     Usage:
 
     Check with a queue size of 3 and 5 processes
-    
+
     >>> import copy
     >>> from grass.pygrass.modules import Module, ParallelModuleQueue
     >>> mapcalc_list = []
-    
+
     Setting run_ to False is important, otherwise a parallel processing is not possible
-    
+
     >>> mapcalc = Module("r.mapcalc", overwrite=True, run_=False)
     >>> queue = ParallelModuleQueue(nprocs=3)
     >>> for i in xrange(5):
@@ -105,7 +105,7 @@
     0
 
     Check with a queue size of 8 and 5 processes
-    
+
     >>> queue = ParallelModuleQueue(nprocs=8)
     >>> mapcalc_list = []
     >>> for i in xrange(5):
@@ -127,7 +127,7 @@
     0
 
     Check with a queue size of 8 and 4 processes
-    
+
     >>> queue = ParallelModuleQueue(nprocs=8)
     >>> mapcalc_list = []
     >>> new_mapcalc = copy.deepcopy(mapcalc)
@@ -257,11 +257,11 @@
 
         :returns: the number fo Module processes running/finished in the queue
         """
-        return self._proc_count 
+        return self._proc_count
 
     def get_max_num_procs(self):
         """Return the maximum number of parallel Module processes
-        
+
         :returns: the maximum number of parallel Module processes
         """
         return self._num_procs

Modified: grass/branches/releasebranch_7_0/lib/python/pygrass/vector/geometry.py
===================================================================
--- grass/branches/releasebranch_7_0/lib/python/pygrass/vector/geometry.py	2015-01-08 22:28:02 UTC (rev 64017)
+++ grass/branches/releasebranch_7_0/lib/python/pygrass/vector/geometry.py	2015-01-08 22:45:30 UTC (rev 64018)
@@ -780,7 +780,6 @@
             >>> line.distance(point)           #doctest: +NORMALIZE_WHITESPACE
             LineDist(point=Point(2.300000, 0.000000),
                      dist=0.5, spdist=0.2999999999999998, sldist=2.3)
-
         """
         # instantite outputs
         cx = ctypes.c_double(0)
@@ -925,6 +924,7 @@
 
     def segment(self, start, end):
         """Create line segment. using the ``Vect_line_segment`` C function.
+
         :param start: distance from the begining of the line where
                       the segment start
         :type start: float

Modified: grass/branches/releasebranch_7_0/lib/python/temporal/open_stds.py
===================================================================
--- grass/branches/releasebranch_7_0/lib/python/temporal/open_stds.py	2015-01-08 22:28:02 UTC (rev 64017)
+++ grass/branches/releasebranch_7_0/lib/python/temporal/open_stds.py	2015-01-08 22:45:30 UTC (rev 64018)
@@ -235,7 +235,7 @@
     mapset = get_current_mapset()
 
     dbif, connected = init_dbif(dbif)
-    new_map = check_new_map_dataset(name, layer, "raster", overwrite, dbif)
+    new_map = check_new_map_dataset(name, layer, type, overwrite, dbif)
 
     # Check if new map is in the temporal database
     if new_map.is_in_db(dbif):

Deleted: grass/branches/releasebranch_7_0/lib/python/temporal/pythontemporallib.dox
===================================================================
--- grass/branches/releasebranch_7_0/lib/python/temporal/pythontemporallib.dox	2015-01-08 22:28:02 UTC (rev 64017)
+++ grass/branches/releasebranch_7_0/lib/python/temporal/pythontemporallib.dox	2015-01-08 22:45:30 UTC (rev 64018)
@@ -1,255 +0,0 @@
-/*! \page pythontemporallib GRASS GIS Temporal Framework
-
-by GRASS Development Team (http://grass.osgeo.org)
-
-The GRASS GIS Temporal Framework
-
-\section PythonTGISIntro Introduction
-
-The GRASS GIS Temporal Framework implements the temporal GIS functionality of GRASS GIS
-and provides an API to implement spatio-temporal processing modules. The framework 
-introduces space time datasets that represent time series of raster, 3D raster or vector maps.
-This framework provides the following functionalities: 
-- Assign time stamp to maps and register maps in the temporal database
-- Modification of time stamps
-- Creation, renaming and deletion of space time datasets
-- Registration and un-registration of maps in space time datasets
-- Query of maps that are registered in space time datasets using SQL where statements
-- Analysis of the spatio-temporal topology of space time datasets
-- Sampling of space time datasets
-- Computation of temporal and spatial relationships between registered maps
-- Higher level functions that are shared between modules
-
-Most of the functions described above are member functions of the maps and space time dataset classes.
-Maps and space time datasets are represented as objects in the temporal framework.
-
-\section PythonTGISPackages Library
-
-Core functionality such as the initialization function, the database interface connection to sqlite3 
-and postgresql as well as the creation of the temporal database are defined here:
-
-- python::temporal::core
-
-In these modules are the temporal database interfaces for raster maps, 
-3D raster maps, vector maps and space time datasets defined. 
-In addition the temporal and spatial extent modules implement the topological 
-relationship computation that is needed for spatio-temporal topology computation:
-
-- python::temporal::base
-- python::temporal::spatial_extent
-- python::temporal::temporal_extent
-- python::temporal::metadata
-
-Several "abstract" classes are defined that implement the shared functionality 
-of time stamped maps and space time datasets, such as temporal and spatial
-handling and representation:
-
-- python::temporal::spatial_topology_dataset_connector
-- python::temporal::temporal_topology_dataset_connector
-- python::temporal::abstract_dataset
-- python::temporal::abstract_map_dataset
-- python::temporal::abstract_space_time_dataset
-
-The RPC C-library interface for exit safe and fast access to raster, vector and 3D raster informations:
-
-- python::temporal::c_libraries_interface
-
-All dataset classes that are used in the GRASS temporal modules are specified
-here:
-
-- python::temporal::space_time_datasets
-
-Functions to compute temporal granularity, handling of datetime objects
-and their conversion as well as spatio-temporal topology computation are defined in these modules:
-
-- python::temporal::datetime_math
-- python::temporal::spatio_temporal_relationships
-- python::temporal::temporal_granularity
-
-Functionality that is shared between different temporal GRASS modules, such as
-map listing, space time dataset creation, map registration and unregistration, 
-aggregation, extraction, map calculation, statistics as well as import and export of 
-space time datasets are defined here:
-
-- python::temporal::aggregation
-- python::temporal::extract
-- python::temporal::factory
-- python::temporal::open_stds
-- python::temporal::list_stds
-- python::temporal::mapcalc
-- python::temporal::register
-- python::temporal::sampling
-- python::temporal::stds_export
-- python::temporal::stds_import
-- python::temporal::univar_statistics
-
-Spatio-temporal algebra classes for space time raster and vector datasets are defined in:
-
-- python::temporal::temporal_algebra
-- python::temporal::temporal_vector_algebra
-- python::temporal::temporal_vector_operator
-
-Two helper functions to support the listing of space time datasets in the automatically generated GUI:
-
-- python::temporal::gui_support
-
-Unittests:
-
-- python::temporal::unittests_register
-
-
-\section PythonTGISExamples Examples
-
-\subsection PythonTGISExamplesSimple Simple example
-
-This simple example shows how to open a space time raster dataset
-to access its registered maps.
-
-\code
-# Lets import the temporal framework and
-# the script framework
-import grass.temporal as tgis
-import grass.script as grass
-
-# Make sure the temporal database exists
-# and set the temporal GIS environment
-tgis.init()
-
-# We create the temporal database interface for fast processing
-dbif = tgis.SQLDatabaseInterfaceConnection()
-dbif.connect()
-
-# The id of a space time raster dataset is build from its name and its mapset
-id = "test at PERMANENT"
-
-# We create a space time raster dataset object 
-strds = tgis.SpaceTimeRasterDataset(id)
-
-# Check if the space time raster dataset is in the temporal database
-if strds.is_in_db(dbif=dbif) == False:
-    dbif.close()
-    grass.fatal(_("Space time %s dataset <%s> not found") % (
-        strds.get_new_map_instance(None).get_type(), id))
-
-# Fill the object with the content from the temporal database
-strds.select(dbif=dbif)
-
-# Print informations about the space time raster dataset to stdout
-strds.print_info()
-
-# Get all maps that are registered in the strds and print
-# informations about the maps to stdout
-maps = strds.get_registered_maps_as_objects(dbif=dbif)
-
-# We iterate over the temporal sorted map list
-for map in maps:
-    # We fill the map object with the content 
-    # from the temporal database. We use the existing
-    # database connection, otherwise a new connection 
-    # will be established for each map object 
-    # which slows the processing down
-    map.select(dbif=dbif)
-    map.print_info()
-
-# Close the database connection
-dbif.close()
-\endcode
-
-
-\subsection PythonTGISExamplesSTDSCreation Creation of a space time dataset
-
-This example shows howto create a space time dataset. The code is generic and works
-for different space time datasets (raster, 3D raster and vector): 
-
-\code
-# Lets import the temporal framework and
-# the script framework
-import grass.temporal as tgis
-import grass.script as grass
-
-# The id of the new space time dataset
-id="test at PERMANENT"
-# The title of the new space time dataset
-title="This is a test dataset" 
-# The description of the space time dataset
-description="The description"
-# The type of the space time dataset (strds, str3ds or stvds)
-type="strds"
-# The temporal type of the space time dataset (absolute or relative)
-temporal_type="absolute"
-
-# Make sure the temporal database exists
-# and set the temporal GIS environment
-tgis.init()
-
-# We use the dataset factory to create an new space time dataset instance of a specific type
-stds = tgis.dataset_factory(type, id)
-
-# We need a dtabase connection to insert the content of the space time dataset
-dbif = tgis.SQLDatabaseInterfaceConnection()
-dbif.connect()
-
-# First we check if the dataset is already in the database
-if stds.is_in_db(dbif=dbif) and overwrite == False:
-    dbif.close()
-    grass.fatal(_("Space time %s dataset <%s> is already in the database. "
-                    "Use the overwrite flag.") %
-                (stds.get_new_map_instance(None).get_type(), name))
-
-# We delete the exiting dataset and create a new one in case we are allowed to overwrite it
-if stds.is_in_db(dbif=dbif) and overwrite == True:
-    grass.warning(_("Overwrite space time %s dataset <%s> "
-                    "and unregister all maps.") %
-                (stds.get_new_map_instance(None).get_type(), name))
-    stds.delete(dbif=dbif)
-    stds = stds.get_new_instance(id)
-
-# We set the initial values. This function also created the command history.
-stds.set_initial_values(temporal_type=temporaltype, semantic_type="mean",
-                        title=title, description=description)
-                        
-# Now we can insert the new space time dataset in the database
-stds.insert(dbif=dbif)
-
-# Close the database connection
-dbif.close()
-    
-\endcode
-
-\subsection PythonTGISExamplesShifting Temporal shifting
-
-\code
-
-import grass.script as grass
-import grass.temporal as tgis
-
-id="test at PERMANENT"
-type="strds"
-
-# Make sure the temporal database exists
-tgis.init()
-
-dbif = tgis.SQLDatabaseInterfaceConnection()
-dbif.connect()
-
-stds = tgis.dataset_factory(type, id)
-
-if stds.is_in_db(dbif) == False:
-    dbif.close()
-    grass.fatal(_("Space time dataset <%s> not found in temporal database") % (id))
-
-stds.select(dbif=dbif)
-
-stds.snap(dbif=dbif)
-
-stds.update_command_string(dbif=dbif)
-dbif.close()
-
-\endcode
-
-\section PythonTGISAuthors Authors
-
-Soeren Gebbert
-
-TODO: add more documentation
-*/

Modified: grass/branches/releasebranch_7_0/lib/python/temporal/register.py
===================================================================
--- grass/branches/releasebranch_7_0/lib/python/temporal/register.py	2015-01-08 22:28:02 UTC (rev 64017)
+++ grass/branches/releasebranch_7_0/lib/python/temporal/register.py	2015-01-08 22:45:30 UTC (rev 64018)
@@ -117,7 +117,7 @@
             row["id"] = mapid
             maplist[count] = row
 
-    # Read the raster map list from file
+    # Read the map list from file
     if file:
         fd = open(file, "r")
 
@@ -308,7 +308,7 @@
     if name and map_object_list:
         count = 0
         num_maps = len(map_object_list)
-        msgr.message(_("Registering maps in the space time raster dataset..."))
+        msgr.message(_("Registering maps in the space time dataset..."))
         for map in map_object_list:
             if count % 50 == 0:
                 msgr.percent(count, num_maps, 1)
@@ -317,7 +317,7 @@
 
     # Update the space time tables
     if name and map_object_list:
-        msgr.message(_("Updating space time raster dataset..."))
+        msgr.message(_("Updating space time dataset..."))
         sp.update_from_registered_maps(dbif)
         if update_cmd_list is True:
             sp.update_command_string(dbif=dbif)

Modified: grass/branches/releasebranch_7_0/lib/raster/close.c
===================================================================
--- grass/branches/releasebranch_7_0/lib/raster/close.c	2015-01-08 22:28:02 UTC (rev 64017)
+++ grass/branches/releasebranch_7_0/lib/raster/close.c	2015-01-08 22:45:30 UTC (rev 64018)
@@ -375,13 +375,14 @@
 			  fcb->null_temp_name, path, strerror(errno));
 		stat = -1;
 	    }
+	    /* if rename() was successful what is left to remove() ? */
 	    else {
 		remove(fcb->null_temp_name);
 	    }
 	}
 	else {
 	    remove(fcb->null_temp_name);
-	    remove(path);
+	    remove(path); /* again ? */
 	}			/* null_cur_row > 0 */
 
 	if (fcb->open_mode == OPEN_NEW_COMPRESSED) {	/* auto compression */
@@ -440,6 +441,7 @@
 		      fcb->temp_name, path, strerror(errno));
 	    stat = -1;
 	}
+	/* if rename() was successful what is left to remove() ? */
 	else {
 	    remove(fcb->temp_name);
 	}

Modified: grass/branches/releasebranch_7_0/lib/symbol/read.c
===================================================================
--- grass/branches/releasebranch_7_0/lib/symbol/read.c	2015-01-08 22:28:02 UTC (rev 64017)
+++ grass/branches/releasebranch_7_0/lib/symbol/read.c	2015-01-08 22:45:30 UTC (rev 64018)
@@ -221,7 +221,7 @@
 {
     fclose(fp);
     G_free(s);			/* TODO: free all */
-    G_warning("%s", msg);
+    G_warning(msg, "%s");
     return NULL;
 }
 

Modified: grass/branches/releasebranch_7_0/lib/vector/vectorlib.dox
===================================================================
--- grass/branches/releasebranch_7_0/lib/vector/vectorlib.dox	2015-01-08 22:28:02 UTC (rev 64017)
+++ grass/branches/releasebranch_7_0/lib/vector/vectorlib.dox	2015-01-08 22:45:30 UTC (rev 64018)
@@ -293,8 +293,10 @@
 
 \section vlibAttributes Attributes
 
-The old GRASS 4.x 'dig_cats' files are not used any more and vectors'
-attributes are stored in external database. Connection with the
+For a user-centric view about attribute management, see the explanations
+in the <a href="http://grasswiki.osgeo.org/wiki/Vector_Database_Management">GRASS GIS Wiki</a>.
+
+The attribute data are stored in external database. Connection with the
 database is done through drivers based on \ref dbmilib. Records in a
 table are linked to vector entities by layer and category number. The
 layer identifies table and the category identifies record.  I.e., for
@@ -313,6 +315,8 @@
 The general DBMI settings are defined in the '$MAPSET/VAR' text file
 (maintained with <tt>db.connect</tt> command at user level).
 
+Note: vector boundaries are (typically) handled without category since adjacent
+parcels might have two different categories which prevents from a unique assignment.
 
 \section vlibGeometry Vector library feature geometry
 



More information about the grass-commit mailing list