def test_corner_create_unit_GGB_using_corners(self): # create small GGB centred on (150.00025,-34.00025) scale = 0.00025 origin = (150.0, -34.0) corner = (150.0 + scale, -34.0 - scale) ggb = GriddedGeoBox.from_corners(origin, corner) self.assertEqual(corner, ggb.corner)
def test_shape_create_unit_GGB_using_corners(self): # create small GGB centred on (150.00025,-34.00025) expectedShape = (1, 1) scale = 0.00025 origin = (150.0, -34.0) corner = (150.0 + scale, -34.0 - scale) ggb = GriddedGeoBox.from_corners(origin, corner) self.assertEqual(expectedShape, ggb.shape)
def test_real_world_shape(self): # Flinders Islet, NSW flindersOrigin = (150.927659, -34.453309) flindersCorner = (150.931697, -34.457915) shapeShouldBe = (19, 17) ggb = GriddedGeoBox.from_corners(flindersOrigin, flindersCorner) self.assertEqual(shapeShouldBe, ggb.shape)
def test_real_world_origin_lat(self): # Flinders Islet, NSW flindersOrigin = (150.927659, -34.453309) flindersCorner = (150.931697, -34.457915) originShouldBe = flindersOrigin ggb = GriddedGeoBox.from_corners(flindersOrigin, flindersCorner) self.assertAlmostEqual(originShouldBe[1], ggb.origin[1])
def test_real_world_origin_lon(self): # Flinders Islet, NSW flindersOrigin = (150.927659, -34.453309) flindersCorner = (150.931697, -34.457915) originShouldBe = flindersOrigin shapeShouldBe = (19, 17) ggb = GriddedGeoBox.from_corners(flindersOrigin, flindersCorner) self.assertEqual(shapeShouldBe, ggb.shape) self.assertAlmostEqual(originShouldBe[0], ggb.origin[0])
def test_real_world_corner_lat(self): # Flinders Islet, NSW flindersOrigin = (150.927659, -34.453309) flindersCorner = (150.931697, -34.457915) originShouldBe = flindersOrigin shapeShouldBe = (19, 17) cornerShouldBe = (flindersOrigin[0] + shapeShouldBe[1] * 0.00025, \ flindersOrigin[1] - shapeShouldBe[0] * 0.00025) ggb = GriddedGeoBox.from_corners(flindersOrigin, flindersCorner) self.assertAlmostEqual(cornerShouldBe[1], ggb.corner[1])
def getFlindersIsletGGB(): flindersOrigin = (150.927659, -34.453309) flindersCorner = (150.931697, -34.457915) return GriddedGeoBox.from_corners(flindersOrigin, flindersCorner)
return out if __name__ == "__main__": # need this hack until set_epsilon patch v1.0.5 # affine.set_epsilon(1e-9) import affine affine.EPSILON = 1e-9 affine.EPSILON2 = 1e-18 # choose Flinders Islet bounding box flindersOrigin = (150.927659, -34.453309) flindersCorner = (150.931697, -34.457915) flindersGGB = GriddedGeoBox.from_corners(flindersOrigin, flindersCorner) mask = get_land_sea_mask(flindersGGB) print("geobox_shape=%s" % str(flindersGGB.shape)) print("mask_shape=%s" % str(mask.shape)) print(mask) # same test for AGDC cell around Darwin area scale = 0.00025 shape = (4000, 4000) origin = (130.0, -12.0) corner = (shape[1] * scale + origin[0], origin[1] - shape[0] * scale) ggb = GriddedGeoBox(shape, origin, pixelsize=(scale, scale)) print(ggb)