浏览代码

Add a function to get the overlapped regions

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@58624 15284696-431f-4ddb-bdfa-cd5b030d7da7
Pietro Zambelli 11 年之前
父节点
当前提交
2fe7e8c144
共有 1 个文件被更改,包括 35 次插入0 次删除
  1. 35 0
      lib/python/pygrass/modules/grid/split.py

+ 35 - 0
lib/python/pygrass/modules/grid/split.py

@@ -53,3 +53,38 @@ def split_region_tiles(region=None, width=100, height=100, overlap=0):
             row_list.append(get_bbox(reg, row, col, width, height, overlap))
             row_list.append(get_bbox(reg, row, col, width, height, overlap))
         box_list.append(row_list)
         box_list.append(row_list)
     return box_list
     return box_list
+
+
+def get_overlap_region_tiles(region=None, width=100, height=100, overlap=0):
+    """Get the Bbox ov the overlapped region. ::
+
+        >>> reg = Region()
+        >>> reg.north = 1350
+        >>> reg.south = 0
+        >>> reg.nsres = 1
+        >>> reg.east = 1500
+        >>> reg.west = 0
+        >>> reg.ewres = 1
+        >>> reg.cols
+        1500
+        >>> reg.rows
+        1350
+        >>> split_region_tiles(region=reg, width=1000, height=700, overlap=0)
+        [[Bbox(1350.0, 650.0, 1000.0, 0.0), Bbox(1350.0, 650.0, 1500.0, 1000.0)],
+         [Bbox(650.0, 0.0, 1000.0, 0.0), Bbox(650.0, 0.0, 1500.0, 1000.0)]]
+        >>> split_region_tiles(region=reg, width=1000, height=700, overlap=10)
+        [[Bbox(1350.0, 640.0, 1010.0, 0.0), Bbox(1350.0, 640.0, 1500.0, 990.0)],
+         [Bbox(660.0, 0.0, 1010.0, 0.0), Bbox(660.0, 0.0, 1500.0, 990.0)]]
+    """
+    reg = region if region else Region()
+    ncols = (reg.cols + width - 1) // width
+    nrows = (reg.rows + height - 1) // height
+    box_list = []
+    #print reg
+    for row in xrange(nrows):
+        row_list = []
+        for col in xrange(ncols):
+            #print 'c', c, 'r', r
+            row_list.append(get_bbox(reg, row, col, width, height, -overlap))
+        box_list.append(row_list)
+    return box_list