Skip to content

Commit

Permalink
Add window_transform method.
Browse files Browse the repository at this point in the history
Closes #215
  • Loading branch information
Sean Gillies committed Feb 9, 2015
1 parent 99e9689 commit c79e88f
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 1 deletion.
5 changes: 5 additions & 0 deletions rasterio/_base.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -379,6 +379,11 @@ cdef class DatasetReader(object):
lr = self.index(right, bottom)
return tuple(zip(ul, lr))

def window_transform(self, window):
"""Returns the affine transform for a dataset window."""
(r, _), (c, _) = window
return self.affine * Affine.translation(c or 0, r or 0)

@property
def meta(self):
m = {
Expand Down
10 changes: 9 additions & 1 deletion tests/test_transform.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@

import rasterio

def test_window():
Expand All @@ -9,3 +8,12 @@ def test_window():
assert src.window(left, top-src.res[1], left+src.res[0], top) == (
(0, 1), (0, 1))


def test_window_transform():
with rasterio.open('tests/data/RGB.byte.tif') as src:
assert src.window_transform(((0, src.height), (0, src.width))) == src.affine
assert src.window_transform(((0, None), (0, None))) == src.affine
assert src.window_transform(((None, None), (None, None))) == src.affine
assert src.window_transform(((None, src.height), (None, src.width))) == src.affine
assert src.window_transform(((1, None), (1, None))).c == src.bounds.left + src.res[0]
assert src.window_transform(((-1, None), (-1, None))).c == src.bounds.left - src.res[0]

0 comments on commit c79e88f

Please sign in to comment.