[GRASS-SVN] r54917 - grass/trunk/lib/python/pygrass/gis

svn_grass at osgeo.org svn_grass at osgeo.org
Tue Feb 5 02:12:47 PST 2013


Author: lucadelu
Date: 2013-02-05 02:12:46 -0800 (Tue, 05 Feb 2013)
New Revision: 54917

Modified:
   grass/trunk/lib/python/pygrass/gis/region.py
Log:
add doctest and documentation to region.py; add new function to set region from bbox, rename bbox to get_bbox

Modified: grass/trunk/lib/python/pygrass/gis/region.py
===================================================================
--- grass/trunk/lib/python/pygrass/gis/region.py	2013-02-05 08:42:01 UTC (rev 54916)
+++ grass/trunk/lib/python/pygrass/gis/region.py	2013-02-05 10:12:46 UTC (rev 54917)
@@ -17,6 +17,7 @@
 
             >>> default = Region(default=True)
             >>> current = Region()
+            >>> current_good = Region()
             >>> default == current
             True
             >>> current.cols
@@ -32,16 +33,11 @@
             >>> current.set_current()
             >>> default == current
             False
-            >>> current.set_default()
+            >>> current.get_default()
             >>> default = Region(default=True)
             >>> default == current
             True
-            >>> default
-            Region(n=228500, s=215000, e=645000, w=630000, nsres=10, ewres=20)
-            >>> current
-            Region(n=228500, s=215000, e=645000, w=630000, nsres=10, ewres=20)
-            >>> default.ewres = 10.
-            >>> default.set_default()
+            >>> current_good.set_current()
         """
         self.c_region = ctypes.pointer(libgis.Cell_head())
         if default:
@@ -54,94 +50,116 @@
 
     #----------LIMITS----------
     def _get_n(self):
+        """Private function to obtain north value"""
         return self.c_region.contents.north
 
     def _set_n(self, value):
+        """Private function to set north value"""
         self.c_region.contents.north = value
 
     north = property(fget=_get_n, fset=_set_n)
 
     def _get_s(self):
+        """Private function to obtain south value"""
         return self.c_region.contents.south
 
     def _set_s(self, value):
+        """Private function to set south value"""
         self.c_region.contents.south = value
 
     south = property(fget=_get_s, fset=_set_s)
 
     def _get_e(self):
+        """Private function to obtain east value"""
         return self.c_region.contents.east
 
     def _set_e(self, value):
+        """Private function to set east value"""
         self.c_region.contents.east = value
 
     east = property(fget=_get_e, fset=_set_e)
 
     def _get_w(self):
+        """Private function to obtain west value"""
         return self.c_region.contents.west
 
     def _set_w(self, value):
+        """Private function to set west value"""
         self.c_region.contents.west = value
 
     west = property(fget=_get_w, fset=_set_w)
 
     def _get_t(self):
+        """Private function to obtain top value"""
         return self.c_region.contents.top
 
     def _set_t(self, value):
+        """Private function to set top value"""
         self.c_region.contents.top = value
 
     top = property(fget=_get_t, fset=_set_t)
 
     def _get_b(self):
+        """Private function to obtain bottom value"""
         return self.c_region.contents.bottom
 
     def _set_b(self, value):
+        """Private function to set bottom value"""
         self.c_region.contents.bottom = value
 
     bottom = property(fget=_get_b, fset=_set_b)
 
     #----------RESOLUTION----------
     def _get_rows(self):
+        """Private function to obtain rows value"""
         return self.c_region.contents.rows
 
     def _set_rows(self, value):
+        """Private function to set rows value"""
         self.c_region.contents.rows = value
         self.adjust(rows=True)
 
     rows = property(fget=_get_rows, fset=_set_rows)
 
     def _get_cols(self):
+        """Private function to obtain columns value"""
         return self.c_region.contents.cols
 
     def _set_cols(self, value):
+        """Private function to set columns value"""
         self.c_region.contents.cols = value
         self.adjust(cols=True)
 
     cols = property(fget=_get_cols, fset=_set_cols)
 
     def _get_nsres(self):
+        """Private function to obtain north-south value"""
         return self.c_region.contents.ns_res
 
     def _set_nsres(self, value):
+        """Private function to obtain north-south value"""
         self.c_region.contents.ns_res = value
         self.adjust()
 
     nsres = property(fget=_get_nsres, fset=_set_nsres)
 
     def _get_ewres(self):
+        """Private function to obtain east-west value"""
         return self.c_region.contents.ew_res
 
     def _set_ewres(self, value):
+        """Private function to set east-west value"""
         self.c_region.contents.ew_res = value
         self.adjust()
 
     ewres = property(fget=_get_ewres, fset=_set_ewres)
 
     def _get_tbres(self):
+        """Private function to obtain top-botton 3D value"""
         return self.c_region.contents.tb_res
 
     def _set_tbres(self, value):
+        """Private function to set top-bottom 3D value"""
         self.c_region.contents.tb_res = value
         self.adjust()
 
@@ -149,10 +167,22 @@
 
     @property
     def zone(self):
+        """Return the zone of projection
+        
+        >>> reg = Region()
+        >>> reg.zone
+        0
+        """
         return self.c_region.contents.zone
 
     @property
     def proj(self):
+        """Return a code for projection
+        
+        >>> reg = Region()
+        >>> reg.proj
+        99
+        """        
         return self.c_region.contents.proj
 
     #----------MAGIC METHODS----------
@@ -209,22 +239,70 @@
         """
         libgis.G_adjust_Cell_head(self.c_region, bool(rows), bool(cols))
 
