Example #1
0
 def test__get_intersection(self):
     zdb = zonalstats.ZonalDataBase(self.src, self.trg, srs=self.proj)
     self.assertRaises(TypeError, lambda: zdb._get_intersection())
     np.testing.assert_equal(zdb._get_intersection(trg=self.box3),
                             [self.box5])
     np.testing.assert_equal(zdb._get_intersection(idx=0), [self.box5])
     self.assertRaises(TypeError, lambda: zdb._get_intersection(idx=2))
     zdb = zonalstats.ZonalDataBase(self.src, [self.box7], srs=self.proj)
     zdb.trg = None
     self.assertRaises(TypeError, lambda: zdb._get_intersection(idx=0))
Example #2
0
 def test__get_intersection(self):
     zdb = zonalstats.ZonalDataBase(self.src, self.trg, srs=self.proj)
     with pytest.raises(TypeError):
         zdb._get_intersection()
     np.testing.assert_equal(zdb._get_intersection(trg=self.box3),
                             [self.box5])
     np.testing.assert_equal(zdb._get_intersection(idx=0), [self.box5])
     with pytest.raises(TypeError):
         zdb._get_intersection(idx=2)
     zdb = zonalstats.ZonalDataBase(self.src, [self.box7], srs=self.proj)
     zdb.trg = None
     with pytest.raises(TypeError):
         zdb._get_intersection(idx=0)
Example #3
0
 def test___init__(self):
     zdb = zonalstats.ZonalDataBase(self.src, self.trg, srs=self.proj)
     assert isinstance(zdb.src, zonalstats.DataSource)
     assert isinstance(zdb.trg, zonalstats.DataSource)
     assert isinstance(zdb.dst, zonalstats.DataSource)
     assert zdb._count_intersections == 2
     zd = zonalstats.DataSource(self.src, name="src", srs=self.proj)
     zdb = zonalstats.ZonalDataBase(zd, self.trg, srs=self.proj)
     assert isinstance(zdb.src, zonalstats.DataSource)
     assert isinstance(zdb.trg, zonalstats.DataSource)
     assert isinstance(zdb.dst, zonalstats.DataSource)
     assert zdb._count_intersections == 2
     zd1 = zonalstats.DataSource(self.src, name="src", srs=self.proj)
     zd2 = zonalstats.DataSource(self.trg, name="trg", srs=self.proj)
     zdb = zonalstats.ZonalDataBase(zd1, zd2, srs=self.proj)
     assert isinstance(zdb.src, zonalstats.DataSource)
     assert isinstance(zdb.trg, zonalstats.DataSource)
     assert isinstance(zdb.dst, zonalstats.DataSource)
     assert zdb._count_intersections == 2
Example #4
0
 def test___init__(self):
     zdb = zonalstats.ZonalDataBase(self.src, self.trg, srs=self.proj)
     self.assertIsInstance(zdb.src, zonalstats.DataSource)
     self.assertIsInstance(zdb.trg, zonalstats.DataSource)
     self.assertIsInstance(zdb.dst, zonalstats.DataSource)
     self.assertEqual(zdb._count_intersections, 2)
     zd = zonalstats.DataSource(self.src, name='src', srs=self.proj)
     zdb = zonalstats.ZonalDataBase(zd, self.trg, srs=self.proj)
     self.assertIsInstance(zdb.src, zonalstats.DataSource)
     self.assertIsInstance(zdb.trg, zonalstats.DataSource)
     self.assertIsInstance(zdb.dst, zonalstats.DataSource)
     self.assertEqual(zdb._count_intersections, 2)
     zd1 = zonalstats.DataSource(self.src, name='src', srs=self.proj)
     zd2 = zonalstats.DataSource(self.trg, name='trg', srs=self.proj)
     zdb = zonalstats.ZonalDataBase(zd1, zd2, srs=self.proj)
     self.assertIsInstance(zdb.src, zonalstats.DataSource)
     self.assertIsInstance(zdb.trg, zonalstats.DataSource)
     self.assertIsInstance(zdb.dst, zonalstats.DataSource)
     self.assertEqual(zdb._count_intersections, 2)
