[GRASS-SVN] r66057 - grass/trunk/lib/python/pygrass/raster
svn_grass at osgeo.org
svn_grass at osgeo.org
Sat Aug 29 00:37:12 PDT 2015
Author: huhabla
Date: 2015-08-29 00:37:11 -0700 (Sat, 29 Aug 2015)
New Revision: 66057
Modified:
grass/trunk/lib/python/pygrass/raster/__init__.py
grass/trunk/lib/python/pygrass/raster/abstract.py
grass/trunk/lib/python/pygrass/raster/category.py
Log:
pygrass raster: More doctests
Modified: grass/trunk/lib/python/pygrass/raster/__init__.py
===================================================================
--- grass/trunk/lib/python/pygrass/raster/__init__.py 2015-08-28 16:22:15 UTC (rev 66056)
+++ grass/trunk/lib/python/pygrass/raster/__init__.py 2015-08-29 07:37:11 UTC (rev 66057)
@@ -33,6 +33,8 @@
from grass.pygrass.raster.segment import Segment
from grass.pygrass.raster.rowio import RowIO
+WARN_OVERWRITE = "Raster map <{0}> already exists and will be overwritten"
+
test_raster_name="Raster_test_map"
class RasterRow(RasterAbstractBase):
@@ -77,6 +79,8 @@
>>> elev.info.rows
4
+ Editing the history
+
>>> elev.hist.read()
>>> elev.hist.title = "A test map"
>>> elev.hist.write()
@@ -88,12 +92,29 @@
Each Raster map have an attribute call ``cats`` that allow user
to interact with the raster categories.
- >>> elev.cats # doctest: +ELLIPSIS +NORMALIZE_WHITESPACE
+ >>> elev.cats # doctest: +ELLIPSIS +NORMALIZE_WHITESPACE
[('A', 11, None),
('B', 12, None),
...
('P', 44, None)]
+ >>> elev.cats.labels() # doctest: +ELLIPSIS +NORMALIZE_WHITESPACE
+ ['A', 'B', 'C', 'D', 'E',
+ 'F', 'G', 'H', 'I', 'J',
+ 'K', 'L', 'M', 'n', 'O', 'P']
+ >>> elev.cats[0]
+ ('A', 11, None)
+ >>> elev.cats[2]
+ ('C', 13, None)
+ >>> elev.cats[0] = ('AA', 11)
+ >>> elev.cats[1] = ('BB', 12)
+ >>> elev.cats.write()
+ >>> elev.cats.read()
+ >>> elev.cats[0]
+ ('AA', 11, None)
+ >>> elev.cats[1]
+ ('BB', 12, None)
+
Open a raster map using the *with statement*:
>>> with RasterRow(test_raster_name) as elev:
@@ -244,14 +265,16 @@
:param row_buffer: Specify the Buffer object that will be instantiate
:type row_buffer: Buffer object
-
- >>> with RasterRowIO(test_raster_name) as elev:
- ... for row in elev:
- ... row
+ >>> elev = RasterRowIO(test_raster_name)
+ >>> elev.open('r')
+ >>> for row in elev:
+ ... row
Buffer([11, 21, 31, 41], dtype=int32)
Buffer([12, 22, 32, 42], dtype=int32)
Buffer([13, 23, 33, 43], dtype=int32)
Buffer([14, 24, 34, 44], dtype=int32)
+
+ >>> elev.close()
"""
if row_buffer is None:
@@ -342,6 +365,18 @@
:param row_buffer: specify the Buffer object that will be instantiate
:type row_buffer: Buffer object
+ >>> elev = RasterRowIO(test_raster_name)
+ >>> elev.open('r')
+ >>> for row in elev:
+ ... row
+ Buffer([11, 21, 31, 41], dtype=int32)
+ Buffer([12, 22, 32, 42], dtype=int32)
+ Buffer([13, 23, 33, 43], dtype=int32)
+ Buffer([14, 24, 34, 44], dtype=int32)
+
+ >>> elev.close()
+
+
>>> with RasterSegment(test_raster_name) as elev:
... for row in elev:
... row
@@ -359,8 +394,30 @@
def put_row(self, row, row_buffer):
"""Write the row using the `segment.put_row` method
- :param row: a Row object to insert into raster
- :type row: Buffer object
+ :param row: a Row object to insert into raster
+ :type row: Buffer object
+
+ Input and output must have the same type in case of row copy
+
+ >>> map_a = RasterSegment(test_raster_name)
+ >>> map_b = RasterSegment(test_raster_name + "_segment")
+ >>> map_a.open('r')
+ >>> map_b.open('w', mtype="CELL", overwrite=True)
+ >>> for row in xrange(map_a.info.rows):
+ ... map_b[row] = map_a[row] + 1000
+ >>> map_a.close()
+ >>> map_b.close()
+
+ >>> map_b = RasterSegment(test_raster_name + "_segment")
+ >>> map_b.open("r")
+ >>> for row in map_b:
+ ... row
+ Buffer([1011, 1021, 1031, 1041], dtype=int32)
+ Buffer([1012, 1022, 1032, 1042], dtype=int32)
+ Buffer([1013, 1023, 1033, 1043], dtype=int32)
+ Buffer([1014, 1024, 1034, 1044], dtype=int32)
+ >>> map_b.close()
+
"""
self.segment.put_row(row, row_buffer)
@@ -374,6 +431,17 @@
:type col: int
+ >>> elev = RasterSegment(test_raster_name)
+ >>> elev.open('r')
+ >>> for i in xrange(4):
+ ... elev.get(i,i)
+ 11
+ 22
+ 33
+ 44
+ >>> elev.close()
+
+
>>> with RasterSegment(test_raster_name) as elev:
... elev.get(0,0)
... elev.get(1,1)
@@ -397,6 +465,28 @@
:type col: int
:param val: Specify the value that will be write to the map cell
:type val: value
+
+ >>> map_a = RasterSegment(test_raster_name)
+ >>> map_b = RasterSegment(test_raster_name + "_segment")
+ >>> map_a.open('r')
+ >>> map_b.open('w', mtype="FCELL", overwrite=True)
+ >>> for row in xrange(map_a.info.rows):
+ ... for col in xrange(map_a.info.cols):
+ ... value = map_a.get(row,col)
+ ... map_b.put(row,col,value + 100)
+ >>> map_a.close()
+ >>> map_b.close()
+
+ >>> map_b = RasterSegment(test_raster_name + "_segment")
+ >>> map_b.open("r")
+ >>> for row in map_b:
+ ... row
+ Buffer([ 111., 121., 131., 141.], dtype=float32)
+ Buffer([ 112., 122., 132., 142.], dtype=float32)
+ Buffer([ 113., 123., 133., 143.], dtype=float32)
+ Buffer([ 114., 124., 134., 144.], dtype=float32)
+ >>> map_b.close()
+
"""
self.segment.val.value = val
self.segment.put(row, col)
@@ -449,7 +539,7 @@
self.hist.read()
if self.mode == "rw":
- warning(_(WARN_OVERWRITE.format(self)))
+ #warning(_(WARN_OVERWRITE.format(self)))
# Close the file descriptor and open it as new again
libraster.Rast_close(self._fd)
self._fd = libraster.Rast_open_new(
@@ -579,3 +669,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",
+ mapset='')
+ if mset:
+ Module("g.remove", flags='f', type='raster',
+ name=test_raster_name + "_segment")
Modified: grass/trunk/lib/python/pygrass/raster/abstract.py
===================================================================
--- grass/trunk/lib/python/pygrass/raster/abstract.py 2015-08-28 16:22:15 UTC (rev 66056)
+++ grass/trunk/lib/python/pygrass/raster/abstract.py 2015-08-29 07:37:11 UTC (rev 66057)
@@ -34,7 +34,6 @@
test_raster_name="abstract_test_map"
## Define global variables to not exceed the 80 columns
-WARN_OVERWRITE = "Raster map <{0}> already exists and will be overwritten"
INDXOUTRANGE = "The index (%d) is out of range, have you open the map?."
INFO = """{name}@{mapset}
rows: {rows}
Modified: grass/trunk/lib/python/pygrass/raster/category.py
===================================================================
--- grass/trunk/lib/python/pygrass/raster/category.py 2015-08-28 16:22:15 UTC (rev 66056)
+++ grass/trunk/lib/python/pygrass/raster/category.py 2015-08-29 07:37:11 UTC (rev 66057)
@@ -272,7 +272,7 @@
:type category: Category object
"""
libraster.Rast_copy_cats(ctypes.byref(self.c_cats), # to
- ctypes.byref(category._cats)) # from
+ ctypes.byref(category.c_cats)) # from
self._read_cats()
def ncats(self):
More information about the grass-commit
mailing list