+    def vect(self, vector_name):
+        """Adjust bounding box of region using a vector ::
+
+        >>> reg = Region()
+        >>> reg.vect('census')
+        >>> reg.get_bbox()
+        Bbox(230963.640878, 212125.562878, 645837.437393, 628769.374393)
+        >>> reg.get_default()
+        """
+        from grass.pygrass.vector import VectorTopo
+        vect = VectorTopo(vector_name)
+        vect.open()
+        bbox = vect.bbox()
+        self.set_bbox(bbox)
+
     def get_current(self):
+        """Set the current GRASS region to the Region object"""
         libgis.G_get_set_window(self.c_region)
 
     def set_current(self):
+        """Set the Region object to the current GRASS region"""
         libgis.G_set_window(self.c_region)
 
     def get_default(self):
+        """Set the default GRASS region to the Region object"""
         libgis.G_get_window(self.c_region)
 
     def set_default(self):
+        """Set the Region object to the default GRASS region.
+        It works only in PERMANENT mapset"""
+        from grass.pygrass.gis import Mapset
+        mapset = Mapset()
+        if mapset.name != 'PERMANENT':
+            raise GrassError("ERROR: Unable to change default region. The " \
+                             "current mapset is not <PERMANENT>.")
         self.adjust()
         if libgis.G_put_window(self.c_region) < 0:
-            raise GrassError("Cannot change region (WIND file).")
+            raise GrassError("Cannot change region (DEFAUL_WIND file).")
 
-    def bbox(self):
+    def get_bbox(self):
+        """Return a Bbox object with the extension of the region ::
+
+        >>> reg = Region()
+        >>> reg.get_bbox()
+        Bbox(228500.0, 215000.0, 645000.0, 630000.0)
+        """
         from grass.pygrass.vector.basic import Bbox
         return Bbox(north=self.north, south=self.south,
                     east=self.east, west=self.west,
                     top=self.top, bottom=self.bottom)
+
+    def set_bbox(self, bbox):
+        """Set region from Bbox ::
+
+        >>> from grass.pygrass.vector.basic import Bbox
+        >>> b = Bbox(230963.640878, 212125.562878,
+        ...          645837.437393, 628769.374393)
+        >>> reg = Region()
+        >>> reg.set_bbox(b)
+        >>> reg.get_bbox()
+        Bbox(230963.640878, 212125.562878, 645837.437393, 628769.374393)
+        >>> reg.get_current()
+        """
+        self.north = bbox.north
+        self.south = bbox.south
+        self.east = bbox.east
+        self.west = bbox.west



More information about the grass-commit mailing list