Example #5
0
    def setUp(self):

        # GK3-Projection
        self.proj = osr.SpatialReference()
        self.proj.ImportFromEPSG(31466)

        # create synthetic box
        self.box0 = np.array([[2600000., 5630000.], [2600000., 5640000.],
                              [2610000., 5640000.], [2610000., 5630000.],
                              [2600000., 5630000.]])

        self.box1 = np.array([[2610000., 5630000.], [2610000., 5640000.],
                              [2620000., 5640000.], [2620000., 5630000.],
                              [2610000., 5630000.]])

        self.box3 = np.array([[2595000., 5625000.], [2595000., 5635000.],
                              [2605000., 5635000.], [2605000., 5625000.],
                              [2595000., 5625000.]])

        self.box4 = np.array([[2615000., 5635000.], [2615000., 5645000.],
                              [2625000., 5645000.], [2625000., 5635000.],
                              [2615000., 5635000.]])

        self.box5 = np.array([[2600000., 5635000.], [2605000., 5635000.],
                              [2605000., 5630000.], [2600000., 5630000.],
                              [2600000., 5635000.]])

        self.box6 = np.array([[2615000., 5635000.], [2615000., 5640000.],
                              [2620000., 5640000.], [2620000., 5635000.],
                              [2615000., 5635000.]])

        self.box7 = np.array([[2715000., 5635000.], [2715000., 5640000.],
                              [2720000., 5640000.], [2720000., 5635000.],
                              [2715000., 5635000.]])

        self.src = np.array([self.box0, self.box1])
        self.trg = np.array([self.box3, self.box4])
        self.dst = np.array([[self.box5], [self.box6]])
        self.zdb = zonalstats.ZonalDataBase(self.src, self.trg, srs=self.proj)
        self.f = tempfile.NamedTemporaryFile(mode='w+b').name
        self.zdb.dump_vector(self.f)
Example #6
0
    def setUp(self):

        # GK3-Projection
        self.proj = osr.SpatialReference()
        self.proj.ImportFromEPSG(31466)

        # create synthetic box
        self.box0 = np.array([[2600000., 5630000.], [2600000., 5640000.],
                              [2610000., 5640000.], [2610000., 5630000.],
                              [2600000., 5630000.]])

        self.box1 = np.array([[2610000., 5630000.], [2610000., 5640000.],
                              [2620000., 5640000.], [2620000., 5630000.],
                              [2610000., 5630000.]])

        self.box3 = np.array([[2595000., 5625000.], [2595000., 5635000.],
                              [2605000., 5635000.], [2605000., 5625000.],
                              [2595000., 5625000.]])

        self.box4 = np.array([[2615000., 5635000.], [2615000., 5645000.],
                              [2625000., 5645000.], [2625000., 5635000.],
                              [2615000., 5635000.]])

        self.box5 = np.array([[2600000., 5635000.], [2605000., 5635000.],
                              [2605000., 5630000.], [2600000., 5630000.],
                              [2600000., 5635000.]])

        self.box6 = np.array([[2615000., 5635000.], [2615000., 5640000.],
                              [2620000., 5640000.], [2620000., 5635000.],
                              [2615000., 5635000.]])

        self.box7 = np.array([[2715000., 5635000.], [2715000., 5640000.],
                              [2720000., 5640000.], [2720000., 5635000.],
                              [2715000., 5635000.]])

        self.src = np.array([self.box0, self.box1])
        self.trg = np.array([self.box3, self.box4])
        self.dst = np.array([[self.box5], [self.box6]])
        self.zdb = zonalstats.ZonalDataBase(self.src, self.trg, srs=self.proj)
        self.zdp = zonalstats.ZonalDataPoly(self.src, self.trg, srs=self.proj)
Example #7
0
 def test_load_vector(self):
     zonalstats.ZonalDataBase(self.f)
Example #8
0
 def test_dump_vector(self):
     zdb = zonalstats.ZonalDataBase(self.src, self.trg, srs=self.proj)
     f = tempfile.NamedTemporaryFile(mode='w+b').name
     zdb.dump_vector(f)
Example #9
0
 def test_get_source_index(self):
     zdb = zonalstats.ZonalDataBase(self.src, self.trg, srs=self.proj)
     self.assertEqual(zdb.get_source_index(0), 0)
     self.assertEqual(zdb.get_source_index(1), 1)
Example #10
0
 def test_get_isec(self):
     zdb = zonalstats.ZonalDataBase(self.src, self.trg, srs=self.proj)
     np.testing.assert_equal(zdb.get_isec(0), [self.box5])
     np.testing.assert_equal(zdb.get_isec(1), [self.box6])
Example #11
0
 def test_isecs(self):
     zdb = zonalstats.ZonalDataBase(self.src, self.trg, srs=self.proj)
     np.testing.assert_equal(zdb.isecs, self.dst)
Example #12
0
 def test_count_intersections(self):
     zdb = zonalstats.ZonalDataBase(self.src, self.trg, srs=self.proj)
     self.assertEqual(zdb.count_intersections, 2)
Example #13
0
class TestZonalStatsBase:
    # GK3-Projection
    proj = osr.SpatialReference()
    proj.ImportFromEPSG(31466)

    # create synthetic box
    box0 = np.array([
        [2600000.0, 5630000.0],
        [2600000.0, 5640000.0],
        [2610000.0, 5640000.0],
        [2610000.0, 5630000.0],
        [2600000.0, 5630000.0],
    ])

    box1 = np.array([
        [2610000.0, 5630000.0],
        [2610000.0, 5640000.0],
        [2620000.0, 5640000.0],
        [2620000.0, 5630000.0],
        [2610000.0, 5630000.0],
    ])

    box3 = np.array([
        [2595000.0, 5625000.0],
        [2595000.0, 5635000.0],
        [2605000.0, 5635000.0],
        [2605000.0, 5625000.0],
        [2595000.0, 5625000.0],
    ])

    box4 = np.array([
        [2615000.0, 5635000.0],
        [2615000.0, 5645000.0],
        [2625000.0, 5645000.0],
        [2625000.0, 5635000.0],
        [2615000.0, 5635000.0],
    ])

    box5 = np.array([
        [2600000.0, 5635000.0],
        [2605000.0, 5635000.0],
        [2605000.0, 5630000.0],
        [2600000.0, 5630000.0],
        [2600000.0, 5635000.0],
    ])

    box6 = np.array([
        [2615000.0, 5635000.0],
        [2615000.0, 5640000.0],
        [2620000.0, 5640000.0],
        [2620000.0, 5635000.0],
        [2615000.0, 5635000.0],
    ])

    box7 = np.array([
        [2715000.0, 5635000.0],
        [2715000.0, 5640000.0],
        [2720000.0, 5640000.0],
        [2720000.0, 5635000.0],
        [2715000.0, 5635000.0],
    ])

    src = np.array([box0, box1])
    trg = np.array([box3, box4])
    dst = np.array([[box5], [box6]])
    zdb = zonalstats.ZonalDataBase(src, trg, srs=proj)
    zdp = zonalstats.ZonalDataPoly(src, trg, srs=proj)

    def test__init__(self):
        with pytest.raises(NotImplementedError):
            zonalstats.ZonalStatsBase(self.zdb)
        zonalstats.ZonalStatsBase(self.zdp)
        with pytest.raises(TypeError):
            zonalstats.ZonalStatsBase("test")
        with pytest.raises(TypeError):
            zonalstats.ZonalStatsBase()
        with pytest.raises(TypeError):
            zonalstats.ZonalStatsBase(ix=np.arange(10), w=np.arange(11))

    def test_w(self):
        zdp = zonalstats.ZonalStatsBase(self.zdp)
        np.testing.assert_equal(zdp.w, np.array([[25000000.0], [25000000.0]]))
        np.testing.assert_equal(zdp.ix, np.array([[0], [1]]))

    def test__check_vals(self):
        zdp = zonalstats.ZonalStatsBase(self.zdp)
        with pytest.raises(AssertionError):
            zdp._check_vals(np.arange(3))

    def test_mean(self):
        zdp = zonalstats.ZonalStatsBase(self.zdp)
        np.testing.assert_equal(zdp.mean(np.arange(10, 21, 10)),
                                np.array([10, 20]))

    def test_var(self):
        zdp = zonalstats.ZonalStatsBase(self.zdp)
        np.testing.assert_equal(zdp.var(np.arange(10, 21, 10)),
                                np.array([0, 0]))
Example #14
0
class TestZonalDataPoint:
    # GK3-Projection
    proj = osr.SpatialReference()
    proj.ImportFromEPSG(31466)

    # create synthetic box
    point0 = np.array([2600000.0, 5630000.0])

    point1 = np.array([2620000.0, 5640000.0])

    box3 = np.array([
        [2595000.0, 5625000.0],
        [2595000.0, 5635000.0],
        [2605000.0, 5635000.0],
        [2605000.0, 5625000.0],
        [2595000.0, 5625000.0],
    ])

    box4 = np.array([
        [2615000.0, 5635000.0],
        [2615000.0, 5645000.0],
        [2625000.0, 5645000.0],
        [2625000.0, 5635000.0],
        [2615000.0, 5635000.0],
    ])

    box5 = np.array([
        [2600000.0, 5635000.0],
        [2605000.0, 5635000.0],
        [2605000.0, 5630000.0],
        [2600000.0, 5630000.0],
        [2600000.0, 5635000.0],
    ])

    box6 = np.array([
        [2615000.0, 5635000.0],
        [2615000.0, 5640000.0],
        [2620000.0, 5640000.0],
        [2620000.0, 5635000.0],
        [2615000.0, 5635000.0],
    ])

    box7 = np.array([
        [2715000.0, 5635000.0],
        [2715000.0, 5640000.0],
        [2720000.0, 5640000.0],
        [2720000.0, 5635000.0],
        [2715000.0, 5635000.0],
    ])

    src = np.array([point0, point1])
    trg = np.array([box3, box4])
    dst = np.array([[point0], [point1]])
    zdb = zonalstats.ZonalDataBase(src, trg, srs=proj)
    f = tempfile.NamedTemporaryFile(mode="w+b").name
    zdb.dump_vector(f)

    def test__get_idx_weights(self):
        zdp = zonalstats.ZonalDataPoint(self.src, self.trg, srs=self.proj)
        assert zdp._get_idx_weights() == (
            [np.array([0]), np.array([1])],
            [np.array([1.0]), np.array([1.0])],
        )
Example #15
0
 def test_get_source_index(self):
     zdb = zonalstats.ZonalDataBase(self.src, self.trg, srs=self.proj)
     assert zdb.get_source_index(0) == 0
     assert zdb.get_source_index(1) == 1
Example #16
0
 def test_srs(self):
     zdb = zonalstats.ZonalDataBase(self.src, self.trg, srs=self.proj)
     assert zdb.srs == self.proj
Example #17
0
 def test_srs(self):
     zdb = zonalstats.ZonalDataBase(self.src, self.trg, srs=self.proj)
     self.assertEqual(zdb.srs, self.proj)
Example #18
0
class TestZonalDataBase:
    # GK3-Projection
    proj = osr.SpatialReference()
    proj.ImportFromEPSG(31466)

    # create synthetic box
    box0 = np.array([
        [2600000.0, 5630000.0],
        [2600000.0, 5640000.0],
        [2610000.0, 5640000.0],
        [2610000.0, 5630000.0],
        [2600000.0, 5630000.0],
    ])

    box1 = np.array([
        [2610000.0, 5630000.0],
        [2610000.0, 5640000.0],
        [2620000.0, 5640000.0],
        [2620000.0, 5630000.0],
        [2610000.0, 5630000.0],
    ])

    box3 = np.array([
        [2595000.0, 5625000.0],
        [2595000.0, 5635000.0],
        [2605000.0, 5635000.0],
        [2605000.0, 5625000.0],
        [2595000.0, 5625000.0],
    ])

    box4 = np.array([
        [2615000.0, 5635000.0],
        [2615000.0, 5645000.0],
        [2625000.0, 5645000.0],
        [2625000.0, 5635000.0],
        [2615000.0, 5635000.0],
    ])

    box5 = np.array([
        [2600000.0, 5635000.0],
        [2605000.0, 5635000.0],
        [2605000.0, 5630000.0],
        [2600000.0, 5630000.0],
        [2600000.0, 5635000.0],
    ])

    box6 = np.array([
        [2615000.0, 5635000.0],
        [2615000.0, 5640000.0],
        [2620000.0, 5640000.0],
        [2620000.0, 5635000.0],
        [2615000.0, 5635000.0],
    ])

    box7 = np.array([
        [2715000.0, 5635000.0],
        [2715000.0, 5640000.0],
        [2720000.0, 5640000.0],
        [2720000.0, 5635000.0],
        [2715000.0, 5635000.0],
    ])

    src = np.array([box0, box1])
    trg = np.array([box3, box4])
    dst = np.array([[box5], [box6]])
    zdb = zonalstats.ZonalDataBase(src, trg, srs=proj)
    f = tempfile.NamedTemporaryFile(mode="w+b").name
    zdb.dump_vector(f)

    def test___init__(self):
        zdb = zonalstats.ZonalDataBase(self.src, self.trg, srs=self.proj)
        assert isinstance(zdb.src, zonalstats.DataSource)
        assert isinstance(zdb.trg, zonalstats.DataSource)
        assert isinstance(zdb.dst, zonalstats.DataSource)
        assert zdb._count_intersections == 2
        zd = zonalstats.DataSource(self.src, name="src", srs=self.proj)
        zdb = zonalstats.ZonalDataBase(zd, self.trg, srs=self.proj)
        assert isinstance(zdb.src, zonalstats.DataSource)
        assert isinstance(zdb.trg, zonalstats.DataSource)
        assert isinstance(zdb.dst, zonalstats.DataSource)
        assert zdb._count_intersections == 2
        zd1 = zonalstats.DataSource(self.src, name="src", srs=self.proj)
        zd2 = zonalstats.DataSource(self.trg, name="trg", srs=self.proj)
        zdb = zonalstats.ZonalDataBase(zd1, zd2, srs=self.proj)
        assert isinstance(zdb.src, zonalstats.DataSource)
        assert isinstance(zdb.trg, zonalstats.DataSource)
        assert isinstance(zdb.dst, zonalstats.DataSource)
        assert zdb._count_intersections == 2

    def test_count_intersections(self):
        zdb = zonalstats.ZonalDataBase(self.src, self.trg, srs=self.proj)
        assert zdb.count_intersections == 2

    def test_srs(self):
        zdb = zonalstats.ZonalDataBase(self.src, self.trg, srs=self.proj)
        assert zdb.srs == self.proj

    def test_isecs(self):
        zdb = zonalstats.ZonalDataBase(self.src, self.trg, srs=self.proj)
        np.testing.assert_equal(zdb.isecs, self.dst)

    def test_get_isec(self):
        zdb = zonalstats.ZonalDataBase(self.src, self.trg, srs=self.proj)
        np.testing.assert_equal(zdb.get_isec(0), [self.box5])
        np.testing.assert_equal(zdb.get_isec(1), [self.box6])

    def test_get_source_index(self):
        zdb = zonalstats.ZonalDataBase(self.src, self.trg, srs=self.proj)
        assert zdb.get_source_index(0) == 0
        assert zdb.get_source_index(1) == 1

    def test_dump_vector(self):
        zdb = zonalstats.ZonalDataBase(self.src, self.trg, srs=self.proj)
        f = tempfile.NamedTemporaryFile(mode="w+b").name
        zdb.dump_vector(f)

    def test_load_vector(self):
        zonalstats.ZonalDataBase(self.f)

    def test__get_intersection(self):
        zdb = zonalstats.ZonalDataBase(self.src, self.trg, srs=self.proj)
        with pytest.raises(TypeError):
            zdb._get_intersection()
        np.testing.assert_equal(zdb._get_intersection(trg=self.box3),
                                [self.box5])
        np.testing.assert_equal(zdb._get_intersection(idx=0), [self.box5])
        with pytest.raises(TypeError):
            zdb._get_intersection(idx=2)
        zdb = zonalstats.ZonalDataBase(self.src, [self.box7], srs=self.proj)
        zdb.trg = None
        with pytest.raises(TypeError):
            zdb._get_intersection(idx=0)